the bug should be only in windows OS
my test evnironment is win2k and win xp.
they are not work well.
I have try those compiler:
Gnat 3.15 p / mingw 3.42 / mingw 4.1
--the test code is
With Ada.Text_Io;
Procedure Trading Is
Type Price Is Delta 0.01 Digits 18;
Type PriceArray Is Array (Positive Range <>) Of price;
Procedure Avg (Data : In PriceArray) Is
Avg, Sum : Price'Base := 0.0;
Begin
Ada.Text_Io.Put ("average:" );
For Index In Data'Range Loop
Sum := Sum + Data (Index);
End Loop;
Avg := Sum / Data'Length;
Ada.Text_Io.Put (Price'Image (Avg));
Ada.Text_Io.New_Line;
Exception
When Others =>
Ada.Text_Io.Put_Line ("error here!");
End;
Begin
For Index In Reverse 0 .. 9 Loop
For Step In 1 .. 3 Loop
Declare
Mydata : Pricearray (1 .. Index) := (Others => 10.0);
Begin
Avg (Mydata);
End;
End Loop;
End Loop;
end Trading;
----end the test code
--
Summary: fixed point error cause Ada exception block does NOT
work
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kuan_long at hotmail dot com
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23514