COBOL2002 ユーザーズガイド

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

22.4.2 宣言手続きからの復帰

宣言手続きの実行中に次の文を使用すると,宣言手続きの実行を中断して,制御を復帰できます。

<この項の構成>
(1) RESUME文
(2) GOBACK文,EXIT文

(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.
  1. DIVIDE文で,ゼロによる除算の例外EC-SIZE-ZERO-DIVIDEが検出されます。
  2. 例外名EC-SIZE-ZERO-DIVIDEを指定した例外宣言手続きが実行されます。
  3. RESUME文によって宣言手続きから復帰します。RESUME文にNEXT STATEMENTが指定されているため,例外が引き起こされた次の行(COMPUTE文)に制御が移ります。
  4. COMPUTE文で,算術けたあふれの例外EC-SIZE-TRUNCATIONが検出されます。
  5. 例外名EC-SIZE-TRUNCATIONを指定した例外宣言手続きが実行されます。
  6. RESUME文によって宣言手続きから復帰します。RESUME文に手続き名が指定されているため,「復帰手続き」に制御が移ります。
  7. 手続きが実行され,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.
  1. プログラム「SAMPLE1」中のCALL文で,プログラム「SAMPLE2」を呼び出します。
  2. プログラム「SAMPLE2」中のDIVIDE文で,例外が検出されます。
  3. 例外宣言手続きが実行されます。
  4. GOBACK文によって,宣言手続きから呼び出し元のプログラム「SAMPLE1」のCALL文の次の行へ復帰します。