begin
   comment LIBRARY 1;
   integer
     I,
     CASE;
   boolean
     B;
   real
     X;
   integerprocedure P(K, Q);
      value
        K;
      integer
        K;
        integerprocedure
        Q;
        comment (X1) : 'VALUE' X1 : 'REAL' X1 ;
      P ≔         if K = 1 then
        Q(I)
      else if K = 2 then
        Q(B)
      else if K = 3 then
        Q(X)
      else
        Q(Q(20));
   integerprocedure Q1(I);
      value
        I;
      integer
        I;
      Q1 ≔ 100 + I;
   integerprocedure Q2(B);
      value
        B;
      boolean
        B;
      Q2 ≔ 200 + (if B then 1 else 0);
   integerprocedure Q3(X);
      value
        X;
      real
        X;
      Q3 ≔ 300 + X;
   procedure FAIL(M, N);
      value
        M,
        N;
      integer
        M,
        N;
      if M ≠ N then
      begin
         OUTREAL(99, M);
         OUTREAL(99, N);
         OUTREAL(99, CASE)
      end
      else
        CASE ≔ CASE + 1;
   I ≔ 1;
   X ≔ 10·4;
   CASE ≔ 0;
   B ≔ false;
   FAIL(P(1, Q1), 101);
   FAIL(P(4, Q1), 220);
   FAIL(P(2, Q2), 200);
   FAIL(P(3, Q3), 310);
   FAIL(P(4, Q3), 620);
   OUTREAL(99, CASE)
end