COBOL2002 ユーザーズガイド

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

22.2.1 例外名

例外名とは,おのおのの例外に関連づけられた名前のことです。例えば,「0による除算」の例外は,例外名「EC-SIZE-ZERO-DIVIDE」として識別されます。

<この項の構成>
(1) 例外名のレベル
(2) 例外名の一覧
(3) 利用者定義例外名

(1) 例外名のレベル

例外名には,次の三つのレベルがあります。

レベル3
最下位のレベルに位置する例外名です。
レベル3に分類される例外名は,おのおのの例外を表します。

レベル2
レベル3の上位に位置する例外名です。
レベル2に分類される例外名は,レベル3例外名を機能や分類によってまとめたものです。機能・分類単位の例外を包括して指定したい場合に使用します。

レベル1
最上位に位置する例外名です。
レベル1に分類される例外名は,「EC-ALL」だけです。「EC-ALL」を指定すると,すべての例外名を指定したのと同じように処理されます。
すべての例外を包括して指定したい場合に使用します。

図22-2 例外名のレベル構成

[図データ]

(2) 例外名の一覧

例外名の一覧を,次に示します。

表22-2 例外名の一覧

例外名 致命度 説明 検出される文
EC-ALL すべての例外
EC-ARGUMENT 引数エラー
EC-ARGUMENT-FUNCTION 致命的 関数で引数エラーが発生した 組み込み関数を指定できる手続き文※1
EC-ARGUMENT-IMP 致命的 組み込み関数の処理中にメモリ不足などのエラーが発生した 組み込み関数を指定できる手続き文※1
EC-BOUND 区域外
EC-BOUND-ODO 致命的 OCCURS〜DEPENDING ONデータ項目が区域外である※2 OCCURS DEPENDING ON一意名に値を設定する手続き文※1
EC-BOUND-REF-MOD 致命的 区域外の部分参照子である※3 部分参照を指定できる手続き文※1
EC-BOUND-SUBSCRIPT 致命的 区域外の添字である※4 添字を指定できる手続き文※1
EC-DATA データ例外
EC-DATA-PTR-NULL 致命的 アドレス名によって参照されるデータ項目を参照するとき,アドレス名の設定値がNULLである アドレス名によって参照されるデータ項目を指定した手続き文※5
EC-FLOW 実行制御フロー違反
EC-FLOW-GLOBAL-EXIT 致命的 大域的な宣言手続き中でEXIT PROGRAM文が実行された EXIT文
EC-FLOW-GLOBAL-GOBACK 致命的 大域的な宣言手続き中でGOBACK文が実行された
  • GOBACK文
  • 大域的な宣言手続き中での自動伝播の対象となる例外を引き起こした手続き文
EC-FLOW-IMP 致命的 ALTER文で行き先を指定する前に,行き先を省略したGO TO文が実行された GO TO文
EC-FLOW-RELEASE 致命的 RELEASE文がSORT文の範囲内にない RELEASE文
EC-FLOW-RETURN 致命的 RETURN文がMERGE文やSORT文の範囲内にない RETURN文
EC-FLOW-USE 致命的 USE文が別のUSE手続きを実行させた 宣言手続き中で実行中の宣言手続きを実行する例外を引き起こした手続き文
EC-I-O 入出力例外
EC-I-O-AT-END 非致命的 入出力状態「1x」が発生した READ文
EC-I-O-EOP 非致命的 ページ終了条件が発生した WRITE文
EC-I-O-EOP-OVERFLOW 非致命的 ページあふれ条件が発生した WRITE文
EC-I-O-IMP 致命的 入出力状態「9x」が発生した(入出力状態の詳細は,「付録G 入出力状態の値」を参照)
  • OPEN文
  • CLOSE文
  • READ文
  • WRITE文
  • REWRITE文
  • DELETE文
  • START文
