#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2    %integer i

  int I;

  //     3    i = 42

  I = 42;

  //     4    %integernamearray iana(1:10)

  int *IANA[10];
  struct _imp_dv IANA_dv = {IANA, sizeof(int *) /*, dims, <bounds> */};

  //     5    iana(5) == i

  IANA[4] = (int *)/*?*/ &I;

  //     6    %integername in == iana(5)

  int *IN;
  IN = (int *)IANA[4];

  //     7    %integermap im

  int *IM(void) {
    //     8      %result == in

    return IN;

    //     9    %end

  } /* end of IM */

  //    10    write(im,0);! should be 42

  _imp_WRITE(*IM(), 0);

  //    11  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}