導入:なぜ今、この省略ルールを知るべきなのか
COBOLプログラムを書き始めた頃、必ず記述しなければならないものだと教わった「DIVISION」。しかし、現場で保守をしていると、たまに「ENVIRONMENT DIVISION」が見当たらないコードに出会うことがあります。これは書き間違いではなく、仕様上許容されている「省略」です。今回は、このDIVISIONの階層構造と、省略できる条件について解説します。この知識を知っておけば、単純な計算処理やデータ変換のみを行うプログラムを、よりスッキリと記述できるようになります。
基礎知識:COBOLの静的構造のおさらい
COBOLのプログラムは、大きく分けて4つの「DIVISION(部)」で構成されています。
1. IDENTIFICATION DIVISION(見出し部):プログラム名などを定義
2. ENVIRONMENT DIVISION(環境部):コンピュータの機種やファイル割り当てなどを定義
3. DATA DIVISION(データ部):変数やファイルの構造を定義
4. PROCEDURE DIVISION(手続き部):実際の処理を記述
この順序はCOBOLのルールとして絶対です。しかし、実は「ENVIRONMENT DIVISION」は、その中に記述すべき内容(ファイル定義や特殊な環境設定)がない場合に限り、丸ごと省略することが可能です。
実装と解決策
省略を行う際のポイントは、「DIVISIONの順序関係は崩さない」ということです。IDENTIFICATION DIVISIONの直後にDATA DIVISIONを記述しても構いませんが、PROCEDURE DIVISIONをIDENTIFICATIONの直後に持ってくることはできません。あくまで「中身が空なら省略できる」という考え方です。
サンプルプログラム
以下は、環境部を省略したシンプルなプログラム例です。そのままコピーしてコンパイル環境で試してみてください。
IDENTIFICATION DIVISION.
PROGRAM-ID. SIMPLE-PROG.
- ENVIRONMENT DIVISIONを省略しています。
- ファイル操作を行わないプログラムではこれで十分です。
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MSG PIC X(20) VALUE ‘HELLO WORLD’.
PROCEDURE DIVISION.
DISPLAY WS-MSG.
GOBACK.
応用・注意点:現場で陥りやすい罠
この省略ルールには注意点が2つあります。
一つ目は、「可読性と保守性」です。最近のコンパイラでは省略可能ですが、大規模なシステム開発では「全プログラムでDIVISIONを統一して記述する」というコーディング規約(標準化ルール)が設けられていることがほとんどです。「省略できるから」といって省略してしまうと、規約違反としてレビューで指摘される可能性があります。
二つ目は、「将来的な拡張」です。今はファイル操作が不要でも、後から「CSVファイルを出力したい」「外部の制御ファイルを参照したい」となった場合、結局ENVIRONMENT DIVISIONを追記する必要があります。
結論として、個人開発や学習用途であれば省略して記述量を減らすのも手ですが、実務現場では、たとえ空であっても規約に従って記述しておくのがベテランの流儀と言えるでしょう。周囲の規約をまず確認してから、このTipsを活用してみてください。

コメント