Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@WRITE (Format 2) - Schreiben einer SAM-Datei

&pagelevel(3)&pagelevel

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[,...]:]
[KEY] [ { UPDATE | OVERWRITE } ]

file

Name der SAM-Datei, die geschrieben werden soll. Der Name muss dem
SDF-Datentyp <filename 1..54> entsprechen oder die spezielle Angabe
'/' sein.

Existiert die Datei file noch nicht, wird sie vor dem Schreiben neu
angelegt. Fehlt der Operand file, so wird, falls vorhanden, der explizite lokale
@FILE-Eintrag, dann der globale @FILE-Eintrag (aus der @FILE-Anweisung)
und zuletzt der implizite lokale @FILE-Eintrag (z.B. aus der @READ-
Anweisung) als Dateiname herangezogen. Ist kein @FILE-Eintrag vorhanden,
wird @WRITE mit der Meldung EDT5484 abgewiesen.

Ist die angegebene Datei nicht wie erforderlich zugreifbar, wird die Anweisung
mit einer entsprechenden Fehlermeldung abgewiesen.

Wenn der Dateikettungsname EDTSAM einer Datei zugeordnet ist, genügt
die Angabe '/', um diese Datei zu schreiben (siehe Kapitel „Dateibearbeitung“).

ver

Versionsnummer der zu überschreibenden Datei. Wird für eine existierende
Datei die falsche Versionsnummer angegeben, wird die Anweisung mit der
Meldung EDT4985 abgewiesen. Bei einer noch nicht existierenden Datei
wird die Angabe ignoriert und grundsätzlich die Version 001 geschrieben.

lines

Einer oder mehrere Zeilenbereiche, die in die SAM-Datei geschrieben werden
sollen. Werden dabei Zeilen mehrfach angegeben, so werden sie auch
mehrfach geschrieben.

Wird lines nicht angegeben, wird die gesamte Datei geschrieben.

cols

Einer oder mehrere Spaltenbereiche, durch die der zu schreibende Bereich
jedes Satzes festgelegt wird. Wiederholungen und Überlappungen der
Bereiche sind erlaubt. Die Spaltenangaben beziehen sich auf die Zeichen in
der aktuellen Arbeitsdatei. Werden Spaltenwerte angegeben, die die Länge
eines Arbeitsdateisatzes überschreiten, so werden dafür Leerzeichen in die
Datei geschrieben.

Wird kein Spaltenbereich angegeben, werden die Zeilen in voller Länge
geschrieben.

KEY

Beim Schreiben der SAM-Datei wird jeder Zeile ein 8 Zeichen langer
Schlüssel vorangestellt, der sich aus der jeweiligen Zeilennummer ergibt.
Damit erreicht man, dass diese Datei später wieder mit genau denselben
Zeilennummern eingelesen werden kann (siehe @READ mit Operand
KEY).

UPDATE

Die Angabe von UPDATE bewirkt, dass die abzuspeichernden Zeilen an
das Ende der existierenden SAM-Datei angehängt werden.

Dieser Operand wird ignoriert, wenn keine SAM-Datei mit dem
angegebenen Namen existiert.

OVERWRITEEine 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:

%

%

EDT0903 FILE 'file' IS IN THE CATALOG, FCBTYPE = fcbtyp

EDT0296 OVERWRITE FILE? REPLY (Y=YES; N=NO)?

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 UPDATE erreicht man, dass der Inhalt der Arbeitsdatei – immer noch die unter (1) angelegte Zeile – an das Ende der Datei TEST.@WRITE.1 angehängt wird.

(5)Der Inhalt der Arbeitsdatei wird gelöscht.
(6)

Die Datei TEST.@WRITE.1 wird in die Arbeitsdatei gebracht (auch hier braucht kein Dateiname angegeben werden.)

(7)Man sieht, dass unter (4) die Zeile an das Ende der Datei angehängt wurde.