Puedes configurar el transcodificador de Mainframe Connector añadiendo la configuración necesaria en un archivo JSON.
Este archivo se denomina archivo de configuración del transcodificador. Debe definir la configuración tal como se especifica en la sección Configuración.
Los comandos qsam encode
y qsam decode
usan el archivo de configuración del transcodificador para transcodificar los datos.
En esta página se describen las distintas formas de configurar el transcodificador de Mainframe Connector.
Configuración
El objeto Configuration
es la raíz de la configuración del transcodificador.
Contiene todas las opciones de configuración de la herramienta de transcodificación.
Representación JSON |
---|
{ "defaults": object ( |
Campos | |
---|---|
defaults |
Especifica los modificadores de campo predeterminados para los arquetipos de Cobol. |
field_suffixes |
Especifica los sufijos de los campos. |
field_overrides |
Especifica las invalidaciones de campos. |
transformations |
Especifica las transformaciones de campos. |
schema_validation_mode |
Especifica el modo de validación del esquema. |
DefaultsSection
El objeto DefaultsSection
se puede usar para especificar modificaciones predeterminadas por tipos de COBOL.
Se aplican antes de cualquier modificación de sufijo o de anulación.
Representación JSON |
---|
{ "alpha_numeric_display": object ( |
Campos | |
---|---|
alpha_numeric_display |
Especifica los valores predeterminados de los campos alfanuméricos (PIC X). |
numeric_display |
Especifica los valores predeterminados de los campos de visualización numérica (decimal zonificado). |
binary |
Especifica los valores predeterminados de los campos de número binario (COMP). |
packed_decimal |
Especifica los valores predeterminados de los campos decimales empaquetados (COMP-3). |
national |
Especifica los valores predeterminados de los campos nacionales (PIC N). |
utf8 |
Especifica los valores predeterminados de los campos UTF-8 (PIC U). |
dbcs |
Valor predeterminado para los campos dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Valor predeterminado para los campos de coma flotante hexadecimal (COMP-1 y COMP-2). |
FieldSuffix
Los sufijos de campo se aplican a todos los campos que tienen un sufijo.
Los campos coinciden si terminan con un guion (-
) o un guion bajo (_
) seguido del sufijo.
Los sufijos no distinguen entre mayúsculas y minúsculas.
El modificador FieldSuffix
se aplica después del modificador FieldOverride
.
Por ejemplo, el modificador definido para el sufijo NID
se aplicará al campo llamado FLD-NID
, pero no al campo FUNID
.
Representación JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Campos | |
---|---|
suffix |
El campo con este sufijo tendrá aplicado el modificador. |
is_inverse |
Especifica si el modificador es un modificador de campo inverso o no.
Un modificador de campo inverso aplica el modificador a otro campo que tiene el mismo nombre que el campo con el modificador
sin el modificador. Por ejemplo, si los campos Cuando se usa un modificador de campo inverso, el identificador especial Por ejemplo, para crear un campo de indicador nulo, puedes usar el modificador de campo |
modifier |
Especifica el modificador que se aplicará a los campos coincidentes. |
FieldOverride
Anula o modifica la cadena de decodificación y codificación del campo especificado.
Representación JSON |
---|
{ "field": string, "modifier": object ( |
Campos | |
---|---|
field |
Especifica el nombre del campo al que se va a aplicar el modificador. |
modifier |
Especifica el modificador que se aplicará al campo coincidente. |
Transformación
Las transformaciones de vistas se usan para modificar la relación entre la tabla y el archivo QSAM. Las transformaciones siempre se expresan desde el punto de vista de los datos. El concepto es similar al de las tablas de vista de BigQuery.
Representación JSON |
---|
{ "exclude": object ( |
Campos | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Un modificador de campo te permite modificar la codificación o decodificación de un campo específico. Ten en cuenta que no todos los modificadores se pueden aplicar a todos los campos. Consulta la documentación de los modificadores específicos para obtener más información.
Representación JSON |
---|
{ "filler": object ( |
Campos | |
---|---|
filler |
Excluye el campo del procesamiento y la salida. |
null_if |
Define el campo como nulo de forma condicional en función del valor de otro campo. |
format_date |
Da formato a un campo de cadena como fecha. |
chain |
Encadena varios modificadores para que se apliquen secuencialmente. |
zoned_decimal |
Anula la configuración predeterminada de los campos decimales zonificados. |
binary |
Anula la configuración predeterminada de los campos numéricos binarios. |
packed_decimal |
Anula la configuración predeterminada de los campos decimales empaquetados. |
null_if_invalid |
Asigna el valor null al campo si se produce un error de transcodificación, lo que evita que se desborde el registro. |
bytes |
Trata el campo como una secuencia de bytes sin formato, ignorando la información de tipo anterior. |
varlen |
Define el registro como un campo de longitud variable. |
string |
Anula la configuración predeterminada de los campos de cadena. |
null_if_empty |
Asigna el valor nulo al campo si se considera que su contenido está vacío. |
format_timestamp |
Da formato a un campo de cadena como una marca de tiempo. |
hfp |
Interpreta el campo como un número de punto flotante hexadecimal (HFP). |
decode_as_null |
Define cómo se deben decodificar los valores nulos. |
encode_null_as |
Define cómo se deben codificar los valores nulos. |
Excluir
Excluir un campo de la tabla resultante, pero seguir decodificándolo o codificándolo. Esto resulta útil cuando no es necesario transferir el campo a la tabla, pero sí para la transcodificación. Por ejemplo, se pueden omitir de la tabla los indicadores nulos o los campos de longitud.
Para omitir la transcodificación por completo, aplica el modificador de relleno.
Representación JSON |
---|
{ "field": string |
Campos | |
---|---|
field |
Especifica el campo que quieres excluir. |
Desanidar
Desanida el campo.
Representación JSON |
---|
{ "field": string, "format": string |
Campos | |
---|---|
field |
Especifica el campo que quieres desanidar |
format |
Especifica el nuevo formato de campo. El En el caso de las estructuras no anidadas, En las matrices y listas no anidadas, |
Mover
Mover un campo en el registro.
Representación JSON |
---|
{ "field": string, "offset": int |
Campos | |
---|---|
field |
Especifica el campo que quieres mover. |
offset |
Especifica el número de posiciones, hacia delante o hacia atrás, a las que se debe mover el campo. |
Cambiar nombre
Cambiar el nombre de uno o varios campos en función de una coincidencia de expresiones regulares.
Por ejemplo, para sustituir todos los guiones por guiones bajos, usa el siguiente formato JSON:
{"find": "\\-", "replace":"_"}
.
Representación JSON |
---|
{ "find": string, "replace": string |
Campos | |
---|---|
find |
Especifica un patrón de expresión regular de Java para identificar los campos cuyo nombre se va a cambiar. El patrón se compara con el nombre de campo completo. Si el patrón coincide con alguna parte del nombre del campo, se considera que el campo coincide. Ejemplos:
|
replace |
Especifica el nuevo nombre de los campos coincidentes. Los grupos de captura de la expresión regular Ejemplos:
|
Aditivo
Especifica que un campo se ignorará durante el procesamiento. El campo no se decodificará de la entrada ni se codificará en la salida, y se excluirá del esquema y de la tabla de datos resultantes durante la decodificación. Puede aplicar este modificador a cualquier campo que tenga un tamaño estático conocido.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
NullIf
Asigna el valor null a un campo si se cumple una condición. Debes especificar null_value
o non_null_value
, o ambos.
Para crear un campo de indicador de nulo, puedes usar un FieldSuffix
con un modificador de campo null_if
y asignar el valor true
a is_inverse
, como se muestra en los siguientes ejemplos:
Ejemplo: indicador de valor nulo
Para crear un campo de indicador nulo, podemos usar el modificador de camponull_if
de la siguiente manera.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
se convierten en indicadores nulos, como se muestra en el siguiente fragmento de copybook:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Ejemplo: indicador nulo binario
Para crear un campobinary
indicador de nulo, podemos usar los modificadores de campo binary
y null_if
de la siguiente manera.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
se convierten en binary
indicadores nulos mediante el mismo copybook del ejemplo anterior.
Ejemplo: bytes de indicador nulo
Para crear un campobytes
indicador de nulo, podemos usar los modificadores de campo bytes
y null_if
de la siguiente manera.
Los valores de nulo y no nulo se expresan como HEX
.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "bytes": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "FF", "target_field": "$self" } } } ] }
NID
serán un indicador nulo bytes
mediante el mismo copybook
del ejemplo anterior.
Representación JSON |
---|
{ "target_field": string, "null_value": string, "null_values": string, "non_null_value": string, "non_null_values": string |
Campos | |
---|---|
target_field |
Especifica el campo cuyo valor quieras comprobar. El campo debe estar en el ámbito. |
null_value |
Cuando se especifica, si |
null_values |
Si se especifica y |
non_null_value |
Cuando se especifica, si |
non_null_values |
Si se especifica y |
FormatDate
Da formato a una cadena como fecha con uno de los formatos admitidos. Solo puedes aplicar este modificador a los campos de tamaño. Durante el proceso de decodificación, los formatos se prueban en orden hasta que uno de ellos coincide con la cadena. Durante el proceso de codificación, se usa el primer formato y se ignoran los demás.
Representación JSON |
---|
{ "formats": object ( |
Campos | |
---|---|
formats |
Lista de formatos de fecha. |
ModifierChain
Especifica una cadena de modificadores para aplicar varios modificadores en serie. Los modificadores se aplican en el orden en el que se especifican.
Representación JSON |
---|
{ "modifiers": object ( |
Campos | |
---|---|
modifiers |
Especifica la lista de modificadores que se van a aplicar. |
ZonedDecimal
Define varias opciones relacionadas con la codificación y la decodificación de decimales zonificados. Solo puede aplicar este modificador a un campo decimal.
Representación JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Especifica el tipo lógico que se va a usar al decodificar o codificar el campo. |
encoding |
Codificación con la que se codifica el campo. |
Binario
Ignora los modificadores anteriores y trata este campo como un número binario.
Representación JSON |
---|
{ "signedness": enum ( |
Campos | |
---|---|
signedness |
El signo del número. |
PackedDecimal
Asigna a este campo el valor PackedDecimal.
Representación JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Anula el tipo lógico. De forma predeterminada, Mainframe Connector usa el tipo lógico óptimo en función de la precisión y la escala. |
NullIfInvalid
Trata el valor como nulo si falla la transcodificación. Solo puedes aplicar este modificador a los campos de tamaño. El error se ignora y no se registra en el conjunto de datos de desbordamiento. Durante el proceso de decodificación, el valor de este campo será nulo para este registro. Durante el proceso de codificación, si no se pueden escribir los datos, todo el campo se rellenará con bytes nulos.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
Bytes
Trata el campo como una secuencia de bytes sin formato. Este modificador anula cualquier información de tipo anterior, lo que provoca que los datos de bytes sin formato del campo se conserven tal cual, sin una codificación de caracteres ni una interpretación numérica específicas. Puede aplicar este modificador a cualquier campo, independientemente de su tipo o tamaño original.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
VarLen
Representa un campo de longitud variable.
Un campo de longitud variable contiene tres partes:
- Un elemento de grupo que contiene dos subcampos.
- Campo del elemento de grupo que contiene la longitud de los datos de la transacción.
- Campo del elemento de grupo que contiene los datos.
El nombre del campo de longitud variable será el nombre del grupo.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
Cadena
Define las distintas opciones relacionadas con la decodificación y la codificación de cadenas. Solo se puede aplicar a un campo de cadena.
Representación JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Campos | |
---|---|
encoding |
Codificación con la que se codifica el campo. |
trim_suffix |
Si se define como true, se eliminarán los espacios en blanco al final de la cadena. trim_suffix solo afecta a la decodificación, mientras que la codificación ignora trim_suffix. Ten en cuenta que las cadenas que solo contengan espacios en blanco se convertirán en cadenas vacías. |
pad_char |
Cuando se definen cadenas de exportación de relleno con |
NullIfEmpty
El campo debe tener el valor null si todos los bytes de ese campo son 0.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
FormatTimestamp
Formatea una cadena en una marca de tiempo con uno de los formatos proporcionados. Solo se puede aplicar a campos de tamaño. Durante la decodificación, los formatos se prueban en orden hasta que uno de ellos coincide con la cadena. Durante la codificación, se usará el primer formato y se ignorará el resto.
Representación JSON |
---|
{ "formats": object ( |
Campos | |
---|---|
formats |
Lista de formatos de marca de tiempo. |
HFP
Define este campo como punto flotante hexadecimal.
Proporciona un objeto JSON vacío de la siguiente manera:
Representación JSON |
---|
{ |
DecodeAsNull
Define cómo se interpretan los valores nulos durante el proceso de decodificación. Como COBOL no admite valores nulos de forma nativa, este parámetro especifica qué valores deben tratarse como nulos.
Representación JSON |
---|
{ "values": string, "hex_bytes": string |
Campos | |
---|---|
values |
Lista de representaciones de cadena. Después de la decodificación inicial del campo a su forma de cadena, si el contenido del campo coincide con alguno de estos valores, se tratará como nulo. |
hex_bytes |
Lista de representaciones hexadecimales de un solo byte.
Si un campo contiene repeticiones de alguno de estos bytes, se trata como nulo.
Por ejemplo, puedes usar |
EncodeNullAs
Define cómo se representan los valores nulos durante el proceso de codificación.
Representación JSON |
---|
{ "value": string, "hex_byte": string |
Campos | |
---|---|
value |
Codifica este valor específico cuando el valor de origen sea nulo. Comprueba que la cadena sea válida para el tipo de campo. |
hex_byte |
Codifica esta secuencia de bytes específica (representada como una cadena hexadecimal) cuando el valor de origen sea nulo. Por ejemplo, |
DateTimeFormat
Tamaño y patrón que se usarán al convertir el campo en una fecha.
Representación JSON |
---|
{ "size": int, "pattern": string |
Campos | |
---|---|
size |
Especifica el tamaño del campo al que se aplica este patrón. |
pattern |
Especifica el patrón del formateador de fechas. Para obtener más información sobre los patrones de formato válidos, consulta Clase DateTimeFormatter. |
BinarySignedness
Tipo lógico que se va a usar en un campo decimal.
Enumeraciones | |
---|---|
UNSPECIFIED |
Usa el tipo más óptimo en función de la escala y la precisión. |
SIGNED |
Usa 64 bits para almacenar el valor. Este modificador solo funciona con números cuya precisión sea inferior o igual a 18 y cuya escala sea 0. |
UNSIGNED |
Usa 64 bits para almacenar el valor. Este modificador solo funciona con números cuya precisión sea inferior o igual a 18. |
SchemaValidationMode
Especifica el modo de validación de esquemas que se usará durante la compilación del copybook. Este modo verifica la compatibilidad con un formato de datos de destino específico.
Enumeraciones | |
---|---|
DEFAULT |
Modo de validación de esquema predeterminado. Este modo verifica que los nombres de los campos únicos estén en el copybook. |
BIG_QUERY |
Modo de validación de esquemas para la compatibilidad con BigQuery. Este modo amplía la validación predeterminada para verificar que el esquema del copybook sea compatible con los tipos de datos de BigQuery. |
ZonedDecimalEncoding
Especifica la codificación que se debe usar al decodificar o codificar un campo decimal zonificado.
Enumeraciones | |
---|---|
UNSPECIFIED |
Mantener la codificación especificada en la cadena de modificadores.
Si no se especifica ningún modificador, se usa EBCDIC . |
EBCDIC |
Usa la codificación EBCDIC . |
ASCII |
Usa la codificación ASCII . |
DecimalLogicalType
Tipo lógico que se va a usar en un campo decimal.
Enumeraciones | |
---|---|
AUTO |
Usa el tipo más óptimo en función de la escala y la precisión. |
LONG |
Usa 64 bits para almacenar el valor. Este modificador solo funciona con números cuya precisión sea inferior o igual a 18 y cuya escala sea 0. |
DECIMAL64 |
Usa 64 bits para almacenar el valor. Este modificador solo funciona con números cuya precisión sea inferior o igual a 18. |
BIG_DECIMAL |
Almacena el valor como un valor decimal sin límites. Esta es la opción más lenta, pero admite cualquier decimal de cualquier precisión a cualquier escala. |
BIG_INTEGER |
Almacena el valor como un valor entero sin límites. Esta es la opción más lenta, pero admite cualquier número entero de cualquier precisión. |