Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Einfügen zwischen zwei Zeilen

&pagelevel(5)&pagelevel

Bei diesem Verfahren werden die neu einzufügenden Zeilen zwischen zwei bereits existierende Zeilen eingefügt, ohne bereits existierende Zeilen zu überschreiben. Zuerst wird versucht, die neu einzufügenden Zeilen unter Verwendung der aktuellen Schrittweite einzufügen. Können die neuen Zeilen nicht auf diese Weise eingefügt werden, wird die Schrittweite zum Einfügen solange durch 10 dividiert, bis das Einfügen der neuen Zeilen möglich ist oder die kleinstmögliche Schrittweite von 0.0001 erreicht wurde.

Konnten auch mit der kleinstmöglichen Schrittweite von 0.0001 die neuen Zeilen nicht komplett eingefügt werden, wird der Einfügevorgang mit einer Fehlermeldung abgebrochen, wenn zuvor durch die Anweisung @PAR RENUMBER=OFF die automatische Umnummerierung von Zeilen ausgeschaltet wurde.

Ist dagegen die automatische Umnummerierung von Zeilen eingeschaltet (@PAR RENUM-BER=ON), wird versucht, die größere der beiden Zeilennummern, zwischen die eingefügt werden soll und eventuell weitere nachfolgende Zeilennummern so umzunummerieren, dass der Einfügevorgang erfolgreich abgeschlossen werden kann.

Nur wenn nicht mehr genügend Zeilen umnummeriert werden können, wird der Einfügevorgang auch in diesem Fall mit einer Fehlermeldung abgebrochen. Beim Start des EDT gilt immer die Einstellung @PAR RENUMBER=ON für alle Arbeitsdateien, die aber für jede Arbeitsdatei separat geändert werden kann.
Nachfolgend wird der Einfügevorgang noch etwas genauer beschrieben.

Bei diesem Einfügeverfahren werden immer zwei Zeilennummern benötigt, zwischen die die neuen Zeilen eingefügt werden sollen. Eine der beiden Zeilennummern ist durch die betreffende Anweisung (ggf. implizit) vorgegeben. Bei den Kurzanweisungen des F-Modus ist dies z.B. die Zeilennummer der Zeile, in der die Kurzanweisung angegeben wurde, bei der Anweisung @XCOPY z.B. die Zeilennummer der bisher letzten Zeile der Arbeitsdatei.

In den meisten Fällen wird nach dieser explizit oder implizit gegebenen Zeilennummer eingefügt. Als zweite Zeilennummer wird dann die Zeilennummer der nächsten Zeile genommen. Wird nach der letzten Zeile der Arbeitsdatei eingefügt, so wird als fiktive Zeilennummer für die zweite Zeile 10000.0000 angenommen.

Nur bei den Kurzanweisungen B,I,1..9 und der Anweisung @COPY (Format 1) mit Angabe des Parameters BEFORE wird vor der vorgegebenen Zeile eingefügt. In diesem Fall wird als zweite Zeilennummer die Zeilennummer der vorangehenden Zeile genommen. Wird vor der ersten Zeile eingefügt, so wird als Zeilennummer für die zweite Zeile 0.0000 angenommen. Ist die Arbeitsdatei leer, so wird als erste Zeilennummer 0.0000 und als zweite Zeilennummer 10000.0000 angenommen.
Die fiktive Zeilennummer 0.0000 dient dabei nur zur Bestimmung der Zeilennummer der ersten einzufügenden Zeile (= 0.0000 + Schrittweite) und kann selbst nicht belegt werden.

Einfügen ohne automatische Umnummerierung (@PAR RENUMBER=OFF)

Als Schrittweite für den ersten Einfügeversuch wird die aktuelle Schrittweite genommen. Die Zeilennummer der ersten einzufügenden Zeile erhält man, indem man zu der kleineren der beiden Zeilennummern, zwischen die eingefügt werden soll, die Schrittweite addiert. Die Zeilennummern der weiteren einzufügenden Zeilen ergeben sich durch sukzessives Addieren der Schrittweite. Passen die auf diese Weise nummerierten Zeilen zwischen die beiden Ausgangszeilen hinein, wird diese Nummerierung verwendet.
Passen sie dagegen nicht hinein, hängt das weitere Vorgehen davon ab, ob die Schrittweite gleich der kleinstmöglichen Schrittweite von 0.0001 ist oder nicht.
Ist sie gleich 0.0001, so wird das Einfügen der Zeilen mit der Meldung EDT5365 abgewiesen.
Ist die Schrittweite größer als 0.0001, so wird daraus eine neue Schrittweite ermittelt, indem die vorhergehende Schrittweite durch 10 geteilt wird (die aktuelle Schrittweite wird dabei nicht verändert!). Ist diese neue Schrittweite kleiner als 0.0001, so wird 0.0001 als neue Schrittweite genommen.
Mit dieser neuen Schrittweite wird nun ein neuer Einfügeversuch unternommen. Können die einzufügenden Zeilen mit dieser Nummerierung eingefügt werden, ist man fertig.
Ist andernfalls die Schrittweite bereits gleich 0.0001, so wird der Einfügevorgang mit der Meldung EDT5365 abgewiesen. Ist die Schrittweite noch größer als 0.0001, so wird erneut durch 10 geteilt und mit dieser neuen Schrittweite ein weiterer Versuch unternommen.
Die aktuelle Zeilennummer ändert sich nur, wenn mindestens eine neue Zeile entsteht, deren Zeilennummer größer ist, als die bisher höchste Zeilennummer und sie ist dann gleich der Zeilennummer der letzten Zeile der Arbeitsdatei plus der aktuellen Schrittweite (dies kann nur beim Einfügen nach der bisher letzten Zeile entstehen).

