COBOL

環境構築と最初のプログラム

GnuCOBOLでコードを書き、コンパイルして実行する流れを体験します。

COBOL入門の講座一覧

01

GnuCOBOLを準備する

この講座では、無料で利用できるGnuCOBOLを使います。Linuxではパッケージマネージャーから導入でき、macOSではHomebrewなどの環境から導入できます。WindowsではGnuCOBOLの配布パッケージや公式ガイドの案内を確認してください。

インストール後、ターミナルで次のコマンドを実行し、コンパイラーが認識されるか確認します。

バージョンを確認するSHELL
cobc --version

ここでcommand not foundと表示された場合は、インストールの完了とPATH設定を確認します。COBOLはソースコードをそのまま実行するのではなく、まずコンパイルして実行ファイルを作ります。

02

フリーフォーマットで書く

COBOLには、昔から使われてきた固定形式と、行の位置をあまり意識せず書けるフリーフォーマットがあります。この講座では、ファイルの拡張子を.cobにし、GnuCOBOLの-freeオプションを指定します。

hello.cobCOBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
    DISPLAY "Hello, COBOL!".
    STOP RUN.
コンパイルと実行SHELL
cobc -x -free hello.cob -o hello
./hello
実行結果OUTPUT
Hello, COBOL!

固定形式の例では、行の位置に意味があります。別の処理系や既存システムのコードを読む場合は、固定形式かフリー形式かを先に確認しましょう。

03

最初のプログラムを分解する

IDENTIFICATION DIVISIONはプログラムの識別情報、PROGRAM-IDはプログラム名、PROCEDURE DIVISIONは実行する手続きを表します。最後のSTOP RUNでプログラムを終了します。

名前を表示するCOBOL
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.
実行結果OUTPUT
こんにちは、Mityさん。

PIC X(20)は20桁の固定長文字項目なので、値が「Mity」でも後ろに空白が入っています。FUNCTION TRIM(USER-NAME)で末尾の空白を取り除いてから表示すると、名前と「さん。」の間に余白が入りません。空行は読みやすさのために入れています。命令やDivisionの終わりにはピリオドを置きます。ピリオドが不足すると、後ろの文まで一つの文として解釈され、エラーの位置が分かりにくくなることがあります。

04

コンパイルエラーを読む

最初は、ピリオドの不足、データ名のスペル違い、END-IFなどの終端の不足でエラーになります。エラーが出たら、表示された行だけでなく、その少し前の行に句読点や定義の漏れがないかも確認します。

エラーを一度に直しすぎない

最初は一つのエラーだけを修正して、もう一度コンパイルします。複数箇所を同時に変えると、どの修正が効いたのか分からなくなります。

05

練習

USER-NAMEをCOBOLへ変更し、表示結果を確認してください。次に、DISPLAYを2回使い、1行目に名前、2行目に「学習を始めます。」と表示しましょう。

慣れてきたら、PROGRAM-IDをMY-FIRST-PROGRAMへ変更し、ファイル名、プログラム名、出力結果の関係を確認します。