Hitachi

COBOL2002 ユーザーズガイド


37.7.3 COBOL実行時ライブラリが検出する例外

〈この項の構成〉

(1) 例外種別の出力

-DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRangeオプションのどれかを指定してコンパイルしプログラムを実行した場合に例外が発生すると,COBOLがこれを検知し,実行時メッセージ,および異常終了時要約情報リストで例外種別を出力します。この情報によって,どのような例外が発生したか,および例外がどの実行文で発生しているかを把握できます。

実行時メッセージ,および異常終了時要約情報リストに表示される例外種別とその意味を次に示します。

表37‒4 実行時メッセージ,および異常終了時要約情報リストに表示される例外種別

例外種別

意味

RUNTIME ERROR

COBOL実行時エラーが発生した。

CBLABN

CBLABNサービスルーチンが呼び出された。

EXCEPTION_ACCESS_VIOLATION

表37‒3 代表的なアプリケーションエラー」の「アクセス違反」を参照

EXCEPTION_INT_DIVIDE_BY_ZERO

表37‒3 代表的なアプリケーションエラー」の「ゼロ除算」を参照

EXCEPTION_INT_OVERFLOW

整数演算の結果,最上位ビットのキャリーアウトが発生した。

EXCEPTION_FLT_DENORMAL_OPERAND

浮動小数点演算で使用している作用対象に異常があり,その値が小さ過ぎるため,標準の浮動小数点値として表せない。

EXCEPTION_FLT_DIVIDE_BY_ZERO

浮動小数点値を浮動小数点値0で割ろうとした。

EXCEPTION_FLT_INEXACT_RESULT

浮動小数点演算の結果を10進小数として正確に表せない。

EXCEPTION_FLT_OVERFLOW

浮動小数点演算の指数の値が,対応する型の上限値を超えている。

EXCEPTION_FLT_UNDERFLOW

浮動小数点演算の指数の値が,対応する型の下限値を超えている。

EXCEPTION_FLT_STACK_CHECK

浮動小数点演算の結果,スタックのオーバフローまたはアンダーフローが発生した。

EXCEPTION_FLT_INVALID_OPERATION

この表にないすべての浮動小数点例外を表す。

EXCEPTION_PRIV_INSTRUCTION

現在のマシンモードでは実行できない演算命令を実行しようとした。

STATUS_NONCONTINUABLE_EXCEPTION

実行を続行できない例外の発生後,実行を続行しようとした。

(2) プロセスの終了

異常終了時要約情報リストを出力後,プロセスは終了コード1で終了します。

ただし,環境変数CBLEXCEPT=THROWを指定したときはシステムが返す値が設定されます。

(3) 例外発生時の動作を指定する実行時環境変数CBLEXCEPT

形式
CBLEXCEPT=THROW
規則

この環境変数にTHROWを指定すると,デバッグ用コンパイラオプション-DebugInf,-DebugInf,Trace,-DebugCompati,-DebugData,-TDInf,-CVInf,-DebugRangeのどれかを指定したプログラムの実行中に例外が発生した場合,例外コードを上位プログラムにスローします。

このとき,異常終了時要約情報リストを出力し,終了方法は上位の制御プログラムの終了処理に依存します。

例えば,デバッグ環境を構築できない環境でシステム例外発生時のデバッグをする場合に指定します。

この環境変数を指定したときの動作を次に示します。