COBOL2002 使用の手引 手引編


16.3.2 実行単位の終了コード

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

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

〈この項の構成〉

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

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

指定例
       MOVE 0 TO RETURN-CODE.
規則
  • RETURN-CODE特殊レジスタに設定できる値の範囲は,S9(9)の項目に設定できる値の範囲です。

  • ただし,このシステムで受け取れるRETURN-CODE特殊レジスタの値は,下位1バイト(8ビット)の内容です。

  • VOS3 COBOL85との動作と互換性を保つ必要がある場合は,RETURN-CODE特殊レジスタには,0〜4,095の範囲で設定してください。

  • 終了コードの値は,プログラム終了時にRETURN-CODE特殊レジスタに設定されている値になります。ただし,COBOLプログラム中でRETURN-CODE特殊レジスタに値を設定した後,RETURNING指定のないCALL文を実行した場合は,呼び出し先プログラムの戻り値が終了コードとなります。

  • RETURN-CODE特殊レジスタに値を設定しないで,COBOLプログラムが正常終了した場合は,終了コードとして0が返されます。ただし,COBOLプログラムから他言語のプログラムを呼び出している場合,呼び出し先プログラムの戻り値が終了コードに設定されます。

注※

void型のC言語プログラムを最後に呼び出すと,終了コードの値が不定となることがあります。

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

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

COBOL実行時エラーが発生した場合
  • -DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRange,または-MultiThreadオプション指定ありのCOBOLプログラムの場合

    終了コードには,1が設定されます。ただし,実行時環境変数CBLCOREに1を指定した場合,COBOLプログラムは,abort命令を発行して終了します。このため,プログラムの終了コードには,シグナルSIGIOT発生時のシステムの終了コードが設定されます。

    詳細は,システムのヘッダファイル(signal.h)およびシステムのマニュアルを参照してください。

  • 上記のコンパイラオプション指定なしのCOBOLプログラムの場合

    COBOLプログラムは,abort命令を発行して終了します。このため,プログラムの終了コードには,シグナルSIGIOT発生時のシステムの終了コードが設定されます。

    詳細は,システムのヘッダファイル(signal.h)およびシステムのマニュアルを参照してください。

CBLABNサービスルーチンが実行された場合
  • -DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRange,または-MultiThreadオプション指定ありのCOBOLプログラムの場合

    終了コードには,1が設定されます。ただし,実行時環境変数CBLCOREに1を指定した場合,COBOLプログラムは,abort命令を発行して終了します。このため,プログラムの終了コードには,シグナルSIGIOT発生時のシステムの終了コードが設定されます。

    詳細は,システムのヘッダファイル(signal.h)およびシステムのマニュアルを参照してください。

  • 上記のコンパイラオプション指定なしのCOBOLプログラムの場合

    COBOLプログラムは,abort命令を発行して終了します。このため,プログラムの終了コードには,シグナルSIGIOT発生時のシステムの終了コードが設定されます。

    詳細は,システムのヘッダファイル(signal.h)およびシステムのマニュアルを参照してください。

上記以外のエラーが発生した場合
  • -DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRange,または-MultiThreadオプション指定ありのCOBOLプログラムの場合

    終了コードには,1が設定されます。ただし,実行時環境変数CBLCOREに1を指定した場合,COBOLプログラムは,abort命令を発行して終了します。このため,プログラムの終了コードには,シグナルSIGIOT発生時のシステムの終了コードが設定されます。

    詳細は,システムのヘッダファイル(signal.h)およびシステムのマニュアルを参照してください。

  • 上記のコンパイラオプション指定なしのCOBOLプログラムの場合

    終了コードには,発生したシグナル別にOSが返す値が設定されます。

(3) 注意事項