#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %BEGIN
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2 %STRING(255)%FN PRINTNAME(%INTEGER N)
_imp_string255 PRINTNAME(int N) {
// 3 %INTEGER V, K
int V;
int K;
// 4 %owninteger count=0
static int COUNT = 0;
// 5 count=count+1
COUNT = COUNT + 1;
// 6 %if count=1 %then %result="JAMES"
if (COUNT != 1) goto L_0001;
return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("JAMES");
L_0001:;
// 7 %if count=2 %then %result="JIM"
if (COUNT != 2) goto L_0002;
return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("JIM");
L_0002:;
// 8 %result="???"
return *(_imp_string255 *)/*?*/ _imp_str_literal_ptr("???");
// 9 %END
} /* end of PRINTNAME */
// ?K unused
// ?V unused
// ?N unused
// 10
// 11 %STRING(255)%FN MESSAGE(%INTEGER N)
_imp_string255 MESSAGE(int N) {
// 12 !***********************************************************************
// 13 !* OUTPUTS AN ERROR MESSAGE STORED IN A COMPRESSED FORMAT *
// 14 !* 1 %REPEAT is not required *
// 15 !* 2 Label & has already been set in this block *
// 16 !* 4 & is not a Switch name at current textual level *
// 17 !* 5 Switch name & in expression or assignment *
// 18 !* 6 Switch label &(#) set a second time *
// 19 !* 7 Name & has already been declared *
// 20 !* 8 Routine or fn & has more parameters than specified *
// 21 !* 9 Parameter # of & differs in type from specification *
// 22 !* 10 Routine or fn & has fewer parameters than specified *
// 23 !* 11 Label & referenced at line # has not been set *
// 24 !* 12 %CYCLE at line # has two control clauses *
// 25 !* 13 %REPEAT for %CYCLE at line # is missing *
// 26 !* 14 %END is not required *
// 27 !* 15 # %ENDs are missing *
// 28 !* 16 Name & has not been declared *
// 29 !* 17 Name & does not require parameters or subscripts *
// 30 !* 18 # too few parameters provided for & *
// 31 !* 19 # too many parameters provided for & *
// 32 !* 20 # too few subscripts provided for array & *
// 33 !* 21 # too many subscripts provided for array & *
// 34 !* 22 Actual parameter # of & conflicts with specification *
// 35 !* 23 Routine name & in an expression *
// 36 !* 24 Integer operator has Real operands *
// 37 !* 25 Real expression in integer context *
// 38 !* 26 # is not a valid %EVENT number *
// 39 !* 27 & is not a routine name *
// 40 !* 28 Routine or fn & has specification but no body *
// 41 !* 29 %FUNCTION name & not in expression *
// 42 !* 30 %RETURN outwith routine body *
// 43 !* 31 %RESULT outwith fn or map body *
// 44 !* 34 Too many textual levels *
// 45 !* 37 Array & has too many dimensions *
// 46 !* 38 Array & has upper bound # less than lower bound *
// 47 !* 39 Size of Array & is more than X'FFFFFF' bytes *
// 48 !* 40 Declaration is not at head of block *
// 49 !* 41 Constant cannot be evaluated at compile time *
// 50 !* 42 # is an invalid repetition factor *
// 51 !* 43 %CONSTANT name & not in expression *
// 52 !* 44 Invalid constant initialising & after # items *
// 53 !* 45 Array initialising items expected ## items given # *
// 54 !* 46 Invalid %EXTERNAL %EXTRINSIC or variable %SPEC *
// 55 !* 47 %ELSE already given at line # *
// 56 !* 48 %ELSE invalid after %ON %EVENT *
// 57 !* 49 Attempt to initialise %EXTRINSIC or %FORMAT & *
// 58 !* 50 Subscript of # is outwith the bounds of & *
// 59 !* 51 %FINISH is not required *
// 60 !* 52 %REPEAT instead of %FINISH for %START at line # *
// 61 !* 53 %FINISH for %START at line # is missing *
// 62 !* 54 %EXIT outwith %CYCLE %REPEAT body *
// 63 !* 55 %CONTINUE outwith %CYCLE %REPEAT body *
// 64 !* 56 %EXTERNALROUTINE & at wrong textual level *
// 65 !* 57 Executable statement found at textual level zero *
// 66 !* 58 Program among external routines *
// 67 !* 59 %FINISH instead of %REPEAT for %CYCLE at line # *
// 68 !* 61 Name & has already been used in this %FORMAT *
// 69 !* 62 & is not a %RECORD or %RECORD %FORMAT name *
// 70 !* 63 %RECORD length is greater than # bytes *
// 71 !* 64 Name & requires a subname in this context *
// 72 !* 65 Subname & is not in the %RECORD %FORMAT *
// 73 !* 66 Expression assigned to record & *
// 74 !* 67 Records && and & have different formats *
// 75 !* 69 Subname && is attached to & which is not of type %RECORD *
// 76 !* 70 String declaration has invalid max length of # *
// 77 !* 71 & is not a String variable *
// 78 !* 72 Arithmetic operator in a String expression *
// 79 !* 73 Arithmetic constant in a String expression *
// 80 !* 74 Resolution is not the correct format *
// 81 !* 75 String expression contains a sub expression *
// 82 !* 76 String variable & in arithmetic expression *
// 83 !* 77 String constant in arithmetic expression *
// 84 !* 78 String operator '.' in arithmetic expression *
// 85 !* 80 Pointer variable & compared with expression *
// 86 !* 81 Pointer variable & equivalenced to expression *
// 87 !* 82 & is not a pointer name *
// 88 !* 83 && and & are not equivalent in type *
// 89 !* 86 Global pointer && equivalenced to local & *
// 90 !* 87 %FORMAT name & use in expression *
// 91 !* 90 Untyped name & used in expression *
// 92 !* 91 %FOR control variable & not integer *
// 93 !* 92 %FOR clause has zero step *
// 94 !* 93 %FOR clause has noninteger number of traverses *
// 95 !* 95 Name & not valid in assembler *
// 96 !* 96 Operand # not valid in assembler *
// 97 !* 97 Assembler construction not valid *
// 98 !* 98 Addressability *
// 99 !* 99 Facility not supported by target hardware *
// 100 !* 101 Source line has too many continuations *
// 101 !* 102 Workfile of # Kbytes is too small *
// 102 !* 103 Dictionary completely full *
// 103 !* 104 Dictionary completely full *
// 104 !* 105 Too many textual levels *
// 105 !* 106 String constant too long *
// 106 !* 107 Compiler tables are completely full *
// 107 !* 108 Condition too complicated *
// 108 !* 109 Compiler inconsistent *
// 109 !* 110 Input ended *
// 110 !* 201 Long integers are inefficient as subscripts *
// 111 !* 202 Name & not used *
// 112 !* 203 Label & not used *
// 113 !* 204 Global %FOR control variable & *
// 114 !* 205 Name & not addressable *
// 115 !* 206 Semicolon in comment text *
// 116 !* 207 %CONSTANT variable & not initialised *
// 117 !* 208 Unsupported precision used - nearest available substituted *
// 118 !* 209 Target machine is word addressed? *
// 119 !* 210 Redundant %ALIAS provided *
// 120 !* 255 SEE IMP MANUAL *
// 121 !***********************************************************************
// 122 %CONSTBYTEINTEGERARRAY OUTTT(0:63)='?','A','B','C','D','E','F','G',
const unsigned char OUTTT[64] = {63, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90,
38, 45, 47, 39, 40, 41, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 46, 37, 35, [62 ... 63] = 63};
// 123+ 'H','I','J','K','L','M','N',
// 124+ 'O','P','Q','R','S','T','U',
// 125+ 'V','W','X','Y','Z','&','-',
// 126+ '/','''','(',')',
// 127+ 'a','b','c','d','e','f','g',
// 128+ 'h','i','j','k','l','m','n',
// 129+ 'o','p','q','r','s','t','u',
// 130+ 'v','w','x','y','z','.','%',
// 131+ '#','?'(2)
// 132 %CONSTINTEGER WORDMAX= 780,DEFAULT= 776
// 133 %CONSTshortINTEGERARRAY WORD(0:WORDMAX)=0,%C
const short int WORD[781] = {
0, 1, 32769, 32771, 32772, 32773, 2, 32775, 32776, 32777, 32778, 32780, 32781, 32782, 32783, 32784,
4, 32776, 32771, 32772, 32785, 32786, 32788, 32789, 32790, 32792, 32794, 5, 32786, 32788, 32776, 32782,
32795, 32797, 32798, 6, 32786, 32800, 32801, 32781, 32785, 32802, 32804, 7, 32805, 32776, 32777, 32778,
32780, 32806, 8, 32808, 32797, 32810, 32776, 32777, 32811, 32812, 32814, 32815, 9, 32817, 32819, 32820,
32776, 32821, 32782, 32823, 32824, 32825, 10, 32808, 32797, 32810, 32776, 32777, 32828, 32812, 32814, 32815,
11, 32775, 32776, 32829, 32789, 32831, 32819, 32777, 32772, 32780, 32781, 12, 32832, 32789, 32831, 32819,
32777, 32834, 32835, 32837, 13, 32769, 32839, 32832, 32789, 32831, 32819, 32771, 32840, 14, 32842, 32771,
32772, 32773, 15, 32819, 32843, 32844, 32840, 16, 32805, 32776, 32777, 32772, 32780, 32806, 17, 32805,
32776, 32845, 32772, 32846, 32812, 32797, 32848, 18, 32819, 32850, 32851, 32812, 32852, 32839, 32776, 19,
32819, 32850, 32854, 32812, 32852, 32839, 32776, 20, 32819, 32850, 32851, 32848, 32852, 32839, 32855, 32776,
21, 32819, 32850, 32854, 32848, 32852, 32839, 32855, 32776, 22, 32856, 32858, 32819, 32820, 32776, 32860,
32862, 32825, 23, 32808, 32788, 32776, 32782, 32863, 32795, 24, 32864, 32866, 32777, 32868, 32869, 25,
32868, 32795, 32782, 32871, 32873, 26, 32819, 32771, 32772, 32785, 32875, 32876, 32878, 27, 32776, 32771,
32772, 32785, 32880, 32788, 28, 32808, 32797, 32810, 32776, 32777, 32825, 32882, 32883, 32884, 29, 32885,
32788, 32776, 32772, 32782, 32795, 30, 32887, 32889, 32880, 32884, 31, 32891, 32889, 32810, 32797, 32893,
32884, 34, 32894, 32854, 32792, 32895, 37, 32897, 32776, 32777, 32850, 32854, 32898, 38, 32897, 32776,
32777, 32900, 32901, 32819, 32902, 32814, 32903, 32901, 39, 32904, 32820, 32897, 32776, 32771, 32811, 32814,
32905, 32907, 40, 32908, 32771, 32772, 32789, 32911, 32820, 32784, 41, 32912, 32914, 32916, 32917, 32789,
32919, 32804, 42, 32819, 32771, 32863, 32921, 32923, 32925, 43, 32927, 32788, 32776, 32772, 32782, 32795,
44, 32929, 32931, 32933, 32776, 32936, 32819, 32937, 45, 32897, 32933, 32937, 32938, 32940, 32937, 32941,
32819, 46, 32929, 32942, 32944, 32797, 32946, 32948, 47, 32949, 32778, 32941, 32789, 32831, 32819, 48,
32949, 32921, 32936, 32950, 32876, 49, 32951, 32953, 32954, 32944, 32797, 32956, 32776, 50, 32958, 32820,
32819, 32771, 32889, 32960, 32961, 32820, 32776, 51, 32963, 32771, 32772, 32773, 52, 32769, 32965, 32820,
32963, 32839, 32967, 32789, 32831, 32819, 53, 32963, 32839, 32967, 32789, 32831, 32819, 32771, 32840, 54,
32969, 32889, 32832, 32769, 32884, 55, 32970, 32889, 32832, 32769, 32884, 56, 32972, 32776, 32789, 32976,
32792, 32794, 57, 32977, 32979, 32981, 32789, 32792, 32794, 32982, 58, 32983, 32985, 32986, 32988, 59,
32963, 32965, 32820, 32769, 32839, 32832, 32789, 32831, 32819, 61, 32805, 32776, 32777, 32778, 32780, 32990,
32782, 32783, 32956, 62, 32776, 32771, 32772, 32785, 32991, 32797, 32991, 32956, 32788, 63, 32991, 32993,
32771, 32995, 32814, 32819, 32907, 64, 32805, 32776, 32997, 32785, 32999, 32782, 32783, 32873, 65, 33001,
32776, 32771, 32772, 32782, 32960, 32991, 32956, 66, 33003, 33005, 32953, 33007, 32776, 67, 33009, 33011,
33012, 32776, 33013, 33014, 33016, 69, 33001, 33011, 32771, 33018, 32953, 32776, 33020, 32771, 32772, 32820,
32823, 32991, 70, 33021, 33023, 32777, 32921, 33026, 32993, 32820, 32819, 71, 32776, 32771, 32772, 32785,
33021, 32946, 72, 33027, 32866, 32782, 32785, 33021, 32795, 73, 33027, 32931, 32782, 32785, 33021, 32795,
74, 33029, 32771, 32772, 32960, 33031, 33033, 75, 33021, 32795, 33035, 32785, 33037, 32795, 76, 33021,
32946, 32776, 32782, 33038, 32795, 77, 33021, 32931, 32782, 33038, 32795, 78, 33021, 32866, 33040, 32782,
33038, 32795, 80, 33041, 32946, 32776, 33043, 32862, 32795, 81, 33041, 32946, 32776, 33045, 32953, 32795,
82, 32776, 32771, 32772, 32785, 33048, 32788, 83, 33011, 33012, 32776, 32844, 32772, 33050, 32782, 32823,
86, 33052, 33048, 33011, 33045, 32953, 33054, 32776, 87, 32956, 32788, 32776, 33055, 32782, 32795, 90,
33056, 32788, 32776, 32990, 32782, 32795, 91, 33058, 32835, 32946, 32776, 32772, 32871, 92, 33058, 33059,
32777, 32982, 33061, 93, 33058, 33059, 32777, 33062, 32878, 32820, 33064, 90, 33056, 32788, 32776, 32990,
33066, 32946, 95, 32805, 32776, 32772, 32875, 32782, 33067, 96, 33069, 32819, 32772, 32875, 32782, 33067,
97, 33071, 33073, 32772, 32875, 98, 33076, 99, 33079, 32772, 33081, 33083, 33084, 33086, 101, 33088,
32831, 32777, 32850, 32854, 33090, 102, 33093, 32820, 32819, 33095, 32771, 32850, 33097, 103, 33098, 33100,
33102, 104, 33098, 33100, 33102, 105, 32894, 32854, 32792, 32895, 106, 33021, 32931, 32850, 33103, 107,
33104, 33106, 32844, 33100, 33102, 108, 33108, 32850, 33110, 109, 33104, 33113, 110, 33116, 33117, 201,
33118, 33119, 32844, 33121, 33066, 32848, 202, 32805, 32776, 32772, 32990, 203, 32775, 32776, 32772, 32990,
204, 33052, 33058, 32835, 32946, 32776, 205, 32805, 32776, 32772, 33124, 206, 33127, 32782, 33129, 33131,
207, 32927, 32946, 32776, 32772, 33132, 208, 33135, 33138, 32990, 33140, 33141, 33143, 33145, 209, 33148,
33150, 32771, 33152, 33153, 210, 33155, 33157, 32852, 255, 33159, 33160, 33161, 0};
// 134+ 1, 32769, 32771, 32772, 32773, 2, 32775, 32776,
// 135+ 32777, 32778, 32780, 32781, 32782, 32783, 32784, 4,
// 136+ 32776, 32771, 32772, 32785, 32786, 32788, 32789, 32790,
// 137+ 32792, 32794, 5, 32786, 32788, 32776, 32782, 32795,
// 138+ 32797, 32798, 6, 32786, 32800, 32801, 32781, 32785,
// 139+ 32802, 32804, 7, 32805, 32776, 32777, 32778, 32780,
// 140+ 32806, 8, 32808, 32797, 32810, 32776, 32777, 32811,
// 141+ 32812, 32814, 32815, 9, 32817, 32819, 32820, 32776,
// 142+ 32821, 32782, 32823, 32824, 32825, 10, 32808, 32797,
// 143+ 32810, 32776, 32777, 32828, 32812, 32814, 32815, 11,
// 144+ 32775, 32776, 32829, 32789, 32831, 32819, 32777, 32772,
// 145+ 32780, 32781, 12, 32832, 32789, 32831, 32819, 32777,
// 146+ 32834, 32835, 32837, 13, 32769, 32839, 32832, 32789,
// 147+ 32831, 32819, 32771, 32840, 14, 32842, 32771, 32772,
// 148+ 32773, 15, 32819, 32843, 32844, 32840, 16, 32805,
// 149+ 32776, 32777, 32772, 32780, 32806, 17, 32805, 32776,
// 150+ 32845, 32772, 32846, 32812, 32797, 32848, 18, 32819,
// 151+ 32850, 32851, 32812, 32852, 32839, 32776, 19, 32819,
// 152+ 32850, 32854, 32812, 32852, 32839, 32776, 20, 32819,
// 153+ 32850, 32851, 32848, 32852, 32839, 32855, 32776, 21,
// 154+ 32819, 32850, 32854, 32848, 32852, 32839, 32855, 32776,
// 155+ 22, 32856, 32858, 32819, 32820, 32776, 32860, 32862,
// 156+ 32825, 23, 32808, 32788, 32776, 32782, 32863, 32795,
// 157+ 24, 32864, 32866, 32777, 32868, 32869, 25, 32868,
// 158+ 32795, 32782, 32871, 32873, 26, 32819, 32771, 32772,
// 159+ 32785, 32875, 32876, 32878, 27, 32776, 32771, 32772,
// 160+ 32785, 32880, 32788, 28, 32808, 32797, 32810, 32776,
// 161+ 32777, 32825, 32882, 32883, 32884, 29, 32885, 32788,
// 162+ 32776, 32772, 32782, 32795, 30, 32887, 32889, 32880,
// 163+ 32884, 31, 32891, 32889, 32810, 32797, 32893, 32884,
// 164+ 34, 32894, 32854, 32792, 32895, 37, 32897, 32776,
// 165+ 32777, 32850, 32854, 32898, 38, 32897, 32776, 32777,
// 166+ 32900, 32901, 32819, 32902, 32814, 32903, 32901, 39,
// 167+ 32904, 32820, 32897, 32776, 32771, 32811, 32814, 32905,
// 168+ 32907, 40, 32908, 32771, 32772, 32789, 32911, 32820,
// 169+ 32784, 41, 32912, 32914, 32916, 32917, 32789, 32919,
// 170+ 32804, 42, 32819, 32771, 32863, 32921, 32923, 32925,
// 171+ 43, 32927, 32788, 32776, 32772, 32782, 32795, 44,
// 172+ 32929, 32931, 32933, 32776, 32936, 32819, 32937, 45,
// 173+ 32897, 32933, 32937, 32938, 32940, 32937, 32941, 32819,
// 174+ 46, 32929, 32942, 32944, 32797, 32946, 32948, 47,
// 175+ 32949, 32778, 32941, 32789, 32831, 32819, 48, 32949,
// 176+ 32921, 32936, 32950, 32876, 49, 32951, 32953, 32954,
// 177+ 32944, 32797, 32956, 32776, 50, 32958, 32820, 32819,
// 178+ 32771, 32889, 32960, 32961, 32820, 32776, 51, 32963,
// 179+ 32771, 32772, 32773, 52, 32769, 32965, 32820, 32963,
// 180+ 32839, 32967, 32789, 32831, 32819, 53, 32963, 32839,
// 181+ 32967, 32789, 32831, 32819, 32771, 32840, 54, 32969,
// 182+ 32889, 32832, 32769, 32884, 55, 32970, 32889, 32832,
// 183+ 32769, 32884, 56, 32972, 32776, 32789, 32976, 32792,
// 184+ 32794, 57, 32977, 32979, 32981, 32789, 32792, 32794,
// 185+ 32982, 58, 32983, 32985, 32986, 32988, 59, 32963,
// 186+ 32965, 32820, 32769, 32839, 32832, 32789, 32831, 32819,
// 187+ 61, 32805, 32776, 32777, 32778, 32780, 32990, 32782,
// 188+ 32783, 32956, 62, 32776, 32771, 32772, 32785, 32991,
// 189+ 32797, 32991, 32956, 32788, 63, 32991, 32993, 32771,
// 190+ 32995, 32814, 32819, 32907, 64, 32805, 32776, 32997,
// 191+ 32785, 32999, 32782, 32783, 32873, 65, 33001, 32776,
// 192+ 32771, 32772, 32782, 32960, 32991, 32956, 66, 33003,
// 193+ 33005, 32953, 33007, 32776, 67, 33009, 33011, 33012,
// 194+ 32776, 33013, 33014, 33016, 69, 33001, 33011, 32771,
// 195+ 33018, 32953, 32776, 33020, 32771, 32772, 32820, 32823,
// 196+ 32991, 70, 33021, 33023, 32777, 32921, 33026, 32993,
// 197+ 32820, 32819, 71, 32776, 32771, 32772, 32785, 33021,
// 198+ 32946, 72, 33027, 32866, 32782, 32785, 33021, 32795,
// 199+ 73, 33027, 32931, 32782, 32785, 33021, 32795, 74,
// 200+ 33029, 32771, 32772, 32960, 33031, 33033, 75, 33021,
// 201+ 32795, 33035, 32785, 33037, 32795, 76, 33021, 32946,
// 202+ 32776, 32782, 33038, 32795, 77, 33021, 32931, 32782,
// 203+ 33038, 32795, 78, 33021, 32866, 33040, 32782, 33038,
// 204+ 32795, 80, 33041, 32946, 32776, 33043, 32862, 32795,
// 205+ 81, 33041, 32946, 32776, 33045, 32953, 32795, 82,
// 206+ 32776, 32771, 32772, 32785, 33048, 32788, 83, 33011,
// 207+ 33012, 32776, 32844, 32772, 33050, 32782, 32823, 86,
// 208+ 33052, 33048, 33011, 33045, 32953, 33054, 32776, 87,
// 209+ 32956, 32788, 32776, 33055, 32782, 32795, 90, 33056,
// 210+ 32788, 32776, 32990, 32782, 32795, 91, 33058, 32835,
// 211+ 32946, 32776, 32772, 32871, 92, 33058, 33059, 32777,
// 212+ 32982, 33061, 93, 33058, 33059, 32777, 33062, 32878,
// 213+ 32820, 33064, 90, 33056, 32788, 32776, 32990, 33066,
// 214+ 32946, 95, 32805, 32776, 32772, 32875, 32782, 33067,
// 215+ 96, 33069, 32819, 32772, 32875, 32782, 33067, 97,
// 216+ 33071, 33073, 32772, 32875, 98, 33076, 99, 33079,
// 217+ 32772, 33081, 33083, 33084, 33086, 101, 33088, 32831,
// 218+ 32777, 32850, 32854, 33090, 102, 33093, 32820, 32819,
// 219+ 33095, 32771, 32850, 33097, 103, 33098, 33100, 33102,
// 220+ 104, 33098, 33100, 33102, 105, 32894, 32854, 32792,
// 221+ 32895, 106, 33021, 32931, 32850, 33103, 107, 33104,
// 222+ 33106, 32844, 33100, 33102, 108, 33108, 32850, 33110,
// 223+ 109, 33104, 33113, 110, 33116, 33117, 201, 33118,
// 224+ 33119, 32844, 33121, 33066, 32848, 202, 32805, 32776,
// 225+ 32772, 32990, 203, 32775, 32776, 32772, 32990, 204,
// 226+ 33052, 33058, 32835, 32946, 32776, 205, 32805, 32776,
// 227+ 32772, 33124, 206, 33127, 32782, 33129, 33131, 207,
// 228+ 32927, 32946, 32776, 32772, 33132, 208, 33135, 33138,
// 229+ 32990, 33140, 33141, 33143, 33145, 209, 33148, 33150,
// 230+ 32771, 33152, 33153, 210, 33155, 33157, 32852, 255,
// 231+ 33159, 33160, 33161, 0
// 232 %CONSTINTEGERARRAY LETT(0: 394)=0,%C
const int LETT[395] = {
0, 2022746123, 44040192, 1402470400, 1568571392, 1697528531, 1697415168, 420238040, 905969664,
1359896576, 1130779331, 1237843968, 1160558336, 1731100672, 1399848960, 1766144384, 1164308950, 1107296256,
666712647, 1342177280, 1561178752, 1134559232, 1202608459, 1570766848, 1764694635, 1130364928, 1496240856,
1271273803, 1738356700, 1603272704, 1134458063, 1567405928, 1493979864, 922726400, 1730967517, 1207959552,
1766699648, 487436928, 1227650627, 1697415168, 629062227, 1562902528, 1299185664, 1535005312, 1628328155,
1269086566, 1766078208, 1736749523, 1296871936, 554586331, 1269086464, 2046820352, 1596981248, 1229771595,
1704460288, 1775112832, 1301673600, 1736749523, 1296855273, 1400750080, 1294922468, 1697436389, 1265922760,
1498272384, 2015043993, 167772160, 1774051328, 1199430245, 1600126976, 1197751015, 1268252672, 1300119552,
1531869651, 1563951104, 2016002560, 2016002662, 1133813760, 1232910720, 1697528531, 1697120256, 1739348423,
1699617382, 1769857024, 1294917632, 1637219155, 1227653120, 1527635072, 1133924594, 52337347, 1476395008,
1628328155, 1269086464, 1199428441, 1394514304, 1867420672, 1131413504, 326537935, 1267728384, 1602533699,
1769881600, 623654400, 1602533699, 1562796032, 1400279759, 1267728384, 1199430219, 1906311168, 1829606600,
2016068253, 671088640, 1571664203, 1677721600, 1702804051, 1562902528, 1169063936, 1568145408, 1165794432,
2016585479, 675931904, 2022746667, 611319808, 1605278675, 1765801984, 2022746539, 413138944, 1527644160,
696115200, 1496240857, 1711276032, 60182770, 1229828829, 1733162854, 1803948772, 1165932360, 1496217984,
1501491940, 659509888, 821084941, 204525312, 1171165926, 153908803, 1695454431, 1543503872, 1361850880,
125688297, 1131839488, 1192089439, 1744830464, 1160249344, 1270101611, 1134866944, 1199421523, 1495793664,
1400295641, 1394606080, 1697518313, 1403336668, 1292663391, 1677721600, 2014963495, 671730176, 326553817,
1394606080, 1199430121, 1131839488, 1400191571, 1130707411, 1563951104, 1127650020, 1403303654, 1271272135,
1764524032, 2078801920, 1330565852, 2016086539, 611329536, 2016086565, 309486726, 1829655747, 1164222464,
2023359110, 2015988106, 2021244928, 61248219, 1637875712, 1769472000, 1400191571, 1130707402, 2016536859,
44040192, 665606599, 1699617280, 1766105088, 1165932361, 1711276032, 2016487187, 641728512, 1400273483,
1126170624, 2023391397, 671088640, 2016085160, 2014963497, 309502592, 2016086539, 611329573, 514491549,
167772160, 1872099150, 197439979, 1762416202, 1738816075, 1529731584, 1300150088, 1965971328, 563475429,
1130889216, 1131280206, 1271304933, 1561165824, 1702804051, 1563320320, 1805431296, 2022744479, 606076928,
1496175593, 1342177280, 1335144681, 1267728384, 1697528531, 1697538048, 1739347779, 1529348096, 665605955,
1529348096, 197531979, 1738356700, 1134458063, 1563197440, 1697413093, 1207959552, 623671269, 1234698240,
920125440, 1131708416, 1359925888, 1229771595, 1697503744, 1300125379, 1771569152, 1134989511, 1361870848,
1866805712, 665212125, 1308622848, 1227650627, 1695454431, 1543503872, 1527709696, 60111441, 1529779398,
623802329, 1805989852, 1199462731, 1201668096, 1300125379, 1744830464, 1199430211, 1400266752, 1739341824,
1133853265, 1529779398, 1037811712, 561854313, 1267728384, 1199421507, 1697415168, 1267643629, 1130673991,
1260388352, 1635596137, 1267728384, 1267643629, 1130674024, 258339139, 1476395008, 1501327576, 1805426688,
729193697, 1260388352, 2016536832, 1197751015, 1241513984, 1738848256, 1568527581, 1764553444, 1771322187,
1704769920, 1134034944, 1134457563, 1164228864, 528791875, 1562378240, 60715739, 1164228864, 1199430121,
1705802323, 1601175552, 52730187, 1738289491, 1498324096, 218920153, 1403461632, 1739462751, 1705292288,
1170735104, 1762546635, 1744830464, 1359893103, 1133813760, 662616391, 1241513984, 1199430227, 1571568211,
1601593344, 796808653, 1399103488, 387398219, 1711276032, 1735145048, 156006995, 1601452402, 1199421529,
1269085810, 1303221760, 1501418368, 125679699, 1496203264, 1762416203, 1711276032, 125686355, 1766717184,
1199421529, 1394358859, 1207959552, 1400141789, 1733196363, 1570766848, 326507240, 1265930952, 427676544,
1400279759, 1268146176, 1400157005, 1394422493, 1744830464, 1126472011, 1738289497, 1241513984, 657306823,
1600517888, 1199421131, 1570766848, 1764694528, 1400191571, 1130707403, 1207959552, 729184993, 1635670603,
1207959552, 1637134803, 1733162752, 939524096, 1563179339, 1738539008, 1135883481, 1125487232, 1739348457,
1403435595, 1207959552, 688804811, 1744830464, 1527542867, 1562902528, 1870549504, 1126472011, 1738322558,
623680221, 1225644544, 2013889667, 637534208, 640196608, 308936704, 436849283, 402653184};
// 233+ X'7890A80B',X'02A00000',X'53980000',X'5D7E8000',
// 234+ X'652E3AD3',X'652C8000',X'190C52D8',X'36000000',
// 235+ X'510E6000',X'436652C3',X'49C80000',X'452CB700',
// 236+ X'672E8000',X'53700000',X'69453980',X'4565F1D6',
// 237+ X'42000000',X'27BD3A47',X'50000000',X'5D0DB280',
// 238+ X'43A00000',X'47AE594B',X'5DA00000',X'692F1A6B',
// 239+ X'43600000',X'592ED2D8',X'4BC6194B',X'679D37DC',
// 240+ X'5F900000',X'439E74CF',X'5D6CB768',X'590C52D8',
// 241+ X'36FFB000',X'672C77DD',X'48000000',X'694DB280',
// 242+ X'1D0DB280',X'492C7643',X'652C8000',X'257EBA53',
// 243+ X'5D280000',X'4D700000',X'5B7E5280',X'610E50DB',
// 244+ X'4BA4B966',X'69443700',X'6784B1D3',X'4D4CB200',
// 245+ X'210E50DB',X'4BA4B900',X'7A000000',X'5F300000',
// 246+ X'494CD34B',X'65980000',X'69CE1280',X'4D95F680',
// 247+ X'6784B1D3',X'4D4C70E9',X'537DC000',X'4D2EF2E4',
// 248+ X'652CD2E5',X'4B7472C8',X'594DD280',X'781B2199',
// 249+ X'0A000000',X'69BDE000',X'477DDA65',X'5F600000',
// 250+ X'47643AE7',X'4B980000',X'4D7E4000',X'5B4E79D3',
// 251+ X'5D380000',X'7829C200',X'7829C266',X'4394A000',
// 252+ X'497CB980',X'652E3AD3',X'65280000',X'67AC59C7',
// 253+ X'654E1A66',X'697DE000',X'4D2EE000',X'6195FB53',
// 254+ X'492C8000',X'5B0DDC80',X'439650F2',X'031E9AC3',
// 255+ X'58000000',X'610E50DB',X'4BA4B900',X'477DD359',
// 256+ X'531E9980',X'6F4E9400',X'43700000',X'137692CF',
// 257+ X'4B900000',X'5F84B943',X'697E4000',X'252C3600',
// 258+ X'5F84B943',X'5D266000',X'537692CF',X'4B900000',
// 259+ X'477DDA4B',X'71A00000',X'6D0D94C8',X'782AC29D',
// 260+ X'28000000',X'5DADB14B',X'64000000',X'657EBA53',
// 261+ X'5D280000',X'45AE8000',X'5D780000',X'457C9C80',
// 262+ X'7832A707',X'2849E700',X'7890AA2B',X'24700000',
// 263+ X'5FAE9BD3',X'69400000',X'7890A9AB',X'18A00000',
// 264+ X'5B0E0000',X'297DE000',X'592ED2D9',X'66000000',
// 265+ X'039650F2',X'494DB2DD',X'674DF766',X'6B8612E4',
// 266+ X'457EB748',X'592E7980',X'597EF2E4',X'274F5280',
// 267+ X'30F0C30D',X'0C30CF00',X'45CE92E6',X'092C7643',
// 268+ X'650E94DF',X'5C000000',X'512C3200',X'077DD9E9',
// 269+ X'43768000',X'470DD75F',X'68000000',X'45280000',
// 270+ X'4BB4366B',X'43A4B200',X'477DB853',X'59280000',
// 271+ X'5376D0D9',X'53200000',X'652E12E9',X'53A537DC',
// 272+ X'4D0C7A5F',X'64000000',X'7819E727',X'2809CA00',
// 273+ X'1376D0D9',X'53200000',X'477DD9E9',X'43768000',
// 274+ X'53753A53',X'436539D3',X'5D380000',X'433692E4',
// 275+ X'53A4B6E6',X'4BC612C7',X'692C8000',X'7BE80000',
// 276+ X'4F4ED2DC',X'782B0A0B',X'24702600',X'782B0A25',
// 277+ X'12726486',X'6D0E54C3',X'4564A000',X'789A0286',
// 278+ X'7829898A',X'7879C000',X'03A692DB',X'61A00000',
// 279+ X'69780000',X'53753A53',X'436539CA',X'7831E91B',
// 280+ X'02A00000',X'27AC59C7',X'654E1A00',X'6944A000',
// 281+ X'457EB749',X'66000000',X'78312713',X'26400000',
// 282+ X'53767A4B',X'43200000',X'789A80A5',X'28000000',
// 283+ X'782B04A8',X'7819E729',X'1272A280',X'782B0A0B',
// 284+ X'24702625',X'1EAA849D',X'0A000000',X'6F95F74E',
// 285+ X'0BC4B1EB',X'690C564A',X'67A43A4B',X'5B2DDA00',
// 286+ X'4D7EB748',X'752E5780',X'2195F3E5',X'43680000',
// 287+ X'436DF74E',X'4BC692E5',X'5D0D8000',X'657EBA53',
// 288+ X'5D2E6000',X'6B9CB200',X'7890A19F',X'24200000',
// 289+ X'592DD3E9',X'50000000',X'4F94B0E9',X'4B900000',
// 290+ X'652E3AD3',X'652E6000',X'67AC5743',X'5B280000',
// 291+ X'27AC5743',X'5B280000',X'0BC6194B',X'679D37DC',
// 292+ X'439E74CF',X'5D2C8000',X'652C77E5',X'48000000',
// 293+ X'252C77E5',X'49980000',X'36D80000',X'43748000',
// 294+ X'510ED280',X'494CD34B',X'652DDA00',X'4D7E56C3',
// 295+ X'69980000',X'43A690C7',X'512C8000',X'6F4531D0',
// 296+ X'27A654DD',X'4E000000',X'492C7643',X'650E94DF',
// 297+ X'5C000000',X'5B0F0000',X'03953A51',X'5B2E94C6',
// 298+ X'252E77D9',X'6BA537DC',X'477E594B',X'47A00000',
// 299+ X'4D7E56C3',X'68000000',X'477DDA43',X'53766000',
// 300+ X'67AC4000',X'43953A51',X'5B2E94C6',X'3DDBC000',
// 301+ X'217D3769',X'4B900000',X'477DB843',X'652C8000',
// 302+ X'4B8EB4ED',X'4364B747',X'4B200000',X'617D3769',
// 303+ X'4B900000',X'4B8EB4ED',X'4364B768',X'0F65F143',
// 304+ X'58000000',X'597C70D8',X'6B9CA000',X'2B769CE1',
// 305+ X'4B200000',X'7831E900',X'47643AE7',X'4A000000',
// 306+ X'67A4B800',X'5D7DD4DD',X'692CF2E4',X'69943B4B',
// 307+ X'659CB980',X'43980000',X'439E72DB',X'4564B900',
// 308+ X'1F84B943',X'5D200000',X'039E72DB',X'4564B900',
// 309+ X'477DD9E9',X'65AC7A53',X'5F700000',X'0324994B',
// 310+ X'679C3153',X'594E9C80',X'0D0C74D9',X'53A72000',
// 311+ X'67AE185F',X'65A4B200',X'45C80000',X'690E53CB',
// 312+ X'68000000',X'510E526F',X'4394A000',X'277EB947',
// 313+ X'4A000000',X'477DDA53',X'5DAC3A53',X'5F766000',
// 314+ X'2F7E55CD',X'5364A000',X'17173A4B',X'66000000',
// 315+ X'676C3658',X'094C7A53',X'5F743972',X'477DB859',
// 316+ X'4BA4B672',X'4DAD9600',X'597DD380',X'077DB853',
// 317+ X'592E4000',X'690C564B',X'66000000',X'077DD253',
// 318+ X'694DF700',X'477DB859',X'531C3A4B',X'48000000',
// 319+ X'537477DD',X'674E7A4B',X'5DA00000',X'13761AE8',
// 320+ X'4B7492C8',X'197DD380',X'537692CF',X'4B966000',
// 321+ X'5374B34D',X'531D32DD',X'68000000',X'4324994B',
// 322+ X'679C3159',X'4A000000',X'272DB4C7',X'5F65F700',
// 323+ X'477DB6CB',X'5DA00000',X'692F1A00',X'53753A53',
// 324+ X'436539CB',X'48000000',X'2B767AE1',X'617E5A4B',
// 325+ X'48000000',X'6194B1D3',X'674DF700',X'38000000',
// 326+ X'5D2C394B',X'67A00000',X'43B434D9',X'43159280',
// 327+ X'67AC59E9',X'53A6BA4B',X'48000000',X'290E53CB',
// 328+ X'68000000',X'5B0C7453',X'5D280000',X'6F7E5200',
// 329+ X'4324994B',X'679CB27E',X'252C9ADD',X'490DDA00',
// 330+ X'78098483',X'26000000',X'2628A000',X'126A0000',
// 331+ X'1A09CA83',X'18000000'
// 332 %INTEGER I,J,K,M,Q,S
int I;
int J;
int K;
int M;
int Q;
int S;
// 333 %STRING(70)OMESS
_imp_string70 OMESS;
// 334 OMESS=" "
_imp_strncpy(/*?*/ &OMESS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal(" ");
(void *)&tmp;
}),
/*max:*/ 70);
// 335 %CYCLE I=1,1,WORDMAX-1
// %for I = 1, 1, 780 - 1 %cycle
{
int _final = 780 - 1;
if (invalid_for_loop(1, 1, _final)) _imp_signal(5, 1, 0, "Illegal cycle I = 1, 1, 780 - 1");
I = 0;
L_0003:
if (I == _final) goto L_0004;
I += 1;
// 336 ->FOUND %IF N=WORD(I)
if (N != WORD[I]) goto L_0006;
goto U_1000;
L_0006:;
// 337 %REPEAT
goto L_0003;
}
L_0004:;
// 338 I=DEFAULT
I = 776;
// 339 FOUND:
U_1000:;
// 340 J=1
J = 1;
// 341 %CYCLE
L_0007:;
// 342 K=WORD(I+J)
K = WORD[I + J];
// 343 %IF K&X'8000'=0 %THEN %EXIT
if (K & 32768 != 0) goto L_0008;
goto L_0009;
L_0008:;
// 344 K=K&X'7FFF'
K = K & 32767;
// 345 OMESS=OMESS." " %UNLESS J=1
if (J == 1) goto L_000A;
_imp_strncpy(/*?*/ &OMESS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &OMESS, (_imp_string *)/*?*/ _imp_str_literal_ptr(" "));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 70);
L_000A:;
// 346 {%UNTIL M&1=0} %CYCLE
L_000B:;
// 347 M=LETT(K); S=25
M = LETT[K];
S = 25;
// 348 {%UNTIL S<0} %CYCLE
L_000C:;
// 349 Q=M>>S&63;
Q = (unsigned int)M >> S & 63;
// 350 %IF Q\=0 %THEN OMESS=OMESS.TOSTRING(OUTTT(Q))
if (Q == 0) goto L_000D;
_imp_strncpy(/*?*/ &OMESS, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &OMESS, ({
__typeof__(_imp_string1) tmp; /*E*/
tmp = _imp_TOSTRING(OUTTT[Q]);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 70);
L_000D:;
// 351 S=S-6
S = S - 6;
// 352 %REPEAT %UNTIL S<0
if (S < 0) goto L_000E;
goto L_000C;
L_000E:;
// 353 K=K+1
K = K + 1;
// 354 %REPEAT %UNTIL M&1=0
if (M & 1 == 0) goto L_000F;
goto L_000B;
L_000F:;
// 355 J=J+1
J = J + 1;
// 356 %REPEAT
goto L_0007;
L_0009:;
// 357 %RESULT=OMESS
return *(_imp_string255 *)/*?*/ &OMESS;
// 358 %END
} /* end of MESSAGE */
// 359 %STRING(16)%FN SWRITE(%INTEGER VALUE, PLACES)
_imp_string16 SWRITE(int VALUE, int PLACES) {
// 360 %STRING (16) S
_imp_string16 S;
// 361 %STRING(1)SIGN
_imp_string1 SIGN;
// 362 %INTEGER D0, D1, D2
int D0;
int D1;
int D2;
// 363 PLACES=PLACES&15
PLACES = PLACES & 15;
// 364 SIGN=" "
_imp_strncpy(/*?*/ &SIGN, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal(" ");
(void *)&tmp;
}),
/*max:*/ 1);
// 365 S=""
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 16);
// 366 %IF VALUE<0 %THEN SIGN="-" %AND VALUE=-VALUE
if (VALUE >= 0) goto L_0010;
_imp_strncpy(/*?*/ &SIGN, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("-");
(void *)&tmp;
}),
/*max:*/ 1);
VALUE = -VALUE;
L_0010:;
// 367 D0=VALUE
D0 = VALUE;
// 368 %CYCLE
L_0011:;
// 369 D1=D0//10
D1 = ((long)D0 / (long)10);
// 370 D2=D0-10*D1
D2 = D0 - 10 * D1;
// 371 S=TOSTRING(D2+'0').S
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join(({
__typeof__(_imp_string1) tmp; /*D*/
tmp = _imp_TOSTRING(D2 + 48);
(void *)&tmp;
}),
(_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 16);
// 372 D0=D1
D0 = D1;
// 373 %REPEAT %UNTIL D0=0
if (D0 == 0) goto L_0012;
goto L_0011;
L_0012:;
// 374 S=SIGN.S
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &SIGN, (_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 16);
// 375 S=" ".S %WHILE LENGTH(S)<=PLACES
L_0013:;
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &S) > PLACES) goto L_0014;
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr(" "), (_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 16);
goto L_0013;
L_0014:;
// 376 %RESULT=S
return *(_imp_string16 *)/*?*/ &S;
// 377 %END
} /* end of SWRITE */
// 378 %ROUTINE FAULT(%INTEGER N, DATA, IDENT)
void FAULT(int N, int DATA, int IDENT) {
// 379 !***********************************************************************
// 380 !* SETS UP AN ERROR MESSAGE AND SHOVES IT OUT ONTO THE LISTING *
// 381 !* AN ALSO OPTIONALLY TO THE TERMINAL *
// 382 !***********************************************************************
// 383 %INTEGER I, J, S, T, Q, QMAX, LENGTH
int I;
int J;
int S;
int T;
int Q;
int QMAX;
int LENGTH;
// 384 %STRING(255)MESS1,MESS2,WK1,WK2
_imp_string255 MESS1;
_imp_string255 MESS2;
_imp_string255 WK1;
_imp_string255 WK2;
// 385 MESS1=""; MESS2=""
_imp_strncpy(/*?*/ &MESS1, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = _imp_str_literal("");
(void *)&tmp;
}),
/*max:*/ 255);
// 386 %IF N=100 %THEN %START; ! SYNTAX FAULTS ARE SPECIAL
if (N != 100) goto L_0015;
// 387 MESS1="
_imp_strncpy(/*?*/ &MESS1, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp = _imp_join(
(_imp_string *)/*?*/ _imp_str_literal_ptr("\n* Failed to analyse line "), ({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(99, 2);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr("\n "));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 388+ * Failed to analyse line ".SWRITE(99,2)."
// 389+ "
// 390 J=0; S=0; T=0; Q=DATA; QMAX=IDENT>>16
J = 0;
S = 0;
T = 0;
Q = DATA;
QMAX = (unsigned int)IDENT >> 16;
// 391 LENGTH=IDENT&X'FFFF'
LENGTH = IDENT & 65535;
// 392 %IF Q=QMAX %THEN S=T
if (Q != QMAX) goto L_0016;
S = T;
L_0016:;
// 393 %FINISH %ELSE %START
goto L_0017;
L_0015:;
// 394 MESS1="
_imp_strncpy(/*?*/ &MESS1, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("\n*"), ({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(99, 4);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" "));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 395+ *".SWRITE(99, 4)." "
// 396 MESS1=MESS1."FAULT".SWRITE(N,2)
_imp_strncpy(/*?*/ &MESS1, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &MESS1,
(_imp_string *)/*?*/ _imp_str_literal_ptr("FAULT"));
(_imp_string255 *)&tmp;
}),
({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(N, 2);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
// 397 MESS2=MESSAGE(N)
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = MESSAGE(N);
(void *)&tmp;
}),
/*max:*/ 255);
// 398 %IF MESS2->WK1.("##").WK2 %THEN %C
if (!(_imp_resolve(*({
_imp_string255 tmp = MESS2;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK1, *({
_imp_string tmp = _imp_str_literal("##");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK2)))
goto L_0018;
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &WK1, ({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(IDENT, 1);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &WK2);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_0018:;
// 399+ MESS2=WK1.SWRITE(IDENT,1).WK2
// 400 %IF MESS2->WK1.("#").WK2 %THEN %C
if (!(_imp_resolve(*({
_imp_string255 tmp = MESS2;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK1, *({
_imp_string tmp = _imp_str_literal("#");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK2)))
goto L_0019;
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &WK1, ({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(DATA, 1);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &WK2);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_0019:;
// 401+ MESS2=WK1.SWRITE(DATA,1).WK2
// 402 %IF MESS2->WK1.("&&").WK2 %THEN %C
if (!(_imp_resolve(*({
_imp_string255 tmp = MESS2;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK1, *({
_imp_string tmp = _imp_str_literal("&&");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK2)))
goto L_001A;
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &WK1, ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = PRINTNAME(DATA);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &WK2);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_001A:;
// 403+ MESS2=WK1.PRINTNAME(DATA).WK2
// 404 %IF MESS2->WK1.("&").WK2 %THEN %C
if (!(_imp_resolve(*({
_imp_string255 tmp = MESS2;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK1, *({
_imp_string tmp = _imp_str_literal("&");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &WK2)))
goto L_001B;
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &WK1, ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = PRINTNAME(IDENT);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &WK2);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_001B:;
// 405+ MESS2=WK1.PRINTNAME(IDENT).WK2
// 406 %IF N>100 %THEN MESS2=MESS2." Disaster"
if (N <= 100) goto L_001C;
_imp_strncpy(/*?*/ &MESS2, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &MESS2, (_imp_string *)/*?*/ _imp_str_literal_ptr(" Disaster"));
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 255);
L_001C:;
// 407 %FINISH
L_0017:;
// 408 PRINTSTRING(MESS1)
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = MESS1 /*q*/;
(_imp_string255 *)&tmp;
})
);
// 409 PRINTSTRING(MESS2) %IF MESS2#""
if (_imp_strcmp((_imp_string *)/*?*/ &MESS2, (_imp_string *)/*?*/ _imp_str_literal_ptr("")) == 0) goto L_001D;
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = MESS2 /*q*/;
(_imp_string255 *)&tmp;
})
);
L_001D:;
// 410 NEWLINE
_imp_NEWLINE();
// 411 %IF N=109 %THEN %MONITOR
if (N != 109) goto L_001E;
/*_imp_monitor(__LINE__, __FILE__, PRETTY_FUNCTION);*/
L_001E:;
// 412 ! %IF N=109 %THEN PARM_DCOMP=1 %AND CODEOUT
// 413 %IF N>100 %THEN %STOP
if (N <= 100) goto L_001F;
_imp_stop(0);
L_001F:;
// 414 %END
return;
} /* end of FAULT */
// ?I unused
// 415 %ROUTINE WARN(%INTEGER N,V)
void WARN(int N, int V) {
// 416 %STRING(30) T; %STRING(120) S
_imp_string30 T;
_imp_string120 S;
// 417 S=MESSAGE(N+200)
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = MESSAGE(N + 200);
(void *)&tmp;
}),
/*max:*/ 120);
// 418 %IF S->S.("&").T %THEN S=S.PRINTNAME(V).T
if (!(_imp_resolve(*({
_imp_string120 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &S, *({
_imp_string tmp = _imp_str_literal("&");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &T)))
goto L_0020;
_imp_strncpy(/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*B*/
tmp = *({
_imp_string255 tmp = _imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &S, ({
__typeof__(_imp_string255) tmp; /*E*/
tmp = PRINTNAME(V);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ &T);
(_imp_string255 *)&tmp;
});
(void *)&tmp;
}),
/*max:*/ 120);
L_0020:;
// 419 PRINTSTRING("
_imp_PRINTSTRING(
*({
__typeof__(_imp_string255) tmp = *({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ &*({
_imp_string255 tmp =
_imp_join((_imp_string *)/*?*/ _imp_str_literal_ptr("\n? Warning :- "),
(_imp_string *)/*?*/ &S);
(_imp_string255 *)&tmp;
}),
(_imp_string *)/*?*/ _imp_str_literal_ptr(" at line No"));
(_imp_string255 *)&tmp;
}),
({
__typeof__(_imp_string16) tmp; /*E*/
tmp = SWRITE(101, 1);
(void *)&tmp;
}));
(_imp_string255 *)&tmp;
}) /*q*/;
(_imp_string255 *)&tmp;
})
);
// 420+ ? Warning :- ".S." at line No".SWRITE(101,1))
// 421 NEWLINE
_imp_NEWLINE();
// 422 %END
return;
} /* end of WARN */
// 423 FAULT(16,0,0)
FAULT(16, 0, 0);
// 424 WARN(2,76)
WARN(2, 76);
// 425 %ENDOFPROGRAM
_imp_stop(0);
return 0;
end_0:;
}