#include <perms.h>

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

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

  //     2    %RECORDFORMAT F(%INTEGER I,J,K,%INTEGERARRAY A,B,C(1:5))

  struct F {
    union {
      struct {
        int I;
        int J;
        int K;
        int A[5];
        int B[5];
        int C[5];
      };
    };
  };

  //     3    %RECORD(F) R

  struct F R;

  //     4    %RECORD(F)%NAME B

  struct F *B;

  //     5    %INTEGER Q

  int Q;

  //     6
  //     7    R_I='I'

  R.I = 73;

  //     8    R_A(3)='x'

  R.A[2] = 120;

  //     9
  //    10    B==R

  B = (struct F *)/*?*/ &R;

  //    11    B_I='I'

  B->I = 73;

  //    12    B_A(3)='x'

  B->A[2] = 120;

  //    13
  //    14    Q=R_I

  Q = R.I;

  //    15    Q=R_A(3)

  Q = R.A[2];

  //    16
  //    17    Q=B_I

  Q = B->I;

  //    18    Q=B_A(3)

  Q = B->A[2];

  //    19
  //    20  %ENDOFPROGRAM

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