A instrução REWRITE
no COBOL serve para substituir logicamente um registro existente em arquivos de acesso direto (indexado ou relativo). É usada após um READ
bem-sucedido e só funciona com arquivos abertos no modo I-O.
📌 Para que serve
-
Atualizar um registro existente com novos dados.
-
Substituir um registro após leitura sem alterar a posição no arquivo.
-
Manter a lógica do arquivo sem recriar registros manualmente.
🧾 Sintaxe básica
REWRITE nome-do-registro.
REWRITE nome-do-registro FROM identificador.
Com tratamento de erro:
REWRITE nome-do-registro
INVALID KEY
procedimento-em-caso-de-erro
NOT INVALID KEY
procedimento-quando-ok
END-REWRITE.
✅ Exemplo prático
READ ARQ-CLIENTE
AT END
DISPLAY "Cliente não encontrado"
NOT AT END
MOVE "SUSPENSO" TO STATUS-CLIENTE
REWRITE REG-CLIENTE
INVALID KEY
DISPLAY "Erro ao atualizar"
END-REWRITE
END-READ.
⚙️ Definições e comportamentos
Elemento | Definição |
---|---|
record-name-1 |
Nome do registro lido e que será substituído. |
FROM identifier |
Move os dados do identificador para o registro antes de reescrevê-lo. |
INVALID KEY |
Tratamento caso a substituição falhe. |
NOT INVALID KEY |
Código executado quando a substituição for bem-sucedida. |
END-REWRITE |
Delimita escopo da instrução (recomendado com lógica condicional). |
📌 Requisitos e restrições
-
O arquivo deve estar aberto com I-O.
-
Só pode ser usada após um
READ
bem-sucedido. -
Para arquivos sequenciais, a quantidade de bytes do registro deve ser idêntica.
-
Para arquivos indexados ou relativos, os tamanhos podem variar.
🧠 Dicas práticas
-
Não tente usar
REWRITE
com arquivos abertos em INPUT ou EXTEND. -
A variável que contém os novos dados (se usar
FROM
) continua intacta após a execução. -
Se o modo de acesso for aleatório, verifique se a
RECORD KEY
ouRELATIVE KEY
está correta antes doREWRITE
. -
Use
FILE STATUS
para capturar códigos de erro se preferir não usarINVALID KEY
.
✅ Conclusão
A instrução REWRITE
é essencial para atualizações diretas de registros em arquivos COBOL. Usando corretamente, permite modificar registros com segurança, mantendo a integridade da organização do arquivo e permitindo controle total do processo de entrada e saída em sistemas mainframe ou ambientes legados.