Die @COLUMN-Anweisung verändert den Inhalt von bestehenden Arbeitsdateizeilen bzw. von Zeichenfolgevariablen.
Im ersten Schritt wird ab der angegebenen Spalte Text eingefügt bzw. vorhandener Text ersetzt. Anschließend werden von rechts nach links beginnend mit dem letzten Zeichen der Arbeitsdateizeile bzw. Zeichenfolgevariablen alle Leerzeichen (bis zum ersten Nicht-Leerzeichen) gelöscht. Eine Arbeitsdateizeile, die nur aus Leerzeichen besteht, bleibt als Leerzeile in der Arbeitsdatei erhalten. Eine Zeichenfolgevariable, die nur Leerzeichen enthält, wird durch das Löschen zu einer leeren Zeichenfolgevariablen.
Operation | Operanden | F-Modus, L-Modus |
@COLUMN | col ON {lines | svars} [,...] [ { CHANGE | INSERT} ] [:] string |
col | Spalte, ab der Text ersetzt oder eingefügt werden soll. |
lines | Einer oder mehrere Zeilenbereiche, in denen Text eingefügt bzw. ersetzt |
svars | Einer oder mehrere Bereiche von Zeichenfolgevariablen, in denen Text |
CHANGE | Die mit |
INSERT | Die mit |
: | Ist zwingend anzugeben, wenn weder |
string | Zeichenfolge, die in jeder Zeile jedes angegebenen Zeilenbereiches ab der Die Zeichenfolge wird in den Zeichensatz der Arbeitsdatei bzw. der |
Wenn die Spalte, ab der Text eingefügt werden soll, hinter dem bisherigen Zeilenende liegt, werden die dazwischen liegenden Spalten mit Leerzeichen aufgefüllt.
Das Ersetzen bzw. Einfügen findet nicht statt, wenn eine Arbeitsdateizeile bzw. eine Zeichenfolgevariable dadurch die maximale Länge von 32768 Zeichen überschreitet. Stattdessen wird in diesem Falle die Meldung EDT5474
ausgegeben. Der EDT prüft nicht, ob die Zeilenlänge durch das Löschen von Leerzeichen am Zeilenende wieder einen zulässigen Wert annehmen würde.
Beim Auftreten von Fehlern während der Verarbeitung (EDT5453
oder EDT5474
) wird die Anweisung abgebrochen. Evtl. zu diesem Zeitpunkt schon erfolgreich modifizierte Zeilen und/oder Zeichenfolgevariablen bleiben modifiziert.
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
Man kann diese Anweisung verwenden, um Leerzeichen an den Zeilenenden zu löschen, ohne die Zeilenlängen zu kennen. Wird in der @COLUMN-Anweisung als Ersetzungstext eine leere Zeichenfolge angegeben, so findet keine Textersetzung in den Zeilen statt. Der von rechts nach links verlaufende Löschvorgang bewirkt das Löschen der Leerzeichen an den Zeilenenden.
Beispiel
In Zeile 1.00 soll ab Spalte 3 der Inhalt der Zeile 2.00 stehen. Der alte Inhalt von Zeile 1.00 wird somit überschrieben.
In Zeile 1.00 soll ab Spalte 5 die Zeichenfolge 567 eingefügt werden. Somit wird kein Zeichen von Zeile 1.00 überschrieben.