#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 !%permroutinespec write(%integer v,p);
// 2 !%permroutinespec newline
// 3
// 4 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 5 %routine fancy9(%integer %array (2) %name param)
void FANCY9(int *PARAM) {
// 6 %end
return;
} /* end of FANCY9 */
// ?PARAM unused
// 7
// 8 %integer %array ia0(2:3)
int IA0[2];
// 9 %integer %array ia1(2:3,1:2)
int IA1[2][2];
// 10 %integer %array ia2(1:2,1:3)
int IA2[2][3];
// 11
// 12 %integer %array %name ian0
int *IAN0;
// 13 %integer %array (2) %name ian1
int *IAN1;
// 14
// 15 ia1(2,1) = 221; ia1(3,1) = 331
IA1[0][0] = 221;
IA1[1][0] = 331;
// 16 ia1(2,2) = 10; ia1(3,2) = 20
IA1[0][1] = 10;
IA1[1][1] = 20;
// 17
// 18 ia2(1,1) = 8221; ia2(2,1) = 9331
IA2[0][0] = 8221;
IA2[1][0] = 9331;
// 19 ia2(1,2) = 8010; ia2(2,2) = 9020
IA2[0][1] = 8010;
IA2[1][1] = 9020;
// 20 ia2(1,3) = 8333; ia2(2,3) = 9333
IA2[0][2] = 8333;
IA2[1][2] = 9333;
// 21
// 22 ian1 == ia1
IAN1 = (int *)IA1;
// 23 write(ian1(2,1),0)
_imp_WRITE([/*BUG*/ 0], 0);
// 24 newline
_imp_NEWLINE();
// 25
// 26 fancy9(ian1)
FANCY9(IAN1);
// 27
// 28 ian1 == ia2
IAN1 = (int *)IA2;
// 29 write(ian1(2,1),0)
_imp_WRITE([/*BUG*/ 0], 0);
// 30 newline
_imp_NEWLINE();
// 31
// 32 ian0 == ia0
IAN0 = (int *)IA0;
// 33
// 34 !fancy9(ia0) not allowed
// 35
// 36 fancy9(ia1)
FANCY9(IA1);
// 37 fancy9(ian1)
FANCY9(IAN1);
// 38
// 39 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}