É 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.
Nesta página, descrevemos as várias maneiras de configurar o transcodificador 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 arquétipos do Cobol. |
field_suffixes |
Especifique sufixos de campo. |
field_overrides |
Especifique substituições de campo. |
transformations |
Especifique transformações de campo. |
schema_validation_mode |
Especifique o modo de validação de esquema. |
header_records_to_skip |
Especifique o número de primeiros registros a serem ignorados. |
record_filter_condition |
Especifique uma condição de filtro para registros. O filtro aceita os seguintes operadores:
Exemplo:
|
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 (decimal zonado). |
binary |
Especifique os padrões para campos de número binário (COMP). |
packed_decimal |
Especifique os padrões para campos decimais compactados (COMP-3). |
national |
Especifique os padrões para campos nacionais (PIC N). |
utf8 |
Especifique os padrões para campos UTF-8 (PIC U). |
dbcs |
Padrão para campos 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 pelo sufixo.
Os sufixos não diferenciam maiúsculas de minúsculas.
O modificador FieldSuffix
é aplicado depois do modificador FieldOverride
.
Por exemplo, o modificador definido para o sufixo NID
será aplicado ao campo chamado FLD-NID
, mas não ao campo FUNID
.
Representação JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Campos | |
---|---|
suffix |
O campo com esse sufixo terá o modificador aplicado. |
is_inverse |
Especifique se o modificador é um modificador de campo inverso ou não.
Um modificador de campo inverso aplica o modificador em outro campo que tem o mesmo nome do campo com o modificador, mas sem ele. Por exemplo, se os campos Ao usar um modificador de campo inverso, o identificador especial Por exemplo, para criar um campo indicador de nulo, use o modificador de campo |
modifier |
Especifique o modificador a ser aplicado aos campos correspondentes. |
FieldOverride
Substitui ou modifica 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 a 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 expressas do ponto de vista dos dados. O conceito é semelhante ao das 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 para mais informações sobre os modificadores específicos.
Representação JSON |
---|
{ "filler": object ( |
Campos | |
---|---|
filler |
Exclui o campo do processamento e da saída. |
null_if |
Define condicionalmente o campo como nulo 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 em sequência. |
zoned_decimal |
Substitui a configuração padrão para campos decimais zonados. |
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 as informações de tipo anteriores. |
varlen |
Defina o registro como um campo de comprimento variável. |
string |
Substitui a configuração padrão dos 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 e 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
Exclui um campo da tabela resultante, mas ainda passa 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, indicadores nulos ou campos de comprimento podem ser omitidos da tabela.
Para evitar a transcodificação, aplique o modificador de preenchimento.
Representação JSON |
---|
{ "field": string |
Campos | |
---|---|
field |
Especifique o campo a ser excluído. |
Unnest
Remova o aninhamento do campo.
Representação JSON |
---|
{ "field": string, "format": string |
Campos | |
---|---|
field |
Especifique o campo a ser desagrupado |
format |
Especifique o novo formato do 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 que 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 hífens 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 com o 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 para os campos correspondentes. Os grupos de captura da expressão regular Exemplos:
|
Filler
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 resultantes durante a decodificação. É possível aplicar esse modificador a qualquer campo com um tamanho estático 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 indicador de nulo, use um FieldSuffix
com um modificador de campo null_if
e defina is_inverse
como true
, conforme mostrado nos exemplos a seguir:
Exemplo: indicador nulo
Para criar um campo indicador de 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 snippet de livro de cópias a seguir:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Exemplo: indicador binário de nulo
Para criar um campo indicador de 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 efetivamente indicadores nulos binary
usando o mesmo livro de cópias do exemplo anterior.
Exemplo: indicador nulo de bytes
Para criar um campo indicador nulobytes
, podemos usar os modificadores de campo bytes
e null_if
desta forma.
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 efetivamente um indicador nulo bytes
usando o mesmo copybook 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 como uma data usando um dos formatos compatíveis. Só é possível aplicar esse modificador a campos dimensionados. 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 zonados. Só é possível aplicar esse modificador 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 com que o campo é codificado. |
Binário
Ignore os modificadores anteriores e trate este campo como um número binário.
Representação JSON |
---|
{ "signedness": enum ( |
Campos | |
---|---|
signedness |
O sinal do número. |
PackedDecimal
Defina esse campo como um 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. Só é possível aplicar esse modificador a campos dimensionados. O erro é ignorado e não é registrado no conjunto de dados de transbordamento. 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, todo o campo 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 sem codificação de caracteres específica ou interpretação numérica. É possível aplicar esse modificador a qualquer campo, independente 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 o comprimento 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 a um campo de string.
Representação JSON |
---|
{ "encoding": string, "trim_suffix": boolean, "pad_char": string |
Campos | |
---|---|
encoding |
A codificação com que o campo é codificado. |
trim_suffix |
Quando definido como "true", qualquer espaço em branco no final da string será removido. trim_suffix afeta apenas a decodificação. A codificação ignora trim_suffix. As strings que consistem apenas em espaços em branco se tornam strings vazias. |
pad_char |
Ao definir strings de exportação de padding com |
NullIfEmpty
O campo precisa ser definido como nulo se todos os bytes nele forem 0.
Forneça um objeto JSON vazio da seguinte maneira:
Representação JSON |
---|
{ |
FormatTimestamp
Formata uma string em um carimbo de data/hora usando um dos formatos fornecidos. Isso só pode ser aplicado a campos dimensionados. 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. Depois da decodificação inicial do campo para a forma de string, se o conteúdo dele corresponder a algum 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, usando |
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 |
Codifica esse valor específico quando o valor de origem é nulo. Verifique se a string é válida para o tipo do 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 formatadores válidos, consulte Classe DateTimeFormatter. |
ZonedDecimalEncoding
Especifique a codificação a ser usada ao decodificar ou codificar um campo decimal zonado.
Tipos enumerados | |
---|---|
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 . |
BinarySignedness
Tipo lógico a ser usado para um campo decimal.
Tipos enumerados | |
---|---|
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 cuja precisão é menor ou igual a 18 e a 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.
Tipos enumerados | |
---|---|
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 cuja precisão é menor ou igual a 18 e a 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 decimal ilimitado. Essa é a opção mais lenta, mas aceita qualquer decimal de qualquer precisão em qualquer escala. |
BIG_INTEGER |
Armazene o valor como um número inteiro sem limites. Essa é a opção mais lenta, mas aceita qualquer número inteiro de qualquer precisão. |
SchemaValidationMode
Especifique o modo de validação de esquema a ser usado durante a compilação do copybook. Esse modo verifica a compatibilidade com um formato de dados de destino específico.
Tipos enumerados | |
---|---|
DEFAULT |
Modo padrão de validação de esquema. Esse modo verifica se há nomes de campos exclusivos no copybook. |
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. |
POSTGRES |
Modo de validação de esquema para compatibilidade com PostgreSQL. Esse modo estende a validação padrão para verificar se o esquema do copybook é compatível com os tipos de dados do PostgreSQL. |
MYSQL |
Modo de validação de esquema para compatibilidade com MySQL. Esse modo estende a validação padrão para verificar se o esquema do copybook é compatível com os tipos de dados do MySQL. |