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 Die symbolische Bezeichnung Falls eine Datei mit diesem Namen nicht existiert und der Operand Ist die Datei eine SAM-Datei und ist der Operand Fehlt der Operand |
ver | Versionsnummer der Datei. Wird für eine existierende Datei die falsche |
KEY | Nur wirksam, wenn eine SAM-Datei in eine ISAM-Datei kopiert wird, die Ist |
AS ... | Die Datei |
file2 | Name der ISAM-Datei, in die Falls die Datei
Die Datei Die Dateinamen |
OVERWRITE | Unterdrü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.