【COBOL学習|初心者向け】COBOLの「NEXT SENTENCE」はなぜ「禁じ手」なのか?安全なコードの書き方を解説

導入:コードを読みやすくする「現代の常識」

ベテランの現場では、先輩から「NEXT SENTENCEは使うな」と耳にタコができるほど言われることがあります。なぜなら、この命令はプログラムの論理的な流れを唐突に切り離し、コードを非常に読みづらくしてしまうからです。この記事では、なぜNEXT SENTENCEを避けるべきなのか、そして代わりに何を使うべきかを解説します。

基礎知識:NEXT SENTENCEの仕組み

NEXT SENTENCEは、「次に現れるピリオド(.)の直後へ強制的にジャンプせよ」という命令です。

例えば、IF文の中で「条件が合致したら、後の処理を飛ばして、プログラムのピリオドがある場所まで一気に飛べ」という指示を出します。一見便利そうですが、どこまで飛ぶのかがピリオドの位置に依存してしまうため、コードの修正時に思わぬバグを招く原因となります。

実装と解決策:CONTINUEを使いこなそう

現代のCOBOLでは、NEXT SENTENCEの代わりに「CONTINUE」を使用するのが定石です。

CONTINUEは「何もしない」という命令です。論理を飛ばすのではなく、その場に留まることで「ここは何も処理しない場所です」と明示します。これにより、END-IFで範囲を閉じる構造化プログラミングとの相性が劇的に良くなります。

サンプルプログラム:比較して確認しよう

以下のコード例で、旧来の書き方と現代の書き方の違いを確認してください。

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. SAMPLE-01.
000300 PROCEDURE DIVISION.
000400 — 旧来の書き方(非推奨) —
000500 IF A = B
000600 NEXT SENTENCE
000700 ELSE
000800 MOVE C TO D
000900 END-IF.
001000 — 現代の書き方(推奨:CONTINUEを使用) —
001100 IF A = B
001200 CONTINUE
001300 ELSE
001400 MOVE C TO D
001500 END-IF.
001600 STOP RUN.

上記の通り、CONTINUEを使うことでIF文の範囲が明確になり、構造が崩れる心配がなくなります。

応用・注意点:現場で陥りやすい罠

現場で古いプログラムを保守していると、NEXT SENTENCEが大量に使われているコードに出くわすはずです。その際、以下の点に注意してください。

1. ピリオドの罠:
NEXT SENTENCEは「次のピリオド」を探しに行きます。もしIF文の中に意図しないピリオドが混入していると、ジャンプ先が想定と異なり、致命的なバグになります。

2. リファクタリングのチャンス:
もしNEXT SENTENCEに出会ったら、可能であればEND-IFを使った構造化コードへ修正することをお勧めします。ただし、修正する際は必ずコンパイル後の動作確認を慎重に行ってください。

「見やすさ」は、バグの少なさに直結します。今日からぜひ、NEXT SENTENCEの代わりにCONTINUEを使う習慣を身につけてください。

コメント

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