EC-I-O-INVALID-KEY 非致命的 入出力状態「2x」が発生した
  • READ文
  • REWRITE文
  • START文
  • WRITE文
  • DELETE文
EC-I-O-LINAGE 致命的 LINAGE句に指定したデータ名の値が要求範囲外である
  • WRITE文
  • OPEN文
EC-I-O-LOGIC-ERROR 致命的 入出力状態「4x」が発生した
  • READ文
  • CLOSE文
  • REWRITE文
  • DELETE文
  • START文
  • OPEN文
  • WRITE文
EC-I-O-PERMANENT-ERROR 致命的 入出力状態「3x」が発生した
  • READ文
  • OPEN文
  • WRITE文
  • REWRITE文
  • DELETE文
EC-OO オブジェクト指向に関連するすべての既定義例外
EC-OO-CONFORMANCE 致命的 オブジェクトビューに対する不成功が発生した オブジェクトビューを指定できる手続き文
EC-OO-EXCEPTION 致命的 例外オブジェクトが処理されなかった
  • EXIT文
  • GOBACK文
EC-OO-IMP 致命的 INVOKE文の一意名1に指定されたハンドルの値が正しくない INVOKE文
EC-OO-METHOD 致命的 要求されるメソッドが使用できない INVOKE文
EC-OO-NULL 致命的 NULLオブジェクト参照を使用してメソッドを呼び起こそうとした INVOKE文
EC-OO-RESOURCE 致命的 オブジェクトの作成や拡張に必要なシステム資源が不十分である INVOKE文
EC-OO-UNIVERSAL 致命的 実行時の型チェックが失敗した INVOKE文
EC-OVERFLOW けたあふれ条件
EC-OVERFLOW-STRING 非致命的 STRING文のけたあふれ条件が発生した STRING文
EC-OVERFLOW-UNSTRING 非致命的 UNSTRING文のけたあふれ条件が発生した UNSTRING文
EC-PROGRAM プログラム間連絡例外
EC-PROGRAM-ARG-MISMATCH 致命的 引数が不一致である CALL文
EC-PROGRAM-CANCEL-ACTIVE 致命的 取り消されるプログラムが活性状態である CANCEL文
EC-PROGRAM-IMP
 
 
致命的
 
 

  • DLLをロード中にエラーが発生した
  • CALL文で実行可能ファイルの処理中にエラーが発生した
  • EXTERNAL句を指定したデータ項目やファイル定義を処理中にエラーが発生した

  • CALL文
  • 利用者定義関数を指定できる手続き文
 
EC-PROGRAM-NOT-FOUND 致命的 呼び出し先プログラムが見つからない CALL文
EC-PROGRAM-RECURSIVE-CALL 致命的 呼び出し先プログラムが活性状態である CALL文
EC-PROGRAM-RESOURCES 致命的 呼び出し先プログラムで資源が使用できない
  • CALL文
  • 利用者定義関数を指定できる手続き文
EC-RAISING EXIT文RAISING指定かGOBACK文RAISING指定で発生する例外
EC-RAISING-NOT-SPECIFIED 致命的 EXIT文RAISING指定かGOBACK文RAISING指定のEC-USER例外条件が手続き部見出しのRAISING指定にない
  • EXIT文
  • GOBACK文
EC-RANGE 範囲例外
EC-RANGE-INSPECT-SIZE 致命的 INSPECT文での置き換え項目のサイズが異なる INSPECT文
EC-RANGE-INVALID 非致命的 THROUGH範囲の開始値が終了値よりも大きい
  • EVALUATE文
  • 条件名指定のIF文
