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
ouOBJECT 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.