home *** CD-ROM | disk | FTP | other *** search
- program Nests;
-
- { This program demonstrates that, to some extent, nested
- procedures do seem to work. The compiler will accept them
- just fine, but does not always produce the right code. The
- only problems, as mentioned in the docs, are that 1) you
- might end up with duplicate ID's in the assembly output, and
- 2) when you try to access a local variable of a parent
- procedure or function, the compiler gets the proper offset,
- but uses the activation frame of the current procedure, rather
- than its parent, as it should. }
-
- var
- first : Integer;
-
- procedure outermost;
- var
- first : char;
-
- procedure inner;
- var
- first : short;
-
- procedure innermost;
- var
- first : integer;
- begin
- first := 42;
- writeln('In innermost, first = ', first);
- end;
-
- begin
- first := 67;
- innermost;
- writeln('In inner, first = ', first);
- end;
-
- begin
- first := 'r';
- inner;
- writeln('In outermost, first = ', first);
- end;
-
- begin
- first := 78;
- outermost;
- writeln('In main program, first is ', first);
- end.
-
-