【COBOL勉強法】コンパイルエラーを取り除くためのヒント|学習講座

コンパイルエラーとエラーを取り除くためのヒントとは

勉強法-COBOL-コンパイルエラー-イメージ

そもそもコンパイルエラーとは

COBOL言語で書かれたプログラムをパソコンに入っているWindowsやMacOSが理解できるように変換する処理をコンパイルといいます。具体的には「0」と「1」で記述された機械語にプログラムを変換するのですが、うまく変換できなかった場合をコンパイルエラーと呼んでいます。

コンパイルエラーが発生した場合の動きはコンパイルを行うコンパイラによって変わってきますが、ほとんどがエラー内容とそのエラーが発生した行番号、ファイル名などを画面上に出力します。ただし、エラー内容が何を指しているのかわかり難いため、この内容をいかに理解するかがエラーを取り除く際のポイントになります。

COBOL言語のコンパイルエラーのケースとは

ここからはコンパイルエラーが起きるケースを具体的に取り上げます。特にCOBOL言語初学者の方が陥りやすいミスを取り上げましたので、参考にしていただければと思います。

1.ピリオド忘れ

プログラムの手続きや命令、宣言などの事をステートメントと呼びますが、COBOL言語はこのステートメントの終わりに必ずピリオドをつける必要があります。ピリオドによりステートメントの終わりを認識しますので、つけ忘れがないか注意しましょう。

ただし、IF文、PERFORM文内のステートメントにはピリオドは不要ですので、合わせて注意するようにしましょう。

2.END-IF、END-PERFORM忘れ

IF文、PERFORM文などを記述した際に、終了を表すEND-IF、END-PERFORMを忘れてしまう事があります。特に、条件をいろいろと組み合わせて階層を深くしていくと忘れがちになりますので注意しましょう。

3.変数定義漏れ、スペルミス

COBOL言語は予め使用する変数等は「DATA DIVISION」に定義しておく必要があります。ここに定義されていないものを「PROCEDURE DIVISION」以降に記述してしまうとエラーになります。定義しているつもりでもスペルミス等で認識できない事もありますので合わせて注意しましょう。

4.異なる型への設定

COBOL言語は、数字項目と文字項目などの定義を明確に区別するプログラミング言語です。数字項目に対して、文字項目を設定することはできません。異なる型に対してデータ移送していないか注意しましょう。

COBOL言語のコンパイルエラーの見方とは

先程コンパイルエラーが起きるケースを具体的に取り上げましたが、実際にエラーを発生させてその内容を確認してみましょう。

1.ピリオド忘れ

sample01.cob

勉強法-COBOL-コンパイルエラー-サンプル1.cob

コンパイル結果

勉強法-COBOL-コンパイルエラー-コンパイル結果1

syntax errorは構文エラーの事です。5:は5行目でエラーが発生している事を意味しています。今回は4行目のDISPLAY文の最後にピリオドが付いていないためステートメントの終わりが認識できず5行目でエラーとなっています。

2.END-IF、END-PERFORM忘れ

sample02.cob

勉強法-COBOL-コンパイルエラー-サンプル2.cob

コンパイル結果

勉強法-COBOL-コンパイルエラー-コンパイル結果2

16行目でエラーになっており、"END-IF"の指定が足りていないためエラーになっています。

3.変数定義漏れ、スペルミス

sample03.cob

勉強法-COBOL-コンパイルエラー-サンプル3.cob

コンパイル結果

勉強法-COBOL-コンパイルエラー-コンパイル結果3

12行目でエラーになっており、変数"WK-SUJI1"が「DATA DIVISION」に定義されていないためエラーになっています。

4.異なる型への設定

sample04.cob

勉強法-COBOL-コンパイルエラー-サンプル4.cob

実行結果

勉強法-COBOL-コンパイルエラー-実行結果4

7行目で数字項目WK-SUJIに文字"あ"を設定しています。コンパイラによってはコンパイル時にエラーになりませんが、実行結果からわかるように予期せぬデータが設定される事になりますので注意しましょう。

複数のコンパイルエラーを取り除くヒントとは

コンパイルエラーのケース、内容ご理解いただけたでしょうか?実践ではこれらのケースが複数複雑に絡み合ってエラーになる事もありますので、そういった場合のエラーの取り除き方をご紹介したいと思います。

・機能単位にコンパイルする

特に新設プログラムを作成する際はコーディング量が多くなるため、コンパイルエラーが起きがちです。まずは必要最低限の機能を作成しコンパイルする、その後作成した機能単位にコンパイルするなど、こまめにコンパイルしてエラーを取り除いていくと、プログラムの確認する範囲も限定されるため効率的にエラーを取り除く事ができます

・正常にコンパイルできるところまで戻る

コンパイルエラーはエラー箇所が特定されるものであれば取り除くのは比較的容易ですが必ずしもそうではありません。その際はどこを具体的に見ればいいか絞り込んでいく事が有効です。コンパイルできるところまで一度立ち戻り、その後追加したプログラムを確認していく事も有効です。

・コンパイル実績があるものを利用する

COBOL言語はある程度処理がパターン化、テンプレート化しやすいプログラムになっています。既にコンパイル実績のあるプログラムをコピーして、そこに機能を追加、修正していく方法も有効です。

いかがでしたでしょうか?コンパイルエラーとその取り除き方について理解いただけたでしょうか?今回ご紹介したのは1つの例です。実践を積む事で徐々にエラーの傾向や対処法についても身についてくると思いますので、いろいろなケースに取り組んでみましょう。またインターネット上にも参考情報はあります。困った時は何か事例がないか探してみるのもいいかと思います。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門