Puoi configurare il transcoder del connettore mainframe aggiungendo la configurazione richiesta in un file JSON.
Questo file è chiamato file di configurazione del transcoder. Devi definire la configurazione come specificato nella sezione Configurazione.
I comandi qsam encode
e qsam decode
utilizzano il file di configurazione del transcoder per eseguire la transcodifica dei dati.
Questa pagina descrive i vari modi in cui puoi configurare il transcoder Mainframe Connector.
Configurazione
L'oggetto Configuration
è la radice della configurazione del transcoder.
Contiene tutte le opzioni di configurazione del transcoder.
Rappresentazione JSON |
---|
{ "defaults": object ( |
Campi | |
---|---|
defaults |
Specifica i modificatori di campo predefiniti per gli archetipi Cobol. |
field_suffixes |
Specifica i suffissi dei campi. |
field_overrides |
Specifica le sostituzioni dei campi. |
transformations |
Specifica le trasformazioni dei campi. |
schema_validation_mode |
Specifica la modalità di convalida dello schema. |
DefaultsSection
L'oggetto DefaultsSection
può essere utilizzato per specificare le modifiche predefinite in base ai tipi di COBOL.
Vengono applicati prima di eventuali modifiche ai suffissi o alle sostituzioni.
Rappresentazione JSON |
---|
{ "alpha_numeric_display": object ( |
Campi | |
---|---|
alpha_numeric_display |
Specifica i valori predefiniti per i campi alfanumerici (PIC X). |
numeric_display |
Specifica i valori predefiniti per la visualizzazione numerica (decimale con zona) dei campi. |
binary |
Specifica i valori predefiniti per i campi di numeri binari (COMP). |
packed_decimal |
Specifica i valori predefiniti per i campi decimali compressi (COMP-3). |
national |
Specifica i valori predefiniti per i campi nazionali (PIC N). |
utf8 |
Specifica i valori predefiniti per i campi UTF-8 (PIC U). |
dbcs |
Valore predefinito per i campi dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Valore predefinito per i campi con virgola mobile esadecimale (COMP-1, COMP-2). |
SuffixeChamp
I suffissi dei campi si applicano a tutti i campi che hanno un suffisso.
I campi vengono abbinati se terminano con un trattino (-
) o un trattino basso (_
) seguito dal suffisso.
I suffissi non fanno distinzione tra maiuscole e minuscole.
Il modificatore FieldSuffix
viene applicato dopo il modificatore FieldOverride
.
Ad esempio, il modificatore definito per il suffisso NID
verrà applicato al campo FLD-NID
, ma non al campo FUNID
.
Rappresentazione JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Campi | |
---|---|
suffix |
Al campo con questo suffisso verrà applicato il modificatore. |
is_inverse |
Specifica se il modificatore è un modificatore di campo inverso.
Un modificatore di campo inverso applica il modificatore a un altro campo che ha lo stesso nome del campo con il modificatore
senza il modificatore. Ad esempio, se nello stesso record esistono entrambi i campi Quando si utilizza un modificatore di campo inverso, l'identificatore speciale Ad esempio, per creare un campo indicatore di valore nullo, puoi utilizzare il modificatore di campo |
modifier |
Specifica il modificatore da applicare ai campi corrispondenti. |
FieldOverride
Sostituisci o modifica la catena di decodifica e codifica per il campo specificato.
Rappresentazione JSON |
---|
{ "field": string, "modifier": object ( |
Campi | |
---|---|
field |
Specifica il nome del campo a cui applicare il modificatore. |
modifier |
Specifica il modificatore da applicare al campo corrispondente. |
Trasformazione
Le trasformazioni delle visualizzazioni vengono utilizzate per modificare la relazione tra la tabella e il file QSAM. Le trasformazioni vengono sempre formulate dal punto di vista dei dati. Il concetto è simile alle tabelle delle visualizzazioni in BigQuery.
Rappresentazione JSON |
---|
{ "exclude": object ( |
Campi | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Un modificatore di campo ti consente di modificare la codifica o la decodifica di un campo specifico. Tieni presente che non tutti i modificatori possono essere applicati a tutti i campi. Per ulteriori informazioni, consulta la documentazione relativa ai modificatori specifici.
Rappresentazione JSON |
---|
{ "filler": object ( |
Campi | |
---|---|
filler |
Ignora ed escludi il campo. |
null_if |
Imposta il valore del campo sottostante su null in base a una condizione. |
format_date |
Formatta un campo di stringhe come data. |
chain |
Concatena più modificatori. |
zoned_decimal |
Sostituisci la configurazione decimale del campo con zona. |
binary |
Sostituisci la configurazione del campo binario. |
packed_decimal |
Sostituisci la configurazione del campo decimale pacchettizzato. |
null_if_invalid |
Imposta il campo su null anziché espandere la riga in caso di errore. |
bytes |
Sostituisci il campo di byte. |
varlen |
Imposta il record come campo di lunghezza variabile. |
string |
Sostituisci la configurazione del campo di stringa. |
null_if_empty |
Imposta il valore del campo sottostante su null se il campo è vuoto. |
format_timestamp |
Formatta un campo di stringhe come timestamp. |
hfp |
Imposta questo campo su un numero in virgola mobile esadecimale. |
Escludi
Escludere un campo dalla tabella risultante, ma sottoporlo comunque a decodifica o codifica. Questo è utile quando il campo non deve essere trasferito alla tabella, ma è necessario per la transcodifica. Ad esempio, i campi indicatore di valori null o di lunghezza possono essere omessi dalla tabella.
Per bypassare del tutto la transcodifica, applica il modificatore di riempimento.
Rappresentazione JSON |
---|
{ "field": string |
Campi | |
---|---|
field |
Specifica il campo da escludere. |
Unnest
Rimuovi la nidificazione del campo.
Rappresentazione JSON |
---|
{ "field": string, "format": string |
Campi | |
---|---|
field |
Specifica il campo da annullare l'annidamento |
format |
Specifica il nuovo formato del campo.
Per le strutture non nidificate, Per gli array e gli elenchi non nidificati, |
Sposta
Sposta un campo nel record.
Rappresentazione JSON |
---|
{ "field": string, "offset": int |
Campi | |
---|---|
field |
Specifica il campo da spostare. |
offset |
Specifica il numero di posizioni, in avanti o indietro, in cui deve essere spostato il campo. |
Rinomina
Rinomina uno o più campi in base a una corrispondenza con un'espressione regolare.
Ad esempio, per sostituire tutti i trattini con trattini bassi, utilizza il seguente formato JSON:
{"find": "\\-", "replace":"_"}
.
Rappresentazione JSON |
---|
{ "find": string, "replace": string |
Campi | |
---|---|
find |
Specifica un pattern di espressione regolare Java per identificare i campi da rinominare. Il pattern viene confrontato con il nome completo del campo. Se il pattern corrisponde a qualsiasi parte del nome del campo, il campo è considerato una corrispondenza. Esempi:
|
replace |
Specifica il nuovo nome per i campi corrispondenti. I gruppi Capture dell'espressione regolare Esempi:
|
Riempitivo
Specifica che un campo non verrà decodificato o codificato. Inoltre, verrà escluso anche dalla tabella risultante durante la procedura di decodifica. Puoi applicare questo modificatore a qualsiasi campo di dimensioni note.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
SE.NON.NULLO
Imposta un campo su null se una condizione è soddisfatta. Devi specificare null_value
o non_null_value
o entrambi.
Per creare un campo indicatore di valore nullo, puoi utilizzare un FieldSuffix
con un modificatore di campo null_if
e impostare is_inverse
su true
, come mostrato negli esempi seguenti:
Esempio: indicatoreNull
Per creare un campo indicatore di valori null, possiamo utilizzare il modificatore di camponull_if
come segue.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
possono essere indicatori nulli, come mostrato nel seguente snippet del modello di copia:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Esempio: indicatore di valore nullo binario
Per creare un campobinary
di indicatore di valori null, possiamo utilizzare i modificatori di campo binary
e null_if
come segue.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
possono essere indicatori di valori nulli binary
utilizzando lo stesso modello di copia dell'esempio precedente.
Esempio: indicatore di valori nulli in byte
Per creare un campo di indicatore di valori nullbytes
, possiamo utilizzare i modificatori di campo bytes
e null_if
come segue.
I valori null e non null sono espressi come HEX
.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "bytes": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "FF", "target_field": "$self" } } } ] }
NID
possono essere effettivamente un indicatore di valore nullo bytes
utilizzando lo stesso copybook
dell'esempio precedente.
Rappresentazione JSON |
---|
{ "target_field": string, "null_value": string, "non_null_value": string |
Campi | |
---|---|
target_field |
Specifica il campo di cui vuoi controllare il valore. Il campo deve essere nell'ambito. |
null_value |
Se specificato, se |
non_null_value |
Se specificato, se |
FormatDate
Formatta una stringa in una data utilizzando uno dei formati supportati. Puoi applicare questo modificatore solo ai campi con dimensioni. Durante il processo di decodifica, i formati vengono testati in ordine finché uno di questi non corrisponde alla stringa. Durante il processo di codifica, viene utilizzato il primo formato e gli altri vengono ignorati.
Rappresentazione JSON |
---|
{ "formats": object ( |
Campi | |
---|---|
formats |
Elenco dei formati di data. |
ModifierChain
Specifica una catena di modificatori per applicare più modificatori in serie. I modificatori vengono applicati nell'ordine in cui sono specificati.
Rappresentazione JSON |
---|
{ "modifiers": object ( |
Campi | |
---|---|
modifiers |
Specifica l'elenco dei modificatori da applicare. |
ZonedDecimal
Imposta varie opzioni relative alla codifica e alla decodifica dei decimali con zona. Puoi applicare questo modificatore solo a un campo decimale.
Rappresentazione JSON |
---|
{ "logical_type": enum ( |
Campi | |
---|---|
logical_type |
Specifica il tipo logico da utilizzare per decodificare o codificare il campo. |
encoding |
La codifica con cui è codificato il campo. |
Binario
Ignora eventuali modificatori precedenti e tratta questo campo come un numero binario.
Rappresentazione JSON |
---|
{ "signedness": enum ( |
Campi | |
---|---|
signedness |
Il segno del numero. |
PackedDecimal
Imposta questo campo su PackedDecimal.
Rappresentazione JSON |
---|
{ "logical_type": enum ( |
Campi | |
---|---|
logical_type |
Sostituisci il tipo logico. Per impostazione predefinita, Mainframe Connector utilizza il tipo logico ottimale in base alla precisione e alla scala. |
NullIfInvalid
Tratta il valore come null se la transcodifica non va a buon fine. Puoi applicare questo modificatore solo ai campi con dimensioni. L'errore viene ignorato e non viene registrato nel set di dati di overflow. Durante il processo di decodifica, il valore di questo campo sarà null per questo record. Durante il processo di codifica, se non è possibile scrivere i dati, l'intero campo verrà riempito con byte null.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
Byte
Ignora la catena di modificatori e tratta i dati come byte non elaborati. Puoi applicare questo modificatore a campi di qualsiasi dimensione.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
VarLen
Rappresenta un campo di lunghezza variabile.
Un campo di lunghezza variabile contiene tre parti:
- Un elemento di gruppo contenente due campi secondari.
- Un campo all'interno dell'elemento del gruppo che contiene la lunghezza dei dati della transazione.
- Un campo all'interno dell'elemento del gruppo che contiene i dati.
Il nome del campo di lunghezza variabile sarà il nome del gruppo.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
Stringa
Imposta le varie opzioni relative alla decodifica e alla codifica delle stringhe. Può essere applicato solo a un campo di stringa.
Rappresentazione JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Campi | |
---|---|
encoding |
La codifica con cui è codificato il campo. |
trim_suffix |
Se impostato su true, gli spazi vuoti alla fine della stringa verranno tagliati. Il parametro trim_suffix influisce solo sulla decodifica, mentre la codifica ignora questo parametro. Tieni presente che le stringhe costituite solo da spazi diventeranno stringhe vuote. |
pad_char |
Quando imposti le stringhe di esportazione del riempimento con |
NullIfEmpty
Il campo deve essere impostato su null se tutti i byte del campo sono pari a 0.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
FormatTimestamp
Formatta una stringa in un timestamp utilizzando uno dei formati forniti. Questo può essere applicato solo ai campi con dimensioni. Durante la decodifica, i formati vengono testati in ordine finché uno di questi non corrisponde alla stringa. Durante la codifica, verrà utilizzato il primo formato e gli altri verranno ignorati.
Rappresentazione JSON |
---|
{ "formats": object ( |
Campi | |
---|---|
formats |
Elenco dei formati dei timestamp. |
HFP
Imposta questo campo come virgola mobile esadecimale.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
DateTimeFormat
Dimensioni e pattern da utilizzare per convertire il campo in una data.
Rappresentazione JSON |
---|
{ "size": int, "pattern": string |
Campi | |
---|---|
size |
Specifica le dimensioni del campo a cui si applica questo pattern. |
pattern |
Pattern di formattazione della data. Per ulteriori informazioni sui pattern di formattazione validi, consulta la classe DateTimeFormatter. |
BinarySignedness
Tipo logico da utilizzare per un campo decimale.
Enum | |
---|---|
UNSPECIFIED |
Utilizza il tipo più ottimale in base alla scala e alla precisione. |
SIGNED |
Utilizza 64 bit per memorizzare il valore. Questo modificatore funziona solo per i numeri la cui precisione è inferiore o uguale a 18 e la scala è 0. |
UNSIGNED |
Utilizza 64 bit per memorizzare il valore. Questo modificatore funziona solo per i numeri la cui precisione è minore o uguale a 18. |
DecimalLogicalType
Tipo logico da utilizzare per un campo decimale.
Enum | |
---|---|
AUTO |
Utilizza il tipo più ottimale in base alla scala e alla precisione. |
LONG |
Utilizza 64 bit per memorizzare il valore. Questo modificatore funziona solo per i numeri la cui precisione è inferiore o uguale a 18 e la scala è 0. |
DECIMAL64 |
Utilizza 64 bit per memorizzare il valore. Questo modificatore funziona solo per i numeri la cui precisione è minore o uguale a 18. |
BIG_DECIMAL |
Memorizza il valore come valore decimale illimitato. Questa è l'opzione più lenta, ma supporta qualsiasi numero decimale di qualsiasi precisione a qualsiasi scala. |
BIG_INTEGER |
Memorizza il valore come valore intero illimitato. Questa è l'opzione più lenta, ma supporta qualsiasi numero intero di qualsiasi precisione. |
ZonedDecimalEncoding
Specifica la codifica da utilizzare per decodificare o codificare un campo decimale con zona.
Enum | |
---|---|
UNSPECIFIED |
Mantieni la codifica specificata nella catena di modificatori.
Se non è stato specificato alcun modificatore, viene utilizzato EBCDIC . |
EBCDIC |
Utilizza la codifica EBCDIC . |
ASCII |
Utilizza la codifica ASCII . |
SchemaValidationMode
La modalità di convalida dello schema utilizzata durante la compilazione del libro mastro. Questa modalità garantisce la compatibilità con un formato di dati di destinazione specifico.
Enum | |
---|---|
DEFAULT |
Modalità di convalida dello schema predefinita. Questa modalità garantisce nomi di campo univoci all'interno del modello. |
BIG_QUERY |
Modalità di convalida dello schema per la compatibilità con BigQuery. Questa modalità estende la convalida predefinita per garantire che lo schema del copybook sia compatibile con i tipi di dati di BigQuery. |