Riferimento all'analizzatore sintattico del file di copia

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 e TITLE. Questi campi vengono analizzati, ma ignorati. I report contenenti parametri di preelaborazione che possono essere utilizzati da COPY 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 ambiente NSYMBOL su DBCS. Per impostazione predefinita, NSYMBOL è impostato su NATIONAL, che imposta USAGE NATIONAL sui campi Pic N che non hanno una clausola USAGE. Tieni presente che NSYMBOL può essere impostato solo su NATIONAL o DBCS.
  • 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 sono date-converter e timestamp-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 tipo TIMESTAMP. 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 tipo DATE 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 tipo DATE 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 tipo DATE in BigQuery e il suo pattern sarà MM-dd-yyyy o MM/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" e SUFFIX_TS=$SUFFIX_TIMESTAMP, un campo con uno dei seguenti suffissi: -TIMESTAMP, _TIMESTAMP, -TS o _TS sarà un campo di tipo TIMESTAMP in BigQuery e il relativo pattern sarà yyyy-MM-dd HH:mm:ss.SSSSSS con il fuso orario America/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 essere null-indicator.
  • –null-value: il valore null 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 valore null 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 campo null-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 ambiente ENCODING quando utilizzi i comandi gsutil cp o bq 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.

Spaziatura interna aggiunta alle stringhe di caratteri di lunghezza variabile.
Figura 1. Spaziatura interna aggiunta alle stringhe di caratteri di lunghezza variabile.

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 ambiente BQSH_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 ambiente BQSH_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.