program NestedProcedures (output); procedure main(); procedure foo(); begin writeln('hello'); { This would fail here: writeln(x); } end; var x : integer; begin x := 2; foo(); end; begin main(); end.