Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第7章 アプリケーションの開発(OOCOBOL)> 7.2 クライアントアプリケーションのプログラミング(動的起動インタフェース)

7.2.1 初期化

 CORBAの初期化メソッドCORBA-ORB_INITを呼び出し初期化処理を行います。当メソッドの結果として、ORBのオブジェクトリファレンスが返されます。このオブジェクトリファレンスは、以降で呼び出すORBインタフェースを使用する場合に指定します。環境部(ENVIRONMENT DIVISION)およびデータ部(DATA DIVISION)を定義します。
 ここでは、IDLファイル名を"simple.idl"として説明します。IDLコンパイラが出力する登録集ファイル名は、"simple--rep.cbl", "simple--const.cbl","simple--copy.cbl"となります。

 IDENTIFICATION         DIVISION.
 PROGRAM-ID.            "SIMPLE_C"
*
 ENVIRONMENT            DIVISION.
 CONFIGURATION          SECTION.
 REPOSITORY.
* ObjectDirectorの標準登録集(リポジトリ宣言用)
     COPY               CORBA--REP.
* ネーミングサービスの標準登録集(リポジトリ宣言用)
     COPY               COSNAMING--REP.
* インタフェースリポジトリの標準登録集(リポジトリ宣言用)
     COPY               INTERFACEREP--REP.
* IDLコンパイラが出力した登録集(リポジトリ宣言用)
     COPY               SIMPLE--REP.
    .
 SPECIAL-NAMES.
     SYMBOLIC CONSTANT
* ObjectDirectorの標準登録集(定数宣言用)
     COPY               CORBA--CONST.
* ネーミングサービスの標準登録集(定数宣言用)
     COPY               COSNAMING--CONST.
* インタフェースリポジトリの標準登録集(定数宣言用)
     COPY               INTERFACEREP--CONST.
* IDLコンパイラが出力した登録集(定数宣言用)
     COPY               SIMPLE--CONST.
     .
*
 DATA                   DIVISION.
 WORKING-STORAGE        SECTION.
* ObjectDirectorの標準登録集(データ型宣言用)
     COPY                CORBA--COPY.
* ネーミングサービスの標準登録集(データ型宣言用)
     COPY                COSNAMING--COPY.
* インタフェースリポジトリの標準登録集(データ型宣言用)
     COPY                INTERFACEREP--COPY.
* IDLコンパイラが出力した登録集(データ型宣言用)
     COPY                SIMPLE--COPY.
*
 01 ORB                   OBJECT REFERENCE CORBA-ORB.
 01 OBJ                   OBJECT REFERENCE CORBA-OBJECT.
 01 NAMING-CONTEXT        OBJECT REFERENCE COSNAMING-NAMINGCONTEXT.
 01 NAME                  TYPE             COSNAMING-NAME.
 01 NAME-COMPONENT        OBJECT REFERENCE COSNAMING-NAMECOMPONENT.
 01 NAME-ID               OBJECT REFERENCE CORBA-STRING.
 01 NAME-KIND             OBJECT REFERENCE CORBA-STRING.
 01 NAME-LEN              TYPE             CORBA-UNSIGNED-LONG.
 01 NAME-ID-VALUE         PIC   X(18)  VALUE     "ODdemo::calculator".
 01 APL-NAME              PIC   X(8)   VALUE     "Simple_c".
 01 NAME-KIND-VALUE       PIC   X(1)   VALUE     SPACE.
 01 TARGET                OBJECT REFERENCE CORBA-OBJECT.
