#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1
// 2 %BEGIN
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 3 !***********************************************************************
// 4 !* A TEST TO CHECK THE LINE NUMBER OF A FAILURE AT RUN TIME *
// 5 !***********************************************************************
// 6 %recordformat rf(%integer i,j,k)
struct RF {
union {
struct {
int I;
int J;
int K;
};
};
};
// 7 %record(rf) %name fred
struct RF *FRED;
// 8 %INTEGERARRAY A(0:4)
int A[5];
struct _imp_dv A_dv = {A, sizeof(int) /*, dims, <bounds> */};
// 9 %INTEGER I
int I;
// 10 fred==record(-1)
FRED = (struct RF *)_imp_RECORD(-1);
// 11 printstring("This gives diagnostics showing i = 10
_imp_PRINTSTRING(_imp_str_literal("This gives diagnostics showing i = 10\n"));
// 12+ ")
// 13 I=10
I = 10;
// 14 %IF 1<0 %THEN %START
if (1 >= 0) goto L_0001;
// 15 !
// 16 !
// 17 %STOP
_imp_stop(0);
// 18 %FINISH %ELSE A(I)=A(I)+1
L_0001:;
A[I] = A[I] + 1;
// 19 !
// 20 %ENDOFPROGRAM
_imp_stop(0);
return 0;
end_0:;
}