#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer h, i, j, k
int H;
int I;
int J;
int K;
// 3 i = 1; j = 2; k = 3
I = 1;
J = 2;
K = 3;
// 4 %cycle h = i,j,k
// %for H = I, J, K %cycle
{
int _initial = I, _increment = J, _final = K;
if (invalid_for_loop(_initial, _increment, _final)) _imp_signal(5, 1, 0, "Illegal cycle H = I, J, K");
H = _initial - _increment;
L_0001:
if (H == _final) goto L_0002;
H += _increment;
// 5 %repeat
goto L_0001;
}
L_0002:;
// 6 %cycle h = i,1,k
// %for H = I, 1, K %cycle
{
int _initial = I, _final = K;
if (invalid_for_loop(_initial, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle H = I, 1, K");
H = _initial - (1);
L_0004:
if (H == _final) goto L_0005;
H += 1;
// 7 %repeat
goto L_0004;
}
L_0005:;
// 8 %cycle h = i,-1,k
// %for H = I, -1, K %cycle
{
int _initial = I, _final = K;
if (invalid_for_loop(_initial, -1, _final)) _imp_signal(5, 1, 0, "Illegal cycle H = I, -1, K");
H = _initial - (-1);
L_0006:
if (H == _final) goto L_0007;
H -= 1;
// 9 %repeat
goto L_0006;
}
L_0007:;
// 10 %cycle h = 1,1,3
// %for H = 1, 1, 3 %cycle
{
H = 0;
L_0008:
if (H == 3) goto L_0009;
H += 1;
// 11 %repeat
goto L_0008;
}
L_0009:;
// 12 %cycle h = 3,-1,1
// %for H = 3, -1, 1 %cycle
{
H = 4;
L_000A:
if (H == 1) goto L_000B;
H -= 1;
// 13 %repeat
goto L_000A;
}
L_000B:;
// 14 %cycle h = 1,1,k
// %for H = 1, 1, K %cycle
{
int _final = K;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle H = 1, 1, K");
H = 0;
L_000C:
if (H == _final) goto L_000D;
H += 1;
// 15 %repeat
goto L_000C;
}
L_000D:;
// 16 %cycle h = k,-1,1
// %for H = K, -1, 1 %cycle
{
int _initial = K;
if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle H = K, -1, 1");
H = _initial - (-1);
L_000E:
if (H == 1) goto L_000F;
H -= 1;
// 17 %repeat
goto L_000E;
}
L_000F:;
// 18 %cycle h = i,1,3
// %for H = I, 1, 3 %cycle
{
int _initial = I;
if (invalid_for_loop(_initial, 1, 3)) _imp_signal(5, 1, 0, "Illegal cycle H = I, 1, 3");
H = _initial - (1);
L_0010:
if (H == 3) goto L_0011;
H += 1;
// 19 %repeat
goto L_0010;
}
L_0011:;
// 20 %cycle h = i,-1,1
// %for H = I, -1, 1 %cycle
{
int _initial = I;
if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle H = I, -1, 1");
H = _initial - (-1);
L_0012:
if (H == 1) goto L_0013;
H -= 1;
// 21 %repeat
goto L_0012;
}
L_0013:;
// 22 %cycle h = 1,i,3
// %for H = 1, I, 3 %cycle
{
int _increment = I;
if (invalid_for_loop(1, _increment, 3)) _imp_signal(5, 1, 0, "Illegal cycle H = 1, I, 3");
H = 1 - _increment;
L_0014:
if (H == 3) goto L_0015;
H += _increment;
// 23 %repeat
goto L_0014;
}
L_0015:;
// 24 %cycle h = 1,i,k
// %for H = 1, I, K %cycle
{
int _increment = I, _final = K;
if (invalid_for_loop(1, _increment, _final)) _imp_signal(5, 1, 0, "Illegal cycle H = 1, I, K");
H = 1 - _increment;
L_0016:
if (H == _final) goto L_0017;
H += _increment;
// 25 %repeat
goto L_0016;
}
L_0017:;
// 26 %cycle h = i,j,3
// %for H = I, J, 3 %cycle
{
int _initial = I, _increment = J;
if (invalid_for_loop(_initial, _increment, 3)) _imp_signal(5, 1, 0, "Illegal cycle H = I, J, 3");
H = _initial - _increment;
L_0018:
if (H == 3) goto L_0019;
H += _increment;
// 27 %repeat
goto L_0018;
}
L_0019:;
// 28 %cycle h = i,-1,1
// %for H = I, -1, 1 %cycle
{
int _initial = I;
if (invalid_for_loop(_initial, -1, 1)) _imp_signal(5, 1, 0, "Illegal cycle H = I, -1, 1");
H = _initial - (-1);
L_001A:
if (H == 1) goto L_001B;
H -= 1;
// 29 %repeat
goto L_001A;
}
L_001B:;
// 30 %cycle h = 1,i,3
// %for H = 1, I, 3 %cycle
{
int _increment = I;
if (invalid_for_loop(1, _increment, 3)) _imp_signal(5, 1, 0, "Illegal cycle H = 1, I, 3");
H = 1 - _increment;
L_001C:
if (H == 3) goto L_001D;
H += _increment;
// 31 %repeat
goto L_001C;
}
L_001D:;
// 32 i = -1
I = -1;
// 33 %cycle h = 3,i,1
// %for H = 3, I, 1 %cycle
{
int _increment = I;
if (invalid_for_loop(3, _increment, 1)) _imp_signal(5, 1, 0, "Illegal cycle H = 3, I, 1");
H = 3 - _increment;
L_001E:
if (H == 1) goto L_001F;
H += _increment;
// 34 %repeat
goto L_001E;
}
L_001F:;
// 35 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}