#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %externalroutine whatever(%integer x)
void WHATEVER(int X) {
// 2 %end
return;
} /* end of WHATEVER */
// ?X unused
// 3
// 4 %externalroutine xr1(%routine fred(%integer p2))
void XR1(void (*FRED)(int P2)) {
// 5 %real r1
float R1;
// 6 %end
return;
} /* end of XR1 */
// ?R1 unused
// ?FRED unused
// 7
// 8 ! Should translate to:
// 9
// 10 ! void xr1(void (*fred)(int p2)) {
// 11 ! float r1;
// 12 ! }
// 13
// 14
// 15 %externalintegermap xm1(%routine fred(%integer p2))
int *XM1(void (*FRED)(int P2)) {
// 16 %owninteger oi1
static int OI1;
// 17 %result == oi1
return /*?*/ &OI1;
// 18 %end
} /* end of XM1 */
// ?FRED unused
// 19
// 20 ! Should translate to:
// 21
// 22 ! int *xm1(void (*fred)(int p2)) {
// 23 ! static int oi1;
// 24 ! return &oi1;
// 25 ! }
// 26
// 27 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 28 %integer i ;! int I;
int I;
// 29 %integername zz ;! int *ZZ;
int *ZZ;
// 30 zz == xm1(whatever) ;! ZZ = XM1(&whatever);
ZZ = (int *)XM1(WHATEVER);
// 31 i = zz ;! I = *ZZ;
I = *ZZ;
// 32 %end
_imp_stop(0);
return 0;
end_0:;
}
// 33
// 34 %endoffile