#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer a = 1
int A;
A = 1;
// 3
// 4 %routine p
void P(void) {
// 5 %integer a = 2
int A;
A = 2;
// 6
// 7 %routine q
void Q(void) {
// 8 %integer a = 3
int A;
A = 3;
// 9
// 10 %routine r
void R(void) {
// 11 a = 4
A = 4;
// 12 %end
return;
} /* end of R */
// 13
// 14 r
R();
// 15 write(a, 0); newline
_imp_WRITE(A, 0);
_imp_NEWLINE();
// 16 %end
return;
} /* end of Q */
// 17
// 18 q
Q();
// 19 write(a, 0); newline
_imp_WRITE(A, 0);
_imp_NEWLINE();
// 20 %end
return;
} /* end of P */
// 21
// 22 p
P();
// 23 write(a, 0); newline
_imp_WRITE(A, 0);
_imp_NEWLINE();
// 24
// 25 %end %of %program
_imp_stop(0);
return 0;
end_0:;
}