ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

6.6 クライアントアプリケーションの例外処理

クライアントアプリケーションは、サーバアプリケーションの処理が正常終了したか、異常終了したかを知ることができます。また、異常終了した場合は、システムで異常終了したか、サーバアプリケーションで異常終了したかを知ることができます。前者をシステム例外、後者をユーザ例外と呼びます。
メソッド呼出し時に指定したCORBA-ENVIRONMENT構造体にエラー情報が格納されます。CORBA-ENVIRONMENT構造体は、COBOL登録集ENVIRONMENT.cblを参照してください。
MAJORには、以下の値が設定されます。

(1)システム例外

次に示すようなシステム例外の値が設定されます。システム例外で通知されるデータ型は文字列であり、文字列をCORBA-EXCEPTION-ID関数でCORBA-ENVIRONMENT構造体から取り出します。
システム例外を以下に示します。例外の意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。例外の文字列は、COBOL登録集(EX-で始まる原文)を参照してください。

例外情報

例外コード

BAD_CONTEXT

EX-CORBA-STEXCEP-BAD-CONTEXT

BAD_INV_ORDER

EX-CORBA-STEXCEP-BAD-INV-ORDER

BAD_OPERATION

EX-CORBA-STEXCEP-BAD-OPERATION

BAD_PARAM

EX-CORBA-STEXCEP-BAD-PARAM

BAD_QOS

EX-CORBA-STEXCEP-BAD-QOS

BAD_TYPECODE

EX-CORBA-STEXCEP-BAD-TYPECODE

CODESET_INCOMPATIBLE

EX-CORBA-STEXCEP-CODESET-INCOM(注)

COMM_FAILURE

EX-CORBA-STEXCEP-COMM-FAILURE

DATA_CONVERSION

EX-CORBA-STEXCEP-DATA-CONVERSI(注)

FREE_MEM

EX-CORBA-STEXCEP-FREE-MEM

IMP_LIMIT

EX-CORBA-STEXCEP-IMP-LIMIT

INITIALIZE

EX-CORBA-STEXCEP-INITIALIZE

INTERNAL

EX-CORBA-STEXCEP-INTERNAL

INTF_REPOS

EX-CORBA-STEXCEP-INTF-REPOS

INV_FLAG

EX-CORBA-STEXCEP-INV-FLAG

INV_IDENT

EX-CORBA-STEXCEP-INV-IDENT

INV_OBJREF

EX-CORBA-STEXCEP-INV-OBJREF

INV_POLICY

EX-CORBA-STEXCEP-INV-POLICY

MARSHAL

EX-CORBA-STEXCEP-MARSHAL

NO_IMPLEMENT

EX-CORBA-STEXCEP-NO-IMPLEMENT

NO_MEMORY

EX-CORBA-STEXCEP-NO-MEMORY

NO_PERMISSION

EX-CORBA-STEXCEP-NO-PERMISSION

NO_RESOURCES

EX-CORBA-STEXCEP-NO-RESOURCES

NO_RESPONSE

EX-CORBA-STEXCEP-NO-RESPONSE

OBJ_ADAPTER

EX-CORBA-STEXCEP-OBJ-ADAPTER

PERSIST_STORE

EX-CORBA-STEXCEP-PERSIST-STORE

REBIND

EX-CORBA-STEXCEP-REBIND

TIMEOUT

EX-CORBA-STEXCEP-TIMEOUT

TRANSIENT

EX-CORBA-STEXCEP-TRANSIENT

UNKNOWN

EX-CORBA-STEXCEP-UNKNOWN

INVALID_TRANSACTION

EX-CORBA-STEXCEP-INVALID-TRANS(注)

TRANSACTION_MODE

EX-CORBA-STEXCEP-TRANSACTION-M(注)

TRANSACTION_REQUIRED

EX-CORBA-STEXCEP-TRANSACTION-R(注)

TRANSACTION_ROLLEDBACK

EX-CORBA-STEXCEP-TRANSACTION-R(注)

TRANSACTION_UNAVAILABLE

EX-CORBA-STEXCEP-TRANSACTION-U(注)

COBOLの30文字制限のため、短縮名となります。


システム例外発生時は、CORBA-ENVIRONMENT構造体のMINORにマイナーコードが設定されます。マイナーコードの値については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。

マイナーコードを表示する場合は、CORBA-ENVIRONMENT構造体のMINORを作業領域に転送してから表示させてください。


(2)ユーザ例外

ユーザ例外でも文字列でエラー情報が通知されるため、CORBA-EXCEPTION-ID関数でCORBA-ENVIRONMENT構造体から取り出します。また、IDLで定義したユーザ定義情報の詳細については、CORBA-EXCEPTION-VALUEでCORBA-ENVIRONMENT構造体から取り出します。


(3)例外情報の獲得

例外情報を獲得する例を以下に示します。

  WORKING-STORAGE SECTION.
  01 WK-ENV PIC 9(10) COMP-5.
  LINKAGE SECTION.
  01 COPY ENVIRONMENT  IN  CORBA  REPLACING  CORBA-ENVIRONMENT  BY  ENV.

  * メソッドの呼び出し
       MOVE 100 TO PARAM-1. 
       MOVE 20 TO PARAM-2. 
       CALL "ODDEMO-CALCULATE-CALCULATE" USING
             OBJ
             PARAM-1
             PARAM-2
             ENV
             RESULT. 
       EVALUATE TRUE
             WHEN CORBA-NO-EXCEPTION OF MAJOR OF ENV
                  CONTINUE
  * システム例外のエラー処理
             WHEN CORBA-SYSTEM-EXCEPTION OF MAJOR OF ENV
                  MOVE FUNCTION LENG (ID) TO STRING-LENGTH
                  CALL "CORBA-STRING-GET" USING
                        IDL-ID OF ENV
                        STRING-LENGTH
                        ID
  * マイナーコード取得処理
                        MOVE MINOR OF ENV TO WK-ENV
                        DISPLAY "MINOR OF ENV :" MINOR OF WK-ENV.
                       ... 
  * ユーザ例外のエラー処理
             WHEN CORBA-USER-EXCEPTION OF MAJOR OF ENV
                  MOVE FUNCTION LENG (UEXC) TO STRING-LENGTH
                  CALL "CORBA-STRING-GET" USING
                        IDL-ID OF ENV
                        STRING-LENGTH
                        UEXC
        END-EVALUATE.