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 1) - Schreiben einer Datei

&pagelevel(3)&pagelevel

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] )
    ELEMENT=elname [(vers)] [,eltype]
    FILE={ path2 | *linkname } [,TYPE={ ISAM | SAM } ] [,KEY={LINENUMBER | DATA } ]
    POSIX-FILE=xpath } ]

    [,MODE={ ANY | UPDATE | NEW | REPLACE } ] [,CODE={ name | *FILE | *EDT } ]

LIBRARY=...

Ein Bibliothekselement soll geschrieben werden. Dieses wird durch explizite
Angabe des Bibliotheksnamens und der Elementbezeichnung bestimmt.

path1

elname

vers

Name der Bibliothek.

Name des Elements.

Version des gewünschten Elements (siehe Handbuch LMS [14]). Wird vers
nicht angegeben oder wird *STD angegeben, wird die höchste vorhandene
Version des Elementes gewählt.

eltype

Typ des Elements. Zulässige Typangaben sind S, M, P, J, D, X, *STD und
freie Typnamen mit entsprechendem Basistyp. Wird eltype nicht angegeben,
wird der mit @PAR ELEMENT-TYPE voreingestellte Wert verwendet.
Die zulässigen Elementtypen und deren Bedeutung sind im Kapitel „„Dateibearbeitung“ (Dateibearbeitung ) beschrieben.

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
(sofern @PAR LIBRARY spezifiziert wurde, andernfalls wird die Fehlermeldung EDT5181 ausgegeben).

Die Operanden elname, vers und eltype haben die gleiche Bedeutung
wie bei expliziter Angabe der Bibliothek (siehe oben).

FILE=

path2

Eine BS2000-Datei soll geschrieben werden.

Name der BS2000-Datei (voll qualifizierter Dateiname), die geschrieben
werden soll.

*linkname

Dateikettungsname der BS2000-Datei, die geschrieben werden soll. Der Dateiname und die Dateiattribute sind in der Task File Table abgelegt.
Dateien mit vom Standard abweichenden Attributen können so neu angelegt
werden. Der Dateikettungsname darf nicht mit den Spezial-Dateinamen
*BY-PROGRAM vereinbart worden sein. Dies führt zum Fehler EDT4923. Ist
der Dateikettungsname nicht definiert, wird die Anweisung mit dem Fehler
EDT5480 abgewiesen.

Ist der Dateikettungsname mit dem Spezial-Dateinamen *DUMMY vereinbart
worden, wird dies wie eine nicht existierende Datei behandelt. Es entsteht
aber keine Datei.

TYPE=

Legt die Zugriffsmethode beim Neuanlegen einer Datei fest. Für existierende
Dateien wird der Operand ignoriert.

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.
Für andere Dateitypen wird der Operand ignoriert.

Ist der Operand nicht angegeben, wird beim Schreiben einer neuen Datei
oder beim Überschreiben einer existierenden Datei der ISAM-Schlüssel
aus der Zeilennummer gebildet. Beim Zurückschreiben in eine geöffnete
Datei wird der ISAM-Schlüssel aus der Zeilennummer gebildet, wenn beim
Öffnen der Datei KEY=LINENUMBER oder KEY=IGNORE angegeben wurde.
Wurde beim Öffnen KEY=DATA angegeben, wird der ISAM-Schlüssel aus
dem Datenbereich übernommen.

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
diesem Fall muss der Benutzer sicherstellen, dass die Reihenfolge der
Arbeitsdateisätze der Reihenfolge der ISAM-Schlüssel entspricht, da sonst
das Schreiben mit der Meldung EDT4208 (DVS-Fehlercode 0AAB)
abgewiesen wird.

POSIX-FILE=Es soll eine POSIX-Datei geschrieben werden.

xpath

Pfadname der POSIX-Datei, die geschrieben werden soll.

Der Operand xpath kann auch als Zeichenfolgevariable angegeben
werden. Er muss als Zeichenfolgevariable angegeben werden, wenn der Pfadname
Zeichen enthält, die in der EDT-Syntax eine Sonderbedeutung haben
(z.B. Leerzeichen, Semikolon im F-Modus oder Komma).

MODE=

Legt fest, ob die Datei schon vorhanden sein soll. Beim Zurückschreiben
geöffneter Dateien wird der Operand ignoriert.

ANY

Falls die Datei schon existiert, wird sie überschrieben, andernfalls wird sie
neu angelegt und geschrieben. Dies ist der Standardwert.

UPDATE

Die Datei, die geschrieben werden soll, muss bereits existieren, andernfalls
wird je nach Dateityp die Meldung EDT5281, EDT5270 oder EDT5310
ausgegeben. Der alte Inhalt wird vollständig überschrieben.

NEW

Die Datei wird neu angelegt und geschrieben. Sie darf noch nicht vorhanden
sein, andernfalls wird je nach Dateityp die Meldung EDT5258, EDT5273
oder EDT5311 ausgegeben.

REPLACE

Hat die gleiche Bedeutung wie ANY. Falls die Datei schon existiert, wird sie überschrieben, andernfalls wird sie neu angelegt und geschrieben.

CODE=

Der Operand steuert, in welchem Zeichensatz die Arbeitsdatei geschrieben
werden soll.

Ist der Operand nicht angegeben, wird für POSIX-Dateien der mit @PAR
CODE eingestellte Zeichensatz und für andere Dateien der Zeichensatz der
Arbeitsdatei verwendet. Unterscheidet sich für SAM-Dateien, ISAM-Dateien
oder Bibliothekselemente der Zeichensatz einer existierenden Datei von
dem der Arbeitsdatei, dann wird im Stapelbetrieb die Meldung EDT5457
ausgegeben und es wird nicht geschrieben. Im Dialogbetrieb wird folgende
Abfrage ausgegeben:

% EDT0915 CONVERT TO FILE CCS (&00)? REPLY (Y=YES; N=NO)?

Bei der Antwort Y wird vor dem Schreiben in den Zeichensatz der Datei
umcodiert. Bei der Antwort N wird der Zeichensatz der Arbeitsdatei verwendet.

name

Zeichensatz, der beim Schreiben verwendet werden soll. Als name muss
der Name eines gültigen Zeichensatzes angegeben werden (siehe
Abschnitt „Zeichensätze“).

*FILE

Die Arbeitsdatei wird vor dem Schreiben in den Zeichensatz der existierenden
SAM-Datei oder ISAM-Datei, des Bibliothekselements oder den beim
Öffnen der POSIX-Datei verwendeten Zeichensatz umcodiert. War dieser
Zeichensatz *NONE, wird EDF03IRV verwendet. Existiert die Datei noch
nicht oder soll eine existierende POSIX-Datei überschrieben werden, wird
die Meldung EDT1181 ausgegeben und der CODE-Operand ignoriert. Das
Verhalten entspricht dann dem bei weggelassenem CODE-Operanden.

*EDT

Beim Schreiben wird der Zeichensatz der Arbeitsdatei verwendet,
unabhängig davon, ob eine eventuell existierende Datei einen anderen Zeichensatz
hat.

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.