program test0(input, output); (* to test Wirth's PascalS *) type arr = array[1..3, 'a'..'c'] of real; rec = record i:integer; r:real; ch:char end; var aa:arr; rr:rec; i:integer; v1, v2 :real; procedure a; var v3:real; procedure b; var v4:real; begin (*b*) v4:=4+v1+v2+v3; (* check the non local vars *) write(v1, v2, v3, v4) end (*b*); begin (*a*) v3:=3; b end (*a*); procedure c; var v5:real; procedure d; var v6:real; begin (*d*) v6:=6; a end (*d*); begin (*c*) v5:=5; d end (*c*); function fact(i:integer):integer; begin if i=0 then fact:=1 else fact:=i*fact(i-1) end; procedure zero(var i:integer); (* var param *) begin i:=0 end; begin (*main*) v1:=1; v2:=2; c; if v1=v2 then write('=') else write('<>'); (* check code for statements *) for i:=1 to 3 do case i of 1: write('one'); 2: write('two'); 3: write('three') end; while v1