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
eWITH 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
(semLOCK
). -
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.