Puoi configurare il transcodificatore di 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 di Mainframe Connector.
Configurazione
L'oggetto Configuration è la radice della configurazione del transcodificatore.
Contiene tutte le opzioni di configurazione per il transcoder.
| Rappresentazione JSON |
|---|
{ "defaults": object ( |
| Campi | |
|---|---|
defaults |
Specifica i modificatori di campo predefiniti per gli archetipi Cobol. |
field_overrides |
Specifica gli override dei campi. |
field_suffixes |
Specifica i suffissi dei campi. |
header_records_to_skip |
Specifica il numero di primi record da saltare. |
record_filter_condition |
Specifica una condizione di filtro per i record. Il filtro si basa su un sottoinsieme di Common Expression Language (CEL) e supporta quanto segue:
Esempio:
|
schema_validation_mode |
Specifica la modalità di convalida dello schema. |
transformations |
Specifica le trasformazioni dei campi. |
DefaultsSection
L'oggetto DefaultsSection può essere utilizzato per specificare le modifiche predefinite in base ai tipi COBOL.
Questi vengono applicati prima di qualsiasi modifica di suffisso o override.
| Rappresentazione JSON |
|---|
{ "alpha_numeric_display": object ( |
| Campi | |
|---|---|
alpha_numeric_display |
Specifica i valori predefiniti per i campi alfanumerici (PIC X). |
binary |
Specifica i valori predefiniti per i campi dei numeri binari (COMP). |
dbcs |
Valore predefinito per i campi dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Impostazione predefinita per i campi in virgola mobile esadecimale (COMP-1, COMP-2). |
national |
Specifica i valori predefiniti per i campi nazionali (PIC N). |
numeric_display |
Specifica i valori predefiniti per i campi di visualizzazione numerica (decimale a zone). |
packed_decimal |
Specifica i valori predefiniti per i campi decimali compressi (COMP-3). |
utf8 |
Specifica i valori predefiniti per i campi UTF-8 (PIC U). |
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 saperne di più, consulta la documentazione relativa ai modificatori specifici.
| Rappresentazione JSON |
|---|
{ "binary": object ( |
| Campi | |
|---|---|
binary |
Sostituisce la configurazione predefinita per i campi numerici binari. |
bytes |
Tratta il campo come una sequenza di byte non elaborata, ignorando le informazioni sul tipo precedente. |
chain |
Concatena più modificatori da applicare in sequenza. |
decode_as_null |
Definisce la modalità di decodifica dei valori null. |
encode_null_as |
Definisce il modo in cui devono essere codificati i valori null. |
filler |
Esclude il campo dall'elaborazione e dall'output. |
format_date |
Formatta un campo stringa come data. |
format_timestamp |
Formatta un campo stringa come timestamp. |
hfp |
Interpreta il campo come un numero in rappresentazione in virgola mobile esadecimale (HFP). |
null_if |
Imposta in modo condizionale il campo su null in base al valore di un altro campo. |
null_if_empty |
Imposta il campo su null se i suoi contenuti sono considerati vuoti. |
null_if_invalid |
Imposta il campo su null se si verifica un errore di transcodifica, impedendo lo spillover dei record. |
packed_decimal |
Esegue l'override della configurazione predefinita per i campi decimali compressi. |
string |
Esegue l'override della configurazione predefinita per i campi stringa. |
varlen |
Imposta il record come campo di lunghezza variabile. |
zoned_decimal |
Sostituisce la configurazione predefinita per i campi decimali con zona. |
Binario
Ignora i modificatori precedenti e tratta questo campo come un numero binario.
| Rappresentazione JSON |
|---|
{ "signedness": enum ( |
| Campi | |
|---|---|
signedness |
La presenza o meno del segno nel numero. |
Byte
Tratta il campo come una sequenza di byte non elaborata. Questo modificatore sostituisce qualsiasi informazione sul tipo precedente, in modo che i dati dei byte non elaborati del campo vengano conservati così come sono, senza codifica dei caratteri o interpretazione numerica specifica. Puoi applicare questo modificatore a qualsiasi campo, indipendentemente dal tipo o dalle dimensioni originali.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
DecodeAsNull
Definisce il modo in cui i valori null vengono interpretati durante il processo di decodifica. Poiché COBOL non supporta i valori null in modo nativo, questo parametro specifica quali valori devono essere trattati come null.
| Rappresentazione JSON |
|---|
{ "hex_bytes": string, "values": string |
| Campi | |
|---|---|
hex_bytes |
Un elenco di rappresentazioni esadecimali di un singolo byte.
Quando un campo contiene ripetizioni di uno di questi byte, viene trattato come null.
Ad esempio, utilizzando |
values |
Un elenco di rappresentazioni di stringhe. Dopo la decodifica iniziale del campo nel formato stringa, se i contenuti del campo corrispondono a uno di questi valori, verranno trattati come null. |
EncodeNullAs
Definisce il modo in cui i valori null vengono rappresentati durante il processo di codifica.
| Rappresentazione JSON |
|---|
{ "hex_byte": string, "value": string |
| Campi | |
|---|---|
hex_byte |
Codifica questa sequenza di byte specifica (rappresentata come stringa esadecimale) quando il valore di origine è null. Ad esempio, |
value |
Codifica questo valore specifico quando il valore di origine è null. Verifica che la stringa sia valida per il tipo di campo. |
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 nota statica.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
FormatDate
Formatta un campo di stringa o numerico in una data utilizzando uno dei formati supportati. Puoi applicare questo modificatore solo ai campi con dimensioni. I campi numerici vengono convertiti dinamicamente nella loro rappresentazione di stringa (esclusi eventuali indicatori di segno) prima della formattazione. Si presume che i valori delle date siano positivi; le date numeriche negative non sono supportate e non verranno analizzate. Durante il processo di decodifica, i formati vengono testati in ordine finché uno 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. |
DateTimeFormat
Dimensioni e pattern da utilizzare per la conversione del campo in una data.
| Rappresentazione JSON |
|---|
{ "pattern": string, "size": int |
| Campi | |
|---|---|
pattern |
Specifica il pattern del formattatore della data. Per saperne di più sui pattern di formattazione validi, consulta Classe DateTimeFormatter. Nota: gli anni a due cifre ( |
size |
Specifica le dimensioni del campo a cui si applica questo pattern. |
FormatTimestamp
Formatta una stringa in un timestamp utilizzando uno dei formati forniti. Può essere applicato solo ai campi con dimensioni. Durante la decodifica, i formati vengono testati in ordine finché uno 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 di timestamp. |
HFP
Imposta questo campo come rappresentazione in virgola mobile esadecimale.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
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 di modificatori da applicare. |
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 null, puoi utilizzare un FieldSuffix con un modificatore di campo null_if e impostare is_inverse su true, come mostrato negli esempi seguenti:
Esempio: indicatore null
Per creare un campo indicatore null, possiamo utilizzare il modificatore di camponull_if in questo modo.
{
"field_suffixes": [
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "?",
"target_field": "$self"
}
}
}
]
}
NID possono essere 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 null binario
Per creare un campo indicatore nullbinary, possiamo utilizzare i modificatori di campo binary e null_if in questo modo.
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"binary": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "15",
"target_field": "$self"
}
}
}
]
}
NID possono essere effettivamente indicatori null binary utilizzando lo stesso copybook dell'esempio precedente.
Esempio: indicatore null di byte
Per creare un campo indicatore nullbytes, possiamo utilizzare i modificatori di campo bytes e null_if in questo 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 possono essere effettivamente un indicatore null bytes utilizzando lo stesso copybook dell'esempio precedente.
| Rappresentazione JSON |
|---|
{ "non_null_value": string, "non_null_values": string, "null_value": string, "null_values": string, "target_field": string |
| Campi | |
|---|---|
non_null_value |
Se specificato, se |
non_null_values |
Se specificato, se |
null_value |
Se specificato, se |
null_values |
Se specificato, se |
target_field |
Specifica il campo di cui vuoi controllare il valore. Il campo deve essere nell'ambito. Per accedere ai campi nidificati, puoi utilizzare la notazione con punto (ad es. "GROUP.FIELD"). |
NullIfEmpty
Il campo deve essere impostato su null se tutti i byte al suo interno sono pari a 0.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
NullIfInvalid
Tratta il valore come null se la transcodifica non va a buon fine.
Puoi applicare questo modificatore solo ai campi con dimensioni.
Per impostazione predefinita, quando non è possibile decodificare un campo, l'intero record viene spostato nel set di dati di spillover (errore) ed escluso dall'output, mentre il resto del caricamento viene completato con i record validi.
Quando imposti il modificatore null_if_invalid, Mainframe Connector mantiene il record non valido e imposta questo campo su null.
Utilizzalo solo quando vuoi conservare queste righe con un valore null, non solo per far sì che un caricamento vada a buon fine, poiché l'impostazione predefinita ignora già i record non validi.
L'errore viene ignorato e non viene registrato nel set di dati di spillover.
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 nulli.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
PackedDecimal
Imposta questo campo su un valore PackedDecimal.
| Rappresentazione JSON |
|---|
{ "logical_type": enum ( |
| Campi | |
|---|---|
logical_type |
Eseguire l'override del tipo logico. Per impostazione predefinita, Mainframe Connector utilizza il tipo logico ottimale in base alla precisione e alla scala. |
negative_sign_nibble |
Specifica il nibble da utilizzare per i segni negativi. Sebbene sia x'B' che x'D' siano segni negativi validi, alcuni sistemi o applicazioni mainframe potrebbero avere una convenzione che richiede l'uno rispetto all'altro. |
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, "pad_char": string, "trim_suffix": boolean |
| Campi | |
|---|---|
encoding |
La codifica con cui viene codificato il campo. |
pad_char |
Se impostato, aggiunge spaziatura interna alle stringhe di esportazione con |
trim_suffix |
Se impostato su true, gli spazi vuoti alla fine della stringa verranno tagliati. trim_suffix influisce solo sulla decodifica, mentre la codifica ignora trim_suffix. Tieni presente che le stringhe costituite solo da spazi vuoti diventeranno stringhe vuote. |
VarLen
Rappresenta un campo di lunghezza variabile.
Un campo di lunghezza variabile contiene 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 di lunghezza variabile sarà il nome del gruppo.
Fornisci un oggetto JSON vuoto come segue:
| Rappresentazione JSON |
|---|
{ |
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 |
|---|
{ "encoding": enum ( |
| Campi | |
|---|---|
encoding |
La codifica con cui viene codificato il campo. |
logical_type |
Specifica il tipo logico da utilizzare durante la decodifica o la codifica del campo. |
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. |
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 |
|---|
{ "is_inverse": boolean, "modifier": object ( |
| Campi | |
|---|---|
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,
ma senza il modificatore. Ad esempio, se nello stesso record esistono entrambi i campi Quando utilizzi un modificatore di campo inverso, l'identificatore speciale Ad esempio, per creare un campo indicatore null, puoi utilizzare il modificatore di campo |
modifier |
Specifica il modificatore da applicare ai campi corrispondenti. |
suffix |
Il modificatore verrà applicato al campo con questo suffisso. |
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 alle tabelle di visualizzazione in BigQuery.
| Rappresentazione JSON |
|---|
{ "exclude": object ( |
| Campi | |
|---|---|
exclude |
|
move |
|
rename |
|
split |
|
target_table |
Facoltativo. Specifica il nome della tabella (vista) di destinazione a cui applicare la trasformazione. Per impostazione predefinita, le trasformazioni vengono applicate alla tabella principale ( Nota: le trasformazioni di suddivisione non possono essere scelte come target e generano un errore se |
unnest |
|
Escludi
Escludere un campo dalla tabella risultante, ma sottoporlo comunque alla decodifica o alla codifica. Questa opzione è utile quando il campo non deve essere trasferito alla tabella, ma è necessario per la transcodifica. Ad esempio, i campi dell'indicatore null o della lunghezza possono essere omessi dalla tabella.
Per bypassare completamente la transcodifica, applica il modificatore di riempimento.
| Rappresentazione JSON |
|---|
{ "field": string |
| Campi | |
|---|---|
field |
Specifica il campo da escludere. |
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 spostare 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 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 Capture dell'espressione regolare Esempi:
|
Suddividi
| Rappresentazione JSON |
|---|
{ "field": string, "foreign_key": string, "primary_key": string |
| Campi | |
|---|---|
field |
Specifica il campo che vuoi suddividere. |
foreign_key |
Specifica il nome del campo che verrà aggiunto al nuovo schema in cui verrà archiviato il valore della chiave primaria. Se non specificato, viene utilizzato il nome della chiave primaria. |
primary_key |
Specifica il nome del campo che verrà utilizzato come chiave primaria. |
Unnest
Esegui l'unnest del campo.
| Rappresentazione JSON |
|---|
{ "field": string, "format": string |
| Campi | |
|---|---|
field |
Specifica il campo di cui annullare il nesting |
format |
Specifica il nuovo formato del campo.
Per gli struct non nidificati, Per gli array e gli elenchi non nidificati, |
Enum
BinarySignedness
| Enum | |
|---|---|
SIGNED |
Il numero binario è firmato. |
UNSIGNED |
Il numero binario non ha segno. |
UNSPECIFIED |
Prova a dedurre la presenza o meno del segno dalla catena esistente. |
DecimalLogicalType
Tipo logico da utilizzare per un campo decimale.
| Enum | |
|---|---|
AUTO |
Utilizza il tipo più ottimale in base alla scalabilità e alla precisione. |
BIG_DECIMAL |
Archivia il valore come valore decimale non limitato. Questa è l'opzione più lenta, ma supporta qualsiasi decimale di qualsiasi precisione su qualsiasi scala. |
BIG_INTEGER |
Archivia il valore come un valore intero non limitato. Questa è l'opzione più lenta, ma supporta qualsiasi numero intero di qualsiasi precisione. |
DECIMAL64 |
Utilizza 64 bit per archiviare il valore. Questo modificatore funziona solo per i numeri con precisione inferiore o uguale a 18. |
LONG |
Utilizza 64 bit per archiviare il valore. Questo modificatore funziona solo per i numeri la cui precisione è inferiore o uguale a 18 e la scala è 0. |
PackedDecimalNegativeNibble
| Enum | |
|---|---|
NIBBLE_B |
L'impostazione predefinita è utilizzare x'B'. |
NIBBLE_D |
Utilizza x'D' per il nibble del segno negativo. |
SchemaValidationMode
Specifica la modalità di convalida dello schema da utilizzare durante la compilazione del copybook. Questa modalità verifica la compatibilità con un formato dei dati di destinazione specifico.
| Enum | |
|---|---|
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. |
DEFAULT |
Modalità di convalida dello schema predefinita. Questa modalità verifica che nel copybook siano presenti nomi di campo univoci. |
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. |
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. |
ZonedDecimalEncoding
Specifica la codifica da utilizzare durante la decodifica o la codifica di un campo decimale a zone.
| Enum | |
|---|---|
ASCII |
Utilizza la codifica ASCII. |
EBCDIC |
Utilizza la codifica EBCDIC. |
UNSPECIFIED |
Mantieni la codifica specificata nella catena di modificatori.
Se non viene specificato alcun modificatore, viene utilizzato EBCDIC. |