#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:;
}