* インタフェースリポジトリに使用するパラメタ
 01  IR-PARAM.
   03 INTF-OBJ            OBJECT REFERENCE CORBA-OBJECT.
   03 INTF                OBJECT REFERENCE CORBA-INTERFACEDEF.
   03 CTD-SEQ             OBJECT REFERENCE SEQUENCE-CORBA-CONTAINED.
   03 TMP-CTD             OBJECT REFERENCE CORBA-CONTAINED.
   03 CTD-DES             OBJECT REFERENCE CORBA-CONTAINED-DESCRIPTION.
   03 DK-TYPE             TYPE             CORBA-DEFINITIONKIND.
   03 OPE-ANY             OBJECT REFERENCE CORBA-ANY.
   03 OPE-DES             OBJECT REFERENCE CORBA-OPERATIONDESCRIPTION.
   03 PARA-SEQ            TYPE             CORBA-PARDESCRIPTIONSEQ.
   03 PARAM-COUNT         TYPE             CORBA-LONG.
   03 PARA-DES1           OBJECT REFERENCE CORBA-PARAMETERDESCRIPTION.
   03 PARA-DES2           OBJECT REFERENCE CORBA-PARAMETERDESCRIPTION.
   03 STR-1               OBJECT REFERENCE CORBA-STRING.
   03 NAME1               PIC    X(40).
   03 STR-2               OBJECT REFERENCE CORBA-STRING.
   03 NAME2               PIC    X(40).
* リクエスト作成のパラメタ
 01  REQUEST-PARAM.
   03 REQ                 OBJECT REFERENCE CORBA-REQUEST.
   03 RESULT-TYPE         OBJECT REFERENCE CORBA-TYPECODE.
   03 NVLIST              OBJECT REFERENCE CORBA-NVLIST.
   03 EXCEPTIONLIST       OBJECT REFERENCE CORBA-EXCEPTIONLIST.
   03 TMP-EXCEP           TYPE             CORBA-EXCDESCRIPTIONSEQ.
   03 EX-DES              OBJECT REFERENCE CORBA-EXCEPTIONDESCRIPTION.
   03 EX-TYPE             OBJECT REFERENCE CORBA-TYPECODE.
   03 NAMEDVALUE          OBJECT REFERENCE CORBA-NAMEDVALUE.
   03 TMP-NAMEDVALUE      OBJECT REFERENCE CORBA-NAMEDVALUE.
   03 FLG                 TYPE             CORBA-FLAGS.
   03 ANY-A               OBJECT REFERENCE CORBA-ANY.
   03 ANY-B               OBJECT REFERENCE CORBA-ANY.
   03 ANY-RESULT          OBJECT REFERENCE CORBA-ANY.
* 例外パラメタ
 01 EXCEPTION-PARAM.
   03 EXCEPTION-ID        OBJECT REFERENCE CORBA-STRING.
   03 EXCEPTION-ID-VALUE  PIC    X(50).
   03 API-NAME            PIC    X(50).
   03 TMP-ENV             OBJECT REFERENCE CORBA-ENVIRONMENT.
   03 ANY-EXC             OBJECT REFERENCE CORBA-ANY.
   03 EXCEP               OBJECT REFERENCE CORBA-EXCEPTION.
   03 EXC-STR             OBJECT REFERENCE CORBA-STRING.
   03 EXCEP-ID            PIC    X(40).
* 復帰値
 01 CALCULATE-RESULT    TYPE ODDEMO-CALCULATOR-RESULT.
*
 PROCEDURE DIVISION.
*
 DECLARATIVES.
 ERR SECTION.
     USE EXCEPTION CORBA-EXCEPTION.
     SET EXCEPTION-ID TO IDL-ID OF EXCEPTION-OBJECT AS CORBA-EXCEPTION.
     INVOKE EXCEPTION-ID "GET-VALUE" RETURNING EXCEPTION-ID-VALUE.
     DISPLAY API-NAME " is failed.".
     DISPLAY "Exception-id is " EXCEPTION-ID-VALUE.
     EXIT PROGRAM.
 END-ERR.
 END DECLARATIVES.
*
     INVOKE CORBA "ORB_INIT" USING APL-NAME FJ-OM_ORBID RETURNING ORB.

 例外処理については、“クライアントアプリケーションの例外処理”を参照してください。


目次 索引 前ページ次ページ

Copyright 2005 FUJITSU LIMITED