
ソースおよびターゲットの意味は、 文のオプションによって異なります。 move 文のさまざまな書式については、以下のセクションを参照してください。
move 文に byName または byPosition 修飾子を指定していない場合、EGL は、ソースからターゲットへ情報を 1 バイトずつ移動します。 ソースは、ターゲットと代入の互換性がある 必要があります。詳しくは、『EGL における代入の互換性』を参照してください。
この書式の move 文では、EGL はソースの各フィールド からターゲットの同じ名前のフィールドにデータを代入します。 演算は、フィールドがソースにリストされている順に行われます。 ソースは、ターゲットと代入の互換性がある 必要があります。詳しくは、『EGL における代入の互換性』を参照してください。
名前にアスタリスク (*) が付いた構造化フィールドは、ソース・フィールドとして使用できませんが、 そのフィールドの副構造内にあるどの名前付きフィールドでも使用できます。
10 empnum CHAR(3);
10 empname CHAR(20);
10 empnum CHAR(3)[10];
10 empname CHAR(20)[10];
10 mySubStructure[10]
15 empnum CHAR(3);
15 empname CHAR(20);
10 empnum CHAR(3);
10 empname CHAR(20)[10];
10 empnum CHAR(3)[10];
10 empname CHAR(20);
EGL は、empnum フィールドの値を、ソースからターゲットの empnum の最初の要素にコピーし、empname の最初の要素の値を、ソースからターゲットのフィールド empname にコピーします。配列に対するターゲット empname を変更せずに追加のコピーを実行することはできないため、move 文はここで終了します。
この書式の move 文では、EGL はデータを ソースの各フィールドからターゲットの同等の場所にあるフィールドにコピーします。 EGL は、各フィールドをソース内での配置順序に従って、1 バイトずつコピーします。ソースは、ターゲットと代入の互換性がある 必要があります。詳しくは、『EGL における代入の互換性』を参照してください。
レコードと構造化レコードまたはフィールド間でデータを移動する場合は、ターゲットの最上位フィールドのみが考慮されます。 2 つの構造化レコードまたはフィールド間でデータを移動する場合は、どちらかの最下位 (リーフ) フィールドのみが考慮されます。
ソース・フィールドまたはターゲット・フィールドが多次元の構造化フィールド配列であるか、 配列内の 1 次元の構造化フィールド配列である場合、この操作は無効です。
record myCustomer type BasicRecord
customerNumber CHAR(6);
customerName CHAR(25);
end
record mySavedCustomer type BasicRecord
savedCustomerNumber CHAR(6);
savedCustomerName CHAR(25);
end
...
move myCustomer to mySavedCustomer byPosition;
move 文のターゲットが配列である場合、 すべての要素 (for all) または 要素の順次サブセット (for count) に値を割り当てることができます。
配列を持つ move 文は、複数の EGL のバイト単位コピー (ターゲット配列要素ごとに 1 つ) と同等であり、 コピー操作が無効な場合はエラーが発生します。妥当性について詳しくは、代入を参照してください。
for all または for count が使用中である場合は、move 文は副構造を無視します。
ソースが配列または配列の要素である場合は、そのソース配列の後続の各要素は、ターゲット配列の次の順次要素にコピーされます。 ターゲット配列またはソース配列のいずれかが他方より長くても問題ありません。この場合は、他の配列と一致する要素を持つ最後の要素からデータがコピーされると、操作が終了します。
ソースが配列の要素である場合、そのソースは、指定された要素が最初の要素である配列として扱われ、前の要素は無視されます。
ソースが配列でも、配列の要素でもない場合、この操作はソースの値を使用して、ターゲット配列のすべての要素を初期化します。
ソースがレコード配列 (またはレコード配列の要素) である場合、ターゲットはレコード配列でなければなりません。 ソースがプリミティブ変数配列 (またはプリミティブ変数配列の要素) である場合、ターゲットはプリミティブ変数配列または構造化フィールド配列でなければなりません。 ソースが構造化フィールド配列 (または構造化フィールド配列の要素) である場合、ターゲットはプリミティブ変数配列または構造化フィールド配列でなければなりません。
move "abc" to target[7] for 3;
move source[2] to target[7] for 3;
withV60Compat 修飾子は、EGL バージョン 6 以前または VisualAge® Generator のプログラムからマイグレーションされたプログラムで使用します。 新規のコードではこの修飾子を使用しないでください。
move 文が参照する変数が独立型関数で宣言されていて、 マイグレーションによってその変数の型を決定できない場合に、この修飾子を使用します。 このオプションによって、修飾子を持たない move 文との互換性が保たれます。
| プラットフォーム | 問題 |
|---|---|
| Rich UI | move はサポートされていません。 |