導入
長年COBOLに親しんできた皆さんにとって、かつての「固定形式(固定長形式)」は馴染み深いものですが、同時に悩みの種でもありました。「7桁目から開始」「72桁目以降はコメント」といった制約は、現代のプログラミング環境から見れば非常に窮屈なものです。しかし、COBOL 2002以降で正式に採用された「自由形式(Free Form)」を活用すれば、これらの制約から解放され、可読性の高い、現代的なコードを書くことが可能になります。今回は、この自由形式の恩恵と、現場で活用するためのポイントを解説します。
基礎知識
自由形式とは、従来の「エリアA(8~11桁)」「エリアB(12~72桁)」といった区分けを撤廃し、行のどこからでも記述を開始できる書き方を指します。これにより、インデント(字下げ)を自由に制御できるため、IF文やPERFORM文の入れ子構造を視覚的に分かりやすく整理できます。また、タブ文字の使用も許可されており、VS CodeやEclipseといったモダンなIDEの「オートフォーマット機能」をそのまま適用できるのが最大の強みです。
実装/解決策
自由形式を利用するには、ソースファイルの先頭に「>>FREE」というコンパイラ指令を記述します。これを行うだけで、コンパイラは行全体を自由形式として解釈します。注意点として、自由形式では「行の終わり」が文の終わりを意味しなくなったため、文の区切りには必ずピリオド(.)を明示的に打つか、適切なインデントで構造を明確にする必要があります。
サンプルプログラム
以下は、自由形式を用いてインデントを整えた計算処理の例です。読みやすさが格段に向上していることを確認してください。
>>FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. FREE-FORM-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-SCORE PIC 9(03) VALUE 85.
PROCEDURE DIVISION.
> 自由なインデントで構造を可視化します
IF WS-SCORE >= 80 THEN
DISPLAY “評価: A”
IF WS-SCORE = 100 THEN
DISPLAY “満点です!”
END-IF
ELSE
DISPLAY “評価: B以下”
END-IF.
STOP RUN.
応用・注意点
現場で自由形式を導入する際の最大の注意点は「チームのコーディング規約」です。自由度が高いからこそ、インデント幅(2スペースか4スペースか)や空行のルールを統一しておかないと、逆にコードが乱れる原因になります。また、古いコンパイラを併用している環境では自由形式が認識されない場合があるため、移行前にターゲットとするコンパイラのバージョンを必ず確認してください。
まずは既存の保守コードを書き換えるのではなく、新規作成するユーティリティプログラムなどから「>>FREE」を取り入れてみることをお勧めします。コードの見た目が変わるだけで、メンテナンスの心理的ハードルは驚くほど下がりますよ。

コメント