【COBOL学習|豆知識】COBOLの「何もしない」を正しく扱う:CONTINUE文の活用術

導入

COBOLのプログラムを記述している際、「特定の条件では何も処理をしたくないが、構文の整合性を保つために何らかの記述が必要」という状況に出くわしたことはありませんか?無理やり空の処理を捏造したり、不自然なロジックを組んだりしてバグの温床を作ってしまうのは避けたいものです。そんな時にこそ、CONTINUE文の出番です。コードの可読性を保ち、論理構造を明確にするために不可欠なこの命令を正しく理解しましょう。

基礎知識

CONTINUE文は、一言で言えば「何もしない(no-operation)」命令です。プログラミングの専門用語では「プレースホルダー」とも呼ばれます。COBOLのIF文やEVALUATE文などの構造化制御構文において、文法上「実行するステートメント」が必須となる場所に配置することで、コンパイルエラーを回避しつつ、人間の目には「ここでは意図的に何も処理を行わない」という意思表示を伝える役割を果たします。

実装/解決策

通常、IF文で「条件が一致したときは何もしないが、それ以外の場合は処理をする」というロジックを組む際、CONTINUE文を使わないと、複雑なNOT条件(IF NOT … THEN …)を検討せねばならず、コードが読みづらくなることがあります。CONTINUE文を使えば、自然な順序で条件分岐を記述でき、後からコードを読む開発者が「何もしないことが仕様である」と一目で判断できるようになります。

サンプルプログラム

以下は、フラグの状態に応じて処理を分岐させる簡単なサンプルコードです。そのままコピーして、コンパイルの挙動を確認してみてください。

IDENTIFICATION DIVISION.
PROGRAM-ID. CONTINUE-SAMPLE.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STATUS-FLG PIC X VALUE “N”.

PROCEDURE DIVISION.
> サンプルとしてフラグをセット
MOVE “Y” TO WS-STATUS-FLG.

> フラグがYの場合は何もしない。それ以外で処理を行う例
IF WS-STATUS-FLG = “Y”
CONTINUE
ELSE
DISPLAY “処理を実行します。”
END-IF.

DISPLAY “プログラム終了。”.

GOBACK.

応用・注意点

CONTINUE文は非常に便利ですが、乱用には注意が必要です。あまりに多くのCONTINUE文が散見される場合、そもそも「その条件分岐自体が必要なのか?」とロジックの見直しを検討すべきサインかもしれません。また、一部の古い方言や特殊なコンパイラでは挙動が異なる可能性がゼロではないため、大規模な改修を行う際は、ターゲットとなる環境の言語仕様書でCONTINUEのサポート状況を再確認することをお勧めします。現場のベテランとしては、「意図的な空処理」であることをコメントで補足する癖をつけておくと、保守性が格段に向上しますよ。

コメント

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