program Stack(input, output); var global1, global2 :integer; p1, p2, p3 : ^integer; procedure peek(var a, b :integer); external; procedure stacking; var outer :integer; function fact(n :integer) :integer; var local :integer; begin local := 99900+n; if n<=1 then begin peek(outer, local); fact:=1 end else fact:=n*fact(n-1) end; begin outer := 1111; writeln('fact(3)=', fact(3):1) end; begin writeln('STACK:'); stacking; writeln('GLOBALS:'); global1:=1234; global2:=4321; peek(global1, global2); writeln('HEAP:'); new(p1); new(p2); p1^:= 12345; p2^:=54321; new(p3); p3^:=56789; dispose(p2); peek(p1^,p3^) end.