プログラムに共通例外処理を追加する例を,次に示します。
この例では,ACCEPT文に内部浮動小数点項目を指定しているため,-NumAcceptコンパイラオプションの指定が必要です。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PARAM USAGE COMP-1.
:
PROCEDURE DIVISION.
DISPLAY '値を入力してください '.
ACCEPT PARAM.
CALL 'SAMPLE2' USING PARAM.
END PROGRAM SAMPLE1.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ANS USAGE COMP-1.
LINKAGE SECTION.
01 PARAM USAGE COMP-1.
:
PROCEDURE DIVISION USING PARAM.
COMPUTE ANS = FUNCTION ACOS ( PARAM ).
DISPLAY 'ANSWER =' ANS.
END PROGRAM SAMPLE2.
不正な値が入力された場合に共通例外処理を使用して例外を処理するために,上記のプログラムを次のように修正します。
>>TURN EC-ARGUMENT-FUNCTION CHECKING ON
DECLARATIVES.
USE-EC-ARGUMENT SECTION.
USE AFTER EXCEPTION CONDITION EC-ARGUMENT-FUNCTION.
DISPLAY '入力値不正!!'.
RESUME AT ERR-RETRY.
END DECLARATIVES.
>>PROPAGATE ON
上記の例外処理を追加したサンプルプログラムを,次に示します。太字の個所が,追加部分です。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PARAM USAGE COMP-1.
:
PROCEDURE DIVISION.
DECLARATIVES. *> 3.
USE-EC-ARGUMENT SECTION.
USE AFTER EXCEPTION CONDITION
EC-ARGUMENT-FUNCTION.
DISPLAY '入力値不正!!'.
RESUME AT ERR-RETRY. *> 4.
END DECLARATIVES.
ERR-RETRY.
DISPLAY '値を入力してください '.
ACCEPT PARAM.
>>TURN EC-ARGUMENT-FUNCTION CHECKING ON
CALL 'SAMPLE2' USING PARAM. *> 2.
END PROGRAM SAMPLE1.
>>PROPAGATE ON
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ANS USAGE COMP-1.
LINKAGE SECTION.
01 PARAM USAGE COMP-1.
:
PROCEDURE DIVISION USING PARAM.
>>TURN EC-ARGUMENT-FUNCTION CHECKING ON
COMPUTE ANS = FUNCTION ACOS ( PARAM ). *> 1.
DISPLAY 'ANSWER =' ANS.
END PROGRAM SAMPLE2.