(* The Great Win32 Language Shootout http://dada.perl.it/shootout/
contributed by Isaac Gouy (Modula2 novice)
To compile: xc =m ary3
To run: ary3 7000
*)
MODULE Ary3;
<* m2extensions + *>
<* storage + *>
<* ioverflow - *>
<* noptralias + *>
<* checkdindex - *>
<* checknil - *>
(* Prefer unqualified procedures *)
FROM LanguageShootout IMPORT N;
FROM STextIO IMPORT WriteString, WriteLn;
FROM SWholeIO IMPORT WriteInt;
TYPE
Array_Type = ARRAY OF INTEGER;
Array_Ptr_Type = POINTER TO Array_Type;
VAR
n, i, m, j: INTEGER;
x, y: Array_Ptr_Type;
BEGIN
n := N();
NEW(x, n);
NEW(y, n);
FOR i := 0 TO INT(HIGH(x^)) DO
x^[i] := i+1;
y^[i] := 0;
END;
m := HIGH(y^);
FOR j := 1 TO 1000 DO
FOR i := 0 TO m DO
INC(y^[i], x^[i]);
END;
END;
WriteInt(y^[0],1); WriteInt(y^[HIGH(y^)],0); WriteLn;
DISPOSE(x);
DISPOSE(y);
END Ary3.