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