A instrução OPEN no COBOL é usada para iniciar o uso de arquivos, colocando-os em modo aberto e preparando-os para leitura, gravação ou ambos. É essencial antes de qualquer operação de entrada/saída (READ, WRITE, REWRITE etc.).

📌 Para que serve

  • Abrir arquivos para leitura (INPUT), escrita (OUTPUT), leitura e escrita (I-O) ou acréscimo (EXTEND).

  • Verificar a disponibilidade do arquivo.

  • Preparar a área de registro associada ao arquivo.

🧾 Sintaxe básica

OPEN INPUT arquivo.
OPEN OUTPUT arquivo.
OPEN I-O arquivo.
OPEN EXTEND arquivo.

Você pode abrir mais de um arquivo na mesma instrução:

OPEN INPUT ARQ-ENTRADA
     OUTPUT ARQ-SAIDA.

✅ Exemplo prático

SELECT ARQUIVO-ENTRADA ASSIGN TO "entrada.txt"
       ORGANIZATION IS LINE SEQUENTIAL.

FD ARQUIVO-ENTRADA
   01 REGISTRO-ENTRADA PIC X(80).

PROCEDURE DIVISION.
    OPEN INPUT ARQUIVO-ENTRADA.
    READ ARQUIVO-ENTRADA INTO REGISTRO-ENTRADA.
    DISPLAY REGISTRO-ENTRADA.
    CLOSE ARQUIVO-ENTRADA.
    STOP RUN.

 

⚙️ Modos de abertura e permissões

Modo Permite Quando usar
INPUT Apenas leitura Leitura de arquivos existentes
OUTPUT Apenas escrita Criação e sobrescrita de arquivos
I-O Leitura e escrita Arquivos já existentes e modificáveis
EXTEND Adição no fim Adicionar registros no final de arquivos sequenciais

📑 Comportamentos importantes

  • OUTPUT apaga o conteúdo anterior do arquivo.

  • EXTEND posiciona após o último registro.

  • REVERSED e WITH NO REWIND são aceitos, mas não têm efeito.

  • O arquivo precisa estar definido em uma entrada FD na Divisão de Dados.

  • O modo I-O não é válido para arquivos sequenciais de linha.

⚠️ Regras importantes

  • Arquivos opcionais (com SELECT OPTIONAL) podem ser abertos mesmo que não existam.

  • O OPEN não lê nem escreve automaticamente — ele apenas posiciona o arquivo.

  • Para reabrir um arquivo, é necessário fechá-lo primeiro com CLOSE (sem LOCK).

  • O uso de FILE STATUS permite capturar o código de erro da tentativa de abertura.

  • Tentar abrir um arquivo já aberto aciona o procedimento de erro (se existir).

🧠 Dicas práticas

  • Sempre use FILE STATUS para maior controle de erro:

SELECT ARQ-ENTRADA ASSIGN TO ...
       FILE STATUS IS STATUS-ARQ.
  • Quando usar EXTEND, certifique-se de que a gravação será sempre no final do arquivo.

📊 Tabela rápida de comandos permitidos por modo

Comando INPUT OUTPUT I-O EXTEND
READ    
WRITE  
REWRITE      
DELETE      
START    

✅ Conclusão

A instrução OPEN é fundamental para o processamento de arquivos no COBOL. Saber utilizá-la corretamente garante que os arquivos sejam tratados no modo adequado, evitando perda de dados, erros inesperados e assegurando a integridade do processamento batch ou online.