Mainframe Connector admite dos versiones del analizador de libros de copia:
- Analizador de libros de copia nativos: El analizador de libros de copia nativos implementa un analizador basado en ANTLR4, admite libros de copia de COBOL y es la versión recomendada del analizador.
- Analizador de libros de copia heredados: Es una versión anterior del analizador que admite formatos de libros de copia muy limitados.
Puedes definir qué analizador deseas usar en función de tu modelo de texto. Para obtener más información sobre cómo definir el analizador que deseas usar, consulta Define el analizador de libro de copia.
Analizador de libro de copia nativo
El analizador de libros de copia nativos es la versión más reciente del analizador y se usa de forma predeterminada. El analizador de libros de copia nativos implementa un analizador basado en ANTLR4 y admite libros de copia de COBOL.
En esta sección, se enumeran las tareas de preprocesamiento que realiza el analizador de libros de texto nativos. También se describen los tipos de datos que admite el analizador de libros de copia nativos y las restricciones para su uso.
Procesamiento previo:
Antes de analizar un libro de copia, el analizador de libros de copia nativo preprocesa los datos y realiza las siguientes tareas:
- Quita las líneas de comentarios.
- Resuelve la continuación de línea.
- Deja en blanco las áreas de los números de línea y las áreas de la columna 73.
- Conserva instrucciones específicas del preprocesador, como
EJECT
,SPACE
yTITLE
. Estos campos se analizan, pero se ignoran. El analizador de libros de copia nativos no admite los libros de copia que contienen parámetros del preprocesador que puede usarCOPY REPLACING
. En estos libros de texto, los identificadores están rodeados de dos puntos (:).
Tipos de datos admitidos y restricciones
Los siguientes son los tipos de datos que admite el analizador de libros de copia nativos y las restricciones para su uso:
- No se admiten los niveles 66 (ALIAS) ni 77 (STANDALONE).
- Usa solo campos de IMAGEN. Se admiten los siguientes campos PICTURE:
- Pic A, Pic B, Pic G (DBCS), Pic N (nacional o DBCS), Pic U (UTF8), Pic X y decimal con zona (precisión máxima 38, escala máxima 38)
- Se admite el punto flotante hexadecimal (HFP) de IBM.
- No se admiten REDEFINES.
- Usa solo los siguientes campos COMP. ALIGN y OCCURS no son compatibles.
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- Se admiten DATE y TIMESTAMP.
- Se admiten indicadores nulos.
- Los campos Pic G y Pic N del conjunto de grupo de caracteres de doble byte (DBCS) son compatibles y se deben usar en lugar de Pic T, que ahora dejó de estar disponible. Para usar el campo Pic N como DBCS sin especificar
USAGE DISPLAY-1
, debes configurar la variable de entornoNSYMBOL
comoDBCS
. De forma predeterminada,NSYMBOL
se establece enNATIONAL
, que estableceUSAGE NATIONAL
en campos Pic N que no tienen una cláusulaUSAGE
. Ten en cuenta queNSYMBOL
solo se puede establecer enNATIONAL
oDBCS
. - Se admiten cadenas de caracteres de longitud variable.
- Se admite la cláusula SIGN.
- Debes justificar todos los campos y usar un solo nivel de sangría.
- Se admiten comentarios.
Compatibilidad con campos de fecha y marca de tiempo
Mainframe Connector admite el traslado de datos de fecha y marca de tiempo dentro y fuera de BigQuery. Para ello, debes definir variables de entorno que comiencen con la palabra SUFFIX
en el siguiente formato:
SUFFIX_SUFFIX_STRING="command --format FORMAT --timezone TIMEZONE"
En la siguiente lista, se describe el formato con más detalle:
SUFFIX_SUFFIX_STRING
: Es la variable de entorno que puedes usar para definir datos de fecha y marca de tiempo. El nombre SUFFIX_STRING corresponde a los sufijos-SUFFIX_STRING
o_SUFFIX_STRING
que se deben interpretar como una fecha o una marca de tiempo cuando se usan como sufijo de un nombre de campo en un libro de copia. Asegúrate de que SUFFIX_STRING no contenga un guion ni un guion bajo.command
: Define el decodificador que se debe usar para analizar el campo. Los comandos admitidos sondate-converter
ytimestamp-converter
.--format
: Es un parámetro que define el formato de la fecha o la marca de tiempo. Puedes especificar hasta cinco formatos diferentes separados por comas. Si varios formatos pueden coincidir con una entrada determinada, se usa el primero que coincida para cargarlo en BigQuery. Si se especifican varios formatos para la exportación, solo se usa el primero. Para obtener más información sobre los formatos válidos, consulta Formatos de fecha y marca de tiempo compatibles.--timezone
: Es un parámetro opcional para el tipoTIMESTAMP
. De forma predeterminada, la zona horaria es UTC. Para obtener más información sobre los formatos de zona horaria compatibles, consulta Formatos de zona horaria compatibles.--omitsuffix
(opcional): Si se especifica este parámetro, se quita-SUFFIX_STRING
o_SUFFIX_STRING
del nombre del campo que aparece en BigQuery.
Para agregar un alias para un SUFFIX_SUFFIX_STRING
, puedes configurar una variable de entorno SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
.
Ejemplos:
- Si defines una variable de entorno como
SUFFIX_DT8="date-converter --format yyyyMMdd"
, un campo con el sufijo-DT8
o_DT8
será un campo de tipoDATE
en BigQuery, y su patrón seráyyyyMMdd
. - Si defines una variable de entorno como
SUFFIX_DT10="date-converter --format MM-dd-yyyy"
, un campo con el sufijo-DT10
o_DT10
será un campo de tipoDATE
en BigQuery, y su patrón seráMM-dd-yyyy
. - Si defines una variable de entorno como
SUFFIX_DT="date-converter --format 'MM-dd-yyyy,MM/dd/yyyy'"
, un campo con el sufijo-DT
o_DT
será un campo de tipoDATE
en BigQuery, y su patrón seráMM-dd-yyyy
oMM/dd/yyyy
. - Si defines dos variables de entorno como
SUFFIX_TIMESTAMP="timestamp-converter --format yyyy-MM-dd SUFFIX_TIMESTAMP=timestamp-converter --format 'yyyy-MM-dd HH.mm.ss.SSSSSS' --timezone America/New_York"
ySUFFIX_TS=$SUFFIX_TIMESTAMP
, un campo con uno de los siguientes sufijos:-TIMESTAMP
,_TIMESTAMP
,-TS
o_TS
será un campo de tipoTIMESTAMP
en BigQuery, y su patrón seráyyyy-MM-dd HH:mm:ss.SSSSSS
con la zona horariaAmerica/New_York
.
Compatibilidad con indicadores nulos
Mainframe Connector admite indicadores nulos a partir de la versión 5.13.0. Para usar indicadores nulos, debes definir variables de entorno que comiencen con la palabra SUFFIX
en el siguiente formato:
SUFFIX_NULL_INDICATOR_NAME="command --null-value NULL_VALUE --not-null-value NOT_NULL_VALUE"
NULL_INDICATOR_NAME corresponde a los sufijos -NULL_INDICATOR_NAME
o _NULL_INDICATOR_NAME
que se interpretan como un indicador nulo cuando se usan como sufijo de un nombre de campo en un libro de copia.
En la siguiente lista, se describen los parámetros que puedes usar con estas variables de entorno:
command
: El valor debe sernull-indicator
.–null-value
: El valornull indicator
indica que el campo al que se hace referencia es nulo. El valor de--null-value
debe ser una cadena o un número decimal.–not-null-value
: (Opcional) Cuando se especifica, el valornull indicator
indica que el campo al que se hace referencia no es nulo. Si no se establece este parámetro, se acepta cualquier valor que no sea–value-null
. El valor de–not-null-value
debe ser una cadena o un número decimal.–keep
: Opcional. Cuando se especifica, el camponull-indicator
se mantiene como una columna en el formato de archivo Optimized Row Columnar (ORC). De forma predeterminada, este campo no se mantiene en el formato ORC.-force-type
: (Opcional) Admite dos opciones:bytes
ybinary
, que obligan a que un campo se decodifique como bytes o binario, respectivamente. En el caso de los bytes, los valores denull
ynot-null
se expresan comoHEX
(por ejemplo,FA3AB5
). Hay constantesHIGH
yLOW
disponibles que son equivalentes a todas lasFF
o todas las00
. Para el formato binario, los valores son números enteros normales.
Si el null-indicator
no tiene un campo de referencia, Mainframe Connector muestra un mensaje de error y deja de procesar los archivos.
Ejemplos:
Fragmento de libro de texto
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).
Definición de las variables de entorno
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.
Compatibilidad con campos de DBCS
Asegúrate de lo siguiente cuando uses campos de DBCS:
- Cuando usas campos de DBCS de PIC G o Pic N, debes proporcionar una de las siguientes codificaciones válidas de grupo de caracteres de varios bytes (MBCS) en la opción
encoding
o en la variable de entornoENCODING
cuando usas los comandosgsutil 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
- Cuando un campo de libro de copia solo contiene bytes de DBCS, pero estos bytes no están rodeados de desplazamiento hacia la izquierda (0x0E) y desplazamiento hacia la derecha (0x0F), debes agregar el sufijo
_DBCS
al nombre del campo para asegurarte de que estos bytes se decodifiquen como bytes de DBCS.
Por ejemplo, si tus datos correspondientes al campo del libro de copia 03 FLD01 PIC N USAGE DISPLAY-1
contienen bytes 0x43
y 0xC5
en la codificación x-IBM930 que no están rodeados de 0x0E
y 0x0F
, debes cambiar el nombre del campo del libro de copia a 03 FLD01-DBCS PIC N USAGE DISPLAY-1
para decodificar correctamente los datos de DBCS.
Compatibilidad con cadenas de caracteres de longitud variable
El analizador de libros de copia nativos admite los siguientes campos struct
:
- 10 var
- 15 var-LEN PIC 9(4) USAGE COMP
- 15 var-TEXT PIC X(n)
El primer campo en el campo struct
es la longitud del segundo campo, el campo de cadena. Es posible que debas agregar padding al final del registro según su longitud, como se muestra en la siguiente figura.
El conector de unidades centrales quita el sufijo del nombre de la variable antes de guardar los datos en BigQuery. En este ejemplo, el nombre de la variable será var
.
Para usar campos struct
, establece la variable de entorno BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
en yes
o true
.
Cuando uses campos struct
, asegúrate de lo siguiente:
- El sufijo del primer parámetro en
struct
es-LEN
. Si deseas usar un sufijo diferente, debes configurar la variable de entornoBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
en el sufijo que deseas usar. - El sufijo del segundo parámetro en
struct
es-TEXT
. Si deseas usar un sufijo diferente, debes configurar la variable de entornoBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
con el sufijo que deseas usar.
Campos y construcciones no admitidos
En las siguientes secciones, se describen los campos y las construcciones que no son compatibles con
Construye COBOL
Construye COBOL, aunque estas construcciones no sean compatibles. Si usas estas construcciones en tu libro de copia, el conector de Mainframe muestra un error.
dataAlignedClause
dataBlankWhenZeroClause
dataCommonOwnLocalClause
dataIntegerStringClause
dataJustifiedClause
dataOccursClause
dataReceivedByClause
dataRecordAreaClause
dataRenamesClause
dataSignClause
dataSynchronizedClause
dataThreadLocalClause
dataTypeClause
dataTypeDefClause
dataUsingClause
Tipos de datos
Se admiten tipos de datos de COBOL, como COMP-1 y COMP-2.
Analizador de libros de copia heredados
El analizador de libros de copia heredados es una versión anterior del analizador que admite funciones que no son de COBOL. Si usas un libro de copia basado en DSL, es posible que el analizador heredado sea más adecuado, ya que el analizador de libros de copia nativos podría causar errores.
Puedes usar el DD de libro de copia con las siguientes restricciones:
- No se admiten los niveles 66 (ALIAS) ni 77 (STANDALONE).
- No se admiten REDEFINES.
- No se admiten líneas de comentarios.
- Los campos de 10 caracteres cuyo nombre termina en DATE o DT son fechas. La decodificación es diferente para esos campos.
- Usa solo los siguientes campos COMP. ALIGN y OCCURS no son compatibles.
- COMP
- COMP4
- BINARY
- COMP3
- PACKED-DECIMAL
- Usa solo campos de IMAGEN. Define los campos PICTURE en la misma línea, directamente después del nombre del campo.
- Debes justificar todos los campos y usar un solo nivel. No se admiten comentarios.
- Asegúrate de que las columnas del 1 al 6 siempre contengan espacios en blanco.