0 program test0(input, output); 0 (* to test Wirth's PascalS *) 0 0 type arr = array[1..3, 'a'..'c'] of real; 0 rec = record i:integer; r:real; ch:char end; 0 0 var aa:arr; 0 rr:rec; 0 i:integer; 0 v1, v2 :real; 0 0 procedure a; 0 var v3:real; 0 procedure b; 0 var v4:real; 0 begin (*b*) 0 v4:=4+v1+v2+v3; (* check the non local vars *) 10 write(v1, v2, v3, v4) 18 end (*b*); 18 begin (*a*) 19 v3:=3; 23 b 23 end (*a*); 25 25 procedure c; 26 var v5:real; 26 procedure d; 26 var v6:real; 26 begin (*d*) 26 v6:=6; 30 a 30 end (*d*); 33 begin (*c*) 34 v5:=5; 38 d 38 end (*c*); 40 40 function fact(i:integer):integer; 41 begin if i=0 then fact:=1 else fact:=i*fact(i-1) 55 end; 59 59 procedure zero(var i:integer); (* var param *) 60 begin i:=0 62 end; 63 63 begin (*main*) 64 v1:=1; v2:=2; 72 c; 74 74 if v1=v2 then write('=') else write('<>'); (* check code for statements *) 83 for i:=1 to 3 do 87 case i of 89 1: write('one'); 92 2: write('two'); 95 3: write('three') 97 end; 106 while v1onetwothree3!= 6 172 steps