Pode configurar o transcodificador do Mainframe Connector adicionando a configuração necessária num ficheiro JSON.
Este ficheiro é denominado ficheiro de configuração do transcodificador. Tem de definir a configuração conforme especificado na secção Configuração.
Os comandos qsam encode
e qsam decode
usam o ficheiro de configuração do transcodificador para realizar a transcodificação de dados.
Esta página descreve as várias formas como pode configurar o transcodificador do conetor de mainframe.
Configuração
O objeto Configuration
é a raiz da configuração do transcodificador.
Contém todas as opções de configuração do transcodificador.
Representação JSON |
---|
{ "defaults": object ( |
Campos | |
---|---|
defaults |
Especifique modificadores de campo predefinidos para arquétipos Cobol. |
field_suffixes |
Especifique sufixos de campos. |
field_overrides |
Especifique substituições de campos. |
transformations |
Especifique as transformações de campos. |
schema_validation_mode |
Especifique o modo de validação do esquema. |
DefaultsSection
O objeto DefaultsSection
pode ser usado para especificar modificações predefinidas por tipos de COBOL.
Estas alterações são aplicadas antes de quaisquer modificações de substituição ou sufixo.
Representação JSON |
---|
{ "alpha_numeric_display": object ( |
Campos | |
---|---|
alpha_numeric_display |
Especifique predefinições para campos alfanuméricos (PIC X). |
numeric_display |
Especifique predefinições para campos de apresentação numérica (decimal zonado). |
binary |
Especifique predefinições para campos de números binários (COMP). |
packed_decimal |
Especifique os valores predefinidos para campos decimais compactados (COMP-3). |
national |
Especifique predefinições para campos nacionais (PIC N). |
utf8 |
Especifique predefinições para campos UTF-8 (PIC U). |
dbcs |
Predefinição para campos dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Predefinição para campos de ponto flutuante hexadecimal (COMP-1, COMP-2). |
FieldSuffix
Os sufixos de campos aplicam-se a todos os campos que têm um sufixo.
Os campos são correspondentes se terminarem com um hífen (-
) ou um caráter de sublinhado (_
) seguido do sufixo.
Os sufixos não são sensíveis a maiúsculas e minúsculas.
O modificador FieldSuffix
é aplicado depois do modificador FieldOverride
.
Por exemplo, o modificador definido para o sufixo NID
é aplicado ao campo denominado FLD-NID
, mas não ao campo FUNID
.
Representação JSON |
---|
{ "suffix": string, "is_inverse": boolean, "modifier": object ( |
Campos | |
---|---|
suffix |
O campo com este sufixo terá o modificador aplicado. |
is_inverse |
Especificar se o modificador é um modificador de campo inverso ou não.
Um modificador de campo inverso aplica o modificador a outro campo que tem o mesmo nome que o campo com o modificador
sem o modificador. Por exemplo, se os campos Quando usar um modificador de campo inverso, o identificador especial Por exemplo, para criar um campo indicador nulo, pode usar o modificador de campo |
modifier |
Especifique o modificador a aplicar aos campos correspondentes. |
FieldOverride
Substituir ou modificar a cadeia de descodificação e codificação para o campo especificado.
Representação JSON |
---|
{ "field": string, "modifier": object ( |
Campos | |
---|---|
field |
Especifique o nome do campo ao qual aplicar o modificador. |
modifier |
Especifique o modificador a aplicar ao campo correspondente. |
Transformação
As transformações de visualização são usadas para modificar a relação entre a tabela e o ficheiro QSAM. As transformações são sempre formuladas 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-lhe modificar a codificação ou a descodificação de um campo específico. Tenha em atenção que 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 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 a serem aplicados sequencialmente. |
zoned_decimal |
Substitui a configuração predefinida para campos decimais zonados. |
binary |
Substitui a configuração predefinida para campos numéricos binários. |
packed_decimal |
Substitui a configuração predefinida para campos decimais compactados. |
null_if_invalid |
Define o campo como nulo se ocorrer um erro de transcodificação, o que impede o transbordo de registos. |
bytes |
Trata o campo como uma sequência de bytes não processados, ignorando as informações de tipo anteriores. |
varlen |
Defina o registo como um campo de comprimento variável. |
string |
Substitui a configuração predefinida para campos de string. |
null_if_empty |
Define o campo como nulo se o respetivo conteúdo for considerado vazio. |
format_timestamp |
Formata um campo de string como uma data/hora. |
hfp |
Interpreta o campo como um número de ponto flutuante hexadecimal (HFP). |
decode_as_null |
Define como os valores nulos têm de ser descodificados. |
encode_null_as |
Define como os valores nulos têm de ser codificados. |
Excluir
Excluir um campo da tabela resultante, mas continuar a ser descodificado ou codificado. Isto é útil quando o campo não precisa de ser transferido para a tabela, mas é necessário para a transcodificação. Por exemplo, os campos de indicador nulo ou de comprimento podem ser omitidos da tabela.
Para ignorar completamente a transcodificação, aplique o modificador de preenchimento.
Representação JSON |
---|
{ "field": string |
Campos | |
---|---|
field |
Especifique o campo a excluir. |
Unnest
Desaninhe o campo.
Representação JSON |
---|
{ "field": string, "format": string |
Campos | |
---|---|
field |
Especifique o campo a desagrupar |
format |
Especifique o novo formato do campo. O Para structs não aninhados, Para matrizes e listas não aninhadas, |
Mover
Mover um campo no registo.
Representação JSON |
---|
{ "field": string, "offset": int |
Campos | |
---|---|
field |
Especifique o campo a mover. |
offset |
Especifique o número de casas decimais para a frente ou para trás que o campo tem de ser movido. |
Mudar o nome
Mude o nome de um ou mais campos com base numa correspondência de expressão regular.
Por exemplo, para substituir todos os hífens por carateres de sublinhado, 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 renomear. O padrão é comparado com o nome completo do campo. Se o padrão corresponder a qualquer parte do nome do campo, o campo é considerado uma correspondência. Exemplos:
|
replace |
Especifica o novo nome dos campos correspondentes. Os grupos de captura da expressão regular Exemplos:
|
Palavra desnecessária
Especifica que um campo vai ser ignorado durante o processamento. O campo não é descodificado a partir da entrada nem codificado para a saída e é excluído do esquema e da tabela de dados resultantes durante a descodificação. Pode aplicar este modificador a qualquer campo que tenha um tamanho conhecido estático.
Forneça um objeto JSON vazio da seguinte forma:
Representação JSON |
---|
{ |
NullIf
Definir um campo como nulo se uma condição for cumprida. Tem de especificar null_value
ou non_null_value
ou ambos.
Para criar um campo de indicador nulo, pode usar um FieldSuffix
com um modificador de campo null_if
e definir is_inverse
como true
, conforme mostrado nos exemplos seguintes:
Exemplo: indicador nulo
Para criar um campo de indicador nulo, podemos usar o modificador de camponull_if
da seguinte forma.
{ "field_suffixes": [ { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "?", "target_field": "$self" } } } ] }
NID
sejam efetivamente indicadores nulos, conforme mostrado no seguinte fragmento do livro de cópias:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Exemplo: indicador nulo binário
Para criar um campo debinary
indicador nulo, podemos usar os modificadores de campo binary
e null_if
da seguinte forma.
{ "field_suffixes": [ { "suffix": "NID", "modifier": { "binary": {} } }, { "suffix": "NID", "is_inverse": true, "modifier": { "null_if": { "null_value": "15", "target_field": "$self" } } } ] }
NID
sejam efetivamente binary
indicadores nulos que usam o mesmo livro de registo do exemplo anterior.
Exemplo: indicador nulo de bytes
Para criar um campo debytes
indicador nulo, podemos usar os modificadores de campo bytes
e null_if
da seguinte 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 livro de cópias 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 quer verificar. O campo tem de estar no âmbito. |
null_value |
Quando especificado, se |
null_values |
Quando especificado, se |
non_null_value |
Quando especificado, se |
non_null_values |
Quando especificado, se |
FormatDate
Formatar uma string numa data usando um dos formatos suportados. Só pode aplicar este modificador a campos dimensionados. Durante o processo de descodificação, os formatos são testados por ordem até que um dos formatos corresponda à string. Durante o processo de codificação, é usado o primeiro formato e os restantes são ignorados.
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 pela ordem em que são especificados.
Representação JSON |
---|
{ "modifiers": object ( |
Campos | |
---|---|
modifiers |
Especifique a lista de modificadores a aplicar. |
ZonedDecimal
Define várias opções relacionadas com a codificação e a descodificação de decimais zonados. Só pode aplicar este modificador a um campo decimal.
Representação JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Especifique o tipo lógico a usar ao descodificar ou codificar o campo. |
encoding |
A codificação com a qual o campo está codificado. |
Binário
Ignorar todos os modificadores anteriores e tratar este campo como um número binário.
Representação JSON |
---|
{ "signedness": enum ( |
Campos | |
---|---|
signedness |
O sinal do número. |
PackedDecimal
Defina este campo como PackedDecimal.
Representação JSON |
---|
{ "logical_type": enum ( |
Campos | |
---|---|
logical_type |
Substitua o tipo lógico. Por predefinição, o conetor de mainframe usa o tipo lógico ideal com base na precisão e na escala. |
NullIfInvalid
Tratar o valor como nulo se a transcodificação falhar. Só pode aplicar este modificador a campos dimensionados. O erro é ignorado e não é registado no conjunto de dados de transbordo. Durante o processo de descodificação, o valor deste campo será nulo para este registo. Durante o processo de codificação, se não for possível escrever os dados, todo o campo é preenchido com bytes nulos.
Forneça um objeto JSON vazio da seguinte forma:
Representação JSON |
---|
{ |
Bytes
Trata o campo como uma sequência de bytes não processados. Este modificador substitui quaisquer informações de tipo anteriores, fazendo com que os dados de bytes não processados do campo sejam preservados tal como estão, sem codificação de carateres específica nem interpretação numérica. Pode aplicar este modificador a qualquer campo, independentemente do respetivo tipo ou tamanho original.
Forneça um objeto JSON vazio da seguinte forma:
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 de grupo que contém os dados.
O nome do campo de comprimento variável é o nome do grupo.
Forneça um objeto JSON vazio da seguinte forma:
Representação JSON |
---|
{ |
String
Define as várias opções relacionadas com a descodificação e a 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 a qual o campo está codificado. |
trim_suffix |
Quando definido como verdadeiro, todos os espaços em branco no final da string são removidos. trim_suffix afeta apenas a descodificação. A codificação ignora trim_suffix. Tenha em atenção que as strings que consistam apenas em espaços em branco tornam-se strings vazias. |
pad_char |
Quando define strings de exportação de preenchimento com |
NullIfEmpty
O campo deve ser definido como nulo se todos os bytes nesse campo forem 0.
Forneça um objeto JSON vazio da seguinte forma:
Representação JSON |
---|
{ |
FormatTimestamp
Formate uma string para uma indicação de tempo usando um dos formatos fornecidos. Só pode ser aplicado a campos dimensionados. Durante a descodificação, os formatos são testados por ordem até que um dos formatos corresponda à string. Durante a codificação, é usado o primeiro formato e os restantes são ignorados.
Representação JSON |
---|
{ "formats": object ( |
Campos | |
---|---|
formats |
Lista de formatos de data/hora. |
HFP
Defina este campo como ponto flutuante hexadecimal.
Forneça um objeto JSON vazio da seguinte forma:
Representação JSON |
---|
{ |
DecodeAsNull
Define como os valores nulos são interpretados durante o processo de descodificação. Como o COBOL não suporta nativamente valores nulos, este parâmetro especifica que valores têm de ser tratados como nulos.
Representação JSON |
---|
{ "values": string, "hex_bytes": string |
Campos | |
---|---|
values |
Uma lista de representações de strings. Após a descodificação inicial do campo para o respetivo formato de string, se o conteúdo do campo corresponder a qualquer um destes valores, é 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 destes bytes, é tratado como nulo.
Por exemplo, usar |
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 este valor específico quando o valor de origem for nulo. Verifique se a string é válida para o tipo do campo. |
hex_byte |
Codifique esta 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 usar ao converter o campo numa data.
Representação JSON |
---|
{ "size": int, "pattern": string |
Campos | |
---|---|
size |
Especifique o tamanho do campo ao qual este padrão se aplica. |
pattern |
Especifique o padrão do formatador de datas. Para mais informações sobre padrões de formatação válidos, consulte o artigo Classe DateTimeFormatter. |
BinarySignedness
Tipo lógico a usar para um campo decimal.
Enumerações | |
---|---|
UNSPECIFIED |
Use o tipo mais adequado com base na escala e na precisão. |
SIGNED |
Use 64 bits para armazenar o valor. Este modificador só funciona para números cuja precisão seja inferior ou igual a 18 e cuja escala seja 0. |
UNSIGNED |
Use 64 bits para armazenar o valor. Este modificador só funciona para números cuja precisão seja igual ou inferior a 18. |
SchemaValidationMode
Especifique o modo de validação do esquema a usar durante a compilação do copybook. Este modo valida a compatibilidade com um formato de dados de destino específico.
Enumerações | |
---|---|
DEFAULT |
Modo de validação de esquema predefinido. Este modo verifica se existem nomes de campos exclusivos no copybook. |
BIG_QUERY |
Modo de validação do esquema para compatibilidade com o BigQuery. Este modo estende a validação predefinida para verificar se o esquema do copybook é compatível com os tipos de dados do BigQuery. |
ZonedDecimalEncoding
Especifique a codificação a usar ao descodificar ou codificar um campo decimal zonado.
Enumerações | |
---|---|
UNSPECIFIED |
Mantenha a codificação especificada na cadeia de modificadores.
Se não for especificado nenhum modificador, é usado EBCDIC . |
EBCDIC |
Use a codificação EBCDIC . |
ASCII |
Use a codificação ASCII . |
DecimalLogicalType
Tipo lógico a usar para um campo decimal.
Enumerações | |
---|---|
AUTO |
Use o tipo mais adequado com base na escala e na precisão. |
LONG |
Use 64 bits para armazenar o valor. Este modificador só funciona para números cuja precisão seja inferior ou igual a 18 e cuja escala seja 0. |
DECIMAL64 |
Use 64 bits para armazenar o valor. Este modificador só funciona para números cuja precisão seja igual ou inferior a 18. |
BIG_DECIMAL |
Armazene o valor como um valor decimal ilimitado. Esta é a opção mais lenta, mas suporta qualquer decimal de qualquer precisão a qualquer escala. |
BIG_INTEGER |
Armazene o valor como um valor de número inteiro ilimitado. Esta é a opção mais lenta, mas suporta qualquer número inteiro de qualquer precisão. |