Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Funktion SAVE

Die Funktion SAVE schreibt modifizierte Fensterseiten in die Datei, wenn sie in einem durch SPAN und OFFSET definierten Dateibereich liegen.

Wenn im definierten Bereich modifizierte Fensterseiten enthalten sind, die hinter dem logischen Dateiende liegen, wird die Datei verlängert: die letzte modifizierte Seite bestimmt das neue logische Dateiende. Bei einer Dateiverlängerung werden auch nicht modifizierte Fensterseiten in die Datei geschrieben, wenn sie sich zwischen dem bisherigen und dem neuen logischen Dateiende befinden. Ist für Teile des Bereichs, um den eine Datei verlängert wird, kein Fenster definiert, werden für diese Teilbereiche keine Seiten in die Datei geschrieben. Die entsprechenden Dateiseiten haben dann undefinierten Inhalt (zur logischen Dateiverlängerung siehe auch Handbuch „Einführung in das DVS“ [1]).

Wenn sich die logisch letzte Seite der Datei in einem mit DISPOS=*UNCHNG definierten Fenster befindet und wenn keine Bedingung vorliegt, die zu einer Dateiverlängerung führt, wird die Datei verkürzt, wenn noch nicht auf die logisch letzte Seite zugegriffen wurde, d.h. wenn sich die logisch letzte Seite noch im Initialzustand befindet. Die Verkürzung geht so weit, bis eine Seite gefunden ist, die nicht mehr im Initialzustand ist, oder bis eine Seite gefunden ist, die schon einmal durch SAVE in die Datei geschrieben wurde, oder bis eine Seite erreicht ist, die nicht zu einem mit DISPOS=*UNCHNG definierten Fenster gehört (zur logischen Dateiverkürzung siehe auch Handbuch „Einführung in das DVS“ [1]).

Eine durch SAVE in die Datei geschriebene Seite gilt nicht mehr als modifiziert, d.h. dass sie bei einem erneuten SAVE nur dann in die Datei geschrieben wird, wenn sie nach dem vorausgegangenen SAVE erneut modifiziert wurde.

Die SAVE-Funktion ist nicht erlaubt, wenn die Datei mit MODE=*INPUT eröffnet wurde.

Von der Funktion SAVE werden nur die nachfolgend beschriebenen Funktionsoperanden ausgewertet.

Format FCT=*SAVE

Operation

Operanden

DIV

[,FCT = *SAVE / adr / (r)]

[,ID = adr / (r)]

[,OFFSET = anzahl / adr / *equ / (r)]

[,SPAN = anzahl / adr / *equ / (r)]

MF = L

MF = E,PARAM = adr / (r)

MF = D[,PREFIX = D / pre]

MF = C / M

[,PREFIX = D / pre]

[,MACID = IVP / macid]

Operandenbeschreibung

FCT

Bestimmt die auszuführende DIV-Funktion.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= *SAVE
Mit der DIV-Funktion SAVE werden geänderter Fensterseiten in die Datei auf Platte (siehe auch "Funktion SAVE") zurückgeschrieben.

= adr
Ist die symbolische Adresse eines 1 Byte langen Feldes, das den Wert für die Funktion SAVE enthält (DIVPSAVE; siehe Layout der Parameterliste, "Funktion CLOSE").

= (r)
Ist ein Register, das den Wert für die Funktion SAVE enthält.

ID

Mit ID wird der OPEN angegeben, für den die Funktion SAVE ausgeführt werden soll.

Wird dieselbe Parameterliste benutzt wie bei OPEN, ist die Angabe von ID nicht erforderlich, da sich dann die Identifikation des OPEN bereits in der Parameterliste befindet. Die Identifikation ist im Feld DIVPID der Parameterliste enthalten.

Wird eine andere Parameterliste benutzt wie bei OPEN, kann durch ID die Identifikation zur Verfügung gestellt und in die neue Parameterliste übertragen werden (mit der Form MF=M des DIV-Makros).

ID kann nicht mit der MF=L-Form angegeben werden.

= adr
Ist die symbolischen Adresse eines 8 Byte langen Feldes, das die Identifikation enthält.

= (r)
Ist ein Register mit der Adresse eines 8 Byte langen Feldes, das die Identifikation enthält.

