Translate

Mostrar mensagens com a etiqueta LOW-VALUES. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta LOW-VALUES. Mostrar todas as mensagens

domingo, 4 de março de 2007

O que é o Comando MOVE em COBOL?

 

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

ComandoFunção
MOVECopia dados
MOVE CORRESPONDINGCopia campos iguais
MOVE SPACESPreenche espaços
MOVE ZEROESPreenche zeros
MOVE HIGH-VALUESMaior valor hexadecimal
MOVE LOW-VALUESMenor valor hexadecimal
MOVE ALLRepete 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.