導入:なぜ「領域A」を意識する必要があるのか
COBOLのプログラムを書く際、初心者が最初につまずきやすいのが「記述領域」のルールです。COBOLは行のどの位置に文字を書くかによって、コンパイラがその命令をどう解釈するかが決まります。特に「領域A(8〜11カラム目)」は、プログラムの骨格を定義する非常に重要なエリアです。このルールを守らないと、コンパイルエラーが多発し、プログラムが動きません。今回は、この「領域A」の役割と正しい使い方を解説します。
基礎知識:COBOLの行の構造
COBOLのソースコードは、昔のパンチカードの名残で、列(カラム)ごとに役割が厳密に決められています。
1〜6カラム目:行番号(現在はあまり使われません)
7カラム目:標識領域(アスタリスク『』を入れるとコメント行になります)
8〜11カラム目:領域A(ここが今回の主役です)
12〜72カラム目:領域B(通常の命令文やデータ定義の続きを書く場所です)
領域Aは、プログラムの「見出し」や「大きな区切り」を宣言するために使われます。例えば、「ここからデータ定義が始まりますよ」とか「ここから処理が始まりますよ」といった、構造上の重要なポイントを記述します。
実装:領域Aに書くべきもの
領域Aから開始しなければならない主なものは以下の通りです。
1. DIVISION(部)の見出し(例:IDENTIFICATION DIVISION.)
2. SECTION(節)の見出し(例:FILE SECTION.)
3. レベル番号 01、77(データ定義の最上位や独立データ)
4. FD(ファイル定義)
5. PROCEDURE DIVISIONの見出し
これらは必ず8カラム目から書き始めます。逆に言えば、これらを領域B(12カラム目以降)に書いてしまうと、コンパイラはエラーを出します。
サンプルプログラム
以下のプログラムは、基本的な記述ルールに従った構造です。コピーして確認してみてください。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
- 領域A(8カラム目)から開始するデータ定義
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
- レベル番号01は領域Aから記述します
01 WS-MESSAGE PIC X(20) VALUE ‘HELLO WORLD’.
- レベル番号77(独立データ)も領域Aから記述します
77 WS-COUNT PIC 9(02) VALUE 0.
PROCEDURE DIVISION.
- PROCEDURE DIVISIONの見出しも領域Aから記述します
DISPLAY WS-MESSAGE.
STOP RUN.
応用・注意点:現場で陥りやすいバグ
現場のベテランとして一つアドバイスです。最も多いミスは、「コピペによるズレ」です。ネットのサンプルコードをエディタに貼り付けた際、タブ文字が混入してカラム位置がずれてしまうことがよくあります。
また、「領域Aで開始した定義の続き」は、領域B(12カラム目以降)に書くというルールも忘れないでください。例えば、01レベルの変数定義が長くなった場合、2行目以降は12カラム目以降にインデントして書くのが作法です。
プログラムを見やすく整えることは、将来のバグを防ぐ第一歩です。まずは「見出しと01レベルは8カラム目!」としっかり覚えておきましょう。

コメント