Riferimento all'analizzatore sintattico del file di copia

Mainframe Connector supporta due versioni dell'interprete di file di copia:

  • 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.
  • Parser di book legacy: il parser di book legacy è una versione precedente del parser che supporta un numero molto limitato di formati di book.

Puoi definire il parser da utilizzare in base al tuo copybook. Per ulteriori informazioni sulla definizione del parser da utilizzare, consulta Definire il parser del libro di copie.

Parser di libri mastri nativi

L'analizzatore di file di copia nativo è la versione più recente dell'analizzatore e viene utilizzato per impostazione predefinita. L'analizzatore di libri di copie nativo implementa un parser basato su ANTLR4 e supporta i libri di copie COBOL.

Questa sezione elenca le attività di preelaborazione eseguite dall'analizzatore sintattico del testo pubblicitario nativo. Inoltre, illustra i tipi di dati supportati dall'interprete di file di copia nativi e le limitazioni per il 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.
  • Elimina le aree dei numeri 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 modelli, gli identificatori sono racchiusi tra due due punti (:).

Tipi di dati supportati e limitazioni

Di seguito sono riportati i tipi di dati supportati dall'analizzatore di file di copia nativo e le limitazioni per il suo utilizzo:

  • I livelli 66 (ALIAS) o 77 (STANDALONE) non sono supportati.
  • 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)
  • È supportato il numero in virgola mobile esadecimale IBM (HFP).
  • I valori REDEFINE non sono supportati.
  • Utilizza solo i seguenti campi COMP. ALIGN e OCCURS non sono supportati.
    • COMP
    • COMP4
    • BINARY
    • COMP3
    • PACKED-DECIMAL
  • Sono supportati i tipi DATE e TIMESTAMP.
  • Gli indicatori di valori nulli sono supportati.
  • I campi Pic G e Pic N del set di caratteri a due byte (DBCS) sono supportati e devono essere utilizzati 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 puoi essere impostato solo su NATIONAL o DBCS.
  • Sono supportate le stringhe di caratteri a 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. A questo scopo, devi definire 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 puoi utilizzare per definire i dati relativi a data e timestamp. Il nome SUFFIX_STRING corrisponde ai suffissi -SUFFIX_STRING o _SUFFIX_STRING che devono essere interpretati come data o timestamp se utilizzati come suffisso di un nome di campo in un modello. Assicurati che SUFFIX_STRING non contenga un trattino o un'underscore.
  • command: definisce il decodificatore da utilizzare per analizzare il campo. I comandi supportati sono date-converter e timestamp-converter.
  • --format: un parametro che definisce il formato della data o del 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 per l'esportazione, viene utilizzato solo il primo. 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 relativo 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 relativo 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 degli indicatori null

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 vengono interpretati come indicatore di valore nullo se utilizzati come suffisso di un nome di campo in un copybook.

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 si fa riferimento non è null. Se questo parametro non è impostato, viene accettato qualsiasi valore diverso da –value-null. Il valore di –not-null-value deve essere una stringa o un numero decimale.
  • –keep: (Facoltativo) Se specificato, il campo null-indicator viene mantenuto come colonna nel formato file ORC (Optimized Row Columnar). Per impostazione predefinita, questo campo non viene mantenuto nel formato ORC.
  • -force-type: (facoltativo) supporta due opzioni, bytes e binary, che forzano la decodifica di un campo come byte o in formato binario, rispettivamente. Per i byte, i valori di null e not-null sono espressi come HEX (ad esempio, FA3AB5). Sono disponibili le costanti HIGH e LOW equivalenti a tutti i valori FF o 00. Per i valori binari, i valori sono numeri interi regolari.

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 libretto di lavoro

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 del codice contiene solo byte DBCS, ma questi byte non sono contornati da shift-out (0x0E) e shift-in (0x0F), devi aggiungere il suffisso _DBCS al nome del campo per assicurarti 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 di file di copia nativo supporta i seguenti campistruct:

  • 10 var
  • 15 var-LEN PIC 9(4) USAGE COMP
  • 15 var-TEXT PIC X(n)

Il primo campo nel campo struct è la lunghezza del secondo campo, il campo di stringa. Potresti dover aggiungere spazi 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.

Mainframe Connector rimuove il suffisso dal nome della variabile prima di 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 la variabile di ambiente BQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX sul suffisso che vuoi utilizzare.

Strutture e campi non supportati

Le sezioni seguenti descrivono i campi e i costrutti non supportati dalla

Costrutti COBOL

Costruzioni COBOL anche se non sono supportate. Se utilizzi questi costrutti nel tuo copybook, Mainframe Connector mostra un errore.

  • dataAlignedClause
  • dataBlankWhenZeroClause
  • dataCommonOwnLocalClause
  • dataIntegerStringClause
  • dataJustifiedClause
  • dataOccursClause
  • dataReceivedByClause
  • dataRecordAreaClause
  • dataRenamesClause
  • dataSignClause
  • dataSynchronizedClause
  • dataThreadLocalClause
  • dataTypeClause
  • dataTypeDefClause
  • dataUsingClause

Tipi di dati

I tipi di dati COBOL come COMP-1 e COMP-2 sono supportati.

Parser dei report legacy

L'analizzatore di file di copia legacy è una versione precedente dell'analizzatore che supporta funzionalità non COBOL. Se utilizzi un libro mastro basato su DSL, il parser precedente potrebbe essere più adatto in quanto il parser del libro mastro nativo potrebbe causare errori.

Puoi utilizzare il file di copia DD con le seguenti limitazioni:

  • I livelli 66 (ALIAS) o 77 (STANDALONE) non sono supportati.
  • I valori REDEFINE non sono supportati.
  • 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
    • BINARY
    • COMP3
    • PACKED-DECIMAL
  • 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.