Einfügen mit automatischer Umnummerierung (@PAR RENUMBER=ON)

In diesem Fall wird ein zweistufiges Verfahren angewendet, um möglichst kompatibel zum EDT V16.6B zu bleiben.
Es wird zunächst genauso vorgegangen, wie im Fall @PAR RENUMBER=OFF.

Ist man bei der Schrittweite 0.01 angekommen und können die Zeilen noch nicht eingefügt werden, wird versucht, alle bereits existierenden Zeilen, die durch die neu eingefügten Zeilen überschrieben worden wären, so umzunummerieren, dass sie an die bisher zuletzt eingefügte Zeile unter Verwendung der Schrittweite 0.01 angefügt werden können. Dies ist das Verfahren des EDT V16.6B bzw. des Kompatibilitäts-Modus. Können dabei nicht genügend Zeilen umnummeriert werden, bricht der EDT V16.6B bzw. der Kompatibilitäts-Modus den Einfügevorgang mit Fehlermeldung ab.
Der Unicode-Modus dagegen versucht nun durch weiteres Verkleinern der Schrittweite
(d.h. Teilen durch 10) bis zur kleinstmöglichen Schrittweite von 0.0001, die Zeilen einzufügen.

Ist man schließlich bei der kleinstmöglichen Schrittweite von 0.0001 angekommen, so werden die Zeilen auf jeden Fall mit der Schrittweite 0.0001 eingefügt. Alle bereits existierenden Zeilen, die durch die neu eingefügten Zeilen überschrieben worden wären, werden nun so umnummeriert, dass sie an die bisher zuletzt eingefügte Zeile unter Verwendung der Schrittweite 0.0001 angefügt werden.
Falls durch diese Umnummerierung noch mal bereits existierende Zeilen überschrieben werden, wiederholt sich der Vorgang, d.h., auch diese Zeilen werden umnummeriert. Wenn durch die Umnummerierung keine bereits existierenden Zeilen mehr überschrieben werden, ist der Vorgang des Einfügens und Umnummerierens beendet.
Auch in diesem Fall ändert sich die aktuelle Zeilennummer nur, wenn mindestens eine neue Zeile entsteht, deren Zeilennummer größer ist, als die bisher höchste Zeilennummer und sie ist dann gleich der Zeilennummer der letzten Zeile der Arbeitsdatei plus der aktuellen Schrittweite.

Eine Ausnahme bildet die Kurzanweisung O.
Bei dieser Kurzanweisung werden zunächst, beginnend bei der mit O markierten Zeile, nur bereits existierende Zeilen überschrieben. Sind alle nach der mit O markierten Zeile bereits überschrieben und sind noch einzufügende Zeilen vorhanden, so werden diese Zeilen nach der letzten überschriebenen Zeile gemäß dem oben beschriebenen Verfahren eingefügt.

Der folgenden Tabelle kann entnommen werden, bei welcher EDT-Anweisung dieses Verfahren angewendet wird (bei einigen dieser EDT-Anweisungen kommen bei einem anderen Format oder anderen Operanden auch noch andere Einfügeverfahren zur Anwendung). Anweisungen, die nicht mit einem EDT-Anweisungssymbol beginnen, sind Kurzanweisungen.

Anweisung

Bemerkungen zu den Operanden

Allgemeine Bemerkungen

A



B



I



1..9



O


Wegen der Abweichung vom Verfahren,
siehe oben.

T



@COMPARE
Format 2


Die Arbeitsdatei wird vor der Verwendung
gelöscht, deshalb Einfügen nach der
Zeilennummer 0.0000.

@COPY
Format 1

Einlesen von SAM-Dateien, POSIX-
Dateien und Bibliothekselementen
sowie von ISAM-Dateien mit einer
Angabe des Operanden KEY
ungleich LINENUMBER

Wird keiner der Operanden AFTER
oder BEFORE angegeben, so wird
nach der bisher letzten Zeile
eingefügt, sonst vor oder nach der
angegebenen Zeile.

@FSTAT

ohne Zielangabe bei Ausgabe im
F-Modus

Die Arbeitsdatei 9 wird vor der Verwendung
gelöscht, deshalb Einfügen nach der
Zeilennummer 0.0000.

@OPEN
Format 1

Öffnen von SAM-Dateien, POSIX-
Dateien und Bibliothekselementen
sowie von ISAM-Dateien mit einer
Angabe des Operanden KEY
ungleich LINENUMBER

Die Arbeitsdatei muss vor Ausführung der
Anweisung leer sein, deshalb Einfügen nach
der Zeilennummer 0.0000.

@SDFTEST



@SEPARATE



@SHOW
Format 1 + 2

ohne Zielangabe bei Ausgabe im
F-Modus

Die Arbeitsdatei 9 wird vor der Verwendung
gelöscht, deshalb Einfügen nach der
Zeilennummer 0.0000.

@STAJV

ohne Zielangabe bei Ausgabe im
F-Modus

Die Arbeitsdatei 9 wird vor der Verwendung
gelöscht, deshalb Einfügen nach der
Zeilennummer 0.0000.

@XCOPY


Wenn die Arbeitsdatei nicht leer ist,
wird nach der bisher letzten Zeile
eingefügt, bei leerer Arbeitsdatei
nach der Zeilennummer 0.0000.

@XOPEN


Die Arbeitsdatei muss vor Ausführung der
Anweisung leer sein, deshalb Einfügen nach
der Zeilennummer 0.0000.