program pptest13; { procedure parameters } procedure p1 (i1: integer; var j1: integer; procedure p2; function f1: integer; procedure p3(i2: integer; var j2: integer); function f2(i2: integer): integer); begin i1 := f1; j1 := f1; p2; p3(i1, j1); i1 := f2(f1) end { p1 }; procedure p2; forward; function f1: integer; forward; function f2(i3: integer): integer; begin f2 := i3 + 1 end; { f2} procedure p3(i2: integer; var j2: integer); forward; procedure p4; var i, j: integer; begin p3(i, j); p1(i, j, p2, f1, p3, f2); end { p4 }; procedure p2; begin end; { p2 } function f1 ; begin f1 := 0 end; { f1} procedure p3; begin end; { p3 } procedure p5; var i, j: integer; begin p3(i, j); p1(i, j, p2, f1, p3, f2); end { p5 }; begin { main program } p4; p5 end { pptest13}.