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; ; 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;