.PR POINT,NOLIST .PR
.CO THE WICHMAN BENCHMARK .CO 
.BEGIN
 .MODE .ARR = [1 : 4] .REAL;
 .REAL X1,X2,X3,X4,X,Y,Z,T1,T2,T, 
 .INT I,J,K,L,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11, 
 .ARR E1; 
 .PROC PA = (.REF .ARR E) .VOID:  
 .BEGIN 
 .INT J;
 J := 0;
.WHILE J < 6 .DO
 E[1] := (E[1] + E[2] + E[3] - E[4]) * T; 
 E[2] := (E[1] + E[2] - E[3] + E[4]) * T; 
 E[3] := (E[1] - E[2] + E[3] + E[4]) * T; 
 E[4] := ( - E[1] + E[2] + E[3] + E[4]) / T2; 
 J := J + 1 
.OD 
 .END; # OF PA #
 .PROC P0 = .VOID:  
 .BEGIN 
 E1[J] := E1[K];
 E1[K]:= E1[L]; 
 E1[L] := E1[J] 
 .END; # OF P0# 
 .PROC P3 = (.REAL X,Y, .REF .REAL Z) .VOID : 
 .BEGIN 
.REAL X1 := X, Y1 := Y; 
 X1 := T*(X1+Y1); 
 Y1 := T*(X1+Y1); 
 Z := (X1+Y1) / T2
 .END; # OF P3# 
 T := 0.499975; T1 := 0.50025; T2 := 2.0; 
.CO  READ(I); .CO I := 2; 
 N1 := 0; N2 := 12*I; N3 := 14*I; N4 :=345*I;N5 :=0;
 N6 := 210*I;N7 := 32*I; N8 :=899*I;N9 :=616*I; 
 N10 := 0; N11 := 93*I; 
 # MODULE 1: SIMPLE IDENTIFIERS#
 X1 := 1.0; 
 X2 := X3 := X4 := -1.0;
 .FOR I .TO N1 .DO
 X1 := (X1 + X2 + X3 - X4)*T; 
 X2 := (X1 + X2 - X3 + X4)*T; 
 X3 := (X1 - X2 + X3 + X4)*T; 
 X4 := ( - X1 + X2 + X3 + X4)*T 
 .OD; 
 PRINT ((N1,N1,N1,X1,X2,X3,X4, NEWLINE)); 
 # MODULE 2: ARRAY ELEMENTS#
 E1[1] := 1.0;
 E1[2] := E1[3] := E1[4] := -1.0; 
 .FOR I .TO N2 .DO
 E1[1] := (E1[1] + E1[2] + E1[3] - E1[4])*T;
 E1[2] := (E1[1] + E1[2] - E1[3] + E1[4])*T;
 E1[3] := (E1[1] - E1[2] + E1[3] + E1[4])*T;
 E1[4] := ( - E1[1] + E1[2] + E1[3] + E1[4])*T
 .OD; 
 PRINT ((N2,N3,N2)); .FOR I .TO 4 .DO PRINT(E1[I]) .OD; PRINT((NEWLINE)); 
 #MODULE 3: ARRAY AS PARAMETER# 
 .FOR I .TO N3 .DO PA(E1) .OD;
 PRINT ((N3,N2,N2)); .FOR I .TO 4 .DO PRINT(E1[I]) .OD; PRINT((NEWLINE)); 
 #MODULE 4: CONDITIONAL JUMPS#
 J := 1;
 .FOR I .TO N4 .DO
 .IF J = 1 .THEN J := 2 
 .ELSE J := 3 .FI;
 .IF J > 2 .THEN J := 0 
 .ELSE J := 1 .FI;
 .IF J < 1 .THEN J := 1 
 .ELSE J := 0 .FI 
 .OD; 
 PRINT ((N4,J,J,X1,X2,X3,X4, NEWLINE)); 
 # MODULE 5: OMITTED# 
 # MODULE 6: INTEGER ARITHMETIC#
 J := 1; K := 2; L := 3;
 .FOR I .TO N6 .DO
 J := J*(K-J)*(L-K);
 K := L*K - (L-J)*K;
 L := (L-K)*(K+J);
 E1[L-1] := J+K+L;
 E1[K-1] := J*K*L 
 .OD; 
 PRINT ((N6,J,K)); .FOR I .TO 4 .DO PRINT(E1[I]) .OD; PRINT((NEWLINE)); 
 #MODULE 7: TRIG FUNCTIONS# 
 X := Y := 0.5; 
 .FOR I .TO N7 .DO
 X := T*ARCTAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1.0)); 
 Y := T*ARCTAN(T2*SIN(Y)*COS(Y)/(COS(X+Y)+COS(X-Y)-1.0))
 .OD; 
 PRINT ((N7,J,K,X,X,Y,Y, NEWLINE)); 
 #MODULE 8: PROCEDURE CALLS#
 X := Y := Z := 1.0;
 .FOR I .TO N8 .DO P3(X,Y,Z) .OD; 
 PRINT ((N8,J,K,X,Y,Z,Z, NEWLINE));  #MODULE 9: ARRAY REFERENCES# 
 J :=1; K :=2; L :=3; 
 E1[1]:=1.0;E1[2] :=2.0;E1[3] :=3.0;
 .FOR I .TO N9 .DO P0 .OD;
 PRINT ((N9,J,K)); .FOR I .TO 4 .DO PRINT(E1[I]) .OD; PRINT((NEWLINE)); 
 #MODULE 10: INTEGER ARITHMETIC#
 J :=2;K :=3; 
 .FOR I .TO N10 .DO 
 J := J+K;K :=J+K;J := K-J;K := K-J-J 
.OD;
 PRINT((N10,J,K,X1,X2,X3,X4, NEWLINE)); 
 #MODULE 11: STANDARD FUNCTIONS#
X := 0.75;
.FOR I .TO N11 .DO
 X := SQRT(EXP(LN(X)/T1)) 
 .OD; 
 PRINT ((N11,J,K,X,X,X,X, NEWLINE)) 
 .END