#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integerarray d1(10:11)
int D1[2];
struct _imp_dv D1_dv = {D1, sizeof(int) /*, dims, <bounds> */};
// 3 %integerarray d2(0:1,-5:2)
int D2[2][8];
struct _imp_dv D2_dv = {D2, sizeof(int) /*, dims, <bounds> */};
// 4 %integerarray d3(0:1,0:2,0:3)
int D3[2][3][4];
struct _imp_dv D3_dv = {D3, sizeof(int) /*, dims, <bounds> */};
// 5 %integerarray d4(0:1,0:2,0:3,0:4)
int D4[2][3][4][5];
struct _imp_dv D4_dv = {D4, sizeof(int) /*, dims, <bounds> */};
// 6 %integerarray d5(0:1,0:2,0:3,0:4,0:5)
int D5[2][3][4][5][6];
struct _imp_dv D5_dv = {D5, sizeof(int) /*, dims, <bounds> */};
// 7 %integerarray d6(0:1,0:2,0:3,0:4,-22:5,0:6)
int D6[2][3][4][5][28][7];
struct _imp_dv D6_dv = {D6, sizeof(int) /*, dims, <bounds> */};
// 8 ! TOO MANY BOUNDS! %integerarray d7(0:1,0:2,0:3,0:4,0:5,0:6,0:7)
// 9
// 10 d1(10) = 1
D1[0] = 1;
// 11 d2(1,2) = 2
D2[1][7] = 2;
// 12 d3(1,2,3) = 3
D3[1][2][3] = 3;
// 13 d4(1,2,3,4) = 4
D4[1][2][3][4] = 4;
// 14 d5(1,2,3,4,5) = 5
D5[1][2][3][4][5] = 5;
// 15 d6(1,2,3,4,5,6) = 6
D6[1][2][3][4][27][6] = 6;
// 16
// 17 %integer i
int I;
// 18
// 19 i = d1(10)
I = D1[0];
// 20 i = d2(1,2)
I = D2[1][7];
// 21 i = d3(1,2,3)
I = D3[1][2][3];
// 22 i = d4(1,2,3,4)
I = D4[1][2][3][4];
// 23 i = d5(1,2,3,4,5)
I = D5[1][2][3][4][5];
// 24 i = d6(1,2,3,4,5,6)
I = D6[1][2][3][4][27][6];
// 25
// 26 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}