COBOL - Common processing facilities



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Common processing facilities
Enterprise COBOL for z/OS, V4.2, Language Reference

Existem várias instalações de processamento comuns que se aplicam a mais de uma instrução de entrada e saída.
As instalações de processamento comuns fornecidas são:

As discussões nas seções a seguir usam os termos volume e bobina.
O termo volume refere-se a todos os dispositivos de entrada e saída sem registro de unidade.
O termo bobina se aplica apenas a dispositivos de fita.
O tratamento de dispositivos de acesso direto no modo de acesso seqüencial é logicamente equivalente ao tratamento de dispositivos de fita.

File status key - Chave de status do arquivo

Se a cláusula FILE STATUS for especificada na entrada de controle de arquivo, um valor será colocado na chave de status do arquivo especificado (o item de dados de dois caracteres nomeado na cláusula FILE STATUS) durante a execução de qualquer solicitação nesse arquivo; o valor indica o status dessa solicitação.
O valor é colocado na chave de status do arquivo antes da execução de qualquer frase EXCEPTION/ERROR declarativa, INVALID KEY ou AT END associada à solicitação.

Existem dois nomes de dados da chave de status do arquivo.
Um é descrito por data-name-1 na cláusula FILE STATUS da entrada de controle de arquivo.
Este é um item de dados de dois caracteres com o primeiro caractere conhecido como chave de status do arquivo 1 e o segundo caractere conhecido como chave de status do arquivo 2.
As combinações de valores possíveis e seus significados são mostrados na Tabela 1.

A outra chave de status do arquivo é descrita por data-name-8 na cláusula FILE STATUS da entrada de controle de arquivo.
data-name-8 não se aplica aos arquivos QSAM.
Para mais informações sobre dados-nome-8, consulte FILE STATUS clause.

Tabela 1. Valores e significados da chave de status do arquivo

Dígito de alta ordem Significado Dígito de baixa ordema Significado
0 Conclusão bem sucedida 0 Nenhuma informação adicional
2 Esse valor de status do arquivo se aplica apenas a arquivos indexados com chaves alternativas que permitem duplicatas.

A instrução de entrada e saída foi executada com êxito, mas uma chave duplicada foi detectada.
Para uma instrução READ, o valor da chave da chave de referência atual era igual ao valor da mesma chave no próximo registro da chave de referência atual.
Para uma instrução REWRITE ou WRITE, o registro recém-criado criou um valor de chave duplicado para pelo menos uma chave de registro alternativa para a qual duplicatas são permitidas.

4 Uma instrução READ foi executada com êxito, mas o comprimento do registro sendo processado não estava em conformidade com os atributos de arquivo fixos para esse arquivo.
5 Uma instrução OPEN é executada com êxito, mas o arquivo opcional referenciado não está disponível no momento em que a instrução OPEN é executada.
O arquivo foi criado se o modo aberto for I-O ou EXTEND.
Isso não se aplica aos arquivos seqüenciais do VSAM.
7 Para uma instrução CLOSE com a frase NO REWIND, REEL / UNIT ou FOR REMOVAL ou para uma instrução OPEN com a frase NO REWIND, o arquivo referenciado estava em um meio que não é da bobina / unidade.
1 Condição AT-END 0 Uma instrução READ seqüencial foi tentada e nenhum próximo registro lógico existia no arquivo porque o final do arquivo foi atingido.
Ou a primeira leitura foi tentada em um arquivo de entrada opcional que não estava disponível.
4 Foi tentada uma instrução READ seqüencial para um arquivo relativo e o número de dígitos significativos no número de registro relativo era maior que o tamanho do item de dados-chave relativo descrito para o arquivo.
2 Condição de chave inválida 1 Existe um erro de sequência para um arquivo indexado acessado sequencialmente.
O valor da chave de registro principal foi alterado pelo programa entre a execução bem-sucedida de uma instrução READ e a execução da próxima instrução REWRITE para esse arquivo.
Ou os requisitos ascendentes para valores sucessivos de chave de registro foram violados.
2 Foi feita uma tentativa de gravar um registro que criaria uma chave duplicada em um arquivo relativo.
Ou foi feita uma tentativa de gravar ou reescrever um registro que criaria uma chave de registro principal duplicada ou uma chave de registro alternativa duplicada sem a frase DUPLICATES em um arquivo indexado.
3 Foi feita uma tentativa de acessar aleatoriamente um registro que não existe no arquivo.
Ou foi tentada uma instrução START ou READ aleatória em um arquivo de entrada opcional que não estava disponível.
4 Foi feita uma tentativa de gravar além dos limites definidos externamente de um arquivo relativo ou indexado.
Ou uma instrução WRITE seqüencial foi tentada para um arquivo relativo e o número de dígitos significativos no número de registro relativo foi maior que o tamanho do item de dados-chave relativo descrito para o arquivo.
3 Condição de erro permanente 0 Nenhuma informação adicional
4 Existe um erro permanente devido a uma violação de limite; foi feita uma tentativa de gravar além dos limites definidos externamente de um arquivo seqüencial.
5 Uma instrução OPEN com a frase INPUT, I-O ou EXTEND foi tentada em um arquivo não opcional que não estava disponível.
7 Uma instrução OPEN foi tentada em um arquivo que não suporta o modo de abertura especificado na instrução OPEN. As possíveis violações são:
  • A frase EXTEND ou OUTPUT foi especificada, mas o arquivo não suporta operações de gravação.
  • A frase I-O foi especificada, mas o arquivo não suporta as operações de entrada e saída permitidas.
  • A frase INPUT foi especificada, mas o arquivo não suporta operações de leitura.
