WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

動的フィールド参照の作成

REFERENCE 型の変数は、メッセージ・ツリー内をナビゲートするための動的参照として使用できます。この動作は、メッセージ・カーソルまたは変数ポインターの動作とよく似ています。

一般に、反復構造にアクセスするときには、配列指標よりも参照変数を使用するほうが、簡単で効率的です。 参照変数は、フィールド参照が受け入れられているなら受け入れられます。また、メッセージ・ツリーの詳細な操作ができるように、ステートメントと関数のセットが付属しています。

動的参照は、宣言してからでなければ使用できません。 動的参照は、1 つのステートメント内で宣言し初期化されます。

このトピックのすべての例では、サンプル・メッセージを入力メッセージとして使用します。 以下は、参照を作成して使用する方法を示しています。

-- Declare the dynamic reference
DECLARE myref REFERENCE TO OutputRoot.XMLNS.Invoice.Purchases.Item[1];

--  Continue processing for each item in the array
WHILE LASTMOVE(myref)=TRUE 
DO
-- Add 1 to each item in the array
   SET myref = myref + 1;
-- Move the dynamic reference to the next item in the array
   MOVE myref NEXTSIBLING;
END WHILE;
この例は、サンプル・メッセージのメッセージ・モデルに基づき、型付きフィールドを使用してメッセージ・ツリーが作成されている場合に機能します。 そうでない場合、ESQL を変更することで、モデルなしで機能させることができます。例えば、次のようにします。
SET myref = CAST (myref AS INTEGER) + 1; 	

この例では、myref という動的参照を宣言しています。それは、Purchases 内の配列の最初の項目を指します。 最初の項目の値に 1 加算したら、ポインター (動的参照) は次の項目に移動します。 再び項目の値に 1 加算します。 このプロセスは、ポインターがメッセージ配列の範囲外になるまで (この配列中のすべての項目が処理されるまで) 続けられ、その後、LASTMOVE 関数が FALSE を戻します。

次にさらにいくつかの例を示します。

DECLARE ref1 REFERENCE TO InputBody.Invoice.Purchases.Item[1];

DECLARE ref2 REFERENCE TO 
	InputBody.Invoice.Purchases.NonExistentField;

DECLARE scalar1 CHARACTER;
DECLARE ref3 REFERENCE TO scalar1; 

第 2 の例では、存在しないフィールドが指定されているため、ref2 は InputBody を指すように設定されます。

動的参照は、静的参照を使用できるところならどこでも使用できます。例外は、動的参照の位置を変更する MOVE ステートメントです。 ある式またはステートメントの中での動的参照の値は、それが現在指しているフィールドまたは変数の値です。 例えば、サンプル・メッセージ に示されているメッセージの場合、Invoice.Customer.FirstName の値は Andrew です。 例えば、動的参照 myref が、以下のように Customer フィールドを指すように設定されているとします。

DECLARE myref REFERENCE TO Invoice.Customer;

この場合、次のようにして、この動的参照をそのフィールドの子である住所 (Address) に拡張できます。

SET myref.Billing.Address[1] = 'Oaklands';

これにより、この例の住所 (Address) は Oaklands Hursley Village Hampshire SO213JR になります。

動的参照の位置は、ツリーが変更された場合でも固定されています。 この点を例示するため、次に示すステップでは、サンプル・メッセージのメッセージを入力メッセージとして使用して、このメッセージの修正バージョンを出力メッセージとして作成します。

  1. 入力メッセージを出力メッセージにコピーします。
  2. 出力メッセージを変更するため、まず、最初の項目 The XML Companion を指す動的参照 ref1 を宣言します。
    DECLARE ref1 REFERENCE TO 
    	OutputRoot.XMLNS.Invoice.Purchases.Item[1];
    これで動的参照は、静的参照 OutputRoot.XMLNS.Invoice.Purchases.Item[1] に相当するものになります。
  3. CREATE ステートメントを使って、この購入の最初の項目を新たに挿入します。
    CREATE PREVIOUSSIBLING OF ref1 VALUES 'Item'; 
    これで動的参照は、静的参照 OutputRoot.XMLNS.Invoice.Purchases.Item[2] に相当するものになります。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:19


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ak04864_