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( "ab", r, sum, b, ra, ia);
if sum != 9 then
outreal(1, sum);
p2(ba, ss[2], ss, pr, rpr, ipr, bpr);
if sum != 276 then
outreal(1, sum);
work :;
outreal(1, 0);
p3(4.6, - 200, true , ra, ia, ba, if true then ss[2] else
fail);
if sum != 83 then
outreal(1, sum);
p1( "cd", rpr, ipr, bpr, ra, ia);
if sum != 500 then
outreal(1, sum);
p3(rpr, ipr, bpr, ra, ia, ba, fail);
if sum != 3002 then
outreal(1, sum);
if false then
fail : outreal(1, - 1);
end