#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2
// 3 %recordformat RECFM (%integer I, J, K)
struct RECFM {
union {
struct {
int I;
int J;
int K;
};
};
};
// 4
// 5 %begin
{ /*%begin*/
// 6
// 7 %routine SHOWREC(%record (RECFM) R)
void SHOWREC(struct RECFM R) {
// 8 print string("R_I = "); write(R_I, 0); newline
_imp_PRINTSTRING(_imp_str_literal("R_I = "));
_imp_WRITE(R.I, 0);
_imp_NEWLINE();
// 9 %end
return;
} /* end of SHOWREC */
// 10
// 11 %recordformat RECFM(%integer K, J, I)
struct RECFM {
union {
struct {
int K;
int J;
int I;
};
};
};
// 12
// 13 %record (RECFM) %map FIRST
struct RECFM *FIRST(void) {
// 14 %own %record (RECFM) BEFORE
static struct RECFM BEFORE;
// 15 %result == BEFORE
return /*?*/ &BEFORE;
// 16 %end
} /* end of FIRST */
// 17
// 18 FIRST_I = 17; FIRST_K = 42;
FIRST()->I = 17;
FIRST()->K = 42;
// 19 SHOWREC(FIRST)
SHOWREC(*FIRST());
// 20
// 21 %end
goto end_1000;
end_1000:;
}
// 22
// 23 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}