Configurazione del transcodificatore

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 transcoder. Contiene tutte le opzioni di configurazione per il transcodificatore.

Rappresentazione JSON
{
    "defaults": object (DefaultsSection),
    "field_overrides": object (FieldOverride),
    "field_suffixes": object (FieldSuffix),
    "header_records_to_skip": long,
    "record_filter_condition": string,
    "schema_validation_mode": enum (SchemaValidationMode),
    "transformations": object (Transformation)
}
Campi
defaults

object (DefaultsSection)

Specifica i modificatori di campo predefiniti per gli archetipi Cobol.

field_overrides

object (FieldOverride)

Specifica gli override dei campi.

field_suffixes

object (FieldSuffix)

Specifica i suffissi dei campi.

header_records_to_skip

long

Specifica il numero di primi record da ignorare.

record_filter_condition

string

Specifica una condizione di filtro per i record.

Il filtro si basa su un sottoinsieme di Common Expression Language (CEL) e supporta quanto segue:

  • Accesso ai campi:è possibile fare riferimento ai campi in base al nome. Per i campi nidificati, utilizza la notazione con il punto (ad es. PARENT.CHILD).
  • Operatori di confronto: `==`, `!=`, `<`, `<=`, `>`, `>=`.
  • Operatori logici:`&&` (AND), `||` (OR), `!` (NOT).
  • Contenimento elenco:`in` (verifica se un valore è presente in un elenco).
  • Operatori aritmetici: `+`, `-`, `*`, `/`, `%`.
  • Funzioni di stringa ed elenco:
    • size(): Restituisce la lunghezza di una stringa o di un elenco.
    • contains(substring): verifica se una stringa contiene una sottostringa specificata.
    • startsWith(prefix): verifica se una stringa inizia con un prefisso specificato.
    • endsWith(suffix): verifica se una stringa termina con un suffisso specificato.
  • Costanti di data e ora:
    • date(string): analizza una data in formato ISO (AAAA-MM-GG). Ad esempio, date('2025-01-12').
    • date(string, format): analizza una data utilizzando un formato personalizzato. Ad esempio, date('12/01/2025', 'dd/MM/yyyy').
    • timestamp(string): analizza un timestamp in formato ISO. Ad esempio, timestamp('1999-05-03T02:34:00Z').
I confronti e le operazioni devono essere eseguiti tra variabili o costanti dello stesso tipo di dati o di tipi di dati compatibili (ad esempio, confrontando numeri in rappresentazione in virgola mobile o utilizzando costanti di data/timestamp per i campi di data/timestamp).

Esempio:

"record_filter_condition": "(ACCOUNT-GRP.DATE > date('2025-01-12') ) && ((SCORE_A + SCORE_B) > 134) && FLD-STR.startsWith('HE')"

schema_validation_mode

enum (SchemaValidationMode)

Specifica la modalità di convalida dello schema.

transformations

object (Transformation)

Specifica le trasformazioni dei campi.

DefaultsSection

L'oggetto DefaultsSection può essere utilizzato per specificare le modifiche predefinite in base ai tipi COBOL. Vengono applicate prima di qualsiasi modifica di suffissi o override.

Rappresentazione JSON
{
    "alpha_numeric_display": object (FieldModifier),
    "binary": object (FieldModifier),
    "dbcs": object (FieldModifier),
    "hexadecimal_floating_point": object (FieldModifier),
    "national": object (FieldModifier),
    "numeric_display": object (FieldModifier),
    "packed_decimal": object (FieldModifier),
    "utf8": object (FieldModifier)
}
Campi
alpha_numeric_display

object (FieldModifier)

Specifica i valori predefiniti per i campi alfanumerici (PIC X).

binary

object (FieldModifier)

Specifica i valori predefiniti per i campi numerici binari (COMP).

dbcs

object (FieldModifier)

Valore predefinito per i campi dbcs (DISPLAY-1).

hexadecimal_floating_point

object (FieldModifier)

Valore predefinito per i campi in virgola mobile esadecimale (COMP-1, COMP-2).

national

object (FieldModifier)

Specifica i valori predefiniti per i campi nazionali (PIC N).

numeric_display

object (FieldModifier)

Specifica i valori predefiniti per i campi di visualizzazione numerica (decimale zonale).

packed_decimal

object (FieldModifier)

Specifica i valori predefiniti per i campi decimali compressi (COMP-3).

utf8

object (FieldModifier)

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 ulteriori informazioni, consulta la documentazione relativa ai modificatori specifici.

