'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' '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; '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' 'GOTO' 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 := 'NOT' 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, , , , , ); 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( , , , , , , ); 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( , , , , , , ); 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'