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

G.1.4 基本データ型の指定方法

  以下にCORBAとVisual Basicで提供しているデータ型と、Visual Basicでの指定方法を示します。

CORBAデータ型

Visual Basicでの指定方法

基本データ型

整数型

long

Long

short

Integer

unsigned long

Long

unsigned short

Long

浮動小数点型

float

Single

double

Double

文字型

char

Integer

オクテッド型

octet

Integer

ブーリアン型

boolean

Integer

文字列型

string

G.1.4.1 文字列型”参照

列挙型

enum

G.1.4.2 列挙型”参照

any型

any

G.1.4.3 any型”参照

シーケンス型

sequence

G.1.5.1 シーケンス型”参照

構造体

struct

G.1.5.2 構造体”参照

共用体

union

G.1.5.3 共用体”参照

配列

array

G.1.5.4 配列”参照


データ型の注意事項

Visual Basicでのアプリケーション作成時の注意事項

(1) メモリの解放方法

  Visual Basicでのオブジェクトおよびout,inoutパラメタで使用した領域の解放方法を以下に示します。

(2) 配列(sequence型含む)のパラメタの受渡し

  配列(sequence型含む)をパラメタとして受渡しを行う場合、以下の手順で行います。配列宣言でVisual Basic表現とIDL宣言で要素並びに差異があります。

  Visual Basic  Dim a(2,3) As Long
  IDL定義       long a(4,3)

  なお、inパラメタに指定した領域で、値が未設定域である場合は、0が渡されます。


G.1.4.1 文字列型

  固定長、可変長の文字列は、それぞれ、長さ指定のあるStringと、長さ指定のないStringを使用します。なお、固定長の文字列を使用する場合は、IDL定義に“使用する文字数+1”の値を指定する必要があります。
  文字列のVisual Basicでの使用例を以下に示します。

IDL言語
  typedef string<11>    sten;    // 固定長(10文字)のString
  typedef string        sinf;    // 可変長のString
Visual Basic
  Dim sten As String * 11        // 固定長(10文字)のString
  Dim sinf As String             // 可変長のString

G.1.4.2 列挙型

  列挙型はそれぞれの要素を定数として宣言します。列挙型のVisual Basicでの使用例を以下に示します。

IDL言語
  typedef enum EM {red,green,blue}Foo;
Visual Basic
  Global Const red   = 0    // 各要素を定数として宣言 
  Global Const green = 1    // 各要素を定数として宣言
  Global Const blue  = 2    // 各要素を定数として宣言

G.1.4.3 any型

  any型を持つサーバアプリケーションを呼び出す場合は、変数をObject型で宣言し、データ型のオブジェクトリファレンスをCreateType関数またはCreateTypeById関数で検索し、valueやtypeはそのオブジェクトのプロパティとして扱います。any型データのTypeCodeプロパティに値を設定する場合は、サーバにTypeCodeを返すオペレーションを用意し、返された値を設定します。valueプロパティにはデータ型に応じた方法で値を設定します。


(1) any型データにデータを設定する場合

  any型データのVisual Basicで設定する使用例を以下に示します。

IDL言語
  module mod {
      typedef  any  typeany;     // any型
      interface intf {
          TypeCode GetTypeCode();// TypeCodeプロパティに設定するTypeCodeを返す関数
          any op( in any a );    // any型のパラメタを持つop関数
                                 // any型の復帰値
      };
  };
Visual Basic
  Dim factory As Object                       // OLE-CORBAゲートウェイのインスタンス
  Dim obj As Object                           // サーバのオブジェクトリファレンス
  Set factory = CreateObject("CORBA.Factory") // OLE-CORBAゲートウェイの起動
  Set obj = factory.GetObject("example")      // オブジェクトの検索

  Dim anydata As Object          // データ型のリファレンス(パラメタ受渡し用) 
  Dim anydata1 As Object         // データ型のリファレンス(復帰値用) 
  Dim obj3 As Object             // データ型のリファレンス(TypeCode用) 

  Set anydata =factory.CreateType(obj, "typeany") // データ型のリファレンスの検索
  Set obj3= obj.GetTypeCode()                     // TypeCodeオブジェクトの獲得
  anydata.TypeCode = obj3                         // TypeCodeの設定
  anydata.Value = &H80000000                      // データの設定

  anydata1 =obj.op(anydata)                       // op関数の呼び出し

(2) any型データからデータを取り出す場合

  any型データから値を取り出す場合は、any型データのTypeCodeメンバに対してkind関数を呼び出し、データの型を取り出します。取り出したデータ型に対する値をvalueメンバから取り出します。any型データのVisual Basicでの使用例を以下に示します。

Visual Basic
  anydata = obj.op(anydata)              // op関数の呼び出し

  kind = anydata.TypeCode.kind           // TypeCodeの取り出し
  Select Case kind
  Case 2         ‘short                  // データ型がshortの処理
  s = anydata.Value
  Case 15        ‘struct                 // データ型がstructの処理
  l = anydata.Value.d1
  str = anydata.Value.d2
  Case 16 ‘union                         // データ型がunionの処理
  dic = anydata.Value.UNION_d
    Select Case dic
    Case 1
  l = anydata.Value.d1
    Case 2
  str = anydata.Value.d2
    End Select
  End Select