- Postagens: 68
- Obrigados Recebidos: 5
Discussões sobre a linguagem COBOL e suas melhores práticas.
Como resolver FILE STATUS 39 em programas COBOL
- bopnet
-
Autor do Tópico
- Desconectado
- Administrador
-
- I'm free!
Less
Mais
4 dias 8 horas atrás #131
por bopnet
COBOL is not DEAD!
Como resolver FILE STATUS 39 em programas COBOL foi criado por bopnet
O FILE STATUS 39 ocorre quando existe alguma incompatibilidade entre as características do arquivo definidas no programa COBOL e as características reais do arquivo ou dataset utilizado durante a execução.
Em outras palavras, o programa espera encontrar um arquivo com determinada organização, tamanho ou formato de registro, mas o arquivo apresentado possui características diferentes.
Entre as causas mais comuns estão:
Na FILE SECTION:
Nesse exemplo, o registro possui 76 posições. Portanto, o arquivo utilizado precisa ser compatível com essa definição.
O tratamento do status pode ser feito da seguinte forma:
Para investigar o FILE STATUS 39, verifique:
Você já encontrou o FILE STATUS 39 em algum programa COBOL? Qual era a incompatibilidade e como resolveu?
Em outras palavras, o programa espera encontrar um arquivo com determinada organização, tamanho ou formato de registro, mas o arquivo apresentado possui características diferentes.
Entre as causas mais comuns estão:
- LRECL diferente do tamanho definido na FD;
- Divergência entre registros fixos e variáveis;
- ORGANIZATION diferente da organização real do arquivo;
- Definição incorreta da chave de um arquivo indexado;
- Uso de arquivo criado com características diferentes das esperadas;
- DDNAME do JCL associado ao arquivo errado;
- Diferença entre a definição do arquivo no programa e no catálogo;
- Alteração do copybook sem recriação ou ajuste do arquivo.
Code:
SELECT ARQUIVO-CLIENTES
ASSIGN TO CLIENTES
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
Code:
FD ARQUIVO-CLIENTES
RECORDING MODE IS F.
01 REGISTRO-CLIENTE.
05 CLIENTE-CODIGO PIC 9(06).
05 CLIENTE-NOME PIC X(40).
05 CLIENTE-CIDADE PIC X(30).
O tratamento do status pode ser feito da seguinte forma:
Code:
OPEN INPUT ARQUIVO-CLIENTES
IF WS-FILE-STATUS NOT = "00"
DISPLAY "ERRO NA ABERTURA DO ARQUIVO"
DISPLAY "FILE STATUS: " WS-FILE-STATUS
STOP RUN
END-IF
- O tamanho total do registro definido na FD;
- O LRECL e o RECFM do dataset;
- A cláusula ORGANIZATION;
- A definição da chave, caso o arquivo seja indexado;
- O DDNAME utilizado pelo programa;
- Se o arquivo foi recriado depois de alguma alteração no layout;
- Se programa, copybook e arquivo estão utilizando a mesma versão do layout.
Você já encontrou o FILE STATUS 39 em algum programa COBOL? Qual era a incompatibilidade e como resolveu?
COBOL is not DEAD!
Por favor Entrar ou Registrar para participar da conversa.