#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];
struct _imp_dv A_dv = {A, sizeof(struct F) /*, dims, <bounds> */};
// 5 %RECORD(F)%ARRAY B(-1:1)
struct F B[3];
struct _imp_dv B_dv = {B, sizeof(struct F) /*, dims, <bounds> */};
// 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:;
}