Como o Utilitário createdatamaps Determina Campos de RID
Como o Utilitário createdatamaps Determina Campos de RID
Quando você configura o arquivo de controle para localizar campos de RID, o utilitário executa as seguintes etapas:
Identifica campos de RID candidatos no modelo de metadados. Como alternativa, se definir o elemento fieldOffset, valide o valor que você especificar.
Obtém valores RID candidatos de registros de dados de amostra.
Faz a correspondência entre os possíveis layouts de metadados e os registros de dados de amostra; e define o campo e os valores RID quando uma correspondência é localizada.
Se o copybook incluir vários níveis 01, o utilitário executará essas etapas para cada nível 01.
Etapa 1 - Identificando Campos de RID Candidatos
O utilitário createdatamaps examina os metadados do copybook COBOL para localizar campos de RID candidatos. O utilitário determina então o deslocamento e o comprimento dos campos de RID candidatos.
Como alternativa, se definir o elemento fieldOffset, o utilitário validará o valor que você especificar.
O utilitário usa os seguintes princípios para localizar campos de RID candidatos:
O utilitário deve identificar pelo menos um campo de RID candidato nos registros de metadados. Se o utilitário não localizar campos de RID candidatos, ele interromperá o processamento do copybook para campos de RID.
Os campos de RID devem estar no mesmo deslocamento e ter a mesmo largura para todos os layouts de registro com base em um copybook.
O elemento a seguir no arquivo de controle configura o processamento da Etapa 1:
ridConfig.fieldWidth. Número máximo de bytes de um campo de RID.
Etapa 2 - Lendo Valores RID de Amostra de Dados
O utilitário createdatamaps lê registros de dados do arquivo de dados que é especificado no elemento seqFileName ou vsamFileName no arquivo de controle. O utilitário usa os comprimentos e deslocamentos de cada campo de RID da Etapa 1 para ler os valores dos campos de RID candidatos no arquivo de dados. Como alternativa, se você definir o elemento fieldOffset, o utilitário usará o valor fieldOffset para localizar valores RID no arquivo de dados.
O utilitário rejeita campos de RID candidatos com base em determinadas verificações. Por exemplo, o número de valores de dados pode exceder o número máximo de tipos de registro.
O utilitário usa os seguintes princípios:
A saída da Etapa 2 deve ser um campo de RID selecionado entre os candidatos. Se mais de um campo de candidato corresponder a todas as verificações, o utilitário selecionará o primeiro campo de candidato.
Se nenhum campo de RID de candidato permanecer após a Etapa 2, o utilitário interromperá o processamento do copybook para campos de RID.
Os campos de candidatos serão rejeitados se nenhuma das seguintes condições se aplicarem:
A lista de valores RID descobertos do campo exceder o limite.
Dois registros de dados de diferentes comprimentos têm o mesmo valor RID.
Os seguintes elementos no arquivo de controle são usados no processamento da Etapa 2:
ridConfig.recordTypeLimit. Número máximo de valores distintos em um campo de RID válido.
ridConfig.readRecordLimit. Número máximo de registros de dados para leitura de cada fonte de dados.
seqFileName ou vsamFileName. Caminho completo e nome do arquivo do conjunto de dados sequencial ou VSAM que o utilitário lê.
Etapa 3 - Fazendo a Correspondência entre Layouts de Registros e Registros de Dados
O utilitário gera internamente todos os layouts de registros possíveis, até o número de layouts que o elemento maxRedefines especifica. O utilitário faz a correspondência entre cada possível layout e os registros de dados.
Para cada layout de registro, o utilitário verifica as seguintes condições:
O tamanho do registro corresponde ao tamanho de pelo menos um registro de dados.
Cada campo no layout pode provavelmente descrever os dados.
Para cada layout de registro que atende ambas condições, o utilitário cria um registro e uma tabela para o layout e atribui um valor RID ao registro.
Para cada layout de registro que não atende ambas condições, o utilitário realiza uma das seguintes ações, dependendo de como você define o elemento excludeUnmatchedRecords:
Se excludeUnmatchedRecords = verdadeiro, o utilitário excluirá o layout do mapa de dados.
Se excludeUnmatchedRecords = falso ou não estiver definido, o utilitário criará um registro e uma tabela para o layout, mas não atribuirá um valor RID ao registro.
O utilitário usa os seguintes princípios:
Esta etapa é bem-sucedida quando há pelo menos um layout de registro correspondente para cada tipo de registro de dados, ou seja, para cada valor RID conhecido. Esse resultado não será garantido se o número de layouts de registro gerado, limitado por maxRedefines, for menor que o número de tipos de registro de dados.
Vários layouts de registros podem corresponder a um único registro de dados. Todos esses layouts correspondentes são incluídos no mapa de dados. É possível abrir o mapa de dados no Navegador do PowerExchange para exibir e selecionar o registro correto.
Os seguintes elementos no arquivo de controle configura o processamento da etapa 3:
CopybookParserConfig.maxRedefines. O número máximo de redefinições é o limite máximo no número gerado de layouts de registros; portanto, o número máximo de layouts de registros para fazer a correspondência com registros de dados.
excludeUnmatchedRecords. Se for verdadeiro, gerará um registro de mapa de dados somente para os layouts para os quais o utilitário localiza uma ID de registro de dados válida.