Du kannst den Mainframe Connector-Transcoder konfigurieren, indem du die erforderliche Konfiguration in eine JSON-Datei einfügst.
Diese Datei wird als Transcoder-Konfigurationsdatei bezeichnet. Sie müssen die Konfiguration wie im Abschnitt Konfiguration angegeben 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 Standardfeldmodifikatoren 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 Schemaüberprüfung an. |
DefaultsSection
Mit dem DefaultsSection
-Objekt können Standardänderungen nach Cobol-Typen angegeben werden.
Sie werden vor allen Änderungen an Suffixen oder Überschreibungen 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 Felder mit numerischer Anzeige (Zonendezimalformat) an. |
binary |
Geben Sie Standardwerte für Felder mit Binärzahlen (COMP) an. |
packed_decimal |
Geben Sie Standardwerte für komprimierte Dezimalfelder (COMP-3) an. |
national |
Geben Sie Standardwerte für nationale Felder (PIC N) an. |
utf8 |
Geben Sie Standardwerte für UTF-8-Felder (PIC U) an. |
dbcs |
Standard für dbcs-Felder (DISPLAY-1). |
hexadecimal_floating_point |
Standard für Hexadezimal-Fließkommafelder (COMP-1, COMP-2). |
FieldSuffix
Feldsuffixe gelten für alle Felder mit einem Suffix.
Felder werden abgeglichen, wenn sie auf einen Bindestrich (-
) oder Unterstrich (_
) gefolgt vom Suffix enden.
Bei Suffixen wird die Groß- und Kleinschreibung nicht berücksichtigt.
Der FieldSuffix
-Modifikator wird nach dem FieldOverride
-Modifikator angewendet.
Der für das Suffix NID
definierte Modifikator wird beispielsweise auf das Feld FLD-NID
angewendet, aber nicht auf das Feld FUNID
.
JSON-Darstellung |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Felder | |
---|---|
suffix |
Der Modifikator wird auf das Feld mit diesem Suffix angewendet. |
is_inverse |
Geben Sie an, ob es sich um einen inversen Feldmodifikator handelt.
Mit einem umgekehrten Feldmodifikator wird der Modifikator auf ein anderes Feld angewendet, das denselben Namen wie das Feld mit dem Modifikator hat, ohne den Modifikator. Wenn beispielsweise sowohl das Feld Wenn Sie einen umgekehrten Feldmodifikator verwenden, kann die spezielle Kennung Wenn Sie beispielsweise ein Feld für Null-Indikatoren 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 Dekodierungs- 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 Abgleichfeld 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 dem von Ansichtstabellen in BigQuery.
JSON-Darstellung |
---|
{ "exclude": object ( |
Felder | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Mit einem Feldmodifikator können Sie die Codierung oder Dekodierung eines bestimmten Felds ändern. Hinweis: Nicht alle Modifikatoren können auf alle Felder angewendet werden. Weitere Informationen zu den einzelnen Modifikatoren finden Sie in der Dokumentation.
JSON-Darstellung |
---|
{ "filler": object ( |
Felder | |
---|---|
filler |
Ignorieren und ausschließen Sie das Feld. |
null_if |
Legen Sie den Wert des zugrunde liegenden Felds bei einer Bedingung auf „null“ fest. |
format_date |
Formatieren Sie ein Stringfeld als Datum. |
chain |
Mehrere Modifikatoren verketten |
zoned_decimal |
Dezimalformat für Zonenfelder überschreiben |
binary |
Konfiguration des Binärfelds überschreiben. |
packed_decimal |
Konfiguration des komprimierten Dezimalfelds überschreiben. |
null_if_invalid |
Setzen Sie das Feld auf „null“, anstatt die Zeile bei einem Fehler zu überspringen. |
bytes |
Feld „Bytes“ überschreiben. |
varlen |
Legen Sie den Datensatz als Feld mit variabler Länge fest. |
string |
Konfiguration des Stringfelds überschreiben |
null_if_empty |
Legen Sie den Wert des zugrunde liegenden Felds auf „null“ fest, wenn das Feld leer ist. |
format_timestamp |
Formatieren Sie ein Stringfeld als Zeitstempel. |
hfp |
Legen Sie für dieses Feld einen Hexadezimal-Float-Wert fest. |
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 Null- oder Längenfelder aus der Tabelle weggelassen werden.
Wenn du die Transcodierung vollständig umgehen möchtest, kannst du den Filler-Modifikator anwenden.
JSON-Darstellung |
---|
{ "field": string |
Felder | |
---|---|
field |
Geben Sie das Feld an, das ausgeschlossen werden soll. |
Unnest
Entfernen Sie das Nesting des Felds.
JSON-Darstellung |
---|
{ "field": string, "format": string |
Felder | |
---|---|
field |
Geben Sie das Feld an, das entschachtelt werden soll. |
format |
Geben Sie das neue Feldformat an. Die Bei nicht verschachtelten Strukturen wird Bei nicht verschachtelten Arrays und Listen wird |
Verschieben
Ein Feld im Datensatz verschieben
JSON-Darstellung |
---|
{ "field": string, "offset": int |
Felder | |
---|---|
field |
Geben Sie das Feld an, das Sie verschieben möchten. |
offset |
Geben Sie die Anzahl der Stellen an, um die das Feld nach vorne oder hinten verschoben werden soll. |
Umbenennen
Benennen Sie ein oder mehrere Felder basierend auf einer Übereinstimmung mit einem regulären Ausdruck um.
Wenn Sie beispielsweise alle Bindestrichen 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 Ausdrücke in Java an, um die zu umzubenennenden Felder zu identifizieren. Das Muster wird mit dem vollständigen Feldnamen abgeglichen. Wenn das Muster mit einem Teil des Feldnamens übereinstimmt, wird das Feld als Übereinstimmung betrachtet. Beispiele:
|
replace |
Gibt den neuen Namen für die übereinstimmenden Felder an. Erfassungsgruppen aus dem regulären Ausdruck Beispiele:
|
Füllstoff
Gibt an, dass ein Feld nicht decodiert oder codiert wird. Außerdem wird es während des Dekodierungsprozesses aus der resultierenden Tabelle ausgeschlossen. Sie können diesen Modifikator auf jedes Feld mit einer bekannten Größe anwenden.
Gib 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.
Wenn Sie ein Feld mit Null-Indikator erstellen möchten, können Sie ein FieldSuffix
mit einem null_if
-Feldmodifikator verwenden und is_inverse
auf true
setzen, wie in den folgenden Beispielen gezeigt:
Beispiel: Null-Indikator
Um ein Feld mit Null-Indikator 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
als Null-Indikatoren verwendet werden, wie im folgenden Copybook-Snippet dargestellt:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Beispiel: Binärer Null-Indikator
Um einbinary
-Nullindikatorfeld zu erstellen, können wir die Feldmodifikatoren 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
im selben Copybook aus dem vorherigen Beispiel als binary
-Nullereignisse verwendet werden.
Beispiel: Null-Indikator für Bytes
Um einbytes
-Null-Indikatorfeld zu erstellen, können wir die Feldmodifikatoren 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
mit demselben Copybook aus dem vorherigen Beispiel als bytes
-Nullindikator verwendet werden.
JSON-Darstellung |
---|
{ "target_field": string, "null_value": string, "non_null_value": string |
Felder | |
---|---|
target_field |
Geben Sie das Feld an, dessen Wert Sie prüfen möchten. Das Feld muss in den Geltungsbereich fallen. |
null_value |
Wenn |
non_null_value |
Wenn |
FormatDate
Formatieren Sie einen String in ein Datum mit einem der unterstützten Formate. Sie können diesen Modifikator nur auf Felder mit Größenangabe anwenden. Während der Dekodierung werden die Formate der Reihe nach getestet, bis eines der Formate mit dem String übereinstimmt. Bei der Codierung wird das erste Format verwendet und die restlichen werden ignoriert.
JSON-Darstellung |
---|
{ "formats": object ( |
Felder | |
---|---|
formats |
Liste der Datumsformate. |
ModifierChain
Geben Sie eine Modifikatorkette 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
Hier werden verschiedene Optionen für die Codierung und Dekodierung von Zonen-Dezimalzahlen festgelegt. Dieser Modifikator kann nur auf ein Dezimalfeld angewendet werden.
JSON-Darstellung |
---|
{ "logical_type": enum ( |
Felder | |
---|---|
logical_type |
Geben Sie den logischen Typ an, der beim Entschlüsseln oder Codieren des Felds verwendet werden soll. |
encoding |
Die Codierung, mit der das Feld codiert ist. |
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 den Wert „PackedDecimal“ fest.
JSON-Darstellung |
---|
{ "logical_type": enum ( |
Felder | |
---|---|
logical_type |
Logischen Typ überschreiben Standardmäßig verwendet der Mainframe-Connector den optimalen logischen Typ basierend auf der Genauigkeit und Skalierung. |
NullIfInvalid
Wenn das Transcodieren fehlschlägt, wird der Wert als „null“ behandelt. Sie können diesen Modifikator nur auf Felder mit Größenangabe anwenden. Der Fehler wird ignoriert und nicht im Dataset für den Überlauf 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-Byten gefüllt.
Gib ein leeres JSON-Objekt wie unten angegeben an:
JSON-Darstellung |
---|
{ |
Byte
Ignoriere die Modifikatorkette und behandle die Daten als Rohbytes. Sie können diesen Modifikator auf Felder beliebiger Größe anwenden.
Gib 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 untergeordneten Feldern.
- 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.
Gib ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
String
Hier werden die verschiedenen Optionen für die String-Dekodierung und -Codierung festgelegt. 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 ist. |
trim_suffix |
Wenn dieser Wert auf „wahr“ gesetzt ist, werden alle Leerzeichen am Ende des Strings entfernt. „trim_suffix“ wirkt sich nur auf die Dekodierung aus. Bei der Codierung wird „trim_suffix“ ignoriert. Strings, die nur aus Leerzeichen bestehen, werden zu leeren Strings. |
pad_char |
Wenn Sie Exportstrings mit |
NullIfEmpty
Das Feld sollte auf „null“ gesetzt werden, wenn alle Bytes in diesem Feld „0“ sind.
Gib 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öße angewendet werden. Beim Dekodieren werden die Formate der Reihe nach getestet, bis eines der Formate mit dem String übereinstimmt. Beim Codieren wird das erste Format verwendet und der Rest ignoriert.
JSON-Darstellung |
---|
{ "formats": object ( |
Felder | |
---|---|
formats |
Liste der Zeitstempelformate. |
HFP
Legen Sie für dieses Feld „Hexadezimaler Gleitkommawert“ fest.
Gib ein leeres JSON-Objekt an:
JSON-Darstellung |
---|
{ |
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 werden soll. |
pattern |
Muster für die Datumsformatierung. Weitere Informationen zu gültigen Formatierungsmustern finden Sie unter Klasse DateTimeFormatter. |
BinarySignedness
Logischer Typ für ein Dezimalfeld.
Enums | |
---|---|
UNSPECIFIED |
Verwenden Sie den optimalen Typ basierend auf Skalierung und Genauigkeit. |
SIGNED |
Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen mit einer Genauigkeit von maximal 18 Stellen und einer Skala von 0. |
UNSIGNED |
Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen mit einer Genauigkeit von maximal 18. |
DecimalLogicalType
Logischer Typ für ein Dezimalfeld.
Enums | |
---|---|
AUTO |
Verwenden Sie den optimalen Typ basierend auf Skalierung und Genauigkeit. |
LONG |
Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen mit einer Genauigkeit von maximal 18 Stellen und einer Skala von 0. |
DECIMAL64 |
Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen mit einer Genauigkeit von maximal 18. |
BIG_DECIMAL |
Speichern Sie den Wert als Dezimalwert mit unbegrenzter Nachkommastelle. Dies ist die langsamste Option, unterstützt aber beliebige Dezimalstellen mit beliebiger Genauigkeit in beliebigem Maßstab. |
BIG_INTEGER |
Speichern Sie den Wert als unbegrenzte Ganzzahl. Dies ist die langsamste Option, unterstützt aber beliebige Ganzzahlen mit beliebiger Genauigkeit. |
ZonedDecimalEncoding
Geben Sie die Codierung an, die beim Decodieren oder Codieren eines dezimalen Felds mit Zeitzone verwendet werden soll.
Enums | |
---|---|
UNSPECIFIED |
Behalten Sie die in der Modifikatorkette angegebene Codierung bei.
Wenn kein Modifikator angegeben wurde, wird EBCDIC verwendet. |
EBCDIC |
Verwenden Sie die EBCDIC -Codierung. |
ASCII |
Verwenden Sie die ASCII -Codierung. |
SchemaValidationMode
Der Schemavalidierungsmodus, der bei der Zusammenstellung des Copybooks verwendet wird. Dieser Modus sorgt für Kompatibilität mit einem bestimmten Zieldatenformat.
Enums | |
---|---|
DEFAULT |
Standardmodus für die Schemaüberprüfung. In diesem Modus sind die Feldnamen innerhalb des Copybooks eindeutig. |
BIG_QUERY |
Schemavalidierungsmodus für die BigQuery-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um sicherzustellen, dass das Schema des Kopiebuchs mit den Datentypen von BigQuery kompatibel ist. |