begin
comment library 1;
integer
sum;
procedure p1(s, r, i, b, ra, ia);
string
s;
real
r;
integer
i;
boolean
b;
real array
ra;
integer array
ia;
sum := sum + r + i + (if b then 1 else 0) + ra[1] +
ia[1];
procedure p2(ba, l, sw, pr, rpr, ipr, bpr);
boolean array
ba;
label
l;
switch
sw;
procedure
pr;
real procedure
rpr;
integer procedure
ipr;
boolean procedure
bpr;
begin
pr;
sum := sum + rpr + ipr;
if bpr then
go to l;
if ba[1] then
go to sw[2]
end;
procedure p3(r, i, b, ra, ia, ba, l);
value
r,
i,
b,
ra,
ia,
ba,
l;
real
r;
integer
i;
boolean
b;
real array
ra;
integer array
ia;
boolean array
ba;
label
l;
begin
sum := sum + r + i + ra[1] + ia[1] + (if b then 1
else 0) + (if ba[1] then 1 else 0);
if ba[1] then
go to l
end;
real
r;
boolean
b;
real array
ra[1 : 1];
integer array
ia[1 : 1];
boolean array
ba[1 : 1];
integer procedure ipr;
ipr := 2 * sum;
real procedure rpr;
rpr := 3 * sum;
boolean procedure bpr;
bpr := ! b;
procedure pr;
sum := 5 * sum + 1;
switch ss :=
work,
fail;
sum := 0;
ia[1] := - 2;
ra[1] := 3.55;
ba[1] := false;
b := true;
r := 6.4;
p1(ra, "ab", "ab", "ab", "ab", "ab" );
p1(ss, ra, ra, ra, ss, ss);
p1(pr, ss, ss, ss, pr, pr);
p1(ss[2], pr, pr, pr, ss[2], ss[2]);
p1(true , ss[2], ss[2], ss[2], true , true );
p1(r, false , false , r, r, r);
p2( "ab", "ab", "ab", "ab", "ab", "ab", "ab" );
p2(ra, ra, ra, ra, ra, ra, ra);
p2(ss, ss, ss[2], ss, ss, ss, ss);
p2(pr, pr, pr, r, pr, pr, pr);
p2(fail, ss, fail, fail, fail, fail, fail);
p2(true , true , true , true , true , true , true );
p2(r, r, r, r, r, r, r);
p3( "ab", "ab", "ab", "ab", "ab", "ab", "ab" );
p3(ra, ra, ra, r, r, r, ra);
p3(ss, ss, ss, ss, ss, ss, ss);
p3(pr, pr, pr, pr, pr, pr, pr);
p3(fail, fail, fail, fail, fail, fail, ss);
p3(true , true , r, true , true , true , true );
p3(true , true , r, r, r, r, r);
work :;
if false then
fail : outreal(1, - 1);
end