Fórum — COBOL Dicas

Conhecimento que atravessa gerações. Compartilhe o que você sabe.

Como resolver FILE STATUS 39 em programas COBOL

Publicado

Publicação inicial

05/09/2026 01:59 · Publicado

#119
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:
  • 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.

Exemplo de definição com FILE STATUS:
Código · COBOL
       SELECT ARQUIVO-CLIENTES
           ASSIGN TO CLIENTES
           ORGANIZATION IS SEQUENTIAL
           FILE STATUS IS WS-FILE-STATUS.


Na FILE SECTION:
Código
       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).


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:
Código · COBOL
       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


Para investigar o FILE STATUS 39, verifique:
  1. O tamanho total do registro definido na FD;
  2. O LRECL e o RECFM do dataset;
  3. A cláusula ORGANIZATION;
  4. A definição da chave, caso o arquivo seja indexado;
  5. O DDNAME utilizado pelo programa;
  6. Se o arquivo foi recriado depois de alguma alteração no layout;
  7. Se programa, copybook e arquivo estão utilizando a mesma versão do layout.

Em ambientes mainframe, também é importante consultar as mensagens do job no spool. Muitas vezes, a mensagem complementar apresenta detalhes que não aparecem somente no FILE STATUS.
Você já encontrou o FILE STATUS 39 em algum programa COBOL? Qual era a incompatibilidade e como resolveu?
Agradecimentos: 0 Entre para agradecer