Referência do analisador de cópias

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 e TITLE. Esses campos são analisados, ignorada. Livros que contenham parâmetros de pré-processador que podem ser usados por COPY 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 ambiente NSYMBOL como DBCS. Por padrão, NSYMBOL é definido como NATIONAL, que define USAGE NATIONAL como campos Pic N que não têm uma cláusula USAGE. NSYMBOL só pode ser definido como NATIONAL ou DBCS.
  • 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ão DATE e TIMESTAMP.
  • --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 tipo TIMESTAMP. 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 tipo DATE 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á um DATE 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á um DATE no BigQuery, e seu padrão será MM-dd-yyyy ou MM/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" e SUFFIX_TS=$SUFFIX_TIMESTAMP, um campo com um dos seguintes sufixos: -TIMESTAMP, _TIMESTAMP, -TS ou _TS será um campo do tipo TIMESTAMP no BigQuery, e o padrão será yyyy-MM-dd HH:mm:ss.SSSSSS com fuso horário America/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 ambiente ENCODING ao usar o Comandos gsutil cp ou bq 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.

Padding adicionado a strings de caracteres de comprimento variável.
Figura 1. Padding adicionado às strings de caracteres de comprimento variável.

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 ambiente BQSH_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 ambiente BQSH_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.