
Die Bedeutung von 'Quelle' und 'Ziel' hängt von den Optionen für die Anweisung ab. Die nachstehenden Abschnitte zeigen die unterschiedlichen Formate der Anweisung 'move'.
Wenn Sie kein Qualifikationsmerkmal vom Typ 'byName' oder 'byPosition' für die Anweisung 'move' angeben, versetzt EGL die Informationen Byte für Byte aus der Quelle in das Ziel. Die Quelle muss mit dem Ziel zuordnungskompatibel sein. Weitere Informationen finden Sie im Thema 'Zuordnungskompatibilität in EGL'.
Bei diesem Format der Anweisung 'move' ordnet EGL Daten aus jedem Feld in der Quelle einem Feld desselben Namens im Ziel zu. Die Operation wird in der Reihenfolge ausgeführt, in der die Felder in der Quelle vorliegen. Die Quelle muss mit dem Ziel zuordnungskompatibel sein. Weitere Informationen finden Sie im Thema 'Zuordnungskompatibilität in EGL'.
Ein Strukturfeld mit einem Stern (*) als Name ist nicht als Quellenfeld verfügbar, wobei jedoch jedes benannte Feld in einer Unterstruktur dieses Felds verfügbar ist.
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 kopiert den Wert des Felds 'empnum' aus der Quelle in das erste Element von 'empnum' im Ziel und den Wert des ersten Elements von 'empname' aus der Quelle in das Feld 'empname' im Ziel. Die Anweisung 'move' wird an dieser Stelle beendet, da keine weiteren Kopiervorgänge stattfinden können, ohne das Ziel 'empname' in eine Feldgruppe zu ändern.
Bei diesem Format der Anweisung 'move' kopiert EGL Daten aus jedem Feld in der Quelle in ein Feld an derselben Position im Ziel. EGL kopiert jedes Feld Byte für Byte in der Reihenfolge der entsprechenden Position in der Quelle. Die Quelle muss mit dem Ziel zuordnungskompatibel sein. Weitere Informationen finden Sie im Thema 'Zuordnungskompatibilität in EGL'.
Wenn Sie Daten zwischen einem Datensatz und einem strukturierten Datensatz oder Feld versetzen, werden nur die Felder der höchsten Ebene des Ziels berücksichtigt. Wenn Sie Daten zwischen zwei strukturierten Datensätzen oder Feldern versetzen, werden jeweils nur die Felder der niedrigsten Ebene (Blattelemente) berücksichtigt.
Die Operation ist nicht gültig, wenn das Quellen- oder Zielfeld eine mehrdimensionale Strukturfeldgruppe oder eine eindimensionale Strukturfeldgruppe innerhalb einer Feldgruppe ist.
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;
Wenn das Ziel der Anweisung 'move' eine Feldgruppe ist, können Sie Werte zu allen Elementen (for all) oder zu einer sequenziellen Untergruppe von Elementen (for anzahl) zuordnen.
Die Anweisung 'move' bei Feldgruppen entspricht mehreren EGL-Kopiervorgängen vom Typ 'Byte für Byte' - einem Kopiervorgang pro Element in der Zielfeldgruppe. Wenn ein versuchter Kopiervorgang nicht gültig ist, tritt ein Fehler auf. Ausführliche Informationen zur Gültigkeit finden Sie unter Zuordnungen.
Wird 'for all' oder 'for anzahl' verwendet, werden Unterstrukturen von der Anweisung 'move' ignoriert.
Ist die Quelle eine Feldgruppe oder ein Element in einer Feldgruppe, werden alle aufeinanderfolgenden Elemente der Quellenfeldgruppe jeweils in das nächste sequenzielle Element der Zielfeldgruppe kopiert. Ziel- und Quellenfeldgruppe müssen von der Länge her nicht übereinstimmen. Die Operation endet, wenn die Daten des letzten Elements kopiert wurden, für das es ein übereinstimmendes Element in der anderen Feldgruppe gibt.
Wenn die Quelle ein Feldgruppenelement ist, wird sie wie eine Feldgruppe behandelt, in der das angegebene Element das erste Element ist. Die vorherigen Elemente werden ignoriert.
Wenn die Quelle weder eine Feldgruppe noch ein Feldgruppenelement ist, initialisiert die Operation jedes Element der Zielfeldgruppe mit dem Quellenwert.
Wenn die Quelle eine Datensatzfeldgruppe (oder ein Element einer solchen Feldgruppe) ist, muss das Ziel eine Datensatzfeldgruppe sein. Ist die Quelle eine Feldgruppe aus Basiselementvariablen (oder ein Element einer solchen Feldgruppe), muss das Ziel entweder eine Feldgruppe aus Basiselementvariablen oder eine Strukturfeldgruppe sein. Ist die Quelle eine Strukturfeldgruppe (oder ein Element einer solchen Feldgruppe), muss das Ziel entweder eine Feldgruppe aus Basiselementvariablen oder eine Strukturfeldgruppe sein.
move "abc" to target[7] for 3;
move source[2] to target[7] for 3;
Der Änderungswert 'withV60Compat' wird in Programmen verwendet, die aus EGL-Version 6 oder früher bzw. aus VisualAge Generator-Programmen migriert worden sind. Sie dürfen diesen Änderungswert nicht in neuem Code verwenden.
Verwenden Sie diesen Änderungswert, wenn die Variablen, auf die die Anweisung 'move' verweist, in einer eigenständigen Funktion deklariert sind, bei der die Migration nicht den Variablentyp bestimmen kann. Diese Option bietet Kompatibilität für eine Anweisung vom Typ 'move' ohne Änderungswert.
| Plattform | Problem |
|---|---|
| Rich UI | move wird nicht unterstützt. |