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 2) - Reale Bearbeitung einer ISAM-Datei

&pagelevel(3)&pagelevel

Mit @OPEN (Format 2) wird eine ISAM-Datei zur Bearbeitung direkt auf der Platte geöffnet. Sie kann bereits existieren, vor dem Öffnen neu erzeugt werden oder als Kopie einer existierenden SAM- oder ISAM-Datei entstehen.

In die aktuelle Arbeitsdatei wird nur der gerade benötigte Teil der ISAM-Datei eingelesen. Im F-Modus sind das die Sätze, die ganz oder teilweise am Bildschirm angezeigt werden. Im L-Modus werden erst bei der Ausführung einer EDT-Anweisung die benötigten Sätze eingelesen. Die Datei bleibt bis zum Ende ihrer Bearbeitung durch @CLOSE geöffnet.

Das Öffnen von ISAM-Dateien zur realen Bearbeitung ist nur in der Arbeitsdatei 0 möglich. Diese muss leer sein oder eine mit @OPEN (Format 2) real geöffnete Datei enthalten.

Operation

Operanden

F-Modus, L-Modus

@OPEN

[file1] [(ver)] [ [KEY] [AS file2 [ [,]OVERWRITE] ]

file1

Name der Datei, die geöffnet oder kopiert werden soll. Der Name muss dem
SDF-Datentyp <filename 1..54> entsprechen.

Die symbolische Bezeichnung '/' für eine Datei, für die der Dateikettungsname
EDTSAM bzw. EDTISAM durch das /SET-FILE-LINK-Kommando
vergeben wurde, ist hier nicht zulässig.

Falls eine Datei mit diesem Namen nicht existiert und der Operand AS nicht
vorhanden ist, wird eine ISAM-Datei erzeugt und geöffnet. Ist der Operand
AS vorhanden, wird die Anweisung mit der Meldung EDT4971 abgewiesen.

Ist die Datei eine SAM-Datei und ist der Operand AS nicht vorhanden, wird
die Meldung EDT4934 ausgegeben.

Fehlt der Operand file1, dann wird die Datei geöffnet oder kopiert, die mit
@FILE global voreingestellt worden ist. Gibt es keine solche Voreinstellung,
wird die @OPEN-Anweisung mit der Meldung EDT5484 abgewiesen.

ver

Versionsnummer der Datei. Wird für eine existierende Datei die falsche
Versionsnummer angegeben, wird die Anweisung mit der Meldung EDT4985
abgewiesen. Existiert die zu öffnende Datei nicht, wird die Angabe ignoriert.

KEY

Nur wirksam, wenn eine SAM-Datei in eine ISAM-Datei kopiert wird, die
dann real geöffnet wird. Die ersten 8 Zeichen eines jeden Satzes der SAM-
Datei bilden dann den Schlüssel der ISAM-Datei und sind nach dem
Einlesen als Zeilennummer und nicht als Satzinhalt zu interpretieren. Derartige
Sätze lassen sich mit @WRITE bei Angabe des Operanden KEY erstellen.

Ist file1 eine ISAM-Datei, wird der Operand KEY ignoriert.

AS ...

Die Datei file1 wird in eine ISAM-Datei kopiert. Wenn das Kopieren
gelungen ist, wird die Kopie zur realen Bearbeitung geöffnet.

file2

Name der ISAM-Datei, in die file1 kopiert wird und die dann anschließend
geöffnet wird.
Die symbolische Bezeichnung '/' für eine Datei, für die der
Dateikettungsname EDTSAM bzw. EDTISAM durch das /SET-FILE-LINK-Komman-
do vergeben wurde, ist hier nicht zulässig.
Falls eine Datei mit diesem Namen nicht existiert, wird vor dem Kopieren
eine ISAM-Datei erzeugt.

Falls die Datei file2 bereits existiert und der Operand OVERWRITE nicht
angegeben ist, wird im Dialogbetrieb folgende Abfrage ausgegeben:

% EDT0296 OVERWRITE FILE? REPLY (Y=YES; N=NO)?

Die Datei file2 wird nur dann überschrieben und geöffnet, wenn der
Benutzer mit Y antwortet. Im Stapelbetrieb wird die Datei überschrieben und
geöffnet.

Die Dateinamen file1 und file2 dürfen nicht gleich sein, sonst wird die
Anweisung mit der Meldung EDT5489 abgewiesen.

OVERWRITEUnterdrückt die Abfrage EDT0296 für eine vorhandene Datei file2. Die Datei wird überschrieben und geöffnet. Existiert die Datei file2 noch nicht, ist OVERWRITE wirkungslos.


Nach @OPEN (Format 2) werden die Anweisungen @RENUMBER, @SORT und @COMPARE abgewiesen. Sätze von real geöffneten Dateien können nicht markiert werden (Markierungs-Kurzanweisung, @ON, Format 3) und werden nicht automatisch gesichert (siehe @AUTOSAVE).

Ist bereits eine Datei zur realen Bearbeitung geöffnet, dann wird diese durch eine weitere @OPEN (Format 2)-Anweisung implizit geschlossen und die Arbeitsdatei wird gelöscht. Erst dann wird die zweite Datei geöffnet.

Die Zeilennummern der Arbeitsdatei werden beim Einlesen aus dem ISAM-Schlüssel der Datei gebildet. Beim Kopieren einer SAM-Datei in eine ISAM-Datei werden die ISAM-Schlüssel aus den ersten 8 Zeichen der Datei gebildet, wenn der Operand KEY angegeben wird, andernfalls werden sie nach dem Verfahren „Einfügen bei der aktuellen Zeilennummer“ gebildet (siehe Abschnitt „Zeilennummernvergabe“).

Die Arbeitsdatei erhält den Zeichensatz der einzulesenden Datei oder (wenn diese noch nicht existiert) den durch die aktuellen Systemeinstellungen festgelegten Zeichensatz. Ist dieser *NONE, erhält die Arbeitsdatei den Zeichensatz EDF03IRV. Der Zeichensatz der Arbeitsdatei kann dann bis zum Schließen der Datei nicht mehr geändert werden.

Hat die Arbeitsdatei bereits einen Zeichensatz, der von diesem verschieden ist, wird die Anweisung mit der Meldung EDT5452 abgewiesen.

Ist der zu öffnenden ISAM-Datei der Dateikettungsname EDTMAIN zugeordnet und wird die Datei neu erzeugt, so werden die in der TFT hinterlegten Attribute beim Erzeugen der Datei berücksichtigt, ansonsten wird eine Datei mit Standard-Attributen angelegt. Das gilt nicht, wenn eine vorhandene ISAM-Datei kopiert und dann geöffnet wird. Sie erhält dann die Attribute der zu kopierenden Datei.

Fehler in der Datei (z.B. nicht-numerische Schlüssel, illegale Byte-Folgen u.a.) werden möglicherweise erst viel später bemerkt, wenn die entsprechenden Sätze gelesen werden sollen. Beim Öffnen werden nicht alle Sätze der Datei eingelesen. Später festgestellte Fehler meldet dann das jeweilige Kommando, bei dessen Abarbeitung er auftrat. In diesen Fällen wird dann immer die real geöffnete Datei automatisch geschlossen.

Enthält eine real geöffnete ISAM-Datei Sätze mit gleichen Schlüsselwerten (duplicate keys), ist das Verhalten des EDT nicht in allen Fällen vorhersagbar. Je nach Art und Weise des Lesens kann es sein, dass der erste oder auch der letzte der Sätze mit gleichem Schlüssel angezeigt wird. Überschrieben wird dann immer der erste Satz. Bemerkt der EDT das Auftreten solcher gleichen Schlüsselwerte, so beendet er wie bei anderen Dateifehlern die Bearbeitung, gibt die Meldung EDT5445 aus und schließt die real geöffnete Datei.

In einer real geöffneten ISAM-Datei mit kürzerem Schlüssel (weniger als 8 Zeichen) können keine Sätze erzeugt werden, deren Zeilennummer zu groß ist, um als Schlüssel korrekt dargestellt werden zu können. Anweisungen die dies versuchen, werden mit der Fehlermeldung EDT5446 abgebrochen.

Ist der AS-Operand angegeben und ist die erste Datei eine ISAM-Datei, so wird sie durch ein implizites COPY-FILE-Kommando kopiert. Ist sie eine SAM-Datei, wird das Kopieren durch eine implizite @READ-Anweisung und eine implizite @SAVE-Anweisung realisiert.

In diesem Fall kann die Anweisung mit [K2] unterbrochen werden. Wird sie unterbrochen und der EDT-Lauf mit /INFORM-PROGRAM fortgesetzt, so wird die Bearbeitung der Anweisung abgebrochen und die Meldung EDT5501 ausgegeben.

Hinweis

Das Kommando ist geeignet Dateien zu bearbeiten, die wegen ihrer Größe sonst nicht vollständig in den EDT zur Bearbeitung geladen werden können.