openFT kann absolute und relative Dateigenerationen (Generation Data Set) von PS-Datasets übertragen. openFT legt jedoch keine neuen Dateigenerationsgruppen (Generation Data Group) an; diese müssen schon vor dem Transfer existieren. Außerdem muss auf dem gleichen Datenträger, auf dem die Dateigenerationsgruppe abgelegt ist, auch ein DSCB-Modell (DSCB: Data Set Control Block) existieren. (Ein DSCB-Modell wird automatisch und korrekt angelegt, wenn eine Dateigenerationsgruppe mittels TSO-Kommando in einem Benutzerkatalog angelegt wird. Dies ist nicht der Fall, wenn die Dateigenerationsgruppe im "master catalog" angelegt wird. In diesem Fall muss ein DSCB-Modell mittels JES JCL explizit angelegt werden, wie in der IBM-Literatur beschrieben; siehe z.B. VSAM Catalog Administration, Access Method Reference.)
openFT kann keine vollständigen Dateigenerationsgruppen übertragen.
Absolute Dateigeneration
Der Name einer absoluten Dateigeneration ist im NCOPY-Kommando in der bei TSO üblichen Form anzugeben:
vollqualifiziert: 'Generationsgruppe.GmmmmVnn'
teilqualifiziert: Generationsgruppe.GmmmmVnn
Generationsgruppe
Name der Dateigenerationsgruppe
max. 35 Zeichen mit "first level qualifier" (vollqualifiziert)
max. 27 Zeichen ohne "first level qualifier" (teilqualifiziert)
mmmm
absolute Generationsnummer (Ziffer von 0000 bis 9999)
nn
Versionsnummer (Ziffer von 00 bis 99)
Relative Dateigeneration
Auch der Name einer relativen Dateigeneration ist in der bei TSO üblichen Form anzugeben:
vollqualifiziert: 'Generationsgruppe(0)' bzw. 'Generationsgruppe(±m)'
teilqualifiziert: Generationsgruppe(0) bzw. Generationsgruppe(±n)
Generationsgruppe
Name der Dateigenerationsgruppe (siehe oben)
(...)
relative Generationsnummer:
(0)
aktuelle Generation
(±m)
m = 1..255 (bei vollqualifizierter Angabe)
(±n)
n = 1..99 (bei teilqualifizierter Angabe)
Im Folgenden werden die Fälle "(±m)" und "(±n)" zu "(±n)" zusammengefasst.
Bei Angabe eines relativen Dateigenerationsnamens bildet openFT den absoluten Dateigenerationsnamen nach folgenden Regeln:
Generationsnummer
Die absolute Generationsnummer wird aus der aktuellen Generationsnummer und der angegebenen relativen Generationsnummer gebildet:
relative Generationsnummer (0):
absolute Generationsnummer = aktuelle Generationsnummer
relative Generationsnummer (-n):
absolute Generationsnummer = Generationsnummer des "n-ten Vorgängers" der aktuellen Dateigeneration (wird mit Hilfe des LISTCAT-Kommandos bestimmt)
relative Generationsnummer (+n):
absolute Generationsnummer = aktuelle Generationsnummer + n modulo 9999
(Für eine leere Dateigenerationsgruppe ist G0000 die aktuelle Generationsnummer.)
Die Umsetzung der relativen in eine absolute Generationsnummer erfolgt für Dateien des lokalen Systems zum Zeitpunkt der Auftragsannahme, für Dateien des fernen Systems beim Beginn der Auftragsbearbeitung. Bitte beachten Sie dazu auch die Hinweise am Ende dieses Abschnitts.
Versionsnummer
Für neu eingerichtete Empfangsdateien wird die Versionsnummer auf V00 gesetzt.
Ist die Empfangsdatei schon vorhanden, wird für WRITE-MODE=*REPLACE oder *EXTEND der bisherige Dateiname übernommen (kein Hochzählen der Versionsnummer).
Existenz von Sende- und Empfangsdatei bei der Übertragung relativer Dateigenerationen
Wird eine relative Dateigeneration als Sendedatei angegeben, so muss diese natürlich existieren.
Die Angabe einer nicht existierenden Dateigeneration als Sendedatei (z.B. einer positiven relativen Dateigeneration (+n)) wird daher mit einer Fehlermeldung quittiert.
Dateigenerationen werden, unabhängig vom WRITE-MODE, nur dann neu angelegt (Empfangsdatei), wenn eine relative Dateigeneration > 0 angegeben wurde. Insbesondere können Sie also in einer leeren Dateigenerationsgruppe keine "aktuelle" Dateigeneration (0) erzeugen.
Die Angabe einer relativen Dateigeneration <= 0 für eine Empfangsdatei bei gleichzeitiger Angabe von WRITE-MODE=*NEW führt zu einer Fehlermeldung.
Mit der Angabe einer relativen Dateigeneration <= 0 für eine Empfangsdatei bei gleichzeitiger Angabe von WRITE-MODE=*REPLACE oder *EXTEND kann nur eine existierende Dateigeneration überschrieben bzw. verlängert werden. Existiert die entsprechende Dateigeneration nicht, so wird eine Fehlermeldung ausgegeben.
Ursachen der Fehlermeldung FTR0020
In vielen der oben genannten Fehlerfälle, die im Zusammenhang mit Dateigenerationen auftreten können, wird die Meldung FTR0020 ausgegeben:
FTR0020 OPENFT: ’file’ not found
Diese Fehlermeldung kann folgende Ursachen haben:
Die Dateigenerationsgruppe der Sende- oder Empfangsdatei existiert nicht.
Es wurde die relative Generationsnummer (0) angegeben, aber die Generationsgruppe der Sende- oder Empfangsdatei ist leer.
Es wurde eine relative Generationsnummer (-n) angegeben, aber die betreffende Dateigeneration (Sende- oder Empfangsdatei) existiert nicht.
Bitte beachten Sie auch folgende Hinweise zur Übertragung von relativen Dateigenerationen:
Beim Überschreiten der absoluten Generation G9999 wird modulo 9999 weitergezählt (siehe oben). Dies kann zu unvorhergesehenen Ergebnissen führen, falls ältere Generationen mit der so errechneten absoluten Nummer schon vorhanden sind.
Beim Anlegen einer neuen Generation kann es vorkommen, dass die älteste Generation bzw. alle älteren Generationen gelöscht werden (abhängig von den beim Anlegen der Generation Data Group im DEFINE-GENERATIONDATAGROUP-Kommando angegebenen Parametern LIMIT, EMPTY/NOEMPTY und
SCRATCH/NOSCRATCH).Die Umsetzung des relativen in einen absoluten Dateigenerationsnamen erfolgt für Dateien des lokalen Systems zum Zeitpunkt der Auftragsannahme, für Dateien des fernen Systems beim Beginn der Auftragsbearbeitung. Eine einmal gefundene Zuordnung wird für die Dauer der Auftragsbearbeitung beibehalten! Dies bedeutet:
Werden nach Bildung des absoluten Dateigenerationsnamens neue Dateigenerationen erzeugt (z.B. durch einen parallel ablaufenden Batch-Job), so wird die dadurch entstehende Verschiebung der "aktuellen"
Dateigenerationsnummer nicht berücksichtigt.In der Ergebnisliste und im Transfer-Logging (Funktion für den FT-Verwalter, siehe SHandbuch "openFT (z/OS) - Installation und Betrieb") erscheint der relative Dateigenerationsname so, wie er im NCOPY-Kommando angegeben wurde.
In einem NSTATUS- oder NCANCEL-Kommando müssen Sie den relativen Dateigenerationsnamen ebenfalls so wie im ursprünglichen NCOPY-Kommando angeben.
Es gibt keine Absicherung gegen die Möglichkeit, dass zwei Transferaufträge auf dieselbe Generation Data Group zugreifen und es dadurch zu vom Benutzer unvorhergesehenen Verschiebungen der Generationsnummerierung kommt.
In einem FT-System, das die Angabe relativer Dateigenerationen für REM=*MSP nicht unterstützt, kann die Syntax für REM=*ANY verwendet werden, um auf eine relative Dateigeneration als Sende- oder Empfangsdatei in einem Partnersystem vom Typ openFT (z/OS) zuzugreifen.
Auf relative Dateigenerationen kann nicht von Inbound-Dateimanagement-Aufträgen zugegriffen werden.