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

第7章 アプリケーションの開発(COBOL)> 7.5 データ型に対するマッピング

7.5.2 ワイド文字列型

(1)IDLマッピング

 IDL言語でワイド文字列型wstringを指定した場合、COBOLではPOINTERでデータ宣言します。
 以降では、以下のIDL定義例をもとに説明します。

IDL言語

  module ODsample{
      interface  wstringtest{
         wstring op1(in wstring str1, out wstring str2, inout wstring str3); 
      };
  };

COBOL

   IDENTIFICATION DIVISION. 
   PROGRAM-ID. "ODSAMPLE-WSTRINGTEST-OP1".
   ENVIRONMENT DIVISION. 
   DATA DIVISION. 
   WORKING-STORAGE SECTION. 
   COPY CONST IN CORBA. 
  *オブジェクトリファレンス
    01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. 
  * inパラメタ
    01 STR1 USAGE POINTER. 
  * outパラメタ
    01 STR2 USAGE POINTER. 
  * inoutパラメタ
    01 STR3 USAGE POINTER. 
  *例外情報
    01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 
  *復帰値
    01 RET  USAGE POINTER. 

   PROCEDURE DIVISION. 

    CALL "ODSAMPLE-WSTRINGTEST-OP1" USING
          ORB
          STR1
          STR2
          STR3
          ENV 
          RET.

(2)クライアントアプリケーションで扱うパラメタ

 クライアントアプリケーションのパラメタの扱いについて、以下に示します。

パラメタ

サーバへ渡すパラメタ

サーバから渡されたパラメタ

in

CORBA-WSTRING-SET関数を使用して、文字列+終端文字'\0\0'分の領域獲得と文字列設定を行います。

inout

(inパラメタと同じ)

領域はスタブで自動的に獲得されます。

out
復帰値

(inoutパラメタと同じ)

注意事項

 クライアントおよびスタブで獲得した領域は、不要になった時点でCORBA-FREE関数で解放する必要があります。

 以下にクライアントアプリケーションでのDATA DIVISIONおよびPROCEDURE DIVISIONの処理例を示します。

  DATA DIVISION. 
     WORKING-STORAGE SECTION. 
     COPY CONST IN CORBA. 
      01 COPY ORB IN CORBA REPLACING CORBA-ORB BY ORB. 
      01 STR1 USAGE POINTER. 
      01 STR2 USAGE POINTER. 
      01 STR3 USAGE POINTER. 
      01 RET USAGE POINTER. 
      01 COPY ENVIRONMENT IN CORBA REPLACING CORBA-ENVIRONMENT BY ENV. 
      01 RET  USAGE POINTER. 
      01 COPY LONG IN CORBA REPLACING CORBA-LONG BY LSIZE. 
      01 STR-WORK PIC N(30). 

     PROCEDURE DIVISION. 
  * inパラメタの設定
      MOVE N"イン" TO STR-WORK. 
      COMPUTE LSIZE = FUNCTION LENGTH(STR-WORK). 
      CALL "CORBA-WSTRING-SET" USING
            STR1 
            LSIZE 
            STR-WORK. 
  * inoutパラメタの設定
      MOVE N"インアウト" TO STR-WORK. 
      COMPUTE LSIZE = FUNCTION LENGTH(STR-WORK). 
      CALL "CORBA-WSTRING-SET" USING
            STR2 
            LSIZE 
            STR-WORK. 
      CALL "ODSAMPLE-WSTRINGTEST-OP1" USING
            ORB
            STR1
            STR2
            STR3
            ENV
            RET. 

  * 復帰値用領域の解放

      CALL "CORBA-FREE" USING
            RET. 
  * inパラメタ用領域の解放
      CALL "CORBA-FREE" USING
            STR1. 
  * outパラメタ用領域の解放
      CALL "CORBA-FREE" USING
            STR2. 
  * inoutパラメタ用領域の解放
      CALL "CORBA-FREE" USING
            STR3.

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

Copyright 2006 FUJITSU LIMITED