Translate

Mostrar mensagens com a etiqueta COMPUTE. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta COMPUTE. Mostrar todas as mensagens

sábado, 3 de março de 2007

O que são ADD, SUBTRACT, MULTIPLY e DIVIDE em COBOL?

 

Bellacosa Mainframe e os comandos de calculo no COBOL

O que são ADD, SUBTRACT, MULTIPLY e DIVIDE em COBOL?

Antes do comando COMPUTE se popularizar, os cálculos em COBOL eram realizados principalmente através de quatro verbos aritméticos clássicos:

  • ADD

  • SUBTRACT

  • MULTIPLY

  • DIVIDE

Esses comandos fazem parte do COBOL desde suas primeiras versões e continuam sendo amplamente utilizados em sistemas batch e online.


ADD

O comando ADD realiza:

soma de valores.


Sintaxe básica

ADD valor-1 TO valor-2

Exemplo:

ADD 100 TO WS-SALDO

Se WS-SALDO era:

500

Passará a ser:

600

Usando GIVING

ADD WS-A WS-B
    GIVING WS-TOTAL

Exemplo:

WS-A = 10
WS-B = 20

Resultado:

WS-TOTAL = 30

SUBTRACT

O comando SUBTRACT realiza:

subtração.


Sintaxe básica

SUBTRACT valor-1
    FROM valor-2

Exemplo:

SUBTRACT 100
    FROM WS-SALDO

Se WS-SALDO era:

500

Resultado:

400

Com GIVING

SUBTRACT WS-DESCONTO
    FROM WS-VALOR
    GIVING WS-LIQUIDO

MULTIPLY

O comando MULTIPLY realiza:

multiplicação.


Sintaxe básica

MULTIPLY valor-1
    BY valor-2

Exemplo:

MULTIPLY 10
    BY WS-TOTAL

Se WS-TOTAL era:

50

Resultado:

500

Com GIVING

MULTIPLY WS-QTD
    BY WS-PRECO
    GIVING WS-TOTAL

Exemplo

QTD   = 5
PRECO = 100

Resultado:

500

DIVIDE

O comando DIVIDE realiza:

divisão.


Sintaxe básica

DIVIDE valor-1
    INTO valor-2

Exemplo

DIVIDE 2
    INTO WS-TOTAL

Se WS-TOTAL era:

100

Resultado:

50

Forma mais usada

DIVIDE WS-SOMA
    BY WS-QTD
    GIVING WS-MEDIA

Exemplo

SOMA = 100
QTD  = 5

Resultado:

MEDIA = 20

ON SIZE ERROR

Todos os comandos matemáticos podem usar:

ON SIZE ERROR

Exemplo:

ADD WS-A TO WS-B

   ON SIZE ERROR
      DISPLAY 'ERRO'
END-ADD

END-ADD

COBOL moderno permite fechamento explícito.

ADD WS-A TO WS-B
END-ADD

END-SUBTRACT

SUBTRACT WS-A
    FROM WS-B
END-SUBTRACT

END-MULTIPLY

MULTIPLY WS-A
    BY WS-B
END-MULTIPLY

END-DIVIDE

DIVIDE WS-A
    INTO WS-B
END-DIVIDE

Exemplo completo

WORKING-STORAGE SECTION.

01 WS-SALARIO     PIC 9(7)V99.
01 WS-BONUS       PIC 9(5)V99.
01 WS-TOTAL       PIC 9(7)V99.

PROCEDURE DIVISION.

    MOVE 5000 TO WS-SALARIO
    MOVE 1000 TO WS-BONUS

    ADD WS-BONUS
        TO WS-SALARIO
        GIVING WS-TOTAL

    DISPLAY WS-TOTAL

    STOP RUN.

Resultado:

6000.00

Comparação com COMPUTE

ADD

ADD A TO B GIVING C

Equivalente:

COMPUTE C = A + B

SUBTRACT

SUBTRACT A FROM B
GIVING C

Equivalente:

COMPUTE C = B - A

MULTIPLY

MULTIPLY A BY B
GIVING C

Equivalente:

COMPUTE C = A * B

DIVIDE

DIVIDE A INTO B
GIVING C

Equivalente:

COMPUTE C = B / A

Quando usar ADD, SUBTRACT, MULTIPLY e DIVIDE?

Muitos sistemas legados COBOL utilizam esses comandos porque:

  • são extremamente claros;

  • seguem o padrão COBOL clássico;

  • facilitam manutenção de sistemas antigos.


Quando usar COMPUTE?

Quando a fórmula for mais complexa:

COMPUTE WS-TOTAL =
       (WS-A + WS-B)
       * WS-C
       / WS-D

Curiosidade

Durante décadas, praticamente todos os sistemas bancários COBOL foram escritos usando:

ADD
SUBTRACT
MULTIPLY
DIVIDE

O comando COMPUTE tornou-se popular posteriormente por deixar as fórmulas mais próximas da matemática tradicional.


Resumo rápido

ComandoFunção
ADDSoma
SUBTRACTSubtração
MULTIPLYMultiplicação
DIVIDEDivisão
GIVINGGuarda resultado
ON SIZE ERRORTrata estouro
COMPUTEFórmulas completas

Conclusão

ADD, SUBTRACT, MULTIPLY e DIVIDE são os verbos aritméticos clássicos do COBOL. Eles continuam presentes em milhões de linhas de código executadas diariamente em mainframes IBM Z, especialmente em aplicações financeiras, bancárias e de processamento batch.