| 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
| Comando | Função |
|---|---|
| ADD | Soma |
| SUBTRACT | Subtração |
| MULTIPLY | Multiplicação |
| DIVIDE | Divisão |
| GIVING | Guarda resultado |
| ON SIZE ERROR | Trata estouro |
| COMPUTE | Fó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.