#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1
// 2 %BEGIN
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 3 %ROUTINE TEST(%ROUTINE PARAM(%INTEGER I))
void TEST(void (*PARAM)(int I)) {
// 4 PARAM(10)
PARAM(10);
// 5 %END
return;
} /* end of TEST */
// 6 %ROUTINE A
void A(void) {
// 7 %INTEGER P,Q,R
int P;
int Q;
int R;
// 8 P='P'; Q='Q'; R='R'
P = 80;
Q = 81;
R = 82;
// 9 %ROUTINE B(%INTEGER A)
void B(int A) {
// 10 %UNLESS P='P' %AND Q='Q' %AND R='R' %and a=10 %THEN %c
if (P != 80) goto L_0001;
if (Q != 81) goto L_0001;
if (R != 82) goto L_0001;
if (A == 10) goto L_0002;
L_0001:;
_imp_PRINTSTRING(_imp_str_literal("FAILED"));
goto L_0003;
L_0002:;
_imp_PRINTSTRING(_imp_str_literal("TEST OK"));
L_0003:;
// 11+ PRINTSTRING("FAILED") %else printstring("TEST OK")
// 12 %END
return;
} /* end of B */
// 13 TEST(B)
TEST(B);
// 14 %END
return;
} /* end of A */
// 15 A
A();
// 16 %ENDOFPROGRAM
_imp_stop(0);
return 0;
end_0:;
}