| Bellacosa Mainframe e o comando compute no cobol |
O que é o Comando COMPUTE em COBOL?
O comando COMPUTE é uma das instruções mais importantes do COBOL para realizar:
cálculos matemáticos;
fórmulas financeiras;
operações aritméticas;
expressões complexas.
Ele foi criado para simplificar operações que antes exigiam vários comandos separados.
O que faz o COMPUTE?
O COMPUTE permite:
calcular uma expressão matemática completa em uma única instrução.
Sintaxe básica
COMPUTE resultado = expressão
Exemplo:
COMPUTE WS-TOTAL = WS-VALOR1 + WS-VALOR2
Exemplo simples
Sem COMPUTE:
ADD WS-VALOR1 TO WS-VALOR2 GIVING WS-TOTAL
Com COMPUTE:
COMPUTE WS-TOTAL =
WS-VALOR1 + WS-VALOR2
Operações suportadas
Soma
COMPUTE WS-TOTAL =
WS-A + WS-B
Subtração
COMPUTE WS-SALDO =
WS-CREDITO - WS-DEBITO
Multiplicação
COMPUTE WS-TOTAL =
WS-QUANTIDADE * WS-PRECO
Divisão
COMPUTE WS-MEDIA =
WS-SOMA / WS-QTD
Potência
COMPUTE WS-RESULTADO =
WS-VALOR ** 2
Operadores matemáticos
| Operador | Significado |
|---|---|
| + | Soma |
| - | Subtração |
| * | Multiplicação |
| / | Divisão |
| ** | Potência |
Exemplo de expressão complexa
COMPUTE WS-RESULTADO =
(WS-A + WS-B)
* WS-C
/ WS-D
Ordem de precedência
O COBOL segue regras matemáticas normais:
()
**
* /
+ -
Exemplo
COMPUTE WS-TOTAL =
10 + 20 * 3
Resultado:
70
Porque:
20 * 3 = 60
60 + 10 = 70
Usando parênteses
COMPUTE WS-TOTAL =
(10 + 20) * 3
Resultado:
90
COMPUTE com valores monetários
Muito comum em sistemas bancários.
COMPUTE WS-JUROS =
WS-SALDO * WS-TAXA
Exemplo financeiro
COMPUTE WS-VALOR-FINAL =
WS-VALOR +
(WS-VALOR * WS-PERCENTUAL / 100)
COMPUTE com COMP-3
Extremamente comum.
01 WS-SALDO PIC S9(7)V99 COMP-3.
01 WS-JUROS PIC S9(5)V99 COMP-3.
01 WS-TOTAL PIC S9(9)V99 COMP-3.
COMPUTE WS-TOTAL =
WS-SALDO + WS-JUROS
COMPUTE e Funções Intrínsecas
Podem ser usados juntos.
Exemplo:
COMPUTE WS-RAIZ =
FUNCTION SQRT(625)
Resultado:
25
Exemplo com ABS
COMPUTE WS-VALOR =
FUNCTION ABS(-500)
Resultado:
500
COMPUTE com CURRENT-DATE
MOVE FUNCTION CURRENT-DATE
TO WS-DATA
Embora CURRENT-DATE normalmente seja usado com MOVE, ele também pode participar de expressões.
ON SIZE ERROR
Muito importante.
Detecta estouro de campo.
Exemplo:
COMPUTE WS-TOTAL =
WS-A * WS-B
ON SIZE ERROR
DISPLAY 'ERRO DE TAMANHO'
END-COMPUTE
O que é Size Error?
Quando o resultado não cabe no campo.
Exemplo:
Campo:
PIC 9(3)
Máximo:
999
Resultado calculado:
1500
Ocorre:
SIZE ERROR
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
COMPUTE WS-TOTAL =
WS-SALARIO + WS-BONUS
DISPLAY WS-TOTAL
STOP RUN.
Saída:
6000.00
COMPUTE vs ADD
ADD:
ADD A TO B GIVING C
COMPUTE:
COMPUTE C = A + B
COMPUTE vs MULTIPLY
MULTIPLY:
MULTIPLY A BY B GIVING C
COMPUTE:
COMPUTE C = A * B
Vantagens do COMPUTE
Código mais legível
Menos instruções
Expressões complexas
Fácil manutenção
Mais próximo da matemática tradicional
Cuidados
Verificar tamanho dos campos.
Usar ON SIZE ERROR quando necessário.
Atenção com casas decimais.
Validar divisões por zero.
Onde o COMPUTE é mais usado?
Praticamente em todos os sistemas COBOL:
bancos;
cartões;
seguros;
folha salarial;
faturamento;
cálculo de juros;
cálculo de impostos.
Curiosidade
Antes do COMPUTE, muitos cálculos exigiam combinações de:
ADD
SUBTRACT
MULTIPLY
DIVIDE
O COMPUTE trouxe uma sintaxe muito mais próxima das fórmulas matemáticas tradicionais.
Resumo rápido
| Comando | Função |
|---|---|
| COMPUTE | Executa cálculos |
| + | Soma |
| - | Subtração |
| * | Multiplicação |
| / | Divisão |
| ** | Potência |
| ON SIZE ERROR | Trata estouro |
| FUNCTION | Usa funções intrínsecas |
Conclusão
O comando COMPUTE é a principal instrução de cálculo do COBOL. Ele permite executar operações matemáticas simples ou complexas de forma clara, legível e eficiente, sendo amplamente utilizado em aplicações financeiras e sistemas corporativos executados em mainframes IBM Z.
Sem comentários:
Enviar um comentário