O Mainframe Connector oferece suporte a duas versões do analisador de copybook:
- analisador de copybook nativo: o analisador nativo implementa um analisador baseado em ANTLR4, aceita copybooks COBOL e é a recomendada do analisador.
- analisador de copybook legado: o analisador legado é uma versão mais antiga do analisador, que suporta uma quantidade muito limitada em formatos de copybooks.
É possível definir qual analisador você quer usar com base no seu copybook. Para mais informações sobre como definir o analisador que você quer usar, consulte Definir o analisador de copybook.
Analisador de livro de cópias nativo
O analisador de copybook nativo é a versão mais recente do analisador e é usado por padrão. O analisador de copybook nativo implementa um analisador baseado em ANTLR4 e oferece suporte a copybooks COBOL.
Esta seção lista as tarefas de pré-processamento realizadas pelo tipos de dados compatíveis com o analisador de copybook nativo e as restrições de uso.
Pré-processamento
Antes de analisar um copybook, o nativo o analisador pré-processa os dados e executa as seguintes tarefas:
- Remove linhas de comentário.
- Resolve a continuação da linha.
- Deixa em branco as áreas do número da linha e da coluna 73.
- Preserva instruções específicas do pré-processador, como
EJECT
,SPACE
eTITLE
. Esses campos são analisados, ignorada. Livros que contenham parâmetros de pré-processador que podem ser usados porCOPY REPLACING
não são compatíveis com o Analisador de copybook nativo. Nesses livros, os identificadores são cercados por dois-pontos (:).
Restrições e tipos de dados compatíveis
Confira a seguir os tipos de dados compatíveis com o analisador de copybook nativo e as restrições para o uso dele:
- Os níveis 66 (ALIAS) ou 77 (STANDALONE) não são compatíveis.
- Use apenas campos PICTURE. Há suporte para os seguintes campos PICTURE:
- Pic A, Pic, B, Pic G (DBCS), Pic N (nacional ou DBCS), Pic U (UTF8), Pic X e decimal zoneado (precisão máxima 38, escala máxima 38)
- O ponto flutuante hexadecimal (HFP) da IBM é compatível.
- REDEFINES não são aceitos.
- Use apenas os seguintes campos COMP. ALIGN e OCCURS não são suportados.
- COMP
- COMP4
- Binário
- COMP3
- DECIMAL EM PACOTE
- DATE e TIMESTAMP são aceitos.
- O campo conjunto de caracteres de dois bytes (DBCS, na sigla em inglês) Pic G e Pic N são
compatíveis e devem ser usados em vez de Pic T, que foi descontinuado. Para
usar o campo Pic N como DBCS sem especificar
USAGE DISPLAY-1
, defina a variável de ambienteNSYMBOL
comoDBCS
. Por padrão,NSYMBOL
é definido comoNATIONAL
, que defineUSAGE NATIONAL
como campos Pic N que não têm uma cláusulaUSAGE
.NSYMBOL
só pode ser definido comoNATIONAL
ouDBCS
. - Strings de caracteres de comprimento variável são aceitas.
- A cláusula SIGN é compatível.
- É necessário justificar todos os campos e usar um único nível de recuo.
- Comentários são aceitos.
Suporte a campos de data e carimbo de data/hora
O conector de mainframe oferece suporte à transferência de dados de data e carimbo de data/hora para dentro e fora do BigQuery. Para isso, você deve definir variáveis de ambiente que comecem
com a palavra SUFFIX
no seguinte formato:
SUFFIX_SUFFIX_STRING="--bqtype TYPE --format FORMAT --timezone TIMEZONE"
A lista a seguir descreve o formato em mais detalhes:
SUFFIX_SUFFIX_STRING
: a variável de ambiente que pode ser usada para definir dados de data e carimbo de data/hora. O SUFFIX_STRING nome corresponde aos sufixos-SUFFIX_STRING
ou_SUFFIX_STRING
que deve ser interpretada como uma data ou carimbo de data/hora quando usado como sufixo de um nome de campo em um copybook. Verifique se o SUFFIX_STRING não contém um hífen ou sublinhado.--bqtype
: define o TYPE do BigQuery. . Os tipos compatíveis do BigQuery sãoDATE
eTIMESTAMP
.--format
: um parâmetro que define o formato da data ou do carimbo de data/hora. É possível especificar no máximo cinco formatos diferentes separados por vírgulas. Se vários formatos corresponderem a uma determinada entrada, o primeiro formato que corresponder será usado para o carregamento no BigQuery. Se vários formatos forem especificados para para a exportação, apenas o primeiro formato é usado. Para mais informações sobre formatos válidos, consulte Formatos de data e carimbo de data/hora aceitos.--timezone
: um parâmetro opcional para o tipoTIMESTAMP
. Por padrão, o fuso horário é UTC. Para mais informações sobre os formatos de fuso horário compatíveis, consulte Formatos de fuso horário compatíveis.--omitsuffix
(opcional): se esse parâmetro for especificado,-SUFFIX_STRING
ou_SUFFIX_STRING
será removido do nome do campo que aparece no BigQuery.
Para adicionar um alias a um SUFFIX_SUFFIX_STRING
, defina
uma variável de ambiente SUFFIX_SUFFIX_ALIAS=$SUFFIX_SUFFIX_STRING
.
Exemplos:
- Se você definir uma variável de ambiente como
SUFFIX_DT8="--bqtype DATE --format yyyyMMdd"
, um campo com sufixo-DT8
ou_DT8
será um campo do tipoDATE
no BigQuery, e o padrão seráyyyyMMdd
. - Se você definir uma variável de ambiente como
SUFFIX_DT10="--bqtype DATE --format MM-dd-yyyy"
: um campo com sufixo-DT10
ou_DT10
será umDATE
no BigQuery, e seu padrão seráMM-dd-yyyy
. - Se você definir uma variável de ambiente
SUFFIX_DT="--bqtype DATE --format 'MM-dd-yyyy,MM/dd/yyyy'"
, um campo com sufixo-DT
ou_DT
será umDATE
no BigQuery, e seu padrão seráMM-dd-yyyy
ouMM/dd/yyyy
. - Se você definir duas variáveis de ambiente como
SUFFIX_TIMESTAMP="--bqtype TIMESTAMP --format 'yyyy-MM-dd HH:mm:ss.SSSSSS' --timezone America/Los_Angeles"
eSUFFIX_TS=$SUFFIX_TIMESTAMP
, um campo com um dos seguintes sufixos:-TIMESTAMP
,_TIMESTAMP
,-TS
ou_TS
será um campo do tipoTIMESTAMP
no BigQuery, e o padrão seráyyyy-MM-dd HH:mm:ss.SSSSSS
com fuso horárioAmerica/Los_Angeles
.
Suporte para campos DBCS
Verifique o seguinte ao usar campos DBCS:
- Ao usar os campos PIC G ou Pic N DBCS, é necessário fornecer um dos seguintes
codificações válidas de conjuntos de caracteres de vários bytes (MBCS) no
encoding
ou na variável de ambienteENCODING
ao usar o Comandosgsutil cp
oubq export
:- x-IBM930
- x-IBM933
- x-IBM935
- x-IBM937
- x-IBM939
- x-IBM942
- x-IBM942C
- x-IBM943
- x-IBM943C
- x-IBM949
- x-IBM949C
- x-IBM950
- x-IBM964
- x-IBM970
- x-IBM1364
- Quando um campo de cópia de livro contém apenas bytes DBCS, mas esses bytes não estão
cercados por shift-out (0x0E) e shift-in (0x0F), é necessário adicionar o sufixo
_DBCS
ao nome do campo para garantir que esses bytes sejam decodificados como bytes DBCS.
Por exemplo, se os dados corresponderem ao campo do copybook
03 FLD01 PIC N USAGE DISPLAY-1
contém os bytes 0x43
e
0xC5
na codificação x-IBM930 que não estão cercados por 0x0E
e
0x0F
, é necessário renomear o nome do campo do copybook como
03 FLD01-DBCS PIC N USAGE DISPLAY-1
para decodificar corretamente
dos dados do DBCS.
Suporte a strings de caracteres de comprimento variável
O analisador de textos nativos é compatível com os seguintes
Campos struct
:
- 10 var
- 15 var-LEN PIC 9(4) USAGE COMP
- 15 var-TEXT PIC X(n)
O primeiro campo em struct
é o comprimento do segundo campo, o campo de string. Talvez seja necessário adicionar padding ao final do
com base no comprimento do registro, conforme mostrado na figura a seguir.
O conector de mainframe remove o sufixo do nome da variável antes de salvar os dados no BigQuery. Neste exemplo, o nome da variável será
var
.
Para usar campos struct
, defina a variável de ambiente
BQSH_FEATURE_VARIABLE_LENGTH_ENABLED
como yes
ou
true
.
Ao usar campos struct
, garanta o seguinte:
- O sufixo do primeiro parâmetro no
struct
é-LEN
. Se você quiser usar um sufixo diferente, defina a variável de ambienteBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
para o sufixo que você quer usar. - O sufixo do segundo parâmetro em
struct
é-TEXT
. Se quiser usar um sufixo diferente, você deve definir o variável de ambienteBQSH_FEATURE_VARIABLE_LENGTH_LEN_SUFFIX
para o sufixo que você quer usar.
Campos e construções sem suporte
As seções a seguir descrevem campos e construções que não são compatíveis com o
Construções COBOL
construções do COBOL, mesmo que não haja suporte a elas; Se você usar construtos em seu copybook, o Conector de mainframe mostra um erro.
dataAlignedClause
dataBlankWhenZeroClause
dataCommonOwnLocalClause
dataIntegerStringClause
dataJustifiedClause
dataOccursClause
dataReceivedByClause
dataRecordAreaClause
dataRenamesClause
dataSignClause
dataSynchronizedClause
dataThreadLocalClause
dataTypeClause
dataTypeDefClause
dataUsingClause
Tipos de dados
Os tipos de dados COBOL, como COMP-1 e COMP-2, são aceitos.
Parser de cópia legada
O analisador de copybook legado é uma versão mais antiga do analisador que oferece suporte a recursos não COBOL. Se você estiver usando um copybook baseado em DSL, o analisador legado pode ser mais adequado, já que o analisador de copybook nativo pode causar erros.
É possível usar o DD de cópia com as seguintes restrições:
- Os níveis 66 (ALIAS) ou 77 (STANDALONE) não são compatíveis.
- REDEFINES não são aceitos.
- Não é possível usar linhas de comentário.
- Campos de comprimento 10 cujo nome termina com DATE ou DT são datas. A decodificação é diferente para esses campos.
- Use apenas os seguintes campos COMP. ALIGN e OCCURS não são suportados.
- COMP
- COMP4
- Binário
- COMP3
- DECIMAL EM PACOTE
- Use apenas campos PICTURE. Defina os campos de PICTURE na mesma linha, diretamente após o nome do campo.
- Você precisa justificar todos os campos e usar um único nível. Não é possível usar comentários.
- Verifique se as colunas 1 a 6 sempre contêm espaços em branco.