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

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

7.2.5 リクエストの作成

 CORBA-OBJECT-CREATE-REQUESTメソッドにより、リクエストオブジェクトを作成します。リクエストオブジェクトに対して、サーバオブジェクトのオブジェクトリファレンス、NVListオブジェクトリファレンス、後述するNamedValueと呼ぶサーバの処理結果を格納する領域を指定します。この結果として、リクエストオブジェクトのオブジェクトリファレンスが返されます。

     DATA DIVISION.
     WORKING-STORAGE SECTION.
     01 COPY CONTEXT IN CORBA REPLACING CORBA-CONTEXT BY CTX.
     01 COPY REQUEST IN CORBA REPLACING CORBA-REQUEST BY REQ.
     01 COPY NAMEDVALUE IN CORBA REPLACING CORBA-NAMEDVALUE BY RESULT.

    PROCEDURE DIVISION. 
      MOVE FUNCTION ADDR(RESULT) TO PARAM-POINTER. 
      MOVE "calculate" TO STR-BUF. 
      MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH. 
      CALL "CORBA-STRING-SET" USING
              STRING-POINTER 
              STRING-LENGTH 
      STR-BUF. 

      SET CORBA-OUT-LIST-MEMORY OF FLAG TO TRUE. 

      CALL "CORBA-OBJECT-CREATE-REQUEST" USING
              OBJ
              CTX
              STRING-POINTER
              ARG-LIST
              PARAM-POINTER
              REQ
              FLAG
              ENV
              RET-VAL.

 NamedValueは、サーバの処理結果を格納するための領域であり、以下のように定義されています。
 IDLファイルでの定義を以下に示します。

  module CORBA   {
        typedef string                  Identifier;
        enum Flags{
                ARG_IN,
                ARG_OUT,
                ARG_INOUT,
                OUT_LIST_MEMORY,
                IN_COPY_VALUE,
                INV_NO_RESPONSE,
                INV_TERM_ON_ERR,
                RESP_NO_WAIT,
                DEPENDENT_LIST,
                CTX_RESTRICT_SCOPE,
                CTX_DELETE_DESCENDENTS
        };
        struct NamedValue      {
          Identifier    name;       // パラメタの名前
          any           argument;   // パラメタの値
          long          len;        // パラメタの長さ
          Flags         arg_modes;  // パラメタの引き渡し方法(in,out,inout)
        };
  };

 COBOL登録集を以下に示します。

  * NamedValue構造体
       CORBA-NAMED-VALUE.  
  * パラメタの名前
       07  NAME     USAGE   POINTER. 
  * パラメタの値
       07  ARGUMENT. 
           09 ANY-TYPE      USAGE POINTER. 
           09 ANY-VALUE     USAGE POINTER. 
  * パラメタの長さ
       07  LEN      PIC     S9(9) COMP-5. 
  * パラメタの引き渡し方法(in,out,inout) 
       07  ARG-MODES        PIC     9(9) COMP-5. 
           88  CORBA-ARG-IN                 VALUE   1. 
           88  CORBA-ARG-OUT                VALUE   2. 
           88  CORBA-ARG-INOUT              VALUE   4. 
           88  CORBA-OUT-LIST-MEMORY        VALUE   8. 
           88  CORBA-IN-COPY-VALUE          VALUE   16. 
           88  CORBA-INV-NO-RESPONSE        VALUE   32. 
           88  CORBA-INV-TERM-ON-ERR        VALUE   64. 
           88  CORBA-RESP-NO-WAIT           VALUE   128. 
           88  CORBA-DEPENDENT-LIST         VALUE   256. 
           88  CORBA-CTX-RESTRICT-SCOPE     VALUE   512. 
           88  CORBA-CTX-DELETE-DESCENDENTS VALUE   1024.

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

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