8 Uma instrução OPEN foi tentada em um arquivo anteriormente fechado com bloqueio (with lock).
9 A instrução OPEN não teve êxito porque foi detectado um conflito entre os atributos do arquivo fixo e os atributos especificados para esse arquivo no programa.
Esses atributos incluem a organização do arquivo (seqüencial, relativo ou indexado), a chave de registro principal, as chaves de registro alternativas, o conjunto de códigos, o tamanho máximo de registro, o tipo de registro (fixo ou variável) e o fator de bloqueio.
4 Condição de erro lógico 1 Uma instrução OPEN foi tentada para um arquivo no modo aberto.
2 Foi tentada uma instrução CLOSE para um arquivo que não está no modo aberto.
3 Para um arquivo de armazenamento em massa no modo de acesso seqüencial, a última instrução de entrada e saída executada para o arquivo associado antes da execução de uma instrução REWRITE não era uma instrução READ executada com êxito.

Para arquivos relativos e indexados no modo de acesso seqüencial, a última instrução de entrada e saída executada para o arquivo antes da execução de uma instrução DELETE ou REWRITE não era uma instrução READ executada com êxito.

4 Existe uma violação de limite porque foi feita uma tentativa de reescrever um registro em um arquivo e o registro não era do mesmo tamanho que o registro sendo substituído.
Ou foi feita uma tentativa de gravar ou reescrever um registro maior que o maior ou menor que o menor permitido pela cláusula RECORD IS VARYING do nome do arquivo associado.
6 Uma instrução READ sequencial foi tentada em um arquivo aberto no modo de entrada ou I-O e nenhum próximo registro válido foi estabelecido porque:
  • A instrução READ anterior não teve êxito, mas não causou uma condição final.
  • A instrução READ anterior causou uma condição no final.
7 A execução de uma instrução READ foi tentada em um arquivo não aberto no modo de entrada ou I-O.
8 A execução de uma instrução WRITE foi tentada em um arquivo não aberto no modo I-O, saída ou extensão.
9 A execução de uma instrução DELETE ou REWRITE foi tentada em um arquivo não aberto no modo I-O.
9 Condição definida pelo implementador 0
  • Somente para multithreading: Foi tentado um CLOSE de um arquivo VSAM ou QSAM em um encadeamento que não abriu o arquivo.
  • Sem multithreading: Somente para VSAM: Consulte as informações sobre códigos de retorno do VSAM em Usando códigos de status do VSAM (somente arquivos VSAM) no Enterprise COBOL Programming Guide.
  • Arquivos QSAM: Não há mais informações disponíveis.
    Consulte a mensagem de erro DFSMS para obter mais informações.
1 Somente para VSAM: falha na senha
2 Erro lógico
3 Para todos os arquivos, exceto QSAM: Recurso indisponível
5 Para todos os arquivos, exceto QSAM: informações de arquivo inválidas ou incompletas
6 Para arquivo VSAM:
Foi tentada uma instrução OPEN com a frase OUTPUT ou uma instrução OPEN com a frase I-O ou EXTEND para um arquivo opcional, mas nenhuma instrução DD foi especificada para o arquivo.

Para o arquivo QSAM:
Foi tentada uma instrução OPEN com a frase OUTPUT ou uma instrução OPEN com a frase I-O ou EXTEND para um arquivo opcional, mas nenhuma instrução DD foi especificada para o arquivo e a opção de tempo de execução CBLQDA (OFF) foi especificada.

7 Somente para VSAM: execução da instrução OPEN bem-sucedida:
integridade do arquivo verificada
8 Falha na abertura devido ao conteúdo inválido de uma variável de ambiente especificada em uma cláusula SELECT ... ASSIGN ou devido a falha na alocação dinâmica. Para mais informações sobre o conteúdo das variáveis de ambiente, consulte cláusula ASSIGN.

