1. 導入:なぜピリオドで悩むのか?
COBOLを学び始めたばかりの方が、最も頭を抱えるポイントの一つが「ピリオド(.)の打ちどころ」です。昔のCOBOLでは、すべての命令の最後にピリオドを打つのが当たり前でしたが、これが原因で「意図した条件分岐が途中で終わってしまう」というバグが頻発します。この問題を解決し、現代的で安全なコードを書くための作法が「構造化制御構文を用いたピリオドの最小化」です。
2. 基礎知識:範囲終了指定子とは
COBOLには、IF文やEVALUATE文などの制御構文をどこで終了させるかを明示的に伝える「範囲終了指定子」というものがあります。具体的には、END-IF、END-EVALUATE、END-READなどがこれに当たります。これらを使うことで、ピリオドが「文の終わり」ではなく「段落の終わり」であることをコンパイラに教えることができます。
3. 実装・解決策:ピリオドは「段落の最後だけ」
現代のCOBOL開発では、原則として「各ステートメントの末尾にピリオドを打たない」というルールを推奨します。ピリオドは、段落(Paragraph)の終わりを示すためだけに使うのです。これにより、IF文の中にさらにIF文を入れ子(ネスト)にしても、ピリオドの位置を間違えてロジックが崩壊するリスクを劇的に減らすことができます。
4. サンプルプログラム:推奨される記述例
以下に、安全で読みやすいコードの書き方を示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-PERIOD.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
> 処理の開始
IF WS-SALES > 1000
DISPLAY “目標達成です”
> IF文の中にIF文を書いてもEND-IFで区切るため安心
IF WS-REGION = “TOKYO”
DISPLAY “東京支店は優秀です”
END-IF
ELSE
DISPLAY “目標未達です”
END-IF
> 各文の末尾にはピリオドを打たず、段落の最後のみに打つ
DISPLAY “処理を終了します”
.
5. 応用・注意点:現場での心得
現場で既存の古いコードを保守する場合、いたるところにピリオドが打たれているかもしれません。その際、安易にピリオドを削除すると、古いコンパイラや特殊なロジックで予期せぬ動作を招くことがあります。
注意点:
・既存の古いプログラムを修正する際は、まずそのプログラムが「ピリオドで文を区切る派」か「END-IF等の指定子を使う派」かを確認してください。
・新規で作成するプログラムには、今回紹介した「ピリオド最小化スタイル」を積極的に採用しましょう。
・ピリオドを打つべき場所は、段落の最後の1回だけ、と覚えておけば、構造化された美しいCOBOLコードが書けるようになります。
この習慣を身につけるだけで、あなたのコードの信頼性は格段に向上します。ぜひ今日から試してみてください。

コメント