Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@OPEN (Format 1) - Öffnen und Einlesen einer Datei

&pagelevel(3)&pagelevel

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]) |
  ELEMENT=elname [(vers)] [,eltype] |
  FILE={path2 | *linkname}[,TYPE={ISAM | SAM | CATA-}] [,KEY={ LINENUMBER | DATA | IGNORE}] |
  POSIX-FILE=xpath [,CODE=name]}
[,MODE={ ANY | UPDATE | NEW | REPLACE}]

LIBRARY=

Ein Bibliothekselement soll geöffnet und eingelesen 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“ beschrieben.

ELEMENT=...

Ein Bibliothekselement soll geöffnet und eingelesen 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 geöffnet und eingelesen werden.

Name der BS2000-Datei (voll qualifizierter Dateiname), die geöffnet werden
soll.

         *linkname

Dateikettungsname der BS2000-Datei, die geöffnet und eingelesen 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=

SAM

Legt die Zugriffsmethode der BS2000-Datei fest.

Falls die Datei noch nicht existiert, wird eine SAM-Datei angelegt, andernfalls
wird die Angabe ignoriert. Dies ist der Standardwert beim Neuanlegen
von Dateien.

ISAM

Falls die Datei noch nicht existiert, wird eine ISAM-Datei angelegt, andernfalls
wird die Angabe ignoriert.

CATALOG

Falls die Datei schon existiert, werden die Attribute aus dem Katalogeintrag

übernommen, andernfalls wird die Meldung EDT5281 ausgegeben. Die
Zugriffsmethode wird durch das FCBTYPE-Attribut im Katalogeintrag bestimmt.
Dies ist der Standardwert für existierende Dateien.

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.
Dies ist der Standardwert. Kann der ISAM-Schlüssel nicht als Zeilennummer
interpretiert werden, weil die Schlüsselposition vom Standard
abweicht, die Schlüssellänge zu groß ist oder die Schlüssel nicht numerisch
sind, wird die Meldung EDT5459 ausgegeben und die Datei nicht geöffnet.

DATA

IGNORE

Der ISAM-Schlüssel wird Bestandteil des Datenbereichs der Arbeitsdatei.

Der ISAM-Schlüssel wird nicht in der Arbeitsdatei abgelegt. Weicht die
Schlüsselposition vom Standard ab, wird die Meldung EDT5466 ausgegeben
und die Datei nicht geöffnet.

POSIX-FILE=Es soll eine POSIX-Datei geöffnet werden.

xpath

Pfadname der POSIX-Datei, die geöffnet werden soll.

Der Operand xpath kann auch als Zeichenfolgevariable angegeben
werden. Er muss als Zeichnfolgevariable 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).

CODE=

Es wird festgelegt, welcher Zeichensatz für die POSIX-Datei angenommen
wird. Da POSIX-Dateien innerhalb des POSIX-Dateisystems kein Zeichensatz
zugeordnet werden kann, ist hier eine Angabe des Anwenders nötig.

Wird CODE nicht angegeben, wird für die Datei der mit @PAR CODE
eingestellte Zeichensatz angenommen.

name

Zeichensatz der einzulesenden POSIX-Datei. Als name muss der Name
eines gültigen Zeichensatzes angegeben werden (siehe Abschnitt
„Zeichensätze“).

EBCDIC

Das Schlüsselwort EBCDIC wird nur noch aus Kompatibilitätsgründen als
Synonym für den Zeichensatz EDF041 unterstützt.

ISO

Das Schlüsselwort ISO wird nur noch aus Kompatibilitätsgründen als
Synonym für den Zeichensatz ISO88591 unterstützt.

MODE=

ANY

Legt fest, ob die Datei schon vorhanden sein soll.

Falls die Datei schon existiert, wird sie zur Bearbeitung geöffnet und
eingelesen, andernfalls wird sie neu angelegt und zur Bearbeitung geöffnet.
Dies ist der Standardwert.

UPDATE

Die Datei, die zur Bearbeitung geöffnet und eingelesen werden soll, muss
bereits existieren oder über den Dateikettungsnamen mit *DUMMY verknüpft
sein, andernfalls wird je nach Dateityp die Meldung EDT5281, EDT5284
oder EDT5310 ausgegeben.

NEW

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

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
wird sie neu angelegt und zur Bearbeitung geöffnet.


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.