Hallo zusammen,

ich habe ein seltsames Phänomen auf unserer Anlage:

Der Fachbereich hat moniert dass Rechnungsbeträge nicht stimmen. Es gibt Rundungsdifferenzen.

Im Source habe ich eine Beispielkonstellation angegeben:



// ctl-opt option(*nodebugio); // mit *nodebugio richtig ohne falsch

dcl-s prs packed(11:2) inz(5390); // Tausenderpreis
dcl-s mng packed(9:0) inz(340); // Menge
dcl-s sum packed(9:2) inz(0); // Gesamtpreis

// 5390,00 / 1000 * 340 = 1832,60 <> 1832,59 !!!
sum = prs / 1000 * mng;
dsply '' '' sum;

*inlr = *on;



Ich hätte folgendes Ergebnis erwartet:

5390,00 / 1000 * 340 = 1832,6

Errechnet wurde 1832,59.

Und jetzt wird’s komisch: Nachdem ich die die Compiler Anweisung „ctl-opt option(*nodebugio);“ hinzufüge rechnet das Programm richtig.

Könnt ihr den Fehler nachvollziehen?

Wir fahren 7.1 mit aktuellem PTF Stand.

Freundliche Grüße
Stefan