Die Zugriffsmethode DIV verwendet (wie auch FASTPAM) zur Parameterübergabe nicht den TU-FCB, sondern eine eigene Parameterliste.
Diese Parameterliste DIV(I) enthält für die Funktion „Dateieröffnung“ u.a. den Operanden LARGE_FILE. Dabei verhindert der Standardwert *FORBIDDEN den unkontrollierten Zugriff auf große Dateien. In der Parameterliste wird diese Funktion durch ein Bitfeld dargestellt, das mit B'0' (entspricht *FORBIDDEN) vorbelegt ist.
Damit wird für Programme, die in Versionen < OSD-BC V5.0 übersetzt wurden, die Vorbelegung mit dem Standardwert *FORBIDDEN garantiert.
Kennzeichnung der Zulässigkeit von großen Dateien
Zur Kennzeichnung der Zulässigkeit von großen Dateien dient der Makro DIV mit der Funktion OPEN. Auf Programmebene steuert der Operand LARGE_FILE die Zulässigkeit von großen Dateien.
Dieser Operand wird in die TFT (Task File Table) eingetragen und wird bei der Eröffnung der Datei mit OPEN ausgewertet.
Operation | Operanden |
|
|
LARGE_FILE
Der Operand LARGE_FILE bestimmt, ob die Dateigröße bei der Datenverarbeitung 32 GB überschreiten darf oder nicht. Der Operand wird in die TFT (Task File Table) eingetragen und erst beim Öffnen der Datei mit OPEN ausgewertet.
Bei der Form MF=L ist nur die direkte Angabe erlaubt.
= *FORBIDDEN
Voreinstellung: Die Dateigröße darf 32 GB nicht überschreiten.
= *ALLOWED
Die Dateigröße darf 32 GB überschreiten.
= adr / (r)
Ist die Adresse eines 1 Byte langen Feldes, das den Wert für LARGE_FILE enthält, bzw. das Register, welches den Wert enthält.
Angabe des ersten Blocks des Datenbereichs und der Dateilänge
Mit dem Operanden OFFSET und der Funktion MAP, SAVE oder RESET wird der erste Block des im virtuellen Adressraum abzubildenden Dateibereichs angegeben. In Abhängigkeit von der maximalen Größe einer Datei wird dieser Wert begrenzt.
Mit dem Operanden SPAN und der Funktion SAVE oder RESET wird die Länge des Dateibereiches in 4-KB-Blöcken angegeben. In Abhängigkeit von der maximalen Größe einer Datei wird dieser Wert begrenzt.
Operation | Operanden |
|
|
OFFSET
OFFSET legt zusammen mit SPAN den Dateibereich fest, für den das Fenster angelegt wird. Der Operand OFFSET kann mit den Funktionen MAP, SAVE oder RESET angegeben werden.
Voreinstellung:
OFFSET = 0
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 (binär) für die Angabe des ersten Blocks des im virtuellen Adressraum abzubildenden Dateibereichs enthält.
= *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 Equates 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.
SPAN
SPAN definiert zusammen mit OFFSET den Dateibereich, auf den sich SAVE bezieht. Der Operand SPAN kann mit den Funktionen SAVE oder RESET angegeben werden.
Voreinstellung:
SPAN = 0
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.
Über die Ausführung des Makros bzgl. großer Dateien informieren zusätzliche Returncodes:
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'01' | X'000C' | Der Wert für LARGE_FILE (OPEN) ist weder *ALLOWED noch *FORBIDDEN. |
X'00' | X'40' | X'0030' | Beim Zugriff auf eine Datei im Modus SHARUPD=YES wurde festgestellt, dass die Dateigröße den Wert von 32 GB übersteigt, beim OPEN für diese Datei wurde aber ein Überschreiten von 32 GB nicht erlaubt. |