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文の次の行へ復帰します。