【COBOL学習|初心者向け】COBOLの「ピリオド地獄」から脱出せよ!END-PERFORMによる構造化プログラミングのすすめ

1. 導入:なぜEND-PERFORMが重要なのか

COBOLの歴史は古く、昔の書き方では「ピリオド(.)」が処理の終わりを意味していました。しかし、このピリオドをどこに打つかでプログラムの挙動が大きく変わり、意図しない場所でループが終了したり、条件分岐が崩れたりする「迷子エラー」が多発していました。END-PERFORMは、インラインPERFORMの範囲を明確に定義するための「境界線」です。これを使うことで、複雑な入れ子構造でも論理エラーを劇的に減らすことができます。

2. 基礎知識:インラインPERFORMと範囲指定子

COBOLには、別の段落に飛ばずにその場でループを記述する「インラインPERFORM」があります。昔のCOBOLでは、このループをどこで終わらせるかをピリオドで判断していました。しかし、END-PERFORMという「範囲終了指定子」が登場したことで、ピリオドに頼らず、明確に「ここでループが終わる」とコンパイラに伝えることが可能になりました。これを活用することで、プログラム全体でピリオドを最後に一度だけ打つような、堅牢で読みやすいコードが書けるようになります。

3. 実装と解決策

インラインPERFORMを使用する際は、必ずEND-PERFORMとセットで記述する癖をつけましょう。これにより、コードのインデント(字下げ)と論理構造が一致し、後からコードを修正する際に「どこからどこまでがループなのか」が一目で判断できるようになります。

4. サンプルプログラム

以下のコードは、1から5までの数値を表示する簡単な例です。END-PERFORMを使うことで、ループの範囲が一目でわかります。

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-LOOP.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COUNT PIC 9 VALUE 1.
PROCEDURE DIVISION.
> 1から5まで繰り返すインラインPERFORM
PERFORM UNTIL WS-COUNT > 5
DISPLAY “現在のカウントは: ” WS-COUNT
> カウントを1増やす
ADD 1 TO WS-COUNT
END-PERFORM.

DISPLAY “ループ終了”.
STOP RUN.

5. 応用・注意点:現場での心得

現場で最も注意すべきは、「古いソースコードと新しい書き方の混在」です。END-PERFORMを使う場合は、そのブロック内でのピリオドの扱いに気を配る必要があります。不用意にループの中でピリオドを打ってしまうと、その時点でプログラムが強制的に終了してしまうことがあります。

初心者のうちは、「END-PERFORMを使うときは、ループ内にはピリオドを書かない(DISPLAY文や演算などを書く)」というルールを徹底してください。構造化プログラミングを意識するだけで、バグの温床を一つ消し去ることができます。読みやすさは、そのまま保守のしやすさに直結しますよ。

コメント

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