Der Mainframe-Connector unterstützt zwei Versionen des Copybook-Parsers:
- Nativer Copybook-Parser: Der native Copybook-Parser implementiert einen ANTLR4-basierten Parser, unterstützt COBOL-Copybooks und ist die empfohlene Version des Parsers.
- Alte Copybook-Datei-Parser: Der alte Copybook-Datei-Parser ist eine ältere Version des Parsers, die nur sehr wenige Copybook-Formate unterstützt.
Sie können anhand Ihres Copybooks festlegen, welchen Parser Sie verwenden möchten. Weitere Informationen Informationen zur Definition des Parsers, den du verwenden möchtest, findest du unter Definieren Sie den Copybook-Parser.
Nativer Copybook-Parser
Der native Copybook-Parser ist die neueste Version des Parsers und wird standardmäßig verwendet. Der native Copybook-Parser implementiert einen ANTLR4-basierten Parser und unterstützt COBOL-Copybooks.
In diesem Abschnitt sind die Vorverarbeitungsaufgaben aufgeführt, die vom Vom nativen Copybook-Parser unterstützte Datentypen sowie die Nutzungsbeschränkungen.
Vorverarbeitung
Bevor Sie ein Copybook parsen, wird das native Copybook Der Parser verarbeitet die Daten vor und führt die folgenden Aufgaben aus:
- Entfernt Kommentarzeilen.
- Behebt die Zeilenfortsetzung.
- Die Bereiche für die Zeilennummern und Spalte 73 werden ausgeblendet.
- Erhält präprozessorspezifische Anweisungen wie
EJECT
,SPACE
undTITLE
. Diese Felder werden geparst, ignoriert. Copybooks mit Präprozessorparametern, die vonCOPY REPLACING
werden vom Nativer Copybook-Parser. In diesen Textbüchern sind von einem Doppelpunkt (:) umgeben.
Unterstützte Datentypen und Einschränkungen
Im Folgenden finden Sie die vom Parser für das native Copybook unterstützten Datentypen und die Einschränkungen für die Verwendung:
- Level 66 (ALIAS) oder 77 (Eigenständig) werden nicht unterstützt.
- Verwenden Sie nur PICTURE-Felder. Die folgenden PICTURE-Felder werden unterstützt:
- Pic A, Pic B, Pic G (DBCS), Pic N (national oder DBCS), Pic U (UTF8), Pic X und zoned decimal (maximale Genauigkeit 38, maximale Skala 38)
- IBM-Hexadezimal-Gleitkommazahlen (HFP) werden unterstützt.
- REDEFINES werden nicht unterstützt.
- Verwenden Sie nur die folgenden COMP-Felder. ALIGN und OCCURS werden nicht unterstützt.
- COMP
- COMP4
- BINARY
- COMP3
- VORABGESCHLOSSENE GRUNDLAGEN
- DATE und TIMESTAMP werden unterstützt.
- Nullindikatoren werden unterstützt.
- Die Felder „Pic G“ und „Pic N“ für Double-Byte-Zeichensätze (DBCS) werden unterstützt und sollten anstelle von „Pic T“ verwendet werden, das jetzt eingestellt wurde. Bis
das Feld Pic N als DBCS verwenden, ohne
USAGE DISPLAY-1
anzugeben, müssen Sie die UmgebungsvariableNSYMBOL
aufDBCS
Standardmäßig istNSYMBOL
aufNATIONAL
festgelegt. Dadurch wirdUSAGE NATIONAL
auf Pic N-Felder gesetzt, die keineUSAGE
-Klausel haben. Hinweis:NSYMBOL
kann nur aufNATIONAL
oderDBCS
festgelegt werden. - Zeichenstrings mit variabler Länge werden unterstützt.
- Die SIGN-Klausel wird unterstützt.
- Alle Felder müssen ausgerichtet sein und es darf nur eine einzige Einzugebene verwendet werden.
- Kommentare werden unterstützt.
Unterstützung für Datums- und Zeitstempelfelder
Der Mainframe-Connector unterstützt das Verschieben von Datums- und Zeitstempeldaten zwischen BigQuery und anderen Systemen. Dazu müssen Sie Umgebungsvariablen definieren, die mit dem Wort SUFFIX
beginnen und das folgende Format haben:
SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"
In der folgenden Liste wird das Format genauer beschrieben:
SUFFIX_SUFFIX_STRING
ist die Umgebungsvariable, die mit denen Sie Datums- und Zeitstempeldaten definieren können. Das SUFFIX_STRING den Suffixen-SUFFIX_STRING
oder_SUFFIX_STRING
, die entweder als Datum oder als Zeitstempel, wenn er als Suffix eines Feldnamens in einem Copybook verwendet wird. Stellen Sie sicher, dass der SUFFIX_STRING darf keinen Binde- oder Unterstrich enthalten.command
: Definiert den Decoder, der zum Parsen des ein. Folgende Befehle werden unterstützt:date-converter
undtimestamp-converter
.--format
: Ein Parameter, der das Format des Datums oder Zeitstempel. Sie können bis zu fünf verschiedene Formate angeben, die durch Kommas getrennt werden. Wenn mehrere Formate mit einer bestimmten Eingabe übereinstimmen, wird das erste übereinstimmende Format zum Laden in BigQuery verwendet. Wenn mehrere Formate für wird nur das erste Format verwendet. Weitere Informationen zu gültigen Formaten finden Sie unter Unterstützte Datums- und Zeitstempelformate.--timezone
: Ein optionaler Parameter für den TypTIMESTAMP
. Standardmäßig ist die Zeitzone UTC. Weitere Informationen zu unterstützten Zeitzonenformaten finden Sie unter Unterstützte Zeitzonenformate.--omitsuffix
(optional): Wenn dieser Parameter angegeben ist,-SUFFIX_STRING
oder_SUFFIX_STRING
wird aus dem Feldnamen, der in BigQuery angezeigt wird.
Wenn Sie einen Alias für ein SUFFIX_SUFFIX_STRING
hinzufügen möchten, können Sie die Umgebungsvariable SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
festlegen.
Beispiele:
- Wenn Sie eine Umgebungsvariable als
SUFFIX_DT8="date-converter --format yyyyMMdd"
definieren, ist ein Feld mit dem Suffix-DT8
oder_DT8
ein Feld vom TypDATE
in BigQuery. Das Muster istyyyyMMdd
- Wenn Sie eine Umgebungsvariable als
SUFFIX_DT10="date-converter --format MM-dd-yyyy"
definieren, ist ein Feld mit dem Suffix-DT10
oder_DT10
in BigQuery ein Feld vom TypDATE
und sein Muster istMM-dd-yyyy
. - Wenn Sie eine Umgebungsvariable als
SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'"
, ein mit dem Suffix-DT
oder_DT
ist ein Feld vom TypDATE
in BigQuery. Das Muster ist entwederMM-dd-yyyy
oderMM/dd/yyyy
. - Wenn Sie zwei Umgebungsvariablen als
SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"
undSUFFIX_TS=$SUFFIX_TIMESTAMP
, ein Feld mit einem der folgenden Suffixe:-TIMESTAMP
,_TIMESTAMP
,-TS
oder_TS
sind einTIMESTAMP
in BigQuery eingeben. Das Muster istyyyy-MM-dd HH:mm:ss.SSSSSS
mit der ZeitzoneAmerica/New_York
.
Unterstützung für Null-Indikatoren
Der Mainframe-Connector unterstützt Null-Indikatoren ab Version 5.13.0. Wenn Sie Nullindikatoren verwenden möchten, müssen Sie Umgebungsvariablen definieren, die mit dem Wort SUFFIX
im folgenden Format beginnen:
SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"
NULL_INDICATOR_NAME entspricht den Suffixen
-NULL_INDICATOR_NAME
oder _NULL_INDICATOR_NAME
, die
interpretiert als Null-Indikator, wenn sie als Suffix eines Feldnamens in einem
Copybook.
In der folgenden Liste werden die Parameter beschrieben, die Sie mit diesen Umgebungsvariablen verwenden können:
command
: Der Wert mussnull-indicator
sein.–null-value
: Der Wertnull indicator
signalisiert, dass Das Feld, auf das verwiesen wird, ist null. Der Wert von--null-value
muss entweder ein String oder eine Dezimalzahl sein.–not-null-value
(optional): Wenn dieses Flag angegeben ist, wird der Wertnull indicator
signalisiert, dass das Feld, auf das verwiesen wird, nicht null ist. Wenn Dieser Parameter ist nicht festgelegt. Jeder Wert, der nicht–value-null
ist, wird akzeptiert. Der Wert von–not-null-value
muss entweder ein String oder eine Dezimalzahl sein.–keep
: (Optional) Wenn dieses Flag angegeben ist, wird dernull-indicator
wird als Spalte im ORC-Dateiformat (Optimized Row Columnar) beibehalten. Von ist, wird dieses Feld nicht im ORC-Format beibehalten.
Wenn null-indicator
kein referenziertes Feld hat,
Der Mainframe-Connector zeigt eine Fehlermeldung an und beendet die Verarbeitung der
-Dateien.
Beispiele:
Snippet für das Musterbuch
10 COL1-NID1 PIC S9(4) USAGE COMP.
10 COL1 PIC S9(6) USAGE COMP.
10 FIELD PIC X(10).
10 FIELD-NID2 PIC X(1).
10 COL2 PIC X(10).
10 COL2-NULL PIC X(1).
Definition der Umgebungsvariablen
SUFFIX_NID1="null-indicator --null-value -1 --not-null-value 0"
# Copybook fields with NID1 suffix null indicator configuration.
SUFFIX_NID2="null-indicator --null-value '?'"
# Copybook fields with NID2 suffix null indicator configuration.
SUFFIX_NULL="null-indicator --null-value '?' --keep"
# Copybook fields with NULL suffix null indicator configuration.
Unterstützung für DBCS-Felder
Beachten Sie bei der Verwendung von DBCS-Feldern Folgendes:
- Wenn Sie die Felder PIC G oder Pic N DBCS verwenden, müssen Sie eines der folgenden Felder angeben:
Gültige MBCS-Codierungen (Multi-Byte Character Set) in der
encoding
oder in der UmgebungsvariableENCODING
, wenn Sie diegsutil cp
- oderbq export
-Befehle:- X-IBM930
- X-IBM933
- X-IBM935
- X-IBM937
- x-IBM939
- X-IBM942
- X-IBM942C
- X-IBM943
- x-IBM943C
- x-IBM949
- X-IBM949C
- X-IBM950
- X-IBM964
- x-IBM970
- x-IBM1364
- Wenn ein Copybook-Feld nur DBCS-Byte enthält, diese aber nicht von Shift-Out (0x0E) und Shift-In (0x0F) umgeben sind, müssen Sie dem Feldnamen das Suffix
_DBCS
hinzufügen, damit diese Bytes als DBCS-Byte decodiert werden.
Wenn die Daten, die dem Copybook-Feld 03 FLD01 PIC N USAGE DISPLAY-1
entsprechen, beispielsweise die Bytes 0x43
und 0xC5
in der Codierung x-IBM930 enthalten, die nicht von 0x0E
und 0x0F
umgeben sind, müssen Sie den Namen des Copybook-Felds in 03 FLD01-DBCS PIC N USAGE DISPLAY-1
umbenennen, um die DBCS-Daten korrekt zu decodieren.
Unterstützung für Zeichenstrings mit variabler Länge
Der Parser für native Kopierbücher unterstützt Folgendes:
struct
-Felder:
- 10 var
- 15 var-LEN PIC 9(4) USGE COMP
- 15 VAR-TEXT PIC X(n)
Im ersten Feld im Feld struct
wird die Länge des zweiten Felds
das Zeichenfolgenfeld. Möglicherweise müssen Sie am Ende des
-Datensatz basierend auf der Datensatzlänge, wie in der folgenden Abbildung dargestellt.
Der Mainframe-Connector entfernt das Suffix aus dem Variablennamen vor
die Daten in BigQuery speichern. In diesem Beispiel lautet der Variablenname var
.
Wenn Sie struct
-Felder verwenden möchten, legen Sie die Umgebungsvariable BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
auf yes
oder true
fest.
Wenn Sie struct
-Felder verwenden, achten Sie auf Folgendes:
- Das Suffix des ersten Parameters in
struct
lautet-LEN
. Wenn Sie ein anderes Suffix verwenden möchten, müssen Sie das Suffix UmgebungsvariableBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
in das gewünschte Suffix. - Das Suffix des zweiten Parameters in
struct
lautet-TEXT
. Wenn Sie ein anderes Suffix verwenden möchten, müssen Sie das Suffix UmgebungsvariableBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
in das gewünschte Suffix.
Nicht unterstützte Felder und Konstrukte
In den folgenden Abschnitten werden Felder und Konstrukte beschrieben, die vom
COBOL-Konstrukte
COBOL-Konstrukte, auch wenn diese Konstrukte nicht unterstützt werden. Wenn Sie diese Konstrukte in Ihrem Copybook verwenden, zeigt der Mainframe-Connector einen Fehler an.
dataAlignedClause
dataBlankWhenZeroClause
dataCommonOwnLocalClause
dataIntegerStringClause
dataJustifiedClause
dataOccursClause
dataReceivedByClause
dataRecordAreaClause
dataRenamesClause
dataSignClause
dataSynchronizedClause
dataThreadLocalClause
dataTypeClause
dataTypeDefClause
dataUsingClause
Datentypen
COBOL-Datentypen wie COMP-1 und COMP-2 werden unterstützt.
Legacy-Copybook-Parser
Der Legacy-Copybook-Parser ist eine ältere Version des Parsers, die nicht-COBOL-Funktionen nutzen. Wenn Sie DSL-basiertes Copybook verwenden, könnte der alte Parser besser geeignet als nativer Copybook-Parser sein. zu Fehlern führen.
Sie können Copybook-DD mit den folgenden Einschränkungen verwenden:
- Level 66 (ALIAS) oder 77 (Eigenständig) werden nicht unterstützt.
- NEUDEFINIEREN werden nicht unterstützt.
- Kommentarzeilen werden nicht unterstützt.
- Felder der Länge 10, deren Name mit DATE oder DT enden, sind Datumsangaben. Die Decodierung dieser Felder ist anders.
- Verwenden Sie nur die folgenden COMP-Felder. ALIGN und OCCURS werden nicht unterstützt.
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- Verwenden Sie nur PICTURE-Felder. Definieren Sie PICTURE-Felder in derselben Zeile direkt nach dem Feldnamen.
- Alle Felder müssen ausgerichtet sein und es darf nur eine Ebene geben. Kommentare werden nicht unterstützt.
- Die Spalten 1 bis 6 müssen immer leer sein.