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

付録J 旧互換機能> J.1 COM/CORBA連携プログラミング> J.1.4 基本データ型の指定方法

J.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

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

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