#include <perms.h>

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

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

  //     2    %recordformat arrfm(%integer %array test(0:9))

  struct ARRFM {
    union {
      struct {
        int TEST[10];
      };
    };
  };

  //     3
  //     4    %routine handle array(%record (arrfm) rec)

  void HANDLEARRAY(struct ARRFM REC) {
    //     5      ! A %array is not allowed, only a %array %name ...
    //     6      write(rec_test(5), 0)

    _imp_WRITE(REC.TEST[5], 0);

    //     7    %end

    return;
  } /* end of HANDLEARRAY */

  //     8
  //     9    %record (arrfm) small

  struct ARRFM SMALL;

  //    10
  //    11    small_test(5) = 42

  SMALL.TEST[5] = 42;

  //    12    handle array(small)

  HANDLEARRAY(SMALL);

  //    13
  //    14  %endofprogram

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