É possível configurar o transcodificador do Mainframe Connector adicionando a configuração necessária em um arquivo JSON.
Esse arquivo é chamado de arquivo de configuração do transcodificador. Defina a configuração conforme especificado na seção Configuração.
Os comandos qsam encode
e qsam decode
usam o arquivo de configuração do transcodificador para realizar a transcodificação de dados.
Esta página descreve as várias maneiras de configurar o transcodiador do Mainframe Connector.
Configuração
O objeto Configuration
é a raiz da configuração do transcodiador.
Ele contém todas as opções de configuração do transcodificador.
Representação JSON |
---|
{ "defaults": object ( |
Campos | |
---|---|
defaults |
Especifique modificadores de campo padrão para os arquétipos Cobol. |
field_suffixes |
Especifique sufixos de campo. |
field_overrides |
Especifique substituições de campo. |
transformations |
Especifique as transformações de campo. |
schema_validation_mode |
Especifique o modo de validação do esquema. |
DefaultsSection
O objeto DefaultsSection
pode ser usado para especificar modificações padrão por tipos de COBOL.
Elas são aplicadas antes de qualquer modificação de sufixo ou substituição.
Representação JSON |
---|
{ "alpha_numeric_display": object ( |
Campos | |
---|---|
alpha_numeric_display |
Especifique padrões para campos alfanuméricos (PIC X). |
numeric_display |
Especifique padrões para campos de exibição numérica (decimais com zona). |
binary |
Especifique os padrões para campos de número binário (COMP). |
packed_decimal |
Especifique padrões para campos de decimal compactado (COMP-3). |
national |
Especifique os padrões para campos nacionais (PIC N). |
utf8 |
Especifique padrões para campos UTF-8 (PIC U). |
dbcs |
Padrão para campos de dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Padrão para campos de ponto flutuante hexadecimal (COMP-1, COMP-2). |
FieldSuffix
Os sufixos de campo se aplicam a todos os campos que têm um sufixo.
Os campos são correspondidos se terminarem com um hífen (-
) ou sublinhado (_
) seguido do sufixo.
Os sufixos não diferenciam maiúsculas de minúsculas.
O modificador FieldSuffix
é aplicado após o modificador FieldOverride
.
Por exemplo, o modificador definido para o sufixo NID
será aplicado ao campo
FLD-NID
, mas não ao campo FUNID
.
Representação JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Campos | |
---|---|
suffix |
O modificador será aplicado ao campo com esse sufixo. |
is_inverse |
Especifique se o modificador é inverso ou não.
Um modificador de campo inverso aplica o modificador em outro campo com o mesmo nome do campo com o modificador, mas sem o modificador. Por exemplo, se os campos Ao usar um modificador de campo inverso, o identificador especial Por exemplo, para criar um campo de indicador nulo, use o modificador de campo |
modifier |
Especifique o modificador a ser aplicado aos campos correspondentes. |
FieldOverride
Substitua ou modifique a cadeia de decodificação e codificação do campo especificado.
Representação JSON |
---|
{ "field": string, "modifier": object ( |
Campos | |
---|---|
field |
Especifique o nome do campo em que o modificador será aplicado. |
modifier |
Especifique o modificador a ser aplicado ao campo correspondente. |
Transformação
As transformações de visualização são usadas para modificar a relação entre a tabela e o arquivo QSAM. As transformações são sempre formuladas do ponto de vista dos dados. O conceito é semelhante às tabelas de visualização no BigQuery.
Representação JSON |
---|
{ "exclude": object ( |
Campos | |
---|---|
exclude |
|
unnest |
|
move |
|
rename |
|
FieldModifier
Um modificador de campo permite modificar a codificação ou decodificação de um campo específico. Nem todos os modificadores podem ser aplicados a todos os campos. Consulte a documentação dos modificadores específicos para mais informações.
Representação JSON |
---|
{ "filler": object ( |
Campos | |
---|---|
filler |
Ignorar e excluir o campo. |
null_if |
Defina o valor do campo principal como nulo em uma condição. |
format_date |
Formatar um campo de string como data. |
chain |
Encadear vários modificadores. |
zoned_decimal |
Substituir a configuração decimal de campo com zona. |
binary |
Modifique a configuração do campo binário. |
packed_decimal |
Substitua a configuração do campo decimal empacotado. |
null_if_invalid |
Defina o campo como nulo em vez de mostrar a linha em caso de erro. |
bytes |
Campo "Override bytes". |
varlen |
Defina o registro como um campo de comprimento variável. |
string |
Substituir a configuração do campo de string. |
null_if_empty |
Defina o valor do campo principal como nulo se ele estiver vazio. |
format_timestamp |
Formate um campo de string como carimbo de data/hora. |
hfp |
Defina este campo como um ponto flutuante hexadecimal. |
Excluir
Excluir um campo da tabela resultante, mas ainda passar por decodificação ou codificação. Isso é útil quando o campo não precisa ser transferido para a tabela, mas é necessário para a transcodificação. Por exemplo, campos de indicador nulo ou de comprimento podem ser omitidos da tabela.
Para ignorar a transcodificação, aplique o modificador de preenchimento.
Representação JSON |
---|
{ "field": string |
Campos | |
---|---|
field |
Especifique o campo a ser excluído. |
Desfazer aninhamento
Desfaça o aninhamento do campo.
Representação JSON |
---|
{ "field": string, "format": string |
Campos | |
---|---|
field |
Especificar o campo a ser desaninhado |
format |
Especifique o novo formato de campo. O Para structs não aninhadas, Para matrizes e listas não aninhadas, |
Mover
Mova um campo no registro.
Representação JSON |
---|
{ "field": string, "offset": int |
Campos | |
---|---|
field |
Especifique o campo a ser movido. |
offset |
Especifique o número de casas, para frente ou para trás, para onde o campo precisa ser movido. |
Renomear
Renomeie um ou mais campos com base em uma correspondência de expressão regular.
Por exemplo, para substituir todos os hifens por sublinhados, use o seguinte formato JSON:
{"find": "\\-", "replace":"_"}
.
Representação JSON |
---|
{ "find": string, "replace": string |
Campos | |
---|---|
find |
Especifica um padrão de expressão regular Java para identificar os campos a serem renomeados. O padrão é comparado ao nome completo do campo. Se o padrão corresponder a qualquer parte do nome do campo, ele será considerado uma correspondência. Exemplos:
|
replace |
Especifica o novo nome dos campos correspondentes. Os grupos de captura da expressão regular Exemplos:
|
Enchimento
Especifica que um campo não será decodificado nem codificado. Além disso, ele também será excluído da tabela resultante durante o processo de decodificação. É possível aplicar esse modificador a qualquer campo com um tamanho conhecido.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
NullIf
Defina um campo como nulo se uma condição for atendida. É necessário especificar
null_value
, non_null_value
ou ambos.
Para criar um campo de indicador nulo, use um FieldSuffix
com um modificador de campo null_if
e defina is_inverse
como true
, conforme mostrado nos exemplos abaixo:
Exemplo: indicador nulo
Para criar um campo indicador nulo, podemos usar o modificador de camponull_if
desta forma.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
sejam indicadores nulos, conforme mostrado no
sintetizador de código abaixo:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Exemplo: indicador nulo binário
Para criar um campo de indicador nulobinary
, podemos usar os modificadores de campo binary
e null_if
da seguinte maneira.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
sejam indicadores nulos binary
usando o mesmo modelo do exemplo anterior.
Exemplo: Bytes null-indicator
Para criar um campo indicador nulobytes
, podemos usar os modificadores de campo bytes
e null_if
, como este.
Os valores para nulo e não nulo são expressos como HEX
.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "bytes": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "FF", "target_field": "$self" } } } ] }
NID
sejam um indicador nulo bytes
usando o mesmo modelo
do exemplo anterior.
Representação JSON |
---|
{ "target_field": string, "null_value": string, "non_null_value": string |
Campos | |
---|---|
target_field |
Especifique o campo cujo valor você quer verificar. O campo precisa estar no escopo. |
null_value |
Quando especificado, se |
non_null_value |
Quando especificado, se |
FormatDate
Formata uma string para uma data usando um dos formatos aceitos. Esse modificador só pode ser aplicado a campos de tamanho. Durante o processo de decodificação, os formatos são testados em ordem até que um deles corresponda à string. Durante o processo de codificação, o primeiro formato é usado e o restante é ignorado.
Representação JSON |
---|
{ "formats": object ( |
Campos | |
---|---|
formats |
Lista de formatos de data. |
ModifierChain
Especifique uma cadeia de modificadores para aplicar vários modificadores em série. Os modificadores são aplicados na ordem em que são especificados.
Representação JSON |
---|
{ "modifiers": object ( |
Campos | |
---|---|
modifiers |
Especifique a lista de modificadores a serem aplicados. |
ZonedDecimal
Define várias opções relacionadas à codificação e decodificação de decimais com zona. Esse modificador só pode ser aplicado a um campo decimal.
Representação JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Especifique o tipo lógico a ser usado ao decodificar ou codificar o campo. |
encoding |
A codificação usada para o campo. |
Binário
Ignora todos os modificadores anteriores e trata esse campo como um número binário.
Representação JSON |
---|
{ "signedness": enum ( |
Campos | |
---|---|
signedness |
A assinatura do número. |
PackedDecimal
Defina esse campo como PackedDecimal.
Representação JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Substitua o tipo lógico. Por padrão, o Mainframe Connector usa o tipo lógico ideal com base na precisão e na escala. |
NullIfInvalid
Trata o valor como nulo se a transcodificação falhar. Esse modificador só pode ser aplicado a campos de tamanho. O erro é ignorado e não é registrado no conjunto de dados de spillover. Durante o processo de decodificação, o valor desse campo será nulo para esse registro. Durante o processo de codificação, se os dados não puderem ser gravados, o campo inteiro será preenchido com bytes nulos.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
Bytes
Ignora a cadeia de modificadores e trata os dados como bytes brutos. Esse modificador pode ser aplicado a campos de qualquer tamanho.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
VarLen
Representa um campo de comprimento variável.
Um campo de comprimento variável contém três partes:
- Um item de grupo que contém dois subcampos.
- Um campo no item do grupo que contém a duração dos dados da transação.
- Um campo no item do grupo que contém os dados.
O nome do campo de comprimento variável será o nome do grupo.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
String
Define as várias opções relacionadas à decodificação e codificação de strings. Só pode ser aplicado em um campo de string.
Representação JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Campos | |
---|---|
encoding |
A codificação usada para o campo. |
trim_suffix |
Quando definido como "true", qualquer espaço em branco no final da string será removido. O trim_suffix afeta apenas a decodificação, e a codificação ignora o trim_suffix. As strings que consistem apenas em espaços em branco vão se tornar strings vazias. |
pad_char |
Quando o padding é definido, as strings de exportação são exportadas com |
NullIfEmpty
O campo precisa ser definido como nulo se todos os bytes no campo forem 0.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
FormatTimestamp
Formate uma string para um carimbo de data/hora usando um dos formatos fornecidos. Isso só pode ser aplicado a campos de tamanho. Durante a decodificação, os formatos são testados em ordem até que um deles corresponda à string. Durante a codificação, o primeiro formato será usado e o restante será ignorado.
Representação JSON |
---|
{ "formats": object ( |
Campos | |
---|---|
formats |
Lista de formatos de carimbo de data/hora. |
HFP
Defina esse campo como ponto flutuante hexadecimal.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
DateTimeFormat
Tamanho e padrão a serem usados ao converter o campo em uma data.
Representação JSON |
---|
{ "size": int, "pattern": string |
Campos | |
---|---|
size |
Especifique o tamanho do campo a que esse padrão se aplica. |
pattern |
Padrão do formatador de data. Para mais informações sobre padrões de formatador válidos, consulte Classe DateTimeFormatter. |
BinarySignedness
Tipo lógico a ser usado para um campo decimal.
Enums | |
---|---|
UNSPECIFIED |
Use o tipo mais ideal com base na escala e na precisão. |
SIGNED |
Use 64 bits para armazenar o valor. Esse modificador só funciona para números com precisão menor ou igual a 18 e escala 0. |
UNSIGNED |
Use 64 bits para armazenar o valor. Esse modificador só funciona para números com precisão menor ou igual a 18. |
DecimalLogicalType
Tipo lógico a ser usado para um campo decimal.
Enums | |
---|---|
AUTO |
Use o tipo mais ideal com base na escala e na precisão. |
LONG |
Use 64 bits para armazenar o valor. Esse modificador só funciona para números com precisão menor ou igual a 18 e escala 0. |
DECIMAL64 |
Use 64 bits para armazenar o valor. Esse modificador só funciona para números com precisão menor ou igual a 18. |
BIG_DECIMAL |
Armazene o valor como um valor decimal ilimitado. Essa é a opção mais lenta, mas oferece suporte a qualquer decimal de qualquer precisão em qualquer escala. |
BIG_INTEGER |
Armazene o valor como um valor inteiro sem limites. Essa é a opção mais lenta, mas oferece suporte a qualquer número inteiro de qualquer precisão. |
ZonedDecimalEncoding
Especifica a codificação a ser usada ao decodificar ou codificar um campo decimal com zona.
Enums | |
---|---|
UNSPECIFIED |
Mantenha a codificação especificada na cadeia de modificadores.
Se nenhum modificador for especificado, EBCDIC será usado. |
EBCDIC |
Use a codificação EBCDIC . |
ASCII |
Use a codificação ASCII . |
SchemaValidationMode
O modo de validação do esquema usado durante a compilação do modelo. Esse modo garante a compatibilidade com um formato de dados de destino específico.
Enums | |
---|---|
DEFAULT |
Modo de validação de esquema padrão. Esse modo garante nomes de campo exclusivos no modelo. |
BIG_QUERY |
Modo de validação de esquema para compatibilidade com o BigQuery. Esse modo estende a validação padrão para garantir que o esquema do copybook seja compatível com os tipos de dados do BigQuery. |