A instrução MOVE no COBOL transfere valores de uma origem (campo ou literal) para um destino (campo), sendo uma das operações mais básicas e essenciais da linguagem. É usada para atribuir valores entre variáveis, com conversões automáticas entre tipos compatíveis.

📌 Para que serve

  • Atribuir valores de um literal ou variável para outro campo.

  • Inicializar variáveis com valores fixos ou dinâmicos.

  • Fazer atribuições diretas entre campos, mesmo com PICTUREs diferentes.

  • Usar qualificação para indicar variáveis com o mesmo nome em estruturas diferentes.

🧾 Sintaxe básica

MOVE literal TO campo-destino.
MOVE campo-origem TO campo-destino.
MOVE campo-1 TO campo-2 OF estrutura-B.
MOVE texto(2:3) TO abreviacao.

✅ Exemplo prático

01 NOME-COMPLETO   PIC X(30).
01 TEXTO-INICIAL   PIC X(11) VALUE "COBOL DICAS".

MOVE TEXTO-INICIAL TO NOME-COMPLETO.
DISPLAY NOME-COMPLETO.

Resultado: COBOL DICAS (seguido por espaços)

⚙️ Como funciona internamente

  • O MOVE converte automaticamente tipos compatíveis (ex: de numérico para alfanumérico e vice-versa).

  • MOVE realiza alinhamento à esquerda, com preenchimento de espaços ou zeros conforme o tipo de destino.

  • Quando o tamanho do campo de origem for menor que o destino, o COBOL preenche o restante.

  • Quando for maior, o valor é truncado para caber no destino.

⚠️ Regras importantes

  • MOVE só aceita um destino por vez.

  • Não suporta CORRESPONDING (para isso, use a instrução apropriada).

  • Não permite uso direto com campos de data com janela (DATE FORMAT).

  • Não pode ser usado com variáveis descartadas por otimização do compilador.

  • Não altera campos com USAGE IS POINTER, FUNCTION-POINTER, PROCEDURE-POINTER ou OBJECT REFERENCE.

🔄 Tipos de conversão automática

De → Para Conversão automática
Alfanumérico → Numérico Sim (se compatível)
Numérico → Alfanumérico Sim
Nacional → Nacional Sim
Alfanumérico ↔ Nacional Conversão via Unicode

🧠 Dicas práticas

  • Para copiar pedaços de strings, use modificação de referência:

MOVE A(2:3) TO B.  *> Move 3 caracteres a partir da posição 2
  • Para campos com qualificação:
MOVE X OF GRUPO-A TO X OF GRUPO-B.
  • Use com tabelas:
MOVE "JOSE" TO CLIENTE-NOME(1).

 

✅ Conclusão

A instrução MOVE é o coração da atribuição de dados no COBOL. Apesar de simples, é extremamente poderosa e versátil, permitindo movimentar dados com segurança e clareza entre variáveis. Combinada com outras instruções como INITIALIZE, INSPECT e STRING, forma a base da manipulação de dados na linguagem.