MOVE ステートメント

MOVE ステートメントは、target によって示される参照変数の指すフィールドを変更します。

構文

注:
  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 0x01000000 NAME 'Field1';

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

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;

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

関連概念
ESQL の概要
関連タスク
ESQL の開発
動的フィールド参照の作成
関連資料
構文図: 使用可能なタイプ
ESQL のステートメント
LASTMOVE 関数
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05090_