Dieser Abschnitt beschreibt die Merkmale neu entstehender Empfangsdateien von folgendem Typ:
PS-Dataset
VSAM-Datei
PO-/PDSE-Datasets, die für eine Empfangsdatei
der Art PO-/PDSE-Member neu angelegt werden
Folgende Regeln zur Festlegung der Merkmale einer neu entstehenden Empfangsdatei (d.h. in den Fällen "N", "L + N" sowie "Ü" in der obenstehenden Tabelle) gelten nur, wenn die Empfangsdatei ein PS-Dataset oder eine VSAM-Datei ist oder wenn für eine Empfangsdatei der Art PO-/PDSE-Member das PO-/PDSE-Dataset selbst neu angelegt werden muss.
(Beim Transfer eines vollständigen PO-/PDSE-Datasets bestimmen diese Regeln nur die Merkmale des zum Transfer erzeugten temporären PS-Datasets. Wie die Eigenschaften des als Empfangsdatei erzeugten PO-/PDSE-Datasets bestimmt werden, ist im Folgenden beschrieben.)
Satzformat
Sowohl bei homogener als auch bei heterogener Kopplung wird das Satzformat-Attribut der Sendedatei - F(ixed), V(ariable) oder U(ndefined) - übertragen. Daraus werden bei den verschiedenen Arten von Empfangsdateien folgende Merkmale abgeleitet:
PS-Dataset
Die Empfangsdatei erhält das übertragene Satzformat-Attribut.VSAM-Datei
F
führt zu gleichen Werten für AVGLRECL und MAXLRECL
(AVGLRECL: Average Logical Record Length;
MAXLRECL: Maximum Logical Record Length)V
die übertragene Satzlänge bestimmt die MAXLRECL;
AVGLRECL = MAXLRECL - 1U
kann nicht abgebildet werden --> Fehlermeldung FTR2096
PO-/PDSE-Member
Wenn das ganze PO-/PDSE-Dataset neu entsteht, so erhält es das übertragene Satzformat-Attribut. Existiert das PO-/PDSE-Dataset bereits, so müssen die Attribute der Sendedatei und des Datasets zusammenpassen.
Das Satzformat FS wird von openFT (z/OS) nicht unterstützt.
Hinweise
Beim Transfer einer Datei aus einem Windows- oder Unix-System (Sendedatei) ins z/OS hängt das übertragene Satzformat-Attribut von der Angabe für DATA-TYPE im NCOPY-Kommando ab:
DATA-TYPE=*CHAR (Standardwert), *USER --> Satzformat-Attribut VB
DATA-TYPE=*BIN --> Satzformat-Attribut U
Die Sätze von PS-Dateien und von Elementen einer PO- oder PDSE-Datei mit undefinierter Satzlänge (RECFORM=U) werden in den folgenden Fällen in kleinere Sätze aufgeteilt:
Die Länge eines Satzes der Sendedatei ist größer als die Blocklänge (BLKSIZE) der zu erweiternden Empfangsdatei (WRITE-MODE=
*EXTEND-FILE).Die Länge eines Satzes der Sendedatei ist größer als die maximal mögliche Länge der Übertragungseinheit zwischen Sendesystem und Empfangssystem.
Die Länge eines Satzes der Sendedatei ist größer als die maximale Blocklänge im Empfangssystem.
Das Empfangssystem kennt keine Satzstruktur.
In allen diesen Fällen bleibt die Bytefolge der Daten erhalten.
Blocklänge
Die Blocklänge der Sendedatei wird nur bei homogener Kopplung übertragen.
Bei heterogener Kopplung (und wenn bei homogener Kopplung die Blocklänge der Sendedatei wegen des Plattentyps nicht für die Empfangsdatei übernommen werden kann) wird eine Standard-Blocklänge von 2048 (oder ein ganzzahliges Vielfaches davon) angenommen. (Es wird das kleinste ganzzahlige Vielfache von 2048 gewählt, bei dem ein Satz maximaler Länge - MAXLRECL, siehe unten - in einen Block passt.)
Für die verschiedenen Arten von Empfangsdateien gilt:
PS-Dataset
Die Empfangsdatei wird mit der o.g. Blocklänge angelegt.VSAM-Datei
Die o.g. Blocklänge wird auf die Control Interval Size (CISIZE) wie folgt abgebildet:Blocklänge < 8192: Der Wert für CISIZE wird auf das nächste ganzzahlige Vielfache von 512 aufgerundet.
Blocklänge >= 8192: Der Wert für CISIZE wird auf das nächste ganzzahlige Vielfache von 2048 aufgerundet, maximal auf 32760.
PO-/PDSE-Member
Wenn das ganze PO-/PDSE-Dataset neu entsteht, so erhält es die o.g. Blocklänge.
Satzlänge
Sowohl bei homogener als auch bei heterogener Kopplung wird die Satzlänge der Sendedatei übertragen. Die Satzlängenangabe wird für die verschiedenen Satzformate der Empfangsdatei wie folgt interpretiert:
F(ixed)
Jeder Satz hat diese Länge.V(ariable)
Satzlänge inclusive 4 Byte Längenfeld>0
Ein Satz kann maximal diese Länge haben.=0
Ein Satz kann beliebig lang sein, maximal jedoch 32752 Bytes (ohne
Satzlängenfeld). Es gibt jedoch Einschränkungen, die vom Dateityp abhängen, siehe unten.
U(ndefined)
keine Bedeutung ( = 0 )
Beim Format V ist jedoch im z/OS für PS-, PO- , PDSE- und auch VSAM-Dateien die Angabe einer maximalen Länge (!=
0) obligat. Deshalb muss für die Fälle Satzformat = V mit übertragener Satzlänge = 0 (wie sie bei heterogener Kopplung auftreten können) von openFT (z/OS) selbst ein brauchbarer Wert für die maximale Satzlänge gebildet werden. openFT (z/OS) wählt diesen Wert in Abhängigkeit von der Art der Empfangsdatei. Als Ausgangswert wird dabei der Wert 259 (255 + 4 Bytes Satzlängenfeld) verwendet.
Insgesamt gilt für die verschiedenen Arten von Empfangsdateien:
PS-Dataset
übertragene Satzlänge > 0:
Die Datei wird mit dieser (maximalen) Satzlänge angelegt.übertragene Satzlänge = 0:
U-Format: o.k.
F-Format:
Diese Kombination von Attributen kann bei der Sendedatei nicht auftreten.V-Format:
Wenn der längste in der Datei enthaltene Satz nicht länger als 259 byte ist (incl. 4 byte Satzlängenfeld), wird die Datei mit einer Satzlänge von 259 byte angelegt. Ist die größte Satzlänge in der Datei (incl. 4 byte Satzlängenfeld) größer als 259, aber höchstens entsprechend der Blocklänge - 4, so wird diese als maximale Satzlänge genommen. Sätze mit einer größeren Länge können in diesem Fall nicht übertragen werden und führen zu einem Abbruch der Dateiübertragung mit einer Fehlermeldung.
Wenn Dateien aus dem BS2000 empfangen werden, übernimmt z/OS die dortige Blockgröße als Satzlänge.
PO-/PDSE-Member
Wenn das ganze PO-/PDSE-Dataset neu entsteht, so gilt:
übertragene Satzlänge > 0:
Das PO-/PDSE-Dataset wird mit dieser (maximalen) Satzlänge angelegt.übertragene Satzlänge = 0:
U-Format: o.k.
F-Format:
Diese Kombination von Attributen kann bei der Sendedatei nicht auftreten.V-Format:
Das PO-/PDSE-Dataset wird mit einer maximalen Satzlänge von 259 (255+4) angelegt.
VSAM-Datei
übertragene Satzlänge > 0:
F-Format:
MAXLRECL = übertragene Satzlänge
AVGLRECL = übertragene SatzlängeV-Format:
MAXRECL = übertragene Satzlänge - 4 (da Längenfeld nicht eingerechnet)AVGLRECL = MAXLRECL - 1
übertragene Satzlänge = 0:
F-Format:
Diese Kombination von Attributen kann bei der Sendedatei nicht auftreten.V-Format:
MAXLRECL = 32752 (Längenfeld nicht eingerechnet)
AVGLRECL = 255 (da Längenfeld nicht eingerechnet)
Wird beim Transfer ein Satz empfangen, der länger als die jeweils angelegte maximale Satzlänge der Empfangsdatei ist, so führt dies zu einem Abbruch des Transfers mit einer Fehlermeldung.
Hinweise
Die maximale Länge zu übertragender Sätze darf folgende Werte nicht überschreiten:
32760 byte bei Dateien mit fixer Satzlänge
32752 byte bei Dateien mit variabler Satzlänge (Satzlänge ohne Satzlängenfeld)
für openFT <= V10.0: 32248 byte bei komprimierter Übertragung (COMPRESS = *BYTE-REPETITION)
Aus dem zuvor beschriebenen folgt, dass Sendedateien aus Fremdsystemen, die im Format V mit Satzlänge = 0 übertragen werden sollen, unter folgenden
Voraussetzungen nicht in neu angelegte Empfangsdateien abgelegt werden können:Die Empfangsdatei ist ein neu angelegtes PS-Dataset, und die Sendedatei enthält Sätze mit mehr als 2040 Zeichen (netto) bei BS2000-Sendedateien, bzw. 255 Zeichen bei Windows- oder Unix-Sendedateien.
Die Empfangsdatei ist ein Member in einem neu angelegten PO-/PDSE-Dataset, und die Sendedatei enthält Sätze mit mehr als 255 Zeichen (netto).
In beiden Fällen wird der Transfer mit einer Fehlermeldung abgebrochen.
Im z/OS gilt für alle Member eines PO-/PDSE-Datasets dieselbe maximale Satzlänge. Bei LMS-Bibliotheken im BS2000 hingegen ist die maximale Satzlänge
elementspezifisch. Deshalb kann es zu folgender Situation kommen:Es wird ein LMS-Element in ein PO-/PDSE-Member übertragen. Das PO-/PDSE-Dataset existiert noch nicht. Es wird daher mit der übertragenen maximalen Satzlänge angelegt.
Nun soll ein zweites Element derselben LMS-Bibliothek in dasselbe PO-/PDSE-Dataset übertragen werden. Wenn in diesem LMS-Element (dessen maximale Satzlänge von derjenigen des ersten Elements abweichen kann) mindestens ein Satz enthalten ist, dessen Länge größer ist als die maximale Satzlänge des ersten LMS-Elements, so führt dies zu einem Abbruch des Transfers mit einer Fehlermeldung, denn die Länge dieses Satzes ist nicht verträglich mit der maximalen Satzlänge des PO-/PDSE-Datasets, die aus der beim ersten Transfer übertragenen maximalen Satzlänge des ersten Elements bestimmt wurde.
Sollen also mehrere Elemente derselben LMS-Bibliothek in Member desselben PO-/PDSE-Datasets übertragen werden, so muss das Element mit der größten maximalen Satzlänge zuerst übertragen werden.
Spanned-Records-Attribut
Das Spanned-Records-Attribut der Sendedatei wird nur bei homogener Kopplung übertragen. Das übertragene Spanned-Records-Attribut wird nur beim Anlegen von Non-VSAM-Dateien (PS-Dataset, PO-/PDSE-Member) mit variabel langen Sätzen berücksichtigt. Es wird dann bei der Empfangsdatei wie bei der Sendedatei gesetzt oder nicht gesetzt.
Bei heterogener Dateiübertragung wird das Spanned-Records-Attribut genau dann gesetzt, wenn LRECL > BLKSIZE-4 ist.
Wenn vom Partnersystem der Wert 0 für die Satzlänge der Sendedatei übertragen wird, wird das Spanned-Records-Attribut nie gesetzt.
Wenn beim Schreiben in eine Datei (PS-Datei oder PO-/PDSE-Bibliothek) mit variabler Satzlänge, bei der das Spanned-Records-Attribut nicht gesetzt ist, ein Satz mit
LRECL > BLKSIZE-4 geschrieben werden soll, wird die Übertragung mit einer Fehlermeldung abgebrochen.
Bei VSAM-Dateien entspricht dem Spanned-Records-Attribut das Dateiattribut SPANNED. Es wird bei einer VSAM-Empfangsdatei genau dann gesetzt, wenn die übertragene Satzlänge (incl. Längenbyte) größer ist als der bereits aufgerundete Wert für CISIZE - 7 (VSAM Block Overhead).
Umgekehrt gilt jedoch: Wird bei homogener Übertragung eine Non-VSAM-Datei
als Empfangsdatei erzeugt und ist die Sendedatei eine VSAM-Datei, bei der das SPANNED-Attribut gesetzt ist, so wird bei der Empfangsdatei das Spanned-Records-Attribut ebenfalls gesetzt.
Blocked-Records-Attribut
Das Blocked-Records-Attribut ist nur für Non-VSAM-Dateien (PS-Dataset, PO-/PDSE-Member) von Bedeutung. Das Blocked-Records-Attribut der Sendedatei wird nur bei homogener Kopplung übertragen. Es wird dann bei der Empfangsdatei wie bei der Sendedatei gesetzt oder nicht gesetzt.
Bei heterogener Dateiübertragung wird das Blocked-Records-Attribut immer gesetzt.
Hinweis
Wird bei homogener Übertragung eine Non-VSAM-Datei als Empfangsdatei erzeugt und ist die Sendedatei eine VSAM-Datei, so wird bei der Empfangsdatei das Blocked-Records-Attribut immer gesetzt (VSAM wird in diesem Fall als "Blocked" interpretiert).
Control-Character-Attribute
Control-Character-Attribute (ANSI- und Machine-Control-Characters) werden nur bei Non-VSAM-Dateien berücksichtigt.
Nur bei homogener Kopplung werden die Control-Character-Attribute der Sendedatei übertragen und beim Erzeugen der Empfangsdatei übernommen.
Anzahl der Directory-Blöcke
PS-Dataset, VSAM-Datei: entfällt
PO-/PDSE-Member
Wenn das ganze PO-/PDSE-Dataset neu entsteht, wird ein vom FT-Verwalter festgelegter Wert für die Anzahl der Directory-Blöcke verwendet. Hat der FT-Verwalter keine Vorgaben gemacht, wird für die Anzahl der Directory-Blöcke der Default-Wert 20 verwendet.
Ein wichtiges Merkmal für ein PO-Dataset ist jedoch nicht in den "unloaded Data" enthalten, sondern muss auf andere Weise bestimmt werden:
Anzahl der Directory-Blöcke bestimmen
Wenn die bei homogener Kopplung übertragene Kenngröße "Anzahl der Directory-Blöcke" einen gültigen Wert (ungleich Null) hat, wird das neue PO-Dataset mit der entsprechenden Anzahl von Directory-Blöcken angelegt.
Dies ist dann der Fall, wenn auch die Sendedatei ein vollständiges PO-Dataset (im NCOPY-Kommando durch ":L:" oder ":O:" gekennzeichnet) ist. In diesem Fall erhält die Empfangsdatei die gleiche Anzahl von Directory-Blöcken wie die Sendedatei.
Wenn jedoch die übertragene Kenngröße "Anzahl der Directory-Blöcke" keinen gültigen Wert hat (z.B. weil die Sendedatei ein PS-Dataset ist, das ein PO-Dataset im "unloaded"-Format enthält), so wird die Anzahl der Directory-Blöcke für das neu anzulegende PO-Dataset wie beim Transfer eines PO-Members durch einen vom FT-Verwalter vorgegebenen Wert bzw. den Default-Wert 20 bestimmt.