Rappresentazione JSON
{
    "binary": object (Binary),
    "bytes": object (Bytes),
    "chain": object (ModifierChain),
    "decode_as_null": object (DecodeAsNull),
    "encode_null_as": object (EncodeNullAs),
    "filler": object (Filler),
    "format_date": object (FormatDate),
    "format_timestamp": object (FormatTimestamp),
    "hfp": object (HFP),
    "null_if": object (NullIf),
    "null_if_empty": object (NullIfEmpty),
    "null_if_invalid": object (NullIfInvalid),
    "packed_decimal": object (PackedDecimal),
    "string": object (String),
    "varlen": object (VarLen),
    "zoned_decimal": object (ZonedDecimal)
}
Campi
binary

object (Binary)

Esegue l'override della configurazione predefinita per i campi numerici binari.

bytes

object (Bytes)

Considera il campo come una sequenza non elaborata di byte, ignorando le informazioni sul tipo precedenti.

chain

object (ModifierChain)

Concatena più modificatori da applicare in sequenza.

decode_as_null

object (DecodeAsNull)

Definisce come devono essere decodificati i valori null.

encode_null_as

object (EncodeNullAs)

Definisce come devono essere codificati i valori null.

filler

object (Filler)

Esclude il campo dall'elaborazione e dall'output.

format_date

object (FormatDate)

Formatta un campo stringa come data.

format_timestamp

object (FormatTimestamp)

Formatta un campo stringa come timestamp.

hfp

object (HFP)

Interpreta il campo come un numero in virgola mobile esadecimale (HFP).

null_if

object (NullIf)

Imposta in modo condizionale il campo su null in base al valore di un altro campo.

null_if_empty

object (NullIfEmpty)

Imposta il campo su null se i suoi contenuti sono considerati vuoti.

null_if_invalid

object (NullIfInvalid)

Imposta il campo su null se si verifica un errore di transcodifica, impedendo lo spillover dei record.

packed_decimal

object (PackedDecimal)

Esegue l'override della configurazione predefinita per i campi decimali compressi.

string

object (String)

Esegue l'override della configurazione predefinita per i campi stringa.

varlen

object (VarLen)

Imposta il record come campo a lunghezza variabile.

zoned_decimal

object (ZonedDecimal)

Esegue l'override della configurazione predefinita per i campi decimali zonati.

Binario

Ignora eventuali modificatori precedenti e considera questo campo come un numero binario.

Rappresentazione JSON
{
    "signedness": enum (BinarySignedness)
}
Campi
signedness

enum (BinarySignedness)

Il segno del numero.

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
{
}

DecodeAsNull

Definisce come vengono interpretati i valori null durante il processo di decodifica. Poiché COBOL non supporta in modo nativo i valori null, questo parametro specifica quali valori devono essere trattati come null.

Rappresentazione JSON
{
    "hex_bytes": string,
    "values": string
}
Campi
hex_bytes

string

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 FF per tutti i massimi e 00 per tutti i minimi (vuoto).

values

string

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.

EncodeNullAs

Definisce la modalità di rappresentazione dei valori null durante il processo di codifica.

Rappresentazione JSON
{
    "hex_byte": string,
    "value": string
}
Campi
hex_byte

string

Codifica questa sequenza di byte specifica (rappresentata come stringa esadecimale) quando il valore di origine è null. Ad esempio, FF per un campo di due byte ai valori elevati. Puoi applicarlo a qualsiasi campo con una dimensione nota. I byte vengono ripetuti in modo che corrispondano alle dimensioni del campo sottostante.

value

string

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 statica nota.

Fornisci un oggetto JSON vuoto come segue:

Rappresentazione JSON
{
}

FormatDate

Formatta un campo stringa o numerico in una data utilizzando uno dei formati supportati. Puoi applicare questo modificatore solo ai campi dimensionati. Per i campi numerici, vengono convertiti dinamicamente nella relativa rappresentazione di stringa (esclusi eventuali indicatori di segno) prima della formattazione. Si presume che i valori di data siano positivi; le date numeriche negative non sono supportate e l'analisi non andrà a buon fine. 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 (DateTimeFormat)
}
Campi
formats

object (DateTimeFormat)

Elenco dei formati data.

DateTimeFormat

Dimensioni e pattern da utilizzare per convertire il campo in una data.

Rappresentazione JSON
{
    "pattern": string,
    "size": int
}
Campi
pattern

string

Specifica il pattern del formattatore di date. Per ulteriori informazioni sui pattern di formattazione validi, consulta la classe DateTimeFormatter.

