ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

6.8.10 パラメタ受渡しで使用するデータ型

  クライアント/サーバアプリケーションでパラメタ受渡しに使用するデータ型を以下に示します。

CORBAデータ型

in

out

inout

復帰値

long

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

short

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

unsigned long

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

unsigned short

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

long long

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

float

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

double

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

char

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

wchar

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

octet

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

boolean

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

enum

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

string

bound

TEXT

TEXT

TEXT

TEXT

unbound

STRING

STRING

STRING

STRING

wstring

bound

TEXT

TEXT

TEXT

TEXT

unbound

STRING

STRING

STRING

STRING

any

BY REFERENCE

POINTER

POINTER

POINTER

sequence

BY REFERENCE

POINTER

POINTER

POINTER

struct

固定長

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

可変長

BY REFERENCE

POINTER

POINTER

POINTER

union

固定長

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

可変長

BY REFERENCE

POINTER

POINTER

POINTER

array(配列)

固定長

BY REFERENCE

BY REFERENCE

BY REFERENCE

BY REFERENCE

可変長

BY REFERENCE

POINTER

POINTER

POINTER

Object

BY REFERENCE

POINTER

POINTER

POINTER

TypeCode

BY REFERENCE

POINTER

POINTER

POINTER

注)POINTERは、POINTERがBY REFERENCEで渡されます。
    TEXTは、COBOLの固定長テキストでNULL文字を含みません。
    STRINGは、NULLで終わる可変長文字列のポインタです。


注意事項

(1)NULLポインタの設定について

  サーバアプリケーションでのout, inoutパラメタ、復帰値、およびクライアントアプリケーションでのin,inoutパラメタでは、文字列型、シーケンス型、構造体、共用体、配列データ型でNULLポインタを設定することができません。

(2)データ型の扱いについて
  • 固定長sequenceの場合、lengthにmaximumを超える値を設定した場合、システム例外が通知されます。また、固定長のsequenceの変数は以下のようにマッピングされます。

    IDLファイル

      module mod {
          typedef sequence<long,10> seq_fix; 
      };

    COBOL

       DATA DIVISION.
       WORKING-STORAGE SECTION.
         01 MOD-SEQ-FIX.
            02 COPY LONG IN CORBA REPLACING CORBA-LONG BY SEQ-MAXIMUM.
            02 COPY LONG IN CORBA REPLACING CORBA-LONG BY SEQ-LENGTH.
            02 SEQ-BUFFER USAGE IS POINTER.
            02 FILLER OCCURS 10.
               03 COPY LONG IN CORBA REPLACING CORBA-LONG BY SEQ-VALUE.
  • 可変長sequenceの場合、sequenceの変数は以下のようにマッピングされます。各要素にアクセスする場合、CORBA-SEQUENCE-ELEMENT-SET関数、CORBA-SEQUENCE-ELEMENT-GET関数を使用します。

    IDLファイル

      module mod {
          typedef sequence<long> seq_val;
      };

    COBOL

       DATA DIVISION.
       WORKING-STORAGE SECTION.
         01 MOD-SEQ-VAL.
            02 COPY LONG IN CORBA REPLACING CORBA-LONG BY SEQ-MAXIMUM.
            02 COPY LONG IN CORBA REPLACING CORBA-LONG BY SEQ-LENGTH.
            02 SEQ-BUFFER USAGE IS POINTER.
  • arrayの場合、arrayの各要素は以下のようにマッピングされます。

    IDLファイル

      module mod {
          typedef long S_array[2][3][4];
      };

    COBOL

       DATA DIVISION.
       WORKING-STORAGE SECTION.
         01 MOD-S-ARRAY.
            02 FILLER OCCURS 2.
               03 FILLER OCCURS 3.
                  04 FILLER OCCURS 4.
                     05 COPY LONG IN CORBA REPLACING CORBA-LONG BY MOD-S-ARRAY-V.
  • arrayの場合、例外処理は以下のようにマッピングされます。

    IDLファイル

      module mod {
          exception foo {
              long ex_val;
          };
      };

    COBOL

       DATA DIVISION.
       WORKING-STORAGE SECTION.
         01 EX-MOD-FOO PIC X(15) VALUE "IDL:mod/foo:1.0".
         01 MOD-FOO.
            02 COPY LONG IN CORBA REPLACING CORBA-LONG BY EX-VAL.
(3)COBOLとの整合性について
  • floatは、以下の構文で対応します。
    [USAGE IS] [COMP-1] : 4 Byte

  • doubleは、以下の構文で対応します。
    [USAGE IS] [COMP-2] : 8 Byte

  • constは、以下の構文で対応します。
    OMG仕様
    >> CONSTANT constant-name IS literal
    COBOL仕様
    SYMBOLIC CONSTANT
    { 記号定数-1 IS定数-1 }

  • typedefは、以下の構文で対応します(基本型のみ)。
    CORBA登録集として以下の定義を用意します(longの場合)。
    long-type usage(local long type)/
    ユーザはCOPY句でtypedefを使用します。
    WORKING STORAGE SECTION.
    :
    01 COPY LONG IN CORBA
    REPLACING long-type WITH ws--long-1
    01 COPY LONG IN CORBA
    REPLACING long-type WITH ws--long-2

  • 構造体等のtypedefは、COBOLで未サポートのため使用できません。