begin
comment library 1;
integer
i,
case;
boolean
b;
real
x;
integer procedure p(k, q);
value
k;
integer
k;
integer procedure
q;
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));
integer procedure q1(i);
value
i;
integer
i;
q1 := 100 + i;
integer procedure q2(b);
value
b;
boolean
b;
q2 := 200 + (if b then 1 else 0);
integer procedure 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(1, m);
outreal(1, n);
outreal(1, 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(1, case)
end