size

int

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 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 (DateTimeFormat)
}
Campi
formats

object (DateTimeFormat)

Elenco dei formati del timestamp.

HFP

Imposta questo campo come 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 (FieldModifier)
}
Campi
modifiers

object (FieldModifier)

Specifica l'elenco dei 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 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 campo null_if nel seguente modo.

 {
  "field_suffixes": [
   {
     "suffix": "NID",
     "is_inverse": true,
     "modifier": {
     "null_if": {
       "null_value": "?",
       "target_field": "$self"
     }
    }
   }
  ]
 }

In questo modo, tutti i campi con il suffisso NID diventano 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 nulli binary, 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"
     }
    }
   }
  ]
 }

In questo modo, tutti i campi con il suffisso 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 nulli bytes, 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"
     }
    }
   }
  ]
 }

In questo modo, tutti i campi con il suffisso NID diventano effettivamente un indicatore di valore nullo 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

string

Se specificato, se target_field non è uguale a questo valore, il campo non viene decodificato o codificato e il valore viene impostato su null.

non_null_values

string

Se specificato, se target_field non è uguale a nessuno di questi valori, il campo non viene decodificato o codificato e il valore viene impostato su null.

null_value

string

Se specificato, se target_field è uguale a questo valore, il campo non viene decodificato o codificato e il valore viene impostato su null.

null_values

string

Se specificato, se target_field è uguale a uno di questi valori, il campo non viene decodificato o codificato e il valore viene impostato su null.

target_field

string

Specifica il campo di cui vuoi controllare il valore. Il campo deve essere incluso nell'ambito. Per accedere ai campi nidificati, puoi utilizzare la notazione punto (ad es. "GROUP.FIELD").

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
{
}

NullIfInvalid

Considera il valore come null se la transcodifica non va a buon fine. Puoi applicare questo modificatore solo ai campi dimensionati. Per impostazione predefinita, quando la decodifica di un campo non riesce, l'intero record viene spostato nel set di dati di overflow (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 nullo, non solo per far sì che il caricamento vada a buon fine, dato che il valore predefinito salta già i record errati. 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 la procedura 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 PackedDecimal.

Rappresentazione JSON
{
    "logical_type": enum (DecimalLogicalType),
    "negative_sign_nibble": enum (PackedDecimalNegativeNibble)
}
Campi
logical_type

enum (DecimalLogicalType)

Esegui 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

enum (PackedDecimalNegativeNibble)

Specifica il nibble da utilizzare per i segni negativi. Sebbene x'B' e x'D' siano segni negativi validi, alcuni sistemi mainframe o applicazioni potrebbero avere una convenzione che ne richiede 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

string

La codifica con cui viene codificato il campo.

pad_char

string

Quando imposti le stringhe di esportazione del padding con pad_char. Se impostata, la lunghezza di pad_char deve essere 1. pad_char influisce solo sulla codifica, la decodifica ignora pad_char.

trim_suffix

boolean

Se impostato su true, gli spazi bianchi alla fine della stringa verranno eliminati. trim_suffix influisce solo sulla decodifica, la codifica lo ignora. Tieni presente che le stringhe composte solo da spazi vuoti diventeranno stringhe vuote.

VarLen

Rappresenta un campo a lunghezza variabile.

Un campo a lunghezza variabile è composto da tre parti:

  1. Un elemento di gruppo che contiene due campi secondari.
  2. Un campo all'interno dell'elemento del gruppo che contiene la lunghezza dei dati della transazione.
  3. 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
{
}

ZonedDecimal

Imposta varie opzioni relative alla codifica e alla decodifica dei decimali zonati. Puoi applicare questo modificatore solo a un campo decimale.

Rappresentazione JSON
{
    "encoding": enum (ZonedDecimalEncoding),
    "logical_type": enum (DecimalLogicalType)
}
Campi
encoding

enum (ZonedDecimalEncoding)

La codifica con cui viene codificato il campo.

logical_type

enum (DecimalLogicalType)

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 (FieldModifier)
}
Campi
field

string

Specifica il nome del campo a cui applicare il modificatore.

modifier

object (FieldModifier)

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 (FieldModifier),
    "suffix": string
}
Campi
is_inverse

boolean

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 i campi FLD-NID che FLD, il modificatore verrà applicato a FLD.

Quando utilizzi un modificatore di campo inverso, l'identificatore speciale $self può essere utilizzato ogni volta che un nome di campo può essere tradizionalmente utilizzato per fare riferimento al campo con il suffisso.

