【COBOL学習|初心者向け】COBOLの「早期リターン」でコードをスッキリ!EXIT PARAGRAPH文の使い方

1. 導入:なぜEXIT PARAGRAPHが必要なのか

COBOLのプログラムを書いていると、処理の途中で「もうこれ以上、この段落の処理を続けなくていい」という場面に出くわすことはありませんか?例えば、入力データのチェックでエラーが見つかった場合などです。

もしここでEXIT PARAGRAPHを使わなければ、処理を終えるために複雑なIF文の入れ子(ネスト)を作ったり、無理やりGO TO文で段落の末尾に飛ばしたりすることになります。これではコードの可読性が下がり、バグの温床になります。EXIT PARAGRAPHは、そんな「処理の早期中断」をスマートに実現するための重要なテクニックです。

2. 基礎知識:EXIT PARAGRAPHの仕組み

EXIT PARAGRAPH文は、現在実行中の段落(PARAGRAPH)内の残りの処理をすべてスキップし、その段落の終了地点へと制御をジャンプさせる命令です。

イメージとしては、他のプログラミング言語における「return」に近い機能です。ただし、プログラム全体を終了させるのではなく、あくまで「その段落の実行を終了する」という点に注意してください。もしその段落がPERFORM文から呼び出されている場合、制御はPERFORMの呼び出し元へと戻ります。

3. 実装と解決策

使い方は非常にシンプルです。条件文の中に組み込むだけで機能します。

現場でよくあるのは「バリデーション(妥当性チェック)」です。データの整合性をチェックし、エラーがあればその場で処理を打ち切る。正常な場合だけ、後続のメイン処理に進む。この「正常系処理をネストさせない」書き方が、保守性の高いコードを生み出します。

4. サンプルプログラム

以下は、金額計算を行う際に、入力値が0以下の場合は処理をスキップする例です。

IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-EXIT.

WORKING-STORAGE SECTION.
01 WS-AMOUNT PIC 9(5).
01 WS-ERROR-FLG PIC X VALUE ‘N’.

PROCEDURE DIVISION.
MAIN-LOGIC.
MOVE 0 TO WS-AMOUNT.

  • 計算処理を実行する段落を呼び出す

PERFORM CALC-PROCESS.

STOP RUN.

CALC-PROCESS.

  • 1. 入力チェック:金額が0なら処理を中断する

IF WS-AMOUNT = 0
DISPLAY ‘金額が0のため処理をスキップします。’
EXIT PARAGRAPH
END-IF.

  • 2. 正常な場合のみ、以下のメイン処理が実行される

DISPLAY ‘計算処理を実行中…’.
COMPUTE WS-AMOUNT = WS-AMOUNT 1.08.
DISPLAY ‘税込み金額: ‘ WS-AMOUNT.

  • 段落の最後(ここには到達しなくてもEXIT PARAGRAPHで制御が戻る)

EXIT.

5. 応用・注意点

注意点:
EXIT PARAGRAPHは、あくまで「その段落内」での制御終了です。大きなプログラムで、複数の段落をまたいで処理を中断したい場合には適していません。また、あまりに多用しすぎると、どこで処理が抜けているのか追いにくくなることもあるため、基本的には「ガード節(最初のエラーチェック)」として使うのがベストプラクティスです。

プロのコツ:
「IF文のネストが深くなってきたな」と感じたら、それはEXIT PARAGRAPHの出番です。ネストを一段浅くするだけで、コードの品質は劇的に向上します。ぜひ、現場のコードで試してみてください。

コメント

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