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

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

8.8.1 文字列型

(1)IDLマッピング

 IDL言語で文字列型stringを指定した場合、以下のデータ型で宣言します。

  サイズ指定あり:  PIC X(n) 
  サイズ指定なし:  CORBA-STRINGクラス

 以降では、以下のIDL定義例をもとに説明します。

IDL言語

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

OOCOBOL

   IDENTIFICATION DIVISION. 
   PROGRAM-ID. "ODSAMPLE-STRINGTEST-OP1".
  *
   ENVIRONMENT DIVISION. 
  *
   DATA DIVISION. 
   WORKING-STORAGE SECTION. 
   COPY  CORBA--COPY.
   COPY  COSNAMING--COPY.
   COPY  SIMPLE--COPY.
   .
   01 OBJ  USAGE OBJECT REFERENCE CORBA-OBJECT.
  *inパラメタ
   01 STR1   PIC X(50). 
  *outパラメタ
   01 STR2   USAGE OBJECT REFERENCE CORBA-STRING.
  *inoutパラメタ
   01 STR3   USAGE OBJECT REFERENCE CORBA-STRING.
  *復帰値
   01 STR-RET  USAGE OBJECT REFERENCE CORBA-STRING.
  *
   PROCEDURE DIVISION. 
   INVOKE OBJ "ODSAMPLE-STRINGTEST-OP1" 
          USING  STR1
                 STR2
                 STR3
          RETURNING  STR-RET.

(2)クライアントアプリケーション例

 クライアントアプリケーションでは、文字列型のパラメタとして以下のデータ項目を使用します。

  inパラメタ    : PIC X(n) (サイズ指定あり)
  outパラメタ   : CORBA-STRING(クラス)
  inoutパラメタ : CORBA-STRING(クラス)
  復帰値        : CORBA-STRING(クラス)

 以下にクライアントアプリケーション例を以下に示します。

   IDENTIFICATION  DIVISION. 
   PROGRAM-ID.     "SIMPLE_C".
  *
   ENVIRONMENT     DIVISION. 
   CONFIGURATION   SECTION. 
   REPOSITORY. 
       COPY  CORBA--REP.
       COPY  SIMPLE--REP.
       . 
   SPECIAL-NAMES. 
       SYMBOLIC CONSTANT
       COPY  CORBA--CONST.
       COPY  SIMPLE--CONST.
       . 
  *
   DATA             DIVISION. 
   WORKING-STORAGE  SECTION. 
   COPY  CORBA--COPY.
   COPY  COSNAMING--COPY.
   COPY  SIMPLE--COPY.
  *inパラメタ
   01 STR1  PIC X(50). 
  *outパラメタ
   01 STR2  USAGE OBJECT REFERENCE CORBA-STRING.
  *inoutパラメタ
   01 STR3  USAGE OBJECT REFERENCE CORBA-STRING.
  *復帰値
   01 STR-RET  USAGE OBJECT REFERENCE CORBA-STRING.
  *
   01 OBJ         USAGE OBJECT REFERENCE CORBA-OBJECT.
   01 TARGET-OBJ  USAGE OBJECT REFERENCE ODDEMO-STRINGTEST.
   01 STR-WORK    PIC X(50).
  *
   PROCEDURE DIVISION. 
  *inパラメタの設定
   MOVE    "IN" TO STR1. 
  * inoutパラメタの設定
   INVOKE  CORBA-STRING  "NEW" RETURNING STR3.
   INVOKE  STR3          "SET-VALUE" USING "INOUT".
  *
   INVOKE  ODSAMPLE-STRINGTEST "NARROW" 
           USING      OBJ
           RETURNING  TARGET-OBJ.
  *
   INVOKE  TARGET-OBJ "OP1" 
           USING  STR1
                  STR2
                  STR3
           RETURNING  STR-RET.
  *復帰値の参照
   INVOKE  STR-RET  "GET-VALUE" RETURNING STR-WORK.
   DISPLAY "RETURN : " STR-WORK.
  *outパラメタの参照
   INVOKE  STR2  "GET-VALUE" RETURNING STR-WORK.
   DISPLAY "OUT : " STR-WORK.
  *inoutパラメタの参照
   INVOKE  STR3  "GET-VALUE" RETURNING STR-WORK.
   DISPLAY "INOUT : " STR-WORK.
  END PROGRAM "SIMPLE_C".

(3)サーバアプリケーション例

 サーバアプリケーションでは、文字列型のパラメタとして以下のデータ項目を使用します。

  inパラメタ    : PIC X ANY LENGTH
  outパラメタ   : CORBA-STRING(クラス)
  inoutパラメタ : CORBA-STRING(クラス)
  復帰値        : CORBA-STRING(クラス)

 以下にサーバアプリケーション例を以下に示します。

   CLASS-ID.     ODSAMPLE-STRINGTEST-IMPL.
       INHERITS  ODSAMPLE-STRINGTEST
  *
   ENVIRONMENT   DIVISION. 
   CONFIGURATION SECTION. 
   REPOSITORY. 
       COPY  CORBA--REP.
       COPY  SIMPLE--REP.
       . 
   SPECIAL-NAMES. 
       SYMBOLIC CONSTANT
       COPY  CORBA--CONST.
       COPY  SIMPLE--CONST.
       . 
  *
   OBJECT.
   DATA             DIVISION. 
   WORKING-STORAGE  SECTION.
   COPY  CORBA--COPY.
   COPY  SIMPLE--COPY.
  *
   PROCEDURE  DIVISION. 
   METHOD-ID  OP1 OVERRIDE.
  *
   DATA             DIVISION. 
   WORKING-STORAGE  SECTION.
   01 OP-NAME    PIC X(50).
   01 STR-WORK1  PIC X(50).
   01 STR-WORK2  PIC X(50).
  *
   LINKAGE SECTION.
   01 STR1    PIC X ANY LENGTH.
   01 STR2    USAGE OBJECT REFERENCE   CORBA-STRING.
   01 STR3    USAGE OBJECT REFERENCE   CORBA-STRING.
   01 RESULT  USAGE OBJECT REFERENCE   CORBA-STRING.
  *
   PROCEDURE DIVISION.
             USING  STR1
                    STR2
                    STR3
             RETURNING RESULT.
  *outパラメタの設定
   INVOKE  CORBA-STRING "NEW"  RETURNING STR2.
   INVOKE  STR2         "SET-VALUE" USING "OP1:OUT".
  *inoutパラメタの参照/設定
   MOVE "OP1:" TO OP-NAME.
   INVOKE  STR3  "GET-VALUE" RETURNING STR-WORK1.
   STRING  OP-NAME   DELIMITED BY SIZE
           STR-WORK1 DELIMITED BY SIZE
           INTO      STR-WORK2.
   INVOKE  STR3  "SET-VALUE" USING STR-WORK2.
  *復帰値の設定
   INVOKE  CORBA-STRING  "NEW" RETURNING RESULT.
   INVOKE  RESULT        "SET-VALUE" USING "OP1:RESULT OK".
  *
   END  METHOD OP1.
   END  OBJECT.
   END  CLASS  ODSAMPLE-STRINGTEST-IMPL.

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

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