É 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 transcodificador.
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 os 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 |
Exclui o campo do processamento e da saída. |
null_if |
Define o campo como nulo de forma condicional com base no valor de outro campo. |
format_date |
Formata um campo de string como uma data. |
chain |
Encadeia vários modificadores para serem aplicados sequencialmente. |
zoned_decimal |
Substitui a configuração padrão para campos decimais com zona. |
binary |
Substitui a configuração padrão para campos numéricos binários. |
packed_decimal |
Substitui a configuração padrão para campos decimais compactados. |
null_if_invalid |
Define o campo como nulo se ocorrer um erro de transcodificação, evitando o transbordamento de registros. |
bytes |
Trata o campo como uma sequência bruta de bytes, ignorando informações de tipo anteriores. |
varlen |
Defina o registro como um campo de comprimento variável. |
string |
Substitui a configuração padrão de campos de string. |
null_if_empty |
Define o campo como nulo se o conteúdo for considerado vazio. |
format_timestamp |
Formata um campo de string como um carimbo de data/hora. |
hfp |
Interpreta o campo como um número hexadecimal de ponto flutuante (HFP). |
decode_as_null |
Define como os valores nulos precisam ser decodificados. |
encode_null_as |
Define como os valores nulos precisam ser codificados. |
Excluir
Excluir um campo da tabela resultante, mas ainda decodificar ou codificar. 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 será ignorado durante o processamento. O campo não será decodificado da entrada nem codificado para a saída e será excluído do esquema e da tabela de dados resultante durante a decodificação. É possível aplicar esse modificador a qualquer campo com um tamanho conhecido estático.
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
, como este.
{ "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, "null_values": string, "non_null_value": string, "non_null_values": string |
Campos | |
---|---|
target_field |
Especifique o campo cujo valor você quer verificar. O campo precisa estar no escopo. |
null_value |
Quando especificado, se |
null_values |
Quando especificado, se |
non_null_value |
Quando especificado, se |
non_null_values |
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 em 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
Trata o campo como uma sequência bruta de bytes. Esse modificador substitui qualquer informação de tipo anterior, fazendo com que os dados de bytes brutos do campo sejam preservados como estão, sem codificação de caracteres específica ou interpretação numérica. Você pode aplicar esse modificador a qualquer campo, independentemente do tipo ou tamanho original.
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", todos os espaços em branco no final da string são removidos. 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 |
---|
{ |
DecodeAsNull
Define como os valores nulos são interpretados durante o processo de decodificação. Como o COBOL não oferece suporte nativo a valores nulos, esse parâmetro especifica quais valores precisam ser tratados como nulos.
Representação JSON |
---|
{ "values": string, "hex_bytes": string |
Campos | |
---|---|
values |
Uma lista de representações de string. Após a decodificação inicial do campo para o formato de string, se o conteúdo do campo corresponder a qualquer um desses valores, ele será tratado como nulo. |
hex_bytes |
Uma lista de representações hexadecimais de um único byte.
Quando um campo contém repetições de qualquer um desses bytes, ele é tratado como nulo.
Por exemplo, use |
EncodeNullAs
Define como os valores nulos são representados durante o processo de codificação.
Representação JSON |
---|
{ "value": string, "hex_byte": string |
Campos | |
---|---|
value |
Codifique esse valor específico quando o valor de origem for nulo. Verifique se a string é válida para o tipo de campo. |
hex_byte |
Codifique essa sequência de bytes específica (representada como uma string hexadecimal)
quando o valor de origem for nulo. Por exemplo, |
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 |
Especifique o 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 adequado 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. |
SchemaValidationMode
Especifique o modo de validação do esquema a ser usado durante a compilação do modelo. Esse modo verifica a compatibilidade com um formato de dados de destino específico.
Enums | |
---|---|
DEFAULT |
Modo de validação de esquema padrão. Esse modo verifica se os nomes de campos exclusivos estão no livro de cópia. |
BIG_QUERY |
Modo de validação de esquema para compatibilidade com o BigQuery. Esse modo estende a validação padrão para verificar se o esquema do copybook é compatível com os tipos de dados do BigQuery. |
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 . |
DecimalLogicalType
Tipo lógico a ser usado para um campo decimal.
Enums | |
---|---|
AUTO |
Use o tipo mais adequado 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. |