Ad esempio, per creare un campo indicatore di valori nulli, puoi utilizzare il modificatore di campo null_if con is_inverse impostato su true. Per saperne di più, consulta NullIf.

modifier

object (FieldModifier)

Specifica il modificatore da applicare ai campi corrispondenti.

suffix

string

Al campo con questo suffisso verrà applicato il modificatore.

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 (Exclude),
    "move": object (Move),
    "rename": object (Rename),
    "split": object (Split),
    "target_table": string,
    "unnest": object (Unnest)
}
Campi
exclude

object (Exclude)

move

object (Move)

rename

object (Rename)

split

object (Split)

target_table

string

Facoltativo. Specifica il nome della tabella (visualizzazione) di destinazione a cui applicare la trasformazione.

Per impostazione predefinita, le trasformazioni vengono applicate alla tabella principale (_main) o a livello globale, se applicabile. Se hai visualizzazioni suddivise (create da una trasformazione split), puoi scegliere come target una tabella suddivisa specifica in base al nome.

Nota: le trasformazioni di suddivisione non possono essere prese di mira e genereranno un errore se è impostato target_table.

unnest

object (Unnest)

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

string

Specifica il campo da escludere.

Sposta

Sposta un campo nel record.

Rappresentazione JSON
{
    "field": string,
    "offset": int
}
Campi
field

string

Specifica il campo da spostare.

offset

int

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

string

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:

  • "\\-" (corrisponde a qualsiasi campo contenente un trattino)
  • "^field_name$" (corrisponde ai campi con il nome esatto field_name)
  • "^field_(.*)$" (corrisponde a tutti i campi che iniziano con field_ e acquisisce il resto)
  • "part_of_name" (corrisponde a qualsiasi campo contenente part_of_name)

replace

string

Specifica il nuovo nome per i campi corrispondenti.

I gruppi di acquisizione dell'espressione regolare find possono essere utilizzati nella stringa replace utilizzando riferimenti inversi come $1 e $2. Ciò consente trasformazioni più complesse basate su parti del nome del campo originale.

Esempi:

  • "new_field_name" (sostituisce il campo con un nome fisso)
  • "new_$1" (utilizza il primo gruppo Capture di find)
  • "${1}_new" (sintassi alternativa per i gruppi di acquisizione)
  • "prefix_$1_suffix" (utilizza un gruppo Capture e aggiunge prefissi/suffissi)

Suddividi

Rappresentazione JSON
{
    "field": string,
    "foreign_key": string,
    "primary_key": string
}
Campi
field

string

Specifica il campo da dividere.

foreign_key

string

Specifica il nome del campo che verrà aggiunto al nuovo schema in cui verrà memorizzato il valore della chiave primaria. Se non specificato, viene utilizzato il nome della chiave primaria.

primary_key

string

Specifica il nome del campo che verrà utilizzato come chiave primaria.

Unnest

Rimuovi la nidificazione del campo.

Rappresentazione JSON
{
    "field": string,
    "format": string
}
Campi
field

string

Specifica il campo da separare

format

string

Specifica il nuovo formato del campo.

${parent} verrà rilasciato con il nome del campo che viene annidato.

Per gli struct non nidificati, ${field} viene sostituito con il nome del campo degli struct.

Per gli array e le liste non nidificati, ${index} viene sostituito dagli indici dell'array.

Enum

BinarySignedness

Enum
SIGNED Il numero binario è relativo.
UNSIGNED Il numero binario non è firmato.
UNSPECIFIED Prova a dedurre la firma dalla catena esistente.

DecimalLogicalType

Il tipo logico da utilizzare per un campo decimale.

Enum
AUTO Utilizza il tipo più ottimale in base alla scala e alla precisione.
BIG_DECIMAL Memorizza il valore come valore decimale senza limiti. Questa è l'opzione più lenta, ma supporta qualsiasi decimale di qualsiasi precisione e scala.
BIG_INTEGER Memorizza il valore come numero intero senza limiti. Questa è l'opzione più lenta, ma supporta qualsiasi numero intero di qualsiasi precisione.
DECIMAL64 Utilizza 64 bit per memorizzare il valore. Questo modificatore funziona solo per i numeri la cui precisione è inferiore o uguale a 18.
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.

PackedDecimalNegativeNibble

Enum
NIBBLE_B Il valore predefinito è 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 di 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 i nomi dei campi univoci siano presenti nel copybook.
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 zonato.

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.