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 com ON 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.