#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    %integerarray ia1(3:5)

  int IA1[3];

  //     4    %integerarrayname ian1

  int *IAN1;

  //     5    %integerarray ia2(2:4,3:6)

  int IA2[3][4];

  //     6    %integerarray(2)%name ian2

  int *IAN2;

  //     7
  //     8    ia1(3) = i

  IA1[0] = I;

  //     9    i = ia1(3)

  I = IA1[0];

  //    10
  //    11    ia2(2,3) = i

  IA2[0][0] = I;

  //    12    i = ia2(2,3)

  I = IA2[0][0];

  //    13
  //    14    ian1 == ia1

  IAN1 = (int *)IA1;

  //    15    ian1(3) = i

  [/*BUG*/ 0] = I;

  //    16    i = ian1(3)

  I = [/*BUG*/ 0];

  //    17
  //    18    ian2 == ia2

  IAN2 = (int *)IA2;

  //    19    ian2(2,3) = i

  [/*BUG*/ 0] = I;

  //    20    i = ian2(2,3)

  I = [/*BUG*/ 0];

  //    21
  //    22  %endofprogram

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