Der CLOSE-Makroaufruf schließt Dateien, d.h. er trennt sie von dem Benutzerprogramm, in dem sie eröffnet wurden. Alle Ein-/Ausgabepuffer, die das System bei der Dateieröffnung automatisch angelegt hat, werden freigegeben. Der FCB wird mit dem Inhalt versehen, den er vor dem Eröffnen hatte.
Während der CLOSE-Verarbeitung kann das Benutzerprogramm – ähnlich wie bei der OPEN-Verarbeitung – an EXLST-Ausgängen das Band positionieren (CLOSPOS) oder Benutzerkennsätze schreiben (LABEND).
Ein CLOSE-Makroaufruf auf eine nicht geöffnete Datei wird ohne Meldungsausgabe ignoriert.
Format
Operation | Operanden |
|
|
Operandenbeschreibung
fcbadr
Adresse des FCB der zu schließenden Datei
(0)
Das Register 0 enthält im rechten Byte den Positionierungsschlüssel bzw. CLOSE-Modus:
X'00' | LEAVE |
X'01' | DISCON |
X'02' | REPOS |
X'03' | RWD |
X'05' | INVAL (nur bei PARMOD=31) |
X'06' | KEEP-DATA-IN-CACHE |
(1)
Register 1 enthält die FCB-Adresse.
ALL
Schließt alle Dateien, die im laufenden Programm geöffnet, aber noch nicht geschlossen wurden. Systemdateien und EAM-Dateien sind vom CLOSE nicht betroffen. Wird eine Datei nicht ordnungsgemäß geschlossen, so erfolgt eine Warnung.
DISCON
Für Banddateien:
das Band wird auf Bandanfang positioniert und entladen bzw. freigegeben. Ein evtl. mit einem FILE-Aufruf reserviertes Gerät bleibt dem Auftrag weiterhin zugeordnet; es wird erst durch einen nachfolgenden RELEASE-Aufruf (REL-Makro) freigegeben.
INVAL
Für Plattendateien:
Die zur Datei im Cache liegenden Seiten sollen nur invalidiert, aber nicht auf die Platte zurückgeschrieben werden, d.h. nach dem CLOSE sind die Daten verloren. INVAL kann nur bei PARMOD=31 angegeben werden.
KEEP-DATA-IN-CACHE
Für Plattendateien:
Die Daten, die in einem Cache zwischengepuffert wurden, werden beim CLOSE nicht auf die Platte gesichert. Ein nachfolgender OPEN auf die gleiche Datei kann dann diese Daten sofort nutzen.
Hinweis
So geschlossene Dateien können mit dem Kommando SHOW-FILE-ATTRIBUTES (Operand CACHE-NOT-SAVED) angezeigt werden. Ein Sicherung der Daten aus dem Cache auf die Platte kann entweder durch einen weiteren OPEN/CLOSE-Zyklus ohne diese Funktion oder implizit während des Cache-Abbaus mit dem Systemverwalterkommando STOP-PUBSET-CACHING oder EXPORT-PUBSET erzwungen werden. Eine dateispezifische Cache-Sicherung für geschlossene Dateien ist nicht möglich.
LEAVE
Für Banddateien:
das Band wird abhängig von der LABEL-Angabe bei FILE oder FCB auf das logische Dateiende positioniert.
Wurde im FILE-Aufruf der Operand BYPASS angegeben, verändert sich die Bandposition nicht, und die CLOSPOS-Routine wird nicht aktiviert. Ansonsten sind die LEAVE-Funktionen der „REPOS“-Tabelle zu entnehmen: REPOS für OPENnot equalREVERSE entspricht LEAVE für OPEN=REVERSE und umgekehrt.
Bei LEAVE für OPEN OUTPUT ist zu beachten, dass keine CLOSPOS-Routine aktiviert und die Bandposition nicht verändert wird.
Für Multifile-Bänder gilt: Wenn der Operand LEAVE nicht angegeben wird, wird beim CLOSE-Aufruf das Band an den Anfang zurückgespult.
PARMOD
Gibt den Generierungsmodus für den Makroaufruf an.
Voreinstellung: | der durch den Makro GPARMOD oder durch den Assembler voreingestellte Wert für den Generierungsmodus |
= 24
Der Makroaufruf wird mit der Expansion für die 24-Bit-Schnittstelle aufgelöst. Das Objekt ist nur im 24-Bit-Adressierungsmodus ablauffähig.
= 31
Der Makroaufruf wird adressierungsmodus-unabhängig generiert.
REPOS
Für Banddateien:
positioniert ein Band abhängig von der LABEL-Angabe in FILE oder FCB auf den logischen Dateianfang.
Wurde im FILE-Aufruf der Operand BYPASS angegeben, so wird das Band zurückgespult, und die CLOSPOS-Routine wird nicht aktiviert. In allen anderen Fällen gilt die folgende Tabelle (Band positionieren):
LABEL-Angabe | OPEN not equal REVERSE | OPEN = REVERSE |
LABEL=(STD,n) | das Band wird automatisch auf HDR1 positioniert; | das Band wird auf die Bandmarke hinter dem letzten EOF-Kennsatz der Datei positioniert; FSEQ wird um 1 erhöht |
LABEL=NSTD | EXLST: CLOSPOS=NO, das Band wird automatisch auf die Bandanfangsmarke positioniert; | EXLST: CLOSPOS=NO, das Band wird auf die Bandanfangsmarke positioniert; |
EXLST: CLOSPOS not equal NO der Benutzer muss in einer Routine das Band selbst positionieren; | EXLST: CLOSPOS not equal NO der Benutzer muss in der CLOSPOS-Routine das Band selbst positionieren; | |
LABEL=NO | EXLST: CLOSPOS=NO, das Band wird automatisch auf die Abschnittsmarke hinter dem letzten Block der Datei positioniert, FSEQ um 1 erhöht |
bei OPEN OUTPUT: keine CLOSPOS-Routine, keine Positionierung
RWD
Voreinstellung für Banddateien:
das Band wird zurückgespult und auf Bandanfang positioniert; FSEQ wird – auch bei Dateien mit NSTD-Kennsätzen – auf 0 gesetzt, d.h. FSEQ zeigt auf die erste Datei der Dateimenge/des Bandes.
Hinweis zur Programmierung
Der CLOSE-Makroaufruf zerstört die Register 0, 1, 14 und 15.