program TestPascal(input, output); {test some features of Pascal, ie. test the compiler} {L.Allison, Computer Science, Monash University, 1992} label 99; type alfa = packed array [1..10] of char; procedure Line; var i :1..80; begin writeln; for i := 1 to 79 do write('-'); writeln end; procedure Error(m:alfa); begin Line; writeln('Error: ', m); goto 99 end; procedure Assertion(b :boolean; m :alfa); begin if not b then Error(m) end; procedure Test(m :alfa; procedure P); begin Line; writeln('Test ', m); P; Line end; {-----------------------------------------------------------------------------} procedure PFA(i, j:integer; r:real; var iv:integer); begin write('PFA(', i:1, ',', j:1, ',', r:5:2, ',', iv:1, ') '); iv:=iv+1 end; procedure ProcFormal; var i, j, n :integer; x :real; procedure PFB(m, n:integer; x:real; var nv:integer); begin write('PFB(', m:1, ',', n:1, ',', x:5:2, ',', nv:1, ') '); nv:=nv+1 end; procedure ProcF( procedure PF(i, j:integer; r:real; var iv:integer); intval :integer; var intvar :integer ); begin write('ProcF: '); PF(i, intval, x, intvar); writeln(' intvar=',intvar:1) end; procedure ProcG; var k, n :integer; procedure PFC(i, j:integer; r:real; var iv:integer); begin write('PFA2(', i:1, ',', j:1, ',', r:5:2, ',', iv:1, ') '); iv:=iv+1 end; begin k:=22; n:=56; ProcF( PFC, k, n ); writeln(' n=', n:1); Assertion(n=57, 'n<>57 ') end; begin {ProcFormal} i:=1; j:=2; x:= 3.4; n:=5; ProcF( PFA, j, n ); ProcF( PFB, j, n ); writeln(' n=', n:1); Assertion( n=7, 'n<>7 '); ProcG end {ProcFormal}; {-----------------------------------------------------------------------------} begin {main} Test('ProcFormal', ProcFormal); 99: writeln('Finish') end.