Mit @OPEN (Format 1) wird eine existierende Datei geöffnet und in die aktuelle Arbeitsdatei eingelesen oder eine Datei neu erzeugt und zur Bearbeitung geöffnet.
Die Arbeitsdatei muss leer sein und eine SAM-Datei, eine ISAM-Datei oder ein Bibliothekselement darf nicht bereits in einer anderen Arbeitsdatei geöffnet sein. Die Datei bleibt geöffnet, bis sie durch @CLOSE geschlossen wird.
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 |
@OPEN | { LIBRARY=path1([ELEMENT=] elname [(vers)] [,eltype]) | |
LIBRARY= | Ein Bibliothekselement soll geöffnet und eingelesen werden. Dieses wird |
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 geöffnet und eingelesen werden. Dieses wird durch die Elementbezeichnung ohne Angabe des Bibliotheknamens Die Operanden |
FILE= path2 | Eine BS2000-Datei soll geöffnet und eingelesen werden. Name der BS2000-Datei (voll qualifizierter Dateiname), die geöffnet werden |
*linkname | Dateikettungsname der BS2000-Datei, die geöffnet und eingelesen werden soll. Der Dateiname und die Dateiattribute sind in der Ist der Dateikettungsname mit dem Spezial-Dateinamen |
TYPE= SAM | Legt die Zugriffsmethode der BS2000-Datei fest. Falls die Datei noch nicht existiert, wird eine SAM-Datei angelegt, andernfalls |
ISAM | Falls die Datei noch nicht existiert, wird eine ISAM-Datei angelegt, andernfalls |
CATALOG | Falls die Datei schon existiert, werden die Attribute aus dem Katalogeintrag übernommen, andernfalls wird die Meldung |
KEY= | Legt für ISAM-Dateien den Ort fest, an dem der ISAM-Schlüssel in der Arbeitsdatei abgelegt ist. Für andere Dateitypen wird der Operand ignoriert. |
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. Weicht die |
POSIX-FILE= | Es soll eine POSIX-Datei geöffnet werden. |
xpath | Pfadname der POSIX-Datei, die geöffnet werden soll. Der Operand |
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 |
MODE= ANY | Legt fest, ob die Datei schon vorhanden sein soll. Falls die Datei schon existiert, wird sie zur Bearbeitung geöffnet und |
UPDATE | Die Datei, die zur Bearbeitung geöffnet und eingelesen werden soll, muss |
NEW | Die Datei wird neu angelegt und zur Bearbeitung geöffnet. Sie darf noch |
REPLACE | Falls die Datei schon existiert, wird sie zur Bearbeitung geöffnet, ihr alter Inhalt wird aber gelöscht und nicht in die Arbeitsdatei eingelesen. Andernfalls |
Ist die aktuelle Arbeitsdatei nicht leer oder ist in ihr bereits eine Datei geöffnet, wird die Anweisung mit der Meldung EDT5191
bzw. EDT5180
abgewiesen.
Existiert die angegebene Datei nicht oder ist sie nicht wie erforderlich zugreifbar bzw. kann eine existierende Datei nicht erfolgreich eingelesen werden, wird die Anweisung mit einer entsprechenden Fehlermeldung abgewiesen.
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“).
Hat beim Öffnen einer existierenden Datei die leere Arbeitsdatei den Zeichensatz *NONE
, erhält die Arbeitsdatei den Zeichensatz der einzulesenden Datei. Ist dieser *NONE
, erhält die Arbeitsdatei den Zeichensatz EDF003IRV
.
Hat beim Öffnen einer existierenden Datei die leere Arbeitsdatei bereits einen Zeichensatz (z.B. durch vorhergehendes @CODENAME), 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
@OPEN LIBRARY=PROGLIB(ELEMENT=TEST)
Das Element TEST
der Bibliothek PROGLIB
wird geöffnet und in die aktuelle Arbeitsdatei eingelesen. Dabei wird die höchste vorhandene Version und der mit @PAR ELEMENT-TYPE voreingestellte Typ verwendet. Die Arbeitsdatei muss vorher leer sein.
@PAR LIBRARY=BIB1 @SET #S01='PROC.EX' @OPEN ELEMENT=.#S01(V01),J
Das Element mit dem Namen PROC.EX
, der Version V01
und dem Elementtyp J
(Prozedur) aus der Bibliothek BIB1
wird geöffnet und in die aktuelle Arbeitsdatei eingelesen.
@OPEN FILE=DATEI1,TYPE=ISAM,MODE=NEW
Die ISAM-Datei DATEI1
wird neu angelegt und geöffnet. Die Zeilennummern der Arbeitsdatei stellen den ISAM-Schlüssel dar.
@OPEN POSIX-FILE=/home/user1/test/data,CODE=UTF8
Die POSIX-Datei data
in dem Verzeichnis /home/user1/test
mit dem Zeichensatz UTF8
wird geöffnet und in die aktuelle Arbeitsdatei eingelesen.