MACID

Zu MACID siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".

MF

Die Formen des MF-Operanden sind detailliert im Anhang ("Typen von Makroaufrufen") beschrieben.

OFFSET

OFFSET legt zusammen mit SPAN den Dateibereich fest, auf den sich SAVE bezieht.

  • OFFSET spezifiziert den Beginn des Dateibereiches. Mit OFFSET wird angegeben, ab welchem Block (ab welcher 4-KB-Seite) der Dateibereich beginnt.

  • SPAN gibt an, aus wie vielen 4-KB-Blöcken der Dateibereich (Bereichslänge) bestehen soll.

Auf alle Fensterseiten des mit OFFSET und SPAN definierten Dateibereichs wird die SAVE-Funktion angewendet.

Voreinstellung:         OFFSET = 0

Falls für SPAN kein Wert angegeben ist (oder SPAN = 0), wird der Bereich so gewählt, dass die letzte Seite des letzten für den OPEN definierten Fensters im Bereich enthalten ist. Falls weder OFFSET noch SPAN angegeben ist, werden also alle Seiten aller für den OPEN definierten Fenster berücksichtigt.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= anzahl
Gibt den ersten Block des im virtuellen Adressraum abzubildenden Dateibereichs an. Der Wert für OFFSET ist begrenzt durch die maximale Größe einer Datei in 4-KB-Seiten minus 1:

0 <= anzahl <= 8388606 bei LARGE_FILE=*FORBIDDEN

0 <= anzahl <= 1073741823 bei LARGE_FILE=*ALLOWED

= adr
Ist die symbolische Adresse eines 4 Byte langen Feldes, das den numerischen Wert für die Angabe des ersten Blocks des im virtuellen Adressraum abzubildenden Dateibereichs enthält (binär).

= *equ
Ist ein Equate, das den numerischen Wert für die Angabe des ersten Blocks des im virtuellen Adressraum abzubildenden Dateibereichs darstellt. Dem Namen des Equate muss das Zeichen „*“ vorausgehen.

= (r)
Ist ein Register, das den numerischen Wert für die Angabe des ersten Blocks des im virtuellen Adressraum abzubildenden Dateibereichs enthält.

PARAM

Zu PARAM siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".

PREFIX

Zu PREFIX siehe Beschreibung beim Format FCT=*OPEN, "Funktion OPEN".

SPAN

SPAN definiert zusammen mit OFFSET den Dateibereich, auf den sich SAVE bezieht.

Voreinstellung:         SPAN = 0

Zur Beschreibung von SPAN siehe Beschreibung beim Operanden OFFSET.

Bei der Form MF=L ist nur die direkte Angabe erlaubt.

= anzahl
Gibt die Länge des Dateibereiches in 4-KB-Blöcken an. Der Wert für SPAN ist begrenzt durch die maximale Größe einer Datei in 4-KB-Seiten:

0 <= anzahl <= 8388607 bei LARGE_FILE=*FORBIDDEN

0 <= anzahl <= 1073741824 bei LARGE_FILE=*ALLOWED

= adr
Ist die symbolische Adresse eines 4 Byte langen Feldes, das die Länge des Dateibereiches in 4-KB-Blöcken (binär) enthält.

= *equ
Ist ein Equate, das die Länge des Dateibereiches in 4-KB-Blöcken (binär) angibt. Dem Namen des Equates muss das Zeichen „*“ vorausgehen.

= (r)
Ist ein Register, das die Länge des Dateibereiches in 4-KB-Blöcken (binär) enthält.

Spezielle Parameter in der Parameterliste

Der folgende Parameter ist ein Returnparameter, auf den nur direkt über die Parameterliste zugegriffen werden kann. Es wird der Name der Parameterliste angegeben, der durch MF=D (ohne Angabe eines PREFIX) generiert wird:

DIVPSIZE

Da die Datei durch SAVE logisch verkürzt oder verlängert werden kann, enthält DIVPSIZE nach einem erfolgreichen SAVE-Aufruf die Nummer der logisch letzten 4-KB-Seite der Datei (1: die erste Seite der Datei ist die logisch letzte Seite; 0: die Datei ist leer).