Mit @COPY (Format 1) wird eine existierende Datei komplett in die aktuelle Arbeitsdatei eingelesen. Die Arbeitsdatei braucht dabei nicht leer zu sein. Die Arbeitsdateiposition, an der die Datei eingefügt werden soll, kann angegeben werden. Nach dem Einlesen wird die Datei wieder geschlossen.
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 |
@COPY | { LIBRARY = path1 ([ ELEMENT = ] elname [(vers)] [,eltype]) | ELEMENT = elname [(vers)] [,eltype] | FILE = {path2 | *linkname} [,KEY = { LINENUMBER | DATA | IGNORE } ] | POSIX-FILE = xpath [,CODE = name] } [ [,] { BEFORE | AFTER } line ] |
LIBRARY= | Ein Bibliothekselement soll eingelesen 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 eingelesen werden. Dieses wird durch die Die Operanden |
FILE= path2 | Eine BS2000-Datei soll eingelesen werden. Name der BS2000-Datei (voll qualifizierter Dateiname), die eingelesen |
*linkname | Dateiname und die Dateiattribute sind in der |
KEY= | Legt für ISAM-Dateien den Ort fest, an dem der ISAM-Schlüssel in der |
LINENUMBER | |
Der ISAM-Schlüssel wird als Zeilennummer in der Arbeitsdatei abgelegt. | |
DATA IGNORE | Der ISAM-Schlüssel wird Bestandteil des Datenbereichs der Arbeitsdatei. Der ISAM-Schlüssel wird nicht in der Arbeitsdatei abgelegt. Dies ist der |
POSIX-FILE= | Es soll eine POSIX-Datei eingelesen werden. |
xpath | Pfadname der POSIX-Datei, die in die aktuelle Arbeitsdatei eingelesen |
CODE= | Es wird festgelegt, welcher Zeichensatz für die POSIX-Datei angenommen Wird |
name | Zeichensatz der einzulesenden POSIX-Datei. Als |
EBCDIC | Das Schlüsselwort |
ISO | Das Schlüsselwort |
BEFORE | Die Datei wird vor der angegebenen Arbeitsdateizeile eingefügt. Der |
AFTER | Die Datei wird nach der angegebenen Arbeitsdateizeile eingefügt. Der |
line | Zeilennummer, vor oder nach der eingefügt wird. |
Existiert die angegebene Datei nicht oder ist sie nicht wie erforderlich zugreifbar bzw. kann die Datei nicht erfolgreich eingelesen werden, wird die Anweisung mit einer entsprechenden Fehlermeldung abgewiesen.
Wird weder BEFORE
noch AFTER
angegeben und ist der Operand KEY
ungleich LINENUMBER
, dann wird die Datei nach der letzten Zeile der aktuellen Arbeitsdatei eingefügt.
Die Zeilennummern der Arbeitsdatei werden beim Einlesen von ISAM-Dateien mit Operand KEY=LINENUMBER
aus dem ISAM-Schlüssel der Datei gebildet, in allen anderen Fällen nach dem Verfahren Einfügen zwischen zwei Zeilen (siehe Abschnitt „Zeilennummernvergabe“).
Ist die aktuelle Arbeitsdatei leer und hat den Zeichensatz *NONE
, erhält die Arbeitsdatei den Zeichensatz der einzulesenden Datei. Ist dieser *NONE
, erhält die Arbeitsdatei den Zeichensatz EDF03IRV
.
Hat die Arbeitsdatei bereits einen Zeichensatz, dann werden die einzulesenden Sätze vom Zeichensatz der Datei in den Zeichensatz der Arbeitsdatei konvertiert. Enthält die einzulesende Datei Zeichen, die im Zeichensatz der Arbeitsdatei nicht darstellbar sind, werden diese durch ein Ersatzzeichen ersetzt, sofern ein solches spezifiziert ist (siehe
@PAR SUBSTITUTION-CHARACTER), andernfalls wird die Datei nicht eingelesen und die Fehlermeldung EDT5453
ausgegeben.
Liegt die Datei in einem Unicode-Zeichensatz vor und enthält sie ungültige Bytefolgen, z.B. Surrogate-Zeichen, kann sie auch bei Angabe eines SUBSTITUTION-CHARACTERS
nicht eingelesen werden. In diesem Fall wird das Lesen mit der Meldung EDT5454
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.
Beispiel
@COPY LIBRARY=MACLIB(ELEMENT=XYZ,M) AFTER 12.3
Das Element mit dem Namen XYZ
, der höchsten vorhandenen Version und dem Elementtyp M
(Makro) aus der Bibliothek MACLIB
wird vollständig in die aktuelle Arbeitsdatei nach der Zeile 0012.3000
eingefügt.
@PAR LIBRARY=DATEN
@COPY ELEMENT=PERSONAL(@),D
Das Element mit dem Namen PERSONAL
, der höchsten vorhandenen Version und dem Elementtyp D
(Textdaten) aus der Bibliothek DATEN
wird nach der letzten Zeile der aktuellen Arbeitsdatei eingefügt.
@COPY FILE=DATEI.ISAM,KEY=LINENUMBER
Die ISAM-Datei DATEI.ISAM
wird in die Arbeitsdatei eingelesen. Die Zeilennummern der Arbeitsdatei werden aus dem ISAM-Schlüssel gebildet. Eventuell schon vorhandene Zeilen werden dabei überschrieben.
@COPY POSIX-FILE=/home/user1/test/data,CODE=UTF8
Die POSIX-Datei data
in dem Verzeichnis /home/user1/test
mit dem Zeichensatz UTF8
wird nach der letzten Zeile der aktuellen Arbeitsdatei eingefügt. Die Datei wird dabei in den Zeichensatz der Arbeitsdatei konvertiert.