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;
integerarray
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;
integerprocedure
IPR;
boolean procedure
BPR;
begin
PR;
SUM ≔ SUM + RPR + IPR;
if BPR then
goto L;
if BA[1] then
goto 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;
integerarray
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
goto L
end;
real
R;
boolean
B;
real array
RA[1 : 1];
integerarray
IA[1 : 1];
boolean array
BA[1 : 1];
integerprocedure 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(99, - 1);
end