Referenz zum Copybook-Parser

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 und TITLE. Diese Felder werden geparst, ignoriert. Copybooks mit Präprozessorparametern, die von COPY 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 Umgebungsvariable NSYMBOL auf DBCS Standardmäßig ist NSYMBOL auf NATIONAL festgelegt. Dadurch wird USAGE NATIONAL auf Pic N-Felder gesetzt, die keine USAGE-Klausel haben. Hinweis: NSYMBOL kann nur auf NATIONAL oder DBCS 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 und timestamp-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 Typ TIMESTAMP. 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 Typ DATE in BigQuery. Das Muster ist yyyyMMdd
  • 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 Typ DATE und sein Muster ist MM-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 Typ DATE in BigQuery. Das Muster ist entweder MM-dd-yyyy oder MM/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" und SUFFIX_TS=$SUFFIX_TIMESTAMP, ein Feld mit einem der folgenden Suffixe: -TIMESTAMP, _TIMESTAMP, -TS oder _TS sind ein TIMESTAMP in BigQuery eingeben. Das Muster ist yyyy-MM-dd HH:mm:ss.SSSSSS mit der Zeitzone America/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 muss null-indicator sein.
  • –null-value: Der Wert null 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 Wert null 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 der null-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 Umgebungsvariable ENCODING, wenn Sie die gsutil cp- oder bq 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.

Ein Padding wurde für Zeichenstrings mit variabler Länge hinzugefügt.
Abbildung 1: Zeichenfolgen mit variabler Länge werden zusätzliche Zeichen hinzugefügt.

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 Umgebungsvariable BQSH_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 Umgebungsvariable BQSH_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.