Sie können den Mainframe Connector-Transcoder konfigurieren, indem Sie die erforderliche Konfiguration in einer JSON-Datei hinzufügen.
Diese Datei wird als Transcoder-Konfigurationsdatei bezeichnet. Sie müssen die Konfiguration wie im Abschnitt Konfiguration beschrieben definieren.
Die Befehle qsam encode
und qsam decode
verwenden die Transcoder-Konfigurationsdatei, um die Datentranscodierung durchzuführen.
Auf dieser Seite werden die verschiedenen Möglichkeiten zur Konfiguration des Mainframe Connector-Transcoders beschrieben.
Konfiguration
Das Configuration
-Objekt ist die Wurzel der Transcoder-Konfiguration.
Sie enthält alle Konfigurationsoptionen für den Transcoder.
JSON-Darstellung |
---|
{ "defaults": object ( |
Felder | |
---|---|
defaults |
Geben Sie Standardfeldmodifizierer für COBOL-Archetypen an. |
field_suffixes |
Geben Sie Feldsuffixe an. |
field_overrides |
Geben Sie Feldüberschreibungen an. |
transformations |
Geben Sie Feldtransformationen an. |
schema_validation_mode |
Geben Sie den Modus für die Schemavalidierung an. |
header_records_to_skip |
Geben Sie die Anzahl der ersten Datensätze an, die übersprungen werden sollen. |
record_filter_condition |
Geben Sie eine Filterbedingung für Datensätze an. Der Filter unterstützt die folgenden Operatoren:
Beispiel:
|
DefaultsSection
Mit dem DefaultsSection
-Objekt können Sie Standardänderungen nach COBOL-Typen angeben.
Sie werden vor allen Suffix- oder Überschreibungsänderungen angewendet.
JSON-Darstellung |
---|
{ "alpha_numeric_display": object ( |
Felder | |
---|---|
alpha_numeric_display |
Geben Sie Standardwerte für alphanumerische Felder (PIC X) an. |
numeric_display |
Geben Sie Standardwerte für numerische Felder (Zonendekimalfelder) an. |
binary |
Geben Sie Standardwerte für Felder mit binären Zahlen (COMP) an. |
packed_decimal |
Geben Sie Standardwerte für gepackte Dezimalfelder (COMP-3) an. |
national |
Geben Sie Standardwerte für nationale (PIC N) Felder an. |
utf8 |
Geben Sie Standardwerte für UTF-8-Felder (PIC U) an. |
dbcs |
Standardwert für DBCS-Felder (DISPLAY-1). |
hexadecimal_floating_point |
Standardwert für Felder mit hexadezimaler Gleitkommazahl (COMP-1, COMP-2). |
FieldSuffix
Feld-Suffixe gelten für alle Felder mit einem Suffix.
Felder werden abgeglichen, wenn sie mit einem Bindestrich (-
) oder Unterstrich (_
) gefolgt vom Suffix enden.
Bei Suffixen wird die Groß-/Kleinschreibung nicht berücksichtigt.
Der Modifikator FieldSuffix
wird nach dem Modifikator FieldOverride
angewendet.
Beispielsweise wird der für das Suffix NID
definierte Modifikator auf das Feld mit dem Namen FLD-NID
angewendet, nicht aber auf das Feld FUNID
.
JSON-Darstellung |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Felder | |
---|---|
suffix |
Auf das Feld mit diesem Suffix wird der Modifikator angewendet. |
is_inverse |
Geben Sie an, ob der Modifikator ein inverser Feldmodifikator ist oder nicht.
Ein inverser Feldmodifikator wendet den Modifikator auf ein anderes Feld an, das denselben Namen wie das Feld mit dem Modifikator ohne den Modifikator hat. Wenn beispielsweise sowohl das Feld Bei Verwendung eines inversen Feldmodifikators kann die spezielle Kennung Wenn Sie beispielsweise ein Feld für Nullindikatoren erstellen möchten, können Sie den Feldmodifikator |
modifier |
Geben Sie den Modifikator an, der auf übereinstimmende Felder angewendet werden soll. |
FieldOverride
Überschreiben oder ändern Sie die Decodierungs- und Codierungskette für das angegebene Feld.
JSON-Darstellung |
---|
{ "field": string, "modifier": object ( |
Felder | |
---|---|
field |
Geben Sie den Namen des Felds an, auf das der Modifikator angewendet werden soll. |
modifier |
Geben Sie den Modifikator an, der auf das übereinstimmende Feld angewendet werden soll. |
Transformation
Mit Ansichtstransformationen wird die Beziehung zwischen der Tabelle und der QSAM-Datei geändert. Transformationen werden immer aus der Sicht der Daten formuliert. Das Konzept ähnelt Ansichtstabellen in BigQuery.
JSON-Darstellung |
---|
{ "exclude": object ( |
Felder | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Mit einem Feldmodifikator können Sie die Codierung oder Decodierung eines bestimmten Felds ändern. Hinweis: Nicht alle Modifikatoren können auf alle Felder angewendet werden. Weitere Informationen finden Sie in der Dokumentation zu den jeweiligen Modifikatoren.
JSON-Darstellung |
---|
{ "filler": object ( |
Felder | |
---|---|
filler |
Schließt das Feld aus der Verarbeitung und Ausgabe aus. |
null_if |
Legt das Feld basierend auf dem Wert eines anderen Felds bedingt auf „null“ fest. |
format_date |
Formatiert ein Stringfeld als Datum. |
chain |
Verkettet mehrere Modifizierer, die nacheinander angewendet werden sollen. |
zoned_decimal |
Überschreibt die Standardkonfiguration für Felder mit zonierten Dezimalzahlen. |
binary |
Überschreibt die Standardkonfiguration für binäre numerische Felder. |
packed_decimal |
Überschreibt die Standardkonfiguration für gepackte Dezimalfelder. |
null_if_invalid |
Setzt das Feld auf „null“, wenn ein Transcodierungsfehler auftritt, um ein Überschreiben von Datensätzen zu verhindern. |
bytes |
Das Feld wird als Rohfolge von Byte behandelt, wobei vorherige Typinformationen ignoriert werden. |
varlen |
Legen Sie den Datensatz als Feld mit variabler Länge fest. |
string |
Überschreibt die Standardkonfiguration für Stringfelder. |
null_if_empty |
Setzt das Feld auf „null“, wenn sein Inhalt als leer betrachtet wird. |
format_timestamp |
Formatiert ein Stringfeld als Zeitstempel. |
hfp |
Das Feld wird als HFP-Zahl (Hexadecimal Floating-Point) interpretiert. |
decode_as_null |
Definiert, wie Nullwerte decodiert werden müssen. |
encode_null_as |
Definiert, wie Nullwerte codiert werden müssen. |
Ausschließen
Ein Feld aus der resultierenden Tabelle ausschließen, aber trotzdem decodieren oder codieren. Das ist nützlich, wenn das Feld nicht in die Tabelle übertragen werden muss, aber für die Transcodierung erforderlich ist. So können beispielsweise Nullindikatoren oder Längenfelder aus der Tabelle entfernt werden.
Wenn Sie die Transcodierung ganz umgehen möchten, wenden Sie den Filler-Modifikator an.
JSON-Darstellung |
---|
{ "field": string |
Felder | |
---|---|
field |
Geben Sie das Feld an, das ausgeschlossen werden soll. |
Unnest
Heben Sie die Verschachtelung des Felds auf.
JSON-Darstellung |
---|
{ "field": string, "format": string |
Felder | |
---|---|
field |
Feld für die Entschachtelung angeben |
format |
Geben Sie das neue Feldformat an. Die Bei nicht verschachtelten Structs wird Bei nicht verschachtelten Arrays und Listen wird |
Verschieben
Verschieben Sie ein Feld im Datensatz.
JSON-Darstellung |
---|
{ "field": string, "offset": int |
Felder | |
---|---|
field |
Geben Sie das Feld an, das verschoben werden soll. |
offset |
Geben Sie an, um wie viele Stellen das Feld vorwärts oder rückwärts verschoben werden soll. |
Umbenennen
Benennt ein oder mehrere Felder basierend auf einem Abgleich mit einem regulären Ausdruck um.
Wenn Sie beispielsweise alle Bindestriche durch Unterstriche ersetzen möchten, verwenden Sie das folgende JSON-Format: {"find": "\\-", "replace":"_"}
.
JSON-Darstellung |
---|
{ "find": string, "replace": string |
Felder | |
---|---|
find |
Gibt ein Muster für reguläre Java-Ausdrücke an, um die umzubenennenden Felder zu identifizieren. Das Muster wird mit dem vollständigen Feldnamen abgeglichen. Wenn das Muster mit einem Teil des Feldnamens übereinstimmt, gilt das Feld als Übereinstimmung. Beispiele:
|
replace |
Gibt den neuen Namen für die abgeglichenen Felder an. Erfassungsgruppen aus dem regulären Ausdruck Beispiele:
|
Füllstoff
Gibt an, dass ein Feld während der Verarbeitung ignoriert wird. Das Feld wird nicht aus der Eingabe decodiert oder in die Ausgabe codiert und wird beim Decodieren aus dem resultierenden Schema und der Datentabelle ausgeschlossen. Sie können diesen Modifikator auf jedes Feld anwenden, das eine statische bekannte Größe hat.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
NullIf
Setzen Sie ein Feld auf „null“, wenn eine Bedingung erfüllt ist. Sie müssen entweder null_value
oder non_null_value
oder beides angeben.
Um ein Nullindikatorfeld zu erstellen, können Sie eine FieldSuffix
mit dem Feldmodifikator null_if
verwenden und is_inverse
auf true
festlegen, wie in den folgenden Beispielen gezeigt:
Beispiel: Null-Indikator
Um ein Nullindikatorfeld zu erstellen, können wir den Feldmodifikatornull_if
so verwenden.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
effektiv als Nullindikatoren verwendet werden, wie im folgenden Copybook-Snippet zu sehen ist:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Beispiel: Binärer Nullindikator
Um einbinary
-Nullindikatorfeld zu erstellen, können wir die Feldmodifizierer binary
und null_if
so verwenden.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
effektiv binary
-Nullindikatoren sein, wenn dasselbe Copybook wie im vorherigen Beispiel verwendet wird.
Beispiel: Null-Indikator für Byte
Um einbytes
-Nullwertindikatorfeld zu erstellen, können wir die Feldmodifizierer bytes
und null_if
so verwenden. Die Werte für „null“ und „nicht null“ werden als HEX
ausgedrückt.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "bytes": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "FF", "target_field": "$self" } } } ] }
NID
effektiv als bytes
-Nullindikator mit demselben Copybook aus dem vorherigen Beispiel verwendet werden.
JSON-Darstellung |
---|
{ "target_field": string, "null_value": string, "null_values": string, "non_null_value": string, "non_null_values": string |
Felder | |
---|---|
target_field |
Geben Sie das Feld an, dessen Wert Sie prüfen möchten. Das Feld muss im Bereich liegen. |
null_value |
Wenn angegeben und |
null_values |
Wenn |
non_null_value |
Wenn angegeben und |
non_null_values |
Wenn angegeben und |
FormatDate
Formatieren Sie einen String in ein Datum mit einem der unterstützten Formate. Sie können diesen Modifikator nur auf Felder mit Größenangaben anwenden. Beim Decodieren werden die Formate in der Reihenfolge getestet, bis eines der Formate mit dem String übereinstimmt. Bei der Codierung wird das erste Format verwendet und die anderen werden ignoriert.
JSON-Darstellung |
---|
{ "formats": object ( |
Felder | |
---|---|
formats |
Liste der Datumsformate. |
ModifierChain
Geben Sie eine Modifikatorfolge an, um mehrere Modifikatoren nacheinander anzuwenden. Die Modifikatoren werden in der Reihenfolge angewendet, in der sie angegeben sind.
JSON-Darstellung |
---|
{ "modifiers": object ( |
Felder | |
---|---|
modifiers |
Geben Sie die Liste der anzuwendenden Modifikatoren an. |
ZonedDecimal
Legt verschiedene Optionen für die Codierung und Decodierung von Zonen-Dezimalzahlen fest. Sie können diesen Modifikator nur auf ein Dezimalfeld anwenden.
JSON-Darstellung |
---|
{ "logical_type": enum ( |
Felder | |
---|---|
logical_type |
Geben Sie den logischen Typ an, der beim Decodieren oder Codieren des Felds verwendet werden soll. |
encoding |
Die Codierung, mit der das Feld codiert wird. |
Binär
Ignorieren Sie alle vorherigen Modifikatoren und behandeln Sie dieses Feld als Binärzahl.
JSON-Darstellung |
---|
{ "signedness": enum ( |
Felder | |
---|---|
signedness |
Das Vorzeichen der Zahl. |
PackedDecimal
Legen Sie für dieses Feld einen PackedDecimal-Wert fest.
JSON-Darstellung |
---|
{ "logical_type": enum ( |
Felder | |
---|---|
logical_type |
Logischen Typ überschreiben Standardmäßig verwendet Mainframe Connector den optimalen logischen Typ basierend auf der Genauigkeit und Skalierung. |
NullIfInvalid
Behandeln Sie den Wert als null, wenn die Transcodierung fehlschlägt. Sie können diesen Modifikator nur auf Felder mit Größenangaben anwenden. Der Fehler wird ignoriert und nicht im Spillover-Dataset protokolliert. Während der Dekodierung ist der Wert dieses Felds für diesen Datensatz „null“. Wenn die Daten während der Codierung nicht geschrieben werden können, wird das gesamte Feld mit Null-Bytes gefüllt.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
Byte
Behandelt das Feld als rohe Bytefolge. Dieser Modifikator überschreibt alle vorherigen Typinformationen. Die Rohbytedaten des Felds werden unverändert beibehalten, ohne dass eine bestimmte Zeichencodierung oder numerische Interpretation erfolgt. Sie können diesen Modifikator auf jedes Feld anwenden, unabhängig von seinem ursprünglichen Typ oder seiner Größe.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
VarLen
Stellt ein Feld mit variabler Länge dar.
Ein Feld mit variabler Länge besteht aus drei Teilen:
- Ein Gruppenelement mit zwei Unterfeldern.
- Ein Feld innerhalb des Gruppenelements, das die Länge der Transaktionsdaten enthält.
- Ein Feld innerhalb des Gruppenelements, das die Daten enthält.
Der Name des Felds mit variabler Länge ist der Gruppenname.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
String
Legt die verschiedenen Optionen für die String-Decodierung und -Codierung fest. Kann nur auf ein Stringfeld angewendet werden.
JSON-Darstellung |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Felder | |
---|---|
encoding |
Die Codierung, mit der das Feld codiert wird. |
trim_suffix |
Wenn „true“ festgelegt ist, wird Leerraum am Ende des Strings entfernt. trim_suffix wirkt sich nur auf die Decodierung aus. Bei der Codierung wird trim_suffix ignoriert. Strings, die nur aus Leerzeichen bestehen, werden zu leeren Strings. |
pad_char |
Wenn festgelegt, werden Exportstrings mit |
NullIfEmpty
Das Feld sollte auf „null“ gesetzt werden, wenn alle Bytes in diesem Feld 0 sind.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
FormatTimestamp
Formatieren Sie einen String mit einem der bereitgestellten Formate in einen Zeitstempel. Dies kann nur auf Felder mit Größenangaben angewendet werden. Bei der Decodierung werden die Formate in der angegebenen Reihenfolge getestet, bis eines der Formate mit dem String übereinstimmt. Bei der Codierung wird das erste Format verwendet und die anderen werden ignoriert.
JSON-Darstellung |
---|
{ "formats": object ( |
Felder | |
---|---|
formats |
Liste der Zeitstempelformate. |
HFP
Legen Sie für dieses Feld „Hexadezimaler Gleitkommawert“ fest.
Geben Sie ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
DecodeAsNull
Definiert, wie Nullwerte während des Decodierungsprozesses interpretiert werden. Da COBOL keine Nullwerte unterstützt, wird mit diesem Parameter angegeben, welche Werte als Nullwerte behandelt werden müssen.
JSON-Darstellung |
---|
{ "values": string, "hex_bytes": string |
Felder | |
---|---|
values |
Eine Liste von Stringdarstellungen. Nach der ersten Decodierung des Felds in seine Stringform wird es als „null“ behandelt, wenn der Inhalt des Felds mit einem dieser Werte übereinstimmt. |
hex_bytes |
Eine Liste der hexadezimalen Darstellungen eines einzelnen Byte.
Wenn ein Feld Wiederholungen eines dieser Bytes enthält, wird es als „null“ behandelt.
Verwenden Sie beispielsweise |
EncodeNullAs
Definiert, wie Nullwerte während des Codierungsprozesses dargestellt werden.
JSON-Darstellung |
---|
{ "value": string, "hex_byte": string |
Felder | |
---|---|
value |
Diesen Wert codieren, wenn der Quellwert null ist. Prüfen Sie, ob der String für den Typ des Felds gültig ist. |
hex_byte |
Codieren Sie diese bestimmte Bytefolge (als hexadezimaler String dargestellt), wenn der Quellwert null ist. Beispiel: |
DateTimeFormat
Größe und Muster, die beim Konvertieren des Felds in ein Datum verwendet werden sollen.
JSON-Darstellung |
---|
{ "size": int, "pattern": string |
Felder | |
---|---|
size |
Geben Sie die Größe des Felds an, auf das dieses Muster angewendet wird. |
pattern |
Geben Sie das Muster für die Datumsformatierung an. Weitere Informationen zu gültigen Formatierungsmustern finden Sie unter DateTimeFormatter-Klasse. |
ZonedDecimalEncoding
Geben Sie die Codierung an, die beim Decodieren oder Codieren eines zonierten Dezimalfelds verwendet werden soll.
Enums | |
---|---|
UNSPECIFIED |
Behalten Sie die in der Modifier-Kette angegebene Codierung bei.
Wenn kein Modifikator angegeben ist, wird EBCDIC verwendet. |
EBCDIC |
Verwenden Sie die EBCDIC -Codierung. |
ASCII |
Verwenden Sie die ASCII -Codierung. |
BinarySignedness
Der logische Typ, der für ein Dezimalfeld verwendet werden soll.
Enums | |
---|---|
UNSPECIFIED |
Wählen Sie den optimalen Typ basierend auf dem Maßstab und der Genauigkeit aus. |
SIGNED |
Verwenden Sie 64 Bits zum Speichern des Werts. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 und deren Skalierung 0 ist. |
UNSIGNED |
Verwenden Sie 64 Bits zum Speichern des Werts. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 ist. |
DecimalLogicalType
Der logische Typ, der für ein Dezimalfeld verwendet werden soll.
Enums | |
---|---|
AUTO |
Wählen Sie den optimalen Typ basierend auf dem Maßstab und der Genauigkeit aus. |
LONG |
Verwenden Sie 64 Bits zum Speichern des Werts. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 und deren Skalierung 0 ist. |
DECIMAL64 |
Verwenden Sie 64 Bits zum Speichern des Werts. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 ist. |
BIG_DECIMAL |
Speichern Sie den Wert als unbegrenzten Dezimalwert. Das ist die langsamste Option, unterstützt aber jede Dezimalzahl mit beliebiger Genauigkeit in jedem Maßstab. |
BIG_INTEGER |
Speichern Sie den Wert als unbegrenzten Ganzzahlwert. Das ist die langsamste Option, unterstützt aber jede Ganzzahl mit beliebiger Genauigkeit. |
SchemaValidationMode
Geben Sie den Modus für die Schemavalidierung an, der während der Copybook-Kompilierung verwendet werden soll. In diesem Modus wird die Kompatibilität mit einem bestimmten Zieldatenformat geprüft.
Enums | |
---|---|
DEFAULT |
Standardmodus für die Schemavalidierung. In diesem Modus wird geprüft, ob eindeutige Feldnamen im Copybook vorhanden sind. |
BIG_QUERY |
Schema-Validierungsmodus für BigQuery-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit den Datentypen von BigQuery kompatibel ist. |
POSTGRES |
Schema-Validierungsmodus für PostgreSQL-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit PostgreSQL-Datentypen kompatibel ist. |
MYSQL |
Schema-Validierungsmodus für MySQL-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit MySQL-Datentypen kompatibel ist. |