COBOL2002 ユーザーズガイド
手続き文でエラーが発生して例外を検出した際に,該当する例外チェックが無効な場合は,検出された例外,コンパイラオプションの指定,および例外が検出された文に対する無条件文の指定によって,動作が異なります。
共通例外処理で取り扱える例外名について,例外チェックが無効な場合の動作を,次に示します。
表22-5 エラー発生後に検出した例外に対して例外チェックが無効な場合の動作
例外名 | 例外チェックが無効な場合の動作 |
---|---|
EC-ALL | 以下のレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-ARGUMENT | EC-ARGUMENTに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-ARGUMENT-FUNCTION | 実行時エラーで異常終了。 |
EC-ARGUMENT-IMP | 実行時エラーで異常終了。 |
EC-BOUND | EC-BOUNDに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-BOUND-ODO | エラーとならないが,実行結果は保証しない。※1 |
EC-BOUND-REF-MOD |
|
EC-BOUND-SUBSCRIPT |
|
EC-DATA | EC-DATAに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-DATA-PTR-NULL | アプリケーションエラー(ハードウェア例外)で異常終了。 |
EC-FLOW | EC-FLOWに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-FLOW-GLOBAL-EXIT | エラーとならない。 |
EC-FLOW-GLOBAL-GOBACK | エラーとならない。 |
EC-FLOW-IMP | 実行時エラーで異常終了。 |
EC-FLOW-RELEASE | 実行時エラーで異常終了。 |
EC-FLOW-RETURN | 実行時エラーで異常終了。 |
EC-FLOW-USE | 実行時エラーで異常終了。 |
EC-I-O | EC-I-Oに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-I-O-AT-END |
|
EC-I-O-EOP | エラーとならない。 |
EC-I-O-EOP-OVERFLOW | エラーとならない。 |
EC-I-O-IMP | 実行時エラーで異常終了。 |
EC-I-O-INVALID-KEY |
|
EC-I-O-LINAGE |
|
EC-I-O-LOGIC-ERROR | 実行時エラーで異常終了。 |
EC-I-O-PERMANENT-ERROR | 実行時エラーで異常終了。 |
EC-OO | EC-OOに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-OO-CONFORMANCE | 実行時エラーで異常終了。 |
EC-OO-EXCEPTION | 実行時エラーで異常終了。 |
EC-OO-IMP | 実行時エラーで異常終了。 |
EC-OO-METHOD | 実行時エラーで異常終了。 |
EC-OO-NULL | 実行時エラーで異常終了。 |
EC-OO-RESOURCE | 実行時エラーで異常終了。 |
EC-OO-UNIVERSAL | 実行時エラーで異常終了。 |
EC-OVERFLOW | EC-OVERFLOWに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-OVERFLOW-STRING | ON OVERFLOW指定がない場合でもエラーとはならない。例外が検出される時点までの処理は実行されており,その時点までの実行結果は保証する。 |
EC-OVERFLOW-UNSTRING | ON OVERFLOW指定がない場合でもエラーとはならない。例外が検出される時点までの処理は実行されており,その時点までの実行結果は保証する。 |
EC-PROGRAM | EC-PROGRAMに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-PROGRAM-ARG-MISMATCH | コンパイラオプションの指定状況やCALL文の書き方によって動作が異なる。※2 |
EC-PROGRAM-CANCEL-ACTIVE | 実行時エラーで異常終了。 |
EC-PROGRAM-IMP | コンパイラオプションの指定状況やCALL文の書き方によって動作が異なる。※2 |
EC-PROGRAM-NOT-FOUND | コンパイラオプションの指定状況やCALL文の書き方によって動作が異なる。※2 |
EC-PROGRAM-RECURSIVE-CALL | コンパイラオプションの指定状況やCALL文の書き方によって動作が異なる。※2 |
EC-PROGRAM-RESOURCES | コンパイラオプションの指定状況やCALL文の書き方によって動作が異なる。※2 |
EC-RAISING | EC-RAISINGに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-RAISING-NOT-SPECIFIED | 実行時エラーで異常終了。 |
EC-RANGE | EC-RANGEに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-RANGE-INSPECT-SIZE | 実行時エラーで異常終了。 |
EC-RANGE-INVALID | エラーとならないが,実行結果は保証しない。 |
EC-RANGE-PERFORM-VARYING | エラーとならないが,実行結果は保証しない。 |
EC-RANGE-SEARCH-INDEX | エラーとならないが,実行結果は保証しない。 |
EC-RANGE-SEARCH-NO-MATCH | エラーとならないが,実行結果は保証しない。 |
EC-SIZE | EC-SIZEに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-SIZE-EXPONENTIATION | コンパイラオプションの指定状況やCOMPUTE文の書き方によって動作が異なる。※3 |
EC-SIZE-OVERFLOW | エラーとならないが,ON SIZE ERROR, NOT ON SIZE ERROR指定がない場合の実行結果はけたあふれが発生している。なお,べき乗演算についてはコンパイラオプションの指定状況やCOMPUTE文の書き方によって動作が異なる。※3 |
EC-SIZE-TRUNCATION | エラーとならないが,ON SIZE ERROR, NOT ON SIZE ERROR指定がない場合の実行結果はけたあふれが発生している。 |
EC-SIZE-UNDERFLOW | エラーとならないが,ON SIZE ERROR, NOT ON SIZE ERROR指定がない場合の実行結果はけたあふれが発生している。なお,べき乗演算についてはコンパイラオプションの指定状況やCOMPUTE文の書き方によって動作が異なる。※3 |
EC-SIZE-ZERO-DIVIDE |
|
EC-SORT-MERGE | EC-SORT-MERGEに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-SORT-MERGE-IMP | 実行時エラーで異常終了。 |
EC-SORT-MERGE-RELEASE | 実行時エラーで異常終了。 |
EC-SORT-MERGE-RETURN | 実行時エラーで異常終了。 |
EC-USER | EC-USERに関連するレベル3の例外が発生した場合,おのおのに対応する動作となる。 |
EC-USER-(ユーザ定義例外名) | エラーとならない。 |
表22-6 EC-PROGRAMとコンパイラオプションの組み合わせによる動作の相違
例外名 | -Compati85,Call 指定の有無 |
CALL文のON EXCEPTION または ON OVERFLOWの指定 | |
---|---|---|---|
あり | なし | ||
EC-PROGRAM-ARG-MISMATCH | あり |
|
|
なし |
|
|
|
EC-PROGRAM-IMP | あり |
|
実行時エラーで異常終了。 |
なし | 指定された無条件文を実行。 | ||
EC-PROGRAM-NOT-FOUND | あり | 指定された無条件文を実行。 | 実行時エラーで異常終了。 |
なし | |||
EC-PROGRAM-RECURSIVE-CALL | あり | 実行時エラーで異常終了。 | |
なし | 指定された無条件文を実行。 | 実行時エラーで異常終了。 | |
EC-PROGRAM-RESOURCES | あり | 実行時エラーで異常終了。 | |
なし | 指定された無条件文を実行。 | 実行時エラーで異常終了。 |
表22-7 べき乗演算とコンパイラオプションの組み合わせによる動作の相違
種別※ | 例外名 | -Compati85,Power指定の有無 | COMPUTE文のON SIZE ERRORの指定 | ||||
---|---|---|---|---|---|---|---|
あり | なし | ||||||
NOT ON SIZE ERROR | NOT ON SIZE ERROR | ||||||
あり | なし | あり | なし | ||||
整数べき乗 | EC-SIZE-EXPONENTIATION | 底 :0 指数:0 |
あり | NOT ON SIZEを実行。 | エラーとならない。 | NOT ON SIZEを実行。 | エラーとならない。 |
なし | ON SIZEを実行。 | エラーとならない。 | |||||
底 :0 指数:負 |
あり | ON SIZEを実行。 | エラーとならない。 | 実行時エラーで異常終了。 | |||
なし | |||||||
浮動小数点べき乗 | EC-SIZE-EXPONENTIATION | 底 :0 指数:0 |
あり | NOT ON SIZEを実行。 | エラーとならない。 | NOT ON SIZEを実行。 | エラーとならない。 |
なし | ON SIZEを実行。 | エラーとならない。 | |||||
底 :0 指数:負 |
あり | NOT ON SIZEを実行。 | エラーとならない。 | NOT ON SIZEを実行。 | エラーとならない。 | ||
なし | ON SIZEを実行。 | エラーとならない | 実行時エラーで異常終了。 | ||||
底 :負 指数:小数 |
あり | ON SIZEを実行。 | エラーとならない。 | 実行時エラーで異常終了。 | |||
なし | |||||||
EC-SIZE-OVERFLOW | あり | NOT ON SIZEを実行。 | エラーとならない。 | NOT ON SIZEを実行。 | エラーとならない。 | ||
なし | ON SIZEを実行。 | エラーとならない。 | |||||
EC-SIZE-UNDERFLOW | あり | NOT ON SIZEを実行。 | エラーとならない。 | NOT ON SIZEを実行。 | エラーとならない。 | ||
なし | ON SIZEを実行。 | エラーとならない。 |
伝播によって例外を検出した場合,CALL文,INVOKE文,および利用者定義関数の呼び出しで検出された例外名の例外チェックが無効なときは,例外の致命度によって,次に示す処理が実行されます。
表22-8 伝播によって検出した例外に対して例外チェックが無効な場合の動作
致命度 | 動作 |
---|---|
致命的な例外 | 「図22-5 プログラム「CHILDPROGRAM」から致命的な例外の伝播を実行するが,プログラム「PARENTPROGRAM」の例外チェックが無効な場合の動作例」のように,制御遷移した文(CALL文,INVOKE文,および利用者定義関数の呼び出し)で,実行時エラーメッセージ(KCCC0402R-S)を出力し,実行単位が異常終了となる。 なお,例外を受け取れないプログラム※の場合は,「図22-6 プログラム「CHILDPROGRAM」から致命的な例外の伝播を実行しようとするが,プログラム「PARENTPROGRAM」が例外を受け取れない場合の動作例」のように,呼び出し先プログラム中の例外を検出した文で,実行時エラーメッセージ(KCCC0403R-S)を出力し,実行単位が異常終了となる。 |
非致命的な例外 | 「図22-7 非致命的な例外のときは,例外の伝播は無視され,実行が継続される場合の動作例」のように,例外の伝播は無視され,実行が継続される。 |
例外の伝播によって検出された例外の詳細については,「表22-15 例外の伝播によって検出された例外」を参照してください。
図22-5 プログラム「CHILDPROGRAM」から致命的な例外の伝播を実行するが,プログラム「PARENTPROGRAM」の例外チェックが無効な場合の動作例
図22-6 プログラム「CHILDPROGRAM」から致命的な例外の伝播を実行しようとするが,プログラム「PARENTPROGRAM」が例外を受け取れない場合の動作例
図22-7 非致命的な例外のときは,例外の伝播は無視され,実行が継続される場合の動作例
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.