begin
comment This example fails with marst 2.3 because of incorrect
generation of references to procedure blocks in some rare cases
(however it works with marst 2.4). This program was provided by
Jan van Katwijk <J.vanKatwijk@ITS.TUDelft.NL>;
comment Note that due to very deep recursion at run-time the stack
size should be large enough (about 8 Mb);
integer I;
integer procedure a (K, X1, X2, X3, X4, X5);
value K; integer K, X1, X2, X3, X4, X5;
begin
integer procedure b;
begin
K := K - 1;
a := b := a (K, b, X1, X2, X3, X4)
end;
if K <= 0 then a := X4 + X5 else b
end;
for I := 1 step 1 until 15 do
begin
OUTINTEGER (1, a (I, 1, -1, -1 , 1 , 1));
OUTSTRING (1, "\N")
end
end