Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

@MOVE - Übertragen von Zeilen oderZeichenfolgevariablen

&pagelevel(3)&pagelevel

Mit der Anweisung @MOVE werden Datensätze der aktuellen oder einer anderen Arbeitsdatei in die aktuelle Arbeitsdatei übertragen und anschließend an ihren ursprünglichen Positionen gelöscht oder Inhalte von Zeichenfolgevariablen in die aktuelle Arbeitsdatei übertragen und anschließend werden die Zeichenfolgevariablen reinitialisiert.

Der Zeilenbereich der Quell-Arbeitsdatei, der die zu übertragenden Datensätze enthält, bzw. der Bereich von Zeichenfolgevariablen wird der Einfachheit halber im Folgenden als Sendebereich bezeichnet. Der Zeilenbereich der aktuellen Arbeitsdatei, in den die Datensätze der Quell-Arbeitsdatei übertragen werden, wird als Empfangsbereich bezeichnet.

Operation

Operanden

F-Modus, L-Modus

@MOVE

{ { lines [(procnr)] | svars } [TO { line1 [(inc)] [:] [line2] } [,...] ] } [,...]            

lines

Zusammenhängender Zeilenbereich, der in die aktuelle Arbeitsdatei
übertragen werden soll. Symbolische Zeilennummern in lines beziehen sich auf
die Zeilennummern der aktuellen Arbeitsdatei, auch wenn die Zeilen aus
einer anderen Arbeitsdatei übertragen werden.

procnr

Nummer der Quell-Arbeitsdatei, aus der die Datensätze übertragen werden
(0..22). Ist procnr nicht angegeben, werden die Datensätze aus der
aktuellen Arbeitsdatei übertragen. Eine aktive Arbeitsdatei darf nicht
angegeben werden. Wird kein TO Operand angegeben, darf procnr nicht die
aktuelle Arbeitsdatei sein.

svars

Bereich von Zeichenfolgevariablen, deren Inhalte in die aktuelle Arbeitsdatei
übertragen werden soll. Nach der Übertragung werden die
Zeichenfolgevariablen gelöscht, d.h. mit einem Leerzeichen im Zeichensatz
EDF041 reinitialisiert.

TO...

Mit den auf TO folgenden Operanden werden der oder die Empfangsbereiche
definiert. Ist kein Empfangsbereich angegeben, dann werden die
Zeilennummern der Quell-Arbeitsdatei in die aktuelle Arbeitsdatei
übernommen.

Ist die Quell-Arbeitsdatei die aktuelle Arbeitsdatei oder werden
Zeichenfolgevariable übertragen, dann muss TO... angegeben werden. Ist in
diesen Fällen kein Empfangsbereich angegeben, dann wird die @MOVE-
Anweisung mit der Fehlermeldung EDT3218 abgewiesen.

line1

Nummer der ersten Zeile des Empfangsbereiches.

inc

Schrittweite, aus der die auf line1 folgenden Zeilennummern gebildet
werden. Wird inc nicht angegeben, wird die implizit durch line1 gegebene
Schrittweite verwendet (siehe Abschnitt „Implizite Schrittweitenvergabe“).

:Die Operanden line1 und line2 sollten durch : voneinander getrennt werden, falls inc nicht angegeben wird.

line2

Legt die größtmögliche Zeilennummer des Empfangsbereiches fest, bis zu
der eine Übertragung von Datensätzen erlaubt wird.

Es findet somit keine Übertragung in Zeilen der aktuellen Arbeitsdatei statt,
deren Zeilennummer größer als line2 ist. Dies gilt auch dann, wenn
dadurch nicht alle Datensätze des Sendebereiches in den Empfangsbereich
übertragen werden können.

Ist line2 nicht angegeben, so wird durch die @MOVE-Anweisung kein
Maximalwert für die Zeilennummern des Empfangsbereiches festgelegt.

