Mit der Anweisung @WRITE (Format 1) wird eine Datei neu erzeugt und der Inhalt der aktuellen Arbeitsdatei in die neue Datei geschrieben, eine existierende Datei mit dem Inhalt der aktuellen Arbeitsdatei überschrieben oder der Inhalt der aktuellen Arbeitsdatei in eine mit @OPEN (Format 1) geöffnete Datei zurück geschrieben. Eine geöffnete Datei bleibt bei @WRITE geöffnet. Beim Überschreiben existierender Dateien wird der alte Dateiinhalt vollständig ersetzt. In allen Fällen bleibt die Arbeitsdatei erhalten.
Wenn in diesem Abschnitt von Datei die Rede ist, dann kann dies eine SAM-Datei, eine ISAM-Datei, ein Bibliothekselement oder eine POSIX-Datei sein.
Operation | Operanden | F-Modus, L-Modus |
@WRITE | [ { LIBRARY=path1 ( [ELEMENT=] elname [(vers)] [,eltype] ) [,MODE={ ANY | UPDATE | NEW | REPLACE } ] [,CODE={ name | *FILE | *EDT } ] |
LIBRARY=... | Ein Bibliothekselement soll geschrieben werden. Dieses wird durch explizite |
path1 elname vers | Name der Bibliothek. Name des Elements. Version des gewünschten Elements (siehe Handbuch LMS [14]). Wird |
eltype | Typ des Elements. Zulässige Typangaben sind |
ELEMENT=... | Ein Bibliothekselement soll geschrieben werden. Dieses wird durch die Elementbezeichnung ohne Angabe des Bibliotheknamens bestimmt. Es wird implizit die mit @PAR LIBRARY voreingestellte Bibliothek verwendet Die Operanden |
FILE= path2 | Eine BS2000-Datei soll geschrieben werden. Name der BS2000-Datei (voll qualifizierter Dateiname), die geschrieben |
*linkname | Dateikettungsname der BS2000-Datei, die geschrieben werden soll. Der Dateiname und die Dateiattribute sind in der Ist der Dateikettungsname mit dem Spezial-Dateinamen |
TYPE= | Legt die Zugriffsmethode beim Neuanlegen einer Datei fest. Für existierende |
SAM ISAM KEY= | Eine SAM-Datei wird angelegt und geschrieben. Dies ist der Standardwert. Eine ISAM-Datei wird angelegt und geschrieben. Legt für ISAM-Dateien fest, wie der ISAM-Schlüssel gebildet werden soll. Ist der Operand nicht angegeben, wird beim Schreiben einer neuen Datei |
LINENUMBER | |
Der ISAM-Schlüssel wird aus der Zeilennummer gebildet. Weicht die Schlüsselposition vom Standard ab oder ist die Schlüssellänge zu groß, wird die Meldung EDT5465 ausgegeben und die Datei nicht geschrieben. Ist die Schlüssellänge zu klein, wird die Zeilennummer von links her verkürzt. | |
DATA | Der ISAM-Schlüssel ist Bestandteil des Datenbereichs der Arbeitsdatei. In |
POSIX-FILE= | Es soll eine POSIX-Datei geschrieben werden. |
xpath | Pfadname der POSIX-Datei, die geschrieben werden soll. Der Operand |
MODE= | Legt fest, ob die Datei schon vorhanden sein soll. Beim Zurückschreiben |
ANY | Falls die Datei schon existiert, wird sie überschrieben, andernfalls wird sie |
UPDATE | Die Datei, die geschrieben werden soll, muss bereits existieren, andernfalls |
NEW | Die Datei wird neu angelegt und geschrieben. Sie darf noch nicht vorhanden |
REPLACE | Hat die gleiche Bedeutung wie |
CODE= | Der Operand steuert, in welchem Zeichensatz die Arbeitsdatei geschrieben Ist der Operand nicht angegeben, wird für POSIX-Dateien der mit @PAR
Bei der Antwort |
name | Zeichensatz, der beim Schreiben verwendet werden soll. Als |
*FILE | Die Arbeitsdatei wird vor dem Schreiben in den Zeichensatz der existierenden |
*EDT | Beim Schreiben wird der Zeichensatz der Arbeitsdatei verwendet, |
Beim Schreiben neuer Dateien oder beim Überschreiben existierender Dateien muss immer ein Dateinamensoperand angegeben werden. Beim Zurückschreiben mit @OPEN geöffneter Dateien kann der Dateinamensoperand weggelassen werden. Wird der Dateinamensoperand weggelassen und ist keine Datei geöffnet, wird die Anweisung mit der Meldung EDT5122
abgewiesen. Werden sämtliche Operanden der Anweisung weggelassen und ist keine Datei geöffnet, so wird die Anweisung als @WRITE (Format 2) interpretiert und nach einem @FILE-Eintrag gesucht (siehe @WRITE Format 2).
Ist die angegebene Datei nicht wie erforderlich zugreifbar, wird die Anweisung mit einer entsprechenden Fehlermeldung abgewiesen.
Nach dem Schreiben wird für SAM-Dateien, ISAM-Dateien und Bibliothekselemente der verwendete Zeichensatz in den Katalog eingetragen. Ist dieser Zeichensatz EDF03IRV
und existiert die zu schreibende Datei bereits mit dem Zeichensatz *NONE
im Katalog, so behält sie diesen.
Wird die Arbeitsdatei vor dem Schreiben umcodiert und enthält sie 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. Der Benutzer kann dann ein Ersatzzeichen definieren oder den Zeichensatz für das Schreiben verändern und @WRITE erneut ausführen.
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 während der Verarbeitung einer geöffneten ISAM-Datei der Zeichensatz von dem oder in den Zeichensatz UTF16
geändert, bzw. geschieht dies implizit durch entsprechende Angabe des CODE
-Operanden, kann eine durch @OPEN geöffnete Datei nicht zurückgeschrieben werden, da sich die Länge des Schlüsselfeldes dadurch ändern würde. In diesem Fall wird die @WRITE-Anweisung mit der Fehlermeldung EDT5468
abgewiesen.
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.
Achtung
Da MODE=ANY
voreingestellt ist, werden bereits existierende Dateien ohne Warnung überschrieben.
Beispiel
@WRITE LIBRARY=PROGLIB(ELEMENT=SYNT)
Die aktuelle Arbeitsdatei wird in das Element SYNT
der Bibliothek PROGLIB
geschrieben. Dabei wird die höchstmögliche Version und der mit @PAR ELEMENT-TYPE voreingestellte Typ verwendet.
@PAR LIBRARY=BIB1 @SET #S02='PROC.PR' @WRITE ELEMENT=.#S02 (V01),J
Die aktuelle Arbeitsdatei wird in das Element mit dem Namen PROC.PR
, der Version V01
und dem Elementtyp J
in der Bibliothek BIB1
geschrieben.
@WRITE FILE=DATEI2,MODE=NEW,CODE=*EDT
Die SAM-Datei DATEI2
wird neu angelegt und die aktuelle Arbeitsdatei wird in die neue Datei geschrieben. Dabei wird der Zeichensatz der Arbeitsdatei verwendet.
@OPEN POSIX-FILE=/home/user1/test/data,CODE=UTF8
@WRITE ,MODE=ANY
Die aktuelle Arbeitsdatei wird in die geöffnete POSIX-Datei data
in dem Verzeichnis /home/user1/test
zurück geschrieben.