| Bellacosa Mainframe e o comando move em cobol |
O que é o Comando MOVE em COBOL?
O comando MOVE é um dos comandos mais utilizados em COBOL.
Sua função é simples:
copiar dados de um campo para outro.
Praticamente todo programa COBOL utiliza MOVE para:
transferir valores;
inicializar variáveis;
mover dados de arquivos;
preencher layouts;
preparar registros para gravação.
Sintaxe básica
MOVE origem TO destino
Exemplo simples
MOVE 100 TO WS-SALDO
Resultado:
WS-SALDO = 100
Movendo texto
MOVE 'BELLACOSA'
TO WS-NOME
Resultado:
WS-NOME = BELLACOSA
Movendo entre variáveis
MOVE WS-SALDO-ATUAL
TO WS-SALDO-ANTERIOR
Analogia simples
Imagine um operador copiando um documento de uma pasta para outra.
O MOVE faz exatamente isso:
ORIGEM
↓
DESTINO
Exemplo completo
WORKING-STORAGE SECTION.
01 WS-NOME PIC X(20).
01 WS-CLIENTE PIC X(20).
PROCEDURE DIVISION.
MOVE 'VAGNER'
TO WS-NOME
MOVE WS-NOME
TO WS-CLIENTE
DISPLAY WS-CLIENTE
STOP RUN.
Saída:
VAGNER
MOVE Numérico
MOVE 5000
TO WS-SALARIO
MOVE Decimal
MOVE 1234.56
TO WS-VALOR
MOVE entre formatos diferentes
COBOL realiza conversões automáticas em muitos casos.
Exemplo:
01 WS-TEXTO PIC X(5).
01 WS-NUM PIC 9(5).
MOVE WS-NUM TO WS-TEXTO
MOVE para grupos
Uma característica poderosa do COBOL.
01 CLIENTE.
05 NOME PIC X(20).
05 IDADE PIC 9(3).
01 CLIENTE-BKP PIC X(23).
MOVE CLIENTE
TO CLIENTE-BKP
Move toda a estrutura.
MOVE CORRESPONDING
Também chamado:
MOVE CORR
Move campos com o mesmo nome.
Exemplo
01 CLIENTE-A.
05 NOME PIC X(20).
05 IDADE PIC 9(3).
01 CLIENTE-B.
05 NOME PIC X(20).
05 IDADE PIC 9(3).
MOVE CORRESPONDING CLIENTE-A
TO CLIENTE-B
O que acontece?
NOME → NOME
IDADE → IDADE
Automaticamente.
MOVE HIGH-VALUES
Preenche com o maior valor hexadecimal.
MOVE HIGH-VALUES
TO WS-CAMPO
Muito usado em:
VSAM;
inicialização;
pesquisas.
MOVE LOW-VALUES
Preenche com o menor valor hexadecimal.
MOVE LOW-VALUES
TO WS-CAMPO
MOVE SPACES
Preenche com espaços.
MOVE SPACES
TO WS-NOME
Equivalente:
MOVE ' '
TO WS-NOME
MOVE ZEROES
Preenche com zeros.
MOVE ZEROES
TO WS-SALDO
MOVE ALL
Repete um valor.
MOVE ALL '*'
TO WS-LINHA
Resultado:
********************
MOVE em arquivos
Muito usado antes do WRITE.
MOVE WS-NOME
TO NOME-SAIDA
WRITE REG-SAIDA
MOVE em DB2
Muito usado para preencher host variables.
MOVE WS-CPF
TO HV-CPF
MOVE em CICS
Também extremamente comum.
MOVE WS-MENSAGEM
TO MSG-AREA
Cuidados com MOVE
Truncamento
Campo menor que origem.
Exemplo:
PIC X(5)
Recebendo:
BELLACOSA
Resultado:
BELLA
Perda de casas decimais
MOVE 123.99
TO PIC 9(3)
Pode perder precisão.
Conversões inválidas
Mover texto para numérico pode gerar erro lógico.
MOVE vs COMPUTE
MOVE:
MOVE 100 TO WS-A
Apenas copia.
COMPUTE:
COMPUTE WS-A = 50 + 50
Calcula.
MOVE vs ADD
MOVE:
MOVE 100 TO WS-A
Substitui conteúdo.
ADD:
ADD 100 TO WS-A
Soma ao conteúdo existente.
Onde o MOVE é utilizado?
Praticamente em todos os programas COBOL:
Batch;
CICS;
DB2;
VSAM;
Arquivos QSAM;
APIs;
Processamento financeiro.
Curiosidades
1. MOVE é provavelmente o comando mais utilizado do COBOL
2. Alguns sistemas executam milhões de MOVEs por segundo
3. MOVE CORRESPONDING é muito usado em sistemas corporativos
4. Grande parte da integração entre layouts depende de MOVE
Resumo rápido
| Comando | Função |
|---|---|
| MOVE | Copia dados |
| MOVE CORRESPONDING | Copia campos iguais |
| MOVE SPACES | Preenche espaços |
| MOVE ZEROES | Preenche zeros |
| MOVE HIGH-VALUES | Maior valor hexadecimal |
| MOVE LOW-VALUES | Menor valor hexadecimal |
| MOVE ALL | Repete conteúdo |
Conclusão
O comando MOVE é a principal instrução de transferência de dados do COBOL. Ele permite copiar informações entre variáveis, registros e estruturas de forma simples, eficiente e segura, sendo um dos pilares de praticamente todos os sistemas executados em mainframes IBM Z.