Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

@CLOSE - Zurückschreiben und Schließen einer Datei

&pagelevel(3)&pagelevel

Mit @CLOSE wird eine geöffnete Datei evtl. zurück geschrieben, anschließend geschlossen, und die Arbeitsdatei wird gelöscht.

Operation

Operanden

F-Modus, L-Modus

@CLOSE

[ {NOWRITE | CODE={name | *EDT | *FILE } } ]

NOWRITE

Die Arbeitsdatei wird gelöscht und nicht zurück geschrieben. Die geöffnete Datei bzw. das Bibliothekselement wird unverändert geschlossen. Bei einer real geöffneten Datei in der Arbeitsdatei 0 (siehe @OPEN, Format 2) ist NOWRITE wirkungslos.

CODE=

Der Operand steuert, in welchem Zeichensatz die Arbeitsdatei geschrieben
werden soll. Bei einer real geöffneten Datei in der Arbeitsdatei 0 ist der Operand wirkungslos.

Ist der Operand nicht angegeben und unterscheidet sich der Zeichensatz
der SAM-Datei, der ISAM-Datei, des Bibliothekselements oder der beim Öffnen der POSIX-Datei verwendeten Zeichensatz von dem der Arbeitsdatei, dann wird im Stapelbetrieb die Meldung EDT5457 ausgegeben, es wird nicht geschrieben und die Datei bleibt geöffnet. Im Dialogbetrieb wird die Abfrage

% EDT0915 CONVERT TO FILE CCS (&00)? REPLY (Y=YES; N=NO)?

ausgegeben. Bei der Antwort Y wird vor dem Schreiben in den Zeichensatz der Datei umcodiert. Bei der Antwort N wird der Zeichensatz der Arbeitsdatei verwendet.

name

Zeichensatz, der beim Schreiben verwendet werden soll. Es muss der Name eines gültigen Zeichensatzes angegeben werden (siehe Abschnitt
„Zeichensätze“).

*FILE

Die Arbeitsdatei wird vor dem Schreiben in den Zeichensatz der existierenden SAM-Datei oder ISAM-Datei, des Bibliothekselements oder den beim Öffnen der POSIX-Datei verwendeten Zeichensatz umcodiert. War dieser Zeichensatz *NONE, wird EDF03IRV verwendet.

*EDT

Beim Schreiben wird der Zeichensatz der Arbeitsdatei verwendet, unabhängig davon, ob eine eventuell existierende Datei einen anderen Zeichensatz hat.


Die Anweisung @CLOSE wird mit der Fehlermeldung EDT5177 abgewiesen, wenn in der aktuellen Arbeitsdatei keine Datei oder kein Bibliothekselement mit @OPEN bzw.
@XOPEN geöffnet ist.

Nach dem Schließen wird für SAM-Dateien, ISAM-Dateien und Bibliothekselemente der beim Schreiben verwendete Zeichensatz in den Katalog eingetragen.

Wird die Arbeitsdatei vor dem Schreiben umcodiert und enthält sie Zeichen, die im Zeichensatz der zu schreibenden Datei ungültig sind, werden diese durch ein Ersatzzeichen ersetzt, sofern ein solches spezifiziert ist (siehe @PAR SUBSTITUTION-CHARACTER), andernfalls wird die Datei nicht geschrieben, sie bleibt geöffnet und die Fehlermeldung EDT5453 wird ausgegeben. Der Benutzer kann dann ein Ersatzzeichen definieren oder den Zeichensatz für das Schreiben verändern und @CLOSE erneut ausführen.

Enthält die Arbeitsdatei Zeilen, die für die zu schreibende Datei zu lang sind (z.B. bei fester Satzlänge der Datei) oder entstehen durch die Konvertierung solche Sätze (bei Unicode-Zeichensätzen möglich), dann wird der Schreibvorgang mit der Meldung EDT5444 abgebrochen.

Beim Schreiben von ISAM-Dateien wird der ISAM-Schlüssel aus der Zeilennummer gebildet, wenn beim Öffnen der Datei KEY=LINENUMBER oder KEY=IGNORE angegeben wurde. Wurde beim Öffnen KEY=DATA angegeben, wird der ISAM-Schlüssel aus dem Datenbereich übernommen. In diesem Fall muss der Benutzer sicherstellen, dass die Reihenfolge der Arbeitsdateisätze der Reihenfolge der ISAM-Schlüssel entspricht, da sonst das Schreiben mit der Meldung EDT4208 (DVS-Fehlercode 0AAB) abgewiesen wird.

Die Definition von Sekundärschlüsseln einer ISAM-Datei in einem Sekundärindex bleibt nach @CLOSE erhalten, es sei denn, die Schlüsselfelder im Datenbereich wurden inkonsistent geändert. In diesem Fall wird die Meldung EDT5246 ausgegeben und der Sekundärindex wird gelöscht.

Wird während der Verarbeitung einer geöffneten ISAM-Datei der Zeichensatz von dem oder in den Zeichensatz UTF16 geändert, bzw. geschieht dies implizit durch entsprechende Angabe des CODE-Operanden, kann die Datei nicht zurück geschrieben werden, da sich die Länge des Schlüsselfeldes dadurch ändern würde. In diesem Fall wird die @CLOSE-Anweisung mit der Fehlermeldung EDT5468 abgewiesen.

Nach dem Schließen einer SAM- oder ISAM-Datei mit @CLOSE gibt der EDT normalerweise den nicht benötigten Speicherplatz der Datei frei. Die Freigabe kann durch Setzen des Auftragsschalters 7 verhindert werden.

Wurde beim Öffnen einer ISAM-Datei zur realen Bearbeitung (siehe @OPEN, Format 2) die aktuelle Versionsnummer angegeben, der Operand AS jedoch nicht, dann wird nach @CLOSE die aktualisierte (um 1 erhöhte) Versionsnummer angezeigt.

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.

Hinweis

Bei der Ausführung von @CLOSE wird implizit ein @DELETE (Format 2) für die aktuelle Arbeitsdatei ausgeführt. Dabei werden verschiedene Eigenschaften der Arbeitsdatei auf ihren Initialwert zurückgesetzt.

Beispiel

@OPEN FILE=DATEI1 ------------------------------------------------------ (1)
<EDT-Anweisungen> ------------------------------------------------------ (2)
@CLOSE CODE=UTFE ------------------------------------------------------- (3)

(1) Die Datei DATEI1 wird geöffnet und in dem Zeichensatz der Datei in die aktuelle Arbeitsdatei eingelesen.

(2) Die aktuelle Arbeitsdatei wird bearbeitet.

(3) Die aktuelle Arbeitsdatei wird in den Zeichensatz UTFE umcodiert und in die Datei DATEI1 zurück geschrieben. Im BS2000-Katalog erhält DATEI1 das Attribut CODED-CHARACTER-SET=UTFE. Die aktuelle Arbeitsdatei wird gelöscht.