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

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

8.2.4 インタフェースリポジトリからサーバアプリケーション情報の獲得

 インタフェースリポジトリには、IDLで定義されたモジュール名、インタフェース名、オペレーション名およびパラメタが階層構造で格納されます。サーバアプリケーションの情報を獲得するため、以下の手順で検索を行います。

(1)CORBA-INTERFACEDEFオブジェクトリファレンスの獲得

 インタフェースリポジトリからサーバアプリケーションの情報を獲得するためには、INTERFACEDEFオブジェクトのオブジェクトリファレンスが必要です。CORBA-OBJECT-GET_INTERFACE_DEFメソッドを使用します。

   DATA DIVISION.
   WORKING-STORAGE        SECTION.
   01 INTF-OBJ            OBJECT REFERENCE CORBA-OBJECT.
   01 INTF                OBJECT REFERENCE CORBA-INTERFACEDEF.

  PROCEDURE DIVISION.
* CORBA-INTERFACEDEFオブジェクトリファレンス取得
      INVOKE OBJ "GET_INTERFACE_DEF" RETURNING INTF-OBJ.
      INVOKE CORBA-INTERFACEDEF "NARROW" USING INTF-OBJ
                                         RETURNING INTF.

(2)SEQUENCE-CORBA-CONTAINEDオブジェクトリファレンスの獲得

 CORBA-INTERFACEDEF-LOOKUP_NAMEメソッドにより、サーバアプリケーションが複数もっているメソッドから指定されたメソッドをインタフェースリポジトリから検索します。パラメタとしてサーバアプリケーションのメソッド名を指定します。結果として、指定したメソッド情報が格納されているSEQUENCE-CORBA-CONTAINEDオブジェクトのオブジェクトリファレンスが返されます。

   DATA DIVISION.
   WORKING-STORAGE        SECTION.
   01 DK-TYPE             TYPE             CORBA-DEFINITIONKIND.
   01 CTD-SEQ             OBJECT REFERENCE SEQUENCE-CORBA-CONTAINED.

  PROCEDURE DIVISION.
* SEQUENCE-CORBA-CONTAINEDオブジェクトリファレンス取得
      SET  CORBA-DK_OPERATION OF DK-TYPE TO TRUE.
      INVOKE INTF "LOOKUP_NAME" USING  "calculate"
                                       -1
                                        DK-TYPE
                                        CORBA-FALSE
                                RETURNING CTD-SEQ.

(3)パラメタ情報の獲得

 CORBA-CONTAINED-DESCRIBEメソッドにより、サーバアプリケーションがもっているメソッドのパラメタの情報(パラメタの名前、個数、パラメタの型等)をインタフェースリポジトリから検索します。パラメタとして、CORBA-CONTAINED-DESCRIPTIONオブジェクトリファレンスを指定します。

   DATA DIVISION.
   WORKING-STORAGE        SECTION.
   01 TMP-CTD             OBJECT REFERENCE CORBA-CONTAINED.
   01 CTD-DES             OBJECT REFERENCE CORBA-CONTAINED-DESCRIPTION.

  PROCEDURE DIVISION.
* 指定されたメソッドのパラメタ情報を検索
      INVOKE CTD-SEQ "GET-VALUE" USING 1
                                 RETURNING TMP-CTD.
      INVOKE TMP-CTD "DESCRIBE" RETURNING CTD-DES.

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

All Rights Reserved, Copyright(C) 富士通株式会社 2005