#include <perms.h>

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

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

  //     3  %RECORDFORMAT F(%INTEGER I,J,K,L)

  struct F {
    union {
      struct {
        int I;
        int J;
        int K;
        int L;
      };
    };
  };

  //     4  %OWNRECORD(F)%ARRAY A(-1:1)

  static struct F A[3];

  //     5  %RECORD(F)%ARRAY B(-1:1)

  struct F B[3];

  //     6  %RECORD(F) R

  struct F R;

  //     7  %INTEGER I

  int I;

  //     8        R=0

  R = (struct F){0};

  //     9        %CYCLE I=-1,1,1

  // %for I =  -1, 1, 1 %cycle
  {
    I = -2;
  L_0001:
    if (I == 1) goto L_0002;
    I += 1;

    //    10           A(I)=R

    A[I + 1] = R;

    //    11           B(I)=R

    B[I + 1] = R;

    //    12        %REPEAT

    goto L_0001;
  }

L_0002:;

//    13        PRINTSTRING("TEST OK")

  _imp_PRINTSTRING(_imp_str_literal("TEST OK"));

  //    14  %ENDOFPROGRAM

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