COBOL - Precisão nos cálculos de resultados intermediários - www.cadcobol.com.br


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Precisão nos cálculos de resultados intermediários

O compilador usa algoritmos para determinar o número de casas inteiras e decimais reservadas para os resultados intermediários.

Na discussão a seguir de como o compilador determina o número de casas interias e decimais reservadas para os resultados intermediários, essas abreviações são usadas:

    i
  • O número de casas inteiras transportadas para um resultado intermediário.
    d
  • O número de casas decimais transportadas para um resultado intermediário.
    ROUNDED
  • Se a opção ROUNDED é usado, uma ou mais casas inteiras ou decimais podem ser adicionadas para a exatidão, se necessário.
    Apenas os resultados finais são arredondados;
    os resultados intermediários não são arredondados. 62 dígitos é o número máximo de dígitos que podem ser precisamente arredondado.
    dmax
  • Em uma declaração particular, o maior de:
    • O número de casas decimais necessárias para o campo de resultado final (s).
    • O número máximo de casas decimais definido para qualquer operando, exceto divisores ou expoentes.
    • O outer-dmax para qualquer operando função.
    inner-dmax
  • O inner-dmax para uma função é o maior de:
    • O número de casas decimais definidas para qualquer um de seus argumentos elementares.
    • O dmax para qualquer um dos seus argumentos expressão aritmética.
    • O outer-dmax para qualquer de suas funções incorporadas.
    outer-dmax
  • O número que determina como um resultado da função contribui para operações fora de sua própria avaliação.

    Por exemplo:


    Se a função é um operando em uma expressão aritmética ou um argumento para outra função.
    • op1
    • O primeiro operando em um comando aritmética gerado. Para a divisão, op1 é o divisor.
      op2
    • O segundo operando em um comando aritmética gerado. Para a divisão, op2 é o dividendo.
      i1,i2
    • O número de casas inteiras em op1 e op2, respectivamente
      d1,d2
    • O número de casas decimais definido para op1 e op2, respectivamente.
      ir
    • Campo de resultado intermediário obtido do processamento de uma instrução aritmética geradas ou operação.
      Resultados intermediários são representados por IR1, IR2, e assim por diante.
      Sucessivos resultados intermediários podem compartilhar o mesmo local de memória.

Abaixo, usamos a instrução COMPUTE para demonstrar o uso de resultados intermediários em uma expressão aritmética.

Neste caso, o seguinte comando:

COMPUTE Y = A + B * C - D / E + F ** G
É substituído por e o resultado é calculado na seguinte ordem:

F ** G
gerando ir1
MULTIPLY B BY C gerando ir2
DIVIDE E INTO D gerando ir3
ADD A TO ir2 gerando ir4
SUBTRACT ir3 FROM ir4 gerando ir5
ADD ir5 TO ir1 gerando Y