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 MOVE por 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 REDEFINES ou 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 INITIALIZE simula diversos MOVE para cada item elementar.

  • A ordem de inicialização segue a ordem de definição dos campos.

  • Se identifier-1 e identifier-2 compartilharem 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.