#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %routine do something(%integer i)
void DOSOMETHING(int I) {
// 3 %integerfn succ(%integer i)
int SUCC(int I) {
// 4 %result = i+1
return I + 1;
// 5 %end
} /* end of SUCC */
// 6 print string("succ("); write (i,0); print string(") = "); write(succ(i), 0); newline
_imp_PRINTSTRING(_imp_str_literal("succ("));
_imp_WRITE(I, 0);
_imp_PRINTSTRING(_imp_str_literal(") = "));
_imp_WRITE(SUCC(I), 0);
_imp_NEWLINE();
// 7 %end
return;
} /* end of DOSOMETHING */
// 8
// 9 do something(42)
DOSOMETHING(42);
// 10
// 11 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}