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

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

MOVE ステートメント

MOVE ステートメントは、Target 参照変数の指すフィールドを変更します。

構文

構文図を読む構文図をスキップする
>>-MOVE--------------------------------------------------------->

>--Target----+-TO--SourceFieldReference--------------+---------><
             +-PARENT--------------------------------+     
             '-+-FIRSTCHILD------+--| NAME clauses |-'     
               +-LASTCHILD-------+                         
               +-PREVIOUSSIBLING-+                         
               '-NEXTSIBLING-----'                         

NAME clauses

|--+-+------------------+--+---------------------------+--+------------------+-+--|
   | '-TYPE -Expression-'  '-NAMESPACE--+-Expression-+-'  '-NAME -Expression-' |   
   |                                    '-*----------'                         |   
   +-IDENTITY -PathElement-----------------------------------------------------+   
   |        (1)                                                                |   
   '-REPEAT------+-TYPE------+-------------------------------------------------'   
                 +-NAME------+                                                     
                 '-TYPE-NAME-'                                                     

注:
  1. RepeatClause は、PREVIOUSSIBLING および NEXTSIBLING 修飾子とのみ使用できます。

TO 文節を組み込む場合、この文節はターゲット参照を、ソースが指すものと同じエンティティーを指すように変更します。これはメッセージ・フィールドまたは宣言済みの変数のどちらかです。

PARENT、PREVIOUSSIBLING、NEXTSIBLING、FIRSTCHILD、または LASTCHILD 文節を組み込む場合、MOVE ステートメントは、ターゲット参照変数を、現在の位置との相対関係で指定した方向に移動しようとします。指定した方向にフィールドがあれば、移動は成功します。該当するフィールドがなければ、移動は失敗するので、参照変数は、引き続き以前と同じフィールドまたは変数を指し、LASTMOVE 関数が FALSE を戻します。移動が成功したか失敗したかは LASTMOVE 関数を使うことによって判定できます。

TYPE 文節、NAME 文節、またはその両方が存在する場合には、ターゲットが指定された方向 (PREVIOUSSIBLING、NEXTSIBLING、FIRSTCHILD、または LASTCHILD) にやはり移動しますが、この場合は、指定されたタイプ、名前、またはその両方を持つフィールドまで移動します。ターゲット・フィールドの名前またはタイプ (またはその両方) が分かっている場合に、これは特に役立ちます。なぜなら、こうすることによりフィールドにナビゲートするのに必要な MOVE ステートメントの数を減らすことができるからです。その理由は基準に一致しないフィールドがスキップされるところにあります。そのようなフィールドには、予期しないメッセージ・ツリー・フィールド (例えばホワイト・スペースを表すフィールド) が含まれます。

指定された移動が実行できない (つまり、指定されたタイプまたは名前を持つフィールドが存在しない) 場合には、ターゲットが未変更のままにされ、LASTMOVE 関数が FALSE を戻します。 TYPE 文節、NAME 文節、またはその両方には、適切なデータ・タイプの値 (タイプには INTEGER、名前には CHARACTER) を戻す式を含めることができます。 指定された値が NULL の場合には、例外がスローされます。

さらに 2 つの文節 NAMESPACE および IDENTITY は、NAME 文節の機能を向上させます。

NAMESPACE 文節は、タイプが文字のヌル以外の値を戻すすべての式を取ります。 また、任意のネーム・スペースを表す * も取ります。 * は ESQL の単項演算子ではないので、これを式と混同しないように注意してください。

意味は、NAME および NAMESPACE 文節の有無によって、次のように左右されます。
NAMESPACE NAME エレメントの検索キー
いいえ いいえ タイプ、索引、または両方
いいえ はい デフォルトのネーム・スペース中の名前
* はい 名前
はい いいえ ネーム・スペース
はい はい 名前とネーム・スペース

IDENTITY 文節は TYPE、NAMESPACE および NAME 文節の代わりに単一のパス・エレメントを取り、フィールド参照に関する部分で説明されている規則すべてに従います (ESQL フィールド参照の概要を参照してください)。

MOVE を PREVIOUSSIBLING または NEXTSIBLING を指定して使用するときには、REPEAT、TYPE、および NAME キーワードを指定することができます。そうすれば、現行フィールドと同じタイプおよび名前を持つ、直前または次のフィールドにターゲットが移動します。 REPEAT キーワードは、同じ種類の兄弟に移動するときに特に便利です。なぜなら、タイプおよび名前を定義する式を書く必要がないからです。

MOVE cursor FIRSTCHILD TYPE Name NAME 'Field1';

この例は、 参照変数 cursor を、cursor が現在指しているフィールドの子フィールドのうち、 タイプ Name と名前 Field1 を持つ最初の子フィールドに移動させます。

使用可能なタイプのリストについては、FIELDTYPE 関数を参照してください。

MOVE ステートメントは、新規フィールドを絶対に作成しません。

MOVE ステートメントの一般的な使用方法は、繰り返し構造の特定インスタンスから、次のインスタンスへ移動することです。 その後で、相対フィールド参照を使用して、構造内のフィールドにアクセスできます。 以下に例を示します。
WHILE LASTMOVE(sourceCursor) DO
  SET targetCursor.ItemNumber  = sourceCursor.item;
  SET targetCursor.Description = sourceCursor.name;
  SET targetCursor.Price       = sourceCursor.prc;
  SET targetCursor.Tax         = sourceCursor.prc * 0.175;
  SET targetCursor.quantity    = 1;
  CREATE NEXTSIBLING OF targetCursor AS targetCursor REPEAT;
  MOVE sourceCursor NEXTSIBLING REPEAT TYPE NAME;
END WHILE;

参照変数、および参照変数の移動の例の詳細については、動的フィールド参照の作成を参照してください。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

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


参照トピック参照トピック | バージョン 8.0.0.5 | ak05090_