#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %BEGIN
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %INTEGERARRAY BAD(1:2)
int BAD[2];
struct _imp_dv BAD_dv = {BAD, sizeof(int) /*, dims, <bounds> */};
// 3 %INTEGER I,J
int I;
int J;
// 4 %ON %EVENT 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 %START
if (!_imp_on_event(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) goto L_0001;
// 5 PRINT STRING("TRAPPED!"); NEWLINE
_imp_PRINTSTRING(_imp_str_literal("TRAPPED!"));
_imp_NEWLINE();
// 6 %STOP
_imp_stop(0);
// 7 %FINISH
L_0001:;
// 8 BAD(0) = 123
BAD[-1] = 123;
// 9 BAD(1) = 234
BAD[0] = 234;
// 10 J = 1
J = 1;
// 11 %CYCLE
L_0002:;
// 12 I = J + BAD(J)
I = J + BAD[J - 1];
// 13 PRINTSTRING("I = "); WRITE(I,0); NEWLINE
_imp_PRINTSTRING(_imp_str_literal("I = "));
_imp_WRITE(I, 0);
_imp_NEWLINE();
// 14 I = J * BAD(1)
I = J * BAD[0];
// 15 I = BAD(J)
I = BAD[J - 1];
// 16 I = BAD(1)
I = BAD[0];
// 17 J = J+1
J = J + 1;
// 18 %REPEAT
goto L_0002;
// 19 %ENDOFPROGRAM
end_0:;
}