Mit der Anweisung @WRITE (Format 2) wird der Inhalt der aktuellen Arbeitsdatei ganz oder teilweise als SAM-Datei auf Platte oder Band geschrieben.
Operation | Operanden | F-Modus, L-Modus |
@WRITE | [file] [(ver)] [,] [lines[,...] ] [:cols[,...]:] |
file | Name der SAM-Datei, die geschrieben werden soll. Der Name muss dem Existiert die Datei Ist die angegebene Datei nicht wie erforderlich zugreifbar, wird die Anweisung Wenn der Dateikettungsname |
ver | Versionsnummer der zu überschreibenden Datei. Wird für eine existierende |
lines | Einer oder mehrere Zeilenbereiche, die in die SAM-Datei geschrieben werden Wird |
cols | Einer oder mehrere Spaltenbereiche, durch die der zu schreibende Bereich Wird kein Spaltenbereich angegeben, werden die Zeilen in voller Länge |
KEY | Beim Schreiben der SAM-Datei wird jeder Zeile ein 8 Zeichen langer |
UPDATE | Die Angabe von UPDATE bewirkt, dass die abzuspeichernden Zeilen an Dieser Operand wird ignoriert, wenn keine SAM-Datei mit dem |
OVERWRITE | Eine vorhandene Datei gleichen Namens wird ohne Rückfrage überschrieben. Existiert die angegebene Datei noch nicht, ist OVERWRITE wirkungslos. |
Wird weder UPDATE
noch OVERWRITE
angegeben und existiert bereits eine Datei mit gleichem Namen, reagiert der EDT im Dialogbetrieb mit der Frage:
|
|
Wird die Meldung mit Y
beantwortet, wird die bestehende Datei als SAM-Datei mit dem Inhalt der aktuellen Arbeitsdatei überschrieben. Wird dagegen die Meldung mit N
beantwortet, wird die Datei nicht geschrieben und die Meldung EDT0293
ausgegeben.
Im Stapelbetrieb wird die Datei immer überschrieben.
Beim Überschreiben einer existierenden Datei durch @WRITE ohne den Operanden UPDATE
ändern sich möglicherweise Datei-Typ und/oder Datei-Attribute. Die Datei wird als SAM-Datei mit Standardattributen (z.B. variable Satzlänge) geschrieben, sofern nicht vorher ein entsprechendes /SET-FILE-LINK
-Kommando mit dem Dateikettungsnamen EDTSAM
und den abweichenden Attributen gegeben worden ist (siehe Kapitel „Dateibearbeitung“). Dateien vom Typ PAM
oder BTAM
können nicht überschrieben werden.
Die Datei wird nur während des Schreibvorgangs temporär geöffnet.
Der Zeichensatz, mit dem das Schreiben erfolgt, hängt davon ab, ob die Datei überschrieben, neu angelegt oder erweitert wird (siehe Operand UPDATE
).
Wird die Datei überschrieben oder neu angelegt, werden die Daten im Zeichensatz der Arbeitsdatei geschrieben und für die Datei wird dieser Zeichensatz im Katalog eingetragen.
Wird die Datei erweitert, werden die Daten vom Zeichensatz der Arbeitsdatei in den Zeichensatz umcodiert, der im Katalogeintrag der Datei spezifiziert ist. Ist im Katalog der Datei *NONE
eingetragen, wird EDF03IRV
angenommen (siehe auch Abschnitt „Zeichensätze“).
Enthält die Arbeitsdatei Zeichen, die im Zeichensatz der zu schreibenden Datei ungültig sind, werden diese durch ein Ersatzzeichen ersetzt, sofern ein solches spezifiziert ist (siehe @PAR SUBSTITUTION-CHARACTER), andernfalls wird die Datei nicht geschrieben und die Fehlermeldung EDT5453
ausgegeben. Dies gilt nicht für ungültige Zeichen außerhalb des zu schreibenden Zeilen- oder Spaltenbereichs. Diese Zeichen werden ignoriert.
Enthält die Arbeitsdatei Zeilen, die für die zu schreibende Datei zu lang sind (z.B. bei fester Satzlänge der Datei) oder entstehen durch die Konvertierung solche Sätze (bei Unicode-Zeichensätzen möglich), dann wird der Schreibvorgang mit der Meldung EDT5444
abgebrochen.
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.
Werden sämtliche Operanden der Anweisung weggelassen und ist eine Datei in der aktuellen Arbeitsdatei geöffnet, so wird die Anweisung als @WRITE (Format 1) interpretiert und nicht nach einem @FILE-Eintrag gesucht (siehe @WRITE Format 1).
Achtung
Wenn mit der @FILE-Anweisung ein Dateiname voreingestellt wurde, dann führt die Anweisungsfolge
@READ 'dateiname'
@WRITE
nicht zum Schreiben der eingelesenen Datei. Vielmehr wird die Datei aus dem @FILE-Eintrag geschrieben.
Beispiel
1. EINE GANZ KURZE DATEI ----------------------------------------- (1) 2. @WRITE 'TEST.@WRITE.1' ---------------------------------------- (2) 2. @FILE 'TEST.@WRITE.1' ----------------------------------------- (3) 2. @WRITE UPDATE ------------------------------------------------- (4) 2. @DELETE ------------------------------------------------------- (5) 1. @READ --------------------------------------------------------- (6) 3. @PRINT 1.0000 EINE GANZ KURZE DATEI 2.0000 EINE GANZ KURZE DATEI ----------------------------------------- (7) 3.
(1) | Zeile wird in die Arbeitsdatei geschrieben. |
(2) | Diese Zeile wird als Datei TEST.@WRITE.1 auf Platte geschrieben. |
(3) | Der Dateiname TEST.@WRITE.1 wird über @FILE vereinbart. |
(4) | @WRITE bezieht sich auf den unter (3) vereinbarten Dateinamen. Mit |
(5) | Der Inhalt der Arbeitsdatei wird gelöscht. |
(6) | Die Datei |
(7) | Man sieht, dass unter (4) die Zeile an das Ende der Datei angehängt wurde. |