Eine Datei wird logisch gekürzt, wenn alle der folgenden Bedingungen erfüllt sind:
Es liegt keine Bedingung zur Dateiverlängerung vor.
Die logisch letzte Seite befindet sich in einem Fenster mit dem Attribut DIS-POS=*UNCHNG und im SAVE-Bereich.
Zumindest die letzte Seite befindet sich im Initialzustand und ist noch nicht durch SAVE in die Datei geschrieben worden.
Eine Dateiverkürzung endet, wenn eines der folgenden Ergebnisse vorliegt:
das Ende des SAVE-Bereichs wurde erreicht
mindestens eine Seite liegt nicht in einem Fenster mit dem Attribut DIS-POS=*UNCHNG (kein Fenster oder Fenster mit DISPOS=*OBJECT)
mindestens eine Seite ist nicht im Initialzustand oder wurde schon einmal mit SAVE in die Datei geschrieben
Beispiel 1: Datei logisch verkürzen
Legende
1...10 | Seiten-Nummer (Datei/Fenster) |
aI | alter Inhalt |
bllS | bisher logisch letzte Seite |
F | FRESHLY_OBTAINED |
M | MODIFIED |
nI | neuer Inhalt |
nllS | neue logisch letzte Seite |
-- | undefinierter Inhalt |
Erläuterung
Auf die Fensterseiten 4-10 wurde noch nie zugegriffen oder sie wurden durch RESET in den Initialzustand (FRESHLY_OBTAINED) gebracht.
Seite 5 bildet das logische Dateiende. Auf die unmittelbar davor liegende Seite wurde noch nie zugegriffen (Seite 4). Die Datei wird durch SAVE um die Seiten 4 und 5 logisch verkürzt.
Vom Dateianfang bis zum neuen logischen Dateiende (Seiten 1 bis 3) werden modifizierte Seiten in die Datei geschrieben. Seiten in diesem Bereich, auf die noch nie zugegriffen wurde (Seitenzustand FRESHLY_OBTAINED; noch nicht durch eine vorausgegangene SAVE-Operation auf Platte geschrieben) werden in der Plattendatei gelöscht, d.h. mit X'00' initialisiert. Im Beispiel ist dies die Seite 1.
Beispiel 2: Datei logisch verkürzen
Legende
1...10 | Seiten (Datei/Fenster) |
aI | alter Inhalt |
bllS | bisher logisch letzte Seite |
M | modifiziert |
nI | neuer Inhalt |
nllS | neue logisch letzte Seite |
-- | undefinierter Inhalt |
Erläuterung
Jenseits der logisch letzten Seite (Seite 8) sind keine modifizierten Seiten im SAVE-Bereich. Daher ist keine Bedingung für eine Dateiverlängerung gegeben.
Da auf die logisch letzte Seite, d.h. die letzte Seite des SAVE-Bereichs (Seite 8) und die vorausgehenden Seiten des zweiten Fensters noch nicht zugegriffen wurde, sind diese Seiten im Initialzustand. Die Datei wird um diese Seiten verkürzt.
Die Verkürzung endet, wenn eine Seite entweder in keinem Fenster erscheint oder nicht in einem Fenster mit DISPOS=*UNCHNG.
Im Beispiel wurden die Seiten 1, 2 und 3 schon einmal durch SAVE in die Datei geschrieben. Daher behalten sie ihren alten Inhalt und werden nicht mit X'00' initialisiert.
Für den Fall, dass Seite 9 zum SAVE-Bereich gehört, wird die Datei bis zu einschließlich dieser Seite verlängert.