#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %owninteger io
static int IO;
// 3 %integer i
int I;
// 4 %externalinteger ie
int IE;
// 5 %integerarray ia(0:9)
int IA[10];
// 6 %integerfn ifn
int IFN(void) {
// 7 %result = 1
return 1;
// 8 %end
} /* end of IFN */
// 9 %integermap im
int *IM(void)
{
// 10 %result == io
return /*?*/ &IO;
// 11 %end
} /* end of IM */
// 12 %routine ir
void IR(void) {
// 13 %end
return;
} /* end of IR */
// 14 %recordformat rf(%integer i)
struct RF {
union {
struct {
int I;
};
};
};
// 15 %record(rf)%array rec(0:9)
struct RF REC[10];
// 16 %switch sw(0:9)
int SW_index;
int SW_line;
char *SW_file;
static const void *SW[10] = {&&case_SW_missing, &&case_SW_1, &&case_SW_missing, &&case_SW_missing,
&&case_SW_missing, &&case_SW_missing, &&case_SW_missing, &&case_SW_missing,
&&case_SW_missing, &&case_SW_missing};
// 17
// 18
// 19 io = 1
IO = 1;
// 20 %comment io = 1
// 21 ie = 1
IE = 1;
// 22 %comment ie = 1
// 23 ia(1) = 1
IA[1] = 1;
// 24 %comment ia(1) = 1
// 25 i = ifn
I = IFN();
// 26 %comment i = ifn(1)
// 27 i = im
I = *IM();
// 28 %comment i = im(1)
// 29 rec(1)_i = 1
REC[1].I = 1;
// 30 %comment rec(1)_i = 1
// 31 sw(1):
case_SW_1:;
// 32 %comment sw(1):
// 33 ir
IR();
// 34
// 35 %endofprogram
_imp_stop(0);
return 0;
case_SW_dispatch:
if (SW_index < 0 || SW_index > 9)
_imp_signalf(6, 3, SW_index, "->SW(%d) out of bounds at %s line %d", SW_index, SW_file, SW_line);
goto *SW[SW_index - 0];
case_SW_missing:
_imp_signalf(8, 2, SW_index, "switch jump to undefined label SW(%d): at %s line %d", SW_index, SW_file, SW_line);
end_0:;
}