Mit der @MOVE-Anweisung können mehrere Sendebereiche mit jeweils mehreren Empfangsbereichen durch Komma getrennt angegeben werden. Die Anzahl der Sende- und Empfangsbereiche ist nur durch die maximal erlaubte Länge einer EDT-Anweisung begrenzt. Die Angabe mehrerer Empfangsbereiche ist normalerweise nicht sinnvoll, weil die Zeilen bereits nach der ersten Übertragung im Sendebereich gelöscht werden und für weitere Übertragungen nicht mehr zur Verfügung stehen.

Wenn sich der Sende- und der Empfangsbereich überlappen, wird der Sendebereich zeilenweise übertragen und gelöscht.

Bereits in der aktuellen Arbeitsdatei existierende Zeilen mit gleichen Zeilennummern werden bei der Übertragung überschrieben.
Wenn eine Zeile angelegt wird, deren Nummer größer als die bisherige höchste Zeilennummer ist, wird die aktuelle Zeilennummer verändert.

Ist die aktuelle Arbeitsdatei leer und hat sie den Zeichensatz *NONE, dann erhält sie beim Übertragen den Zeichensatz der Quell-Arbeitsdatei bzw. der ersten angegebenen Zeichenfolgevariablen.

Hat die aktuelle Arbeitsdatei einen Zeichensatz, dann werden die zu übertragenden Zeilen bzw. die Inhalte der Zeichenfolgevariablen in den Zeichensatz der aktuellen Arbeitsdatei konvertiert. Werden dabei Zeichen gefunden, die im Zeichensatz der Arbeitsdatei nicht darstellbar sind, werden diese durch ein Ersatzzeichen ersetzt, sofern ein solches spezifiziert ist (siehe @PAR SUBSTITUTION-CHARACTER), andernfalls wird die @MOVE-Anweisung abgebrochen und die Fehlermeldung EDT5453 ausgegeben.

Wird die Anweisung mit [K2] unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501 ausgegeben.

Hinweis

Da es die obige Syntax erlaubt, den TO-Operanden wegzulassen, ist es nicht immer möglich, eindeutig zwischen einem Empfangsbereich und einem nächsten Sendebereich zu unterscheiden. In diesen Fällen entscheidet sich der EDT für die Interpretation als Empfangsbereich. So wird z.B. in der Eingabe

@MOVE 2-3(1) TO 7,1(1)

die Angabe 1(1) als zweiter Empfangsbereich interpretiert (die 1 in Klammern wird als Schrittweite interpretiert), während die Angabe 1(0) an dieser Stelle als nächster Sendebereich interpretiert worden wäre (die 0 kann keine Schrittweite sein und wird als Arbeitsdateinummer interpretiert). Will der Anwender in diesem Beispiel die Interpretation als Sendebereich erzwingen, könnte er z.B.

@MOVE 2-3(1) TO 7,1-1(1)

eingeben, dann gibt es keine Mehrdeutigkeiten.

Beispiel

Die Zeilen 2 bis 4 sollen in den Zeilenbereich ab Zeile 20 übertragen werden. Als Schrittweite des Empfangsbereiches ist implizit der Wert 1 angegeben.

Die Zeilen 20, 21 und 22 wurden mit der impliziten Schrittweite 1 neu angelegt und die Zeilen 2, 3 und 4 gelöscht.

Die Zeilen 20-22 sollen nach 100, 105 und 110 übertragen werden.

Der Zeilenbereich ab Zeile 100 bis Arbeitsdateiende (100-.$) soll mit der expliziten Schrittweite 5 in den Zeilenbereich ab Zeile 82 übertragen werden. Da als größtmögliche Zeilennummer für den Empfangsbereich 89 festgelegt wurde, wird die Zeile 90 nicht überschrieben.

Die Zeile 110 wurde nicht übertragen, da als größtmögliche Zeilennummer für den Empfangsbereich 89 festgelegt wurde.