A instrução INITIALIZE no COBOL é usada para atribuir valores padrão a campos de dados, substituindo a necessidade de múltiplos comandos MOVE. Ela permite inicializar registros inteiros de maneira padronizada e eficiente.
📌 Para que serve
-
Limpar ou zerar campos de memória.
-
Inicializar grupos ou itens individuais com espaços ou zeros.
-
Evitar resíduos de memória em variáveis.
-
Substituir várias instruções
MOVEpor uma única instrução mais legível.
🧾 Sintaxe básica
INITIALIZE identificador-1
[REPLACING categoria-1 BY identificador-2 | literal-1]
🧠 Categorias de dados aceitas
| Categoria | Valor padrão sem REPLACING | Com REPLACING (valor fornecido) |
|---|---|---|
| ALPHABETIC | SPACE | Valor definido |
| ALPHANUMERIC | SPACE | Valor definido |
| ALPHANUMERIC-EDITED | SPACE | Valor definido |
| NATIONAL | SPACE (Unicode) | Valor definido |
| NATIONAL-EDITED | SPACE (Unicode) | Valor definido |
| NUMERIC | ZERO | Valor definido |
| NUMERIC-EDITED | ZERO | Valor definido |
| DBCS / EGCS | SPACE | Valor definido |
✅ Exemplos
Exemplo 1: Inicializando um grupo
INITIALIZE DADOS-CLIENTE.
Todos os campos numéricos recebem ZERO e os alfanuméricos recebem SPACE.
Exemplo 2: Inicializando com REPLACING
INITIALIZE DADOS-VENDA
REPLACING NUMERIC BY 9
ALPHANUMERIC BY "*".
Os campos numéricos recebem 9 e os alfanuméricos recebem asteriscos.
🚫 Itens que NÃO são inicializados
-
Campos com
REDEFINESou subordinados a eles. -
Campos
FILLER. -
Ponteiros (
USAGE IS POINTER,FUNCTION-POINTER,PROCEDURE-POINTER). -
Índices (
USAGE IS INDEX). -
Referências de objeto (
USAGE IS OBJECT REFERENCE).
📍 Regras importantes
-
O
INITIALIZEsimula diversosMOVEpara cada item elementar. -
A ordem de inicialização segue a ordem de definição dos campos.
-
Se
identifier-1eidentifier-2compartilharem a mesma área de memória, o comportamento será indefinido.
✅ Conclusão
A instrução INITIALIZE é uma forma prática e legível de limpar áreas de dados no COBOL. Além de substituir múltiplos comandos MOVE, ela promove organização e reduz a chance de erros. O uso da cláusula REPLACING ainda permite personalizar a inicialização conforme a categoria dos dados, tornando o código mais flexível e expressivo.