| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) | 
			目次
			索引
			![]()  
		 | 
	
| 第7章 アプリケーションの開発(COBOL) | 
 クライアントアプリケーションは、サーバアプリケーションの処理が正常終了したか異常終了したかを知ることができます。また、異常終了した場合には、システムで異常終了したかサーバアプリケーションで異常終了したかを知ることができます。前者をシステム例外、後者をユーザ例外と呼びます。
 メソッド呼出し時に指定したCORBA-ENVIRONMENT構造体にエラー情報が格納されます。CORBA-ENVIRONMENT構造体はCOBOL登録集ENVIRONMENT.cblを参照してください。
 MAJORには以下の値が設定されます。
CORBA-NO-EXCEPTION : 正常終了 CORBA-SYSTEM-EXCEPTION : システム例外 CORBA-USER-EXCEPTION : ユーザ例外
次に示すようなシステム例外の値が設定されます。システム例外で通知されるデータ型は文字列であり、文字列を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-EXCEPTION-ID関数でCORBA-ENVIRONMENT構造体から取り出します。また、IDLで定義したユーザ定義情報の詳細についは、CORBA-EXCEPTION-VALUEでCORBA-ENVIRONMENT構造体から取り出します。
例外情報を獲得する例を以下に示します。
  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
  * マイナーコード取得処理
                        DISPLAY "MINOR OF ENV :" MINOR OF 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.   
			目次
			索引
			![]()  
		 |