21.4.2 宣言手続きからの復帰
宣言手続きの実行中に次の文を使用すると,宣言手続きの実行を中断して,制御を復帰できます。
- 〈この項の構成〉
(1) RESUME文
RESUME文は,宣言手続きから復帰するときに使用します。RESUME文では,例外が引き起こされた次の文に復帰させる方法と,指定した手続き名へ復帰させる方法があります。
RESUME文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.37 RESUME文」を参照してください。
RESUME文を使用した宣言手続きからの復帰の例を,次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
>>TURN EC-SIZE CHECKING ON
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9 VALUE 9.
01 B PIC 9 VALUE 0.
01 C PIC 9.
PROCEDURE DIVISION.
DECLARATIVES.
USE-1 SECTION.
USE AFTER EXCEPTION CONDITION EC-SIZE-ZERO-DIVIDE. *> 2.
DISPLAY 'RESUME NEXT実行'.
RESUME NEXT STATEMENT. *> 3.
USE-2 SECTION.
USE AFTER EXCEPTION CONDITION EC-SIZE-TRUNCATION. *> 5.
DISPLAY 'RESUME 手続き名実行'.
RESUME 復帰手続き. *> 6.
END DECLARATIVES.
DIVIDE A BY B GIVING C. *> 1.
COMPUTE C = A * 2. *> 4.
STOP RUN.
復帰手続き. *> 7.
DISPLAY '宣言手続きからの復帰'.
:
END PROGRAM SAMPLE.-
DIVIDE文で,ゼロによる除算の例外EC-SIZE-ZERO-DIVIDEが検出されます。
-
例外名EC-SIZE-ZERO-DIVIDEを指定した例外宣言手続きが実行されます。
-
RESUME文によって宣言手続きから復帰します。RESUME文にNEXT STATEMENTが指定されているため,例外が引き起こされた次の行(COMPUTE文)に制御が移ります。
-
COMPUTE文で,算術けたあふれの例外EC-SIZE-TRUNCATIONが検出されます。
-
例外名EC-SIZE-TRUNCATIONを指定した例外宣言手続きが実行されます。
-
RESUME文によって宣言手続きから復帰します。RESUME文に手続き名が指定されているため,「復帰手続き」に制御が移ります。
-
手続きが実行され,DISPLAY文で「宣言手続きからの復帰」と表示されます。
(2) GOBACK文,EXIT文
宣言手続きの実行中に,GOBACK文,またはEXIT文を実行すると,暗黙的に宣言手続きからの復帰が行われます。
GOBACK文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.22 GOBACK文」を参照してください。
EXIT文については,マニュアル「COBOL2002 言語 標準仕様編」 「10.8.20 EXIT文」を参照してください。
GOBACK文を使用した宣言手続きからの復帰の例を,次に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE1.
PROCEDURE DIVISION.
CALL 'SAMPLE2'. *> 1.
END PROGRAM SAMPLE1.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE2.
>>TURN EC-SIZE CHECKING ON
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A PIC 9 VALUE 9.
01 B PIC 9 VALUE 0.
01 C PIC 9.
PROCEDURE DIVISION.
DECLARATIVES.
USE-1 SECTION.
USE AFTER EXCEPTION CONDITION EC-ALL. *> 3.
DISPLAY 'GOBACK実行'.
GOBACK. *> 4.
END DECLARATIVES.
:
DIVIDE A BY B GIVING C. *> 2.
EXIT PROGRAM.
END PROGRAM SAMPLE2.-
プログラム「SAMPLE1」中のCALL文で,プログラム「SAMPLE2」を呼び出します。
-
プログラム「SAMPLE2」中のDIVIDE文で,例外が検出されます。
-
例外宣言手続きが実行されます。
-
GOBACK文によって,宣言手続きから呼び出し元のプログラム「SAMPLE1」のCALL文の次の行へ復帰します。