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
-
OUTPUTapaga o conteúdo anterior do arquivo. -
EXTENDposiciona após o último registro. -
REVERSEDeWITH NO REWINDsã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-Onão é válido para arquivos sequenciais de linha.
⚠️ Regras importantes
-
Arquivos opcionais (com
SELECT OPTIONAL) podem ser abertos mesmo que não existam. -
O
OPENnão lê nem escreve automaticamente — ele apenas posiciona o arquivo. -
Para reabrir um arquivo, é necessário fechá-lo primeiro com
CLOSE(semLOCK). -
O uso de
FILE STATUSpermite 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 STATUSpara 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.