Il connettore mainframe supporta due versioni dell'analizzatore sintattico del copybook:
- Analizzatore sintattico dei file di copia di tipo nativo: l'analizzatore sintattico dei file di copia di tipo nativo implementa un parser basato su ANTLR4, supporta i file di copia COBOL ed è la versione consigliata dell'analizzatore sintattico.
- Analizzatore copybook legacy: l'analizzatore sintattico del copybook legacy è una versione precedente dell'analizzatore sintattico che supporta una query formati di copybook.
Puoi definire quale parser vuoi utilizzare in base al tuo quaderno. Per ulteriori informazioni sulla definizione del parser da utilizzare, consulta Definire il parser del libro di copie.
Parser di libri mastri nativi
L'analisi del codice di copia nativo è la versione più recente del parser e viene utilizzata per impostazione predefinita. Il parser nativo del copybook implementa un parser basato su ANTLR4 e supporta i copybook COBOL.
Questa sezione elenca le attività di pre-elaborazione eseguite tipi di dati supportati dall'analizzatore sintattico nativo del copybook e le restrizioni al suo utilizzo.
Pre-elaborazione
Prima di analizzare un libro mastro, l'analizzatore del libro mastro nativo pre-elabora i dati ed esegue le seguenti attività:
- Rimuove le righe di commento.
- Risolvi il proseguimento della riga.
- Cancella le aree del numero di riga e le aree della colonna 73.
- Mantiene le istruzioni specifiche del preprocessore come
EJECT
,SPACE
eTITLE
. Questi campi vengono analizzati, ma ignorati. I report contenenti parametri di preelaborazione che possono essere utilizzati daCOPY REPLACING
non sono supportati dall'analisi sintattica dei report nativi. In questi copybook, sono racchiusi tra i due punti (:).
Tipi di dati supportati e restrizioni
Di seguito sono riportati i tipi di dati supportati dall'applicazione parser del copybook e le limitazioni per il suo utilizzo:
- Il livello 66 (ALIAS) o 77 (STANDALONE) non è supportato.
- Utilizza solo i campi PICTURE. Sono supportati i seguenti campi PICTURE:
- Pic A, Pic, B, Pic G (DBCS), Pic N (nazionale o DBCS), Pic U (UTF8), Pic X e decimale con zona (precisione massima 38, scala massima 38)
- È supportata la virgola mobile esadecimale (HFP) IBM.
- REDEFINES non sono supportate.
- Utilizza solo i seguenti campi COMP. ALIGN e OCCURS non sono supportati.
- COMP
- COMP4
- BINARIO
- COMP3
- PACKED-DECIMAL
- DATE e TIMESTAMP sono supportati.
- Gli indicatori null sono supportati.
- I campi Set di caratteri a doppio byte (DBCS) Pic G e Pic N sono
supportato e dovrebbe essere utilizzato al posto di Pic T, che ora è deprecato. Per
utilizzare il campo Pic N come DBCS senza specificare
USAGE DISPLAY-1
, devi impostare la variabile di ambienteNSYMBOL
suDBCS
. Per impostazione predefinita,NSYMBOL
è impostato suNATIONAL
, che impostaUSAGE NATIONAL
sui campi Pic N che non hanno una clausolaUSAGE
. Tieni presente cheNSYMBOL
può essere impostato solo suNATIONAL
oDBCS
. - Sono supportate stringhe di caratteri di lunghezza variabile.
- La clausola SIGN è supportata.
- Devi giustificare tutti i campi e utilizzare un unico livello di rientro.
- I commenti sono supportati.
Supporto per i campi data e timestamp
Mainframe Connector supporta lo spostamento di dati relativi a date e timestamp in e da BigQuery. Per farlo, devi definire le variabili di ambiente che iniziano
con la parola SUFFIX
nel seguente formato:
SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"
L'elenco seguente descrive il formato in maggiore dettaglio:
SUFFIX_SUFFIX_STRING
: la variabile di ambiente che che puoi utilizzare per definire i dati di data e ora. SUFFIX_STRING nome corrisponde ai suffissi-SUFFIX_STRING
o_SUFFIX_STRING
che dovrebbe essere interpretato come una data o quando utilizzato come suffisso del nome di un campo in un quaderno. Assicurati che SUFFIX_STRING non contiene trattini o trattini bassi.command
: definisce il decoder da utilizzare per analizzare il . I comandi supportati sonodate-converter
etimestamp-converter
.--format
: un parametro che definisce il formato della data o timestamp. Puoi specificare fino a cinque formati diversi separati da virgole. Se più formati possono corrispondere a un determinato input, viene utilizzato il primo formato corrispondente per il caricamento in BigQuery. Se vengono specificati più formati esporta, viene utilizzato solo il primo formato. Per ulteriori informazioni sui formati validi, consulta Formati di data e timestamp supportati.--timezone
: un parametro facoltativo per il tipoTIMESTAMP
. Per impostazione predefinita, il fuso orario è UTC. Per ulteriori informazioni sui formati dei fusi orari supportati, consulta Formati dei fusi orari supportati.--omitsuffix
(Facoltativo): se questo parametro è specificato,-SUFFIX_STRING
o_SUFFIX_STRING
viene rimosso dal nome del campo visualizzato in BigQuery.
Per aggiungere un alias per un SUFFIX_SUFFIX_STRING
, puoi impostare una variabile di ambiente SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
.
Esempi:
- Se definisci una variabile di ambiente come
SUFFIX_DT8="date-converter --format yyyyMMdd"
, un campo con suffisso-DT8
o_DT8
sarà un campo di tipoDATE
in BigQuery e il suo pattern saràyyyyMMdd
. - Se definisci una variabile di ambiente come
SUFFIX_DT10="date-converter --format MM-dd-yyyy"
, un campo con suffisso-DT10
o_DT10
sarà un campo di tipoDATE
in BigQuery e il relativo pattern saràMM-dd-yyyy
. - Se definisci una variabile di ambiente come
SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'"
, un campo con suffisso-DT
o_DT
sarà un campo di tipoDATE
in BigQuery e il suo pattern saràMM-dd-yyyy
oMM/dd/yyyy
. - Se definisci due variabili di ambiente come
SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"
eSUFFIX_TS=$SUFFIX_TIMESTAMP
, un campo con uno dei seguenti suffissi:-TIMESTAMP
,_TIMESTAMP
,-TS
o_TS
sarà un campo di tipoTIMESTAMP
in BigQuery e il relativo pattern saràyyyy-MM-dd HH:mm:ss.SSSSSS
con il fuso orarioAmerica/New_York
.
Supporto per gli indicatori nulli
Mainframe Connector supporta gli indicatori null iniziando dalla versione
5.13.0. Per utilizzare gli indicatori null, devi definire le variabili di ambiente che iniziano con la parola SUFFIX
nel seguente formato:
SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"
NULL_INDICATOR_NAME corrisponde ai suffissi
-NULL_INDICATOR_NAME
o _NULL_INDICATOR_NAME
che sono
interpretato come un indicatore nullo quando utilizzato come suffisso del nome di un campo in
quaderno.
L'elenco seguente descrive i parametri che puoi utilizzare con queste variabili di ambiente:
command
: il valore deve esserenull-indicator
.–null-value
: il valorenull indicator
indica che il campo a cui si fa riferimento è null. Il valore di--null-value
deve essere una stringa o un numero decimale.–not-null-value
: (facoltativo) se specificato, il valorenull indicator
indica che il campo a cui viene fatto riferimento non è nullo. Se questo parametro non è impostato, qualsiasi valore diverso da–value-null
è accettato. Il valore di–not-null-value
deve essere una stringa o un numero decimale.- (Facoltativo)
–keep
: se specificato, il camponull-indicator
viene mantenuto come colonna nel formato file ORC (Optimized Row Columnar). Di questo campo non viene mantenuto nel formato ORC.
Se null-indicator
non ha un campo a cui fa riferimento,
Mainframe Connector visualizza un messaggio di errore e interrompe l'elaborazione dei
file.
Esempi:
Snippet del copybook
10 COL1-NID1 PIC S9(4) USAGE COMP.
10 COL1 PIC S9(6) USAGE COMP.
10 FIELD PIC X(10).
10 FIELD-NID2 PIC X(1).
10 COL2 PIC X(10).
10 COL2-NULL PIC X(1).
Definizione delle variabili di ambiente
SUFFIX_NID1="null-indicator --null-value -1 --not-null-value 0"
# Copybook fields with NID1 suffix null indicator configuration.
SUFFIX_NID2="null-indicator --null-value '?'"
# Copybook fields with NID2 suffix null indicator configuration.
SUFFIX_NULL="null-indicator --null-value '?' --keep"
# Copybook fields with NULL suffix null indicator configuration.
Supporto per i campi DBCS
Quando utilizzi i campi DBCS, assicurati di quanto segue:
- Quando utilizzi i campi DBCS PIC G o Pic N, devi fornire una delle seguenti codificazioni del set di caratteri multibyte (MBCS) valide nell'opzione
encoding
o nella variabile di ambienteENCODING
quando utilizzi i comandigsutil cp
obq export
:- x-IBM930
- x-IBM933
- x-IBM935
- x-IBM937
- x-IBM939
- x-IBM942
- x-IBM942C
- x-IBM943
- x-IBM943C
- x-IBM949
- x-IBM949C
- x-IBM950
- x-IBM964
- x-IBM970
- x-IBM1364
- Quando un campo copybook contiene solo byte DBCS, ma questi byte non sono
circondato da spostamento in uscita (0x0E) e spostamento in entrata (0x0F), devi aggiungere il suffisso
_DBCS
al nome del campo per garantire che questi byte vengano decodificati come Byte DBCS.
Ad esempio, se i dati corrispondenti al campo del modello
03 FLD01 PIC N USAGE DISPLAY-1
contengono i byte 0x43
e
0xC5
nella codifica x-IBM930 che non sono racchiusi tra 0x0E
e
0x0F
, devi rinominare il nome del campo del modello in
03 FLD01-DBCS PIC N USAGE DISPLAY-1
per decodificare correttamente
i dati DBCS.
Supporto di stringhe di caratteri di lunghezza variabile
L'analizzatore sintattico nativo del copybook supporta i seguenti
struct
campi:
- 10 var
- 15 var-LEN PIC 9(4) USAGE COMP
- 15 var-TEXT PIC X(n)
Il primo campo del campo struct
è la lunghezza del secondo
, il campo stringa. Potresti dover aggiungere un po' di spaziatura alla fine del
record in base alla sua lunghezza, come mostrato nella figura seguente.
Il connettore mainframe rimuove il suffisso dal nome della variabile prima
salvare i dati in BigQuery. In questo esempio, il nome della variabile sarà
var
.
Per utilizzare i campi struct
, imposta la variabile di ambiente
BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
su yes
o
true
.
Quando utilizzi i campi struct
, assicurati di quanto segue:
- Il suffisso del primo parametro in
struct
è-LEN
. Se vuoi utilizzare un suffisso diverso, devi impostare la variabile di ambienteBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
sul suffisso che vuoi utilizzare. - Il suffisso del secondo parametro in
struct
è-TEXT
. Se vuoi utilizzare un suffisso diverso, devi impostare il valore la variabile di ambienteBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
il suffisso che vuoi utilizzare.
Campi e costrutti non supportati
Le seguenti sezioni descrivono i campi e i costrutti non sono supportati dalla
Costrutti COBOL
i costrutti COBOL anche se non sono supportati. Se utilizzi questi nel tuo copybook, Connettore mainframe mostra un errore.
dataAlignedClause
dataBlankWhenZeroClause
dataCommonOwnLocalClause
dataIntegerStringClause
dataJustifiedClause
dataOccursClause
dataReceivedByClause
dataRecordAreaClause
dataRenamesClause
dataSignClause
dataSynchronizedClause
dataThreadLocalClause
dataTypeClause
dataTypeDefClause
dataUsingClause
Tipi di dati
Sono supportati tipi di dati COBOL come COMP-1 e COMP-2.
Parser dei report legacy
Il parser legacy del copybook è una versione precedente che supporta non COBOL. Se utilizzi un copybook basato su DSL, il parser precedente potrebbe Essere più adatto come analizzatore sintattico nativo del copybook potrebbero causare errori.
Puoi utilizzare la pagina di destinazione del copybook con le seguenti restrizioni:
- I livelli 66 (ALIAS) o 77 (STANDALONE) non sono supportati.
- REDEFINES non sono supportate.
- Le righe di commento non sono supportate.
- I campi di 10 caratteri il cui nome termina con DATA o DT sono date. La decodifica è diversa per questi campi.
- Utilizza solo i seguenti campi COMP. ALIGN e OCCURS non sono supportati.
- COMP
- COMP4
- BINARIO
- COMP3
- DECIMALE CON PACCHETTO
- Utilizza solo i campi PICTURE. Definisci i campi PICTURE sulla stessa riga, direttamente dopo il nome del campo.
- Devi giustificare tutti i campi e utilizzare un unico livello. I commenti non sono supportati.
- Assicurati che le colonne da 1 a 6 contengano sempre spazi vuoti.