COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

17.4.2 実行単位の終了コード

COBOLの実行単位が終了するときに返す終了コードについて説明します。

COBOLプログラムから終了コードを返すには,RETURN-CODE特殊レジスタを使用します。また,プログラムが異常終了した場合は,COBOL2002によって終了コードが設定される場合があります。

<この項の構成>
(1) RETURN-CODE特殊レジスタを使用する方法
(2) プログラムが異常終了した場合の終了コード
(3) 注意事項

(1) RETURN-CODE特殊レジスタを使用する方法

呼び出し元の制御プログラムに終了コードを返すには,プログラムが終了する前にRETURN-CODE特殊レジスタに値を設定します。

指定例
       MOVE 0 TO RETURN-CODE.

規則
  • RETURN-CODE特殊レジスタに設定できる値の範囲は,S9(9)の項目に設定できる値の範囲です。ただし,VOS3 COBOL85との動作と互換性を保つ必要がある場合は,0〜4,095の範囲で設定してください。
  • 終了コードの値は,プログラム終了時にRETURN-CODE特殊レジスタに設定されている値になります。ただし,COBOLプログラム中でRETURN-CODE特殊レジスタに値を設定した後,RETURNING指定のないCALL文を実行した場合は,呼び出し先プログラムの戻り値が終了コードとなります。
  • RETURN-CODE特殊レジスタに値を設定しないで,COBOLプログラムが正常終了した場合は,終了コードとして0が返されます。ただし,COBOLプログラムから他言語のプログラムを呼び出している場合,呼び出し先プログラムの戻り値が終了コードに設定されます。
注※
void型のC言語プログラムを最後に呼び出すと,終了コードの値が不定となることがあります。

(2) プログラムが異常終了した場合の終了コード

プログラムが異常終了した場合,COBOL2002が終了コードを設定する場合があります。

COBOL実行時エラーが発生した場合
終了コードには1が設定されます。

CBLABNサービスルーチンが実行された場合
環境変数CBLABNCODEにYESが指定されている場合は,終了コードにはCBLABNサービスルーチンの引数が設定されます。
環境変数CBLABNCODEにYES以外が指定されている場合は,終了コードには1が設定されます。

上記以外のエラーが発生した場合
  • -DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,または-DebugRangeオプション指定ありのCOBOLプログラムのとき
    終了コードには,1が設定されます。
    ただし,環境変数CBLEXCEPT=THROWを指定したときは,システムが返す値が設定されます。
  • 上記のコンパイラオプション指定なしのCOBOLプログラムのとき
    終了コードにはシステムが返す値が設定されます。

(3) 注意事項