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の出番です。ネストを一段浅くするだけで、コードの品質は劇的に向上します。ぜひ、現場のコードで試してみてください。

コメント