begin;
    comment 
        this example was provided by Bob Tennent 
        to demonstrate non-trivial using call-by-name parameters., this
        program doesn't work properly with nase-a60 interpreter, however,
        it does work with the marst translator.,
        for further discussion see:
        J.C.Reynolds. Syntactic control of interference. In: Conference
        Record of the 5th Annual ACM Symposium on Principles of Programming
        Languages, pp.39-46, Tucson, Arizona, January 1978. ACM, New York.
        P.W.O'Hearn and R.D.Tennent. Parametricity and local variables.
        J.ACM, 42(3):658-709, May 1995. Preliminary version appeared in
        Proceedings of POPL 93
    ;
    procedure MAKECOUNTER(USER);
      procedure USER;
    begin;
        integer N;
        procedure INC;
        begin;
            N := N - 1;
        end ;
        N := 0;
        USER(-N, INC);
    end ;
    procedure MYUSER(VAL, INC);
      integer VAL;
      procedure INC;
    begin;
        INC;
        INC;
        OUTINTEGER(1, VAL);
        INC;
        INC;
        OUTINTEGER(1, VAL);
    end ;
    MAKECOUNTER(MYUSER);
    OUTSTRING(1, "\n");
end ;