#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2
// 3 %begin
{ /*%begin*/
// 4 %recordformat OUT OF SCOPE(%integer P, Q)
struct OUTOFSCOPE {
union {
struct {
int P;
int Q;
};
};
};
// 5 %end
goto end_1000;
end_1000:;
}
// ?OUTOFSCOPE unused
// 6
// 7 %recordformatspec RECFM
// 8
// 9 %record (RECFM) %name REC NAME
struct OUTOFSCOPE *RECNAME;
// 10
// 11 %record (RECFM) %name %array REC NAME ARRAY(0:9)
struct OUTOFSCOPE *RECNAMEARRAY[10];
// 12
// 13 %record (RECFM) %map REC MAP
struct OUTOFSCOPE *RECMAP(void)
{
// 14 %result == REC NAME
return RECNAME;
// 15 %end
} /* end of RECMAP */
// 16
// 17 %recordformat DERIVED (%c
struct DERIVED {
union {
struct {
int I;
struct OUTOFSCOPE *LINK;
};
};
};
// 18+ %integer I,
// 19+ %record (REC FM) %name LINK)
// 20
// 21 %record %format RECFM (%real R)
struct RECFM {
union {
struct {
float R;
};
};
};
// 22
// 23 %record (RECFM) ACTUAL
struct RECFM ACTUAL;
// 24
// 25 REC NAME == ACTUAL
RECNAME = (struct OUTOFSCOPE *)/*?*/ &ACTUAL;
// 26
// 27 REC NAME_R = 3.14
RECNAME->R = 3.14;
// 28
// 29 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}