GnuCOBOLを準備する
この講座では、無料で利用できるGnuCOBOLを使います。Linuxではパッケージマネージャーから導入でき、macOSではHomebrewなどの環境から導入できます。WindowsではGnuCOBOLの配布パッケージや公式ガイドの案内を確認してください。
インストール後、ターミナルで次のコマンドを実行し、コンパイラーが認識されるか確認します。
cobc --versionここでcommand not foundと表示された場合は、インストールの完了とPATH設定を確認します。COBOLはソースコードをそのまま実行するのではなく、まずコンパイルして実行ファイルを作ります。
フリーフォーマットで書く
COBOLには、昔から使われてきた固定形式と、行の位置をあまり意識せず書けるフリーフォーマットがあります。この講座では、ファイルの拡張子を.cobにし、GnuCOBOLの-freeオプションを指定します。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "Hello, COBOL!".
STOP RUN.cobc -x -free hello.cob -o hello
./helloHello, COBOL!固定形式の例では、行の位置に意味があります。別の処理系や既存システムのコードを読む場合は、固定形式かフリー形式かを先に確認しましょう。
最初のプログラムを分解する
IDENTIFICATION DIVISIONはプログラムの識別情報、PROGRAM-IDはプログラム名、PROCEDURE DIVISIONは実行する手続きを表します。最後のSTOP RUNでプログラムを終了します。
IDENTIFICATION DIVISION.
PROGRAM-ID. GREETING.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NAME PIC X(20) VALUE "Mity".
PROCEDURE DIVISION.
DISPLAY "こんにちは、" FUNCTION TRIM(USER-NAME) "さん。".
STOP RUN.こんにちは、Mityさん。PIC X(20)は20桁の固定長文字項目なので、値が「Mity」でも後ろに空白が入っています。FUNCTION TRIM(USER-NAME)で末尾の空白を取り除いてから表示すると、名前と「さん。」の間に余白が入りません。空行は読みやすさのために入れています。命令やDivisionの終わりにはピリオドを置きます。ピリオドが不足すると、後ろの文まで一つの文として解釈され、エラーの位置が分かりにくくなることがあります。
コンパイルエラーを読む
最初は、ピリオドの不足、データ名のスペル違い、END-IFなどの終端の不足でエラーになります。エラーが出たら、表示された行だけでなく、その少し前の行に句読点や定義の漏れがないかも確認します。
最初は一つのエラーだけを修正して、もう一度コンパイルします。複数箇所を同時に変えると、どの修正が効いたのか分からなくなります。
練習
USER-NAMEをCOBOLへ変更し、表示結果を確認してください。次に、DISPLAYを2回使い、1行目に名前、2行目に「学習を始めます。」と表示しましょう。
慣れてきたら、PROGRAM-IDをMY-FIRST-PROGRAMへ変更し、ファイル名、プログラム名、出力結果の関係を確認します。
