次の組み込み関数を使用すると,実行単位で最後に引き起こされた例外(最新例外状態)の詳細な情報を取得できます。
最新例外状態に関連するファイル結合子の入出力状態の値,およびファイル名称を返します。関数の戻り値の長さは,64バイトです。
EXCEPTION-FILE関数の戻り値を,次に示します。
例外の種類 | 関数の戻り値の内容 |
---|---|
入出力に関連する例外の場合※1 | 入出力状態とファイル名 |
入出力以外の例外の場合※2 | 00 |
EXCEPTION-FILE関数については,マニュアル「COBOL2002 言語 標準仕様編 11.18 EXCEPTION-FILE関数」を参照してください。
最新例外状態に関連する文の位置を返します。関数の戻り値の長さは,303バイトです。
EXCEPTION-LOCATION関数の戻り値は,プログラム/利用者定義関数/メソッドの名称,手続き名,およびソース行識別子から構成され,それぞれがセミコロン(;)と空白1文字で区切られた形式となっています。
EXCEPTION-LOCATION関数の戻り値を,次に示します。
例外の有無 | 関数の戻り値の内容 |
---|---|
例外あり |
|
例外なし | 英数字空白 |
AAA…AA;△BB…B;△CCCCCCC/CCC
例外の引き起こされた位置を 含む定義の種別 | 関数の戻り値の内容 |
---|---|
プログラム | プログラム名 |
利用者定義関数 | 利用者定義関数名 |
メソッド | メソッド名 |
手続きの種別 | 関数の戻り値の内容 |
---|---|
段落名,節名あり※ | 段落名 OF 節名 |
段落名だけあり | 段落名 |
節名だけあり※ | 節名 |
段落名,節名なし | 何も戻さない |
インライン展開前の形式 | インライン展開後の形式 |
---|---|
AAA SECTION. | AAA SECTION. |
返される手続き名 XXX△OF△BBB | 返される手続き名 XXX△OF△AAA |
(凡例) △:空白(X'20')
EXCEPTION-LOCATION関数については,マニュアル「COBOL2002 言語 標準仕様編 11.19 EXCEPTION-LOCATION関数」を参照してください。
例外が引き起こされた文の名前を返します。関数の戻り値の長さは,31バイトです。
EXCEPTION-STATEMENT関数の戻り値を,次に示します。
例外の有無 | 関数の戻り値の内容 |
---|---|
例外あり | 例外の発生した文の名前 |
例外なし | 英数字空白31文字 |
EXCEPTION-STATEMENT関数については,マニュアル「COBOL2002 言語 標準仕様編 11.20 EXCEPTION-STATEMENT関数」を参照してください。
最新例外状態に関連する例外名称を返します。関数の戻り値の長さは,31バイトです。
EXCEPTION-STATUS関数の戻り値を,次に示します。
引き起こされた例外の種別 | 関数の戻り値の内容 |
---|---|
例外名 | 例外名 |
例外オブジェクト | EXCEPTION-OBJECT |
例外なし | 英数字空白31文字 |
EXCEPTION-STATUS関数については,マニュアル「COBOL2002 言語 標準仕様編 11.21 EXCEPTION-STATUS関数」を参照してください。
組み込み関数を使用して最新例外状態を参照するCOBOLプログラムの例を,次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
:
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INFILE ASSIGN 'INPUT-FILE'.
SELECT OUTFILE ASSIGN 'OUTPUT-FILE'.
:
DATA DIVISION.
FILE SECTION.
FD INFILE.
01 INREC PIC X(10).
FD OUTFILE.
01 OUTREC PIC X(10).
WORKING-STORAGE SECTION.
01 EOF-FLG PIC 9 VALUE 0.
:
PROCEDURE DIVISION.
DECLARATIVES.
EXCEPTION-HANDLING SECTION.
USE AFTER EXCEPTION CONDITION EC-I-O. *> 2.
DISPLAY FUNCTION EXCEPTION-FILE.
DISPLAY FUNCTION EXCEPTION-LOCATION.
DISPLAY FUNCTION EXCEPTION-STATEMENT.
DISPLAY FUNCTION EXCEPTION-STATUS.
IF FUNCTION EXCEPTION-STATEMENT = 'OPEN' THEN
IF FUNCTION EXCEPTION-FILE (3 : ) = 'OUTFILE' THEN
RESUME AT ERROR-HANDLE2
END-IF
RESUME AT ERROR-HANDLE3
END-IF.
RESUME AT ERROR-HANDLE1.
END DECLARATIVES.
>>TURN EC-I-O CHECKING ON
OPEN INPUT INFILE. *> 1.
OPEN OUTPUT OUTFILE.
PERFORM UNTIL EOF-FLG = 1
READ INFILE
WRITE OUTREC FROM INREC
END-PERFORM.
ERROR-HANDLE1.
CLOSE OUTFILE.
ERROR-HANDLE2.
CLOSE INFILE.
ERROR-HANDLE3. *> 3.
STOP RUN.
END PROGRAM 'SAMPLE'.
組み込み関数名 | 関数の戻り値 |
---|---|
EXCEPTION-FILE | 35INFILE |
EXCEPTION-LOCATION | SAMPLE;△;△0000035/011 ※ |
EXCEPTION-STATEMENT | OPEN |
EXCEPTION-STATUS | EC-I-O-PERMANENT-ERROR |