EC-RANGE-PERFORM-VARYING 致命的 PERFORM文で変更項目の設定が負値である PERFORM文
EC-RANGE-SEARCH-INDEX 非致命的 指標の初期値が範囲外のため,SEARCH文で表要素が見つからない SEARCH文
EC-RANGE-SEARCH-NO-MATCH 非致命的 探索基準に合致する要素がないため,SEARCH文で表要素が見つからない SEARCH文
EC-SIZE けたあふれ例外
EC-SIZE-EXPONENTIATION 致命的 べき乗演算規則の違反が発生した COMPUTE文
EC-SIZE-OVERFLOW 致命的 計算でのけたあふれが発生した
  • ADD文
  • COMPUTE文
  • MULTIPLY文
  • DIVIDE文
  • SUBTRACT文
EC-SIZE-TRUNCATION 致命的 格納での有効けた切り捨てが発生した
  • MOVE文
  • COMPUTE文
  • ADD文
  • SUBTRACT文
  • DIVIDE文
  • MULTIPLY文
EC-SIZE-UNDERFLOW 致命的 浮動小数点での下位けたあふれが発生した
  • ADD文
  • COMPUTE文
  • MULTIPLY文
  • DIVIDE文
  • SUBTRACT文
EC-SIZE-ZERO-DIVIDE 致命的 ゼロによる除算が発生した
  • COMPUTE文
  • DIVIDE文
EC-SORT-MERGE 整列併合機能の例外
EC-SORT-MERGE-IMP 致命的 整列併合用ファイル記述項のRECORD句で指定したDEPENDING ONデータ名の値が数字ではない
  • RELEASE文
  • RETURN文
EC-SORT-MERGE-RELEASE 致命的 RELEASE文のレコードが長過ぎるまたは短過ぎる RELEASE文
EC-SORT-MERGE-RETURN 致命的 RETURN文がファイル終了条件発生中に実行された RETURN文
EC-USER 利用者定義の例外
EC-USER-(ユーザ定義例外名) 非致命的 レベル3の利用者定義の例外条件
  • RAISE文
  • EXIT文
  • GOBACK文

(凡例)
−:発生したレベル3の例外名の動作に従う

注※1
詳細は「22.8.1 例外が検出される文の詳細」を参照してください。

注※2
表操作で,DEPENDING ON指定のデータ名に格納されている繰り返し回数が,表の最小から最大の範囲にないことを示します。

注※3
部分参照の指定が,一意名の範囲内にないことを示します。

注※4
表操作で使用する添字または指標名が指す表要素が,表の範囲内にないことを示します。

注※5
ただし,連絡節中のデータ項目に対するポインタ変数がNULLである場合,例外が検出されません。
(例)
連絡節中のデータ項目に対してSET文のADDRESS OFによってNULLを設定したあと,そのデータ項目を参照した場合は,例外が検出されません。

(3) 利用者定義例外名

利用者定義例外名とは,ユーザが独自の例外を定義して使用できる機能です。

利用者定義例外名は,「EC-USER-」で始まる任意の例外名を記述して定義します。利用者定義例外名の命名規則については,マニュアル「COBOL2002 言語 標準仕様編 10.5.11(1) 例外」を参照してください。

利用者定義例外名として,「EC-USER-EXCEPTION」という例外名を使用する場合のコーディング例を,次に示します。

 
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE.
 
       PROCEDURE DIVISION.
       DECLARATIVES.
         EXCEPTIONHANDLER SECTION.
           USE AFTER EXCEPTION CONDITION EC-USER-EXCEPTION. *> 1.
             DISPLAY  'EC-USER-EXCEPTION発生'.
       END DECLARATIVES.
 
           RAISE EXCEPTION EC-USER-EXCEPTION. *> 2.
 
       END PROGRAM SAMPLE.
  1. 例外宣言手続き部に利用者定義例外名「EC-USER-EXCEPTION」を定義します。
  2. RAISE文にEC-USER-EXCEPTIONを指定して,利用者定義の例外を引き起こします。
    RAISE文で例外を引き起こす場合,TURN指令のチェックをONにして例外チェックを有効にする必要はありません。
    RAISE文については,「22.6 明示的な例外の引き起こし」を参照してください。