Invalid key condition

A condição de chave inválida pode ocorrer durante a execução de uma instrução START, READ, WRITE, REWRITE ou DELETE.
Quando ocorre uma condição de chave inválida, a instrução de entrada e saída que causou a condição é mal sucedida.

Quando a condição de chave inválida é reconhecida, as ações são executadas na seguinte ordem:

  1. Se a cláusula FILE STATUS for especificada na entrada de controle de arquivo, um valor será colocado na chave de status do arquivo para indicar uma condição de chave inválida, conforme mostrado na Tabela 1.

  2. Se a frase INVALID KEY for especificada na instrução que causou a condição, o controle será transferido para a instrução imperativa INVALID KEY.
    Qualquer procedimento declarativo de EXCEPTION/ERROR especificado para este arquivo não é executado.
    A execução continua de acordo com as regras para cada declaração especificada na declaração imperativa.

  3. Se a frase INVALID KEY não for especificada na instrução de entrada e saída de um arquivo e existir um procedimento EXCEPTION/ERROR aplicável, esse procedimento será executado. A frase NOT INVALID KEY, se especificada, é ignorada.

A frase INVALID KEY e o procedimento EXCEPTION/ERROR podem ser omitidos.

Se a condição de chave inválida não existir após a execução da operação de entrada e saída, a frase INVALID KEY será ignorada, se especificada, e as seguintes ações serão executadas:

  • Se existir uma condição de exceção que não seja uma condição de chave inválida, o controle será transferido de acordo com as regras da instrução USE após a execução de qualquer procedimento USE AFTER EXCEPTION.
  • Se nenhuma condição de exceção existir, o controle será transferido para o final da instrução de entrada e saída ou a instrução imperativa especificada na frase NOT INVALID KEY, se for especificada.

INTO and FROM phrases

As frases INTO e FROM são válidas para as instruções READ, RETURN, RELEASE, REWRITE e WRITE.

Você deve especificar um identificador que seja o nome de uma entrada na WORKING-STORAGE SECTION ou na LINKAGE SECTION ou de uma descrição do registro para outro arquivo aberto anteriormente.

  • record-name-1 e identifier-1 não devem se referir à mesma área de armazenamento.
  • Se o record-name-1 ou o identifier-1 se referir a um item do grupo national, o item será processado como um item de dados elementar da categoria national.
  • A frase INTO pode ser especificada em uma instrução READ ou RETURN.

    O resultado da execução de uma instrução READ ou RETURN com a frase INTO é equivalente à aplicação das seguintes regras na ordem especificada:

    • A execução da mesma instrução READ ou RETURN sem a frase INTO.
    • O registro atual é movido da área de registro para a área especificada pelo identificador-1 de acordo com as regras da instrução MOVE sem a frase CORRESPONDING.
      O tamanho do registro atual é determinado pelas regras especificadas na cláusula RECORD.
      Se a entrada de descrição do arquivo contiver uma cláusula RECORD IS VARYING, a movimentação implícita será uma movimentação de grupo.
      A instrução MOVE implícita não ocorre se a execução da instrução READ ou RETURN não tiver êxito.
      Qualquer assinatura ou modificação de referência associada ao identifier-1 é avaliada após a leitura ou retorno do registro e imediatamente antes de ser movido para o item de dados.
      O registro está disponível na área de registro e no item de dados referenciado pelo identifier-1.
  • A frase FROM pode ser especificada em uma instrução RELEASE, REWRITE ou WRITE.

    O resultado da execução de uma instrução RELEASE, REWRITE ou WRITE com a frase FROM é equivalente à execução das seguintes instruções na ordem especificada:

    1. MOVE identifier-1 TO record-name-1
    2. A mesma instrução RELEASE, REWRITE ou WRITE sem a frase FROM

    Após a conclusão da instrução RELEASE, REWRITE ou WRITE, as informações na área referenciada pelo identifier-1 ficam disponíveis, embora as informações na área referenciada pelo record-name-1 estejam indisponíveis, exceto conforme especificado pelo cláusula SAME RECORD AREA.

File position indicator

O indicador de posição do arquivo é uma entidade conceitual usada neste documento para facilitar a especificação exata do próximo registro a ser acessado em um determinado arquivo durante certas sequências de operações de entrada e saída.
A configuração do indicador de posição do arquivo é afetada apenas pelas instruções OPEN, CLOSE, READ e START.
O conceito de um indicador de posição do arquivo não tem significado para um arquivo aberto no modo de saída (output) ou extensão (extend).




© Copyright IBM Corp.