A cláusula ROUNDED
no COBOL é utilizada para controlar o arredondamento dos resultados de operações aritméticas. Quando o valor calculado possui mais casas decimais do que o campo pode armazenar, o ROUNDED
garante que o valor seja arredondado corretamente em vez de apenas truncado.
📌 Para que serve
-
Evitar perda de precisão em operações com casas decimais.
-
Arredondar o resultado de operações como
ADD
,SUBTRACT
,MULTIPLY
,DIVIDE
,COMPUTE
. -
Melhorar a confiabilidade de cálculos financeiros e científicos.
🧾 Sintaxe básica
COMPUTE resultado ROUNDED = valor-1 + valor-2.
ADD valor-1 TO resultado ROUNDED.
SUBTRACT valor-2 FROM resultado ROUNDED.
DIVIDE valor-1 INTO resultado ROUNDED.
MULTIPLY valor-1 BY resultado ROUNDED.
✅ Exemplo prático
01 SALARIO-BRUTO PIC 9(5)V99 VALUE 2345.78.
01 DESCONTO PIC 9(5)V99 VALUE 1234.89.
01 SALARIO-LIQUIDO PIC 9(5)V99.
COMPUTE SALARIO-LIQUIDO ROUNDED = SALARIO-BRUTO - DESCONTO.
DISPLAY "Salário líquido: ", SALARIO-LIQUIDO.
📌 Sem ROUNDED
o resultado seria truncado: 1110.88
📌 Com ROUNDED
o resultado será arredondado: 1110.89
⚙️ Como funciona internamente
Situação | Com ROUNDED | Sem ROUNDED (default) |
---|---|---|
Resultado: 1110.884 | 1110.89 | 1110.88 |
Resultado: 123.455 | 123.46 | 123.45 |
Resultado: 98.499 | 98.50 | 98.49 |
⚠️ Regras importantes
-
Só tem efeito quando o resultado tem mais casas decimais do que o campo pode armazenar.
-
Não funciona com campos de ponto flutuante (
FLOAT
,DOUBLE
). -
Não funciona com campos que possuam 31 casas decimais à direita do ponto decimal (ARITH EXTEND).
-
Para que funcione corretamente, o campo de resultado precisa estar definido com casas decimais no
PIC
.
🧠 Dicas práticas
-
Sempre que estiver lidando com valores monetários, use ROUNDED.
-
Evita surpresas desagradáveis em cálculos financeiros ou de precisão crítica.
-
Combine
ROUNDED
comON SIZE ERROR
para uma proteção ainda maior:
COMPUTE VALOR-FINAL ROUNDED = VALOR-INICIAL * TAXA
ON SIZE ERROR
DISPLAY "Erro de tamanho!".
✅ Conclusão
A cláusula ROUNDED
é um recurso simples, mas poderoso para garantir precisão nos cálculos COBOL, especialmente quando há limitação no número de casas decimais. Ignorá-la pode causar pequenas discrepâncias que somadas afetam a confiabilidade de um sistema financeiro, bancário ou contábil.