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 Schemavalidierung 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.
Bei einem inversen 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 mit Null-Indikator 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 |
Das Feld wird von der Verarbeitung und Ausgabe ausgeschlossen. |
null_if |
Legt das Feld abhängig vom Wert eines anderen Felds bedingt auf „Null“ fest. |
format_date |
Formatiert ein Stringfeld als Datum. |
chain |
Mehrere Modifikatoren werden nacheinander angewendet. |
zoned_decimal |
Überschreibt die Standardkonfiguration für dezimalfelder mit Zone. |
binary |
Überschreibt die Standardkonfiguration für binäre numerische Felder. |
packed_decimal |
Überschreibt die Standardkonfiguration für komprimierte Dezimalfelder. |
null_if_invalid |
Das Feld wird auf „null“ gesetzt, wenn ein Transcodierungsfehler auftritt, um einen Datenüberlauf zu verhindern. |
bytes |
Das Feld wird als Rohsequenz von Bytes 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 |
Das Feld wird auf „null“ gesetzt, wenn sein Inhalt als leer betrachtet wird. |
format_timestamp |
Formatiert ein Stringfeld als Zeitstempel. |
hfp |
Das Feld wird als Hexadezimal-Gleitkommazahl (HFP) interpretiert. |
decode_as_null |
Hiermit wird festgelegt, 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 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 während der Verarbeitung ignoriert wird. Das Feld wird nicht aus der Eingabe decodiert oder in die Ausgabe codiert und bei der Dekodierung aus dem resultierenden Schema und der Datentabelle ausgeschlossen. Sie können diesen Modifikator auf jedes Feld mit einer statischen, bekannten Größe anwenden.
Gib ein leeres JSON-Objekt wie unten angegeben 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-Anzeiger 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, "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 in den Geltungsbereich fallen. |
null_value |
Wenn |
null_values |
Wenn |
non_null_value |
Wenn |
non_null_values |
Wenn |
FormatDate
Formatieren Sie einen String in ein Datum in 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 Decodieren 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
Das Feld wird als Rohsequenz von Bytes behandelt. Dieser Modifikator überschreibt alle vorherigen Typinformationen, wodurch die Rohbyte-Daten des Felds unverändert ohne bestimmte Zeichencodierung oder numerische Interpretation beibehalten werden. Sie können diesen Modifikator auf jedes Feld anwenden, unabhängig von seinem ursprünglichen Typ oder seiner ursprünglichen Größe.
Gib ein leeres JSON-Objekt wie unten angegeben 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 wie unten angegeben 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 wie unten angegeben 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 wie unten angegeben an:
JSON-Darstellung |
---|
{ |
DecodeAsNull
Hiermit wird festgelegt, wie Nullwerte während des Dekodierungsprozesses interpretiert werden. Da Nullwerte in COBOL nicht nativ unterstützt werden, gibt dieser Parameter an, welche Werte als Null behandelt werden müssen.
JSON-Darstellung |
---|
{ "values": string, "hex_bytes": string |
Felder | |
---|---|
values |
Eine Liste von Stringdarstellungen. Wenn der Inhalt des Felds nach der anfänglichen Dekodierung in Stringform mit einem dieser Werte übereinstimmt, wird er als Null behandelt. |
hex_bytes |
Eine Liste von Hexadezimaldarstellungen eines einzelnen Bytes.
Wenn ein Feld Wiederholungen dieser Bytes enthält, wird es als Null behandelt.
Verwenden Sie beispielsweise |
EncodeNullAs
Hiermit wird festgelegt, wie Nullwerte während des Codierungsprozesses dargestellt werden.
JSON-Darstellung |
---|
{ "value": string, "hex_byte": string |
Felder | |
---|---|
value |
Dieser Wert wird codiert, wenn der Quellwert null ist. Prüfen Sie, ob der String für den Feldtyp gültig ist. |
hex_byte |
Diese bestimmte Bytesequenz (als Hexadezimalstring dargestellt) codieren, 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 werden soll. |
pattern |
Geben Sie das Muster für die Datumsformatierung an. 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 für die 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. |
SchemaValidationMode
Geben Sie den Schemavalidierungsmodus an, der bei der Zusammenstellung des Copybooks verwendet werden soll. In diesem Modus wird die Kompatibilität mit einem bestimmten Zieldatenformat geprüft.
Enums | |
---|---|
DEFAULT |
Standardmodus für die Schemaüberprüfung. In diesem Modus wird geprüft, ob im Copybook eindeutige Feldnamen vorhanden sind. |
BIG_QUERY |
Schemavalidierungsmodus für die BigQuery-Kompatibilität. In diesem Modus wird die Standardüberprüfung erweitert, um zu prüfen, ob das Schema des Copybooks mit den Datentypen von BigQuery kompatibel ist. |
ZonedDecimalEncoding
Geben Sie die Codierung an, die beim Decodieren oder Codieren eines dezimalen Felds mit Zone verwendet werden soll.
Enums | |
---|---|
UNSPECIFIED |
Behalten Sie die in der Modifikatorkette angegebene Codierung bei.
Wenn kein Modifikator angegeben wird, wird EBCDIC verwendet. |
EBCDIC |
Verwenden Sie die EBCDIC -Codierung. |
ASCII |
Verwenden Sie die ASCII -Codierung. |
DecimalLogicalType
Logischer Typ für ein Dezimalfeld.
Enums | |
---|---|
AUTO |
Verwenden Sie den optimalen Typ für die 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. |