Bei Zugriff des Makros FSTAT auf Pubsets mit großen Volumes, auf denen jedoch keine großen Dateien erlaubt sind, verhalten sich die Schnittstellen unverändert. Solche Zugriffe sind also immer problemfrei.
Probleme können entstehen, wenn der Zugriff auf Pubsets erfolgt, auf denen auch große Dateien erlaubt sind.
Der Makro FSTAT bietet folgende Schnittstellenvarianten an:
(a) | Version=0 | (entspricht Version 710, Default) | |
(b) | Version=1 | (entspricht Version 800) | ab BS2000-Version V8.0 |
(c) | Version=2 | ab OSD-BC-Version V1.0 | |
(d) | Version=3 | ab OSD-BC-Version V3.0 | |
(e) | Version=4 | ab OSD-BC-Version V9.0 | |
(f) | Version=5 | ab OSD/BC-Version V11.0 |
Schnittstellenvarianten ohne Umstellungsaufwand
Wenn ausschließlich FSTAT-Aufrufe mit Version 2 oder höher vorkommen, treten keine Inkompatibilitäten auf.
Die Varianten ab (c) geben die entsprechenden Daten (Extent-Liste und Datenfelder für File-Size und Last Page Pointer) als 4-Byte-Felder zurück. Diese Schnittstellen müssen bei Verwendung großer Dateien nicht umgestellt werden und sind von den weiteren Ausführungen nicht betroffen. Es muss jedoch das Semantikproblem im Abschnitt „OPEN" beachtet werden. Jeder Anwender dieser Schnittstelle sollte prüfen, ob dieses Problem auf seine Implementierung zutrifft.
Ebenfalls nicht betroffen sind folgende Varianten:
- FSTAT ...,VERSION=0,<teilqualfizierter Dateiname> FSTAT ...,VERSION=0,<Dateigenerationsgruppe mit GEN=YES> - FSTAT ...,VERSION=1,FNAM
Schnittstellenvarianten mit Prüfungs-/Umstellungsaufwand
Im Folgenden werden die verbleibenden Varianten von (a) und (b) näher betrachtet:
FSTAT ...,VERSION=0/1,SHORT/LONG
Diese Varianten liefern als Ausgabe die Kataloginformation im Format BS2000 V10.0.
Die Extent-Liste und die Datenfelder für File-Size und Last Page Pointer werden bei der Ausgabe nur mit 3 Bytes dargestellt. Layoutänderungen an diesen Schnittstellen sind aus Kompatibilitätsgründen nicht möglich.
Aufrufe, die große Objekte betreffen, führen zu einem Überlauf der 3-Byte-Datenfelder.
An diesem Punkt werden zwei, von der Treffermenge des FSTAT-Aufrufs abhängige Fälle unterschieden:
In der Treffermenge (Menge der selektierten Dateien) existiert keine Datei
>=
32 GB.FSTAT toleriert in diesem Fall den Überlauf des 3-Byte-Datenfeldes der PHP in der Ex-tent-Liste. Die nicht darstellbaren PHPs erhalten den Wert X'FFFFFF' zugewiesen. Es wird dabei davon ausgegangen, dass eine Auswertung der PHPs an den Schnittstellen nie oder äußerst selten erfolgt. Sollte diese Annahme ausnahmsweise nicht zutreffen, muss auf die Schnittstellenversion 2 oder 3 umgestellt werden.
Damit wird Folgendes erreicht:
Die Einführung großer Volumes kann kompatibel erfolgen, Anwenderprogramme müssen nicht geändert werden.
FSTAT-Aufrufe mit vollqualifizierten Pfadnamen werden kompatibel (bis auf den Überlauf der PHP in der Extent-Liste) unterstützt.
Es ist keine Umstellung nötig.
In der Treffermenge existiert mindestens eine Datei
>=
32 GB (FSTAT wird mit teilqualifiziertem Dateinamen oder Wildcards aufgerufen).Solche Aufrufe werden mit dem folgenden Returncode zurückgewiesen:
X'cc'
X'bb'
X'aaaa'
Erläuterung
X'00'
X'01'
X'0576'
Selektion enthält große Dateien.
Betroffen sind folgende Typen von FSTAT-Schnittstellen:
Typ
Bemerkung
I
FSTAT ...
per Default wird VERSION=0 gesetzt
II
FSTAT ...,VERSION=0
III
FSTAT ...,VERSION=1,SHORT
IV
FSTAT ...,VERSION=1,LONG
V
FSTAT ...,VERSION=1
per Default wird der Operand SHORT gesetzt
Diese Aufrufe müssen auf VERSION
>=
2 umgestellt werden. Generell wird empfohlen bei neuen Programmen die neuesten FSTAT Versionen zu nutzen. Dies gilt insbesondere, wenn beim FSTAT Net-Storage-Dateien (ab FSTAT VERSION=4) bzw. SAM-Node-Files (ab FSTAT VERSION=5) berücksichtigt werden sollen.
Übersicht über FSTAT-Aufrufe
FSTAT <vollqualifizierter Pfadname>,VERSION=0/1
nur Zugriff auf kleine Dateien (< 32 GB):
Wenn in der Treffermenge nur kleine Dateien existieren und der Überlauf des 3-Byte-Datenfeldes der PHP in der Extent-Liste keine Probleme bereitet, ist keine Aktion notwendig. Andernfalls muss auf VERSION > 2 umgestellt werden.
Zugriff auch auf große Dateien (
>=
32 GB):Falls der Aufruf über einen der Typen
I
bisV
erfolgt, muss auf VERSION=2/3 umgestellt werden, außer bei TypI
undII
mit Angabe einer Dateigenerationsgruppe und GEN=YES.
FSTAT <teilqualifizierter Pfadname oder Wildcards im Pfadnamen>,VERSION=0/1
in der Treffermenge liegen nur kleine Dateien (< 32 GB):
Wenn in der Treffermenge nur kleine Dateien existieren und der Überlauf des 3-Byte-Datenfeldes der PHP in der Extent-Liste keine Probleme bereitet, ist keine Aktion notwendig. Andernfalls muss auf VERSION > 2 umgestellt werden.
Achtung!Prüfen Sie sorgfältig, ob die Voraussetzungen immer erfüllt sind. Dies ist vermutlich nur bei Pfadnamen möglich, die Wildcards in der Katalogkennung haben und deren restliche Bestandteile vollständig (vollqualifiziert) sind.
in der Treffermenge können auch Dateien
>=
32 GB liegen:Falls der Aufruf über einen der Typen
III
bisV
erfolgt, muss auf VERSION=2/3 umgestellt werden.
Resümee
Bei Verwendung der FSTAT-Schnittstelle mit VERSION < 2 und FORM=LONG oder FORM=SHORT ist eine Umstellung auf die neueste Schnittstellenversion unter folgenden Randbedingungen erforderlich:
Im betroffenen Programm soll mit dem FSTAT-Aufruf auf große Dateien zugegriffen werden können.
Der Pfadname im FSTAT-Aufruf ist teilqualifiziert oder enthält Wildcards und es kann nicht ausgeschlossen werden, dass in der Treffermenge große Dateien enthalten sind. Besonders kritisch sind hier Aufrufe mit Wildcard in der Katalogkennung.
Dabei müssen neben der Schnittstelle gegebenenfalls auch Datenstrukturen im Programm umgestellt werden.
Steuerung über Systemparameter FST32GB
FST32GB hat nur Einfluss auf folgende FSTAT-Schnittstellen:
Version=0 (entspricht Version=710) bei Angabe eines vollqualifizierten Dateinamens (jedoch nicht bei Angabe einer Dateigenerationsgruppe mit GEN=YES)
Version=1 (entspricht Version=800), bei der nicht der Operand FNAM spezifiziert wurde
Der Systembetreuer stellt systemglobal ein, ob das Vorhandensein einer Datei >=
32 GB in der Menge der selektierten Dateien zur Abweisung des FSTAT-Aufrufs mit dem Returncode X'00000576'
führt (FST32GB=0, Standardeinstellung) oder ein Überlauf der 3-Byte-Datenfelder generell toleriert wird (FST32GB=1). Im letzten Fall wird den nicht darstellbaren Datenfeldern der Wert X'FFFFFF' zugewiesen.
Hinweis
Der Systemparameter FST32GB wird nicht ausgewertet, wenn der FSTAT-Indikator (siehe unten) gesetzt ist.
Steuerung über FSTAT-Indikator
Ein Verhalten wie bei FST32GB=1, also das Ignorieren des Überlaufs, kann schnittstellenspezifisch bei den FSTAT-Typen I
bis V
über einen Indikator aktiviert werden.
Hinweis
Der FSTAT-Indikator besitzt eine höhere Priorität als der Systemparameter FST32GB. Wird der FSTAT-Indikator gesetzt, wird FST32GB nicht ausgewertet.
Der Indikator muss direkt in der Parameterliste gesetzt werden; eine Unterstützung im FSTAT-Makro ist nicht vorhanden.
Beschreibung der Bits in den entsprechenden Dsects:
FSTAT MF=D,PARMOD=31,VERSION=710 IDBFLAG2 DS X FLAGS 2 IDBLOPYE EQU X'04' 2-2 S LARGE PUBSET ACCESS=YES FSTAT MF=D,PARMOD=31,VERSION=800 IFLAG0 DC B'10001100' ILOPY EQU X'04' 2-2 S LARGE PUBSET ACCESS=YES