21.7.2 EXCEPTION-OBJECT

例外オブジェクトが引き起こされると,そのオブジェクト参照がEXCEPTION-OBJECTにセットされます。宣言手続き中でEXCEPTION-OBJECTを参照すると,引き起こされたオブジェクトへの参照を取得できます。

EXCEPTION-OBJECTの詳細については,マニュアル「COBOL2002 言語 標準仕様編 4.3.2(5) EXCEPTION-OBJECT」を参照してください。

EXCEPTION-OBJECTの規則
  • 例外オブジェクトが引き起こされていない場合,または例外名による例外が引き起こされた場合,EXCEPTION-OBJECTにはNULLがセットされます。
  • EXCEPTION-OBJECTは,値の参照およびクリアだけができます。値の代入はできません。
  • EXCEPTION-OBJECTは,外部属性を持つオブジェクト参照データ項目で,実行単位に一つだけ存在します。
使用例
EXCEPTION-OBJECTの使用例を,次に示します。

      IDENTIFICATION DIVISION.
      PROGRAM-ID. SAMPLE.

      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      REPOSITORY.
      CLASS EXCEPT-CLASS.

      DATA DIVISION.
      WORKING-STORAGE SECTION.
      01 OBJ USAGE OBJECT REFERENCE EXCEPT-CLASS.

      PROCEDURE DIVISION.
      DECLARATIVES.
      EXCEPTION-HANDLER SECTION.
          USE AFTER EXCEPTION OBJECT EXCEPT-CLASS. *> 2.
          INVOKE EXCEPTION-OBJECT 'SAMPLEMETHOD'.
      END DECLARATIVES.

          INVOKE EXCEPT-CLASS 'NEW' RETURNING  OBJ.
          RAISE  OBJ. *> 1.

      END PROGRAM SAMPLE.


      IDENTIFICATION DIVISION.
      CLASS-ID. EXCEPT-CLASS INHERITS BASE.

      ENVIRONMENT DIVISION.
      CONFIGURATION SECTION.
      REPOSITORY.
      CLASS BASE.
      IDENTIFICATION DIVISION.
      OBJECT.
     
      IDENTIFICATION DIVISION.

      METHOD-ID. SAMPLEMETHOD.
      PROCEDURE DIVISION.

          DISPLAY 'EXCEPTION-OBJECTの使用例'.

      END METHOD SAMPLEMETHOD.
      END OBJECT.
      END CLASS EXCEPT-CLASS.

  1. プログラム「SAMPLE」中のRAISE文に,オブジェクト参照一意名が指定されているため,例外オブジェクトが引き起こされます。
  2. 例外宣言手続き内で,INVOKE文にEXCEPTION-OBJECTが指定されているため,例外オブジェクト(OBJ)を参照できます。SAMPLEMETHODが実行されます。