COBOL2002 ユーザーズガイド


16.4.2 実行単位の終了コード

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

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

〈この項の構成〉

(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) 注意事項