〜デバッグのヒント〜

 

 

プログラムを打ち終わった後、構文チェック(もしくはビルド)を行います。文法エラーがあると『メッセージウィンドウ』にエラーした箇所が表示されます。

(例)

=== reidai1 のビルド処理を開始します。===

a:\reidai1\reidai1\reidai1.cbl

"a:\reidai1\reidai1\reidai1.CBL", line 8: KCCB1241C-S FILE-CONTROL段落の書き方に誤りがあります。 @

"a:\reidai1\reidai1\reidai1.CBL", line 35: KCCB3015C-S "ICHIRAN-FILE"は未定義です。 A

"a:\reidai1\reidai1\reidai1.CBL", line 42: KCCB3015C-S "N-KENCODE"は未定義です。 B

"a:\reidai1\reidai1\reidai1.CBL", line 45: KCCB3015C-S "M-JINKOU"は未定義です。 C

"a:\reidai1\reidai1\reidai1.CBL", line 50: KCCB4248C-W このファイルに対するOPEN文がありません。CLOSE文を実行しても成功しません。 D

=== reidai1 のビルド処理でエラーが発生しました。===

 

エラーメッセージの3行目から、『line:8』『line:35』…と行数が出ています。ここに文法エラーがあることが多いので、プログラムの該当する行を確認してみましょう。このヒントでは、特にミスの多い箇所を例に挙げて説明します。

 

 

  (プログラム)   ※0102、・・・はプログラムの行数を表します。

01   identification  division.

02   program-id.     rei0201.

03  *

04   environment     division.

05   input-output    section.

06   file-control.

07       select  ken-file   assign  "h:\rei0201.dat".

08                    organization  line  sequential.

09       select  itiran-file  assign  "h:\rei0201.txt".

10  *

11   data  division.

12   file  section.

角丸四角形吹き出し: @ 7行目から8行目にかけては2行で1つの命令を表します。7行目の文末にあるピリオドは取りましょう。13   fd  ken-file.

14   01  ken-rec.

15       05  kencode    picture  9(02).

16       05  kenmei     picture  X(08).

17       05  menseki    picture  9(05).

18       05  jinko      picture  9(05).

19   fd  itiran-file.

20   01  itiran-rec     picture  X(132).

21   working-storage  section.

22   01  e-flg          picture  X(03).

23   01  meisai-gyo.

24       05  filler     picture  X(09)  value space.

角丸四角形吹き出し: A Data divisionで定義されているファイル名を見てみましょう。『itiran-file』です。ファイル名を直すことで、このエラーは消えます。25       05  m-kencode  picture  9(02).

26       05  filler     picture  X(05)  value space.

27       05  m-kenmei   picture  X(08).

28       05  filler     picture  X(05)  value space.

29       05  m-menseki  picture  9(05).

30       05  filler     picture  X(05)  value space.

31       05  m-jinko    picture  9(05).

32  *

33   procedure division.

角丸四角形吹き出し: B meisai-gyoで定義されている項目名は『m-kencode』です。打ち間違いが多いので、よく確認してみましょう。34   syori.

35       open  input  ken-file  output  ichiran-file

36       move  "off"  to  e-flg

37         perform  until  e-flg = "on"

38            read  ken-file       

39              at  end

40                  move "on" to e-flg

角丸四角形吹き出し: C meisai-gyoで定義されている項目名は『m-jinko』です。「人口(じんこう)」なので、『u』つけてしまうことが多いので注意しましょう。41              not at end

42                  move   kencode      to  n-kencode

43                  move   kenmei       to  m-kenmei

44                  move   menseki      to  m-menseki

45                  move   jinko        to  m-jinkou

46                  move   meisai-gyo   to  itiran-rec

47                  write  ichiran-rec  after  1

48            end-read

角丸四角形吹き出し: D Aで『ichiran-file』と打ってしまったために出たエラーです。Aを訂正すればこのエラーは消えます。49        end-perform

50      close  ken-file  itiran-file

51                      stop run.

 

 

 

 

(エラーメッセージについて)

@「段落の書き方に誤りがあります」の場合

   ピリオドを必要なところに打っていなかったり、打つ必要のないところに

あると表示されます。エラーのある行数の前後を確認してください。

 

A「未定義」の場合

   手続き部で使われている項目が、データ部の項目と一致しない時に表示されます。

だいたいの場合は打ち間違いが多いので、手続き部とデータ部の項目名の確認を

しましょう。

 <例>

・ti と chi     ・0(ゼロ) と O(オー)

・si と shi     ・2()  と Z(ゼット)

・tu と tsu     ・i(アイ) と l(エル)

・hu と fu

・ji と zi                   など。

 


 

 

もし、自分で作ったプログラムにエラーが出てしまったら、まず、エラーメッセージの行数を参考にしてエラーを探してみましょう!