Puoi configurare il transcodificatore Mainframe Connector aggiungendo la configurazione richiesta in un file JSON.
Questo file è denominato file di configurazione del transcodificatore. Devi definire la configurazione come specificato nella sezione Configurazione.
I comandi qsam encode
e qsam decode
utilizzano il file di configurazione del transcodificatore per eseguire la transcodifica dei dati.
Questa pagina descrive i vari modi in cui puoi configurare il transcodificatore Mainframe Connector.
Configurazione
L'oggetto Configuration
è la radice della configurazione del transcodificatore.
Contiene tutte le opzioni di configurazione per il transcodificatore.
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 gli override dei campi. |
transformations |
Specifica le trasformazioni dei campi. |
schema_validation_mode |
Specifica la modalità di convalida dello schema. |
header_records_to_skip |
Specifica il numero di primi record da ignorare. |
record_filter_condition |
Specifica una condizione di filtro per i record. Il filtro supporta i seguenti operatori:
Esempio:
|
DefaultsSection
L'oggetto DefaultsSection
può essere utilizzato per specificare le modifiche predefinite in base ai tipi COBOL.
Questi vengono applicati prima di eventuali modifiche ai suffissi o agli override.
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 i campi di visualizzazione numerica (decimali con zona). |
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 in virgola mobile esadecimale (COMP-1, COMP-2). |
FieldSuffix
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 denominato 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 o meno.
Un modificatore di campo inverso applica il modificatore a un altro campo con lo stesso nome del campo con il modificatore
senza il modificatore. Ad esempio, se nello stesso record esistono sia il campo Quando utilizzi un modificatore di campo inverso, l'identificatore speciale Ad esempio, per creare un campo indicatore di valori nulli, puoi utilizzare il modificatore di campo |
modifier |
Specifica il modificatore da applicare ai campi corrispondenti. |
FieldOverride
Esegui l'override 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 della visualizzazione vengono utilizzate per modificare la relazione tra la tabella e il file QSAM. Le trasformazioni sono sempre formulate dal punto di vista dei dati. Il concetto è simile a quello delle tabelle delle visualizzazioni in BigQuery.
Rappresentazione JSON |
---|
{ "exclude": object ( |
Campi | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Un modificatore di campo 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 |
Esclude il campo dall'elaborazione e dall'output. |
null_if |
Imposta in modo condizionale il campo su null in base al valore di un altro campo. |
format_date |
Formatta un campo stringa come data. |
chain |
Concatena più modificatori da applicare in sequenza. |
zoned_decimal |
Esegue l'override della configurazione predefinita per i campi decimali zonati. |
binary |
Esegue l'override della configurazione predefinita per i campi numerici binari. |
packed_decimal |
Esegue l'override della configurazione predefinita per i campi decimali compressi. |
null_if_invalid |
Imposta il campo su null se si verifica un errore di transcodifica, impedendo lo spillover dei record. |
bytes |
Considera il campo come una sequenza non elaborata di byte, ignorando le informazioni sul tipo precedenti. |
varlen |
Imposta il record come campo a lunghezza variabile. |
string |
Esegue l'override della configurazione predefinita per i campi stringa. |
null_if_empty |
Imposta il campo su null se i suoi contenuti sono considerati vuoti. |
format_timestamp |
Formatta un campo stringa come timestamp. |
hfp |
Interpreta il campo come un numero esadecimale in virgola mobile (HFP). |
decode_as_null |
Definisce come devono essere decodificati i valori null. |
encode_null_as |
Definisce la modalità di codifica dei valori null. |
Escludi
Escludi un campo dalla tabella risultante, ma continua a sottoporlo a decodifica o codifica. È utile quando il campo non deve essere trasferito alla tabella, ma è necessario per la transcodifica. Ad esempio, gli indicatori null o i campi di lunghezza possono essere omessi dalla tabella.
Per ignorare completamente 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 separare |
format |
Specifica il nuovo formato del campo.
Per gli struct non nidificati, Per gli array e le liste 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 di espressione regolare.
Ad esempio, per sostituire tutti i trattini con i 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 una qualsiasi parte del nome del campo, il campo viene considerato una corrispondenza. Esempi:
|
replace |
Specifica il nuovo nome per i campi corrispondenti. I gruppi di acquisizione dell'espressione regolare Esempi:
|
Riempitivo
Specifica che un campo verrà ignorato durante l'elaborazione. Il campo non verrà decodificato dall'input o codificato nell'output e verrà escluso dallo schema e dalla tabella di dati risultanti durante la decodifica. Puoi applicare questo modificatore a qualsiasi campo con una dimensione statica nota.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
NullIf
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 valori nulli, puoi utilizzare un FieldSuffix
con un modificatore di campo null_if
e impostare is_inverse
su true
come mostrato negli esempi seguenti:
Esempio: indicatore di valore nullo
Per creare un campo indicatore di valori nulli, possiamo utilizzare il modificatore di camponull_if
nel seguente modo.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
sono effettivamente indicatori nulli, come mostrato nel seguente snippet di copybook:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Esempio: indicatore di null binario
Per creare un campo indicatore di valori nullibinary
, possiamo utilizzare i modificatori di campo binary
e null_if
nel seguente modo.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
diventano indicatori null binary
utilizzando lo stesso copybook dell'esempio precedente.
Esempio: indicatore di nullità dei byte
Per creare un campo indicatore di valori nullibytes
, possiamo utilizzare i modificatori di campo bytes
e null_if
nel seguente modo.
I valori per 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
diventano effettivamente un indicatore di valori nulli bytes
utilizzando lo stesso copybook
dell'esempio precedente.
Rappresentazione JSON |
---|
{ "target_field": string, "null_value": string, "null_values": string, "non_null_value": string, "non_null_values": string |
Campi | |
---|---|
target_field |
Specifica il campo di cui vuoi controllare il valore. Il campo deve essere incluso nell'ambito. |
null_value |
Se specificato, se |
null_values |
Se specificato, se |
non_null_value |
Se specificato, se |
non_null_values |
Se specificato, se |
FormatDate
Formatta una stringa in una data utilizzando uno dei formati supportati. Puoi applicare questo modificatore solo ai campi dimensionati. Durante il processo di decodifica, i formati vengono testati in ordine finché uno di essi 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 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 numeri decimali compressi. Puoi applicare questo modificatore solo a un campo decimale.
Rappresentazione JSON |
---|
{ "logical_type": enum ( |
Campi | |
---|---|
logical_type |
Specifica il tipo logico da utilizzare durante la decodifica o la codifica del campo. |
encoding |
La codifica con cui viene codificato il campo. |
Binario
Ignora eventuali modificatori precedenti e considera 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 |
Ignora il tipo logico. Per impostazione predefinita, Mainframe Connector utilizza il tipo logico ottimale in base alla precisione e alla scala. |
NullIfInvalid
Considera il valore come null se la transcodifica non va a buon fine. Puoi applicare questo modificatore solo ai campi dimensionati. L'errore viene ignorato e non viene registrato nel set di dati di overflow. Durante la procedura 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 nulli.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
Byte
Considera il campo come una sequenza non elaborata di byte. Questo modificatore sostituisce qualsiasi informazione precedente sul tipo, facendo sì che i dati byte non elaborati del campo vengano conservati così come sono senza codifica dei caratteri o interpretazione numerica specifiche. Puoi applicare questo modificatore a qualsiasi campo, indipendentemente dal tipo o dalle dimensioni originali.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
VarLen
Rappresenta un campo di lunghezza variabile.
Un campo a lunghezza variabile è composto da tre parti:
- Un elemento di gruppo che contiene 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 a 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 stringa.
Rappresentazione JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Campi | |
---|---|
encoding |
La codifica con cui viene codificato il campo. |
trim_suffix |
Se impostato su true, gli spazi bianchi alla fine della stringa verranno eliminati. trim_suffix influisce solo sulla decodifica, la codifica ignora trim_suffix. Tieni presente che le stringhe costituite solo da spazi vuoti diventeranno stringhe vuote. |
pad_char |
Quando imposti le stringhe di esportazione del padding con |
NullIfEmpty
Il campo deve essere impostato su null se tutti i byte in quel campo sono 0.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
FormatTimestamp
Formatta una stringa in un timestamp utilizzando uno dei formati forniti. Può essere applicato solo ai campi dimensionati. Durante la decodifica, i formati vengono testati in ordine finché uno di essi 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 del timestamp. |
HFP
Imposta questo campo come virgola mobile esadecimale.
Fornisci un oggetto JSON vuoto come segue:
Rappresentazione JSON |
---|
{ |
DecodeAsNull
Definisce come vengono interpretati i valori null durante il processo di decodifica. Poiché COBOL non supporta nativamente i valori null, questo parametro specifica quali valori devono essere trattati come null.
Rappresentazione JSON |
---|
{ "values": string, "hex_bytes": string |
Campi | |
---|---|
values |
Un elenco di rappresentazioni di stringhe. Dopo la decodifica iniziale del campo nella sua forma di stringa, se il contenuto del campo corrisponde a uno di questi valori, verrà considerato come null. |
hex_bytes |
Un elenco di rappresentazioni esadecimali di un singolo byte.
Quando un campo contiene ripetizioni di uno di questi byte, viene considerato nullo.
Ad esempio, utilizzando |
EncodeNullAs
Definisce la modalità di rappresentazione dei valori null durante il processo di codifica.
Rappresentazione JSON |
---|
{ "value": string, "hex_byte": string |
Campi | |
---|---|
value |
Codifica questo valore specifico quando il valore di origine è null. Verifica che la stringa sia valida per il tipo di campo. |
hex_byte |
Codifica questa sequenza di byte specifica (rappresentata come stringa esadecimale)
quando il valore di origine è null. Ad esempio, |
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 |
Specifica il pattern del formattatore di date. Per ulteriori informazioni sui pattern di formattazione validi, consulta Class DateTimeFormatter. |
ZonedDecimalEncoding
Specifica la codifica da utilizzare durante la decodifica o la codifica di un campo decimale zonato.
Enum | |
---|---|
UNSPECIFIED |
Mantieni la codifica specificata nella catena di modificatori.
Se non viene specificato alcun modificatore, viene utilizzato EBCDIC . |
EBCDIC |
Utilizza la codifica EBCDIC . |
ASCII |
Utilizza la codifica ASCII . |
BinarySignedness
Il 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 è minore 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
Il 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 è minore 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 senza limiti. Questa è l'opzione più lenta, ma supporta qualsiasi decimale di qualsiasi precisione a qualsiasi scala. |
BIG_INTEGER |
Memorizza il valore come numero intero senza limiti. Questa è l'opzione più lenta, ma supporta qualsiasi numero intero di qualsiasi precisione. |
SchemaValidationMode
Specifica la modalità di convalida dello schema da utilizzare durante la compilazione del copybook. Questa modalità verifica la compatibilità con un formato di dati di destinazione specifico.
Enum | |
---|---|
DEFAULT |
Modalità di convalida dello schema predefinita. Questa modalità verifica che i nomi dei campi univoci siano nel copybook. |
BIG_QUERY |
Modalità di convalida dello schema per la compatibilità con BigQuery. Questa modalità estende la convalida predefinita per verificare che lo schema del copybook sia compatibile con i tipi di dati di BigQuery. |
POSTGRES |
Modalità di convalida dello schema per la compatibilità con PostgreSQL. Questa modalità estende la convalida predefinita per verificare che lo schema del copybook sia compatibile con i tipi di dati PostgreSQL. |
MYSQL |
Modalità di convalida dello schema per la compatibilità con MySQL. Questa modalità estende la convalida predefinita per verificare che lo schema del copybook sia compatibile con i tipi di dati MySQL. |