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

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

7.2.4 パラメタの組み立て

(1)パラメタリストの生成

 CORBA-ORB-CREATE-LISTメソッドにより、サーバアプリケーションに渡すパラメタを格納するための領域を保持するリストオブジェクトを生成します。このとき、パラメタとして、何個のパラメタを格納するかを指定します。その結果、NVListオブジェクトリファレンスが返されます。NVListオブジェクトインタフェースの詳細については、“NVListオブジェクト”を参照してください。

     DATA DIVISION.
     WORKING-STORAGE SECTION.
     01 COPY ANY IN CORBA REPLACING CORBA-ANY BY PARAM-ANY.
     01 COPY PARDESCRIPTIONSEQ IN CORBA REPLACING
             CORBA-PARDESCRIPTIONSEQ BY PARAMS.
     01 COPY NVLIST IN CORBA REPLACING CORBA-NVLIST BY ARG-LIST.

     LINKAGE SECTION.
     01 COPY CONTAINED-DESCRIPTION IN CORBA REPLACING
             CORBA-CONTAINED-DESCRIPTION BY TMP-DESC.
     01 COPY OPERATIONDESCRIPTION IN CORBA REPLACING
             CORBA-OPERATIONDESCRIPTION BY TMP-OPR-DESC.

    PROCEDURE DIVISION. 
  * Contained-Description構造体からパラメタ構造体の抽出
     SET ADDRESS OF TMP-DESC TO DESCRIPTION. 
     MOVE IDL-VALUE OF TMP-DESC TO PARAM-ANY. 
  * パラメタ情報の抽出
     SET ADDRESS OF TMP-OPR-DESC TO ANY-VALUE OF PARAM-ANY. 
     MOVE PARAMETERS OF TMP-OPR-DESC TO PARAMS. 
     MOVE LENGTH OF PARAMS TO NUM. 

  * リストオブジェクトの生成
     CALL "CORBA-ORB-CREATE-LIST" USING
          ORB
          NUM
          ARG-LIST
          ENV
          RET-VAL.

(2)パラメタリストの設定

 CORBA-NVLIST-ADD-ITEMメソッドにより、サーバアプリケーションに渡すパラメタをリストオブジェクトに設定します。パラメタとして、CORBA-NVLISTオブジェクトリファレンス、サーバアプリケーションのパラメタの名前、型、値および長さを設定します。

     DATA DIVISION.
     WORKING-STORAGE SECTION.
     01 01 STRING-POINTER USAGE POINTER.
     01 COPY TYPECODE IN CORBA REPLACING CORBA-TYPECODE BY TMP-TYPE.
     01 01 PARAM-POINTER USAGE POINTER.
     01 COPY FLAGS IN CORBA REPLACING CORBA-FLAGS BY FLAG.
     01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY RET-VAL.

    PROCEDURE DIVISION. 
      MOVE FUNCTION ADDR(PARAMS) TO SEQ-POINTER. 
      MOVE "in_p" TO STR-BUF. 
      MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH. 
      CALL "CORBA-STRING-SET" USING
                 STRING-POINTER
                 STRING-LENGTH
                 STR-BUF. 
      MOVE FUNCTION LENG (TC-LONG) TO STRING-LENGTH. 
      CALL "CORBA-STRING-SET" USING
                 TEMP-BUF
                 STRING-LENGTH
                 TC-LONG. 
      CALL "CORBA-ORB-TYPECODE-FROM-CGEN-TC" USING
                 TEMP-BUF
                 TMP-TYPE. 
      CALL "CORBA-FREE" USING 
                 TEMP-BUF. 
      MOVE 1234 TO IN-P. 
      MOVE FUNCTION ADDR( IN-P ) TO PARAM-POINTER. 
      MOVE LSIZE OF TMPDATA TO NUM. 
      SET CORBA-ARG-IN OF FLAG TO TRUE. 
      CALL "CORBA-NVLIST-ADD-ITEM" USING
                 ARG-LIST
                 STRING-POINTER
                 TMP-TYPE
                 PARAM-POINTER
                 NUM
                 FLAG
                 ENV
                 RET-VAL.

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

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