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