O comando CLOSE
finaliza o uso de um arquivo aberto, liberando sua área de registro e atualizando seu status. Após o CLOSE
, é necessário um novo OPEN
antes de qualquer operação de entrada/saída (I/O).
📌 Para que serve
-
Finaliza o uso de um arquivo aberto.
-
Libera recursos associados ao arquivo.
-
Atualiza o FILE STATUS, se declarado.
-
Garante integridade dos dados gravados em disco.
🧾 Sintaxe básica
CLOSE nome-do-arquivo.
🔒 Com opção de bloqueio
CLOSE nome-do-arquivo WITH LOCK.
Garante que o arquivo não será reaberto dentro da mesma unidade de execução, mesmo por outros programas que o compartilhem.
📋 Regras e observações importantes
-
A instrução
CLOSE
só pode ser usada em arquivos abertos. -
Após o
CLOSE
, a área de registro associada ao arquivo não estará mais disponível. -
Um
OPEN
deve ser feito novamente antes de qualquerREAD
,WRITE
,REWRITE
, etc. -
Caso não se feche explicitamente o arquivo, ele será fechado implicitamente ao final da execução do programa.
-
Arquivos definidos com
SELECT OPTIONAL
e que não existem no tempo de execução não geram erro ao serem fechados.
📂 Atualização do FILE STATUS
Se o FILE STATUS
foi declarado para o arquivo, a variável será atualizada automaticamente com o código de encerramento.
🚨 Erros e exceções
Se ocorrer erro durante o CLOSE
, o programa executará o parágrafo de exceção definido com USE AFTER ERROR PROCEDURE
, se declarado.
📎 Exemplo completo
SELECT ARQ-CLIENTE ASSIGN TO "clientes.dat"
FILE STATUS IS WS-FS-CLIENTE.
FD ARQ-CLIENTE.
01 REG-CLIENTE PIC X(100).
WORKING-STORAGE SECTION.
01 WS-FS-CLIENTE PIC XX.
PROCEDURE DIVISION.
OPEN INPUT ARQ-CLIENTE
READ ARQ-CLIENTE AT END
DISPLAY "FIM DO ARQUIVO".
CLOSE ARQ-CLIENTE.
✅ Conclusão
A instrução CLOSE
é fundamental para a boa prática de manipulação de arquivos em COBOL. Encerrar corretamente um arquivo garante a liberação de recursos do sistema, evita corrupção de dados e permite controle eficaz do ciclo de vida de entrada/saída. Lembre-se: cada arquivo aberto deve ser fechado, preferencialmente com controle de erros e verificação de FILE STATUS
.