AS / 400: Usando a função COMPUTE, resultados inconsistentes com diferentes definições de campo

Eu enfrentei um problema misterioso ao usar a função COMPUTE no AS / 400.

O cenário é o seguinte:

01  WSAA-AMOUNT-A               PIC S9(15)V9(02) COMP-3.
01  WSAA-AMOUNT-B-01            PIC S9(16)V9(02) VALUE 0.
01  WSAA-AMOUNT-B-02            PIC S9(13)V9(05) VALUE 0.
01  WSAA-AMOUNT-C               PIC S9(16)V9(02) VALUE 0.
01  WSAA-RESULT                 PIC S9(15)V9(02) VALUE 0.

MOVE 2500.87             TO WSAA-AMOUNT-A. 
MOVE 12285               TO WSAA-AMOUNT-B-01.
MOVE 12285               TO WSAA-AMOUNT-B-02.
MOVE 4387.5              TO WSAA-AMOUNT-C. 

COMPUTE WSAA-RESULT ROUNDED = (WSAA-AMOUNT-A / ( WSAA-AMOUNT-B-01 + WSAA-AMOUNT-C) * 100 ).
DISPLAY WSAA-RESULT.

COMPUTE WSAA-RESULT ROUNDED = (WSAA-AMOUNT-A / ( WSAA-AMOUNT-B-02 + WSAA-AMOUNT-C) * 100 ).
DISPLAY WSAA-RESULT.

Os resultados me surpreenderam que o resultado da primeira fórmula = 14,90 enquanto o segundo se tornou = 15

Parece que o mais tarde é mais lógico como 2500.87 / (12285 + 4387.5) * 100 = 14.99997001. Espero que o resultado do primeiro resultado também seja 15 após o arredondamento.

Alguém sabe qual é a causa raiz desses resultados inconsistentes?

questionAnswers(1)

yourAnswerToTheQuestion