Saturday 21 December 2024

ROUNDED

Após o alinhamento do ponto decimal, o número de lugares na fração do resultado de uma operação aritmética é comparado com o número de lugares fornecidos para a fração do identificador resultante.

Quando o tamanho do resultado fracionário excede o número de locais fornecidos para seu armazenamento, o truncamento ocorre a menos que ROUNDED for especificado. Quando ROUNDED é especificado, o dígito menos significativo do identificador resultante é aumentado em 1 sempre que o dígito mais significativo do excesso for maior ou igual a 5.

Quando o identificador resultante é descrito por uma cláusula PICTURE que contém o Ps mais à direita e quando o número de posições no resultado calculado excede o número de posições inteiras especificadas, arredondamento ou truncamento ocorre relativamente à posição inteira mais à direita para a qual o armazenamento é alocado.

Em uma operação aritmética de ponto flutuante, ROUNDED não tem efeito; O resultado de uma operação de ponto flutuante é sempre arredondado.

Quando a opção de compilador ARITH (EXTEND) está em vigor, ROUNDED não é suportada para receptores aritméticos com posições de 31 dígitos à direita do ponto decimal.

Por exemplo, nem X nem Y abaixo é válido como um receptor com ROUNDED:

01  X PIC V31.
01  Y PIC P(30)9(1).
    . . .
    COMPUTE X ROUNDED = A + B
    COMPUTE Y ROUNDED = A - B

Caso contrário, ROUNDED é totalmente suportada para declarações aritméticas de precisão estendida.