#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %integer inum
int INUM;
// 3 %real rnum
float RNUM;
// 4 %string (255) str = "improperly initialised?"
_imp_string255 STR;
_imp_strncpy(/*?*/ &STR, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("improperly initialised?");
(void *)&tmp;
}),
/*max:*/ 255);
// 5
// 6 inum = 0123
INUM = 123;
// 7 inum = 123
INUM = 123;
// 8 inum = X'AA'
INUM = 170;
// 9 inum = X'aa'
INUM = 170;
// 10 inum = K'77'
INUM = 63;
// 11 inum = B'1101'
INUM = 13;
// 12 inum = 10_0123
INUM = 123;
// 13 inum = 16_aa
INUM = 170;
// 14 inum = 16_AA
INUM = 170;
// 15 inum = M'FRED'
INUM = 1179796804;
// 16 inum = M'fred'
INUM = 1718773092;
// 17 !! NOT IMP77: inum = 'FRED'
// 18 !! NOT IMP77: inum = 'fred'
// 19 inum = 8_77
INUM = 63;
// 20 inum = 2_1101
INUM = 13;
// 21
// 22 rnum = 0123
RNUM = 123;
// 23 rnum = 0123.234
RNUM = 0123.234;
// 24 rnum = 0123.0234
RNUM = 0123.0234;
// 25 rnum = 0123.4@2
RNUM = 0123.4E2;
// 26 rnum = 0123.4@-2
RNUM = 0123.4E-2;
// 27 rnum = 0123@2
RNUM = 0123E2;
// 28 rnum = 0123@+2
RNUM = 0123 + 2;
// 29 rnum = 0123@-2
RNUM = 0123E-2;
// 30 rnum = 123
RNUM = 123;
// 31 rnum = .234
RNUM = .234;
// 32 rnum = .234@3
RNUM = .234E3;
// 33 rnum = 0123.
RNUM = 0123.;
// 34 rnum = 0123.@4
RNUM = 0123.E4;
// 35 rnum = 0.@3
RNUM = 0.E3;
// 36 !rnum = 0.@ ;! rejected forms:
// 37 !rnum = .@3
// 38
// 39 str = "improperly assigned?"
_imp_strncpy(/*?*/ &STR, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("improperly assigned?");
(void *)&tmp;
}),
/*max:*/ 255);
// 40 !! NOT IMP77: str = 'ditto, old style'
// 41
// 42 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}