【COBOL学習|豆知識】COBOLの「ピリオド」が運命を分ける?段落構造の正しい作法

導入:なぜピリオド一つでバグが生まれるのか

COBOLの現場で、新人エンジニアが最も頭を悩ませるのが「ピリオド(.)」の打ちどころです。COBOLにおいてピリオドは単なる句読点ではありません。プログラムの論理スコープを決定づける、極めて重要な「区切り」です。ここを誤ると、意図しない条件分岐やループの暴走を引き起こします。今回は、プログラムの静的構造を支える「段落(Paragraph)の終端」について、ベテランの視点で解説します。

基礎知識:文と段落の関係

COBOLのプログラムは、大きく「段落」という単位で構成されます。段落は名前(段落名)で始まり、次の段落名が現れるまで、あるいはプログラムの終わりまで続きます。
段落の中には、複数の「文(Sentence)」を記述できます。ここで重要なのは、文の終わりを定義するのがピリオドであるという点です。ピリオドを打つと、そこまでの命令が一つの文として完結します。

実装・解決策:論理スコープを意識した記述

よくあるミスは、IF文やPERFORM文の途中で不用意にピリオドを打ってしまうケースです。COBOLでは、ピリオドを見つけると「そこまでの制御構文は終了した」とコンパイラが判断します。
複数の命令を一つの段落に書く際は、最後の命令のみにピリオドを打ち、途中の命令はピリオドで区切らないのが鉄則です。これにより、意図した範囲で論理的に処理を完結させることができます。

サンプルプログラム:正しい段落構造の例

以下のコードは、段落内で複数の命令を正しく記述する例です。

CALC-PARA.

  • ADD命令とMOVE命令を一つの文として扱います
  • 途中にピリオドを打たないことで、一連の処理として繋げます

ADD 1 TO A
MOVE A TO B

  • ここで初めてピリオドを打ち、段落の文を完結させます

.

NEXT-PARA.

  • 次の段落はここから始まります

DISPLAY “計算完了”.

応用・注意点:現場で役立つ教訓

現場の保守で最も恐ろしいのは、「隠れたピリオド」です。例えば、IF文の中にピリオドが混じっていると、その後のELSE句が「どのIFに対するものか」という解釈が曖昧になり、予期せぬ挙動を生むことがあります。
また、最近のCOBOL(COBOL85以降など)では、END-IFやEND-PERFORMといった「スコープ終了記号」を使うことが推奨されています。これらを使えば、ピリオドに頼りすぎない堅牢なコードを書くことが可能です。
「ピリオドはここにあるべきか?」と迷ったら、一度「END-」系の終了記号で書き直せないか検討してみてください。それが、バグのない保守性の高いプログラムへの第一歩です。

コメント

タイトルとURLをコピーしました