COMPILATION LISTING OF SEGMENT: >spec>install>1212>GENOPER.pascal Compiled by: Grenoble University Multics Pascal Compiler, Release 8.03 of February the 15th, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/12/86 1708.3 mst Wed options: map no_table full_extensions private_storage no_io_warnings no_interactive 1 (* ************************************************************************* 2* * * 3* * Copyright (c) 1980 by Centre Interuniversitaire de Calcul de Grenoble * 4* * and Institut National de Recherche en Informatique et Automatique * 5* * * 6* ************************************************************************* *) 7 8 9 10 11 (* HISTORY COMMENTS: 12* 1) change(86-09-11,JMAthane), approve(86-09-11,MCR7521), 13* audit(86-09-15,JPFauche), install(86-11-12,MR12.0-1212): 14* Release 8.03 for MR12 15* END HISTORY COMMENTS *) 16 17 18 $OPTIONS switch trace := true ; switch security := true $ 19 PROGRAM genoper ; 20 $IMPORT 21 (* IMPORTED PROCEDURES *) 22 'CONTEXTTABLE (pascal)' : 23 conformantdim, 24 create_konst_box, 25 create_vars_box, 26 create_types_box ; 27 28 'UNIQUE (pascal)' : 29 heaperror ; 30 31 'RACINE (pascal)' : 32 error, 33 nameisref, 34 nextline, 35 poweroftwo, 36 sup ; 37 'GENERE (pascal)' : 38 gendesca, 39 gendescb, 40 geneism, 41 genstand, 42 inser ; 43 'STATE (pascal)' : 44 addressvar, 45 calcvarient, 46 choicerarq, 47 entercst, 48 enterlcst, 49 enterllcst, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 2 50 enterundlab, 51 freebloc, 52 gencheckmultover, 53 gencstecode, 54 genexceptcode, 55 getpr, 56 loadadr, 57 newbloc, 58 oldnewstor, 59 regenere, 60 raisused, 61 rqisused, 62 sauvereg, 63 stack_extension, 64 transfer ; 65 'MODVARIABLE (pascal)' : 66 init_desc_address ; 67 68 'MODATTR (pascal) ' : 69 convreal, 70 easyvar, 71 freeattr, 72 initattrvarbl, 73 isstring, 74 lvalvarbl, 75 printattr, 76 varissimple ; 77 (* IMPORTED VARIABLES *) 78 'DECLARE (pascal)' : 79 nextalf ; 80 81 'RACINE (pascal)' : 82 alfaptr, 83 charptr, 84 declarationpart, 85 envstandard, 86 level, 87 intptr, 88 mpcogout, 89 nilptr, 90 realptr, 91 string_ptr, 92 symbolfile, 93 symbolline, 94 symbolmap ; 95 'GENERE (pascal)' : 96 cb, 97 illegal_generation, 98 indfich, 99 mfari1, 100 mfari2, 101 usednameaddr ; 102 'STATE (pascal)' : 103 asscheck, 104 cltransf, 105 currentbloc, 106 currentpr, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 3 107 gattr, 108 maxprused, 109 modif, 110 nilanaq, 111 nileraq, 112 opaq, 113 prinst, 114 psrsize, 115 revcltransf, 116 stattrace $ 117 118 $EXPORT 119 check_dynamic_string_length, 120 gen_delete, 121 gen_insert, 122 gen_string_comp, 123 gen_substring, 124 gen_string_position, 125 genandor, 126 gencompare, 127 genconcat, 128 gendivmod, 129 genjump, 130 genopadd, 131 genopdivi, 132 genopmult, 133 genoppw, 134 genopsub, 135 genptcomp, 136 genstcomp $ 137 138 139 140 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 4 141 142 143 $INCLUDE 'CONSTTYPE' $(* BEGIN INCLUDE FILE CONSTTYPE.incl.pascal *) 1 2 1 3 (* HISTORY COMMENTS: 1 4* 1) change(86-09-11,JMAthane), approve(86-09-11,MCR7521), 1 5* audit(86-09-15,JPFauche), install(86-11-12,MR12.0-1212): 1 6* Release 8.03 for MR12 1 7* END HISTORY COMMENTS *) 1 8 1 9 CONST (* VERSION 7.05 *) 1 10 (* ARRAY'S BOUNDS *) 1 11 1 12 minno = 0 ; (* MIN VALUE FOR NO ; SEE TYPE NORANGE *) 1 13 maxno = 63 ; (* MAX VALUE FORNO ; " " " *) { Modified for SimOne } 1 14 ptlimit = 20 ; (* MAX FOR PTLIST 0 ..PTLIMIT *) 1 15 displimit = 30 ; (* " " DISPLAY ..DISPLIMIT *) 1 16 maxlabs = 50 ; (* " " LABTAB ..MAXLABS *) 1 17 fillimit = 50 ; (* " " FILPTS .. FILLIMIT *) 1 18 maxlevel = 20 ; (* SEE LEVRANGE TYPE *) 1 19 maxerrline = 16 ; (* MAX FOR ERRINX *) 1 20 maxerpg = 2 ; (* MAX FOR ERRORSFOUND, PAGESERRORS 0.. *) 1 21 undmax = 1000 ; (* " " UNDLAB 1.. *) 1 22 longalfbox = 16 ; (* SEE ALFAVALUE TYPE *) 1 23 lgparm = 100 ; (* PARMLIST IN $PARM *) 1 24 lgparm1 = lgparm - 1 ; (* LGPARM - 1 *) 1 25 maxpredef = 99 ; (* INITNAME 0 .. MAXPREDEF *) 1 26 maxident = 32 ; (* LENGTH MAX FOR AN ID. *) 1 27 (* DONT MODIFY WITHOUT MODIFY maxident *) 1 28 (* IN optimized_procedures.alm *) 1 29 maxnbofkeywords = 49 ; { Modified for SimOne } 1 30 1 31 maxkeylength = 12 ; (* LENGTH MAX FOR A KEY-WORD *) { Modified for SimOne } 1 32 maxexternname = 168 ; (* length max for an external name *) 1 33 maxval = 256 ; (* LENGTH MAX FOR A STRING *) 1 34 maxstring = 256 ; (* MAX LENGTH FOR A STRING (STAND) <= MAXVAL *) 1 35 alfaleng = 8 ; (* SIZE OF ALFA TYPE *) 1 36 maxfich = 50000 ; (* FOR FICHINTER *) 1 37 longboxlist = 20 ; (* MAX. NB. OF REG. BOXES *) 1 38 maxref = 25 ; 1 39 maxfield = 25 ; 1 40 1 41 1 42 maxnewsize = 261094 ; (* MAX WORD SIZE FOR NEW *) 1 43 1 44 (* POWERS OF 2 *) 1 45 twoto4 = 2 * 2 * 2 * 2 ; 1 46 twoto6 = twoto4 * 2 * 2 ; 1 47 twoto8 = twoto6 * 2 * 2 ; 1 48 twoto8m1 = twoto8 - 1 ; 1 49 twoto9 = twoto8 * 2 ; 1 50 twoto10 = twoto9 * 2 ; 1 51 twoto12 = twoto10 * 2 * 2 ; 1 52 twoto14 = twoto6 * twoto8 ; 1 53 twoto15 = twoto14 * 2 ; 1 54 twoto16 = twoto15 * 2 ; 1 55 twoto17 = twoto16 * 2 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 5 1 56 twoto17m1 = twoto17 - 1 ; 1 57 twoto18 = twoto17 * 2 ; 1 58 twoto18m1 = twoto18 - 1 ; 1 59 twoto27 = twoto18 * twoto9 ; 1 60 1 61 (* COMPUTER'S DESCRIPTION *) 1 62 1 63 bitsinbyte = 9 ; 1 64 bytesinword = 4 ; 1 65 bytesinhword = bytesinword DIV 2 ; 1 66 bytesindword = bytesinword * 2 ; 1 67 1 68 wordsinpage = twoto10 ; 1 69 pagesinsegment = twoto8 - 1 ; 1 70 wordsinsegment = wordsinpage * pagesinsegment ; 1 71 maxglobsize = twoto18 * bytesinword ; (* MAX SIZE FOR GLOBALS IN BYTES *) 1 72 maxstacksize = twoto15 * bytesinword ; (* MAX SIZE FOR A STACK FRAME IN BYTES *) 1 73 maxwseg = wordsinsegment ; (* MAX NBR OF WORDS IN SEGMENT = 255 * 1024 *) 1 74 1 75 nilleft = '1FFFC0023'x ; (* VALUE FOR LEFT WORD OF THE "NIL" ITS *) 1 76 nilright = '40000'x ; (* VALUE FOR RIGHT WORD OF THE "NIL" ITS *) 1 77 packednil = '007777000001'o ; (* MULTICS PACKED NIL PTR *) 1 78 bitsinword = bitsinbyte * bytesinword ; 1 79 bitsinhword = bitsinbyte * bytesinhword ; 1 80 bitsindword = 2 * bitsinword ; 1 81 byteinbyte = 1 ; 1 82 byteshift = 512 ; (* USED TO SHIFT AN INTEGER BY MULTIPLICATION *) 1 83 (* AND SUBSEQUENT VALUES *) 1 84 maxint = 34359738367 ; (* MAX. INTEGER *) 1 85 (* maxreal = 1.701411834604692317e38 ; *) 1 86 (* minreal = 1.469367938527859386e-39 ; *) 1 87 racmaxint = 131072 ; (* USED TO AVOID OVERFLOW *) 1 88 (* IN INTEGER MULTIPLICATION *) 1 89 ntwotobyte = twoto8 - 1 ; (* MAX. NUM. VALUE IN A BYTE *) 1 90 ntwotohword = twoto17 - 1 ; (* MAX. NUM. VALUE IN A HALF. WORD *) 1 91 stwotobyte = twoto9 - 1 ; (* MAX. SCAL. VALUE IN A BYTE *) 1 92 setrange = 8 * bitsinword ; (* SIZE OF STANDARD SETS : 8 WORDS MAX *) 1 93 maxset = setrange - 1 ; (* SETRANGE -1 *) 1 94 maxerrnum = 3 * setrange - 1 ; (* 3*SETRANGE -1 *) 1 95 maxpage = maxerrnum ; 1 96 maxchar = 127 ; (* < MAXSET *) 1 97 1 98 (* IN LISTING *) 1 99 maxpageline = 59 ; (* MAX NUMBER OF LINES ON A LISTING'S PAGE *) 1 100 maxlinepascal = 400 ; 1 101 maxsliceline = 136 ; 1 102 lgprint = maxsliceline - 10 ; (* SLICE OF PRINTED LINES *) 1 103 1 104 (* COMPILATION'S RETURN CODE *) 1 105 1 106 errorcond = 8 ; 1 107 noerrorcond = 0 ; 1 108 1 109 wordsforset = 8 ; 1 110 bytesforset = wordsforset * bytesinword ; (* MAX. NUM. OF BYTES IN A SET *) 1 111 bitsforset = wordsforset * bitsinword ; (* MAX. NUM. OF BITS IN A SET *) 1 112 bornesupset = wordsforset - 1 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 6 1 113 psrinbytes = 32 ; (* SIZE OF PSR REG. IN BYTES *) 1 114 (* AND EXTERNAL CONSTRAINTS *) 1 115 maxdig = bitsinword DIV 3 ; (* MAX. NUMBER OF DIGITS IN OCTAL *) 1 116 maxexpon = 1000 ; (* TO AVOID OVERFLOW WITH EXPONENTS *) 1 117 maxhexdi = bitsinword DIV 4 ; (* MAX. NUMBER OF HEXA CHARS *) 1 118 max10 = 3435973835 ; (* TO AVOID OVERFLOW IN INTEGER CST *) 1 119 maxexp = 39 ; (* MAX. SCALING FACTOR ALLOWED *) 1 120 minexp = -38 ; (* MIN. SCALING FACTOR ALLOWED *) 1 121 maxdigitsinteger = 12 ; 1 122 maxdigitsreal = 20 ; 1 123 maxintegerstring = '+3435973836700000000' ; 1 124 maxrealstring = '+1701411834604692317' ; 1 125 minrealstring = '+1469367938527859386' ; 1 126 1 127 (* GENERATION CONSTRAINTS AND CONSTANTS *) 1 128 stackboundary = 16 * bytesinword ; (* BOUNDARY FOR A STACK FRAME *) 1 129 maxrel = 132 ; (* LENGTH OF PHYSICAL LINE *) 1 130 pascdebstacklocal = 384 ; (* BYTES DISP. OF FIRST FREE ST. IN PASCAL FRAME *) 1 131 simdebstacklocal = 448 ; (* BYTES DISP. OF FIRST FREE ST. IN SIMONE FRAME *) { Modified for SimOne } 1 132 procparmsize = 24 ; (* SIZE FOR FORMAL PROCEDURE PARAMETERS *) 1 133 mathworksizew = 32 ; (* SIZE OF WORK AREA FOR MATH OPS *) 1 134 modulinitsize = 48 ; { Inserted for SimOne } 1 135 monitorinitsize = 88 ; { Inserted for SimOne } 1 136 1 137 (* USEFUL TOOLS *) 1 138 blank = ' ' ; 1 139 longblank = ' ' ; 1 140 1 141 (* ALM GENERATION CONSTANTS *) 1 142 bit29 = 64 ; (* USE OF POINTER REGISTER BIT (BIT 29) *) 1 143 inhibit = 128 ; (* INTERRUPT INHIBITION BIT (BIT28) *) 1 144 o41 = 33 ; (* ITS *) 1 145 o43 = 35 ; (* ITP *) 1 146 1 147 1 148 (* ENTRY POINTS OF OPERATORS *) 1 149 1 150 log10switch = 6 ; 1 151 (* Used in UNIQUE for predefinition of log10 *) 1 152 (* and in EXPR for scientific subroutines *) 1 153 1 154 mainentryplace = 79 ; 1 155 extentryplace = 88 ; 1 156 checkbeforeeolnplace = 66 ; 1 157 checkbeforeeofplace = 67 ; 1 158 checkbeforetextreferenceplace = 68 ; 1 159 gotoexitextplace = 3 ; 1 160 intentryplace = 89 ; 1 161 scientplace = 80 ; 1 162 resetplace = 11 ; 1 163 rewriteplace = 12 ; 1 164 closeplace = 13 ; 1 165 readtextplace = 14 ; 1 166 readseqplace = 15 ; 1 167 readlnplace = 16 ; 1 168 writetextplace = 17 ; 1 169 writeseqplace = 18 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 7 1 170 writelnplace = 19 ; 1 171 pageplace = 20 ; 1 172 puttextplace = 21 ; 1 173 putseqplace = 22 ; 1 174 gettextplace = 23 ; 1 175 getseqplace = 24 ; 1 176 gotoexitplace = 25 ; 1 177 newplace = 26 ; 1 178 disposeplace = 27 ; 1 179 resetheapplace = 28 ; 1 180 truncplace = 63 ; 1 181 roundplace = 64 ; 1 182 rafltplace = 31 ; 1 183 rqfltplace = 32 ; 1 184 putdirplace = 33 ; 1 185 getdirplace = 34 ; 1 186 fupdtplace = 35 ; 1 187 fcloseplace = 37 ; 1 188 connectplace = 36 ; 1 189 exceptcodeplace = 38 ; 1 190 intreturnplace = 39 ; 1 191 extreturnplace = 40 ; 1 192 returnzeroplace = 87 ; 1 193 intcallplace = 42 ; 1 194 extcallplace = 43 ; 1 195 initfsballocplace = 72 ; 1 196 dateopplace = 47 ; 1 197 timeopplace = 48 ; 1 198 clockopplace = 49 ; 1 199 longprofileplace = 50 ; 1 200 flushplace = 65 ; 1 201 fappendplace = 82 ; 1 202 freopenplace = 81 ; 1 203 argcshortplace = 69 ; 1 204 argcplace = 70 ; 1 205 argcextplace = 71 ; 1 206 argvshortplace = 73 ; 1 207 argvplace = 74 ; 1 208 argvextplace = 75 ; 1 209 stopshortplace = 76 ; 1 210 stopplace = 77 ; 1 211 stopextplace = 78 ; 1 212 sreadcharplace = 90 ; 1 213 sreadintegerplace = 91 ; 1 214 sreadrealplace = 92 ; 1 215 swritecharplace = 93 ; 1 216 swritestringplace = 94 ; 1 217 swritesubstringplace = 95 ; 1 218 swritebooleanplace = 96 ; 1 219 swriteintegerplace = 97 ; 1 220 swriterealeplace = 98 ; 1 221 swriterealdplace = 99 ; 1 222 swriteenumplace = 100 ; 1 223 parmproccheckplace = 101 ; 1 224 functionvaluesetplace = 102 ; 1 225 functionvaluecheckplace = 103 ; 1 226 extend_stack_op_place = 104 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 8 1 227 reset_stack_end_op_place = 105 ; 1 228 1 229 (* CONST USED WITH OPERATORS *) 1 230 transoptvptr = 40 ; (* DISP / PR7 OF TRANSFER VECTOR *) 1 231 lotptrdep = 22 ; (* DISP / PR7 LOT-PTR *) 1 232 pascoperatorsdep = 8 ; (* PASCAL OPERATORS *) 1 233 (* EXECUTION BITS FOR STACK FRAME *) 1 234 mainbit = 131072 ; (* bit 18 *) 1 235 fastbit = 65536 ; (* bit 19 *) 1 236 checkbit = 32768 ; (* bit 20 *) 1 237 interactivebit = 16384 ; (* bit 21 *) 1 238 iowarningsbit = 8192 ; (* bit 22 *) 1 239 solstandardbit = 32 ; (* bit 30 *) 1 240 french_bit = 4 ; (* bit 31 *) 1 241 1 242 (* PASCAL ERRORS CODES *) 1 243 1 244 inxerrcode = 1 ; (* INDEX *) 1 245 chrerrcode = 2 ; (* FCT CHR *) 1 246 prderrcode = 3 ; (* FCT PRED *) 1 247 sucerrcode = 4 ; (* FCT SUCC *) 1 248 forerricode = 5 ; (* FOR INF *) 1 249 forerrscode = 6 ; (* FOR SUP *) 1 250 asserrcode = 7 ; (* ASSIGN *) 1 251 diverrcode = 8 ; (* DIV BY 0 *) 1 252 parerrcode = 9 ; (* PARAM. *) 1 253 caserrcode = 10 ; (* CASE *) 1 254 pckerrcode = 11 ; (* PACK/UNPK *) 1 255 seterrcode = 12 ; (* SET EXP *) 1 256 mlterrcode = 13 ; (* INTEGER MULT OVERFLOW *) 1 257 eofeolnerrcode = 14 ; (* Is eof or eoln meaningsfull *) 1 258 randinterrcode = 15 ; (* BAD BOUNDS FOR RANDINT *) 1 259 stringlength_range_error = 16 ; 1 260 stringlength_assignment_error = 17 ; 1 261 substring_offset_error = 18 ; 1 262 substring_negative_length_error = 19 ; 1 263 substring_too_long_error = 20 ; 1 264 delete_offset_error = 21 ; 1 265 delete_negative_length_error = 22 ; 1 266 delete_too_long_error = 23 ; 1 267 insert_overflow_error = 24 ; 1 268 bad_string_index = 25 ; 1 269 bad_date_time_parameter = 26 ; 1 270 1 271 (* ** FOR CONFORMANT ARRAY *) 1 272 1 273 confdimw = 4 ; (* FOUR ITS IN PARAMETERS LIST *) 1 274 dopevectorsize = 12 ; 1 275 (* LO HI SIZE SUBSIZE *) 1 276 confdimsize = confdimw * bytesinword ; (* SAME IN BYTES *) 1 277 1 278 (* STACK FRAME DISPL. *) 1 279 1 280 argptw = 26 ; (* SAVE ARG POINTER ENTRY *) 1 281 next_sp_place = 18 ; (* MULTIC STACK_FRAME NEXT_SP *) 1 282 pr4depw = 36 ; (* SAVE PR4 HERE *) 1 283 psrdepw = 56 ; (* PSEUDO REGISTER FOR SET *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 9 1 284 psrdepb = 224 ; 1 285 dlkdepw = 32 ; (* DYNAMIC LINK *) 1 286 fctdeplw = 34 ; (* RETURNED VALUE FOR A FUNCTION *) 1 287 fctdepl = 136 ; 1 288 evareaw = 38 ; (* WORKING EVEN STORAGE *) 1 289 fsbadrw = 68 ; (* FSB STORED HERE FOR I/0 OPERATORS *) 1 290 valplacew = 70 ; (* VALUE TO BE WRITTEN OR POINTER ON IT *) 1 291 longplacew = 73 ; (* REQUESTED LENGTH *) 1 292 scaleplacew = 74 ; (* FOR REAL SCALING FACTOR *) 1 293 longstplacew = 74 ; (* REAL LENGTH FOR STRINGS *) 1 294 1 295 (* INIT ZONE FOR LINKAGE SECTION *) 1 296 (* 8 WORDS HEADER *) 1 297 1 298 firstglobal = 8 ; (* WORD OFFSET OF FIRST GLOBAL (EVEN) *) 1 299 1 300 (* FSB DISPLACEMENTS *) 1 301 1 302 lgfilename = 32 ; 1 303 iotextbuffersize = 400 ; 1 304 fdescsize = 152 ; 1 305 fsbpointersize = 8 ; 1 306 fstatusw = 7 ; 1 307 fposw = 21 ; 1 308 fsizew = 22 ; 1 309 fllengthw = 23 ; 1 310 fstatusb = 28 ; 1 311 fposb = 84 ; 1 312 fsizeb = 88 ; 1 313 fllengthb = 92 ; 1 314 eofw = 4 ; (* WORD BOOLEAN EOF *) 1 315 eofb = 16 ; 1 316 eolnw = 27 ; (* WORD BOOLEAN EOLN *) 1 317 eolnb = 108 ; 1 318 1 319 (* PROFILE *) 1 320 1 321 pclength = 2 ; (* PROFILE COUNTER LENGTH IN WORDS *) 1 322 lpclength = 4 ; (* LONG PROFILE COUNTER LENGTH IN WORDS *) 1 323 phl = 0 ; (* PROFILE HEADER LENGTH *) 1 324 lphl = 13 ; (* LONG PROFILE HEADER LENGTH IN WORDS *) 1 325 1 326 (* RELOCATION CODES *) 1 327 1 328 link18 = '900000000'x ; (* "10010"b *) 1 329 link15 = 'A00000000'x ; (* "10100"b *) 1 330 int18 = 'C00000000'x ; (* "11000"b *) 1 331 self_rel = '880000000'x ; (* "10001"b *) 1 332 int15 = 'C80000000'x ; (* "11001"b *) 1 333 prof = 'D00000000'x ; (* "11010"b *) 1 334 absl = '000000000'x ; (* "0"b *) 1 335 symb = 'B00000000'x ; (* "10110"b *) 1 336 1 337 (* CONSTANTES USED BY SIMONE COMPILER *) { Inserted for SimOne } 1 338 maxchar8 = 255 ; 1 339 mofatherdisp = 1 ; (* DIFFERENCE BETWEEN ADDR OF FATHER WHOSE TYPE IS MONORMOD *) { Inserted for SimOne } 1 340 procfatherdisp = 0 ; (* OR WHOSE TYPE IS PROC *) { Inserted for SimOne } *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 10 1 341 procmodlkw = 104 ; { Inserted for SimOne } 1 342 modynlk = 0 ; { Inserted for SimOne } 1 343 condcounterplace = 16 ; (* BYTES DIP. OF CONDITION COUNTER *) { Inserted for SimOne } 1 344 moarglistw = 6 ; (* DEPLACEMENT OF ARGLIST IN MONITOR OR MODULE PSEUDO_STACK *) { Inserted for SimOne } 1 345 baseprocessdplmt = 100 ; { Inserted for SimOne } 1 346 executionmodplmt = 106 ; { Inserted for SimOne } 1 347 maindplmt = 0 ; 1 348 processlocaldplmt = 96 ; 1 349 (* ENTRY POINTS OF OPERATORS *) { Inserted for SimOne } 1 350 { Inserted for SimOne } 1 351 simainentryplace = -1 ; { Inserted for SimOne } 1 352 simintentryplace = -2 ; { Inserted for SimOne } 1 353 simintreturnplace = -3 ; { Inserted for SimOne } 1 354 processentryplace = -4 ; { Inserted for SimOne } 1 355 settinginactivequeueplace = -5 ; { Inserted for SimOne } 1 356 waitsonsplace = -6 ; { Inserted for SimOne } 1 357 processreturnplace = -7 ; { Inserted for SimOne } 1 358 holdplace = -8 ; { Inserted for SimOne } 1 359 savearglistplace = -9 ; { Inserted for SimOne } 1 360 modulentryplace = -10 ; { Inserted for SimOne } 1 361 monitorentryplace = -11 ; { Inserted for SimOne } 1 362 initcondplace = -12 ; { Inserted for SimOne } 1 363 askforexclusionplace = -13 ; { Inserted for SimOne } 1 364 freeexclusionplace = -14 ; { Inserted for SimOne } 1 365 signalplace = -15 ; { Inserted for SimOne } 1 366 waitplace = -16 ; { Inserted for SimOne } 1 367 emptyplace = -17 ; { Inserted for SimOne } 1 368 lengthplace = -18 ; { Inserted for SimOne } 1 369 priorityplace = -19 ; { Inserted for SimOne } 1 370 vtimeplace = -20 ; { Inserted for SimOne } 1 371 terminateplace = -21 ; { Inserted for SimOne } 1 372 mowaitsonsplace = -22 ; { Inserted for SimOne } 1 373 uniformplace = -23 ; { Inserted for SimOne } 1 374 normalplace = -24 ; { Inserted for SimOne } 1 375 negexpplace = -25 ; { Inserted for SimOne } 1 376 randintplace = -26 ; { Inserted for SimOne } 1 377 pureentryplace = -27 ; 1 378 simextentryplace = -28 ; 1 379 exitplace = -29 ; 1 380 restorprevmoplace = -30 ; 1 381 { Inserted for SimOne } 1 382 lcprocess = 96 ; (* BYTES SIZE OF THE LOCAL VARIABLES IN THE STACK OF A PROCESS *) { Inserted for SimOne } 1 383 { Inserted for SimOne } 1 384 { Inserted for SimOne } 1 385 emptyindex = 4 ; { Inserted for SimOne } 1 386 { Inserted for SimOne } 1 387 (* DEFAULT LENGTH FOR EDITION *) 1 388 deflreal = 24 ; 1 389 deflnum = 12 ; 1 390 deflbool = 4 ; 1 391 deflchar = 1 ; 1 392 1 393 1 394 1 395 (*$PAGE *) 1 396 TYPE 1 397 numberstring = PACKED ARRAY [1..maxdigitsreal] OF char ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 11 1 398 alfa = PACKED ARRAY [1..alfaleng] OF char ; 1 399 alfaid = PACKED ARRAY [1..maxident] OF char ; 1 400 externid = PACKED ARRAY [1..maxexternname] OF char ; 1 401 alfalistptr = ^alfalist ; 1 402 alfalist = RECORD 1 403 previous, next : alfalistptr ; 1 404 name : alfaid 1 405 END ; 1 406 idkinds = (actual, formal, arraybound, exportable, imported) ; 1 407 1 408 (* ACTUAL MEANS STANDARD PASCAL PROC/VARS 1 409* FORMAL USED FOR VAR PARAMETERS 1 410* EXPORTABLE 'DEF' PROC/VARS 1 411* IMPORTED APPEARS IN EXTERNAL LIST. MUST BE REDEFINED *) 1 412 typform = (reel, numeric, scalar, pointer, power, arrays, records, monormod, { Modified for SimOne } 1 413 condition, files, aliastype) ; { Modified for SimOne } 1 414 { Modified for SimOne } 1 415 idklass = (schema, types, konst, proc, vars, field, tagfield, dummyclass) ; 1 416 consttype = (wordconst, dwordconst, alfaconst) ; 1 417 idprocdef = (standdef, forwdef, extdef, initdef, finitdef) ; { Modified for SimOne } 1 418 levrange = 0..maxlevel ; 1 419 alfapt = @alfavalue ; 1 420 alfavalue = RECORD 1 421 nextval : alfapt ; (* NEXT VALUE BOX FOR SAME STRING *) 1 422 alfaval : PACKED ARRAY [1..longalfbox] OF char ; 1 423 longfill : integer ; (* USED PART OF ALFAVAL IN THIS BOX *) 1 424 END ; 1 425 refptr = @reflist ; 1 426 reflist = RECORD 1 427 nextref : refptr ; 1 428 refnbr : integer ; 1 429 refs : ARRAY [1..maxref] OF RECORD 1 430 filen, linen, sttmapind, place : integer ; 1 431 END ; 1 432 END ; 1 433 ctp = @contexttable ; 1 434 setofno = SET OF minno..maxno ; 1 435 stdkind = (stdpure, stdcompiler, stdsol, stdextend, stdcomputer) ; 1 436 typusednames = ARRAY [1..6] OF alfaid ; 1 437 filelocation = (notafile, permanentfile, workfile, localfile, standardfile) ; 1 438 1 439 proclocation = (notpredef, instdpure, instdcompiler, instdsol, 1 440 instdextend, instdcomputer, instdsimone) ; { Modified for SimOne } 1 441 externalitemtype = (extnotresolved, externalarea, exportvar, importvar, 1 442 exportproc, importproc, localproc, mainprogram, remanentfile, 1 443 requiredfile, runtimeentry) ; 1 444 ptexternalitem = ^ externalitem ; 1 445 externalitem = RECORD 1 446 extname : alfaid ; 1 447 extsegname, extgenerator, extentryname : alfaid ; 1 448 extnext : ptexternalitem ; 1 449 extrfile1, extrline1, extrfile2, extrline2 : integer ; 1 450 extdecl : ctp ; 1 451 extitemtype : externalitemtype ; 1 452 extkind : idkinds ; 1 453 extpltdisp : integer ; 1 454 extareadisp : integer ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 12 1 455 extlong : integer ; 1 456 extwantdescs : boolean ; 1 457 END ; 1 458 (* TYPES USED BY SIMONE COMPILER *) { Inserted for SimOne } 1 459 motypes = (module, monitor) ; { Inserted for SimOne } 1 460 objaccessibles = (modul, monit, condit) ; { Inserted for SimOne } 1 461 ensaccessible = SET OF objaccessibles ; { Inserted for SimOne } 1 462 incbloc = (monitormodule, subroutine) ; { Inserted for SimOne } 1 463 { Inserted for SimOne } 1 464 nodeptr = @node ; { Inserted for SimOne } 1 465 { Inserted for SimOne } 1 466 node = RECORD { USED FOR SPACE COMPUTATION } { Inserted for SimOne } 1 467 inthelist, compiled, recursive : boolean ; { Inserted for SimOne } 1 468 sizemax : integer ; { Inserted for SimOne } 1 469 proce : ctp ; { Inserted for SimOne } 1 470 END ; { Inserted for SimOne } 1 471 nodelistptr = @nodelistelem ; { Inserted for SimOne } 1 472 { Inserted for SimOne } 1 473 nodelistelem = RECORD { Inserted for SimOne } 1 474 previousnode, nextnode : nodelistptr ; { Inserted for SimOne } 1 475 elem : nodeptr ; { Inserted for SimOne } 1 476 END ; { Inserted for SimOne } 1 477 { Inserted for SimOne } 1 478 exitptr = @exitelem ; { Inserted for SimOne } 1 479 exitelem = RECORD (* ONE FOR EACH EXIT STATEMENT *) { Inserted for SimOne } 1 480 nextexitelem : exitptr ; { Inserted for SimOne } 1 481 exitdplmt : integer ; { Inserted for SimOne } 1 482 END ; { Inserted for SimOne } 1 483 1 484 ftp = ^schema_token ; 1 485 schema_status = RECORD 1 486 on : boolean ; 1 487 schema_ptr : ctp ; 1 488 current_token : ftp ; 1 489 current_parameter : ctp ; 1 490 END ; 1 491 schema_token_kind = (symbol_token, name_token, int_const_token, char_const_token, real_const_token) ; 1 492 schema_token = RECORD 1 493 next : ftp ; 1 494 CASE kind : schema_token_kind OF 1 495 symbol_token : (tno, tcl : integer) ; 1 496 name_token : (taval : alfaid) ; 1 497 int_const_token : (t_int_value : integer) ; 1 498 real_const_token : (t_real_value : real) ; 1 499 char_const_token : (t_char_value : char) ; 1 500 END ; 1 501 1 502 (* DONT MODIFY CONTEXTABLE DECLARATION 1 503* WITHOUT CHECKING : 1 504* nameplaceincontextable 1 505* AND nxtelplaceincontextable 1 506* IN optimized_procedures.alm *) 1 507 contexttable = RECORD 1 508 name : alfaid ; 1 509 nxtel : ctp ; 1 510 alfathread : ctp ; 1 511 deffile, defline : integer ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 13 1 512 references : refptr ; 1 513 symbolplace : integer ; (* PCK PTR TO SYMBOL NODE IN SYMB TB *) 1 514 symbtablerefs : integer ; (* BACKWARD THREAD OF REFS IN TEXT TO SYMBOL TABLE *) 1 515 CASE klass : idklass OF 1 516 schema : ( 1 517 top_for_schema : integer ; (* CONTEXT AT SHEMA DECLARATION TIME *) 1 518 next_for_schema : ctp ; 1 519 formal_parameter_list : ctp ; 1 520 parameter_count : integer ; 1 521 token_list : ftp ; 1 522 type_description : ctp) ; 1 523 types : ( 1 524 size, cadrage : integer ; 1 525 pack : boolean ; 1 526 tlevel : levrange ; 1 527 objaccedes : ensaccessible ; { TO ALLOW VARIABLES ' DECLARATIONS } { Inserted for SimOne } 1 528 (* *** BEGIN SCHEMA INFO *** *) 1 529 father_schema : ctp ; 1 530 actual_parameter_list : ctp ; 1 531 desc_vector_references : integer ; 1 532 (* *** END SCHEMA INFO *** *) 1 533 CASE form : typform OF 1 534 reel : () ; 1 535 numeric : (npksize, nmin, nmax : integer) ; 1 536 scalar : (spksize : integer ; 1 537 CASE subrng : boolean OF 1 538 false : (fconst, sptcstepw : ctp) ; 1 539 true : (smin, smax : integer ; 1 540 typset : ctp) ;) ; 1 541 pointer : (ptpksize : integer ; 1 542 domain, eltype : ctp) ; 1 543 power : (ppksize : integer ; 1 544 elset : ctp ; 1 545 setlength : integer) ; 1 546 arrays : (aeltype, inxtype : ctp ; 1 547 1 548 CASE conformant : boolean OF 1 549 false : (lo, hi, opt2, subsize : integer) ; 1 550 true : ( 1 551 pthigh, ptlow : ctp ; 1 552 ) ; 1 553 ) ; 1 554 records : (recvar, fstfld : ctp) ; 1 555 files : (feltype : ctp ; 1 556 ) ; 1 557 monormod : (motype : motypes ; { Inserted for SimOne } 1 558 niveau : levrange ; { Inserted for SimOne } 1 559 moaddr, nbparmo : integer ; { Inserted for SimOne } 1 560 ptpar, ptvarloc, ptentr : ctp ; { Inserted for SimOne } 1 561 initmoproc, finitmoproc, blocenglob : ctp) ; { Inserted for SimOne } 1 562 condition : () ; { Inserted for SimOne } 1 563 aliastype : (realtype : ctp) ;) ; 1 564 konst : ( 1 565 succ, contype : ctp ; 1 566 CASE typofconst : consttype OF 1 567 wordconst : (values : integer) ; 1 568 dwordconst : (valreel : real) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 14 1 569 alfaconst : (alfadeb : alfapt ; 1 570 alfalong, alfalevel, unddeb : integer) ;) ; 1 571 proc : (proctype, formals : ctp ; 1 572 prockind : idkinds ; 1 573 proclevel : levrange ; 1 574 procaddr, segsize, nbparproc, locincode : integer ; 1 575 procisassigned, predefproc, procinscope, pisrefincode : boolean ; 1 576 phasdescriptor : boolean ; (* TRUE IF HAS CONF ARRAY PARAMETERS *) 1 577 ploc : proclocation ; 1 578 procextitem : ptexternalitem ; 1 579 ptypesymbolplace : integer ; (* PACKED PTR TO TYPE BOX IN SYMBOL TB *) 1 580 recur : integer ; { Inserted for SimOne } 1 581 procaccesslevel : levrange ; { Inserted for SimOne } 1 582 processus, pure : boolean ; { Inserted for SimOne } 1 583 chaineentree : ctp ; { Inserted for SimOne } 1 584 procnode : nodeptr ; { Inserted for SimOne } 1 585 procincbloc : incbloc ; (* BLOC CONTAINING THIS PROC *) { Inserted for SimOne } 1 586 procfirstexit : exitptr ; (* TO CHAIN EXIT STATEMENT *) { Inserted for SimOne } 1 587 procfirsttofinit : ctp ; (* FIRST VAR TO BE FINALIZED IN THIS PROCESS, ALWAYS NIL FOR A PROCEDURE *) { Inserted for SimO ne } 1 588 procstackinitsize : integer ; { Inserted for SimOne } 1 589 procwasforwarddef : boolean ; { Inserted for SimOne } 1 590 procdef : idprocdef ; 1 591 pwantdescs : boolean ; (* TRUE IF PROC WAS DECLARED EXT DESCRIPTORS *) 1 592 pdescsaddrplace : integer ; (* PLACE IN STATICS OF PTR TO DESCRS VECTOR - IF PREV. TRUE *) 1 593 procisactive : boolean ; (* TRUE IF COMPILER IS ANALYZING BODY OF THIS PROC *) 1 594 pextcalltrapinfoplace : integer ; (* WORD OFFSET OF TRAP INFO FOR EXT CALL - ONLY IF DESCS *) 1 595 pwantspl1descriptors : boolean) ; (* TRUE IF PL1 DESCRIPTORS NEEDED *) 1 596 vars : (vtype : ctp ; 1 597 vkind : idkinds ; 1 598 vfilelocation : filelocation ; 1 599 vaddr : integer ; 1 600 vdispl, vdescaddr : integer ; 1 601 vlevel : levrange ; 1 602 vlink_is_generated : boolean ; 1 603 visused, visset, visreadonly, varparam, visrefincode : boolean ; 1 604 vnexttofinit : ctp ; (* TO CHAIN VAR TO BE FINIT *) { Inserted for SimOne } 1 605 varmo : boolean ; (* TRUE IF VAR IS DECLARE IN A MONITOR OR A MODULE *) { Inserted for SimOne } 1 606 vfather : ctp ; (* PTR ON THE MONITOR OR THE MODULE CONTAINING VAR *) { Inserted for SimOne } 1 607 vptextitem : ptexternalitem) ; 1 608 field : (fldtype : ctp ; 1 609 fldaddr, bytwidth : integer) ; 1 610 tagfield : (casesize : integer ; 1 611 variants : ctp ; 1 612 CASE tagval : boolean OF 1 613 false : (casetype : ctp ; selectorfield : ctp) ; 1 614 true : (caseval : integer ; firstfield : ctp) ;) ; 1 615 dummyclass : () ; 1 616 END ; (* RECORD CONTEXTTABLE *) 1 617 (* NOW OTHER TYPES *) 1 618 1 619 shrtint = -twoto17..twoto17m1 ; 1 620 bytint = -twoto8..twoto8m1 ; 1 621 norange = minno..maxno ; 1 622 where = (block, cwith, vwith) ; (* USED TO DESCRIBE AN IDENTIFIER *) 1 623 contexte = (data, code, linkage, definition, deccode) ; { Modified for SimOne } 1 624 levtrace = (none, low, medium, high) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 15 1 625 (* DONT MODIFY RECIDSCOPE DECLARATION *) 1 626 withreflist = RECORD 1 627 nbr : 0..maxfield ; 1 628 symbolp : ARRAY [1..maxfield] OF ctp 1 629 END ; 1 630 (* WITHOUT CHECK : *) 1 631 (* recidscopelength IN optimized_procedures.alm *) 1 632 recidscope = RECORD (* ELEMENT OF DISPLAY *) 1 633 fname : ctp ; 1 634 CASE occur : where OF 1 635 block : () ; 1 636 cwith : (creflist : withreflist ; clevel : levrange ; cdspl : integer) ; 1 637 vwith : (vreflist : withreflist ; vdspl : integer ; vpack : boolean) ; 1 638 END (* REC-ID-SCOPE *) ; 1 639 blocknodeptr = @blocknode ; 1 640 labelblockptr = ^labelblock ; (* BOXES FOR LABELS *) 1 641 labelblock = RECORD 1 642 number : integer ; (* LABEL ID *) 1 643 locinbytes : integer ; (* LOCATION IN TEXT SECTION (BYTES) *) 1 644 next : labelblockptr ; (* NEXT IN LABELS LIST *) 1 645 brother : labelblockptr ; (* THREAD FOR LABELS OF SAME BLOCK *) 1 646 procnode : blocknodeptr ; (* PTR TO PROCEDURE NODE *) 1 647 dclfile, dclline : integer ; (* FILE, LINE FOR DECLARATION *) 1 648 deffile, defline : integer ; (* FILE, LINE OF LOCATION *) 1 649 references : refptr ; (* PTR TO REFERENCES BOX(ES) *) 1 650 ref_allowed : RECORD 1 651 ic_from, ic_to : integer 1 652 END ; 1 653 next_in_block : labelblockptr ; 1 654 END ; 1 655 label_pdl_element = RECORD 1 656 previous, next : ^label_pdl_element ; 1 657 first : labelblockptr ; 1 658 END ; 1 659 labdescr = RECORD (* ELEMENT OF LABTAB *) 1 660 labval, lablev, labexit, labch1, labdef : integer ; 1 661 labbox : labelblockptr ; 1 662 END (* REC *) ; 1 663 lab_pdl_ptr = ^lab_pdl_element ; 1 664 lab_pdl_element = RECORD 1 665 previous, next : lab_pdl_ptr ; 1 666 first_in_block : labelblockptr ; 1 667 start : integer 1 668 END ; 1 669 typofsymb = (irrelsy, begsy, endsy) ; 1 670 occurence = RECORD (* ELEMENT OF UNDLAB *) 1 671 succ, place : shrtint ; 1 672 END (* REC *) ; 1 673 (* TYPES USED IN CODE GENERATION *) 1 674 1 675 (* ALM INSTRUCTIONS , I+MNEMONIC. INSTRUCTIONS ARE GROUPED BY FUNCTIONS. IN 1 676* EACH FUNCTION, THE ORDER IS THE ONE OF THE AL39 MANUAL EXCEPT FOR EIS 1 677* MULTIWORD. IN THIS LAST GROUP, THE ORDER MAKES EASIER THE CODE GENERATION *) 1 678 (* FIXED-POINT STANDARD INSTRUCTIONS ****** *) 1 679 instword = (ieaa, ieaq, ieax0, ieax1, ieax2, ieax3, ieax4, ieax5, 1 680 ieax6, ieax7, ilca, ilcaq, ilcq, ilcx0, ilcx1, ilcx2, 1 681 ilcx3, ilcx4, ilcx5, ilcx6, ilcx7, ilda, ildac, ildaq, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 16 1 682 ildi, ildq, ildqc, ildx0, ildx1, ildx2, ildx3, ildx4, 1 683 ildx5, ildx6, ildx7, ilreg, ilxl0, ilxl1, ilxl2, ilxl3, 1 684 ilxl4, ilxl5, ilxl6, ilxl7, isreg, ista, istac, istacq, 1 685 istaq, istc1, istc2, istcd, isti, istq, istt, istx0, 1 686 istx1, istx2, istx3, istx4, istx5, istx6, istx7, istz, 1 687 isxl0, isxl1, isxl2, isxl3, isxl4, isxl5, isxl6, isxl7, 1 688 ialr, ials, iarl, iars, illr, ills, ilrl, ilrs, 1 689 iqlr, iqls, iqrl, iqrs, iada, iadaq, iadl, iadla, 1 690 iadlaq, iadlq, iadlx0, iadlx1, iadlx2, iadlx3, iadlx4, iadlx5, 1 691 iadlx6, iadlx7, iadq, iadx0, iadx1, iadx2, iadx3, iadx4, 1 692 iadx5, iadx6, iadx7, iaos, iasa, iasq, iasx0, iasx1, 1 693 iasx2, iasx3, iasx4, iasx5, iasx6, iasx7, iawca, iawcq, 1 694 isba, isbaq, isbla, isblaq, isblq, isblx0, isblx1, isblx2, 1 695 isblx3, isblx4, isblx5, isblx6, isblx7, isbq, isbx0, isbx1, 1 696 isbx2, isbx3, isbx4, isbx5, isbx6, isbx7, issa, issq, 1 697 issx0, issx1, issx2, issx3, issx4, issx5, issx6, issx7, 1 698 iswca, iswcq, impf, impy, idiv, idvf, ineg, inegl, 1 699 icmg, icmk, icmpa, icmpaq, icmpq, icmpx0, icmpx1, icmpx2, 1 700 icmpx3, icmpx4, icmpx5, icmpx6, icmpx7, icwl, iszn, isznc, 1 701 (* FLOATING-POINT INSTRUCTIONS ************* *) 1 702 idfld, ifld, idfst, idfstr, ifst, ifstr, idfad, idufa, 1 703 ifad, iufa, idfsb, idufs, ifsb, iufs, idfmp, idufm, 1 704 ifmp, iufm, idfdi, idfdv, ifdi, ifdv, ifneg, ifno, 1 705 idfrd, ifrd, idfcmg, idfcmp, ifcmg, ifcmp, iade, ifszn, 1 706 ilde, iste, 1 707 (* BOOLEAN INSTRUCTIONS ******************** *) 1 708 iana, ianaq, ianq, iansa, iansq, iansx0, iansx1, iansx2, 1 709 iansx3, iansx4, iansx5, iansx6, iansx7, ianx0, ianx1, ianx2, 1 710 ianx3, ianx4, ianx5, ianx6, ianx7, iora, ioraq, iorq, 1 711 iorsa, iorsq, iorsx0, iorsx1, iorsx2, iorsx3, iorsx4, iorsx5, 1 712 iorsx6, iorsx7, iorx0, iorx1, iorx2, iorx3, iorx4, iorx5, 1 713 iorx6, iorx7, iera, ieraq, ierq, iersa, iersq, iersx0, 1 714 iersx1, iersx2, iersx3, iersx4, iersx5, iersx6, iersx7, ierx0, 1 715 ierx1, ierx2, ierx3, ierx4, ierx5, ierx6, ierx7, icana, 1 716 icanaq, icanq, icanx0, icanx1, icanx2, icanx3, icanx4, icanx5, 1 717 icanx6, icanx7, icnaa, icnaaq, icnaq, icnax0, icnax1, icnax2, 1 718 icnax3, icnax4, icnax5, icnax6, icnax7, 1 719 (* POINTER REGISTERS INSTRUCTIONS ********** *) 1 720 ieasp0, ieasp1, ieasp2, ieasp3, ieasp4, ieasp5, ieasp6, ieasp7, 1 721 ieawp0, ieawp1, ieawp2, ieawp3, ieawp4, ieawp5, ieawp6, ieawp7, 1 722 iepbp0, iepbp1, iepbp2, iepbp3, iepbp4, iepbp5, iepbp6, iepbp7, 1 723 iepp0, iepp1, iepp2, iepp3, iepp4, iepp5, iepp6, iepp7, 1 724 ilpri, ilprp0, ilprp1, ilprp2, ilprp3, ilprp4, ilprp5, ilprp6, 1 725 ilprp7, ispbp0, ispbp1, ispbp2, ispbp3, ispbp4, ispbp5, ispbp6, 1 726 ispbp7, ispri, ispri0, ispri1, ispri2, ispri3, ispri4, ispri5, 1 727 ispri6, ispri7, isprp0, isprp1, isprp2, isprp3, isprp4, isprp5, 1 728 isprp6, isprp7, iadwp0, iadwp1, iadwp2, iadwp3, iadwp4, iadwp5, 1 729 iadwp6, iadwp7, iepaq, 1 730 (* TRANSFER INSTRUCTIONS ******************* *) 1 731 icall6, iret, irtcd, iteo, iteu, itmi, itmoz, itnc, 1 732 itnz, itov, itpl, itpnz, itra, itrc, itrtf, itrtn, 1 733 itsp0, itsp1, itsp2, itsp3, itsp4, itsp5, itsp6, itsp7, 1 734 itss, itsx0, itsx1, itsx2, itsx3, itsx4, itsx5, itsx6, 1 735 itsx7, ittf, ittn, itze, 1 736 (* MISCELLANEOUS INSTRUCTIONS ************** *) 1 737 irccl, idrl, ixec, ixed, imme, imme2, imme3, imme4, 1 738 inop, ipuls1, ipuls2, isra, isbar, ibcd, igtb, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 17 1 739 (* PRIVILEGED INSTRUCTIONS ***************** *) 1 740 ilbar, ilcpr, ildbr, ildt, ilptp, ilptr, ilra, ilsdp, 1 741 ilsdr, ircu, iscpr, iscu, isdbr, isptp, isptr, issdp, 1 742 issdr, icamp, icams, irmcm, irscr, irsw, icioc, ismcm, 1 743 ismic, isscr, iabsa, idis, 1 744 (* SINGLE WORD EIS INSTRUCTIONS ************ *) 1 745 iaar0, iaar1, iaar2, iaar3, iaar4, iaar5, iaar6, iaar7, 1 746 ilar0, ilar1, ilar2, ilar3, ilar4, ilar5, ilar6, ilar7, 1 747 ilareg, ilpl, inar0, inar1, inar2, inar3, inar4, inar5, 1 748 inar6, inar7, iara0, iara1, iara2, iara3, iara4, iara5, 1 749 iara6, iara7, iarn0, iarn1, iarn2, iarn3, iarn4, iarn5, 1 750 iarn6, iarn7, isar0, isar1, isar2, isar3, isar4, isar5, 1 751 isar6, isar7, isareg, ispl, ia4bd, ia6bd, ia9bd, iabd, 1 752 iawd, is4bd, is6bd, is9bd, isbd, iswd, 1 753 (* MULTI-WORDS EIS INSTRUCTIONS ************ *) 1 754 itct, itctr, icmpc, iscm, iscmr, imlr, imrl, imvt, 1 755 icsl, icsr, isztl, isztr, iscd, iscdr, icmpn, imvn, 1 756 icmpb, ibtd, idtb, iad2d, isb2d, imp2d, idv2d, imve, 1 757 imvne, iad3d, isb3d, imp3d, idv3d, 1 758 (* REPEAT INSTRUCTIONS ********************* *) 1 759 irpd, irpl, irpt, 1 760 (* STBA, STBQ ,STCA AND STCB INSTRUCTIONS ** *) 1 761 istba, istbq, istca, istcq) ; 1 762 (* ADDRESS MODIFICATIONS , *) 1 763 (* T+MNEMONIC AND Y USED FOR * , *) 1 764 (* TZ = ILLEGAL MODIFIER *) 1 765 (* BINARY CODE IS OBTAINED WITH THE ORD FUNCTION *) 1 766 tag = (tn, tau, tqu, tdu, tic, tal, tql, tdl, (* R MOD *) 1 767 tx0, tx1, tx2, tx3, tx4, tx5, tx6, tx7, 1 768 tny, tauy, tquy, tz23, ticy, taly, tqly, tz27, (* RI MOD *) 1 769 tx0y, tx1y, tx2y, tx3y, tx4y, tx5y, tx6y, tx7y, 1 770 tf1, titp, tz42, tits, tsd, tscr, tf2, tf3, (* IT MOD *) 1 771 tci, ti, tsc, tad, tdi, tdic, tid, tidc, 1 772 tz60, tyau, tyqu, tydu, tyic, tyal, tyql, tydl, (* IR MOD *) 1 773 tyx0, tyx1, tyx2, tyx3, tyx4, tyx5, tyx6, tyx7) ; 1 774 register = (nreg, pr1, pr2, pr5, pr7, pr3, pr0, prstatic, prlink, pr6, 1 775 nxreg, x0, x1, x2, x3, x4, x5, x6, x7, 1 776 xbidon, ra, rq, raq, reaq, psr, re, ri) ; (* USED REGISTERS *) 1 777 preg = nreg..pr6 ; (* POINTER REGISTERS - SUBRANGE OF REGISTER *) 1 778 mreg = tn..tx7 ; (* ADDRESS MODIFICATIONS WITHOUT INDIRECTION *) 1 779 (* - SUBRANGE OF TAG *) 1 780 (* SUBRANGES OF INSTWORD USED IN CODE GENERATION *) 1 781 istand = ieaa..iswd ; (* STANDARD INSTRUCTIONS *) 1 782 ieism = icmpc..idv3d ; (* EIS MULTIWORD INSTRUCTIONS *) 1 783 irept = irpd..irpt ; (* REPEAT INSTRUCTIONS *) 1 784 istobc = istba..istcq ; (* STORE BYTES OR CHARACTERS INSTRUCTIONS *) 1 785 lgcar = (l4, l6, l9) ; (* CHARACTER DATA TYPE - NUMBER = LENGTH IN BITS *) 1 786 typsig = (flls, fxls, fxts, fxns) ; (* SIGN AND DECIMAL TYPES,FL=FLOATING-POINT, *) 1 787 (* FX=FIXED-POINT,LS= LEADING SIGN *) 1 788 (* TS= TRAILING SIGN *) 1 789 (* NS= NO SIGN *) 1 790 (* BIT VALUES FOR CODE GENERATION *) 1 791 zptr = (p0t0r0, p0t0r1, p0t1r0, p0t1r1, p1t0r0, p1t0r1, p1t1r0, p1t1r1) ; (* BITS 0,9 *) 1 792 (* AND 10 OF EIS MULTIWORD INSTRUCTIONS *) 1 793 (* P=SIGN OR FILL BIT , T=TRUNCATION BIT , *) 1 794 (* R=ROUNDING FLAG BIT *) 1 795 zabc = (a0b0c0, a0b0c1, a1b0c0, a1b0c1, a0b1c0, a0b1c1, a1b1c0, a1b1c1) ; (* BITS 8,9 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 18 1 796 (* AND 10 OF REPEAT INSTRUCTIONS *) 1 797 (* A AND B = USE OF DELTA FIELD , *) 1 798 (* C = USE OF X0 REGISTER *) 1 799 zari = (a0r0i0, a0r0i1, a0r1i0, a0r1i1, a1r0i0, a1r0i1, a1r1i0, a1r1i1) ; (* BITS 0,1 *) 1 800 (* AND 2 OF EIS MODIFICATION FIELDS *) 1 801 (* A=USE OF ADDRESS REGISTER , *) 1 802 (* R = OPERAND LENGTH FIELD GIVES A REGISTER *) 1 803 (* I= USE OF INDIRECTION FOR *) 1 804 (* THE OPERAND DESCRIPTOR *) 1 805 1 806 (* USED ONLY IN CONDITIONNAL COMPILATION FOR COMPILER'S CONTROLS *) 1 807 forset = (s0, s1, s2, s3, s4, s5) ; (* USED TO GIVE FORBIDDEN TAGS/PTR FOR ISTAND/ *) 1 808 (* IEISM *) 1 809 halfword = integer ; (* USED FOR FICHINTER *) 1 810 binartype = PACKED ARRAY [1..maxfich] OF halfword ; (* FICHINTER *) 1 811 binartypeptr = ^binartype ; 1 812 attrkind = (varbl, lcond, lval, chain, sval) ; 1 813 attraccess = (direct, pointee, pointable, encode) ; 1 814 destination = (inacc, inq, inaq, inpsr, inpr, out) ; 1 815 setarray = ARRAY [0..bornesupset] OF integer ; 1 816 regpt = @regbox ; 1 817 regbox = RECORD (* BOX DESCRIBING A LOADED REGISTER *) 1 818 (* AND MEMORIZING SAVING INFORMATIONS *) 1 819 sregister : register ; (* LOADED REGISTER *) 1 820 saveplace : integer ; (* BYTES DISP. /PR6 OF SAVING STORAGE *) 1 821 nextbloc : regpt ; (* POINTS PREVIOUS BLOC.(NOT NEXT.) *) 1 822 predbloc : regpt ; (* POINTS NEXT BLOC. (NOT PRED.) *) 1 823 END ; (* REGBOX *) 1 824 wcstpt = @iunresolv ; 1 825 rcstpt = @runresolv ; 1 826 lcstpt = @liunresolv ; 1 827 llcstpt = @lliunresolv ; 1 828 iunresolv = RECORD 1 829 valu : integer ; 1 830 cstplace : integer ; (* ENTRY IN UNDLAB *) 1 831 cstnext : wcstpt ; (* LINKAGE OF WORD CSTES *) 1 832 END ; 1 833 runresolv = RECORD 1 834 rvalu : real ; 1 835 rplace : integer ; (* ENTRY IN UNDLAB *) 1 836 rnext : rcstpt ; (* LINKAGE OF REAL CSTES *) 1 837 END ; 1 838 liunresolv = RECORD 1 839 lvalu : setarray ; 1 840 lplace : integer ; (* ENTRY IN UNDLAB *) 1 841 lnext : lcstpt ; (* LINKAGE OF LONG CSTES *) 1 842 END ; 1 843 lliunresolv = RECORD 1 844 llvalu : setarray ; (* SET CSTE *) 1 845 llplace : integer ; (* ENTRY ON UNDLAB *) 1 846 llnext : llcstpt ; (* LINKAGE OF SET CSTES *) 1 847 END ; 1 848 1 849 attr = RECORD 1 850 1 851 typtr : ctp ; (* TYPE OF DESCRIBED ITEM *) 1 852 CASE kind : attrkind OF *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 19 1 853 1 854 varbl : ( (* ITEM IS ANYWHERE IN STORAGE *) 1 855 vlev : levrange ; (* DEFINITION LEVEL *) 1 856 basereg : preg ; (* BASIS TO ACCES ITEM, *) 1 857 (* OR ITS TO ITEM IF POINTABLE *) 1 858 basebloc : regpt ; 1 859 (* POINTS THE BOX DESCRIBING BASEREG; *) 1 860 (* NIL FOR PR4,PR6 *) 1 861 dplmt : integer ; (* BYTES DISPLACEMENT TO ADD AT FINAL ADDRESS *) 1 862 inxreg : register ; (* MODIFICATION REGISTER CONTAINING WORDS DISP *) 1 863 (* RA ==> A 18..35 USED *) 1 864 (* RQ ==> Q 18..35 USED *) 1 865 (* XI ==> INDEX REGISTER *) 1 866 (* NXREG NO MODIFIER *) 1 867 inxbloc : regpt ; (* POINTS BOX DESCRIBING INXREG *) 1 868 inxmem : integer ; (* BYTES DISPLACEMENT/PR6 OF A STORAGE WORD *) 1 869 (* CONT. IN BITS 18..35 A WORD OFFSET SIGNED *) 1 870 inxmemrw : boolean ; (* TRUE IF INXMEM CAN BE WRITTEN *) 1 871 access : attraccess ; 1 872 1 873 (* DIRECT ITEM=[[BASIS]+[INDEX]+DPLMT+[INXMEM]] BASIS=PR4/PR6 1 874* POINTEE SAME BUT BASIS= ANY POINTER REGISTER 1 875* POINTABLE ITEM=[[[BASIS]+ITSDPLMT]+[INDEX]+DPLMT+[INXMEM]] 1 876* ENCODE ITEM GENERATEA IN CODE *) 1 877 itsdplmt : integer ; (* BYTES DISP OF AN ITS EVEN BOUNDARY *) 1 878 pckd : boolean ; (* TRUE IF CONTAINING STRUCTURE WAS PACKED *) 1 879 nameaddr : ctp ; (* PTR TO NAME OF CONCERNED VAR OR FIELD *) 1 880 descreg : preg ; (* PTR TO DESCRIPTOR *) 1 881 descbloc : regpt ; (* BOX FOR THIS POINTER *) 1 882 vmo : boolean ; (* TRUE IF INTERNAL VAR OF MONITOR OR MODULE ACCESS BY PR5 *) { Inserted for SimOne } 1 883 temporary : boolean ; (* TRUE IF THIS VARIABLE IS THE RESULT OF AN EXPRESSION, 1 884* ALLOCATED IN STACK (USED FOR RESULT OF STRING EXPRESSIONS *) 1 885 ) ; (* END VARBL *) 1 886 1 887 lval : ( (* ITEM IS LOADED IN A *) 1 888 (* REGISTER RA,RQ,RAQ,REAQ,PSR *) 1 889 ldreg : register ; (* LOADED REGISTER *) 1 890 ldregbloc : regpt ; (* POINTS THE BOX DESCRIBING LDREG *) 1 891 psrsize : integer ; (* SIZE MEANINGSFULL IN BYTES OF PSR IF LOADED *) 1 892 ) ; (* END LVAL *) 1 893 1 894 chain : ( (* ITEM DESCRIBED IS A CHARACTER STRING CONSTANT *) 1 895 (* GENERATED AT THE END OF CODE *) 1 896 (* (WORD BOUNDARY ALIGNED) *) 1 897 alfactp : ctp ; (* POINTS THE (KONST,ALFACONST) BOX ASSOCIATED *) 1 898 ) ; (* END CHAIN *) 1 899 1 900 sval : ( (* ITEM DESCRIBED IS A COMPUTABLE VALUE *) 1 901 (* BY THE COMPILER *) 1 902 val : integer ; (* WORD CONSTANT *) 1 903 rsval : real ; (* FLOAT CONSTANT *) 1 904 valpw : setarray ; (* SET CONSTANT *) 1 905 longv : integer ; (* BYTES LENGTH MEANINGSFULL IN VALPW *) 1 906 ) ; (* END SVAL *) 1 907 1 908 lcond : ( (* ITED DESCRIBED IS A BOOLEAN EITHER LOADED OR *) 1 909 (* KNOWN ONLY BY THE SETTING OF INDICATORD *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 20 1 910 accbloc : regpt ; (* POINTS BOX DESCRIBING RA IF USED *) 1 911 accbool : boolean ; (* TRUE <==> RA IS USED TO KEEP LCOND *) 1 912 transf : integer ; (* GIVES THE SUITABLE INDICATORS TESTING *) 1 913 ) ; (* END LCOND *) 1 914 1 915 END ; (* RECORD ATTR *) 1 916 1 917 typepr = (epp, spri, lprp) ; (* FOR PR. INST *) 1 918 typix = (adlx, adx, sxl, lxl) ; (* FOR XI INST *) 1 919 typeofop = (load, sub, shiftl, add, neg, cmp, stor) ; (* FOR A,Q,AQ,EAQ INST *) 1 920 statearray = ARRAY [register] OF boolean ; (* STATE OF REGISTERS *) 1 921 1 922 (* STATEMENT MAP *) 1 923 1 924 sttmapptr = @sttmap ; 1 925 sttmap = ARRAY [1..30000] OF 1 926 RECORD 1 927 word1 : integer ; 1 928 word2 : integer 1 929 END ; 1 930 1 931 (* PROFILE COUNTERS AREA *) 1 932 1 933 profareaptr = @profarea ; 1 934 profarea = ARRAY [0..60000] OF integer ; 1 935 1 936 (* BLOCK NODE *) 1 937 1 938 blocktype = (procblock, withblock) ; 1 939 vararea = (statics, locals) ; 1 940 blocknode = RECORD 1 941 father, brother, son : blocknodeptr ; (* BLOCKS TREE *) 1 942 codebegin, codeend : integer ; (* OFFSETS IN STATEMENT MAP *) 1 943 first : ctp ; (* PTR TO FIRST DECLARED SYMBOL *) 1 944 CASE blocktp : blocktype OF 1 945 procblock : ( 1 946 blockbox : ctp ; (* SYMBOL BLOCK FOR PROCEDURE *) 1 947 structureplace : integer ; (* OFFSET OF ENTRY STRUCTURE *) 1 948 firstlabel : labelblockptr ; (* PTR TO FIRST LABEL *) 1 949 nextproc : blocknodeptr ; (* NEXT BLOCK *) 1 950 hdrfil, hdrind, hdrlen, hdrlin : integer ; (* SOURCE OF HEADER *) 1 951 ) ; 1 952 withblock : ( 1 953 wbase : vararea ; 1 954 wdispl : integer ; (* OFFSET *) 1 955 windirect : boolean ; 1 956 wstrfile, wstrindex, wstrlength : integer ; 1 957 recordptr : ctp ; 1 958 ) ; 1 959 END ; 1 960 1 961 (* CONDITIONNAL COMPILATION MECHANISM *) 1 962 1 963 condaddr = ^condbox ; 1 964 condbox = RECORD 1 965 condname : alfaid ; 1 966 nextcond : condaddr ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 21 1 967 active, activated, setinargs : boolean 1 968 END ; 1 969 1 970 1 971 (* ARRAY OF POINTERS TO USED NAMES - FOR "-list" OPTION *) 1 972 1 973 usednamesarray = PACKED ARRAY [0..maxwseg] OF ctp ; 1 974 usednamesptr = @usednamesarray ; 1 975 1 976 1 977 (* END INCLUDE FILE CONSTTYPE.incl.pascal *) 1 978 144 145 (* LOCAL TYPES *) 146 147 string_item_info = RECORD 148 length_is_known : boolean ; 149 len_place : integer ; len_reg : preg ; (* IF LENGTH OF IN MEMORY *) 150 l_tag : tag ; l_val : integer ; mfari : zari ; reg_bloc, len_bloc : regpt ; 151 register : preg ; 152 bloc : regpt ; bloc_is_new : boolean ; 153 length : integer ; 154 wdisp, bdisp : integer ; 155 END ; 156 157 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 22 158 159 VAR 160 161 (* REDEFINE IMPORTED VARIABLES *) 162 (* FROM DECLARE *) 163 nextalf : ctp ; 164 165 (* FROM RACINE *) 166 alfaptr : ctp ; 167 charptr : ctp ; 168 declarationpart : boolean ; 169 envstandard : stdkind ; 170 intptr : ctp ; 171 level : levrange ; 172 mpcogout : text ; 173 nilptr : ctp ; 174 realptr : ctp ; 175 string_ptr : ctp ; 176 symbolfile, symbolline : integer ; 177 symbolmap : boolean ; 178 179 (* FROM GENERE *) 180 cb : integer ; 181 illegal_generation : boolean ; 182 indfich : integer ; 183 mfari1 : zari ; 184 mfari2 : zari ; 185 usednameaddr : ctp ; 186 187 188 (* FROM STATE *) 189 asscheck : boolean ; 190 cltransf : ARRAY [1..6] OF integer ; (* GIVES THE TRANSF CORR. TO OPER. 8,CL *) 191 currentbloc : regpt ; 192 currentpr : preg ; 193 gattr : attr ; 194 modif : ARRAY [nxreg..rq] OF tag ; 195 maxprused : preg ; 196 opaq : ARRAY [typeofop, ra..reaq] OF istand ; 197 prinst : ARRAY [epp..lprp, pr1..pr6] OF istand ; 198 nilanaq, 199 nileraq : setarray ; (* USED FOR NIL COMPARISONS *) 200 psrsize : integer ; (* USEFULL SIZE OF PSR *) 201 revcltransf : ARRAY [1..6] OF integer ; (* GIVES 8,CL --> REVERSE TRANSF *) 202 stattrace : levtrace ; 203 204 (* ************************** VARIABLES DE GENOPER *) 205 206 clearpt : setarray ; (* Masque de nettoyage du numero de ring dans 207* GENPTCOMP *) 208 209 210 211 212 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 23 213 214 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 24 215 216 $VALUE 217 218 clearpt = ('777777077777'o, '777777777777'o, 6 * 0) ; 219 220 $ 221 222 (* REDEFINE IMPORTED PROCEDURES *) 223 (* FROM GENERE *) 224 PROCEDURE genstand (fpr : preg ; fadr : integer ; fcode : istand ; ftg : tag) ; EXTERNAL ; 225 PROCEDURE geneism (fcode : ieism ; ffield : integer ; fbits : zptr) ; EXTERNAL ; 226 PROCEDURE gendesca (fareg : preg ; fadr, fcn : integer ; fta : lgcar ; 227 fn : integer ; frlgth : mreg) ; EXTERNAL ; 228 PROCEDURE gendescb (fareg : preg ; fadr, fc, fb : integer ; fn : integer ; 229 frlgth : mreg) ; EXTERNAL ; 230 PROCEDURE inser (fcb : integer ; fplace : integer) ; EXTERNAL ; 231 232 233 (* FROM CONTEXTTABLE *) 234 235 PROCEDURE create_konst_box (VAR box : ctp ; fname : alfaid ; typeofconst : consttype) ; EXTERNAL ; 236 PROCEDURE create_types_box (VAR tp : ctp ; fname : alfaid ; form : typform ; bool : boolean) ; EXTERNAL ; 237 PROCEDURE create_vars_box (VAR tp : ctp ; name : alfaid) ; EXTERNAL ; 238 FUNCTION conformantdim (ftp : ctp) : boolean ; EXTERNAL ; 239 240 (* FROM UNIQUE *) 241 242 PROCEDURE heaperror ; EXTERNAL ; 243 244 (* FROM RACINE *) 245 PROCEDURE error (errno : integer) ; EXTERNAL ; 246 PROCEDURE nameisref (ctpt : ctp ; fil, lin : integer) ; EXTERNAL ; 247 PROCEDURE nextline ; EXTERNAL ; 248 FUNCTION poweroftwo (fval : integer) : integer ; EXTERNAL ; 249 FUNCTION sup (fval1, fval2 : integer) : integer ; EXTERNAL ; 250 251 252 253 254 (* FROM STATE *) 255 PROCEDURE choicerarq ; EXTERNAL ; 256 PROCEDURE enterundlab (VAR fundinx : integer) ; EXTERNAL ; 257 PROCEDURE stack_extension ; EXTERNAL ; 258 PROCEDURE transfer (VAR fattr : attr ; inwhat : destination) ; EXTERNAL ; 259 PROCEDURE freebloc (VAR fbtofree : regpt) ; EXTERNAL ; 260 PROCEDURE genexceptcode (errcode : integer ; freg : register) ; EXTERNAL ; 261 PROCEDURE getpr ; EXTERNAL ; 262 PROCEDURE loadadr (VAR fattr : attr ; wantedpr : preg) ; EXTERNAL ; 263 PROCEDURE newbloc (freg : register) ; EXTERNAL ; 264 FUNCTION oldnewstor (i : integer) : integer ; EXTERNAL ; 265 PROCEDURE regenere (oldbloc : regpt) ; EXTERNAL ; 266 PROCEDURE addressvar (fctp : ctp ; VAR fattr : attr ; modif : boolean) ; EXTERNAL ; 267 PROCEDURE calcvarient (VAR fattr : attr ; VAR fbase : preg ; VAR fdisp : integer ; 268 VAR ftag : tag) ; EXTERNAL ; 269 PROCEDURE sauvereg (freg : register ; fload : boolean) ; EXTERNAL ; 270 PROCEDURE entercst (fval : integer ; VAR box : wcstpt) ; EXTERNAL ; 271 PROCEDURE enterlcst (VAR fval : setarray ; VAR fboxpt : lcstpt) ; EXTERNAL ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 25 272 PROCEDURE enterllcst (VAR fval : setarray ; VAR fboxpt : llcstpt) ; EXTERNAL ; 273 FUNCTION raisused : boolean ; EXTERNAL ; 274 FUNCTION rqisused : boolean ; EXTERNAL ; 275 PROCEDURE gencheckmultover ; EXTERNAL ; 276 PROCEDURE gencstecode (i : integer ; finst : istand) ; EXTERNAL ; 277 278 (* FROM MODVARIABLE *) 279 PROCEDURE init_desc_address (ctpt : ctp ; VAR fattr : attr) ; EXTERNAL ; 280 281 (* FROM MODATTR *) 282 283 PROCEDURE convreal (VAR fattr : attr) ; EXTERNAL ; 284 PROCEDURE printattr (VAR fattr : attr) ; EXTERNAL ; 285 PROCEDURE initattrvarbl (VAR fattr : attr) ; EXTERNAL ; 286 FUNCTION isstring (VAR fattr : attr) : boolean ; EXTERNAL ; 287 PROCEDURE lvalvarbl (VAR fattr : attr) ; EXTERNAL ; 288 FUNCTION easyvar (VAR fattr : attr) : boolean ; EXTERNAL ; 289 FUNCTION varissimple (VAR fattr : attr) : boolean ; EXTERNAL ; 290 PROCEDURE freeattr (VAR fattr : attr) ; EXTERNAL ; 291 292 293 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 26 294 295 296 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 27 297 298 FUNCTION int_op (op : integer ; int_left, int_right : integer) : integer ; 299 300 (* C THIS PROCEDURE COMPUTESC THE RESULT OF OPERATION APPLIEDC TOC TWO 301* GIVEN INTEGER OPERANDS 302* IT CHECKS INTEGER OVERFLOW OR UNDERFLOW C *) 303 304 (* E 305* ERROR DETECTED : 306* 228 : OVERFLOW IN INTGER EXPRESSION 307* 229 UNDERFLOW IN INTEGER EXPRESSION 308* E *) 309 310 VAR 311 f_left, f_right, f_res : real ; 312 f_min, f_max : real ; 313 314 BEGIN 315 int_op := 0 ; 316 f_max := maxint ; f_min := -maxint - 1 ; 317 f_left := int_left ; f_right := int_right ; 318 CASE op OF 319 1 : f_res := f_left * f_right ; 320 2 : f_res := f_left / f_right ; 321 3 : f_res := f_left + f_right ; 322 4 : f_res := f_left - f_right ; 323 END ; 324 IF f_res > f_max THEN error (228) ELSE 325 IF f_res < f_min THEN error (229) ELSE 326 int_op := trunc (f_res) ; 327 END (* INT_OP *) ; 328 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 28 329 330 (* ************************************ GENOPADD ****************************** *) 331 332 PROCEDURE genopadd (VAR fattr : attr ; generic : ctp) ; 333 334 (* C . GATTR DESCRIBES THE RIGHT OPERAND 335* FATTR " " LEFT 336* . GENERIC IS GENERIC-TYPE (NUMERIC OR REAL) 337* . AT OUTPUT .GATTR DESCRIBES RESULT 338* .ADDITION IS GENERATED 339* C *) 340 (* E ERRORS DETECTED 341* 432: TYPSEQ 0 ==> CHOICE ERROR 342* E *) 343 VAR 344 tattr, (* TRANSFERED ATTR *) 345 cattr : attr ; (* ADRESSED ATTR *) 346 typseq : integer ; (* SEQUENCE CODE *) 347 lbase : preg ; 348 ldisp : integer ; 349 ltag : tag ; 350 linst : istand ; 351 BEGIN (* GENOPADD *) 352 $OPTIONS compile = trace $ 353 IF stattrace > none THEN 354 BEGIN 355 write (mpcogout, '@@@ DEBUT GENOPADD @@@') ; nextline ; 356 END ; 357 $OPTIONS compile = true $ 358 typseq := 0 ; 359 IF fattr.kind = sval THEN 360 IF fattr.typtr = realptr THEN 361 BEGIN 362 IF fattr.rsval = 0 THEN typseq := 4 ; 363 END ELSE 364 BEGIN 365 IF fattr.val = 0 THEN typseq := 4 ; 366 END 367 ELSE 368 IF gattr.kind = sval THEN 369 IF gattr.typtr = realptr THEN 370 BEGIN 371 IF gattr.rsval = 0 THEN typseq := 3 ; 372 END ELSE 373 BEGIN 374 IF gattr.val = 0 THEN typseq := 3 ; 375 END ; 376 IF typseq = 0 THEN 377 BEGIN 378 IF generic = realptr THEN 379 BEGIN 380 IF fattr.typtr # realptr THEN 381 convreal (fattr) ELSE 382 IF gattr.typtr # realptr THEN 383 convreal (gattr) ; 384 linst := idfad ; 385 END (* REAL *) ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 29 386 linst := iada ; 387 IF fattr.kind = lval THEN 388 lvalvarbl (fattr) ; 389 WITH gattr DO 390 CASE fattr.kind OF 391 varbl : BEGIN typseq := 2 ; 392 IF kind = lval THEN 393 IF ldreg = rq THEN typseq := 10 ; 394 END ; 395 sval : CASE kind OF 396 varbl : typseq := 2 ; 397 lval : IF ldreg = rq THEN typseq := 10 ELSE typseq := 2 ; 398 sval : BEGIN 399 typseq := 2 ; 400 IF generic = realptr THEN 401 BEGIN 402 IF abs (fattr.rsval) < maxint THEN 403 IF abs (rsval) < maxint THEN 404 IF abs (rsval) >= 1 THEN 405 typseq := 12 ; 406 END ELSE 407 typseq := 12 ; 408 END (* SVAL *) ; 409 END (* CASE GATTR.KIND FOR FATTR SVAL *) ; 410 lval : CASE fattr.ldreg OF 411 ra : IF kind = varbl THEN 412 IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 413 ELSE 414 IF kind = sval THEN 415 typseq := 1 ELSE 416 typseq := 13 ; 417 rq : 418 IF gattr.kind = varbl THEN 419 IF easyvar (gattr) THEN typseq := 9 ELSE typseq := 10 420 ELSE 421 IF gattr.kind = lval THEN typseq := 14 ELSE typseq := 9 ; 422 reaq : typseq := 1 ; 423 END (* CASE FATTR.LDREG *) ; 424 END (* CASE FATTR.KIND *) ; 425 END (* TYPSEQ=0 *) ; 426 IF odd (typseq) THEN 427 BEGIN 428 tattr := fattr ; cattr := gattr ; 429 END ELSE 430 BEGIN 431 tattr := gattr ; cattr := fattr ; 432 END ; 433 IF declarationpart AND 434 NOT (typseq IN [0, 3, 4, 12]) THEN 435 BEGIN 436 illegal_generation := true ; 437 tattr.typtr := NIL ; 438 END 439 ELSE 440 CASE typseq OF 441 0 : 442 $OPTIONS compile = security $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 30 443 error (432) 444 $OPTIONS compile = true $ 445 ; 446 1, 2 : BEGIN transfer (tattr, inacc) ; 447 calcvarient (cattr, lbase, ldisp, ltag) ; 448 WITH cattr DO 449 IF kind = varbl THEN usednameaddr := nameaddr ; 450 genstand (lbase, ldisp, linst, ltag) ; 451 END (* 1,2 *) ; 452 3, 4 : IF generic = realptr THEN 453 IF tattr.typtr # realptr THEN convreal (tattr) ; 454 9, 10 : BEGIN transfer (tattr, inq) ; 455 calcvarient (cattr, lbase, ldisp, ltag) ; 456 WITH cattr DO 457 IF kind = varbl THEN usednameaddr := nameaddr ; 458 genstand (lbase, ldisp, iadq, ltag) ; 459 END (* 9,10 *) ; 460 12 : IF generic = realptr THEN tattr.rsval := cattr.rsval + tattr.rsval ELSE 461 tattr.val := int_op (3, cattr.val, tattr.val) (* ADD *) ; 462 13, 14 : BEGIN genstand (pr6, evareaw, istq, tn) ; freeattr (cattr) ; 463 genstand (pr6, evareaw, iada, tn) ; 464 END (* 13,14 *) ; 465 END (* CASE TYPSEQ *) ; 466 gattr := tattr ; 467 $OPTIONS compile = trace $ 468 IF stattrace > low THEN 469 BEGIN 470 write (mpcogout, '@@@ FIN GENOPADD @@@ WITH TYPSEQ:', typseq : 4) ; nextline ; 471 END ; 472 $OPTIONS compile = true $ 473 END (* GENOPADD *) ; 474 475 476 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 31 477 478 (* ************************************ GENOPSUB ****************************** *) 479 480 PROCEDURE genopsub (VAR fattr : attr ; generic : ctp) ; 481 482 (* C . GENERATES A SUBSTRACTION NOT COMMUTATIVE 483* . FATTR LEFT OPERAND 484* . GATTR RIGHT OPERAND 485* * RETURNS GATTR. 486* C *) 487 (* E ERRORS DETECTED 488* 303 : VALUE OUT OF RANGE 489* 433 : TYPSEQ IS ZERO. 490* E *) 491 VAR 492 linst, linstq, lneg : istand ; 493 lbase : preg ; 494 typseq, ldisp : integer ; 495 ltag : tag ; 496 rev : boolean ; 497 BEGIN (* GENOPSUB *) 498 $OPTIONS compile = trace $ 499 IF stattrace > none THEN 500 BEGIN 501 write (mpcogout, '@@@ DEBUT GENOPSUB @@@') ; nextline ; 502 END ; 503 $OPTIONS compile = true $ 504 typseq := 0 ; 505 WITH gattr DO 506 IF kind = sval THEN 507 BEGIN 508 IF typtr = realptr THEN 509 BEGIN 510 IF rsval = 0 THEN typseq := 3 ; 511 END ELSE 512 IF val = 0 THEN typseq := 3 ; 513 END ; 514 IF typseq = 0 THEN 515 BEGIN 516 IF generic = realptr THEN 517 BEGIN 518 linst := idfsb ; lneg := ifneg ; 519 IF fattr.typtr # realptr THEN 520 convreal (fattr) ELSE 521 IF gattr.typtr # realptr THEN 522 convreal (gattr) ; 523 END ELSE 524 BEGIN 525 linst := isba ; lneg := ineg ; linstq := isbq ; 526 IF gattr.kind = sval THEN 527 BEGIN 528 IF (gattr.val # - maxint - 1) AND (gattr.val < 0) THEN 529 BEGIN 530 gattr.val := -gattr.val ; linst := iada ; linstq := iadq ; rev := true ; 531 END ELSE rev := false ; 532 END ; 533 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 32 534 IF fattr.kind = lval THEN 535 lvalvarbl (fattr) ; 536 WITH gattr DO 537 CASE fattr.kind OF 538 varbl : CASE kind OF 539 lval : typseq := 2 ; 540 varbl : IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 ; 541 sval : typseq := 1 ; 542 END (* GATTR.KIND FOR FATTR VARBL *) ; 543 sval : IF generic # realptr THEN 544 BEGIN 545 IF fattr.val = 0 THEN 546 BEGIN 547 IF kind = sval THEN 548 BEGIN 549 IF val = -maxint - 1 THEN error (303) ELSE typseq := 12 ; 550 END ELSE 551 IF kind = varbl THEN 552 BEGIN 553 IF easyvar (gattr) THEN typseq := 16 ELSE typseq := 30 ; 554 END ELSE 555 typseq := 30 ; 556 END (* FATTR.VAL = 0 *) ELSE 557 BEGIN 558 CASE kind OF 559 varbl : IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 ; 560 lval : typseq := 2 ; 561 sval : typseq := 12 ; 562 END (* CASE KIND *) ; 563 END (* FATTR.VAL # 0 *) ; 564 END (* GENERIC # REALPTR *) ELSE 565 BEGIN (* = REAL *) 566 IF fattr.rsval = 0 THEN 567 IF kind = sval THEN typseq := 12 ELSE typseq := 30 568 (* #0 *) ELSE 569 CASE kind OF 570 varbl : IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 ; 571 lval : typseq := 2 ; 572 sval : BEGIN typseq := 1 ; 573 IF abs (rsval) < maxint THEN 574 IF abs (rsval) >= 1 THEN 575 IF abs (fattr.rsval) < maxint THEN typseq := 12 ; 576 END ; 577 END (* CASE KIND *) ; 578 END (* GENERIC=REALPTR *) ; 579 (* END SVAL *) 580 lval : CASE fattr.ldreg OF 581 reaq : typseq := 1 ; 582 ra : CASE kind OF 583 varbl : IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 ; 584 sval : typseq := 1 ; 585 lval : typseq := 13 ; 586 END ; 587 rq : CASE kind OF 588 varbl : IF easyvar (gattr) THEN typseq := 9 ELSE typseq := 32 ; 589 sval : typseq := 9 ; 590 lval : typseq := 15 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 33 591 END ; 592 END (* CASE FATTR.LDREG *) ; 593 END (* CASE FATTR.KIND,WITH GATTR *) ; 594 END (* TYPSEQ= 0 *) ; 595 IF declarationpart AND 596 NOT (typseq IN [0, 3, 4, 12]) THEN 597 BEGIN 598 illegal_generation := true ; 599 fattr.typtr := NIL ; 600 END 601 ELSE 602 CASE typseq OF 603 0 : 604 $OPTIONS compile = security $ 605 error (433) 606 $OPTIONS compile = true $ 607 ; 608 1 : BEGIN transfer (fattr, inacc) ; 609 calcvarient (gattr, lbase, ldisp, ltag) ; 610 WITH gattr DO 611 IF kind = varbl THEN usednameaddr := nameaddr ; 612 genstand (lbase, ldisp, linst, ltag) ; 613 END ; (* 1 *) 614 2 : BEGIN transfer (gattr, inacc) ; 615 calcvarient (fattr, lbase, ldisp, ltag) ; 616 WITH fattr DO 617 IF kind = varbl THEN usednameaddr := nameaddr ; 618 genstand (lbase, ldisp, linst, ltag) ; 619 genstand (nreg, 0, lneg, tn) ; 620 END (* 2 *) ; 621 3 : IF generic = realptr THEN 622 IF fattr.typtr # realptr THEN convreal (fattr) ; 623 9 : BEGIN transfer (fattr, inq) ; 624 calcvarient (gattr, lbase, ldisp, ltag) ; 625 WITH gattr DO 626 IF kind = varbl THEN usednameaddr := nameaddr ; 627 genstand (lbase, ldisp, linstq, ltag) ; 628 END (* 9 *) ; 629 12 : 630 IF generic = realptr THEN 631 gattr.rsval := fattr.rsval - gattr.rsval ELSE 632 IF rev THEN 633 gattr.val := int_op (3, fattr.val, gattr.val) ELSE (* ADD *) 634 gattr.val := int_op (4, fattr.val, gattr.val) ; (* SUB *) 635 13 : BEGIN genstand (pr6, evareaw, istq, tn) ; freeattr (gattr) ; 636 genstand (pr6, evareaw, isba, tn) ; 637 END ; 638 15 : BEGIN genstand (pr6, evareaw, ista, tn) ; freeattr (gattr) ; 639 genstand (pr6, evareaw, isbq, tn) ; 640 END (* 15 *) ; 641 16 : BEGIN calcvarient (gattr, lbase, ldisp, ltag) ; 642 WITH gattr DO 643 BEGIN 644 IF NOT rqisused THEN 645 BEGIN ldreg := rq ; linst := ilcq ; 646 END ELSE 647 BEGIN ldreg := ra ; linst := ilca ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 34 648 END ; 649 sauvereg (ldreg, true) ; 650 ldregbloc := currentbloc ; 651 END ; 652 WITH gattr DO 653 IF kind = varbl THEN usednameaddr := nameaddr ; 654 genstand (lbase, ldisp, linst, ltag) ; 655 gattr.kind := lval ; 656 END (* 16 *) ; 657 30 : BEGIN transfer (gattr, inacc) ; 658 genstand (nreg, 0, lneg, tn) ; 659 END (* 30 *) ; 660 32 : BEGIN transfer (gattr, inacc) ; 661 sauvereg (rq, false) ; 662 calcvarient (fattr, lbase, ldisp, ltag) ; 663 WITH fattr DO 664 IF kind = varbl THEN usednameaddr := nameaddr ; 665 genstand (lbase, ldisp, linst, ltag) ; 666 genstand (nreg, 0, lneg, tn) ; 667 END (* 32 *) ; 668 END (* CASE TYPSEQ *) ; 669 IF odd (typseq) THEN 670 gattr := fattr ; 671 $OPTIONS compile = trace $ 672 IF stattrace > low THEN 673 BEGIN 674 write (mpcogout, '@@@ FIN GENOPSUB @@@ WITH TYPSEQ', typseq : 4) ; nextline ; 675 END ; 676 $OPTIONS compile = true $ 677 END (* GENOPSUB *) ; 678 679 680 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 35 681 682 (* ************************************ GENANDOR ****************************** *) 683 684 PROCEDURE genandor (VAR fattr : attr ; fno : integer) ; 685 686 (* C .CODE GENERATION FOR OPERATIONS "AND" FNO=6 ON BOOLEAN. 687* "OR" FNO=7 688* .FATTR DESCRIBES LEFT OPERAND 689* .GATTR DESCRIBES RIGHT OPERAND 690* * RETURNS A GATTR. 691* C *) 692 VAR 693 typseq, ldisp : integer ; 694 cattr, tattr : attr ; 695 lbase : preg ; 696 ltag : tag ; 697 isand : boolean ; 698 insta, instq : istand ; 699 BEGIN (* GENANDOR *) 700 $OPTIONS compile = trace $ 701 IF stattrace > none THEN 702 BEGIN 703 write (mpcogout, '@@@ DEBUT GENANDOR @@@ WITH FNO', fno : 4) ; nextline ; 704 END ; 705 $OPTIONS compile = true $ 706 isand := fno = 6 ; 707 IF isand THEN 708 BEGIN 709 insta := iana ; instq := ianq ; 710 END ELSE 711 BEGIN (* OR *) 712 insta := iora ; instq := iorq ; 713 END ; 714 IF gattr.kind = lcond THEN choicerarq ; 715 IF fattr.kind = lval THEN lvalvarbl (fattr) ; 716 WITH gattr DO 717 IF kind = sval THEN 718 BEGIN 719 IF val = ord (false) THEN 720 typseq := 3 + ord (isand) 721 ELSE 722 typseq := 4 - ord (isand) 723 END ELSE 724 IF fattr.kind = sval THEN 725 BEGIN 726 IF fattr.val = ord (false) THEN 727 typseq := 4 - ord (isand) ELSE 728 typseq := 3 + ord (isand) ; 729 END ELSE 730 IF kind = varbl THEN 731 BEGIN 732 IF easyvar (gattr) THEN 733 BEGIN 734 typseq := 1 ; 735 IF fattr.kind = lval THEN 736 IF fattr.ldreg # ra THEN 737 typseq := 9 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 36 738 END ELSE 739 BEGIN 740 typseq := 2 ; 741 IF fattr.kind = lval THEN 742 IF fattr.ldreg # ra THEN 743 typseq := 10 ; 744 END (* NOT EASYVAR *) ; 745 END (* GATTR.KIND=VARBL *) ELSE 746 (* GATTR LVAL *) 747 IF ldreg = ra THEN 748 IF fattr.kind = varbl THEN typseq := 2 ELSE typseq := 14 (* END RA *) ELSE 749 (* RQ *) 750 IF fattr.kind = varbl THEN typseq := 10 ELSE typseq := 13 ; 751 IF odd (typseq) THEN 752 BEGIN 753 tattr := fattr ; cattr := gattr ; 754 END ELSE 755 BEGIN 756 tattr := gattr ; cattr := fattr ; 757 END ; 758 CASE typseq OF 759 1, 2 : BEGIN transfer (tattr, inacc) ; 760 calcvarient (cattr, lbase, ldisp, ltag) ; 761 WITH cattr DO 762 IF kind = varbl THEN usednameaddr := nameaddr ; 763 genstand (lbase, ldisp, insta, ltag) ; 764 END (* 1,2 *) ; 765 3, 4 : BEGIN freeattr (cattr) ; 766 END (* 3,4 *) ; 767 9, 10 : BEGIN transfer (tattr, inq) ; 768 calcvarient (cattr, lbase, ldisp, ltag) ; 769 WITH cattr DO 770 IF kind = varbl THEN usednameaddr := nameaddr ; 771 genstand (lbase, ldisp, instq, ltag) ; 772 END (* 9,10 *) ; 773 13, 14 : BEGIN genstand (pr6, evareaw, istq, tn) ; freeattr (cattr) ; 774 genstand (pr6, evareaw, insta, tn) ; 775 END (* 13,14 *) ; 776 END (* CASE TYPSEQ *) ; 777 gattr := tattr ; 778 $OPTIONS compile = trace $ 779 IF stattrace > low THEN 780 BEGIN 781 write (mpcogout, '@@@ FIN GENANDOR @@@ WITH TYPSEQ:', typseq : 4) ; nextline ; 782 END ; 783 $OPTIONS compile = true $ 784 END (* GENANDOR *) ; 785 786 787 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 37 788 789 (* ************************************ GENOPDIVI ***************************** *) 790 791 PROCEDURE genopdivi (VAR fattr : attr) ; 792 793 (* C BEFORE CALL, FATTR , GATTR ARE REAL 794* DIVCHECKS ALREADY MADE 795* AT OUTPUT BUILDS GATTR., GENERATES DIVISION 796* FATTR CAN BE 797* ESAY 8, RSVAL , EAQ 798* GATTR CAN BE 799* EASY 8, NOT EASY 8 , RSVAL, EAQ 800* C *) 801 (* E ERRORS DETECTED 802* 300: ZERO DIVIDE CAN BE NOT SUITABLE 803* E *) 804 VAR 805 typseq, ldisp : integer ; 806 lbase : preg ; 807 ltag : tag ; 808 BEGIN (* GENOPDIVI *) 809 $OPTIONS compile = trace $ 810 IF stattrace > none THEN 811 BEGIN 812 write (mpcogout, '@@@ DEBUT GENOPDIVI @@@') ; nextline ; 813 END ; 814 $OPTIONS compile = true $ 815 IF gattr.kind = sval THEN 816 BEGIN 817 IF gattr.rsval = 0 THEN 818 typseq := 0 ELSE 819 IF gattr.rsval = 1.0 THEN 820 typseq := 3 ELSE 821 BEGIN 822 IF fattr.kind = sval THEN 823 BEGIN 824 IF fattr.rsval = 0.0 THEN 825 typseq := 3 ELSE 826 BEGIN 827 typseq := 1 ; 828 IF abs (gattr.rsval) >= 1 THEN 829 IF abs (gattr.rsval) < maxint THEN IF abs (fattr.rsval) >= 1 THEN 830 IF abs (fattr.rsval) < maxint THEN typseq := 12 ; 831 END ; 832 END (* FATTR.SVAL *) ELSE 833 typseq := 1 ; 834 END ; 835 END (* GATTR SVAL *) ELSE 836 BEGIN 837 IF fattr.kind = lval THEN 838 lvalvarbl (fattr) ; 839 CASE fattr.kind OF 840 varbl : typseq := 2 ; 841 lval : typseq := 1 ; 842 sval : IF fattr.rsval = 0.0 THEN 843 typseq := 3 ELSE 844 typseq := 2 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 38 845 END (* CASE *) ; 846 END (* GATTR ^=SVAL *) ; 847 CASE typseq OF 848 0 : error (300) ; 849 1 : BEGIN 850 transfer (fattr, inacc) ; 851 calcvarient (gattr, lbase, ldisp, ltag) ; 852 WITH gattr DO 853 IF kind = varbl THEN usednameaddr := nameaddr ; 854 genstand (lbase, ldisp, idfdv, ltag) ; 855 gattr := fattr ; 856 END ; 857 2 : BEGIN 858 transfer (gattr, inacc) ; 859 calcvarient (fattr, lbase, ldisp, ltag) ; 860 WITH fattr DO 861 IF kind = varbl THEN usednameaddr := nameaddr ; 862 genstand (lbase, ldisp, idfdi, ltag) ; 863 (* GATTR UNCHANGED *) 864 END ; 865 3 : BEGIN freeattr (gattr) ; 866 gattr := fattr ; 867 END ; 868 12 : gattr.rsval := fattr.rsval / gattr.rsval ; 869 END (* CASE TYPSEQ *) ; 870 $OPTIONS compile = trace $ 871 IF stattrace > low THEN 872 BEGIN 873 write (mpcogout, '@@@ FIN GENOPDIVI @@@ WITH TYPSEQ', typseq : 4) ; nextline ; 874 END ; 875 $OPTIONS compile = true $ 876 END (* GENOPDIVI *) ; 877 878 879 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 39 880 881 (* ************************************ GENDIVMOD ***************************** *) 882 883 PROCEDURE gendivmod (VAR fattr : attr ; fcl : integer) ; 884 885 (* C .CODE GENERATION FOR DIV, MOD ON NUMERIC OPERANDS 886* FCL=4 ==> DIV 887* FCL=5 ==> MOD 888* .FATTR IS LEFT OPERAND, GATTR RIGHT OPERAND 889* .SPECIAL CASES SVAL 0,1,2**N 890* . [Q] OPERAND DIV Y OPERAND ==> QUOTIENT IN [Q] 891* REMAINDER IN [A] 892* . RETURNS GATTR 893* C *) 894 (* E ERRORS DETECTED 895* 308 : RIGHT ARGUMENT OF DIV IS NULL 896* 309 : RIGHT ARGUMENT OF MOD IS NEGATIVE OR NULL 897* E *) 898 VAR 899 locskip, typseq, ldisp : integer ; 900 ismod : boolean ; 901 lbase : preg ; 902 ltag : tag ; 903 BEGIN (* GENDIVMOD *) 904 $OPTIONS compile = trace $ 905 IF stattrace > none THEN 906 BEGIN 907 write (mpcogout, '@@@ DEBUT GENDIVMOD @@@ WITH FCL', fcl : 4) ; nextline ; 908 END ; 909 $OPTIONS compile = true $ 910 ismod := fcl = 5 ; 911 IF fattr.kind = lval THEN 912 lvalvarbl (fattr) ; 913 WITH gattr DO 914 CASE fattr.kind OF 915 varbl : CASE kind OF 916 varbl : IF easyvar (gattr) THEN typseq := 25 ELSE typseq := 32 ; 917 lval : typseq := 25 ; 918 sval : IF ismod THEN 919 IF val <= 0 THEN typseq := 1 920 ELSE typseq := 25 921 ELSE IF val = 0 THEN typseq := 0 922 ELSE IF val = 1 THEN typseq := 3 ELSE typseq := 25 ; 923 END ; 924 sval : IF kind = sval THEN 925 IF ismod THEN 926 IF val <= 0 THEN typseq := 1 927 ELSE IF fattr.val = 0 THEN typseq := 3 ELSE typseq := 12 928 ELSE IF val = 0 THEN typseq := 0 929 ELSE IF fattr.val = 0 THEN typseq := 3 ELSE typseq := 12 930 ELSE IF fattr.val = 0 THEN typseq := 3 931 ELSE IF kind = varbl THEN 932 IF easyvar (gattr) THEN typseq := 25 ELSE typseq := 32 933 ELSE typseq := 25 ; 934 lval : CASE kind OF 935 varbl : IF easyvar (gattr) THEN typseq := 25 936 ELSE IF fattr.ldreg = ra THEN typseq := 27 ELSE typseq := 32 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 40 937 sval : IF ismod THEN 938 IF val <= 0 THEN typseq := 1 ELSE typseq := 25 939 ELSE IF val = 0 THEN typseq := 0 940 ELSE IF val = 1 THEN typseq := 3 ELSE typseq := 25 ; 941 lval : IF ldreg = rq THEN typseq := 27 ELSE typseq := 25 ; 942 END ; 943 END ; 944 CASE typseq OF 945 0 : error (308) ; 946 1 : error (309) ; 947 3 : freeattr (gattr) ; 948 12 : IF ismod THEN 949 fattr.val := fattr.val MOD gattr.val ELSE 950 fattr.val := fattr.val DIV gattr.val ; 951 25 : BEGIN 952 (* Temporary correction of a bug 25= Sequence 32 *) 953 (* A ameliorer plus tard *) 954 transfer (gattr, inacc) ; 955 sauvereg (ra, false) ; 956 IF fattr.kind = lval THEN lvalvarbl (fattr) ; 957 transfer (fattr, inq) ; 958 calcvarient (gattr, lbase, ldisp, ltag) ; 959 WITH gattr DO 960 IF kind = varbl THEN usednameaddr := nameaddr ; 961 genstand (lbase, ldisp, idiv, ltag) ; 962 IF ismod THEN 963 BEGIN 964 genstand (nreg, bitsinword, ilrs, tn) ; 965 locskip := indfich ; 966 genstand (nreg, 0, itpl, tic) ; 967 calcvarient (gattr, lbase, ldisp, ltag) ; 968 WITH gattr DO 969 IF kind = varbl THEN usednameaddr := nameaddr ; 970 genstand (lbase, ldisp, iadq, ltag) ; 971 inser (cb, locskip) ; 972 END ; 973 END (* 25 *) ; 974 27 : BEGIN transfer (gattr, inq) ; transfer (fattr, inq) ; 975 calcvarient (gattr, lbase, ldisp, ltag) ; 976 WITH gattr DO 977 IF kind = varbl THEN usednameaddr := nameaddr ; 978 genstand (lbase, ldisp, idiv, ltag) ; 979 IF ismod THEN 980 BEGIN 981 genstand (nreg, bitsinword, ilrs, tn) ; 982 locskip := indfich ; 983 genstand (nreg, 0, itpl, tic) ; 984 calcvarient (gattr, lbase, ldisp, ltag) ; (* NOT NECESSARY *) 985 WITH gattr DO 986 IF kind = varbl THEN usednameaddr := nameaddr ; 987 genstand (lbase, ldisp, iadq, ltag) ; 988 inser (cb, locskip) ; 989 END ; 990 END (* 27 *) ; 991 32 : BEGIN transfer (gattr, inacc) ; sauvereg (ra, false) ; transfer (fattr, inq) ; 992 calcvarient (gattr, lbase, ldisp, ltag) ; 993 WITH gattr DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 41 994 IF kind = varbl THEN usednameaddr := nameaddr ; 995 genstand (lbase, ldisp, idiv, ltag) ; 996 IF ismod THEN 997 BEGIN 998 genstand (nreg, bitsinword, ilrs, tn) ; 999 locskip := indfich ; 1000 genstand (nreg, 0, itpl, tic) ; 1001 calcvarient (gattr, lbase, ldisp, ltag) ; (* NOT NECESSARY *) 1002 WITH gattr DO 1003 IF kind = varbl THEN usednameaddr := nameaddr ; 1004 genstand (lbase, ldisp, iadq, ltag) ; 1005 inser (cb, locskip) ; 1006 END ; 1007 END (* 32 *) ; 1008 END (* CASE TYPSEQ *) ; 1009 gattr := fattr ; 1010 $OPTIONS compile = trace $ 1011 IF stattrace > low THEN 1012 BEGIN 1013 write (mpcogout, '@@@ FIN GENDIVMOD @@@ WITH TYPSEQ', typseq : 4) ; nextline ; 1014 END ; 1015 $OPTIONS compile = true $ 1016 END (* GENDIVMOD *) ; 1017 1018 1019 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 42 1020 1021 (* ************************************ GENOPMULT ***************************** *) 1022 1023 PROCEDURE genopmult (VAR fattr : attr ; generic : ctp) ; 1024 1025 (* C *CODE GENERATION FOR A MULTIPLICATION 1026* .SPECIAL CASES SVAL 0,1 , 2**N 1027* FATTR IS LEFT OPERAND 1028* GATTR IS RIGHT OPERAND 1029* *RETURNS GATTR 1030* C *) 1031 (* E ERRORS DETECTED 1032* 419: TYPSEQ IS 0 1033* E *) 1034 VAR 1035 typseq, itl, itg, ldisp, nbshif : integer ; 1036 ltag : tag ; 1037 lbase : preg ; 1038 isreal : boolean ; 1039 linst : istand ; 1040 tattr, cattr : attr ; 1041 BEGIN (* GENOPMULT *) 1042 $OPTIONS compile = trace $ 1043 IF stattrace > none THEN 1044 BEGIN 1045 write (mpcogout, '@@@ DEBUT GENOPMULT @@@') ; nextline ; 1046 END ; 1047 $OPTIONS compile = true $ 1048 typseq := 0 ; itg := 0 ; itl := 0 ; 1049 IF fattr.kind = sval THEN 1050 WITH fattr DO 1051 BEGIN 1052 IF typtr = realptr THEN 1053 BEGIN 1054 IF rsval = 0 THEN typseq := 3 ELSE 1055 IF rsval = 1 THEN typseq := 4 1056 END ELSE 1057 IF val = 0 THEN typseq := 3 ELSE 1058 IF val = 1 THEN typseq := 4 ELSE 1059 itl := poweroftwo (val) ; 1060 END (* WITH FATTR, FATTR.KIND=SVAL *) ELSE 1061 IF gattr.kind = sval THEN 1062 WITH gattr DO 1063 BEGIN 1064 IF typtr = realptr THEN 1065 BEGIN 1066 IF rsval = 0 THEN typseq := 4 ELSE 1067 IF rsval = 1 THEN typseq := 3 1068 END ELSE 1069 IF val = 0 THEN typseq := 4 ELSE 1070 IF val = 1 THEN typseq := 3 ELSE 1071 itg := poweroftwo (val) ; 1072 END (* WITH GATTR, GATTR.KIND=SVAL *) ; 1073 IF typseq = 0 THEN 1074 BEGIN 1075 IF generic = realptr THEN 1076 BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 43 1077 IF fattr.typtr # realptr THEN 1078 convreal (fattr) ELSE 1079 IF gattr.typtr # realptr THEN 1080 convreal (gattr) ; 1081 linst := idfmp ; 1082 END (* REALPTR *) ELSE 1083 linst := impy ; 1084 IF fattr.kind = lval THEN 1085 lvalvarbl (fattr) ; 1086 isreal := generic = realptr ; 1087 WITH gattr DO 1088 CASE fattr.kind OF 1089 varbl : IF NOT isreal THEN 1090 BEGIN 1091 IF itg > 0 THEN 1092 IF NOT rqisused THEN typseq := 33 ELSE typseq := 29 1093 ELSE 1094 typseq := 36 1095 END (* NOT REAL *) ELSE 1096 typseq := 2 ; 1097 sval : IF isreal THEN 1098 BEGIN 1099 typseq := 2 ; 1100 IF kind = sval THEN 1101 IF abs (rsval) >= 1 THEN 1102 IF abs (rsval) < maxint THEN 1103 IF abs (fattr.rsval) < maxint THEN typseq := 12 ; 1104 END (* ISREAL *) ELSE 1105 BEGIN (* NOT REAL *) 1106 IF kind = sval THEN 1107 BEGIN 1108 typseq := 12 ; 1109 END (* GATTR SVAL *) ELSE 1110 IF itl > 0 THEN 1111 BEGIN 1112 IF kind = varbl THEN 1113 IF NOT rqisused THEN typseq := 34 ELSE typseq := 30 1114 ELSE 1115 IF ldreg = ra THEN typseq := 30 ELSE typseq := 34 1116 END (* ITL > 0 *) ELSE 1117 typseq := 36 ; 1118 END (* NOT REAL, FATTR.KIND=SVAL *) ; 1119 lval : IF isreal THEN typseq := 1 ELSE 1120 CASE kind OF 1121 varbl : IF easyvar (gattr) THEN typseq := 35 ELSE typseq := 36 ; 1122 sval : IF itg > 0 THEN 1123 IF fattr.ldreg = ra THEN typseq := 29 ELSE typseq := 33 1124 ELSE 1125 typseq := 35 ; 1126 lval : IF ldreg = rq THEN typseq := 35 ELSE typseq := 36 ; 1127 END (* CASE KIND, NOT ISREAL, FATTR LVAL *) ; 1128 END (* CASE FATTR.KIND,WITH GATTR *) ; 1129 END (* TYPSEQ IS 0 *) ; 1130 IF odd (typseq) THEN 1131 BEGIN 1132 tattr := fattr ; cattr := gattr ; nbshif := itg ; 1133 END ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 44 1134 BEGIN 1135 tattr := gattr ; cattr := fattr ; nbshif := itl ; 1136 END ; 1137 IF declarationpart AND 1138 NOT (typseq IN [0, 3, 4, 12]) THEN 1139 BEGIN 1140 illegal_generation := true ; 1141 tattr.typtr := NIL ; 1142 END 1143 ELSE 1144 CASE typseq OF 1145 0 : 1146 $OPTIONS compile = trace $ 1147 error (419) 1148 $OPTIONS compile = true $ 1149 ; 1150 1, 2 : BEGIN transfer (tattr, inacc) ; 1151 calcvarient (cattr, lbase, ldisp, ltag) ; 1152 WITH cattr DO 1153 IF kind = varbl THEN usednameaddr := nameaddr ; 1154 genstand (lbase, ldisp, linst, ltag) ; 1155 IF linst = impy THEN 1156 IF asscheck THEN gencheckmultover ; 1157 END (* 1,2 *) ; 1158 3, 4 : BEGIN freeattr (cattr) ; 1159 IF generic = realptr THEN 1160 IF tattr.typtr # realptr THEN convreal (tattr) ; 1161 END (* 3,4 *) ; 1162 12 : IF generic = realptr THEN 1163 tattr.rsval := cattr.rsval * tattr.rsval ELSE 1164 tattr.val := int_op (1, cattr.val, tattr.val) ; 1165 29, 30 : BEGIN transfer (tattr, inacc) ; 1166 genstand (nreg, nbshif, ials, tn) ; 1167 END (* 29,30 *) ; 1168 33, 34 : BEGIN transfer (tattr, inq) ; 1169 genstand (nreg, nbshif, iqls, tn) ; 1170 END (* 33,34 *) ; 1171 35, 36 : BEGIN transfer (tattr, inq) ; 1172 sauvereg (ra, false) ; 1173 calcvarient (cattr, lbase, ldisp, ltag) ; 1174 WITH cattr DO 1175 IF kind = varbl THEN usednameaddr := nameaddr ; 1176 genstand (lbase, ldisp, linst, ltag) ; 1177 IF linst = impy THEN 1178 IF asscheck THEN gencheckmultover ; 1179 END (* 35,36 *) ; 1180 END (* CASE TYPSEQ *) ; 1181 gattr := tattr ; 1182 $OPTIONS compile = trace $ 1183 IF stattrace > low THEN 1184 BEGIN 1185 write (mpcogout, '@@@ FIN GENOPMULT @@@ WITH TYPSEQ :', typseq : 4) ; nextline ; 1186 END ; 1187 $OPTIONS compile = true $ 1188 END (* GENOPMULT *) ; 1189 1190 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 45 1191 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 46 1192 1193 (* ************************************ GENPTCOMP ***************************** *) 1194 1195 PROCEDURE genptcomp (VAR fattr : attr ; fcl : integer) ; 1196 1197 (* C . FATTR LEFT OPERAND 1198* GATTR RIGHT OPERAND 1199* ."NIL" IS SVAL CF. CALCVARIENT 1200* .PRODUCES A GATTR LCOND. 1201* C *) 1202 VAR 1203 typseq : integer ; 1204 lretpt : lcstpt ; 1205 BEGIN (* GENPTCOMP *) 1206 $OPTIONS compile = trace $ 1207 IF stattrace > none THEN 1208 BEGIN 1209 write (mpcogout, '@@@ DEBUT GENPTCOMP @@@') ; nextline ; 1210 END ; 1211 $OPTIONS compile = true $ 1212 typseq := 2 ; 1213 IF fattr.typtr = nilptr THEN 1214 BEGIN transfer (gattr, inacc) ; typseq := 4 ; 1215 END ELSE 1216 IF gattr.typtr = nilptr THEN 1217 BEGIN transfer (fattr, inacc) ; typseq := 3 ; 1218 END ; 1219 IF typseq <= 2 THEN 1220 BEGIN 1221 1222 transfer (gattr, inacc) ; 1223 enterlcst (clearpt, lretpt) ; 1224 enterundlab (lretpt^.lplace) ; 1225 genstand (nreg, 0, ianaq, tic) ; 1226 genstand (pr6, evareaw, istaq, tn) ; 1227 freebloc (gattr.ldregbloc) ; 1228 1229 IF fattr.kind = lval THEN 1230 lvalvarbl (fattr) ; 1231 transfer (fattr, inacc) ; 1232 enterlcst (clearpt, lretpt) ; 1233 enterundlab (lretpt^.lplace) ; 1234 genstand (nreg, 0, ianaq, tic) ; 1235 genstand (pr6, evareaw, icmpaq, tn) ; 1236 typseq := 1 ; (* REVERSE COMPARAISON *) 1237 END ELSE 1238 BEGIN enterlcst (nileraq, lretpt) ; enterundlab (lretpt@.lplace) ; 1239 genstand (nreg, 0, ieraq, tic) ; 1240 enterlcst (nilanaq, lretpt) ; enterundlab (lretpt@.lplace) ; 1241 genstand (nreg, 0, ianaq, tic) ; 1242 END ; 1243 freeattr (gattr) ; freeattr (fattr) ; 1244 WITH gattr DO 1245 BEGIN 1246 kind := lcond ; accbool := false ; accbloc := NIL ; 1247 IF odd (typseq) THEN 1248 transf := cltransf [fcl] ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 47 1249 transf := revcltransf [fcl] ; 1250 (* TYPTR OUTSIDE *) 1251 END ; 1252 $OPTIONS compile = trace $ 1253 IF stattrace > low THEN 1254 BEGIN 1255 write (mpcogout, '@@@ FIN GENPTCOMP @@@ WITH FCL,TRANSF :', fcl : 4, gattr.transf) ; 1256 nextline ; 1257 END ; 1258 $OPTIONS compile = true $ 1259 END (* GENPTCOMP *) ; 1260 1261 1262 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 48 1263 1264 (* ************************************ GENSTCOMP ***************************** *) 1265 1266 PROCEDURE genstcomp (VAR fattr : attr ; fcl : integer) ; 1267 1268 (* C . FATTR IS LEFT OPERAND 1269* GATTR IS RIGHT OPERAND 1270* . OUTPUT PROCEDURE IS A GATTR LCOND 1271* C *) 1272 (* E ERRORS DETECTED 1273* 29 : SAME LENGTH STRINGS EXPECTED HERE 1274* 131 : LENGTH TOO LARGE(CONFLICT) 1275* 307 : LENGTH TOO LARGE ( LIMIT IMPLEMENTATION) 1276* E *) 1277 VAR 1278 lfbase, rgbase : preg ; 1279 lfchain, rgchain : boolean ; 1280 lflong, rglong, lfdisp, rgdisp, lfmod, rgmod, suplr, ltransf : integer ; 1281 lftag, rgtag : tag ; 1282 BEGIN (* GENSTCOMP *) 1283 $OPTIONS compile = trace $ 1284 IF stattrace > none THEN 1285 BEGIN 1286 write (mpcogout, '@@@ DEBUT GENSTCOMP @@@ WITH FCL', fcl : 4) ; nextline ; 1287 END ; 1288 $OPTIONS compile = true $ 1289 WITH fattr DO (* LEFT OPER. *) 1290 BEGIN 1291 IF kind = chain THEN 1292 BEGIN 1293 loadadr (fattr, nreg) ; 1294 lfbase := currentpr ; lflong := alfactp@.alfalong ; lfchain := true ; 1295 lfdisp := 0 ; lfmod := 0 ; 1296 WITH fattr DO 1297 BEGIN 1298 kind := varbl ; access := pointee ; 1299 basebloc := currentbloc ; basereg := currentpr ; 1300 inxbloc := NIL ; inxmem := 0 ; dplmt := 0 ; inxmemrw := false ; pckd := true ; 1301 vlev := level ; 1302 END ; 1303 END (* CHAIN *) ELSE 1304 BEGIN (* VARBL *) 1305 lfchain := false ; 1306 IF basereg <= maxprused THEN 1307 regenere (basebloc) ; 1308 lfbase := basereg ; lfdisp := dplmt DIV bytesinword ; 1309 lflong := typtr@.size ; lfmod := dplmt MOD bytesinword ; 1310 END (* VARBL *) ; 1311 END (* WITH FATTR *) ; 1312 WITH gattr DO (* RIGHT OPERAND *) 1313 BEGIN 1314 IF kind = chain THEN 1315 BEGIN 1316 loadadr (gattr, pr3) ; 1317 rgbase := pr3 ; rglong := alfactp@.alfalong ; rgchain := true ; rgdisp := 0 ; 1318 rgmod := 0 ; 1319 END (* CHAIN *) ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 49 1320 BEGIN (* VARBL *) 1321 rgchain := false ; rglong := typtr@.size ; 1322 IF NOT varissimple (gattr) THEN 1323 BEGIN 1324 loadadr (gattr, pr3) ; 1325 rgbase := pr3 ; rgmod := 0 ; rgdisp := 0 ; 1326 END ELSE 1327 BEGIN 1328 rgbase := basereg ; rgdisp := dplmt DIV bytesinword ; 1329 rgmod := dplmt MOD bytesinword ; 1330 END ; 1331 END (* VARBL *) ; 1332 END (* WITH GATTR *) ; 1333 IF lfchain THEN 1334 BEGIN 1335 IF lflong > rglong THEN error (131) ; 1336 END ELSE 1337 IF rgchain THEN 1338 BEGIN 1339 IF lflong < rglong THEN error (131) ; 1340 END ; 1341 suplr := sup (lflong, rglong) ; 1342 IF envstandard <> stdextend THEN 1343 IF lflong # rglong THEN error (29) ; 1344 IF suplr < twoto12 THEN 1345 BEGIN 1346 mfari1 := a1r0i0 ; mfari2 := a1r0i0 ; lftag := tn ; rgtag := tn ; 1347 END ELSE 1348 BEGIN 1349 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; lftag := tx6 ; rgtag := tx7 ; 1350 IF suplr > twoto17m1 THEN 1351 error (307) ELSE 1352 BEGIN 1353 genstand (nreg, lflong, ieax6, tn) ; 1354 genstand (nreg, rglong, ieax7, tn) ; 1355 END ; 1356 lflong := 0 ; rglong := 0 ; 1357 END ; 1358 geneism (icmpc, ord (' '), p0t0r0) ; 1359 IF fcl IN [2, 4] THEN 1360 BEGIN (* <= > *) 1361 WITH gattr DO 1362 IF kind = varbl THEN usednameaddr := nameaddr ELSE 1363 IF kind = chain THEN usednameaddr := alfactp ; 1364 gendesca (rgbase, rgdisp, rgmod, l9, rglong, rgtag) ; 1365 WITH fattr DO 1366 IF kind = varbl THEN usednameaddr := nameaddr ELSE 1367 IF kind = chain THEN usednameaddr := alfactp ; 1368 gendesca (lfbase, lfdisp, lfmod, l9, lflong, lftag) ; 1369 IF fcl = 2 THEN 1370 fcl := 3 (* >= *) ELSE fcl := 1 ; (* < *) 1371 END ELSE 1372 BEGIN 1373 WITH fattr DO 1374 IF kind = varbl THEN usednameaddr := nameaddr ELSE 1375 IF kind = chain THEN usednameaddr := alfactp ; 1376 gendesca (lfbase, lfdisp, lfmod, l9, lflong, lftag) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 50 1377 WITH gattr DO 1378 IF kind = varbl THEN usednameaddr := nameaddr ELSE 1379 IF kind = chain THEN usednameaddr := alfactp ; 1380 gendesca (rgbase, rgdisp, rgmod, l9, rglong, rgtag) ; 1381 END ; 1382 CASE fcl OF 1383 1 : ltransf := 11 ; (* CARRY OFF TRUE *) 1384 3 : ltransf := 12 ; (* CARRY ON TRUE *) 1385 5 : ltransf := 6 ; (* ZERO OFF TRUE *) 1386 6 : ltransf := 2 ; (* ZERO ON TRUE *) 1387 END (* CASE FCL *) ; 1388 freeattr (fattr) ; 1389 freeattr (gattr) ; 1390 WITH gattr DO (* TYPTR OUTSIDE *) 1391 BEGIN 1392 kind := lcond ; accbool := false ; accbloc := NIL ; 1393 transf := ltransf ; 1394 END ; 1395 $OPTIONS compile = trace $ 1396 IF stattrace > low THEN 1397 BEGIN 1398 write (mpcogout, '@@@ FIN GENSTCOMP @@@ WITH TRANSF', ltransf) ; nextline ; 1399 END ; 1400 $OPTIONS compile = true $ 1401 END (* GENSTCOMP *) ; 1402 1403 1404 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 51 1405 1406 (* ************************************ GENJUMP ******************************* *) 1407 1408 PROCEDURE genjump (VAR inserplace : integer ; jumpdisp : integer) ; 1409 1410 (* C .CALLED IN ORDER TO GENERATE THE JUMP IF FALSE FOR 1411* REPEAT NO INSER, JUMPDISP KNOWN BACKWARDS 1412* WHILE,IF INSER , JUMPDISP=0 1413* .BEFORE CALL GATTR IS TESTED AND HAS TYPTR=BOOLPTR 1414* C *) 1415 VAR 1416 linst : istand ; 1417 locinser : integer ; 1418 BEGIN (* GENJUMP *) 1419 $OPTIONS compile = trace $ 1420 IF stattrace > none THEN 1421 BEGIN 1422 write (mpcogout, '@@@ DEBUT GENJUMP @@@ WITH JUMPDISP', jumpdisp) ; nextline ; 1423 END ; 1424 $OPTIONS compile = true $ 1425 WITH gattr DO 1426 IF kind = lcond THEN 1427 BEGIN 1428 CASE transf OF 1429 1, 7 : linst := itpl ; (* JUMP IF NEGATIVE OFF *) 1430 2, 13, 15 : linst := itnz ; (* JUMP IF ZERO OFF *) 1431 3, 6, 14 : linst := itze ; (* JUMP IF ZERO ON *) 1432 4 : linst := inop ; (* NO JUMP *) 1433 5 : linst := itra ; (* INCONDITIONAL JUMP *) 1434 8 : linst := itpnz ; (* JUMP IF NEGATIVE OFF AND ZERO OFF *) 1435 9 : linst := itmi ; (* JUMP IF NEGATIVE ON *) 1436 10 : linst := itmoz ; (* JUMP IF NEGATIVE ON OR ZERO ON *) 1437 11 : linst := itrc ; (* JUMP IF CARRY ON *) 1438 12 : linst := itnc ; (* JUMP IF CARRY OFF *) 1439 END (* CASE TRANSF *) ; 1440 IF accbloc # NIL THEN freebloc (accbloc) ; 1441 locinser := indfich ; 1442 END (* LCOND *) ELSE 1443 IF kind = sval THEN 1444 BEGIN 1445 IF val = ord (false) THEN 1446 linst := itra ELSE linst := inop ; 1447 locinser := indfich ; 1448 END (* SVAL *) ELSE 1449 BEGIN 1450 transfer (gattr, inacc) ; (* SET INDICATORS *) 1451 locinser := indfich ; linst := itze ; (* SKIP IF ZERO OFF =FALSE *) 1452 freebloc (ldregbloc) ; 1453 END (* NEITHER LCOND, NOR SVAL *) ; 1454 IF linst # inop THEN 1455 BEGIN 1456 IF jumpdisp # 0 (* REPEAT BACKWARDS *) THEN 1457 BEGIN 1458 genstand (nreg, (jumpdisp - cb) DIV bytesinword, linst, tic) ; 1459 END ELSE 1460 BEGIN (* WHILE,IF ==> FORWARDS *) 1461 inserplace := locinser ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 52 1462 genstand (nreg, 0, linst, tic) ; 1463 END ; 1464 END ; 1465 $OPTIONS compile = trace $ 1466 IF stattrace > low THEN 1467 BEGIN 1468 write (mpcogout, '@@@ FIN GENJUMP @@@ WITH V.INSERPLACE', inserplace) ; nextline ; 1469 END ; 1470 $OPTIONS compile = true $ 1471 END (* GENJUMP *) ; 1472 1473 1474 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 53 1475 1476 (* ************************************ GENCOMPARE **************************** *) 1477 1478 PROCEDURE gencompare (VAR fattr : attr ; fcl : integer ; generic : ctp) ; 1479 1480 (* C . GATTR IS RIGHT OPERAND 1481* FATTR IS LEFT OPERAND 1482* . GENERIC TYPE 1483* . AT OUTPUT PRODUCES A GATTR LCOND 1484* WITH TRANSF FUNCTION OF INDICATORS SET 1485* C *) 1486 (* E ERROR DETECTED 1487* 434 TYPSEQ = 0 1488* E *) 1489 VAR 1490 tattr, cattr : attr ; 1491 lbase : preg ; 1492 ldisp, typseq : integer ; 1493 ltag : tag ; 1494 linst : istand ; 1495 BEGIN (* GENCOMPARE *) 1496 $OPTIONS compile = trace $ 1497 IF stattrace > none THEN 1498 BEGIN 1499 write (mpcogout, '@@@ DEBUT GENCOMPARE @@@') ; nextline ; 1500 END ; 1501 $OPTIONS compile = true $ 1502 IF generic = realptr THEN 1503 BEGIN linst := idfcmp ; 1504 IF gattr.typtr # realptr THEN 1505 convreal (gattr) ELSE 1506 IF fattr.typtr # realptr THEN 1507 convreal (fattr) ; 1508 END ELSE 1509 linst := icmpa ; 1510 IF gattr.kind = lcond THEN choicerarq ; 1511 IF fattr.kind = lval THEN 1512 lvalvarbl (fattr) ; 1513 typseq := 0 ; 1514 WITH gattr DO 1515 CASE fattr.kind OF 1516 varbl : CASE kind OF 1517 varbl : typseq := 2 ; 1518 lval : IF ldreg = rq THEN typseq := 10 ELSE typseq := 2 ; 1519 sval : IF generic = realptr THEN 1520 BEGIN IF rsval = 0 THEN typseq := 29 ELSE typseq := 2 ; 1521 END ELSE 1522 BEGIN 1523 IF val = 0 THEN typseq := 17 ELSE typseq := 2 ; 1524 END ; 1525 END (* CASE GATTR.KIND *) ; 1526 sval : IF generic = realptr THEN 1527 BEGIN 1528 IF fattr.rsval = 0 THEN typseq := 30 ELSE typseq := 2 ; 1529 END ELSE 1530 BEGIN 1531 IF fattr.val # 0 THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 54 1532 BEGIN typseq := 2 ; 1533 IF kind = lval THEN 1534 IF ldreg = rq THEN typseq := 10 ; 1535 END ELSE 1536 BEGIN typseq := 30 ; 1537 IF kind = varbl THEN 1538 BEGIN 1539 IF easyvar (gattr) THEN typseq := 18 ; 1540 END ELSE 1541 IF kind = lval THEN 1542 IF ldreg = rq THEN typseq := 34 ; 1543 END ; 1544 END (* NOT REAL *) ; 1545 lval : CASE fattr.ldreg OF 1546 ra : 1547 CASE kind OF 1548 varbl : IF easyvar (gattr) THEN typseq := 1 ELSE typseq := 2 ; 1549 sval : IF val = 0 THEN typseq := 29 ELSE typseq := 1 ; 1550 lval : typseq := 13 ; 1551 END (* CASE GATTR.KIND FOR RA *) ; 1552 rq : 1553 CASE kind OF 1554 varbl : IF easyvar (gattr) THEN typseq := 9 ELSE typseq := 10 ; 1555 sval : IF val = 0 THEN typseq := 33 ELSE typseq := 9 ; 1556 lval : typseq := 14 ; 1557 END ; (* CASE GATTR.KIND FOR RQ *) 1558 reaq : BEGIN typseq := 1 ; 1559 IF kind = sval THEN 1560 IF rsval = 0.0 THEN typseq := 29 ; 1561 END ; 1562 END (* CASE FATTR.LDREG *) ; 1563 END (* CASE FATTR.KIND, WITH GATTR *) ; 1564 IF odd (typseq) THEN 1565 BEGIN 1566 tattr := fattr ; cattr := gattr ; 1567 END ELSE 1568 BEGIN 1569 tattr := gattr ; cattr := fattr ; 1570 END ; 1571 CASE typseq OF 1572 0 : 1573 $OPTIONS compile = trace $ 1574 error (434) 1575 $OPTIONS compile = true $ 1576 ; 1577 1, 2 : BEGIN transfer (tattr, inacc) ; 1578 calcvarient (cattr, lbase, ldisp, ltag) ; 1579 WITH cattr DO 1580 IF kind = varbl THEN usednameaddr := nameaddr ; 1581 genstand (lbase, ldisp, linst, ltag) ; 1582 END (* 1,2 *) ; 1583 9, 10 : BEGIN transfer (tattr, inq) ; 1584 calcvarient (cattr, lbase, ldisp, ltag) ; 1585 WITH cattr DO 1586 IF kind = varbl THEN usednameaddr := nameaddr ; 1587 genstand (lbase, ldisp, icmpq, ltag) ; 1588 END (* 9,10 *) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 55 1589 13, 14 : BEGIN genstand (pr6, evareaw, istq, tn) ; freeattr (cattr) ; 1590 genstand (pr6, evareaw, icmpa, tn) ; 1591 END (* 13,14 *) ; 1592 17, 18 : BEGIN calcvarient (tattr, lbase, ldisp, ltag) ; 1593 WITH tattr DO 1594 IF kind = varbl THEN usednameaddr := nameaddr ; 1595 genstand (lbase, ldisp, iszn, ltag) ; 1596 END (* 17,18 *) ; 1597 29, 30 : transfer (tattr, inacc) ; 1598 33, 34 : transfer (tattr, inq) ; 1599 END (* CASE TYPSEQ *) ; 1600 freeattr (tattr) ; freeattr (cattr) ; 1601 WITH gattr DO 1602 BEGIN 1603 (* TYPTR OUTSIDE *) 1604 kind := lcond ; accbloc := NIL ; accbool := false ; 1605 IF odd (typseq) THEN 1606 transf := cltransf [fcl] ELSE 1607 transf := revcltransf [fcl] ; 1608 END (* WITH GATTR *) ; 1609 $OPTIONS compile = trace $ 1610 IF stattrace > low THEN 1611 BEGIN 1612 write (mpcogout, '@@@ FIN GENCOMPARE @@@ WITH TYPSEQ,TRANSF', typseq : 4, 1613 gattr.transf) ; 1614 nextline ; 1615 END ; 1616 $OPTIONS compile = true $ 1617 END (* GENCOMPARE *) ; 1618 1619 1620 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 56 1621 1622 (* **************************************************** GENOPPW ************** *) 1623 1624 PROCEDURE genoppw (VAR fattr : attr ; fno, fcl : integer) ; 1625 1626 (* C GENERATES CODE FOR SETS OPERATION 1627* .GATTR IS RIGHT OPERAND 1628* .FATTR IS LEFT OPERAND 1629* .FNO= 6 FCL= 1 SET INTERSECTION 1630* .FNO= 7 FCL= 1 SET UNION 1631* FCL= 2 SET DIFFERENCE (NOT COMMUTATIV) 1632* .FNO= 8 FCL= 2 ( <=) SET INCLUSION 1633* FCL= 3 ( >=) 1634* FCL= 5 ( # ) 1635* FCL= 6 ( = ) 1636* .RETURNS A GATTR 1637* .BEFORE CALL FATTR CAN BE .LVAL IN AQ *GATTR CAN BE .LVAL AQ 1638* .LVAL IN PSR * .LVAL PSR 1639* .SVAL 8 * .SVAL 8 1640* .VARBL EASY 8 * .SVAL MAX 1641* .VARBL EASY MAX * .VAR EASY 8 1642* .SVAL MAX * .VAR EASY MAX 1643* .VAR NOT EASY 1644* C *) 1645 (* E ERRORS DETECTED 1646* E *) 1647 VAR 1648 typseq : integer ; 1649 bolr, revbolr : integer ; 1650 linstaq : istand ; 1651 lbase : preg ; 1652 ldisp, fattsize, gattsize, tattsize, cattsize, ltransf : integer ; 1653 ltag : tag ; 1654 lretpt : lcstpt ; 1655 llretpt : llcstpt ; 1656 tattr, cattr : attr ; 1657 rshort, lshort, classe1 : boolean ; 1658 BEGIN (* GENOPPW *) 1659 $OPTIONS compile = trace $ 1660 IF stattrace > none THEN 1661 BEGIN 1662 write (mpcogout, '@@@ DEBUT GENOPPW @@@ WITH FNO,FCL:', fno : 4, fcl : 4) ; nextline ; 1663 END ; 1664 $OPTIONS compile = true $ 1665 typseq := 0 ; 1666 fattsize := fattr.typtr^.setlength ; 1667 gattsize := gattr.typtr^.setlength ; 1668 WITH fattr DO 1669 CASE kind OF 1670 varbl : ; 1671 sval : IF longv = bytesforset THEN fattsize := bitsforset ELSE fattsize := bitsindword ; 1672 lval : IF ldreg = psr THEN fattsize := bitsforset ELSE fattsize := bitsindword ; 1673 END (* CASE KIND,WITH FATTR *) ; 1674 WITH gattr DO 1675 CASE kind OF 1676 varbl : ; 1677 sval : IF longv = bytesforset THEN gattsize := bitsforset ELSE gattsize := bitsindword ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 57 1678 lval : IF ldreg = psr THEN gattsize := bitsforset ELSE gattsize := bitsindword ; 1679 END (* CASE KIND,WITH GATTR *) ; 1680 (* FNO+FCL GIVES EACH OPERATOR. *) 1681 CASE fno + fcl OF 1682 7 : (* 6+1 *) (* AND *) 1683 BEGIN bolr := 1 ; revbolr := 1 ; linstaq := ianaq ; 1684 END ; 1685 8 : (* 7+1 *) (* OR *) 1686 BEGIN bolr := 7 ; revbolr := 7 ; linstaq := ioraq ; 1687 END ; 1688 9 : (* 7+2 *) (* - *) 1689 BEGIN bolr := 4 ; revbolr := 2 ; linstaq := inop ; 1690 END ; 1691 10 : (* 8+2 *) (* <= *) 1692 BEGIN bolr := 2 ; (* A<=B <---> A * NOT(B) = [] *) 1693 revbolr := 2 ; linstaq := inop ; 1694 ltransf := 2 ; (* ZERO ON = TRUE *) 1695 END ; 1696 11 : (* 8+3 *) (* >= *) 1697 BEGIN bolr := 2 ; revbolr := 4 ; linstaq := inop ; ltransf := 2 ; 1698 END ; 1699 13 : (* 8+5 *) (* # *) 1700 BEGIN bolr := 6 ; (* 0110 = EXCLUSIVE OR *) revbolr := 6 ; linstaq := icmpaq ; 1701 ltransf := 6 ; (* ZERO OFF =TRUE *) 1702 END ; 1703 14 : (* 8+6 *) (* = *) 1704 BEGIN bolr := 6 ; revbolr := 6 ; linstaq := icmpaq ; 1705 ltransf := 2 ; (* ZERO ON =TRUE *) 1706 END ; 1707 END (* CASE FNO+FCL *) ; 1708 lshort := fattsize = bitsindword ; 1709 rshort := gattsize = bitsindword ; 1710 IF gattr.kind = varbl THEN 1711 IF (NOT varissimple (gattr)) OR (gattr.pckd) THEN 1712 rshort := false ; 1713 IF fattr.kind = lval THEN 1714 IF fattr.ldregbloc@.saveplace # 0 THEN 1715 lvalvarbl (fattr) ; 1716 classe1 := (fno + fcl) IN [9..11] ; (* - <= >= *) 1717 $OPTIONS compile = trace $ 1718 IF stattrace = high THEN 1719 BEGIN 1720 write (mpcogout, ' GENOPPW: FATTR and GATTR are:') ; nextline ; 1721 printattr (fattr) ; printattr (gattr) ; 1722 write (mpcogout, 'Fattsize, Gattsize, Lshort, Rshort are:', 1723 fattsize, gattsize, lshort : 7, rshort : 7) ; 1724 nextline ; 1725 END ; 1726 $OPTIONS compile = true $ 1727 IF classe1 THEN 1728 BEGIN 1729 typseq := 6 ; 1730 END (* CLASSE1 *) ELSE 1731 BEGIN 1732 WITH gattr DO 1733 CASE fattr.kind OF 1734 sval, varbl : IF lshort AND rshort THEN typseq := 2 ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 58 1735 typseq := 6 ; 1736 lval : IF lshort THEN 1737 BEGIN 1738 IF kind = lval THEN typseq := 8 ELSE 1739 IF rshort THEN typseq := 1 ELSE 1740 BEGIN 1741 typseq := 5 ; 1742 IF kind = varbl THEN 1743 IF NOT varissimple (gattr) THEN typseq := 8 ; 1744 END 1745 END ELSE 1746 BEGIN 1747 IF (kind = lval) AND rshort THEN typseq := 7 ELSE 1748 BEGIN 1749 typseq := 5 ; 1750 END ; 1751 END (* LVAL *) ; 1752 END (* CASE FATTR.KIND, WITH GATTR *) ; 1753 END (* NOT CLASSE1 *) ; 1754 IF odd (typseq) THEN 1755 BEGIN 1756 tattr := fattr ; cattr := gattr ; tattsize := fattsize ; cattsize := gattsize ; 1757 END (* ODD *) ELSE 1758 BEGIN 1759 tattr := gattr ; cattr := fattr ; tattsize := gattsize ; cattsize := fattsize ; 1760 bolr := revbolr ; 1761 END ; 1762 CASE typseq OF 1763 0 : ; 1764 1, 2 : BEGIN transfer (tattr, inaq) ; 1765 calcvarient (cattr, lbase, ldisp, ltag) ; 1766 IF cattr.kind = varbl THEN usednameaddr := cattr.nameaddr ; 1767 genstand (lbase, ldisp, linstaq, ltag) ; 1768 END ; 1769 5, 6 : BEGIN transfer (tattr, inpsr) ; psrsize := bytesforset ; 1770 IF cattr.kind = varbl THEN 1771 IF varissimple (cattr) THEN 1772 calcvarient (cattr, lbase, ldisp, ltag) ELSE 1773 BEGIN 1774 loadadr (cattr, pr3) ; lbase := pr3 ; ldisp := 0 ; 1775 END ELSE 1776 IF cattr.kind = sval THEN 1777 BEGIN 1778 IF cattr.longv = bytesindword THEN 1779 BEGIN enterlcst (cattr.valpw, lretpt) ; cattsize := bitsindword ; 1780 enterundlab (lretpt@.lplace) ; 1781 END ELSE 1782 BEGIN enterllcst (cattr.valpw, llretpt) ; 1783 enterundlab (llretpt@.llplace) ; 1784 END ; 1785 genstand (nreg, 0, iepp3, tic) ; lbase := pr3 ; ldisp := 0 ; 1786 END ELSE 1787 calcvarient (cattr, lbase, ldisp, ltag) ; 1788 mfari1 := a1r0i0 ; mfari2 := a1r0i0 ; 1789 geneism (icsl, bolr, p0t0r0 (* FILL 0 *)) ; 1790 IF cattr.kind = varbl THEN usednameaddr := cattr.nameaddr ; 1791 gendescb (lbase, ldisp, 0, 0, cattsize, tn) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 59 1792 gendescb (pr6, psrdepw, 0, 0, bitsforset, tn) ; 1793 END ; 1794 7, 8 : BEGIN transfer (tattr, inpsr) ; psrsize := bytesforset ; 1795 genstand (pr6, evareaw, istaq, tn) ; 1796 mfari1 := a1r0i0 ; mfari2 := a1r0i0 ; 1797 geneism (icsl, bolr, p0t0r0) ; 1798 gendescb (pr6, evareaw, 0, 0, cattsize, tn) ; 1799 gendescb (pr6, psrdepw, 0, 0, bitsforset, tn) ; 1800 END ; 1801 END (* CASE TYPSEQ *) ; 1802 IF fno <= 7 THEN 1803 BEGIN 1804 gattr := tattr ; freeattr (cattr) ; 1805 END ELSE 1806 BEGIN 1807 freeattr (tattr) ; freeattr (cattr) ; 1808 WITH gattr DO 1809 BEGIN 1810 (* TYPTR OUTSIDE *) 1811 kind := lcond ; accbool := false ; accbloc := NIL ; 1812 transf := ltransf ; 1813 END ; 1814 END (* FNO=8 RELATIONAL OPERATOR *) ; 1815 $OPTIONS compile = trace $ 1816 IF stattrace > low THEN 1817 BEGIN 1818 write (mpcogout, '@@@ FIN GENOPPW @@@ WITH TYPSEQ :', typseq : 4) ; nextline ; 1819 END ; 1820 $OPTIONS compile = true $ 1821 END (* GENOPPW *) ; 1822 1823 (* ******************************* CHECK_DYNAMIC_STRING_LENGTH *************************** *) 1824 1825 PROCEDURE check_dynamic_string_length (VAR fattr : attr) ; 1826 1827 VAR 1828 loaded_reg : register ; 1829 string_attr : attr ; string_base : preg ; string_disp, loc1, loc2 : integer ; 1830 string_bloc : regpt ; 1831 1832 1833 BEGIN 1834 string_bloc := NIL ; 1835 IF fattr.typtr <> NIL THEN 1836 IF fattr.typtr^.father_schema = string_ptr THEN 1837 IF fattr.typtr^.actual_parameter_list <> NIL THEN 1838 BEGIN 1839 IF varissimple (fattr) THEN 1840 BEGIN 1841 string_bloc := fattr.basebloc ; 1842 string_base := fattr.basereg ; string_disp := fattr.dplmt DIV bytesinword ; 1843 END ELSE BEGIN 1844 loadadr (fattr, nreg) ; 1845 string_base := currentpr ; string_disp := 0 ; 1846 WITH fattr DO 1847 BEGIN 1848 access := pointee ; basereg := currentpr ; basebloc := currentbloc ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 60 1849 dplmt := 0 ; 1850 END 1851 END ; 1852 WITH fattr.typtr^ DO 1853 BEGIN 1854 IF raisused THEN 1855 BEGIN 1856 loaded_reg := rq ; 1857 sauvereg (rq, false) ; 1858 END 1859 ELSE BEGIN 1860 loaded_reg := ra ; 1861 END ; 1862 IF actual_parameter_list^.klass <> konst THEN 1863 BEGIN 1864 addressvar (actual_parameter_list, string_attr, false) ; 1865 IF loaded_reg = rq THEN 1866 transfer (string_attr, inq) 1867 ELSE 1868 transfer (string_attr, inacc) ; 1869 freeattr (string_attr) ; 1870 END 1871 ELSE 1872 gencstecode (actual_parameter_list^.values, opaq [load, loaded_reg]) ; 1873 IF string_bloc <> NIL THEN regenere (string_bloc) ; 1874 genstand (string_base, string_disp, iszn, tn) ; 1875 loc1 := indfich ; genstand (nreg, 0, itmi, tic) ; 1876 genstand (string_base, string_disp, opaq [cmp, loaded_reg], tn) ; 1877 loc2 := indfich ; genstand (nreg, 0, itpl, tic) ; 1878 inser (cb, loc1) ; 1879 genexceptcode (stringlength_range_error, loaded_reg) ; 1880 inser (cb, loc2) ; 1881 END ; 1882 END 1883 END ; 1884 1885 1886 $OPTIONS page$ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 61 1887 1888 (* ************************************* PREPARE STRING *********************************** *) 1889 1890 1891 PROCEDURE prepare_string (VAR fattr : attr ; VAR info : string_item_info ; len_dest : destination) ; 1892 1893 VAR 1894 a_or_q : register ; 1895 locbox : wcstpt ; 1896 1897 PROCEDURE get_a_or_q ; 1898 BEGIN 1899 IF len_dest = out THEN 1900 IF raisused THEN 1901 BEGIN 1902 sauvereg (rq, false) ; 1903 a_or_q := rq ; 1904 END 1905 ELSE a_or_q := ra 1906 ELSE IF len_dest = inacc THEN a_or_q := ra 1907 ELSE a_or_q := rq ; 1908 END ; 1909 1910 PROCEDURE get_adr ; 1911 BEGIN 1912 WITH info, fattr DO 1913 IF varissimple (fattr) THEN 1914 BEGIN 1915 register := basereg ; bloc := basebloc ; 1916 wdisp := dplmt DIV bytesinword ; bdisp := dplmt MOD bytesinword ; 1917 END 1918 ELSE BEGIN 1919 loadadr (fattr, nreg) ; bloc_is_new := true ; 1920 register := currentpr ; bloc := currentbloc ; 1921 wdisp := 0 ; bdisp := 0 ; 1922 END ; 1923 END (* get_adr *) ; 1924 1925 BEGIN (* prepare string *) 1926 WITH info DO 1927 BEGIN 1928 bloc_is_new := false ; len_bloc := NIL ; 1929 l_tag := tn ; l_val := -1 ; mfari := a1r0i0 ; reg_bloc := NIL ; 1930 END ; 1931 WITH fattr, info DO 1932 IF typtr = charptr THEN 1933 BEGIN (* CHAR *) 1934 length := 1 ; l_val := 1 ; 1935 CASE kind OF 1936 varbl : BEGIN 1937 get_adr ; 1938 IF NOT pckd THEN bdisp := bdisp + 3 ; 1939 END ; 1940 lval : BEGIN 1941 wdisp := oldnewstor (bytesinword) DIV bytesinword ; bdisp := 3 ; 1942 register := pr6 ; bloc := NIL ; 1943 IF fattr.ldregbloc <> NIL THEN regenere (fattr.ldregbloc) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 62 1944 genstand (pr6, wdisp, opaq [stor, fattr.ldreg], tn) ; 1945 freeattr (fattr) ; 1946 END ; 1947 sval : BEGIN 1948 entercst (val, locbox) ; 1949 getpr ; register := currentpr ; bloc := currentbloc ; 1950 bloc_is_new := true ; 1951 enterundlab (locbox^.cstplace) ; 1952 genstand (nreg, 0, prinst [epp, register], tic) ; 1953 wdisp := 0 ; bdisp := 3 ; 1954 freeattr (fattr) ; 1955 END ; 1956 END ; 1957 END 1958 ELSE IF isstring (fattr) THEN 1959 IF conformantdim (typtr) THEN 1960 BEGIN 1961 get_a_or_q ; 1962 init_desc_address (fattr.nameaddr, fattr) ; 1963 register := basereg ; bloc := basebloc ; wdisp := 0 ; bdisp := 0 ; 1964 regenere (fattr.descbloc) ; 1965 IF len_dest <> out THEN 1966 BEGIN 1967 sauvereg (a_or_q, true) ; reg_bloc := currentbloc ; 1968 END ; 1969 genstand (fattr.descreg, 1, opaq [load, a_or_q], tn) ; 1970 genstand (fattr.descreg, 0, opaq [sub, a_or_q], tn) ; 1971 genstand (nreg, 1, opaq [add, a_or_q], tdl) ; (* reg contains actual length *) 1972 IF len_dest = out THEN 1973 BEGIN 1974 len_place := oldnewstor (bytesinword) DIV bytesinword ; 1975 genstand (pr6, len_place, opaq [stor, a_or_q], tn) ; 1976 len_reg := pr6 ; 1977 END ; 1978 freebloc (gattr.descbloc) ; 1979 mfari := a1r1i0 ; l_tag := modif [a_or_q] ; 1980 END 1981 ELSE 1982 BEGIN 1983 CASE kind OF 1984 chain : BEGIN 1985 loadadr (fattr, nreg) ; register := currentpr ; bloc := currentbloc ; 1986 wdisp := 0 ; bdisp := 0 ; length := alfactp^.alfalong ; 1987 bloc_is_new := true ; 1988 END ; 1989 varbl : BEGIN 1990 get_adr ; 1991 length := typtr^.hi - typtr^.lo + 1 ; 1992 END ; 1993 END ; 1994 IF length > twoto12 THEN 1995 BEGIN 1996 get_a_or_q ; 1997 IF len_dest <> out THEN 1998 BEGIN 1999 sauvereg (a_or_q, true) ; reg_bloc := currentbloc ; 2000 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 63 2001 gencstecode (length, opaq [load, a_or_q]) ; 2002 IF len_dest = out THEN 2003 BEGIN 2004 len_place := oldnewstor (bytesinword) DIV bytesinword ; 2005 len_reg := pr6 ; 2006 genstand (pr6, len_place, opaq [stor, a_or_q], tn) 2007 END ; 2008 mfari := a1r1i0 ; l_tag := modif [a_or_q] ; 2009 END 2010 ELSE l_val := length ; 2011 END 2012 ELSE IF typtr^.father_schema = string_ptr THEN 2013 BEGIN 2014 get_adr ; 2015 IF len_dest <> out THEN 2016 BEGIN 2017 get_a_or_q ; 2018 sauvereg (a_or_q, true) ; reg_bloc := currentbloc ; 2019 IF bloc <> NIL THEN regenere (bloc) ; 2020 genstand (register, wdisp, opaq [load, a_or_q], tn) ; 2021 mfari := a1r1i0 ; l_tag := modif [a_or_q] ; 2022 END 2023 ELSE BEGIN 2024 len_place := wdisp ; len_reg := register ; len_bloc := bloc ; 2025 END ; 2026 wdisp := wdisp + 1 ; bdisp := 0 ; 2027 END ; 2028 WITH info DO 2029 IF l_val = -1 THEN 2030 BEGIN 2031 l_val := 0 ; length_is_known := false 2032 END 2033 ELSE length_is_known := true ; 2034 END (* prepare_string *) ; 2035 2036 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 64 2037 2038 (* ************************************ GENCONCAT **************************** *) 2039 2040 PROCEDURE genconcat (VAR fattr : attr) ; 2041 2042 TYPE 2043 item_info = RECORD 2044 register : preg ; 2045 bloc : regpt ; bloc_is_new : boolean ; 2046 length, length_place : integer ; 2047 wdisp, bdisp : integer ; 2048 END ; 2049 VAR 2050 first_alfa, current_alfa : alfapt ; 2051 result_place : integer ; 2052 fattr_info, gattr_info : item_info ; 2053 target_pointer : preg ; target_bloc : regpt ; 2054 total_length, total_place : integer ; 2055 2056 PROCEDURE prepare (VAR fattr : attr ; VAR info : item_info) ; 2057 2058 PROCEDURE add_length ; 2059 BEGIN 2060 WITH info DO 2061 IF total_place = 0 THEN 2062 total_length := total_length + length 2063 ELSE 2064 BEGIN 2065 gencstecode (length, ildq) ; 2066 genstand (pr6, total_place, iasq, tn) 2067 END ; 2068 END ; 2069 PROCEDURE add_variable_length ; 2070 BEGIN 2071 WITH info DO 2072 BEGIN 2073 IF total_place = 0 THEN 2074 BEGIN 2075 total_place := oldnewstor (bytesinword) DIV bytesinword ; 2076 IF total_length <> 0 THEN 2077 gencstecode (total_length, iadq) ; 2078 genstand (pr6, total_place, istq, tn) ; 2079 END 2080 ELSE 2081 genstand (pr6, total_place, iasq, tn) ; 2082 END ; 2083 END ; 2084 2085 PROCEDURE get_adr ; 2086 BEGIN 2087 WITH info, fattr DO 2088 IF varissimple (fattr) THEN 2089 BEGIN 2090 register := basereg ; bloc := basebloc ; 2091 wdisp := dplmt DIV bytesinword ; bdisp := dplmt MOD bytesinword ; 2092 END 2093 ELSE BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 65 2094 loadadr (fattr, nreg) ; bloc_is_new := true ; 2095 register := currentpr ; bloc := currentbloc ; 2096 wdisp := 0 ; bdisp := 0 ; 2097 END ; 2098 END (* get_adr *) ; 2099 2100 BEGIN (* prepare *) 2101 info.length_place := 0 ; info.bloc_is_new := false ; 2102 WITH fattr, info DO 2103 IF typtr = charptr THEN 2104 BEGIN (* CHAR *) 2105 length := 1 ; length_place := 0 ; 2106 CASE kind OF 2107 varbl : BEGIN 2108 get_adr ; 2109 IF NOT pckd THEN bdisp := bdisp + 3 ; 2110 END ; 2111 lval, sval : BEGIN 2112 wdisp := oldnewstor (bytesinword) DIV bytesinword ; bdisp := 3 ; 2113 register := pr6 ; bloc := NIL ; 2114 IF kind = lval THEN 2115 BEGIN 2116 IF fattr.ldregbloc <> NIL THEN regenere (fattr.ldregbloc) ; 2117 genstand (pr6, wdisp, opaq [stor, fattr.ldreg], tn) 2118 END 2119 ELSE BEGIN 2120 sauvereg (ra, false) ; 2121 genstand (nreg, fattr.val, ilda, tdl) ; 2122 genstand (pr6, wdisp, ista, tn) 2123 END ; 2124 freeattr (fattr) ; 2125 END ; 2126 END ; 2127 add_length ; 2128 END 2129 ELSE IF isstring (fattr) THEN 2130 IF conformantdim (typtr) THEN 2131 BEGIN 2132 init_desc_address (fattr.nameaddr, fattr) ; 2133 register := basereg ; bloc := basebloc ; wdisp := 0 ; bdisp := 0 ; 2134 regenere (fattr.descbloc) ; 2135 sauvereg (rq, false) ; 2136 genstand (fattr.descreg, 1, ildq, tn) ; 2137 genstand (fattr.descreg, 0, isbq, tn) ; 2138 genstand (nreg, 1, iadq, tdl) ; (* Q contains actual length *) 2139 length_place := oldnewstor (bytesinword) DIV bytesinword ; 2140 genstand (pr6, length_place, istq, tn) ; 2141 add_variable_length ; 2142 freebloc (fattr.descbloc) ; 2143 END 2144 ELSE 2145 BEGIN 2146 CASE kind OF 2147 chain : BEGIN 2148 loadadr (fattr, nreg) ; register := currentpr ; bloc := currentbloc ; 2149 wdisp := 0 ; bdisp := 0 ; length := alfactp^.alfalong ; length_place := 0 ; 2150 bloc_is_new := true ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 66 2151 END ; 2152 varbl : BEGIN 2153 get_adr ; 2154 length := typtr^.hi - typtr^.lo + 1 ; length_place := 0 ; 2155 END ; 2156 END ; 2157 add_length ; 2158 END 2159 ELSE IF typtr^.father_schema = string_ptr THEN 2160 BEGIN 2161 get_adr ; 2162 IF bloc <> NIL THEN regenere (bloc) ; 2163 sauvereg (rq, false) ; 2164 genstand (register, wdisp, ildq, tn) ; 2165 wdisp := wdisp + 1 ; bdisp := 0 ; 2166 add_variable_length ; 2167 END ; 2168 END (* prepare *) ; 2169 2170 PROCEDURE concat_item (VAR fattr : attr) ; (* ADD CONSTANT CHAIN *) 2171 2172 VAR 2173 it : integer ; 2174 current_box : alfapt ; 2175 PROCEDURE add_char (ch : char) ; 2176 2177 BEGIN 2178 total_length := total_length + 1 ; 2179 IF current_alfa^.longfill = longalfbox THEN 2180 BEGIN 2181 new (current_alfa^.nextval) ; IF current_alfa^.nextval = NIL THEN heaperror ; 2182 current_alfa := current_alfa^.nextval ; 2183 WITH current_alfa^ DO 2184 BEGIN 2185 longfill := 0 ; 2186 nextval := NIL ; 2187 alfaval := ' ' ; 2188 END ; 2189 END ; 2190 WITH current_alfa^ DO 2191 BEGIN 2192 longfill := longfill + 1 ; 2193 alfaval [longfill] := ch ; 2194 END ; 2195 END ; 2196 2197 BEGIN 2198 WITH fattr DO 2199 IF kind = sval THEN add_char (chr (val)) 2200 ELSE BEGIN 2201 current_box := alfactp^.alfadeb ; 2202 WHILE current_box <> NIL DO 2203 BEGIN 2204 WITH current_box^ DO 2205 FOR it := 1 TO longfill DO add_char (alfaval [it]) ; 2206 current_box := current_box^.nextval ; 2207 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 67 2208 END ; 2209 freeattr (fattr) ; 2210 END ; 2211 2212 BEGIN (* genconcat *) 2213 IF ((fattr.kind = chain) OR (fattr.kind = sval)) 2214 AND ((gattr.kind = chain) OR (gattr.kind = sval)) THEN 2215 BEGIN (* BOTH ARE KNOWN CONSTANTS *) 2216 new (first_alfa) ; IF first_alfa = NIL THEN heaperror ; 2217 current_alfa := first_alfa ; WITH current_alfa^ DO 2218 BEGIN 2219 nextval := NIL ; 2220 longfill := 0 ; 2221 alfaval := ' ' ; 2222 END ; 2223 total_length := 0 ; 2224 concat_item (fattr) ; concat_item (gattr) ; 2225 WITH gattr DO 2226 BEGIN 2227 kind := chain ; typtr := alfaptr ; 2228 create_konst_box (alfactp, ' ', alfaconst) ; 2229 WITH alfactp^ DO 2230 BEGIN 2231 contype := alfaptr ; succ := nextalf ; 2232 alfadeb := first_alfa ; 2233 alfalong := total_length ; 2234 END ; 2235 nextalf := alfactp ; 2236 END 2237 END 2238 ELSE 2239 BEGIN (* DYNAMIC EVALUATION *) 2240 total_place := 0 ; total_length := 0 ; 2241 prepare (fattr, fattr_info) ; 2242 prepare (gattr, gattr_info) ; 2243 sauvereg (ra, false) ; sauvereg (rq, false) ; 2244 IF total_place = 0 THEN (* total is known *) 2245 BEGIN 2246 gencstecode (total_length, ildq) ; 2247 result_place := oldnewstor (total_length + 4) DIV bytesinword ; 2248 genstand (pr6, result_place, iepp3, tn) ; 2249 END 2250 ELSE 2251 BEGIN 2252 genstand (pr6, total_place, ildq, tn) ; 2253 stack_extension ; 2254 genstand (pr6, evareaw, iepp3, tny) ; 2255 END ; 2256 genstand (pr3, 0, istq, tn) ; 2257 genstand (pr3, 1, prinst [epp, pr3], tn) ; 2258 WITH fattr_info, fattr DO 2259 BEGIN 2260 IF bloc <> NIL THEN regenere (bloc) ; 2261 IF length_place = 0 THEN 2262 IF typtr^.father_schema = string_ptr THEN 2263 genstand (register, wdisp - 1, ildq, tn) 2264 ELSE gencstecode (length, ildq) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 68 2265 ELSE genstand (pr6, length_place, ildq, tn) ; 2266 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; 2267 IF bloc <> NIL THEN regenere (bloc) ; 2268 geneism (imlr, ord (' '), p0t0r0) ; 2269 IF kind = varbl THEN usednameaddr := nameaddr 2270 ELSE IF kind = chain THEN usednameaddr := alfactp ; 2271 gendesca (register, wdisp, bdisp, l9, 0, tql) ; 2272 gendesca (pr3, 0, 0, l9, 0, tql) ; 2273 IF bloc_is_new THEN freebloc (bloc) ; 2274 END ; 2275 freeattr (fattr) ; 2276 genstand (pr3, 0, ia9bd, tql) ; 2277 WITH gattr_info, gattr DO 2278 BEGIN 2279 IF bloc <> NIL THEN regenere (bloc) ; 2280 IF length_place = 0 THEN 2281 IF typtr^.father_schema = string_ptr THEN 2282 genstand (register, wdisp - 1, ildq, tn) 2283 ELSE gencstecode (length, ildq) 2284 ELSE genstand (pr6, length_place, ildq, tn) ; 2285 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; 2286 geneism (imlr, ord (' '), p0t0r0) ; 2287 IF kind = varbl THEN usednameaddr := nameaddr 2288 ELSE IF kind = chain THEN usednameaddr := alfactp ; 2289 gendesca (register, wdisp, bdisp, l9, 0, tql) ; 2290 gendesca (pr3, 0, 0, l9, 0, tql) ; 2291 IF bloc_is_new THEN freebloc (bloc) ; 2292 END ; 2293 freeattr (gattr) ; 2294 initattrvarbl (gattr) ; 2295 getpr ; target_pointer := currentpr ; target_bloc := currentbloc ; 2296 genstand (pr3, 0, prinst [epp, target_pointer], tn) ; 2297 WITH gattr DO 2298 BEGIN 2299 IF total_place = 0 THEN 2300 genstand (pr6, result_place, prinst [epp, target_pointer], tn) 2301 ELSE 2302 genstand (pr6, evareaw, prinst [epp, target_pointer], tny) ; 2303 temporary := true ; 2304 basereg := target_pointer ; basebloc := target_bloc ; dplmt := 0 ; 2305 create_types_box (typtr, blank, records, false) ; 2306 WITH typtr^ DO 2307 BEGIN 2308 father_schema := string_ptr ; 2309 IF total_place = 0 THEN 2310 BEGIN 2311 create_konst_box (actual_parameter_list, 'maxlength', wordconst) ; 2312 WITH actual_parameter_list^ DO 2313 BEGIN 2314 values := total_length ; contype := intptr ; 2315 nxtel := NIL ; 2316 END 2317 END 2318 ELSE BEGIN 2319 create_vars_box (actual_parameter_list, 'maxlength') ; 2320 WITH actual_parameter_list^ DO 2321 BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 69 2322 vtype := intptr ; 2323 vaddr := total_place ; 2324 nxtel := NIL ; 2325 END ; 2326 END ; 2327 END ; 2328 END ; 2329 END 2330 END (* genconcat *) ; 2331 2332 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 70 2333 2334 (* ************************** GEN_STRING_COMP ******************************** *) 2335 2336 PROCEDURE gen_string_comp (VAR fattr : attr ; fcl : integer) ; 2337 2338 (* THIS PROCEDURE IS SIMILAR TO genstcomp, BUT IS MORE GENERAL BECAUSE 2339* IT COMPARES ANY STRING EXPRESSION TO ANY OTHER STRING EXPRESSION. 2340* 2341* (STRING EXPRESSION MAY BE CHAR, PACKED ARRAY OF CHAR (CONFORMANT OR NOT), OR STRING ) 2342* 2343**) 2344 2345 VAR 2346 result_place, ltransf : integer ; 2347 fattr_info, gattr_info : string_item_info ; 2348 2349 BEGIN 2350 IF fcl IN [2, 4] THEN 2351 BEGIN 2352 IF fcl = 2 THEN fcl := 3 ELSE fcl := 1 ; 2353 prepare_string (fattr, gattr_info, inacc) ; 2354 prepare_string (gattr, fattr_info, inq) ; 2355 END 2356 ELSE BEGIN 2357 prepare_string (fattr, fattr_info, inacc) ; 2358 prepare_string (gattr, gattr_info, inq) ; 2359 END ; 2360 WITH fattr_info DO 2361 BEGIN 2362 IF reg_bloc <> NIL THEN regenere (reg_bloc) ; 2363 IF bloc <> NIL THEN regenere (bloc) ; 2364 END ; 2365 WITH gattr_info DO 2366 BEGIN 2367 IF reg_bloc <> NIL THEN regenere (reg_bloc) ; 2368 IF bloc <> NIL THEN regenere (bloc) ; 2369 END ; 2370 mfari1 := fattr_info.mfari ; mfari2 := gattr_info.mfari ; 2371 geneism (icmpc, 0, p0t0r0) ; 2372 WITH fattr_info DO 2373 gendesca (register, wdisp, bdisp, l9, l_val, l_tag) ; 2374 WITH gattr_info DO 2375 gendesca (register, wdisp, bdisp, l9, l_val, l_tag) ; 2376 CASE fcl OF 2377 1 : ltransf := 11 ; (* CARRY OFF TRUE *) 2378 3 : ltransf := 12 ; (* CARRY ON TRUE *) 2379 5 : ltransf := 6 ; (* ZERO OFF TRUE *) 2380 6 : ltransf := 2 ; (* ZERO ON TRUE *) 2381 END (* CASE FCL *) ; 2382 WITH fattr_info DO 2383 BEGIN 2384 IF bloc_is_new THEN freebloc (bloc) ; 2385 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2386 END ; 2387 WITH gattr_info DO 2388 BEGIN 2389 IF bloc_is_new THEN freebloc (bloc) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 71 2390 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2391 END ; 2392 freeattr (fattr) ; 2393 freeattr (gattr) ; 2394 WITH gattr DO (* TYPTR OUTSIDE *) 2395 BEGIN 2396 kind := lcond ; accbool := false ; accbloc := NIL ; 2397 transf := ltransf ; 2398 END ; 2399 END (* GEN STRING COMP *) ; 2400 2401 $OPTIONS page$ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 72 2402 2403 (* **************************** GEN_STRING_POSITION ************************************* *) 2404 2405 PROCEDURE gen_string_position (VAR fattr : attr) ; 2406 2407 (* GENERATES CODE TO FIND POSITION OF STRING DESCRIBED BY FATTR 2408* IN STRING DESCRIBED BY GATTR *) 2409 2410 VAR 2411 to_find_info, to_scan_info : string_item_info ; 2412 fattr_info, gattr_info : string_item_info ; 2413 loc1, loc2, temp_place, retplace : integer ; 2414 2415 BEGIN 2416 temp_place := oldnewstor (bytesinword) DIV bytesinword ; 2417 prepare_string (fattr, to_find_info, inacc) ; (* STRING TO FIND *) 2418 IF to_find_info.l_tag = tal THEN (* LENGTH IS IN A *) 2419 genstand (pr6, temp_place, ista, tn) ; 2420 prepare_string (gattr, to_scan_info, inq) ; (* STRING TO SCAN *) 2421 WITH to_scan_info DO 2422 IF length_is_known THEN 2423 BEGIN 2424 sauvereg (rq, false) ; 2425 gencstecode (l_val, ildq) ; 2426 END ; 2427 IF to_find_info.l_tag = tal THEN (* LENGTH IS IN A *) 2428 genstand (pr6, temp_place, isbq, tn) 2429 ELSE 2430 genstand (nreg, to_find_info.l_val, isbq, tdl) ; 2431 loc1 := indfich ; genstand (nreg, 0, itmi, tic) ; 2432 genstand (pr6, temp_place, istq, tn) ; 2433 genstand (nreg, 0, ildq, tdl) ; 2434 WITH to_scan_info DO 2435 BEGIN 2436 IF register IN [prstatic, prlink, pr6] THEN 2437 BEGIN 2438 getpr ; 2439 IF bloc <> NIL THEN regenere (bloc) ; 2440 genstand (register, wdisp, prinst [epp, currentpr], tn) ; 2441 register := currentpr ; bloc := currentbloc ; bloc_is_new := true ; 2442 wdisp := 0 ; 2443 END ; 2444 END ; 2445 WITH to_find_info DO 2446 BEGIN 2447 IF reg_bloc <> NIL THEN regenere (reg_bloc) ; 2448 IF bloc <> NIL THEN regenere (bloc) ; 2449 END ; 2450 sauvereg (x7, false) ; 2451 genstand (nreg, 1, ildx7, tdu) ; 2452 retplace := cb ; (* LOOP BEGINNING *) 2453 genstand (nreg, 1, iadq, tdl) ; 2454 mfari1 := to_find_info.mfari ; mfari2 := to_find_info.mfari ; 2455 geneism (icmpc, 0, p0t0r0) ; 2456 WITH to_scan_info DO 2457 gendesca (register, wdisp, bdisp, l9, to_find_info.l_val, to_find_info.l_tag) ; 2458 WITH to_find_info DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 73 2459 gendesca (register, wdisp, bdisp, l9, l_val, l_tag) ; 2460 loc2 := indfich ; genstand (nreg, 0, itze, tic) ; (* TRANSFER IF FOUND *) 2461 genstand (to_scan_info.register, 0, ia9bd, tx7) ; 2462 genstand (pr6, temp_place, icmpq, tn) ; 2463 genstand (nreg, (retplace - cb) DIV bytesinword, itmoz, tic) ; 2464 inser (cb, loc1) ; 2465 genstand (nreg, 0, ildq, tdl) ; 2466 inser (cb, loc2) ; 2467 WITH to_scan_info DO 2468 BEGIN 2469 IF bloc_is_new THEN freebloc (bloc) ; 2470 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2471 END ; 2472 WITH to_find_info DO 2473 BEGIN 2474 IF bloc_is_new THEN freebloc (bloc) ; 2475 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2476 END ; 2477 freeattr (fattr) ; 2478 freeattr (gattr) ; 2479 initattrvarbl (gattr) ; 2480 WITH gattr DO 2481 BEGIN 2482 kind := lval ; typtr := intptr ; ldreg := rq ; 2483 newbloc (rq) ; ldregbloc := currentbloc ; 2484 END ; 2485 genstand (nreg, 0, iorq, tdl) ; (* TO SET INDICATORS : STANDARD FUNCTION RETURN OR PASCAL *) 2486 END ; 2487 2488 $OPTIONS page$ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 74 2489 2490 (* ********************************* GEN_SUBSTRING ****************************** *) 2491 2492 2493 PROCEDURE gen_substring (VAR string_attr, disp_attr, len_attr : attr) ; 2494 2495 VAR 2496 loc1, temp_place : integer ; 2497 check_done : boolean ; 2498 string_info : string_item_info ; 2499 total_length, total_place : integer ; 2500 result_pointer : preg ; result_bloc : regpt ; result_place : integer ; 2501 loaded_reg : register ; 2502 dm1_place, from_wdisp, from_bdisp, dm1_value : integer ; 2503 disp_in_desc : boolean ; i : integer ; 2504 from_bloc : regpt ; from_reg : preg ; from_bloc_is_new : boolean ; 2505 2506 BEGIN 2507 total_length := -1 ; result_place := 0 ; (* NOT KNOWN *) 2508 (* COMPUTE "DISP - 1" - ERROR IF NEGATIVE - 2509* STORE IT AT "DM1_PLACE" IN STACK IF NOT KNOWN *) 2510 dm1_place := 0 ; 2511 WITH disp_attr DO 2512 BEGIN 2513 CASE kind OF 2514 varbl : IF raisused THEN 2515 BEGIN loaded_reg := rq ; sauvereg (rq, false) ; transfer (disp_attr, inq) END 2516 ELSE BEGIN loaded_reg := ra ; transfer (disp_attr, inacc) END ; 2517 lval : BEGIN 2518 loaded_reg := ldreg ; IF ldregbloc <> NIL THEN regenere (ldregbloc) 2519 END ; 2520 sval : IF val - 1 < 0 THEN 2521 BEGIN error (278) ; dm1_value := 0 END 2522 ELSE dm1_value := val - 1 ; 2523 END ; 2524 IF kind IN [varbl, lval] THEN 2525 BEGIN 2526 dm1_place := oldnewstor (bytesinword) DIV bytesinword ; 2527 genstand (nreg, 1, opaq [sub, loaded_reg], tdl) ; 2528 IF asscheck THEN 2529 BEGIN 2530 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2531 genexceptcode (substring_offset_error, loaded_reg) ; 2532 inser (cb, loc1) ; 2533 END ; 2534 genstand (pr6, dm1_place, opaq [stor, loaded_reg], tn) ; 2535 END ; 2536 END ; 2537 freeattr (disp_attr) ; 2538 WITH len_attr DO (* GET LENGTH IN Q *) 2539 BEGIN 2540 CASE kind OF 2541 varbl : BEGIN 2542 sauvereg (rq, false) ; 2543 transfer (len_attr, inq) ; 2544 END ; 2545 sval : BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 75 2546 IF raisused THEN 2547 BEGIN sauvereg (rq, false) ; loaded_reg := rq ; END 2548 ELSE loaded_reg := rq ; 2549 IF val < 0 THEN 2550 BEGIN error (279) ; total_length := 0 END 2551 ELSE total_length := val ; 2552 result_place := oldnewstor (4 + total_length + 3) DIV bytesinword ; 2553 gencstecode (total_length, opaq [load, loaded_reg]) ; 2554 genstand (pr6, result_place, opaq [stor, loaded_reg], tn) ; 2555 END ; 2556 lval : BEGIN 2557 IF ldregbloc <> NIL THEN regenere (ldregbloc) ; 2558 IF ldreg = ra THEN 2559 BEGIN 2560 sauvereg (rq, false) ; 2561 genstand (nreg, 36, ilrs, tn) ; 2562 IF asscheck THEN genstand (nreg, 0, iorq, tdl) ; (* TO SET INDICATORS *) 2563 END ; 2564 END ; 2565 END ; 2566 freeattr (len_attr) ; 2567 END ; 2568 IF result_place = 0 THEN (* DYNAMIC ALLOCATION *) 2569 BEGIN 2570 IF asscheck THEN 2571 BEGIN 2572 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2573 genexceptcode (substring_negative_length_error, rq) ; 2574 inser (cb, loc1) ; 2575 END ; 2576 stack_extension ; (* GET SPACE FOR RESULT *) 2577 genstand (pr6, evareaw, istq, tny) ; (* STORE LENGTH IN RESULT STRING *) 2578 total_place := oldnewstor (bytesinword) DIV bytesinword ; 2579 genstand (pr6, total_place, istq, tn) ; (* FOR MAXLENGTH VARIABLE OF RESULT TYPE *) 2580 loaded_reg := rq ; 2581 END ; 2582 prepare_string (string_attr, string_info, inacc) ; 2583 WITH string_info DO 2584 BEGIN 2585 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2586 IF asscheck THEN 2587 BEGIN (* CHECK THAT ACTUAL_LENGTH - (DISP-1) >= LEN *) 2588 check_done := false ; 2589 IF length_is_known THEN 2590 IF dm1_place = 0 THEN 2591 IF total_length <> -1 THEN 2592 BEGIN 2593 IF (l_val - dm1_value < total_length) THEN 2594 error (280) ; 2595 check_done := true ; 2596 END 2597 ELSE 2598 BEGIN 2599 sauvereg (ra, false) ; 2600 gencstecode (l_val - dm1_value, ilda) ; 2601 END 2602 ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 76 2603 BEGIN 2604 sauvereg (ra, false) ; 2605 gencstecode (l_val, ilda) ; 2606 genstand (pr6, dm1_place, isba, tn) ; 2607 END 2608 ELSE 2609 IF dm1_place = 0 THEN 2610 gencstecode (dm1_value, isba) 2611 ELSE 2612 genstand (pr6, dm1_place, isba, tn) ; 2613 IF NOT check_done THEN 2614 BEGIN 2615 IF total_length <> -1 THEN 2616 gencstecode (total_length, icmpa) 2617 ELSE 2618 genstand (pr6, total_place, icmpa, tn) ; 2619 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2620 genexceptcode (substring_too_long_error, ra) ; 2621 inser (cb, loc1) ; 2622 END ; 2623 END (* ASSCHECK *) ; 2624 (* NOW COMPUTE ADRESSES AND LENGTH FOR STRING TO MOVE *) 2625 disp_in_desc := false ; from_bloc_is_new := false ; 2626 IF dm1_place = 0 THEN 2627 BEGIN 2628 i := (wdisp * bytesinword) + bdisp + dm1_value ; 2629 from_wdisp := i DIV bytesinword ; 2630 from_bdisp := i MOD bytesinword ; 2631 IF from_wdisp < twoto17 THEN 2632 BEGIN 2633 from_reg := register ; from_bloc := bloc ; 2634 disp_in_desc := true ; 2635 END ; 2636 END ; 2637 IF NOT disp_in_desc THEN 2638 BEGIN 2639 IF register IN [prstatic, prlink, pr6] THEN 2640 BEGIN 2641 getpr ; 2642 IF bloc <> NIL THEN regenere (bloc) ; 2643 genstand (register, 0, prinst [epp, currentpr], tn) ; 2644 from_reg := currentpr ; from_bloc := currentbloc ; from_bloc_is_new := true ; 2645 END 2646 ELSE BEGIN 2647 from_bloc := bloc ; from_bloc_is_new := false ; from_reg := register ; 2648 END ; 2649 IF dm1_place <> 0 THEN 2650 genstand (pr6, dm1_place, ildq, tn) 2651 ELSE gencstecode (dm1_value, ildq) ; 2652 IF from_bloc <> NIL THEN regenere (from_bloc) ; 2653 genstand (from_reg, 0, ia9bd, tql) ; 2654 from_wdisp := wdisp ; from_bdisp := bdisp ; 2655 END ; 2656 l_val := 0 ; l_tag := tal ; 2657 IF total_length <> -1 THEN 2658 BEGIN 2659 result_pointer := pr6 ; result_bloc := NIL ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 77 2660 IF total_length < twoto12 THEN 2661 BEGIN 2662 l_val := total_length ; l_tag := tn 2663 END 2664 ELSE 2665 gencstecode (total_length, ilda) 2666 END 2667 ELSE 2668 BEGIN 2669 getpr ; result_place := 0 ; result_pointer := currentpr ; result_bloc := currentbloc ; 2670 genstand (pr6, evareaw, prinst [epp, result_pointer], tny) ; 2671 genstand (pr6, total_place, ilda, tn) ; 2672 END ; 2673 IF l_tag = tn THEN 2674 BEGIN 2675 mfari1 := a1r0i0 ; mfari2 := a1r0i0 ; 2676 END 2677 ELSE BEGIN 2678 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; 2679 END ; 2680 IF from_bloc <> NIL THEN regenere (from_bloc) ; 2681 IF result_bloc <> NIL THEN regenere (result_bloc) ; 2682 geneism (imlr, 0, p0t0r0) ; 2683 gendesca (from_reg, from_wdisp, from_bdisp, l9, l_val, l_tag) ; 2684 gendesca (result_pointer, result_place + 1, 0, l9, l_val, l_tag) ; 2685 IF bloc_is_new THEN freebloc (bloc) ; 2686 freeattr (string_attr) ; 2687 IF from_bloc_is_new THEN freebloc (from_bloc) ; 2688 END ; 2689 initattrvarbl (gattr) ; 2690 WITH gattr DO 2691 BEGIN 2692 temporary := true ; 2693 basereg := result_pointer ; basebloc := result_bloc ; dplmt := result_place * bytesinword ; 2694 create_types_box (typtr, blank, records, false) ; 2695 WITH typtr^ DO 2696 BEGIN 2697 father_schema := string_ptr ; 2698 IF total_length <> -1 THEN 2699 BEGIN 2700 create_konst_box (actual_parameter_list, 'maxlength', wordconst) ; 2701 WITH actual_parameter_list^ DO 2702 BEGIN 2703 values := total_length ; contype := intptr ; 2704 nxtel := NIL ; 2705 END 2706 END 2707 ELSE BEGIN 2708 create_vars_box (actual_parameter_list, 'maxlength') ; 2709 WITH actual_parameter_list^ DO 2710 BEGIN 2711 vtype := intptr ; 2712 vaddr := total_place ; 2713 nxtel := NIL ; 2714 END ; 2715 END ; 2716 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 78 2717 END ; 2718 END ; 2719 2720 $OPTIONS page$ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 79 2721 2722 (* ************************************* GEN_DELETE ****************************************** *) 2723 2724 PROCEDURE gen_delete (VAR string_attr, disp_attr, del_len_attr : attr) ; 2725 2726 (* GENERATES CODE FOR 2727* 2728* DELETE (, DISP, LEN) ; 2729* 2730* *) 2731 VAR 2732 string_info : string_item_info ; 2733 dm1_place, dm1_value : integer ; 2734 loaded_reg : register ; loc1 : integer ; 2735 del_len_place, del_len_value : integer ; del_len_bloc : regpt ; 2736 del_len_reg : preg ; 2737 remaining_length : integer ; check_done : boolean ; 2738 from_reg, to_reg : preg ; from_bloc, to_bloc : regpt ; 2739 from_offset_in_desc, to_offset_in_desc : boolean ; 2740 from_bloc_is_new, to_bloc_is_new : boolean ; 2741 i : integer ; l_len : integer ; l_tag : tag ; 2742 to_wdisp, to_bdisp, from_wdisp, from_bdisp : integer ; 2743 del_len_bloc_is_new : boolean ; 2744 2745 BEGIN 2746 (* COMPUTE "DISP - 1" - ERROR IF NEGATIVE - 2747* STORE IT AT "DM1_PLACE" IN STACK IF NOT KNOWN *) 2748 dm1_place := 0 ; 2749 WITH disp_attr DO 2750 BEGIN 2751 CASE kind OF 2752 varbl : IF raisused THEN 2753 BEGIN loaded_reg := rq ; sauvereg (rq, false) ; transfer (disp_attr, inq) END 2754 ELSE BEGIN loaded_reg := ra ; transfer (disp_attr, inacc) END ; 2755 lval : BEGIN 2756 loaded_reg := ldreg ; IF ldregbloc <> NIL THEN regenere (ldregbloc) 2757 END ; 2758 sval : IF val - 1 < 0 THEN 2759 BEGIN error (276) ; dm1_value := 0 END 2760 ELSE dm1_value := val - 1 ; 2761 END ; 2762 IF kind IN [varbl, lval] THEN 2763 BEGIN 2764 dm1_place := oldnewstor (bytesinword) DIV bytesinword ; 2765 genstand (nreg, 1, opaq [sub, loaded_reg], tdl) ; 2766 IF asscheck THEN 2767 BEGIN 2768 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2769 genexceptcode (delete_offset_error, loaded_reg) ; 2770 inser (cb, loc1) ; 2771 END ; 2772 genstand (pr6, dm1_place, opaq [stor, loaded_reg], tn) ; 2773 END ; 2774 END ; 2775 freeattr (disp_attr) ; 2776 (* GET INFO ABOUT LEN. IF KNOWN, LEN_VALUE IS <> -1 *) 2777 del_len_reg := nreg ; del_len_bloc := NIL ; del_len_bloc_is_new := false ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 80 2778 del_len_value := -1 ; del_len_place := 0 ; 2779 WITH del_len_attr DO 2780 BEGIN 2781 CASE kind OF 2782 varbl : IF varissimple (del_len_attr) THEN 2783 BEGIN 2784 del_len_reg := basereg ; del_len_bloc := basebloc ; del_len_place := dplmt DIV bytesinword 2785 END 2786 ELSE BEGIN 2787 loadadr (del_len_attr, nreg) ; del_len_reg := currentpr ; del_len_bloc := currentbloc ; 2788 del_len_bloc_is_new := true 2789 END ; 2790 sval : IF val < 0 THEN BEGIN error (277) ; del_len_value := 0 END 2791 ELSE del_len_value := val ; 2792 lval : BEGIN 2793 del_len_place := oldnewstor (bytesinword) DIV bytesinword ; del_len_reg := pr6 ; 2794 IF ldregbloc <> NIL THEN regenere (ldregbloc) ; 2795 genstand (del_len_reg, del_len_place, opaq [stor, ldreg], tn) ; 2796 END ; 2797 END ; 2798 IF asscheck THEN 2799 IF kind IN [varbl, lval] THEN 2800 BEGIN 2801 IF del_len_attr.kind = varbl THEN 2802 IF symbolmap THEN nameisref (del_len_attr.nameaddr, symbolfile, symbolline) ; 2803 genstand (del_len_reg, del_len_place, iszn, tn) ; 2804 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2805 genexceptcode (delete_negative_length_error, ra) ; 2806 inser (cb, loc1) ; 2807 END ; 2808 END ; 2809 remaining_length := -1 ; 2810 prepare_string (string_attr, string_info, inacc) ; 2811 WITH string_info DO 2812 BEGIN 2813 IF reg_bloc <> NIL THEN freebloc (reg_bloc) ; 2814 check_done := false ; 2815 IF length_is_known THEN 2816 BEGIN 2817 sauvereg (ra, false) ; check_done := false ; 2818 IF del_len_value <> -1 THEN 2819 BEGIN 2820 IF (l_val - del_len_value) < 0 THEN 2821 BEGIN error (276) ; del_len_value := 0 END ; 2822 IF dm1_place = 0 THEN 2823 BEGIN 2824 remaining_length := l_val - del_len_value - dm1_value ; 2825 IF remaining_length < 0 THEN 2826 BEGIN error (276) ; remaining_length := 0 END ; 2827 END ; 2828 gencstecode (l_val - del_len_value, ilda) ; check_done := true ; 2829 END 2830 ELSE BEGIN 2831 gencstecode (l_val, ilda) ; 2832 IF del_len_bloc <> NIL THEN regenere (del_len_bloc) ; 2833 IF del_len_attr.kind = varbl THEN 2834 IF symbolmap THEN nameisref (del_len_attr.nameaddr, symbolfile, symbolline) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 81 2835 genstand (del_len_reg, del_len_place, isba, tn) 2836 END 2837 END 2838 ELSE IF del_len_value <> -1 THEN 2839 gencstecode (del_len_value, isba) 2840 ELSE BEGIN 2841 IF del_len_bloc <> NIL THEN regenere (del_len_bloc) ; 2842 IF del_len_attr.kind = varbl THEN 2843 IF symbolmap THEN nameisref (del_len_attr.nameaddr, symbolfile, symbolline) ; 2844 genstand (del_len_reg, del_len_place, isba, tn) 2845 END ; 2846 IF bloc <> NIL THEN regenere (bloc) ; 2847 genstand (register, wdisp - 1, ista, tn) ; (* STORE NEW LENGTH OF THE STRING *) 2848 (* NOW, GET IN RA LENGTH OF STRING TO BE MOVED *) 2849 l_len := 0 ; l_tag := tal ; 2850 IF remaining_length = -1 THEN 2851 IF dm1_place = 0 THEN 2852 IF dm1_value <> 0 THEN 2853 gencstecode (dm1_value, isba) 2854 ELSE (* nothing *) 2855 ELSE BEGIN 2856 genstand (pr6, dm1_place, isba, tn) ; 2857 IF asscheck THEN 2858 BEGIN 2859 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 2860 genexceptcode (delete_too_long_error, ra) ; 2861 inser (cb, loc1) ; 2862 END ; 2863 END 2864 ELSE 2865 BEGIN 2866 l_len := remaining_length ; l_tag := tn ; 2867 gencstecode (remaining_length, ilda) ; 2868 END ; 2869 (* COMPUTE ADDRESSES OF MOVE *) 2870 from_bloc := NIL ; to_bloc := NIL ; 2871 to_offset_in_desc := false ; from_offset_in_desc := false ; 2872 to_bloc_is_new := false ; from_bloc_is_new := false ; 2873 IF dm1_place = 0 THEN 2874 BEGIN 2875 i := (wdisp * bytesinword) + dm1_value + bdisp ; 2876 to_wdisp := i DIV bytesinword ; 2877 to_bdisp := i MOD bytesinword ; 2878 IF to_wdisp < twoto17 THEN 2879 BEGIN 2880 to_bloc := bloc ; to_reg := register ; 2881 to_offset_in_desc := true ; 2882 IF del_len_value <> -1 THEN 2883 BEGIN 2884 i := i + del_len_value ; 2885 from_wdisp := i DIV bytesinword ; 2886 from_bdisp := i MOD bytesinword ; 2887 IF from_wdisp < twoto17 THEN 2888 BEGIN 2889 from_bloc := to_bloc ; from_reg := to_reg ; 2890 2891 from_offset_in_desc := true ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 82 2892 END ; 2893 END ; 2894 END ; 2895 END ; 2896 IF NOT to_offset_in_desc THEN 2897 BEGIN 2898 to_wdisp := wdisp ; to_bdisp := bdisp ; 2899 IF register IN [prstatic, prlink, pr6] THEN 2900 BEGIN 2901 getpr ; to_bloc := currentbloc ; to_reg := currentpr ; 2902 to_bloc_is_new := true ; 2903 IF bloc <> NIL THEN regenere (bloc) ; 2904 genstand (register, 0, prinst [epp, to_reg], tn) ; 2905 END 2906 ELSE BEGIN 2907 to_bloc := bloc ; to_reg := register ; 2908 END ; 2909 IF dm1_place = 0 THEN 2910 gencstecode (dm1_value, ildq) 2911 ELSE genstand (pr6, dm1_place, ildq, tn) ; 2912 IF to_bloc <> NIL THEN regenere (to_bloc) ; 2913 genstand (to_reg, 0, ia9bd, tql) ; 2914 END ; 2915 IF NOT from_offset_in_desc THEN 2916 IF del_len_value <> -1 THEN 2917 BEGIN 2918 i := (to_wdisp * bytesinword) + to_bdisp + del_len_value ; 2919 from_wdisp := i DIV bytesinword ; 2920 from_bdisp := i MOD bytesinword ; 2921 IF from_wdisp < twoto17 THEN 2922 BEGIN 2923 from_bloc := to_bloc ; from_reg := to_reg ; 2924 from_offset_in_desc := true ; 2925 END ; 2926 END ; 2927 IF NOT from_offset_in_desc THEN 2928 BEGIN 2929 from_bdisp := bdisp ; from_wdisp := wdisp ; 2930 IF del_len_value <> -1 THEN 2931 gencstecode (del_len_value, ildq) 2932 ELSE BEGIN 2933 IF del_len_bloc <> NIL THEN regenere (del_len_bloc) ; 2934 genstand (del_len_reg, del_len_place, ildq, tn) ; 2935 END ; 2936 IF del_len_bloc_is_new THEN freebloc (del_len_bloc) ; 2937 freeattr (del_len_attr) ; 2938 getpr ; from_bloc := currentbloc ; from_reg := currentpr ; 2939 from_bloc_is_new := true ; 2940 IF from_bloc <> NIL THEN regenere (from_bloc) ; 2941 genstand (to_reg, 0, prinst [epp, from_reg], tn) ; 2942 genstand (from_reg, 0, ia9bd, tql) ; 2943 END 2944 ELSE BEGIN 2945 IF del_len_bloc_is_new THEN freebloc (del_len_bloc) ; 2946 freeattr (del_len_attr) 2947 END ; 2948 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 83 2949 IF to_bloc <> NIL THEN regenere (to_bloc) ; IF from_bloc <> NIL THEN regenere (from_bloc) ; 2950 geneism (imlr, 0, p0t0r0) ; 2951 gendesca (from_reg, from_wdisp, from_bdisp, l9, l_len, l_tag) ; 2952 gendesca (to_reg, to_wdisp, to_bdisp, l9, l_len, l_tag) ; 2953 IF bloc_is_new THEN freebloc (bloc) ; 2954 IF from_bloc_is_new THEN freebloc (from_bloc) ; 2955 IF to_bloc_is_new THEN freebloc (to_bloc) ; 2956 freeattr (string_attr) ; 2957 END ; 2958 END (* GEN_DELETE *) ; 2959 2960 $OPTIONS page$ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 84 2961 2962 (* ************************************* GEN_INSERT ****************************************** *) 2963 2964 PROCEDURE gen_insert (VAR insert_attr, string_attr, disp_attr : attr) ; 2965 2966 (* GENERATES CODE FOR 2967* 2968* INSERT (, , DISP) ; 2969* 2970* *) 2971 VAR 2972 maxl_attr : attr ; 2973 string_info : string_item_info ; 2974 insert_info : string_item_info ; 2975 dm1_place, dm1_value : integer ; 2976 loaded_reg : register ; loc1, loc2, loc3 : integer ; 2977 check_done : boolean ; 2978 from_reg, to_reg : preg ; from_bloc, to_bloc : regpt ; 2979 from_offset_in_desc, to_offset_in_desc : boolean ; 2980 from_bloc_is_new, to_bloc_is_new : boolean ; 2981 i : integer ; l_len : integer ; l_tag : tag ; 2982 to_wdisp, to_bdisp, from_wdisp, from_bdisp : integer ; 2983 2984 BEGIN 2985 (* COMPUTE "DISP - 1" - ERROR IF NEGATIVE - 2986* STORE IT AT "DM1_PLACE" IN STACK IF NOT KNOWN *) 2987 dm1_place := 0 ; 2988 WITH disp_attr DO 2989 BEGIN 2990 CASE kind OF 2991 varbl : IF raisused THEN 2992 BEGIN loaded_reg := rq ; sauvereg (rq, false) ; transfer (disp_attr, inq) END 2993 ELSE BEGIN loaded_reg := ra ; transfer (disp_attr, inacc) END ; 2994 lval : BEGIN 2995 loaded_reg := ldreg ; IF ldregbloc <> NIL THEN regenere (ldregbloc) 2996 END ; 2997 sval : IF val - 1 < 0 THEN 2998 BEGIN error (276) ; dm1_value := 0 END 2999 ELSE dm1_value := val - 1 ; 3000 END ; 3001 IF kind IN [varbl, lval] THEN 3002 BEGIN 3003 dm1_place := oldnewstor (bytesinword) DIV bytesinword ; 3004 genstand (nreg, 1, opaq [sub, loaded_reg], tdl) ; 3005 IF asscheck THEN 3006 BEGIN 3007 loc1 := indfich ; genstand (nreg, 0, itpl, tic) ; 3008 genexceptcode (delete_offset_error, loaded_reg) ; 3009 inser (cb, loc1) ; 3010 END ; 3011 genstand (pr6, dm1_place, opaq [stor, loaded_reg], tn) ; 3012 END ; 3013 END ; 3014 freeattr (disp_attr) ; 3015 (* GET INFO ABOUT TARGET *) 3016 prepare_string (string_attr, string_info, out) ; 3017 (* GET INFO ABOUT INSERT. *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 85 3018 prepare_string (insert_attr, insert_info, out) ; 3019 (* CHECK THAT LENGTH (STRING) IS VALID, 3020* AND THAT LENGTH (STRING) + LENGTH (INSERT) IS NOT > MAXLENGTH (STRING) *) 3021 IF asscheck THEN 3022 WITH string_attr, string_info DO 3023 IF typtr^.actual_parameter_list <> NIL THEN 3024 BEGIN 3025 WITH typtr^ DO 3026 BEGIN 3027 IF raisused THEN 3028 BEGIN 3029 loaded_reg := rq ; 3030 sauvereg (rq, false) ; 3031 END 3032 ELSE BEGIN 3033 loaded_reg := ra ; 3034 END ; 3035 IF actual_parameter_list^.klass <> konst THEN 3036 BEGIN 3037 addressvar (actual_parameter_list, maxl_attr, false) ; 3038 IF loaded_reg = rq THEN 3039 transfer (maxl_attr, inq) 3040 ELSE 3041 transfer (maxl_attr, inacc) ; 3042 freeattr (maxl_attr) ; 3043 END 3044 ELSE 3045 gencstecode (actual_parameter_list^.values, opaq [load, loaded_reg]) ; 3046 IF bloc <> NIL THEN regenere (bloc) ; 3047 genstand (register, wdisp - 1, iszn, tn) ; 3048 loc1 := indfich ; genstand (nreg, 0, itmi, tic) ; 3049 genstand (register, wdisp - 1, opaq [cmp, loaded_reg], tn) ; 3050 loc2 := indfich ; genstand (nreg, 0, itmi, tic) ; 3051 WITH insert_info DO 3052 IF length_is_known THEN 3053 gencstecode (length, opaq [sub, loaded_reg]) 3054 ELSE 3055 BEGIN 3056 IF len_bloc <> NIL THEN regenere (len_bloc) ; 3057 genstand (len_reg, len_place, opaq [sub, loaded_reg], tn) ; 3058 END ; 3059 genstand (register, wdisp - 1, opaq [cmp, loaded_reg], tn) ; 3060 loc3 := indfich ; genstand (nreg, 0, itpl, tic) ; 3061 genexceptcode (insert_overflow_error, loaded_reg) ; 3062 inser (cb, loc1) ; inser (cb, loc2) ; 3063 genexceptcode (stringlength_range_error, loaded_reg) ; 3064 inser (cb, loc3) ; 3065 END ; 3066 END ; 3067 WITH string_info DO 3068 BEGIN 3069 (* NOW, GET IN RA LENGTH OF STRING TO BE MOVED *) 3070 genstand (register, wdisp - 1, ilda, tn) ; 3071 IF dm1_place = 0 THEN 3072 IF dm1_value <> 0 THEN 3073 gencstecode (dm1_value, isba) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 86 3074 ELSE (* nothing *) 3075 ELSE 3076 genstand (pr6, dm1_place, isba, tn) ; 3077 (* STORE NEW LENGTH IN STRING *) 3078 IF insert_info.length_is_known THEN 3079 IF insert_info.length <> 0 THEN 3080 BEGIN 3081 gencstecode (insert_info.length, ildq) ; 3082 IF bloc <> NIL THEN regenere (bloc) ; 3083 genstand (register, wdisp - 1, iasq, tn) ; 3084 END 3085 ELSE (* nothing *) 3086 ELSE 3087 BEGIN 3088 IF insert_info.len_bloc <> NIL THEN regenere (insert_info.len_bloc) ; 3089 genstand (insert_info.len_reg, insert_info.len_place, ildq, tn) ; 3090 IF bloc <> NIL THEN regenere (bloc) ; 3091 genstand (register, wdisp - 1, iasq, tn) ; 3092 END ; 3093 (* COMPUTE ADDRESSES OF MOVE *) 3094 to_bloc := NIL ; from_bloc := NIL ; 3095 from_offset_in_desc := false ; to_offset_in_desc := false ; 3096 from_bloc_is_new := false ; to_bloc_is_new := false ; 3097 IF dm1_place = 0 THEN 3098 BEGIN 3099 i := (wdisp * bytesinword) + dm1_value + bdisp ; 3100 from_wdisp := i DIV bytesinword ; 3101 from_bdisp := i MOD bytesinword ; 3102 IF from_wdisp < twoto17 THEN 3103 BEGIN 3104 from_bloc := bloc ; from_reg := register ; 3105 from_offset_in_desc := true ; 3106 IF insert_info.length_is_known THEN 3107 BEGIN 3108 i := i + insert_info.length ; 3109 to_wdisp := i DIV bytesinword ; 3110 to_bdisp := i MOD bytesinword ; 3111 IF to_wdisp < twoto17 THEN 3112 BEGIN 3113 to_bloc := from_bloc ; to_reg := from_reg ; 3114 to_offset_in_desc := true ; 3115 END ; 3116 END ; 3117 END ; 3118 END ; 3119 IF NOT from_offset_in_desc THEN 3120 BEGIN 3121 from_wdisp := wdisp ; from_bdisp := bdisp ; 3122 IF register IN [prstatic, prlink, pr6] THEN 3123 BEGIN 3124 getpr ; from_bloc := currentbloc ; from_reg := currentpr ; 3125 from_bloc_is_new := true ; 3126 IF bloc <> NIL THEN regenere (bloc) ; 3127 genstand (register, 0, prinst [epp, from_reg], tn) ; 3128 END 3129 ELSE BEGIN 3130 from_bloc := bloc ; from_reg := register ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 87 3131 END ; 3132 IF dm1_place = 0 THEN 3133 gencstecode (dm1_value, ildq) 3134 ELSE genstand (pr6, dm1_place, ildq, tn) ; 3135 IF from_bloc <> NIL THEN regenere (from_bloc) ; 3136 genstand (from_reg, 0, ia9bd, tql) ; 3137 END ; 3138 IF NOT to_offset_in_desc THEN 3139 IF insert_info.length_is_known THEN 3140 BEGIN 3141 i := (from_wdisp * bytesinword) + from_bdisp + insert_info.length ; 3142 to_wdisp := i DIV bytesinword ; 3143 to_bdisp := i MOD bytesinword ; 3144 IF to_wdisp < twoto17 THEN 3145 BEGIN 3146 to_bloc := from_bloc ; to_reg := from_reg ; 3147 to_offset_in_desc := true ; 3148 END ; 3149 END ; 3150 IF NOT to_offset_in_desc THEN 3151 BEGIN 3152 to_bdisp := bdisp ; to_wdisp := wdisp ; 3153 IF insert_info.length_is_known THEN 3154 gencstecode (insert_info.length, ildq) 3155 ELSE BEGIN 3156 genstand (insert_info.len_reg, insert_info.len_place, ildq, tn) ; 3157 END ; 3158 getpr ; to_bloc := currentbloc ; to_reg := currentpr ; 3159 to_bloc_is_new := true ; 3160 IF to_bloc <> NIL THEN regenere (to_bloc) ; 3161 genstand (from_reg, 0, prinst [epp, to_reg], tn) ; 3162 genstand (to_reg, 0, ia9bd, tql) ; 3163 END ; 3164 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; 3165 IF from_bloc <> NIL THEN regenere (from_bloc) ; IF to_bloc <> NIL THEN regenere (to_bloc) ; 3166 geneism (imrl, 0, p0t0r0) ; 3167 gendesca (from_reg, from_wdisp, from_bdisp, l9, 0, tal) ; 3168 gendesca (to_reg, to_wdisp, to_bdisp, l9, 0, tal) ; 3169 IF to_bloc_is_new THEN freebloc (to_bloc) ; 3170 mfari1 := a1r1i0 ; mfari2 := a1r1i0 ; 3171 WITH insert_info DO 3172 BEGIN 3173 l_tag := tal ; l_val := 0 ; 3174 IF bloc <> NIL THEN regenere (bloc) ; 3175 IF length_is_known THEN 3176 IF length < twoto12 THEN 3177 BEGIN 3178 l_tag := tn ; l_val := length ; 3179 mfari1 := a1r0i0 ; mfari2 := a1r0i0 ; 3180 END 3181 ELSE 3182 gencstecode (length, ilda) 3183 ELSE 3184 genstand (len_reg, len_place, ilda, tn) ; 3185 geneism (imlr, 0, p0t0r0) ; 3186 gendesca (register, wdisp, bdisp, l9, l_val, l_tag) ; 3187 gendesca (from_reg, from_wdisp, from_bdisp, l9, l_val, l_tag) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 88 3188 END ; 3189 IF bloc_is_new THEN freebloc (bloc) ; 3190 IF from_bloc_is_new THEN freebloc (from_bloc) ; 3191 WITH insert_info DO 3192 IF bloc_is_new THEN freebloc (bloc) ; 3193 freeattr (insert_attr) ; 3194 freeattr (string_attr) ; 3195 END ; 3196 END (* GEN_INSERT *) ; 3197 3198 BEGIN 3199 END. (* END OF MODULE *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM genoper *** ON 11/12/86 *** PAGE 89 NO COMPILATION ERROR STORAGE REQUIREMENTS FOR OBJECT SEGMENT Object Text Defs Links Static Symbol Start 0 0 44643 46142 46152 46512 Length 50223 44643 1277 350 10 1475 SOURCE FILES USED IN THIS COMPILATION NUMBER DATE MODIFIED PATHNAME 0 11/12/86 1607.7 >spec>install>1212>GENOPER.pascal 1 11/12/86 1528.2 >spec>install>1212>CONSTTYPE.incl.pascal NAMES DECLARED AND REFERENCED a1r0i0 const scalar, ord=4 ; DEF: 1-799 ; REF: 1346 1346 1788 1788 1796 1796 1929 2675 2675 3179 3179 a1r1i0 const scalar, ord=6 ; DEF: 1-799 ; REF: 1349 1349 1979 2008 2021 2266 2266 2285 2285 2678 2678 2948 2948 3164 3164 3170 3170 a_or_q var local to prepare_string, loc:146, size:4 ; scalar ; DEF: 1894 ; REF: 1903* 1905* 1906* 1907* 1967 1969 1970 1971 1975 1979 1999 2001 2006 2008 2018 2020 2021 accbloc field disp:20, size:10 ; pointer ; DEF: 1-910 ; REF: 1246* 1392* 1440 1440* 1604* 1811* 2396* accbool field disp:30, size:4 ; boolean ; DEF: 1-911 ; REF: 1246* 1392* 1604* 1811* 2396* access field disp:70, size:4 ; scalar ; DEF: 1-871 ; REF: 1298* 1848* actual_parameter_list field disp:160, size:10 ; pointer ; DEF: 1-530 ; REF: 1837 1862 1864 1872 2311* 2312 2319* 2320 2700* 2701 2708* 2709 3023 3035 3037 3045 add const scalar, ord=3 ; DEF: 1-919 ; REF: 1971 add_char proc of concat_item ; DEF: 2175 ; REF: 2199 2205 add_length proc of prepare ; DEF: 2058 ; REF: 2127 2157 add_variable_length proc of prepare ; DEF: 2069 ; REF: 2141 2166 addressvar proc level 0, imported ; DEF: 266 ; REF: 44 1864 3037 alfaconst const scalar, ord=2 ; DEF: 1-416 ; REF: 1-569 2228 alfactp field disp:20, size:10 ; pointer ; DEF: 1-897 ; REF: 1294 1317 1363 1367 1375 1379 1986 2149 2201 2228* 2229 2235 2270 2288 alfadeb field disp:150, size:10 ; pointer ; DEF: 1-569 ; REF: 2201 2232* alfaid type packed array of (char) ; DEF: 1-399 ; REF: 1-404 1-436 1-446 1-447 1-496 1-508 1-965 235 236 237 alfaleng const numeric ; DEF: 1-35 ; REF: 1-398 alfalist type record ; DEF: 1-402 ; REF: 1-401 alfalistptr type pointer ; DEF: 1-401 ; REF: 1-403 alfalong field disp:160, size:4 ; integer ; DEF: 1-570 ; REF: 1294 1317 1986 2149 2233* alfapt type pointer ; DEF: 1-419 ; REF: 1-421 1-569 2050 2174 alfaptr var global imported, size:10 ; pointer ; DEF: 166 ; REF: 82 2227 2231 alfaval field disp:10, size:20 ; array of (char) ; DEF: 1-422 ; REF: 2187* 2193* 2205 2221* alfavalue type record ; DEF: 1-420 ; REF: 1-419 aliastype const scalar, ord=10 ; DEF: 1-413 ; REF: 1-563 arrays const scalar, ord=5 ; DEF: 1-412 ; REF: 1-546 asscheck var global imported, size:4 ; boolean ; DEF: 189 ; REF: 103 1156 1178 2528 2562 2570 2586 2766 2798 2857 3005 3021 attr type record ; DEF: 1-849 ; REF: 193 258 262 266 267 279 283 284 285 286 287 288 289 290 332 345 480 684 694 791 883 1023 1040 1195 1266 1478 1490 1624 1656 1825 1829 1891 2040 2056 2170 2336 2405 2493 2724 2964 2972 attraccess type scalar ; DEF: 1-813 ; REF: 1-871 attrkind type scalar ; DEF: 1-812 ; REF: 1-852 basebloc field disp:30, size:10 ; pointer ; DEF: 1-858 ; REF: 1299* 1307 1841 1848* 1915 1963 2090 2133 2304* 2693* 2784 basereg field disp:20, size:4 ; scalar subrange ; DEF: 1-856 ; REF: 1299* 1306 1308 1328 1842 1848* 1915 1963 2090 2133 2304* 2693* 2784 bdisp field disp:104, size:4 ; integer ; DEF: 154 ; REF: 1916* 1921* 1938* 1938 1941* 1953* 1963* 1986* 2026* 2373 2375 2457 2459 2628 2654 2875 2898 2929 3099 3121 3152 3186 bdisp field disp:40, size:4 ; integer ; DEF: 2047 ; REF: 2091* 2096* 2109* 2109 2112* 2133* 2149* 2165* 2271 2289 binartype type packed array of (integer) ; DEF: 1-810 ; REF: 1-811 1-811 bitsforset const numeric ; DEF: 1-111 ; REF: 1671 1672 1677 1678 1792 1799 bitsinbyte const numeric ; DEF: 1-63 ; REF: 1-78 1-79 bitsindword const numeric ; DEF: 1-80 ; REF: 1671 1672 1677 1678 1708 1709 1779 bitsinword const numeric ; DEF: 1-78 ; REF: 1-80 1-92 1-111 1-115 1-117 964 981 998 blank const alphanumeric, 8 char(s) ; DEF: 1-138 ; REF: 2305 2694 bloc field disp:60, size:10 ; pointer ; DEF: 152 ; REF: 1915* 1920* 1942* 1949* 1963* 1985* 2019 2019 2024 2363 2363 2368 2368 2384* 2389* 2439 2439 2441* 2448 2448 2469* 2474* 2633 2642 2642 2647 2685* 2846 2846 2880 2903 2903 2907 2953* 3046 3046 3082 3082 3090 3090 3104 3126 3126 3130 3174 3174 3189* 3192* bloc field disp:10, size:10 ; pointer ; DEF: 2045 ; REF: 2090* 2095* 2113* 2133* 2148* 2162 2162 2260 2260 2267 2267 2273* 2279 2279 2291* bloc_is_new field disp:70, size:4 ; boolean ; DEF: 152 ; REF: 1919* 1928* 1950* 1987* 2384 2389 2441* 2469 2474 2685 2953 3189 3192 bloc_is_new field disp:20, size:4 ; boolean ; DEF: 2045 ; REF: 2094* 2101* 2150* 2273 2291 block const scalar, ord=0 ; DEF: 1-622 ; REF: 1-635 blocknode type record ; DEF: 1-940 ; REF: 1-639 blocknodeptr type pointer ; DEF: 1-639 ; REF: 1-646 1-941 1-949 blocktype type scalar ; DEF: 1-938 ; REF: 1-944 bolr var local to genoppw, loc:147, size:4 ; integer ; DEF: 1649 ; REF: 1683* 1686* 1689* 1692* 1697* 1700* 1704* 1760* 1789 1797 bornesupset const numeric ; DEF: 1-112 ; REF: 1-815 bytesforset const numeric ; DEF: 1-110 ; REF: 1671 1677 1769 1794 bytesindword const numeric ; DEF: 1-66 ; REF: 1778 bytesinhword const numeric ; DEF: 1-65 ; REF: 1-79 bytesinword const numeric ; DEF: 1-64 ; REF: 1-65 1-66 1-71 1-72 1-78 1-110 1-128 1-276 1308 1309 1328 1329 1458 1842 1916 1916 1941 1941 1974 1974 2004 2004 2075 2075 2091 2091 2112 2112 2139 2139 2247 2416 2416 2463 2526 2526 2552 2578 2578 2628 2629 2630 2693 2764 2764 2784 2793 2793 2875 2876 2877 2885 2886 2918 2919 2920 3003 3003 3099 3100 3101 3109 3110 3141 3142 3143 calcvarient proc level 0, imported ; DEF: 267 ; REF: 45 447 455 609 615 624 641 662 760 768 851 859 958 967 975 984 992 1001 1151 1173 1578 1584 1592 1765 1772 1787 cattr var local to genoppw, loc:220, size:150 ; record ; DEF: 1656 ; REF: 1756* 1759* 1765* 1766 1766 1770 1771* 1772* 1774* 1776 1778 1779* 1782* 1787* 1790 1790 1804* 1807* cattr var local to gencompare, loc:200, size:150 ; record ; DEF: 1490 ; REF: 1566* 1569* 1578* 1579 1580 1580 1584* 1585 1586 1586 1589* 1600* cattr var local to genopmult, loc:210, size:150 ; record ; DEF: 1040 ; REF: 1132* 1135* 1151* 1152 1153 1153 1158* 1163 1164 1173* 1174 1175 1175 cattr var local to genandor, loc:146, size:150 ; record ; DEF: 694 ; REF: 753* 756* 760* 761 762 762 765* 768* 769 770 770 773* cattr var local to genopadd, loc:176, size:150 ; record ; DEF: 345 ; REF: 428* 431* 447* 448 449 449 455* 456 457 457 460 461 462* cattsize var local to genoppw, loc:157, size:4 ; integer ; DEF: 1652 ; REF: 1756* 1759* 1779* 1791 1798 cb var global imported, size:4 ; integer ; DEF: 180 ; REF: 96 971 988 1005 1458 1878 1880 2452 2463 2464 2466 2532 2574 2621 2770 2806 2861 3009 3062 3062 3064 ch var parameter of add_char, size:4 ; char ; DEF: 2175 ; REF: 2193 chain const scalar, ord=3 ; DEF: 1-812 ; REF: 1-894 1291 1314 1363 1367 1375 1379 1984 2147 2213 2214 2227 2270 2288 char_const_token const scalar, ord=3 ; DEF: 1-491 ; REF: 1-499 charptr var global imported, size:10 ; pointer ; DEF: 167 ; REF: 83 1932 2103 check_done var local to gen_delete, loc:202, size:4 ; boolean ; DEF: 2737 ; REF: 2814* 2817* 2828* check_done var local to gen_substring, loc:150, size:4 ; boolean ; DEF: 2497 ; REF: 2588* 2595* 2613 choicerarq proc level 0, imported ; DEF: 255 ; REF: 46 714 1510 classe1 var local to genoppw, loc:254, size:4 ; boolean ; DEF: 1657 ; REF: 1716* 1727 clearpt var global, loc:10, size:40 ; array of (integer) ; DEF: 206 ; REF: 218* 1223* 1232* cltransf var global imported, size:30 ; array of (integer) ; DEF: 190 ; REF: 104 1248 1606 cmp const scalar, ord=5 ; DEF: 1-919 ; REF: 1876 3049 3059 concat_item proc of genconcat ; DEF: 2170 ; REF: 2224 2224 condaddr type pointer ; DEF: 1-963 ; REF: 1-966 condbox type record ; DEF: 1-964 ; REF: 1-963 condition const scalar, ord=8 ; DEF: 1-413 ; REF: 1-562 confdimw const numeric ; DEF: 1-273 ; REF: 1-276 conformantdim funct level 0, imported ; boolean ; DEF: 238 ; REF: 23 1959 2130 consttype type scalar ; DEF: 1-416 ; REF: 1-566 235 contexttable type record ; DEF: 1-507 ; REF: 1-433 contype field disp:130, size:10 ; pointer ; DEF: 1-565 ; REF: 2231* 2314* 2703* convreal proc level 0, imported ; DEF: 283 ; REF: 69 381 383 453 520 522 622 1078 1080 1160 1505 1507 create_konst_box proc level 0, imported ; DEF: 235 ; REF: 24 2228 2311 2700 create_types_box proc level 0, imported ; DEF: 236 ; REF: 26 2305 2694 create_vars_box proc level 0, imported ; DEF: 237 ; REF: 25 2319 2708 cstplace field disp:4, size:4 ; integer ; DEF: 1-830 ; REF: 1951* ctp type pointer ; DEF: 1-433 ; REF: 1-450 1-469 1-487 1-489 1-509 1-510 1-518 1-519 1-522 1-529 1-530 1-538 1-540 1-542 1-544 1-546 1-551 1-554 1-555 1-560 1-561 1-563 1-565 1-571 1-583 1-587 1-596 1-604 1-606 1-608 1-611 1-613 1-613 1-614 1-628 1-633 1-851 1-879 1-897 1-943 1-946 1-957 1-973 163 166 167 170 173 174 175 185 235 236 237 238 246 266 279 332 480 1023 1478 current_alfa var local to genconcat, loc:144, size:10 ; pointer ; DEF: 2050 ; REF: 2179 2181 2181 2182* 2182 2183 2190 2217* 2217 current_box var local to concat_item, loc:144, size:10 ; pointer ; DEF: 2174 ; REF: 2201* 2202 2204 2206* 2206 currentbloc var global imported, size:10 ; pointer ; DEF: 191 ; REF: 105 650 1299 1848 1920 1949 1967 1985 1999 2018 2095 2148 2295 2441 2483 2644 2669 2787 2901 2938 3124 3158 currentpr var global imported, size:4 ; scalar subrange ; DEF: 192 ; REF: 106 1294 1299 1845 1848 1920 1949 1985 2095 2148 2295 2440 2441 2643 2644 2669 2787 2901 2938 3124 3158 cwith const scalar, ord=1 ; DEF: 1-622 ; REF: 1-636 declarationpart var global imported, size:4 ; boolean ; DEF: 168 ; REF: 84 433 595 1137 del_len_attr var var parameter of gen_delete, size:150 ; record ; DEF: 2724 ; REF: 2779 2781 2782* 2784 2784 2784 2787* 2790 2791 2794 2794 2795 2799 2801 2802 2833 2834 2842 2843 2937* 2946* del_len_bloc var local to gen_delete, loc:176, size:10 ; pointer ; DEF: 2735 ; REF: 2777* 2784* 2787* 2832 2832 2841 2841 2933 2933 2936* 2945* del_len_bloc_is_new var local to gen_delete, loc:225, size:4 ; boolean ; DEF: 2743 ; REF: 2777* 2788* 2936 2945 del_len_place var local to gen_delete, loc:174, size:4 ; integer ; DEF: 2735 ; REF: 2778* 2784* 2793* 2795 2803 2835 2844 2934 del_len_reg var local to gen_delete, loc:200, size:4 ; scalar subrange ; DEF: 2736 ; REF: 2777* 2784* 2787* 2793* 2795 2803 2835 2844 2934 del_len_value var local to gen_delete, loc:175, size:4 ; integer ; DEF: 2735 ; REF: 2778* 2790* 2791* 2818 2820 2821* 2824 2828 2838 2839 2882 2884 2916 2918 2930 2931 delete_negative_length_error const numeric ; DEF: 1-265 ; REF: 2805 delete_offset_error const numeric ; DEF: 1-264 ; REF: 2769 3008 delete_too_long_error const numeric ; DEF: 1-266 ; REF: 2860 descbloc field disp:130, size:10 ; pointer ; DEF: 1-881 ; REF: 1964 1978* 2134 2142* descreg field disp:120, size:4 ; scalar subrange ; DEF: 1-880 ; REF: 1969 1970 2136 2137 destination type scalar ; DEF: 1-814 ; REF: 258 1891 disp_attr var var parameter of gen_insert, size:150 ; record ; DEF: 2964 ; REF: 2988 2990 2992* 2993* 2995 2995 2995 2997 2999 3001 3014* disp_attr var var parameter of gen_delete, size:150 ; record ; DEF: 2724 ; REF: 2749 2751 2753* 2754* 2756 2756 2756 2758 2760 2762 2775* disp_attr var var parameter of gen_substring, size:150 ; record ; DEF: 2493 ; REF: 2511 2513 2515* 2516* 2518 2518 2518 2520 2522 2524 2537* disp_in_desc var local to gen_substring, loc:210, size:4 ; boolean ; DEF: 2503 ; REF: 2625* 2634* 2637 dm1_place var local to gen_insert, loc:244, size:4 ; integer ; DEF: 2975 ; REF: 2987* 3003* 3011 3071 3076 3097 3132 3134 dm1_place var local to gen_delete, loc:170, size:4 ; integer ; DEF: 2733 ; REF: 2748* 2764* 2772 2822 2851 2856 2873 2909 2911 dm1_place var local to gen_substring, loc:204, size:4 ; integer ; DEF: 2502 ; REF: 2510* 2526* 2534 2590 2606 2609 2612 2626 2649 2650 dm1_value var local to gen_insert, loc:245, size:4 ; integer ; DEF: 2975 ; REF: 2998* 2999* 3072 3073 3099 3133 dm1_value var local to gen_delete, loc:171, size:4 ; integer ; DEF: 2733 ; REF: 2759* 2760* 2824 2852 2853 2875 2910 dm1_value var local to gen_substring, loc:207, size:4 ; integer ; DEF: 2502 ; REF: 2521* 2522* 2593 2600 2610 2628 2651 dplmt field disp:40, size:4 ; integer ; DEF: 1-861 ; REF: 1300* 1308 1309 1328 1329 1842 1849* 1916 1916 2091 2091 2304* 2693* 2784 dummyclass const scalar, ord=7 ; DEF: 1-415 ; REF: 1-615 dwordconst const scalar, ord=1 ; DEF: 1-416 ; REF: 1-568 easyvar funct level 0, imported ; boolean ; DEF: 288 ; REF: 70 412 419 540 553 559 570 583 588 732 916 932 935 1121 1539 1548 1554 ensaccessible type set of (scalar) ; DEF: 1-461 ; REF: 1-527 entercst proc level 0, imported ; DEF: 270 ; REF: 47 1948 enterlcst proc level 0, imported ; DEF: 271 ; REF: 48 1223 1232 1238 1240 1779 enterllcst proc level 0, imported ; DEF: 272 ; REF: 49 1782 enterundlab proc level 0, imported ; DEF: 256 ; REF: 50 1224 1233 1238 1240 1780 1783 1951 envstandard var global imported, size:4 ; scalar ; DEF: 169 ; REF: 85 1342 epp const scalar, ord=0 ; DEF: 1-917 ; REF: 197 1952 2257 2296 2300 2302 2440 2643 2670 2904 2941 3127 3161 error proc level 0, imported ; DEF: 245 ; REF: 32 324 325 443 549 605 848 945 946 1147 1335 1339 1343 1351 1574 2521 2550 2594 2759 2790 2821 2826 2998 evareaw const numeric ; DEF: 1-288 ; REF: 462 463 635 636 638 639 773 774 1226 1235 1589 1590 1795 1798 2254 2302 2577 2670 exitelem type record ; DEF: 1-479 ; REF: 1-478 exitptr type pointer ; DEF: 1-478 ; REF: 1-480 1-586 externalitem type record ; DEF: 1-445 ; REF: 1-444 externalitemtype type scalar ; DEF: 1-441 ; REF: 1-451 f_left var local to int_op, loc:150, size:10 ; real ; DEF: 311 ; REF: 317* 319 320 321 322 f_max var local to int_op, loc:160, size:10 ; real ; DEF: 312 ; REF: 316* 324 f_min var local to int_op, loc:156, size:10 ; real ; DEF: 312 ; REF: 316* 325 f_res var local to int_op, loc:154, size:10 ; real ; DEF: 311 ; REF: 319* 320* 321* 322* 324 325 326 f_right var local to int_op, loc:152, size:10 ; real ; DEF: 311 ; REF: 317* 319 320 321 322 father_schema field disp:150, size:10 ; pointer ; DEF: 1-529 ; REF: 1836 2012 2159 2262 2281 2308* 2697* fattr var var parameter of gen_string_position, size:150 ; record ; DEF: 2405 ; REF: 2417* 2477* fattr var var parameter of gen_string_comp, size:150 ; record ; DEF: 2336 ; REF: 2353* 2357* 2392* fattr var var parameter of genconcat, size:150 ; record ; DEF: 2040 ; REF: 2213 2213 2224* 2241* 2258 2262 2269 2269 2270 2270 2275* fattr var var parameter of concat_item, size:150 ; record ; DEF: 2170 ; REF: 2198 2199 2199 2201 2209* fattr var var parameter of prepare, size:150 ; record ; DEF: 2056 ; REF: 2087 2088* 2090 2090 2091 2091 2094* 2102 2103 2106 2109 2114 2116 2116 2117 2121 2124* 2129* 2130 2132 2132* 2133 2133 2134 2136 2137 2142* 2146 2148* 2149 2154 2154 2159 fattr var var parameter of prepare_string, size:150 ; record ; DEF: 1891 ; REF: 1912 1913* 1915 1915 1916 1916 1919* 1931 1932 1935 1938 1943 1943 1944 1945* 1948 1954* 1958* 1959 1962 1962* 1963 1963 1964 1969 1970 1983 1985* 1986 1991 1991 2012 fattr var var parameter of check_dynamic_string_length, size:150 ; record ; DEF: 1825 ; REF: 1835 1836 1837 1839* 1841 1842 1842 1844* 1846 1848* 1848* 1848* 1849* 1852 fattr var var parameter of genoppw, size:150 ; record ; DEF: 1624 ; REF: 1666 1668 1669 1671 1672 1713 1714 1715* 1721* 1733 1756 1759 fattr var var parameter of gencompare, size:150 ; record ; DEF: 1478 ; REF: 1506 1507* 1511 1512* 1515 1528 1531 1545 1566 1569 fattr var var parameter of genstcomp, size:150 ; record ; DEF: 1266 ; REF: 1289 1291 1293* 1294 1296 1298* 1298* 1299* 1299* 1300* 1300* 1300* 1300* 1300* 1301* 1306 1307 1308 1308 1309 1309 1365 1366 1366 1367 1367 1373 1374 1374 1375 1375 1388* fattr var var parameter of genptcomp, size:150 ; record ; DEF: 1195 ; REF: 1213 1217* 1229 1230* 1231* 1243* fattr var var parameter of genopmult, size:150 ; record ; DEF: 1023 ; REF: 1049 1050 1052 1054 1055 1057 1058 1059 1077 1078* 1084 1085* 1088 1103 1123 1132 1135 fattr var var parameter of gendivmod, size:150 ; record ; DEF: 883 ; REF: 911 912* 914 927 929 930 936 949* 949 950* 950 956 956* 957* 974* 991* 1009 fattr var var parameter of genopdivi, size:150 ; record ; DEF: 791 ; REF: 822 824 829 830 837 838* 839 842 850* 855 859* 860 861 861 866 868 fattr var var parameter of genandor, size:150 ; record ; DEF: 684 ; REF: 715 715* 724 726 735 736 741 742 748 750 753 756 fattr var var parameter of genopsub, size:150 ; record ; DEF: 480 ; REF: 519 520* 534 535* 537 545 566 575 580 599* 608* 615* 616 617 617 622 622* 623* 631 633 634 662* 663 664 664 670 fattr var var parameter of genopadd, size:150 ; record ; DEF: 332 ; REF: 359 360 362 365 380 381* 387 388* 390 402 410 428 431 fattr_info var local to gen_string_comp, loc:146, size:110 ; record ; DEF: 2347 ; REF: 2354* 2357* 2360 2362 2362 2363 2363 2370 2372 2373 2373 2373 2373 2373 2382 2384 2384* 2385 2385* fattr_info var local to genconcat, loc:150, size:44 ; record ; DEF: 2052 ; REF: 2241* 2258 2260 2260 2261 2263 2263 2264 2265 2267 2267 2271 2271 2271 2273 2273* fattsize var local to genoppw, loc:154, size:4 ; integer ; DEF: 1652 ; REF: 1666* 1671* 1671* 1672* 1672* 1708 1723 1756 1759 fcl var parameter of gen_string_comp, size:4 ; integer ; DEF: 2336 ; REF: 2350 2352 2352* 2352* 2376 fcl var parameter of genoppw, size:4 ; integer ; DEF: 1624 ; REF: 1662 1681 1716 fcl var parameter of gencompare, size:4 ; integer ; DEF: 1478 ; REF: 1606 1607 fcl var parameter of genstcomp, size:4 ; integer ; DEF: 1266 ; REF: 1286 1359 1369 1370* 1370* 1382 fcl var parameter of genptcomp, size:4 ; integer ; DEF: 1195 ; REF: 1248 1249 1255 fcl var parameter of gendivmod, size:4 ; integer ; DEF: 883 ; REF: 907 910 field const scalar, ord=5 ; DEF: 1-415 ; REF: 1-608 filelocation type scalar ; DEF: 1-437 ; REF: 1-598 files const scalar, ord=9 ; DEF: 1-413 ; REF: 1-555 first_alfa var local to genconcat, loc:142, size:10 ; pointer ; DEF: 2050 ; REF: 2216* 2216 2217 2232 fno var parameter of genoppw, size:4 ; integer ; DEF: 1624 ; REF: 1662 1681 1716 1802 fno var parameter of genandor, size:4 ; integer ; DEF: 684 ; REF: 703 706 freeattr proc level 0, imported ; DEF: 290 ; REF: 71 462 635 638 765 773 865 947 1158 1243 1243 1388 1389 1589 1600 1600 1804 1807 1807 1869 1945 1954 2124 2209 2275 2293 2392 2393 2477 2478 2537 2566 2686 2775 2937 2946 2956 3014 3042 3193 3194 freebloc proc level 0, imported ; DEF: 259 ; REF: 51 1227 1440 1452 1978 2142 2273 2291 2384 2385 2389 2390 2469 2470 2474 2475 2585 2685 2687 2813 2936 2945 2953 2954 2955 3169 3189 3190 3192 from_bdisp var local to gen_insert, loc:274, size:4 ; integer ; DEF: 2982 ; REF: 3101* 3121* 3141 3167 3187 from_bdisp var local to gen_delete, loc:224, size:4 ; integer ; DEF: 2742 ; REF: 2886* 2920* 2929* 2951 from_bdisp var local to gen_substring, loc:206, size:4 ; integer ; DEF: 2502 ; REF: 2630* 2654* 2683 from_bloc var local to gen_insert, loc:256, size:10 ; pointer ; DEF: 2978 ; REF: 3094* 3104* 3113 3124* 3130* 3135 3135 3146 3165 3165 3190* from_bloc var local to gen_delete, loc:206, size:10 ; pointer ; DEF: 2738 ; REF: 2870* 2889* 2923* 2938* 2940 2940 2949 2949 2954* from_bloc var local to gen_substring, loc:212, size:10 ; pointer ; DEF: 2504 ; REF: 2633* 2644* 2647* 2652 2652 2680 2680 2687* from_bloc_is_new var local to gen_insert, loc:264, size:4 ; boolean ; DEF: 2980 ; REF: 3096* 3125* 3190 from_bloc_is_new var local to gen_delete, loc:214, size:4 ; boolean ; DEF: 2740 ; REF: 2872* 2939* 2954 from_bloc_is_new var local to gen_substring, loc:215, size:4 ; boolean ; DEF: 2504 ; REF: 2625* 2644* 2647* 2687 from_offset_in_desc var local to gen_insert, loc:262, size:4 ; boolean ; DEF: 2979 ; REF: 3095* 3105* 3119 from_offset_in_desc var local to gen_delete, loc:212, size:4 ; boolean ; DEF: 2739 ; REF: 2871* 2891* 2915 2924* 2927 from_reg var local to gen_insert, loc:253, size:4 ; scalar subrange ; DEF: 2978 ; REF: 3104* 3113 3124* 3127 3130* 3136 3146 3161 3167 3187 from_reg var local to gen_delete, loc:203, size:4 ; scalar subrange ; DEF: 2738 ; REF: 2889* 2923* 2938* 2941 2942 2951 from_reg var local to gen_substring, loc:214, size:4 ; scalar subrange ; DEF: 2504 ; REF: 2633* 2644* 2647* 2653 2683 from_wdisp var local to gen_insert, loc:273, size:4 ; integer ; DEF: 2982 ; REF: 3100* 3102 3121* 3141 3167 3187 from_wdisp var local to gen_delete, loc:223, size:4 ; integer ; DEF: 2742 ; REF: 2885* 2887 2919* 2921 2929* 2951 from_wdisp var local to gen_substring, loc:205, size:4 ; integer ; DEF: 2502 ; REF: 2629* 2631 2654* 2683 ftp type pointer ; DEF: 1-484 ; REF: 1-488 1-493 1-521 gattr var global imported, size:150 ; record ; DEF: 193 ; REF: 107 368 369 371 374 382 383* 389 392 393 395 397 403 404 411 412* 414 418 419* 421 428 431 466* 505 506 508 510 512 521 522* 526 528 528 530* 530 536 538 540* 547 549 551 553* 558 559* 567 569 570* 573 574 582 583* 587 588* 609* 610 611 611 614* 624* 625 626 626 631* 631 633* 633 634* 634 635* 638* 641* 642 645* 647* 649 650* 652 653 653 655* 657* 660* 670* 714 716 717 719 730 732* 747 753 756 777* 815 817 819 828 829 851* 852 853 853 855* 858* 865* 866* 868* 868 913 915 916* 919 921 922 924 926 928 931 932* 934 935* 938 939 940 941 947* 949 950 954* 958* 959 960 960 967* 968 969 969 974* 975* 976 977 977 984* 985 986 986 991* 992* 993 994 994 1001* 1002 1003 1003 1009* 1061 1062 1064 1066 1067 1069 1070 1071 1079 1080* 1087 1100 1101 1102 1106 1112 1115 1120 1121* 1126 1132 1135 1181* 1214* 1216 1222* 1227* 1243* 1244 1246* 1246* 1246* 1248* 1249* 1255 1312 1314 1316* 1317 1321 1322* 1324* 1328 1328 1329 1361 1362 1362 1363 1363 1377 1378 1378 1379 1379 1389* 1390 1392* 1392* 1392* 1393* 1425 1426 1428 1440 1440* 1443 1445 1450* 1452* 1504 1505* 1510 1514 1516 1518 1520 1523 1533 1534 1537 1539* 1541 1542 1547 1548* 1549 1553 1554* 1555 1559 1560 1566 1569 1601 1604* 1604* 1604* 1606* 1607* 1613 1667 1674 1675 1677 1678 1710 1711* 1711 1721* 1732 1738 1742 1743* 1747 1756 1759 1804* 1808 1811* 1811* 1811* 1812* 1978* 2214 2214 2224* 2225 2227* 2227* 2228* 2229 2235 2242* 2277 2281 2287 2287 2288 2288 2293* 2294* 2297 2303* 2304* 2304* 2304* 2305* 2306 2354* 2358* 2393* 2394 2396* 2396* 2396* 2397* 2420* 2478* 2479* 2480 2482* 2482* 2482* 2483* 2689* 2690 2692* 2693* 2693* 2693* 2694* 2695 gattr_info var local to gen_string_comp, loc:170, size:110 ; record ; DEF: 2347 ; REF: 2353* 2358* 2365 2367 2367 2368 2368 2370 2374 2375 2375 2375 2375 2375 2387 2389 2389* 2390 2390* gattr_info var local to genconcat, loc:162, size:44 ; record ; DEF: 2052 ; REF: 2242* 2277 2279 2279 2280 2282 2282 2283 2284 2289 2289 2289 2291 2291* gattsize var local to genoppw, loc:155, size:4 ; integer ; DEF: 1652 ; REF: 1667* 1677* 1677* 1678* 1678* 1709 1723 1756 1759 gencheckmultover proc level 0, imported ; DEF: 275 ; REF: 52 1156 1178 gencstecode proc level 0, imported ; DEF: 276 ; REF: 53 1872 2001 2065 2077 2246 2264 2283 2425 2553 2600 2605 2610 2616 2651 2665 2828 2831 2839 2853 2867 2910 2931 3045 3053 3073 3081 3133 3154 3182 gendesca proc level 0, imported ; DEF: 226 ; REF: 38 1364 1368 1376 1380 2271 2272 2289 2290 2373 2375 2457 2459 2683 2684 2951 2952 3167 3168 3186 3187 gendescb proc level 0, imported ; DEF: 228 ; REF: 39 1791 1792 1798 1799 geneism proc level 0, imported ; DEF: 225 ; REF: 40 1358 1789 1797 2268 2286 2371 2455 2682 2950 3166 3185 generic var parameter of gencompare, size:10 ; pointer ; DEF: 1478 ; REF: 1502 1519 1526 generic var parameter of genopmult, size:10 ; pointer ; DEF: 1023 ; REF: 1075 1086 1159 1162 generic var parameter of genopsub, size:10 ; pointer ; DEF: 480 ; REF: 516 543 621 630 generic var parameter of genopadd, size:10 ; pointer ; DEF: 332 ; REF: 378 400 452 460 genexceptcode proc level 0, imported ; DEF: 260 ; REF: 54 1879 2531 2573 2620 2769 2805 2860 3008 3061 3063 genstand proc level 0, imported ; DEF: 224 ; REF: 41 450 458 462 463 612 618 619 627 635 636 638 639 654 658 665 666 763 771 773 774 854 862 961 964 966 970 978 981 983 987 995 998 1000 1004 1154 1166 1169 1176 1225 1226 1234 1235 1239 1241 1353 1354 1458 1462 1581 1587 1589 1590 1595 1767 1785 1795 1874 1875 1876 1877 1944 1952 1969 1970 1971 1975 2006 2020 2066 2078 2081 2117 2121 2122 2136 2137 2138 2140 2164 2248 2252 2254 2256 2257 2263 2265 2276 2282 2284 2296 2300 2302 2419 2428 2430 2431 2432 2433 2440 2451 2453 2460 2461 2462 2463 2465 2485 2527 2530 2534 2554 2561 2562 2572 2577 2579 2606 2612 2618 2619 2643 2650 2653 2670 2671 2765 2768 2772 2795 2803 2804 2835 2844 2847 2856 2859 2904 2911 2913 2934 2941 2942 3004 3007 3011 3047 3048 3049 3050 3057 3059 3060 3070 3076 3083 3089 3091 3127 3134 3136 3156 3161 3162 3184 get_a_or_q proc of prepare_string ; DEF: 1897 ; REF: 1961 1996 2017 get_adr proc of prepare ; DEF: 2085 ; REF: 2108 2153 2161 get_adr proc of prepare_string ; DEF: 1910 ; REF: 1937 1990 2014 getpr proc level 0, imported ; DEF: 261 ; REF: 55 1949 2295 2438 2641 2669 2901 2938 3124 3158 halfword type integer ; DEF: 1-809 ; REF: 1-810 heaperror proc level 0, imported ; DEF: 242 ; REF: 29 2181 2216 hi field disp:230, size:4 ; integer ; DEF: 1-549 ; REF: 1991 2154 high const scalar, ord=3 ; DEF: 1-624 ; REF: 1718 i var local to gen_insert, loc:266, size:4 ; integer ; DEF: 2981 ; REF: 3099* 3100 3101 3108* 3108 3109 3110 3141* 3142 3143 i var local to gen_delete, loc:216, size:4 ; integer ; DEF: 2741 ; REF: 2875* 2876 2877 2884* 2884 2885 2886 2918* 2919 2920 i var local to gen_substring, loc:211, size:4 ; integer ; DEF: 2503 ; REF: 2628* 2629 2630 ia9bd const scalar, ord=503 ; DEF: 1-751 ; REF: 2276 2461 2653 2913 2942 3136 3162 iada const scalar, ord=84 ; DEF: 1-689 ; REF: 386 463 530 iadq const scalar, ord=98 ; DEF: 1-691 ; REF: 458 530 970 987 1004 2077 2138 2453 ials const scalar, ord=73 ; DEF: 1-688 ; REF: 1166 iana const scalar, ord=210 ; DEF: 1-708 ; REF: 709 ianaq const scalar, ord=211 ; DEF: 1-708 ; REF: 1225 1234 1241 1683 ianq const scalar, ord=212 ; DEF: 1-708 ; REF: 709 iasq const scalar, ord=109 ; DEF: 1-692 ; REF: 2066 2081 3083 3091 icmpa const scalar, ord=162 ; DEF: 1-699 ; REF: 1509 1590 2616 2618 icmpaq const scalar, ord=163 ; DEF: 1-699 ; REF: 1235 1700 1704 icmpc const scalar, ord=513 ; DEF: 1-754 ; REF: 1-782 1358 2371 2455 icmpq const scalar, ord=164 ; DEF: 1-699 ; REF: 1587 2462 icsl const scalar, ord=519 ; DEF: 1-755 ; REF: 1789 1797 idfad const scalar, ord=182 ; DEF: 1-702 ; REF: 384 idfcmp const scalar, ord=203 ; DEF: 1-705 ; REF: 1503 idfdi const scalar, ord=194 ; DEF: 1-704 ; REF: 862 idfdv const scalar, ord=195 ; DEF: 1-704 ; REF: 854 idfmp const scalar, ord=190 ; DEF: 1-703 ; REF: 1081 idfsb const scalar, ord=186 ; DEF: 1-703 ; REF: 518 idiv const scalar, ord=156 ; DEF: 1-698 ; REF: 961 978 995 idkinds type scalar ; DEF: 1-406 ; REF: 1-452 1-572 1-597 idklass type scalar ; DEF: 1-415 ; REF: 1-515 idprocdef type scalar ; DEF: 1-417 ; REF: 1-590 idv3d const scalar, ord=539 ; DEF: 1-757 ; REF: 1-782 ieaa const scalar, ord=0 ; DEF: 1-679 ; REF: 1-781 ieax6 const scalar, ord=8 ; DEF: 1-680 ; REF: 1353 ieax7 const scalar, ord=9 ; DEF: 1-680 ; REF: 1354 ieism type scalar subrange ; DEF: 1-782 ; REF: 225 iepp3 const scalar, ord=322 ; DEF: 1-723 ; REF: 1785 2248 2254 ieraq const scalar, ord=253 ; DEF: 1-713 ; REF: 1239 ifneg const scalar, ord=198 ; DEF: 1-704 ; REF: 518 ilca const scalar, ord=10 ; DEF: 1-680 ; REF: 647 ilcq const scalar, ord=12 ; DEF: 1-680 ; REF: 645 ilda const scalar, ord=21 ; DEF: 1-681 ; REF: 2121 2600 2605 2665 2671 2828 2831 2867 3070 3182 3184 ildq const scalar, ord=25 ; DEF: 1-682 ; REF: 2065 2136 2164 2246 2252 2263 2264 2265 2282 2283 2284 2425 2433 2465 2650 2651 2910 2911 2931 2934 3081 3089 3133 3134 3154 3156 ildx7 const scalar, ord=34 ; DEF: 1-683 ; REF: 2451 illegal_generation var global imported, size:4 ; boolean ; DEF: 181 ; REF: 97 436* 598* 1140* ilrs const scalar, ord=79 ; DEF: 1-688 ; REF: 964 981 998 2561 imlr const scalar, ord=516 ; DEF: 1-754 ; REF: 2268 2286 2682 2950 3185 impy const scalar, ord=155 ; DEF: 1-698 ; REF: 1083 1155 1177 imrl const scalar, ord=517 ; DEF: 1-754 ; REF: 3166 inacc const scalar, ord=0 ; DEF: 1-814 ; REF: 446 608 614 657 660 759 850 858 954 991 1150 1165 1214 1217 1222 1231 1450 1577 1597 1868 1906 2353 2357 2417 2516 2582 2754 2810 2993 3041 inaq const scalar, ord=2 ; DEF: 1-814 ; REF: 1764 incbloc type scalar ; DEF: 1-462 ; REF: 1-585 indfich var global imported, size:4 ; integer ; DEF: 182 ; REF: 98 965 982 999 1441 1447 1451 1875 1877 2431 2460 2530 2572 2619 2768 2804 2859 3007 3048 3050 3060 ineg const scalar, ord=158 ; DEF: 1-698 ; REF: 525 info var var parameter of prepare, size:44 ; record ; DEF: 2056 ; REF: 2060 2062 2065 2071 2087 2090* 2090* 2091* 2091* 2094* 2095* 2095* 2096* 2096* 2101* 2101* 2102 2105* 2105* 2109* 2109 2112* 2112* 2113* 2113* 2117 2122 2133* 2133* 2133* 2133* 2139* 2140 2148* 2148* 2149* 2149* 2149* 2149* 2150* 2154* 2154* 2162 2162 2164 2164 2165* 2165 2165* info var var parameter of prepare_string, size:110 ; record ; DEF: 1891 ; REF: 1912 1915* 1915* 1916* 1916* 1919* 1920* 1920* 1921* 1921* 1926 1928* 1928* 1929* 1929* 1929* 1929* 1931 1934* 1934* 1938* 1938 1941* 1941* 1942* 1942* 1944 1949* 1949* 1950* 1952 1953* 1953* 1963* 1963* 1963* 1963* 1967* 1974* 1975 1976* 1979* 1979* 1985* 1985* 1986* 1986* 1986* 1987* 1991* 1994 1999* 2001 2004* 2005* 2006 2008* 2008* 2010* 2010 2018* 2019 2019 2020 2020 2021* 2021* 2024* 2024 2024* 2024 2024* 2024 2026* 2026 2026* 2028 2029 2031* 2031* 2033* init_desc_address proc level 0, imported ; DEF: 279 ; REF: 66 1962 2132 initattrvarbl proc level 0, imported ; DEF: 285 ; REF: 72 2294 2479 2689 inop const scalar, ord=414 ; DEF: 1-738 ; REF: 1432 1446 1454 1689 1693 1697 inpsr const scalar, ord=3 ; DEF: 1-814 ; REF: 1769 1794 inq const scalar, ord=1 ; DEF: 1-814 ; REF: 454 623 767 957 974 974 991 1168 1171 1583 1598 1866 2354 2358 2420 2515 2543 2753 2992 3039 inser proc level 0, imported ; DEF: 230 ; REF: 42 971 988 1005 1878 1880 2464 2466 2532 2574 2621 2770 2806 2861 3009 3062 3062 3064 inserplace var var parameter of genjump, size:4 ; integer ; DEF: 1408 ; REF: 1461* 1468 insert_attr var var parameter of gen_insert, size:150 ; record ; DEF: 2964 ; REF: 3018* 3193* insert_info var local to gen_insert, loc:222, size:110 ; record ; DEF: 2974 ; REF: 3018* 3051 3052 3053 3056 3056 3057 3057 3078 3079 3081 3088 3088 3089 3089 3106 3108 3139 3141 3153 3154 3156 3156 3171 3173* 3173* 3174 3174 3175 3176 3178* 3178* 3178 3182 3184 3184 3186 3186 3186 3186 3186 3187 3187 3191 3192 3192* insert_overflow_error const numeric ; DEF: 1-267 ; REF: 3061 insta var local to genandor, loc:235, size:4 ; scalar subrange ; DEF: 698 ; REF: 709* 712* 763 774 instq var local to genandor, loc:236, size:4 ; scalar subrange ; DEF: 698 ; REF: 709* 712* 771 instword type scalar ; DEF: 1-679 ; REF: 1-781 1-782 1-783 1-784 int_const_token const scalar, ord=2 ; DEF: 1-491 ; REF: 1-497 int_left var parameter of int_op, size:4 ; integer ; DEF: 298 ; REF: 317 int_op funct level 0 ; integer ; DEF: 298 ; REF: 315* 326* 461 633 634 1164 int_right var parameter of int_op, size:4 ; integer ; DEF: 298 ; REF: 317 intptr var global imported, size:10 ; pointer ; DEF: 170 ; REF: 87 2314 2322 2482 2703 2711 inxbloc field disp:50, size:10 ; pointer ; DEF: 1-867 ; REF: 1300* inxmem field disp:60, size:4 ; integer ; DEF: 1-868 ; REF: 1300* inxmemrw field disp:64, size:4 ; boolean ; DEF: 1-870 ; REF: 1300* iora const scalar, ord=231 ; DEF: 1-710 ; REF: 712 ioraq const scalar, ord=232 ; DEF: 1-710 ; REF: 1686 iorq const scalar, ord=233 ; DEF: 1-710 ; REF: 712 2485 2562 iqls const scalar, ord=81 ; DEF: 1-689 ; REF: 1169 irpd const scalar, ord=540 ; DEF: 1-759 ; REF: 1-783 irpt const scalar, ord=542 ; DEF: 1-759 ; REF: 1-783 isand var local to genandor, loc:234, size:4 ; boolean ; DEF: 697 ; REF: 706* 707 720 722 727 728 isba const scalar, ord=120 ; DEF: 1-694 ; REF: 525 636 2606 2610 2612 2835 2839 2844 2853 2856 3073 3076 isbq const scalar, ord=133 ; DEF: 1-695 ; REF: 525 639 2137 2428 2430 ismod var local to gendivmod, loc:147, size:4 ; boolean ; DEF: 900 ; REF: 910* 918 925 937 948 962 979 996 isreal var local to genopmult, loc:153, size:4 ; boolean ; DEF: 1038 ; REF: 1086* 1089 1097 1119 isstring funct level 0, imported ; boolean ; DEF: 286 ; REF: 73 1958 2129 ista const scalar, ord=45 ; DEF: 1-684 ; REF: 638 2122 2419 2847 istand type scalar subrange ; DEF: 1-781 ; REF: 196 197 224 276 350 492 698 1039 1416 1494 1650 istaq const scalar, ord=48 ; DEF: 1-685 ; REF: 1226 1795 istba const scalar, ord=543 ; DEF: 1-761 ; REF: 1-784 istcq const scalar, ord=546 ; DEF: 1-761 ; REF: 1-784 istq const scalar, ord=53 ; DEF: 1-685 ; REF: 462 635 773 1589 2078 2140 2256 2432 2577 2579 iswd const scalar, ord=510 ; DEF: 1-752 ; REF: 1-781 iszn const scalar, ord=174 ; DEF: 1-700 ; REF: 1595 1874 2803 3047 it var local to concat_item, loc:142, size:4 ; integer ; DEF: 2173 ; REF: 2205* 2205 item_info type record ; DEF: 2043 ; REF: 2052 2056 itg var local to genopmult, loc:146, size:4 ; integer ; DEF: 1035 ; REF: 1048* 1071* 1091 1122 1132 itl var local to genopmult, loc:145, size:4 ; integer ; DEF: 1035 ; REF: 1048* 1059* 1110 1135 itmi const scalar, ord=375 ; DEF: 1-731 ; REF: 1435 1875 2431 3048 3050 itmoz const scalar, ord=376 ; DEF: 1-731 ; REF: 1436 2463 itnc const scalar, ord=377 ; DEF: 1-731 ; REF: 1438 itnz const scalar, ord=378 ; DEF: 1-732 ; REF: 1430 itpl const scalar, ord=380 ; DEF: 1-732 ; REF: 966 983 1000 1429 1877 2530 2572 2619 2768 2804 2859 3007 3060 itpnz const scalar, ord=381 ; DEF: 1-732 ; REF: 1434 itra const scalar, ord=382 ; DEF: 1-732 ; REF: 1433 1446 itrc const scalar, ord=383 ; DEF: 1-732 ; REF: 1437 itze const scalar, ord=405 ; DEF: 1-735 ; REF: 1431 1451 2460 iunresolv type record ; DEF: 1-828 ; REF: 1-824 jumpdisp var parameter of genjump, size:4 ; integer ; DEF: 1408 ; REF: 1422 1456 1458 kind field disp:10, size:4 ; scalar ; DEF: 1-852 ; REF: 359 368 387 390 392 395 411 414 418 421 449 457 506 526 534 537 538 547 551 558 567 569 582 587 611 617 626 653 655* 664 714 715 717 724 730 735 741 748 750 762 770 815 822 837 839 853 861 911 914 915 924 931 934 956 960 969 977 986 994 1003 1049 1061 1084 1088 1100 1106 1112 1120 1153 1175 1229 1246* 1291 1298* 1314 1362 1363 1366 1367 1374 1375 1378 1379 1392* 1426 1443 1510 1511 1515 1516 1533 1537 1541 1547 1553 1559 1580 1586 1594 1604* 1669 1675 1710 1713 1733 1738 1742 1747 1766 1770 1776 1790 1811* 1935 1983 2106 2114 2146 2199 2213 2213 2214 2214 2227* 2269 2270 2287 2288 2396* 2482* 2513 2524 2540 2751 2762 2781 2799 2801 2833 2842 2990 3001 klass field disp:110, size:4 ; scalar ; DEF: 1-515 ; REF: 1862 3035 konst const scalar, ord=2 ; DEF: 1-415 ; REF: 1-564 1862 3035 l9 const scalar, ord=2 ; DEF: 1-785 ; REF: 1364 1368 1376 1380 2271 2272 2289 2290 2373 2375 2457 2459 2683 2684 2951 2952 3167 3168 3186 3187 l_len var local to gen_delete, loc:217, size:4 ; integer ; DEF: 2741 ; REF: 2849* 2866* 2951 2952 l_tag field disp:14, size:4 ; scalar ; DEF: 150 ; REF: 1929* 1979* 2008* 2021* 2373 2375 2418 2427 2457 2459 2656* 2662* 2673 2683 2684 2849* 2866* 2951 2952 3173* 3178* 3186 3187 l_val field disp:20, size:4 ; integer ; DEF: 150 ; REF: 1929* 1934* 2010* 2029 2031* 2373 2375 2425 2430 2457 2459 2593 2600 2605 2656* 2662* 2683 2684 2820 2824 2828 2831 3173* 3178* 3186 3187 lab_pdl_element type record ; DEF: 1-664 ; REF: 1-663 lab_pdl_ptr type pointer ; DEF: 1-663 ; REF: 1-665 label_pdl_element type record ; DEF: 1-655 ; REF: 1-656 labelblock type record ; DEF: 1-641 ; REF: 1-640 labelblockptr type pointer ; DEF: 1-640 ; REF: 1-644 1-645 1-653 1-657 1-661 1-666 1-948 lbase var local to genoppw, loc:152, size:4 ; scalar subrange ; DEF: 1651 ; REF: 1765* 1767 1772* 1774* 1785* 1787* 1791 lbase var local to gencompare, loc:232, size:4 ; scalar subrange ; DEF: 1491 ; REF: 1578* 1581 1584* 1587 1592* 1595 lbase var local to genopmult, loc:152, size:4 ; scalar subrange ; DEF: 1037 ; REF: 1151* 1154 1173* 1176 lbase var local to gendivmod, loc:150, size:4 ; scalar subrange ; DEF: 901 ; REF: 958* 961 967* 970 975* 978 984* 987 992* 995 1001* 1004 lbase var local to genopdivi, loc:144, size:4 ; scalar subrange ; DEF: 806 ; REF: 851* 854 859* 862 lbase var local to genandor, loc:232, size:4 ; scalar subrange ; DEF: 695 ; REF: 760* 763 768* 771 lbase var local to genopsub, loc:147, size:4 ; scalar subrange ; DEF: 493 ; REF: 609* 612 615* 618 624* 627 641* 654 662* 665 lbase var local to genopadd, loc:231, size:4 ; scalar subrange ; DEF: 347 ; REF: 447* 450 455* 458 lcond const scalar, ord=1 ; DEF: 1-812 ; REF: 1-908 714 1246 1392 1426 1510 1604 1811 2396 lcstpt type pointer ; DEF: 1-826 ; REF: 1-841 271 1204 1654 ldisp var local to genoppw, loc:153, size:4 ; integer ; DEF: 1652 ; REF: 1765* 1767 1772* 1774* 1785* 1787* 1791 ldisp var local to gencompare, loc:233, size:4 ; integer ; DEF: 1492 ; REF: 1578* 1581 1584* 1587 1592* 1595 ldisp var local to genopmult, loc:147, size:4 ; integer ; DEF: 1035 ; REF: 1151* 1154 1173* 1176 ldisp var local to gendivmod, loc:146, size:4 ; integer ; DEF: 899 ; REF: 958* 961 967* 970 975* 978 984* 987 992* 995 1001* 1004 ldisp var local to genopdivi, loc:143, size:4 ; integer ; DEF: 805 ; REF: 851* 854 859* 862 ldisp var local to genandor, loc:145, size:4 ; integer ; DEF: 693 ; REF: 760* 763 768* 771 ldisp var local to genopsub, loc:151, size:4 ; integer ; DEF: 494 ; REF: 609* 612 615* 618 624* 627 641* 654 662* 665 ldisp var local to genopadd, loc:232, size:4 ; integer ; DEF: 348 ; REF: 447* 450 455* 458 ldreg field disp:14, size:4 ; scalar ; DEF: 1-889 ; REF: 393 397 410 580 645* 647* 649 736 742 747 936 941 1115 1123 1126 1518 1534 1542 1545 1672 1678 1944 2117 2482* 2518 2558 2756 2795 2995 ldregbloc field disp:20, size:10 ; pointer ; DEF: 1-890 ; REF: 650* 1227* 1452* 1714 1943 1943 2116 2116 2483* 2518 2518 2557 2557 2756 2756 2794 2794 2995 2995 len_attr var var parameter of gen_substring, size:150 ; record ; DEF: 2493 ; REF: 2538 2540 2543* 2549 2551 2557 2557 2558 2566* len_bloc field disp:40, size:10 ; pointer ; DEF: 150 ; REF: 1928* 2024* 3056 3056 3088 3088 len_dest var parameter of prepare_string, size:4 ; scalar ; DEF: 1891 ; REF: 1899 1906 1965 1972 1997 2002 2015 len_place field disp:4, size:4 ; integer ; DEF: 149 ; REF: 1974* 1975 2004* 2006 2024* 3057 3089 3156 3184 len_reg field disp:10, size:4 ; scalar subrange ; DEF: 149 ; REF: 1976* 2005* 2024* 3057 3089 3156 3184 length field disp:74, size:4 ; integer ; DEF: 153 ; REF: 1934* 1986* 1991* 1994 2001 2010 3053 3079 3081 3108 3141 3154 3176 3178 3182 length field disp:24, size:4 ; integer ; DEF: 2046 ; REF: 2063 2065 2105* 2149* 2154* 2264 2283 length_is_known field disp:0, size:4 ; boolean ; DEF: 148 ; REF: 2031* 2033* 2422 2589 2815 3052 3078 3106 3139 3153 3175 length_place field disp:30, size:4 ; integer ; DEF: 2046 ; REF: 2101* 2105* 2139* 2140 2149* 2154* 2261 2265 2280 2284 level var global imported, size:4 ; numeric 0..20 ; DEF: 171 ; REF: 86 1301 levrange type numeric 0..20 ; DEF: 1-418 ; REF: 1-526 1-558 1-573 1-581 1-601 1-636 1-855 171 levtrace type scalar ; DEF: 1-624 ; REF: 202 lfbase var local to genstcomp, loc:144, size:4 ; scalar subrange ; DEF: 1278 ; REF: 1294* 1308* 1368 1376 lfchain var local to genstcomp, loc:146, size:4 ; boolean ; DEF: 1279 ; REF: 1294* 1305* 1333 lfdisp var local to genstcomp, loc:152, size:4 ; integer ; DEF: 1280 ; REF: 1295* 1308* 1368 1376 lflong var local to genstcomp, loc:150, size:4 ; integer ; DEF: 1280 ; REF: 1294* 1309* 1335 1339 1341 1343 1353 1356* 1368 1376 lfmod var local to genstcomp, loc:154, size:4 ; integer ; DEF: 1280 ; REF: 1295* 1309* 1368 1376 lftag var local to genstcomp, loc:160, size:4 ; scalar ; DEF: 1281 ; REF: 1346* 1349* 1368 1376 lgcar type scalar ; DEF: 1-785 ; REF: 226 lgparm const numeric ; DEF: 1-23 ; REF: 1-24 linst var local to gencompare, loc:236, size:4 ; scalar subrange ; DEF: 1494 ; REF: 1503* 1509* 1581 linst var local to genjump, loc:144, size:4 ; scalar subrange ; DEF: 1416 ; REF: 1429* 1430* 1431* 1432* 1433* 1434* 1435* 1436* 1437* 1438* 1446* 1446* 1451* 1454 1458 1462 linst var local to genopmult, loc:154, size:4 ; scalar subrange ; DEF: 1039 ; REF: 1081* 1083* 1154 1155 1176 1177 linst var local to genopsub, loc:144, size:4 ; scalar subrange ; DEF: 492 ; REF: 518* 525* 530* 612 618 645* 647* 654 665 linst var local to genopadd, loc:234, size:4 ; scalar subrange ; DEF: 350 ; REF: 384* 386* 450 linstaq var local to genoppw, loc:151, size:4 ; scalar subrange ; DEF: 1650 ; REF: 1683* 1686* 1689* 1693* 1697* 1700* 1704* 1767 linstq var local to genopsub, loc:145, size:4 ; scalar subrange ; DEF: 492 ; REF: 525* 530* 627 liunresolv type record ; DEF: 1-838 ; REF: 1-825 llcstpt type pointer ; DEF: 1-827 ; REF: 1-846 272 1655 lliunresolv type record ; DEF: 1-843 ; REF: 1-824 llplace field disp:40, size:4 ; integer ; DEF: 1-845 ; REF: 1783* llretpt var local to genoppw, loc:164, size:10 ; pointer ; DEF: 1655 ; REF: 1782* 1783 lneg var local to genopsub, loc:146, size:4 ; scalar subrange ; DEF: 492 ; REF: 518* 525* 619 658 666 lo field disp:224, size:4 ; integer ; DEF: 1-549 ; REF: 1991 2154 load const scalar, ord=0 ; DEF: 1-919 ; REF: 1872 1969 2001 2020 2553 3045 loadadr proc level 0, imported ; DEF: 262 ; REF: 56 1293 1316 1324 1774 1844 1919 1985 2094 2148 2787 loaded_reg var local to gen_insert, loc:246, size:4 ; scalar ; DEF: 2976 ; REF: 2992* 2993* 2995* 3004 3008 3011 3029* 3033* 3038 3045 3049 3053 3057 3059 3061 3063 loaded_reg var local to gen_delete, loc:172, size:4 ; scalar ; DEF: 2734 ; REF: 2753* 2754* 2756* 2765 2769 2772 loaded_reg var local to gen_substring, loc:203, size:4 ; scalar ; DEF: 2501 ; REF: 2515* 2516* 2518* 2527 2531 2534 2547* 2548* 2553 2554 2580* loaded_reg var local to check_dynamic_string_length, loc:142, size:4 ; scalar ; DEF: 1828 ; REF: 1856* 1860* 1865 1872 1876 1879 loc1 var local to gen_insert, loc:247, size:4 ; integer ; DEF: 2976 ; REF: 3007* 3009 3048* 3062 loc1 var local to gen_delete, loc:173, size:4 ; integer ; DEF: 2734 ; REF: 2768* 2770 2804* 2806 2859* 2861 loc1 var local to gen_substring, loc:146, size:4 ; integer ; DEF: 2496 ; REF: 2530* 2532 2572* 2574 2619* 2621 loc1 var local to gen_string_position, loc:252, size:4 ; integer ; DEF: 2413 ; REF: 2431* 2464 loc1 var local to check_dynamic_string_length, loc:200, size:4 ; integer ; DEF: 1829 ; REF: 1875* 1878 loc2 var local to gen_insert, loc:250, size:4 ; integer ; DEF: 2976 ; REF: 3050* 3062 loc2 var local to gen_string_position, loc:253, size:4 ; integer ; DEF: 2413 ; REF: 2460* 2466 loc2 var local to check_dynamic_string_length, loc:201, size:4 ; integer ; DEF: 1829 ; REF: 1877* 1880 loc3 var local to gen_insert, loc:251, size:4 ; integer ; DEF: 2976 ; REF: 3060* 3064 locbox var local to prepare_string, loc:150, size:10 ; pointer ; DEF: 1895 ; REF: 1948* 1951 locinser var local to genjump, loc:145, size:4 ; integer ; DEF: 1417 ; REF: 1441* 1447* 1451* 1461 locskip var local to gendivmod, loc:144, size:4 ; integer ; DEF: 899 ; REF: 965* 971 982* 988 999* 1005 longalfbox const numeric ; DEF: 1-22 ; REF: 1-422 2179 longfill field disp:30, size:4 ; integer ; DEF: 1-423 ; REF: 2179 2185* 2192* 2192 2193 2205 2220* longv field disp:70, size:4 ; integer ; DEF: 1-905 ; REF: 1671 1677 1778 low const scalar, ord=1 ; DEF: 1-624 ; REF: 468 672 779 871 1011 1183 1253 1396 1466 1610 1816 lplace field disp:40, size:4 ; integer ; DEF: 1-840 ; REF: 1224* 1233* 1238* 1240* 1780* lprp const scalar, ord=2 ; DEF: 1-917 ; REF: 197 lretpt var local to genoppw, loc:162, size:10 ; pointer ; DEF: 1654 ; REF: 1779* 1780 lretpt var local to genptcomp, loc:146, size:10 ; pointer ; DEF: 1204 ; REF: 1223* 1224 1232* 1233 1238* 1238 1240* 1240 lshort var local to genoppw, loc:253, size:4 ; boolean ; DEF: 1657 ; REF: 1708* 1723 1734 1736 ltag var local to genoppw, loc:161, size:4 ; scalar ; DEF: 1653 ; REF: 1765* 1767 1772* 1787* ltag var local to gencompare, loc:235, size:4 ; scalar ; DEF: 1493 ; REF: 1578* 1581 1584* 1587 1592* 1595 ltag var local to genopmult, loc:151, size:4 ; scalar ; DEF: 1036 ; REF: 1151* 1154 1173* 1176 ltag var local to gendivmod, loc:151, size:4 ; scalar ; DEF: 902 ; REF: 958* 961 967* 970 975* 978 984* 987 992* 995 1001* 1004 ltag var local to genopdivi, loc:145, size:4 ; scalar ; DEF: 807 ; REF: 851* 854 859* 862 ltag var local to genandor, loc:233, size:4 ; scalar ; DEF: 696 ; REF: 760* 763 768* 771 ltag var local to genopsub, loc:152, size:4 ; scalar ; DEF: 495 ; REF: 609* 612 615* 618 624* 627 641* 654 662* 665 ltag var local to genopadd, loc:233, size:4 ; scalar ; DEF: 349 ; REF: 447* 450 455* 458 ltransf var local to gen_string_comp, loc:145, size:4 ; integer ; DEF: 2346 ; REF: 2377* 2378* 2379* 2380* 2397 ltransf var local to genoppw, loc:160, size:4 ; integer ; DEF: 1652 ; REF: 1694* 1697* 1701* 1705* 1812 ltransf var local to genstcomp, loc:157, size:4 ; integer ; DEF: 1280 ; REF: 1383* 1384* 1385* 1386* 1393 1398 lval const scalar, ord=2 ; DEF: 1-812 ; REF: 1-887 387 392 397 410 421 534 539 560 571 580 585 590 655 715 735 741 837 841 911 917 934 941 956 1084 1119 1126 1229 1511 1518 1533 1541 1545 1550 1556 1672 1678 1713 1736 1738 1747 1940 2111 2114 2482 2517 2524 2556 2755 2762 2792 2799 2994 3001 lvalvarbl proc level 0, imported ; DEF: 287 ; REF: 74 388 535 715 838 912 956 1085 1230 1512 1715 maxdigitsreal const numeric ; DEF: 1-122 ; REF: 1-397 maxerrnum const numeric ; DEF: 1-94 ; REF: 1-95 maxexternname const numeric ; DEF: 1-32 ; REF: 1-400 maxfich const numeric ; DEF: 1-36 ; REF: 1-810 maxfield const numeric ; DEF: 1-39 ; REF: 1-627 1-628 maxident const numeric ; DEF: 1-26 ; REF: 1-399 maxint const numeric ; DEF: 1-84 ; REF: 316 316 402 403 528 549 573 575 829 830 1102 1103 maxl_attr var local to gen_insert, loc:146, size:150 ; record ; DEF: 2972 ; REF: 3037* 3039* 3041* 3042* maxlevel const numeric ; DEF: 1-18 ; REF: 1-418 maxno const numeric ; DEF: 1-13 ; REF: 1-434 1-621 maxprused var global imported, size:4 ; scalar subrange ; DEF: 195 ; REF: 108 1306 maxref const numeric ; DEF: 1-38 ; REF: 1-429 maxsliceline const numeric ; DEF: 1-101 ; REF: 1-102 maxwseg const numeric ; DEF: 1-73 ; REF: 1-973 mfari field disp:24, size:4 ; scalar ; DEF: 150 ; REF: 1929* 1979* 2008* 2021* 2370 2370 2454 2454 mfari1 var global imported, size:4 ; scalar ; DEF: 183 ; REF: 99 1346* 1349* 1788* 1796* 2266* 2285* 2370* 2454* 2675* 2678* 2948* 3164* 3170* 3179* mfari2 var global imported, size:4 ; scalar ; DEF: 184 ; REF: 100 1346* 1349* 1788* 1796* 2266* 2285* 2370* 2454* 2675* 2678* 2948* 3164* 3170* 3179* minno const numeric ; DEF: 1-12 ; REF: 1-434 1-621 modif var global imported, size:60 ; array of (scalar) ; DEF: 194 ; REF: 109 1979 2008 2021 monormod const scalar, ord=7 ; DEF: 1-412 ; REF: 1-557 motypes type scalar ; DEF: 1-459 ; REF: 1-557 mpcogout var global imported ; text ; DEF: 172 ; REF: 88 355 470 501 674 703 781 812 873 907 1013 1045 1185 1209 1255 1286 1398 1422 1468 1499 1612 1662 1720 1722 1818 mreg type scalar subrange ; DEF: 1-778 ; REF: 227 229 name_token const scalar, ord=1 ; DEF: 1-491 ; REF: 1-496 nameaddr field disp:110, size:10 ; pointer ; DEF: 1-879 ; REF: 449 457 611 617 626 653 664 762 770 853 861 960 969 977 986 994 1003 1153 1175 1362 1366 1374 1378 1580 1586 1594 1766 1790 1962 2132 2270 2288 2802 2834 2843 nameisref proc level 0, imported ; DEF: 246 ; REF: 33 2802 2834 2843 nbshif var local to genopmult, loc:150, size:4 ; integer ; DEF: 1035 ; REF: 1132* 1135* 1166 1169 newbloc proc level 0, imported ; DEF: 263 ; REF: 57 2483 nextalf var global imported, size:10 ; pointer ; DEF: 163 ; REF: 79 2231 2235* nextline proc level 0, imported ; DEF: 247 ; REF: 34 355 470 501 674 703 781 812 873 907 1013 1045 1185 1209 1256 1286 1398 1422 1468 1499 1614 1662 1720 1724 1818 nextval field disp:0, size:10 ; pointer ; DEF: 1-421 ; REF: 2181* 2181 2182 2186* 2206 2219* nilanaq var global imported, size:40 ; array of (integer) ; DEF: 198 ; REF: 110 1240* nileraq var global imported, size:40 ; array of (integer) ; DEF: 199 ; REF: 111 1238* nilptr var global imported, size:10 ; pointer ; DEF: 173 ; REF: 89 1213 1216 node type record ; DEF: 1-466 ; REF: 1-464 nodelistelem type record ; DEF: 1-473 ; REF: 1-471 nodelistptr type pointer ; DEF: 1-471 ; REF: 1-474 nodeptr type pointer ; DEF: 1-464 ; REF: 1-475 1-584 none const scalar, ord=0 ; DEF: 1-624 ; REF: 353 499 701 810 905 1043 1207 1284 1420 1497 1660 nreg const scalar, ord=0 ; DEF: 1-774 ; REF: 1-777 619 658 666 964 966 981 983 998 1000 1166 1169 1225 1234 1239 1241 1293 1353 1354 1458 1462 1785 1844 1875 1877 1919 1952 1971 1985 2094 2121 2138 2148 2430 2431 2433 2451 2453 2460 2463 2465 2485 2527 2530 2561 2562 2572 2619 2765 2768 2777 2787 2804 2859 3004 3007 3048 3050 3060 numeric const scalar, ord=1 ; DEF: 1-412 ; REF: 1-535 nxreg const scalar, ord=10 ; DEF: 1-775 ; REF: 194 nxtel field disp:40, size:10 ; pointer ; DEF: 1-509 ; REF: 2315* 2324* 2704* 2713* objaccessibles type scalar ; DEF: 1-460 ; REF: 1-461 oldnewstor funct level 0, imported ; integer ; DEF: 264 ; REF: 58 1941 1974 2004 2075 2112 2139 2247 2416 2526 2552 2578 2764 2793 3003 op var parameter of int_op, size:4 ; integer ; DEF: 298 ; REF: 318 opaq var global imported, size:160 ; array of (array of (scalar subrange)) ; DEF: 196 ; REF: 112 1872 1876 1944 1969 1970 1971 1975 2001 2006 2020 2117 2527 2534 2553 2554 2765 2772 2795 3004 3011 3045 3049 3053 3057 3059 out const scalar, ord=5 ; DEF: 1-814 ; REF: 1899 1965 1972 1997 2002 2015 3016 3018 p0t0r0 const scalar, ord=0 ; DEF: 1-791 ; REF: 1358 1789 1797 2268 2286 2371 2455 2682 2950 3166 3185 pagesinsegment const numeric ; DEF: 1-69 ; REF: 1-70 pckd field disp:100, size:4 ; boolean ; DEF: 1-878 ; REF: 1300* 1711 1938 2109 pointee const scalar, ord=1 ; DEF: 1-813 ; REF: 1298 1848 pointer const scalar, ord=3 ; DEF: 1-412 ; REF: 1-541 power const scalar, ord=4 ; DEF: 1-412 ; REF: 1-543 poweroftwo funct level 0, imported ; integer ; DEF: 248 ; REF: 35 1059 1071 pr1 const scalar, ord=1 ; DEF: 1-774 ; REF: 197 pr3 const scalar, ord=5 ; DEF: 1-774 ; REF: 1316 1317 1324 1325 1774 1774 1785 2256 2257 2257 2272 2276 2290 2296 pr6 const scalar, ord=9 ; DEF: 1-774 ; REF: 1-777 197 462 463 635 636 638 639 773 774 1226 1235 1589 1590 1792 1795 1798 1799 1942 1944 1975 1976 2005 2006 2066 2078 2081 2113 2117 2122 2140 2248 2252 2254 2265 2284 2300 2302 2419 2428 2432 2436 2462 2534 2554 2577 2579 2606 2612 2618 2639 2650 2659 2670 2671 2772 2793 2856 2899 2911 3011 3076 3122 3134 preg type scalar subrange ; DEF: 1-777 ; REF: 1-856 1-880 149 151 192 195 224 226 228 262 267 347 493 695 806 901 1037 1278 1491 1651 1829 2044 2053 2500 2504 2736 2738 2978 prepare proc of genconcat ; DEF: 2056 ; REF: 2241 2242 prepare_string proc level 0 ; DEF: 1891 ; REF: 2353 2354 2357 2358 2417 2420 2582 2810 3016 3018 prinst var global imported, size:154 ; array of (array of (scalar subrange)) ; DEF: 197 ; REF: 113 1952 2257 2296 2300 2302 2440 2643 2670 2904 2941 3127 3161 printattr proc level 0, imported ; DEF: 284 ; REF: 75 1721 1721 prlink const scalar, ord=8 ; DEF: 1-774 ; REF: 2436 2639 2899 3122 proc const scalar, ord=3 ; DEF: 1-415 ; REF: 1-571 procblock const scalar, ord=0 ; DEF: 1-938 ; REF: 1-945 proclocation type scalar ; DEF: 1-439 ; REF: 1-577 profarea type array of (integer) ; DEF: 1-934 ; REF: 1-933 prstatic const scalar, ord=7 ; DEF: 1-774 ; REF: 2436 2639 2899 3122 psr const scalar, ord=24 ; DEF: 1-776 ; REF: 1672 1678 psrdepw const numeric ; DEF: 1-283 ; REF: 1792 1799 psrsize var global imported, size:4 ; integer ; DEF: 200 ; REF: 114 1769* 1794* ptexternalitem type pointer ; DEF: 1-444 ; REF: 1-448 1-578 1-607 ra const scalar, ord=20 ; DEF: 1-776 ; REF: 196 411 582 647 736 742 747 936 955 991 1115 1123 1172 1546 1860 1905 1906 2120 2243 2516 2558 2599 2604 2620 2754 2805 2817 2860 2993 3033 raisused funct level 0, imported ; boolean ; DEF: 273 ; REF: 60 1854 1900 2514 2546 2752 2991 3027 rcstpt type pointer ; DEF: 1-825 ; REF: 1-836 real_const_token const scalar, ord=4 ; DEF: 1-491 ; REF: 1-498 realptr var global imported, size:10 ; pointer ; DEF: 174 ; REF: 90 360 369 378 380 382 400 452 453 460 508 516 519 521 543 621 622 630 1052 1064 1075 1077 1079 1086 1159 1160 1162 1502 1504 1506 1519 1526 reaq const scalar, ord=23 ; DEF: 1-776 ; REF: 196 422 581 1558 records const scalar, ord=6 ; DEF: 1-412 ; REF: 1-554 2305 2694 reel const scalar, ord=0 ; DEF: 1-412 ; REF: 1-534 reflist type record ; DEF: 1-426 ; REF: 1-425 refptr type pointer ; DEF: 1-425 ; REF: 1-427 1-512 1-649 reg_bloc field disp:30, size:10 ; pointer ; DEF: 150 ; REF: 1929* 1967* 1999* 2018* 2362 2362 2367 2367 2385 2385* 2390 2390* 2447 2447 2470 2470* 2475 2475* 2585 2585* 2813 2813* regbox type record ; DEF: 1-817 ; REF: 1-816 regenere proc level 0, imported ; DEF: 265 ; REF: 59 1307 1873 1943 1964 2019 2116 2134 2162 2260 2267 2279 2362 2363 2367 2368 2439 2447 2448 2518 2557 2642 2652 2680 2681 2756 2794 2832 2841 2846 2903 2912 2933 2940 2949 2949 2995 3046 3056 3082 3088 3090 3126 3135 3160 3165 3165 3174 register type scalar ; DEF: 1-774 ; REF: 1-777 1-819 1-862 1-889 1-920 194 196 197 260 263 269 1828 1894 2501 2734 2976 register field disp:50, size:4 ; scalar subrange ; DEF: 151 ; REF: 1915* 1920* 1942* 1949* 1952 1963* 1985* 2020 2024 2373 2375 2436 2440 2441* 2457 2459 2461 2633 2639 2643 2647 2847 2880 2899 2904 2907 3047 3049 3059 3070 3083 3091 3104 3122 3127 3130 3186 register field disp:0, size:4 ; scalar subrange ; DEF: 2044 ; REF: 2090* 2095* 2113* 2133* 2148* 2164 2263 2271 2282 2289 regpt type pointer ; DEF: 1-816 ; REF: 1-821 1-822 1-858 1-867 1-881 1-890 1-910 150 152 191 259 265 1830 2045 2053 2500 2504 2735 2738 2978 remaining_length var local to gen_delete, loc:201, size:4 ; integer ; DEF: 2737 ; REF: 2809* 2824* 2825 2826* 2850 2866 2867 result_bloc var local to gen_substring, loc:200, size:10 ; pointer ; DEF: 2500 ; REF: 2659* 2669* 2681 2681 2693 result_place var local to gen_substring, loc:202, size:4 ; integer ; DEF: 2500 ; REF: 2507* 2552* 2554 2568 2669* 2684 2693 result_place var local to genconcat, loc:146, size:4 ; integer ; DEF: 2051 ; REF: 2247* 2248 2300 result_pointer var local to gen_substring, loc:176, size:4 ; scalar subrange ; DEF: 2500 ; REF: 2659* 2669* 2670 2684 2693 retplace var local to gen_string_position, loc:255, size:4 ; integer ; DEF: 2413 ; REF: 2452* 2463 rev var local to genopsub, loc:153, size:4 ; boolean ; DEF: 496 ; REF: 530* 531* 632 revbolr var local to genoppw, loc:150, size:4 ; integer ; DEF: 1649 ; REF: 1683* 1686* 1689* 1693* 1697* 1700* 1704* 1760 revcltransf var global imported, size:30 ; array of (integer) ; DEF: 201 ; REF: 115 1249 1607 rgbase var local to genstcomp, loc:145, size:4 ; scalar subrange ; DEF: 1278 ; REF: 1317* 1325* 1328* 1364 1380 rgchain var local to genstcomp, loc:147, size:4 ; boolean ; DEF: 1279 ; REF: 1317* 1321* 1337 rgdisp var local to genstcomp, loc:153, size:4 ; integer ; DEF: 1280 ; REF: 1317* 1325* 1328* 1364 1380 rglong var local to genstcomp, loc:151, size:4 ; integer ; DEF: 1280 ; REF: 1317* 1321* 1335 1339 1341 1343 1354 1356* 1364 1380 rgmod var local to genstcomp, loc:155, size:4 ; integer ; DEF: 1280 ; REF: 1318* 1325* 1329* 1364 1380 rgtag var local to genstcomp, loc:161, size:4 ; scalar ; DEF: 1281 ; REF: 1346* 1349* 1364 1380 rq const scalar, ord=21 ; DEF: 1-776 ; REF: 194 393 397 417 587 645 661 941 1126 1518 1534 1542 1552 1856 1857 1865 1902 1903 1907 2135 2163 2243 2424 2482 2483 2515 2515 2542 2547 2547 2548 2560 2573 2580 2753 2753 2992 2992 3029 3030 3038 rqisused funct level 0, imported ; boolean ; DEF: 274 ; REF: 61 644 1092 1113 rshort var local to genoppw, loc:252, size:4 ; boolean ; DEF: 1657 ; REF: 1709* 1712* 1723 1734 1739 1747 rsval field disp:20, size:10 ; real ; DEF: 1-903 ; REF: 362 371 402 403 404 460* 460 460 510 566 573 574 575 631* 631 631 817 819 824 828 829 829 830 842 868* 868 868 1054 1055 1066 1067 1101 1102 1103 1163* 1163 1163 1520 1528 1560 runresolv type record ; DEF: 1-833 ; REF: 1-825 sauvereg proc level 0, imported ; DEF: 269 ; REF: 62 649 661 955 991 1172 1857 1902 1967 1999 2018 2120 2135 2163 2243 2243 2424 2450 2515 2542 2547 2560 2599 2604 2753 2817 2992 3030 saveplace field disp:4, size:4 ; integer ; DEF: 1-820 ; REF: 1714 scalar const scalar, ord=2 ; DEF: 1-412 ; REF: 1-536 schema const scalar, ord=0 ; DEF: 1-415 ; REF: 1-516 schema_token type record ; DEF: 1-492 ; REF: 1-484 schema_token_kind type scalar ; DEF: 1-491 ; REF: 1-494 setarray type array of (integer) ; DEF: 1-815 ; REF: 1-839 1-844 1-904 199 206 271 272 setlength field disp:220, size:4 ; integer ; DEF: 1-545 ; REF: 1666 1667 setrange const numeric ; DEF: 1-92 ; REF: 1-93 1-94 shrtint type numeric -131072..131071 ; DEF: 1-619 ; REF: 1-671 size field disp:114, size:4 ; integer ; DEF: 1-524 ; REF: 1309 1321 stack_extension proc level 0, imported ; DEF: 257 ; REF: 63 2253 2576 stattrace var global imported, size:4 ; scalar ; DEF: 202 ; REF: 116 353 468 499 672 701 779 810 871 905 1011 1043 1183 1207 1253 1284 1396 1420 1466 1497 1610 1660 1718 1816 stdextend const scalar, ord=3 ; DEF: 1-435 ; REF: 1342 stdkind type scalar ; DEF: 1-435 ; REF: 169 stor const scalar, ord=6 ; DEF: 1-919 ; REF: 1944 1975 2006 2117 2534 2554 2772 2795 3011 string_attr var var parameter of gen_insert, size:150 ; record ; DEF: 2964 ; REF: 3016* 3022 3023 3025 3194* string_attr var var parameter of gen_delete, size:150 ; record ; DEF: 2724 ; REF: 2810* 2956* string_attr var var parameter of gen_substring, size:150 ; record ; DEF: 2493 ; REF: 2582* 2686* string_attr var local to check_dynamic_string_length, loc:144, size:150 ; record ; DEF: 1829 ; REF: 1864* 1866* 1868* 1869* string_base var local to check_dynamic_string_length, loc:176, size:4 ; scalar subrange ; DEF: 1829 ; REF: 1842* 1845* 1874 1876 string_bloc var local to check_dynamic_string_length, loc:202, size:10 ; pointer ; DEF: 1830 ; REF: 1834* 1841* 1873 1873 string_disp var local to check_dynamic_string_length, loc:177, size:4 ; integer ; DEF: 1829 ; REF: 1842* 1845* 1874 1876 string_info var local to gen_insert, loc:200, size:110 ; record ; DEF: 2973 ; REF: 3016* 3022 3046 3046 3047 3047 3049 3049 3059 3059 3067 3070 3070 3082 3082 3083 3083 3090 3090 3091 3091 3099 3099 3104 3104 3121 3121 3122 3126 3126 3127 3130 3130 3152 3152 3189 3189* string_info var local to gen_delete, loc:146, size:110 ; record ; DEF: 2732 ; REF: 2810* 2811 2813 2813* 2815 2820 2824 2828 2831 2846 2846 2847 2847 2849* 2866* 2875 2875 2880 2880 2898 2898 2899 2903 2903 2904 2907 2907 2929 2929 2951 2952 2953 2953* string_info var local to gen_substring, loc:152, size:110 ; record ; DEF: 2498 ; REF: 2582* 2583 2585 2585* 2589 2593 2600 2605 2628 2628 2633 2633 2639 2642 2642 2643 2647 2647 2654 2654 2656* 2656* 2662* 2662* 2673 2683 2683 2684 2684 2685 2685* string_item_info type record ; DEF: 147 ; REF: 1891 2347 2411 2412 2498 2732 2973 2974 string_ptr var global imported, size:10 ; pointer ; DEF: 175 ; REF: 91 1836 2012 2159 2262 2281 2308 2697 stringlength_range_error const numeric ; DEF: 1-259 ; REF: 1879 3063 sttmap type array of (record) ; DEF: 1-925 ; REF: 1-924 sub const scalar, ord=1 ; DEF: 1-919 ; REF: 1970 2527 2765 3004 3053 3057 substring_negative_length_error const numeric ; DEF: 1-262 ; REF: 2573 substring_offset_error const numeric ; DEF: 1-261 ; REF: 2531 substring_too_long_error const numeric ; DEF: 1-263 ; REF: 2620 succ field disp:120, size:10 ; pointer ; DEF: 1-565 ; REF: 2231* sup funct level 0, imported ; integer ; DEF: 249 ; REF: 36 1341 suplr var local to genstcomp, loc:156, size:4 ; integer ; DEF: 1280 ; REF: 1341* 1344 1350 sval const scalar, ord=4 ; DEF: 1-812 ; REF: 1-900 359 368 395 398 414 506 526 541 543 547 561 567 572 584 589 717 724 815 822 842 918 924 924 937 1049 1061 1097 1100 1106 1122 1443 1519 1526 1549 1555 1559 1671 1677 1734 1776 1947 2111 2199 2213 2214 2520 2545 2758 2790 2997 symbol_token const scalar, ord=0 ; DEF: 1-491 ; REF: 1-495 symbolfile var global imported, size:4 ; integer ; DEF: 176 ; REF: 92 2802 2834 2843 symbolline var global imported, size:4 ; integer ; DEF: 176 ; REF: 93 2802 2834 2843 symbolmap var global imported, size:4 ; boolean ; DEF: 177 ; REF: 94 2802 2834 2843 tag type scalar ; DEF: 1-766 ; REF: 1-778 150 194 224 268 349 495 696 807 902 1036 1281 1493 1653 2741 2981 tagfield const scalar, ord=6 ; DEF: 1-415 ; REF: 1-610 tal const scalar, ord=5 ; DEF: 1-766 ; REF: 2418 2427 2656 2849 3167 3168 3173 target_bloc var local to genconcat, loc:176, size:10 ; pointer ; DEF: 2053 ; REF: 2295* 2304 target_pointer var local to genconcat, loc:174, size:4 ; scalar subrange ; DEF: 2053 ; REF: 2295* 2296 2300 2302 2304 tattr var local to genoppw, loc:166, size:150 ; record ; DEF: 1656 ; REF: 1756* 1759* 1764* 1769* 1794* 1804 1807* tattr var local to gencompare, loc:146, size:150 ; record ; DEF: 1490 ; REF: 1566* 1569* 1577* 1583* 1592* 1593 1594 1594 1597* 1598* 1600* tattr var local to genopmult, loc:156, size:150 ; record ; DEF: 1040 ; REF: 1132* 1135* 1141* 1150* 1160 1160* 1163* 1163 1164* 1164 1165* 1168* 1171* 1181 tattr var local to genandor, loc:200, size:150 ; record ; DEF: 694 ; REF: 753* 756* 759* 767* 777 tattr var local to genopadd, loc:144, size:150 ; record ; DEF: 344 ; REF: 428* 431* 437* 446* 453 453* 454* 460* 460 461* 461 466 tattsize var local to genoppw, loc:156, size:4 ; integer ; DEF: 1652 ; REF: 1756* 1759* tdl const scalar, ord=7 ; DEF: 1-766 ; REF: 1971 2121 2138 2430 2433 2453 2465 2485 2527 2562 2765 3004 tdu const scalar, ord=3 ; DEF: 1-766 ; REF: 2451 temp_place var local to gen_string_position, loc:254, size:4 ; integer ; DEF: 2413 ; REF: 2416* 2419 2428 2432 2462 temporary field disp:144, size:4 ; boolean ; DEF: 1-883 ; REF: 2303* 2692* tic const scalar, ord=4 ; DEF: 1-766 ; REF: 966 983 1000 1225 1234 1239 1241 1458 1462 1785 1875 1877 1952 2431 2460 2463 2530 2572 2619 2768 2804 2859 3007 3048 3050 3060 tn const scalar, ord=0 ; DEF: 1-766 ; REF: 1-778 462 463 619 635 636 638 639 658 666 773 774 964 981 998 1166 1169 1226 1235 1346 1346 1353 1354 1589 1590 1791 1792 1795 1798 1799 1874 1876 1929 1944 1969 1970 1975 2006 2020 2066 2078 2081 2117 2122 2136 2137 2140 2164 2248 2252 2256 2257 2263 2265 2282 2284 2296 2300 2419 2428 2432 2440 2462 2534 2554 2561 2579 2606 2612 2618 2643 2650 2662 2671 2673 2772 2795 2803 2835 2844 2847 2856 2866 2904 2911 2934 2941 3011 3047 3049 3057 3059 3070 3076 3083 3089 3091 3127 3134 3156 3161 3178 3184 tny const scalar, ord=16 ; DEF: 1-768 ; REF: 2254 2302 2577 2670 to_bdisp var local to gen_insert, loc:272, size:4 ; integer ; DEF: 2982 ; REF: 3110* 3143* 3152* 3168 to_bdisp var local to gen_delete, loc:222, size:4 ; integer ; DEF: 2742 ; REF: 2877* 2898* 2918 2952 to_bloc var local to gen_insert, loc:260, size:10 ; pointer ; DEF: 2978 ; REF: 3094* 3113* 3146* 3158* 3160 3160 3165 3165 3169* to_bloc var local to gen_delete, loc:210, size:10 ; pointer ; DEF: 2738 ; REF: 2870* 2880* 2889 2901* 2907* 2912 2912 2923 2949 2949 2955* to_bloc_is_new var local to gen_insert, loc:265, size:4 ; boolean ; DEF: 2980 ; REF: 3096* 3159* 3169 to_bloc_is_new var local to gen_delete, loc:215, size:4 ; boolean ; DEF: 2740 ; REF: 2872* 2902* 2955 to_find_info var local to gen_string_position, loc:142, size:110 ; record ; DEF: 2411 ; REF: 2417* 2418 2427 2430 2445 2447 2447 2448 2448 2454 2454 2457 2457 2458 2459 2459 2459 2459 2459 2472 2474 2474* 2475 2475* to_offset_in_desc var local to gen_insert, loc:263, size:4 ; boolean ; DEF: 2979 ; REF: 3095* 3114* 3138 3147* 3150 to_offset_in_desc var local to gen_delete, loc:213, size:4 ; boolean ; DEF: 2739 ; REF: 2871* 2881* 2896 to_reg var local to gen_insert, loc:254, size:4 ; scalar subrange ; DEF: 2978 ; REF: 3113* 3146* 3158* 3161 3162 3168 to_reg var local to gen_delete, loc:204, size:4 ; scalar subrange ; DEF: 2738 ; REF: 2880* 2889 2901* 2904 2907* 2913 2923 2941 2952 to_scan_info var local to gen_string_position, loc:164, size:110 ; record ; DEF: 2411 ; REF: 2420* 2421 2422 2425 2434 2436 2439 2439 2440 2440 2441* 2441* 2441* 2442* 2456 2457 2457 2457 2461 2467 2469 2469* 2470 2470* to_wdisp var local to gen_insert, loc:271, size:4 ; integer ; DEF: 2982 ; REF: 3109* 3111 3142* 3144 3152* 3168 to_wdisp var local to gen_delete, loc:221, size:4 ; integer ; DEF: 2742 ; REF: 2876* 2878 2898* 2918 2952 total_length var local to gen_substring, loc:174, size:4 ; integer ; DEF: 2499 ; REF: 2507* 2550* 2551* 2552 2553 2591 2593 2615 2616 2657 2660 2662 2665 2698 2703 total_length var local to genconcat, loc:200, size:4 ; integer ; DEF: 2054 ; REF: 2062* 2062 2076 2077 2178* 2178 2223* 2233 2240* 2246 2247 2314 total_place var local to gen_substring, loc:175, size:4 ; integer ; DEF: 2499 ; REF: 2578* 2579 2618 2671 2712 total_place var local to genconcat, loc:201, size:4 ; integer ; DEF: 2054 ; REF: 2061 2066 2073 2075* 2078 2081 2240* 2244 2252 2299 2309 2323 tql const scalar, ord=6 ; DEF: 1-766 ; REF: 2271 2272 2276 2289 2290 2653 2913 2942 3136 3162 transf field disp:34, size:4 ; integer ; DEF: 1-912 ; REF: 1248* 1249* 1255 1393* 1428 1606* 1607* 1613 1812* 2397* transfer proc level 0, imported ; DEF: 258 ; REF: 64 446 454 608 614 623 657 660 759 767 850 858 954 957 974 974 991 991 1150 1165 1168 1171 1214 1217 1222 1231 1450 1577 1583 1597 1598 1764 1769 1794 1866 1868 2515 2516 2543 2753 2754 2992 2993 3039 3041 twoto10 const numeric ; DEF: 1-50 ; REF: 1-51 1-68 twoto12 const numeric ; DEF: 1-51 ; REF: 1344 1994 2660 3176 twoto14 const numeric ; DEF: 1-52 ; REF: 1-53 twoto15 const numeric ; DEF: 1-53 ; REF: 1-54 1-72 twoto16 const numeric ; DEF: 1-54 ; REF: 1-55 twoto17 const numeric ; DEF: 1-55 ; REF: 1-56 1-57 1-90 1-619 2631 2878 2887 2921 3102 3111 3144 twoto17m1 const numeric ; DEF: 1-56 ; REF: 1-619 1350 twoto18 const numeric ; DEF: 1-57 ; REF: 1-58 1-59 1-71 twoto4 const numeric ; DEF: 1-45 ; REF: 1-46 twoto6 const numeric ; DEF: 1-46 ; REF: 1-47 1-52 twoto8 const numeric ; DEF: 1-47 ; REF: 1-48 1-49 1-52 1-69 1-89 1-620 twoto8m1 const numeric ; DEF: 1-48 ; REF: 1-620 twoto9 const numeric ; DEF: 1-49 ; REF: 1-50 1-59 1-91 tx6 const scalar, ord=14 ; DEF: 1-767 ; REF: 1349 tx7 const scalar, ord=15 ; DEF: 1-767 ; REF: 1-778 1349 2461 typeofop type scalar ; DEF: 1-919 ; REF: 196 typepr type scalar ; DEF: 1-917 ; REF: 197 types const scalar, ord=1 ; DEF: 1-415 ; REF: 1-523 typform type scalar ; DEF: 1-412 ; REF: 1-533 236 typseq var local to genoppw, loc:146, size:4 ; integer ; DEF: 1648 ; REF: 1665* 1729* 1734* 1735* 1738* 1739* 1741* 1743* 1747* 1749* 1754 1762 1818 typseq var local to gencompare, loc:234, size:4 ; integer ; DEF: 1492 ; REF: 1513* 1517* 1518* 1518* 1520* 1520* 1523* 1523* 1528* 1528* 1532* 1534* 1536* 1539* 1542* 1548* 1548* 1549* 1549* 1550* 1554* 1554* 1555* 1555* 1556* 1558* 1560* 1564 1571 1605 1612 typseq var local to genptcomp, loc:144, size:4 ; integer ; DEF: 1203 ; REF: 1212* 1214* 1217* 1219 1236* 1247 typseq var local to genopmult, loc:144, size:4 ; integer ; DEF: 1035 ; REF: 1048* 1054* 1055* 1057* 1058* 1066* 1067* 1069* 1070* 1073 1092* 1092* 1094* 1096* 1099* 1103* 1108* 1113* 1113* 1115* 1115* 1117* 1119* 1121* 1121* 1123* 1123* 1125* 1126* 1126* 1130 1138 1144 1185 typseq var local to gendivmod, loc:145, size:4 ; integer ; DEF: 899 ; REF: 916* 916* 917* 919* 920* 921* 922* 922* 926* 927* 927* 928* 929* 929* 930* 932* 932* 933* 935* 936* 936* 938* 938* 939* 940* 940* 941* 941* 944 1013 typseq var local to genopdivi, loc:142, size:4 ; integer ; DEF: 805 ; REF: 818* 820* 825* 827* 830* 833* 840* 841* 843* 844* 847 873 typseq var local to genandor, loc:144, size:4 ; integer ; DEF: 693 ; REF: 720* 722* 727* 728* 734* 737* 740* 743* 748* 748* 750* 750* 751 758 781 typseq var local to genopsub, loc:150, size:4 ; integer ; DEF: 494 ; REF: 504* 510* 512* 514 539* 540* 540* 541* 549* 553* 553* 555* 559* 559* 560* 561* 567* 567* 570* 570* 571* 572* 575* 581* 583* 583* 584* 585* 588* 588* 589* 590* 596 602 669 674 typseq var local to genopadd, loc:230, size:4 ; integer ; DEF: 346 ; REF: 358* 362* 365* 371* 374* 376 391* 393* 396* 397* 397* 399* 405* 407* 412* 412* 415* 416* 419* 419* 421* 421* 422* 426 434 440 470 typtr field disp:0, size:10 ; pointer ; DEF: 1-851 ; REF: 360 369 380 382 437* 453 508 519 521 599* 622 1052 1064 1077 1079 1141* 1160 1213 1216 1309 1321 1504 1506 1666 1667 1835 1836 1837 1852 1932 1959 1991 1991 2012 2103 2130 2154 2154 2159 2227* 2262 2281 2305* 2306 2482* 2694* 2695 3023 3025 usednameaddr var global imported, size:10 ; pointer ; DEF: 185 ; REF: 101 449* 457* 611* 617* 626* 653* 664* 762* 770* 853* 861* 960* 969* 977* 986* 994* 1003* 1153* 1175* 1362* 1363* 1366* 1367* 1374* 1375* 1378* 1379* 1580* 1586* 1594* 1766* 1790* 2269* 2270* 2287* 2288* usednamesarray type packed array of (pointer) ; DEF: 1-973 ; REF: 1-974 1-974 vaddr field disp:140, size:4 ; integer ; DEF: 1-599 ; REF: 2323* 2712* val field disp:14, size:4 ; integer ; DEF: 1-902 ; REF: 365 374 461* 461 461 512 528 528 530* 530 545 549 633* 633 633 634* 634 634 719 726 919 921 922 926 927 928 929 930 938 939 940 949* 949 949 950* 950 950 1057 1058 1059 1069 1070 1071 1164* 1164 1164 1445 1523 1531 1549 1555 1948 2121 2199 2520 2522 2549 2551 2758 2760 2790 2791 2997 2999 valpw field disp:30, size:40 ; array of (integer) ; DEF: 1-904 ; REF: 1779* 1782* values field disp:144, size:4 ; integer ; DEF: 1-567 ; REF: 1872 2314* 2703* 3045 vararea type scalar ; DEF: 1-939 ; REF: 1-953 varbl const scalar, ord=0 ; DEF: 1-812 ; REF: 1-854 391 396 411 418 449 457 538 540 551 559 570 583 588 611 617 626 653 664 730 748 750 762 770 840 853 861 915 916 931 935 960 969 977 986 994 1003 1089 1112 1121 1153 1175 1298 1362 1366 1374 1378 1516 1517 1537 1548 1554 1580 1586 1594 1670 1676 1710 1734 1742 1766 1770 1790 1936 1989 2107 2152 2269 2287 2514 2524 2541 2752 2762 2782 2799 2801 2833 2842 2991 3001 varissimple funct level 0, imported ; boolean ; DEF: 289 ; REF: 76 1322 1711 1743 1771 1839 1913 2088 2782 vars const scalar, ord=4 ; DEF: 1-415 ; REF: 1-596 vlev field disp:14, size:4 ; numeric 0..20 ; DEF: 1-855 ; REF: 1301* vtype field disp:120, size:10 ; pointer ; DEF: 1-596 ; REF: 2322* 2711* vwith const scalar, ord=2 ; DEF: 1-622 ; REF: 1-637 wcstpt type pointer ; DEF: 1-824 ; REF: 1-831 270 1895 wdisp field disp:100, size:4 ; integer ; DEF: 154 ; REF: 1916* 1921* 1941* 1944 1953* 1963* 1986* 2020 2024 2026* 2026 2373 2375 2440 2442* 2457 2459 2628 2654 2847 2875 2898 2929 3047 3049 3059 3070 3083 3091 3099 3121 3152 3186 wdisp field disp:34, size:4 ; integer ; DEF: 2047 ; REF: 2091* 2096* 2112* 2117 2122 2133* 2149* 2164 2165* 2165 2263 2271 2282 2289 where type scalar ; DEF: 1-622 ; REF: 1-634 withblock const scalar, ord=1 ; DEF: 1-938 ; REF: 1-952 withreflist type record ; DEF: 1-626 ; REF: 1-636 1-637 wordconst const scalar, ord=0 ; DEF: 1-416 ; REF: 1-567 2311 2700 wordsforset const numeric ; DEF: 1-109 ; REF: 1-110 1-111 1-112 wordsinpage const numeric ; DEF: 1-68 ; REF: 1-70 wordsinsegment const numeric ; DEF: 1-70 ; REF: 1-73 x7 const scalar, ord=18 ; DEF: 1-775 ; REF: 2450 zari type scalar ; DEF: 1-799 ; REF: 150 183 184 zptr type scalar ; DEF: 1-791 ; REF: 225 NAMES DECLARED AND NEVER REFERENCED a0b0c0 const scalar, ord=0 ; DEF: 1-795 a0b0c1 const scalar, ord=1 ; DEF: 1-795 a0b1c0 const scalar, ord=4 ; DEF: 1-795 a0b1c1 const scalar, ord=5 ; DEF: 1-795 a0r0i0 const scalar, ord=0 ; DEF: 1-799 a0r0i1 const scalar, ord=1 ; DEF: 1-799 a0r1i0 const scalar, ord=2 ; DEF: 1-799 a0r1i1 const scalar, ord=3 ; DEF: 1-799 a1b0c0 const scalar, ord=2 ; DEF: 1-795 a1b0c1 const scalar, ord=3 ; DEF: 1-795 a1b1c0 const scalar, ord=6 ; DEF: 1-795 a1b1c1 const scalar, ord=7 ; DEF: 1-795 a1r0i1 const scalar, ord=5 ; DEF: 1-799 a1r1i1 const scalar, ord=7 ; DEF: 1-799 absl * const numeric ; DEF: 1-334 activated field disp:54, size:4 ; boolean ; DEF: 1-967 active field disp:50, size:4 ; boolean ; DEF: 1-967 actual const scalar, ord=0 ; DEF: 1-406 adlx const scalar, ord=0 ; DEF: 1-918 adx const scalar, ord=1 ; DEF: 1-918 aeltype field disp:200, size:10 ; pointer ; DEF: 1-546 alfa * type packed array of (char) ; DEF: 1-398 alfalevel field disp:164, size:4 ; integer ; DEF: 1-570 alfathread field disp:50, size:10 ; pointer ; DEF: 1-510 argcextplace * const numeric ; DEF: 1-205 argcplace * const numeric ; DEF: 1-204 argcshortplace * const numeric ; DEF: 1-203 argptw * const numeric ; DEF: 1-280 argvextplace * const numeric ; DEF: 1-208 argvplace * const numeric ; DEF: 1-207 argvshortplace * const numeric ; DEF: 1-206 arraybound const scalar, ord=2 ; DEF: 1-406 askforexclusionplace * const numeric ; DEF: 1-363 asserrcode * const numeric ; DEF: 1-250 bad_date_time_parameter * const numeric ; DEF: 1-269 bad_string_index * const numeric ; DEF: 1-268 baseprocessdplmt * const numeric ; DEF: 1-345 begsy const scalar, ord=1 ; DEF: 1-669 binartypeptr * type pointer ; DEF: 1-811 bit29 * const numeric ; DEF: 1-142 bitsinhword * const numeric ; DEF: 1-79 blocenglob field disp:270, size:10 ; pointer ; DEF: 1-561 blockbox field disp:60, size:10 ; pointer ; DEF: 1-946 blocktp field disp:50, size:4 ; scalar ; DEF: 1-944 brother field disp:20, size:10 ; pointer ; DEF: 1-645 brother field disp:10, size:10 ; pointer ; DEF: 1-941 byteinbyte * const numeric ; DEF: 1-81 byteshift * const numeric ; DEF: 1-82 bytint * type numeric -256..255 ; DEF: 1-620 bytwidth field disp:134, size:4 ; integer ; DEF: 1-609 cadrage field disp:120, size:4 ; integer ; DEF: 1-524 caserrcode * const numeric ; DEF: 1-253 casesize field disp:114, size:4 ; integer ; DEF: 1-610 casetype field disp:140, size:10 ; pointer ; DEF: 1-613 caseval field disp:134, size:4 ; integer ; DEF: 1-614 cdspl field disp:344, size:4 ; integer ; DEF: 1-636 chaineentree field disp:260, size:10 ; pointer ; DEF: 1-583 check_done * var local to gen_insert, loc:252, size:4 ; boolean ; DEF: 2977 check_dynamic_string_length * proc level 0, exportable ; DEF: 1825 ; REF: 119 checkbeforeeofplace * const numeric ; DEF: 1-157 checkbeforeeolnplace * const numeric ; DEF: 1-156 checkbeforetextreferenceplace * const numeric ; DEF: 1-158 checkbit * const numeric ; DEF: 1-236 chrerrcode * const numeric ; DEF: 1-245 clevel field disp:340, size:4 ; numeric 0..20 ; DEF: 1-636 clockopplace * const numeric ; DEF: 1-198 closeplace * const numeric ; DEF: 1-164 code const scalar, ord=1 ; DEF: 1-623 codebegin field disp:30, size:4 ; integer ; DEF: 1-942 codeend field disp:34, size:4 ; integer ; DEF: 1-942 compiled field disp:4, size:4 ; boolean ; DEF: 1-467 condcounterplace * const numeric ; DEF: 1-343 condit const scalar, ord=2 ; DEF: 1-460 condname field disp:0, size:40 ; packed array of (char) ; DEF: 1-965 confdimsize * const numeric ; DEF: 1-276 conformant field disp:220, size:4 ; boolean ; DEF: 1-548 connectplace * const numeric ; DEF: 1-188 contexte * type scalar ; DEF: 1-623 creflist field disp:20, size:320 ; record ; DEF: 1-636 cstnext field disp:10, size:10 ; pointer ; DEF: 1-831 current_parameter field disp:30, size:10 ; pointer ; DEF: 1-489 current_token field disp:20, size:10 ; pointer ; DEF: 1-488 data const scalar, ord=0 ; DEF: 1-623 dateopplace * const numeric ; DEF: 1-196 dclfile field disp:40, size:4 ; integer ; DEF: 1-647 dclline field disp:44, size:4 ; integer ; DEF: 1-647 deccode const scalar, ord=4 ; DEF: 1-623 deffile field disp:60, size:4 ; integer ; DEF: 1-511 deffile field disp:50, size:4 ; integer ; DEF: 1-648 definition const scalar, ord=3 ; DEF: 1-623 deflbool * const numeric ; DEF: 1-390 deflchar * const numeric ; DEF: 1-391 defline field disp:64, size:4 ; integer ; DEF: 1-511 defline field disp:54, size:4 ; integer ; DEF: 1-648 deflnum * const numeric ; DEF: 1-389 deflreal * const numeric ; DEF: 1-388 desc_vector_references field disp:170, size:4 ; integer ; DEF: 1-531 direct const scalar, ord=0 ; DEF: 1-813 displimit * const numeric ; DEF: 1-15 disposeplace * const numeric ; DEF: 1-178 diverrcode * const numeric ; DEF: 1-251 dlkdepw * const numeric ; DEF: 1-285 domain field disp:210, size:10 ; pointer ; DEF: 1-542 dopevectorsize * const numeric ; DEF: 1-274 elem field disp:20, size:10 ; pointer ; DEF: 1-475 elset field disp:210, size:10 ; pointer ; DEF: 1-544 eltype field disp:220, size:10 ; pointer ; DEF: 1-542 emptyindex * const numeric ; DEF: 1-385 emptyplace * const numeric ; DEF: 1-367 encode const scalar, ord=3 ; DEF: 1-813 endsy const scalar, ord=2 ; DEF: 1-669 eofb * const numeric ; DEF: 1-315 eofeolnerrcode * const numeric ; DEF: 1-257 eofw * const numeric ; DEF: 1-314 eolnb * const numeric ; DEF: 1-317 eolnw * const numeric ; DEF: 1-316 errorcond * const numeric ; DEF: 1-106 exceptcodeplace * const numeric ; DEF: 1-189 executionmodplmt * const numeric ; DEF: 1-346 exitdplmt field disp:10, size:4 ; integer ; DEF: 1-481 exitplace * const numeric ; DEF: 1-379 exportable const scalar, ord=3 ; DEF: 1-406 exportproc const scalar, ord=4 ; DEF: 1-442 exportvar const scalar, ord=2 ; DEF: 1-441 extareadisp field disp:254, size:4 ; integer ; DEF: 1-454 extcallplace * const numeric ; DEF: 1-194 extdecl field disp:230, size:10 ; pointer ; DEF: 1-450 extdef const scalar, ord=2 ; DEF: 1-417 extend_stack_op_place * const numeric ; DEF: 1-226 extentryname field disp:140, size:40 ; packed array of (char) ; DEF: 1-447 extentryplace * const numeric ; DEF: 1-155 externalarea const scalar, ord=1 ; DEF: 1-441 externid * type packed array of (char) ; DEF: 1-400 extgenerator field disp:100, size:40 ; packed array of (char) ; DEF: 1-447 extitemtype field disp:240, size:4 ; scalar ; DEF: 1-451 extkind field disp:244, size:4 ; scalar ; DEF: 1-452 extlong field disp:260, size:4 ; integer ; DEF: 1-455 extname field disp:0, size:40 ; packed array of (char) ; DEF: 1-446 extnext field disp:200, size:10 ; pointer ; DEF: 1-448 extnotresolved const scalar, ord=0 ; DEF: 1-441 extpltdisp field disp:250, size:4 ; integer ; DEF: 1-453 extreturnplace * const numeric ; DEF: 1-191 extrfile1 field disp:210, size:4 ; integer ; DEF: 1-449 extrfile2 field disp:220, size:4 ; integer ; DEF: 1-449 extrline1 field disp:214, size:4 ; integer ; DEF: 1-449 extrline2 field disp:224, size:4 ; integer ; DEF: 1-449 extsegname field disp:40, size:40 ; packed array of (char) ; DEF: 1-447 extwantdescs field disp:264, size:4 ; boolean ; DEF: 1-456 fappendplace * const numeric ; DEF: 1-201 fastbit * const numeric ; DEF: 1-235 father field disp:0, size:10 ; pointer ; DEF: 1-941 fattr_info * var local to gen_string_position, loc:206, size:110 ; record ; DEF: 2412 fcloseplace * const numeric ; DEF: 1-187 fconst field disp:210, size:10 ; pointer ; DEF: 1-538 fctdepl * const numeric ; DEF: 1-287 fctdeplw * const numeric ; DEF: 1-286 fdescsize * const numeric ; DEF: 1-304 feltype field disp:200, size:10 ; pointer ; DEF: 1-555 filen field disp:0, size:4 ; integer ; DEF: 1-430 fillimit * const numeric ; DEF: 1-17 finitdef const scalar, ord=4 ; DEF: 1-417 finitmoproc field disp:260, size:10 ; pointer ; DEF: 1-561 first field disp:20, size:10 ; pointer ; DEF: 1-657 first field disp:40, size:10 ; pointer ; DEF: 1-943 first_in_block field disp:20, size:10 ; pointer ; DEF: 1-666 firstfield field disp:140, size:10 ; pointer ; DEF: 1-614 firstglobal * const numeric ; DEF: 1-298 firstlabel field disp:100, size:10 ; pointer ; DEF: 1-948 fldaddr field disp:130, size:4 ; integer ; DEF: 1-609 fldtype field disp:120, size:10 ; pointer ; DEF: 1-608 fllengthb * const numeric ; DEF: 1-313 fllengthw * const numeric ; DEF: 1-309 flls const scalar, ord=0 ; DEF: 1-786 flushplace * const numeric ; DEF: 1-200 fname field disp:0, size:10 ; pointer ; DEF: 1-633 forerricode * const numeric ; DEF: 1-248 forerrscode * const numeric ; DEF: 1-249 form field disp:174, size:4 ; scalar ; DEF: 1-533 formal const scalar, ord=1 ; DEF: 1-406 formal_parameter_list field disp:130, size:10 ; pointer ; DEF: 1-519 formals field disp:130, size:10 ; pointer ; DEF: 1-571 forset * type scalar ; DEF: 1-807 forwdef const scalar, ord=1 ; DEF: 1-417 fposb * const numeric ; DEF: 1-311 fposw * const numeric ; DEF: 1-307 freeexclusionplace * const numeric ; DEF: 1-364 french_bit * const numeric ; DEF: 1-240 freopenplace * const numeric ; DEF: 1-202 fsbadrw * const numeric ; DEF: 1-289 fsbpointersize * const numeric ; DEF: 1-305 fsizeb * const numeric ; DEF: 1-312 fsizew * const numeric ; DEF: 1-308 fstatusb * const numeric ; DEF: 1-310 fstatusw * const numeric ; DEF: 1-306 fstfld field disp:210, size:10 ; pointer ; DEF: 1-554 functionvaluecheckplace * const numeric ; DEF: 1-225 functionvaluesetplace * const numeric ; DEF: 1-224 fupdtplace * const numeric ; DEF: 1-186 fxls const scalar, ord=1 ; DEF: 1-786 fxns const scalar, ord=3 ; DEF: 1-786 fxts const scalar, ord=2 ; DEF: 1-786 gattr_info * var local to gen_string_position, loc:230, size:110 ; record ; DEF: 2412 gen_delete * proc level 0, exportable ; DEF: 2724 ; REF: 120 gen_insert * proc level 0, exportable ; DEF: 2964 ; REF: 121 gen_string_comp * proc level 0, exportable ; DEF: 2336 ; REF: 122 gen_string_position * proc level 0, exportable ; DEF: 2405 ; REF: 124 gen_substring * proc level 0, exportable ; DEF: 2493 ; REF: 123 genandor * proc level 0, exportable ; DEF: 684 ; REF: 125 gencompare * proc level 0, exportable ; DEF: 1478 ; REF: 126 genconcat * proc level 0, exportable ; DEF: 2040 ; REF: 127 gendivmod * proc level 0, exportable ; DEF: 883 ; REF: 128 genjump * proc level 0, exportable ; DEF: 1408 ; REF: 129 genopadd * proc level 0, exportable ; DEF: 332 ; REF: 130 genopdivi * proc level 0, exportable ; DEF: 791 ; REF: 131 genopmult * proc level 0, exportable ; DEF: 1023 ; REF: 132 genoppw * proc level 0, exportable ; DEF: 1624 ; REF: 133 genopsub * proc level 0, exportable ; DEF: 480 ; REF: 134 genptcomp * proc level 0, exportable ; DEF: 1195 ; REF: 135 genstcomp * proc level 0, exportable ; DEF: 1266 ; REF: 136 getdirplace * const numeric ; DEF: 1-185 getseqplace * const numeric ; DEF: 1-175 gettextplace * const numeric ; DEF: 1-174 gotoexitextplace * const numeric ; DEF: 1-159 gotoexitplace * const numeric ; DEF: 1-176 hdrfil field disp:120, size:4 ; integer ; DEF: 1-950 hdrind field disp:124, size:4 ; integer ; DEF: 1-950 hdrlen field disp:130, size:4 ; integer ; DEF: 1-950 hdrlin field disp:134, size:4 ; integer ; DEF: 1-950 holdplace * const numeric ; DEF: 1-358 ia4bd const scalar, ord=501 ; DEF: 1-751 ia6bd const scalar, ord=502 ; DEF: 1-751 iaar0 const scalar, ord=449 ; DEF: 1-745 iaar1 const scalar, ord=450 ; DEF: 1-745 iaar2 const scalar, ord=451 ; DEF: 1-745 iaar3 const scalar, ord=452 ; DEF: 1-745 iaar4 const scalar, ord=453 ; DEF: 1-745 iaar5 const scalar, ord=454 ; DEF: 1-745 iaar6 const scalar, ord=455 ; DEF: 1-745 iaar7 const scalar, ord=456 ; DEF: 1-745 iabd const scalar, ord=504 ; DEF: 1-751 iabsa const scalar, ord=447 ; DEF: 1-743 iad2d const scalar, ord=530 ; DEF: 1-756 iad3d const scalar, ord=536 ; DEF: 1-757 iadaq const scalar, ord=85 ; DEF: 1-689 iade const scalar, ord=206 ; DEF: 1-705 iadl const scalar, ord=86 ; DEF: 1-689 iadla const scalar, ord=87 ; DEF: 1-689 iadlaq const scalar, ord=88 ; DEF: 1-690 iadlq const scalar, ord=89 ; DEF: 1-690 iadlx0 const scalar, ord=90 ; DEF: 1-690 iadlx1 const scalar, ord=91 ; DEF: 1-690 iadlx2 const scalar, ord=92 ; DEF: 1-690 iadlx3 const scalar, ord=93 ; DEF: 1-690 iadlx4 const scalar, ord=94 ; DEF: 1-690 iadlx5 const scalar, ord=95 ; DEF: 1-690 iadlx6 const scalar, ord=96 ; DEF: 1-691 iadlx7 const scalar, ord=97 ; DEF: 1-691 iadwp0 const scalar, ord=361 ; DEF: 1-728 iadwp1 const scalar, ord=362 ; DEF: 1-728 iadwp2 const scalar, ord=363 ; DEF: 1-728 iadwp3 const scalar, ord=364 ; DEF: 1-728 iadwp4 const scalar, ord=365 ; DEF: 1-728 iadwp5 const scalar, ord=366 ; DEF: 1-728 iadwp6 const scalar, ord=367 ; DEF: 1-729 iadwp7 const scalar, ord=368 ; DEF: 1-729 iadx0 const scalar, ord=99 ; DEF: 1-691 iadx1 const scalar, ord=100 ; DEF: 1-691 iadx2 const scalar, ord=101 ; DEF: 1-691 iadx3 const scalar, ord=102 ; DEF: 1-691 iadx4 const scalar, ord=103 ; DEF: 1-691 iadx5 const scalar, ord=104 ; DEF: 1-692 iadx6 const scalar, ord=105 ; DEF: 1-692 iadx7 const scalar, ord=106 ; DEF: 1-692 ialr const scalar, ord=72 ; DEF: 1-688 iansa const scalar, ord=213 ; DEF: 1-708 iansq const scalar, ord=214 ; DEF: 1-708 iansx0 const scalar, ord=215 ; DEF: 1-708 iansx1 const scalar, ord=216 ; DEF: 1-708 iansx2 const scalar, ord=217 ; DEF: 1-708 iansx3 const scalar, ord=218 ; DEF: 1-709 iansx4 const scalar, ord=219 ; DEF: 1-709 iansx5 const scalar, ord=220 ; DEF: 1-709 iansx6 const scalar, ord=221 ; DEF: 1-709 iansx7 const scalar, ord=222 ; DEF: 1-709 ianx0 const scalar, ord=223 ; DEF: 1-709 ianx1 const scalar, ord=224 ; DEF: 1-709 ianx2 const scalar, ord=225 ; DEF: 1-709 ianx3 const scalar, ord=226 ; DEF: 1-710 ianx4 const scalar, ord=227 ; DEF: 1-710 ianx5 const scalar, ord=228 ; DEF: 1-710 ianx6 const scalar, ord=229 ; DEF: 1-710 ianx7 const scalar, ord=230 ; DEF: 1-710 iaos const scalar, ord=107 ; DEF: 1-692 iara0 const scalar, ord=475 ; DEF: 1-748 iara1 const scalar, ord=476 ; DEF: 1-748 iara2 const scalar, ord=477 ; DEF: 1-748 iara3 const scalar, ord=478 ; DEF: 1-748 iara4 const scalar, ord=479 ; DEF: 1-748 iara5 const scalar, ord=480 ; DEF: 1-748 iara6 const scalar, ord=481 ; DEF: 1-749 iara7 const scalar, ord=482 ; DEF: 1-749 iarl const scalar, ord=74 ; DEF: 1-688 iarn0 const scalar, ord=483 ; DEF: 1-749 iarn1 const scalar, ord=484 ; DEF: 1-749 iarn2 const scalar, ord=485 ; DEF: 1-749 iarn3 const scalar, ord=486 ; DEF: 1-749 iarn4 const scalar, ord=487 ; DEF: 1-749 iarn5 const scalar, ord=488 ; DEF: 1-749 iarn6 const scalar, ord=489 ; DEF: 1-750 iarn7 const scalar, ord=490 ; DEF: 1-750 iars const scalar, ord=75 ; DEF: 1-688 iasa const scalar, ord=108 ; DEF: 1-692 iasx0 const scalar, ord=110 ; DEF: 1-692 iasx1 const scalar, ord=111 ; DEF: 1-692 iasx2 const scalar, ord=112 ; DEF: 1-693 iasx3 const scalar, ord=113 ; DEF: 1-693 iasx4 const scalar, ord=114 ; DEF: 1-693 iasx5 const scalar, ord=115 ; DEF: 1-693 iasx6 const scalar, ord=116 ; DEF: 1-693 iasx7 const scalar, ord=117 ; DEF: 1-693 iawca const scalar, ord=118 ; DEF: 1-693 iawcq const scalar, ord=119 ; DEF: 1-693 iawd const scalar, ord=505 ; DEF: 1-752 ibcd const scalar, ord=419 ; DEF: 1-738 ibtd const scalar, ord=528 ; DEF: 1-756 ic_from field disp:0, size:4 ; integer ; DEF: 1-651 ic_to field disp:4, size:4 ; integer ; DEF: 1-651 icall6 const scalar, ord=370 ; DEF: 1-731 icamp const scalar, ord=438 ; DEF: 1-742 icams const scalar, ord=439 ; DEF: 1-742 icana const scalar, ord=273 ; DEF: 1-715 icanaq const scalar, ord=274 ; DEF: 1-716 icanq const scalar, ord=275 ; DEF: 1-716 icanx0 const scalar, ord=276 ; DEF: 1-716 icanx1 const scalar, ord=277 ; DEF: 1-716 icanx2 const scalar, ord=278 ; DEF: 1-716 icanx3 const scalar, ord=279 ; DEF: 1-716 icanx4 const scalar, ord=280 ; DEF: 1-716 icanx5 const scalar, ord=281 ; DEF: 1-716 icanx6 const scalar, ord=282 ; DEF: 1-717 icanx7 const scalar, ord=283 ; DEF: 1-717 icioc const scalar, ord=443 ; DEF: 1-742 icmg const scalar, ord=160 ; DEF: 1-699 icmk const scalar, ord=161 ; DEF: 1-699 icmpb const scalar, ord=527 ; DEF: 1-756 icmpn const scalar, ord=525 ; DEF: 1-755 icmpx0 const scalar, ord=165 ; DEF: 1-699 icmpx1 const scalar, ord=166 ; DEF: 1-699 icmpx2 const scalar, ord=167 ; DEF: 1-699 icmpx3 const scalar, ord=168 ; DEF: 1-700 icmpx4 const scalar, ord=169 ; DEF: 1-700 icmpx5 const scalar, ord=170 ; DEF: 1-700 icmpx6 const scalar, ord=171 ; DEF: 1-700 icmpx7 const scalar, ord=172 ; DEF: 1-700 icnaa const scalar, ord=284 ; DEF: 1-717 icnaaq const scalar, ord=285 ; DEF: 1-717 icnaq const scalar, ord=286 ; DEF: 1-717 icnax0 const scalar, ord=287 ; DEF: 1-717 icnax1 const scalar, ord=288 ; DEF: 1-717 icnax2 const scalar, ord=289 ; DEF: 1-717 icnax3 const scalar, ord=290 ; DEF: 1-718 icnax4 const scalar, ord=291 ; DEF: 1-718 icnax5 const scalar, ord=292 ; DEF: 1-718 icnax6 const scalar, ord=293 ; DEF: 1-718 icnax7 const scalar, ord=294 ; DEF: 1-718 icsr const scalar, ord=520 ; DEF: 1-755 icwl const scalar, ord=173 ; DEF: 1-700 idfcmg const scalar, ord=202 ; DEF: 1-705 idfld const scalar, ord=176 ; DEF: 1-702 idfrd const scalar, ord=200 ; DEF: 1-705 idfst const scalar, ord=178 ; DEF: 1-702 idfstr const scalar, ord=179 ; DEF: 1-702 idis const scalar, ord=448 ; DEF: 1-743 idrl const scalar, ord=407 ; DEF: 1-737 idtb const scalar, ord=529 ; DEF: 1-756 idufa const scalar, ord=183 ; DEF: 1-702 idufm const scalar, ord=191 ; DEF: 1-703 idufs const scalar, ord=187 ; DEF: 1-703 idv2d const scalar, ord=533 ; DEF: 1-756 idvf const scalar, ord=157 ; DEF: 1-698 ieaq const scalar, ord=1 ; DEF: 1-679 ieasp0 const scalar, ord=295 ; DEF: 1-720 ieasp1 const scalar, ord=296 ; DEF: 1-720 ieasp2 const scalar, ord=297 ; DEF: 1-720 ieasp3 const scalar, ord=298 ; DEF: 1-720 ieasp4 const scalar, ord=299 ; DEF: 1-720 ieasp5 const scalar, ord=300 ; DEF: 1-720 ieasp6 const scalar, ord=301 ; DEF: 1-720 ieasp7 const scalar, ord=302 ; DEF: 1-720 ieawp0 const scalar, ord=303 ; DEF: 1-721 ieawp1 const scalar, ord=304 ; DEF: 1-721 ieawp2 const scalar, ord=305 ; DEF: 1-721 ieawp3 const scalar, ord=306 ; DEF: 1-721 ieawp4 const scalar, ord=307 ; DEF: 1-721 ieawp5 const scalar, ord=308 ; DEF: 1-721 ieawp6 const scalar, ord=309 ; DEF: 1-721 ieawp7 const scalar, ord=310 ; DEF: 1-721 ieax0 const scalar, ord=2 ; DEF: 1-679 ieax1 const scalar, ord=3 ; DEF: 1-679 ieax2 const scalar, ord=4 ; DEF: 1-679 ieax3 const scalar, ord=5 ; DEF: 1-679 ieax4 const scalar, ord=6 ; DEF: 1-679 ieax5 const scalar, ord=7 ; DEF: 1-679 iepaq const scalar, ord=369 ; DEF: 1-729 iepbp0 const scalar, ord=311 ; DEF: 1-722 iepbp1 const scalar, ord=312 ; DEF: 1-722 iepbp2 const scalar, ord=313 ; DEF: 1-722 iepbp3 const scalar, ord=314 ; DEF: 1-722 iepbp4 const scalar, ord=315 ; DEF: 1-722 iepbp5 const scalar, ord=316 ; DEF: 1-722 iepbp6 const scalar, ord=317 ; DEF: 1-722 iepbp7 const scalar, ord=318 ; DEF: 1-722 iepp0 const scalar, ord=319 ; DEF: 1-723 iepp1 const scalar, ord=320 ; DEF: 1-723 iepp2 const scalar, ord=321 ; DEF: 1-723 iepp4 const scalar, ord=323 ; DEF: 1-723 iepp5 const scalar, ord=324 ; DEF: 1-723 iepp6 const scalar, ord=325 ; DEF: 1-723 iepp7 const scalar, ord=326 ; DEF: 1-723 iera const scalar, ord=252 ; DEF: 1-713 ierq const scalar, ord=254 ; DEF: 1-713 iersa const scalar, ord=255 ; DEF: 1-713 iersq const scalar, ord=256 ; DEF: 1-713 iersx0 const scalar, ord=257 ; DEF: 1-713 iersx1 const scalar, ord=258 ; DEF: 1-714 iersx2 const scalar, ord=259 ; DEF: 1-714 iersx3 const scalar, ord=260 ; DEF: 1-714 iersx4 const scalar, ord=261 ; DEF: 1-714 iersx5 const scalar, ord=262 ; DEF: 1-714 iersx6 const scalar, ord=263 ; DEF: 1-714 iersx7 const scalar, ord=264 ; DEF: 1-714 ierx0 const scalar, ord=265 ; DEF: 1-714 ierx1 const scalar, ord=266 ; DEF: 1-715 ierx2 const scalar, ord=267 ; DEF: 1-715 ierx3 const scalar, ord=268 ; DEF: 1-715 ierx4 const scalar, ord=269 ; DEF: 1-715 ierx5 const scalar, ord=270 ; DEF: 1-715 ierx6 const scalar, ord=271 ; DEF: 1-715 ierx7 const scalar, ord=272 ; DEF: 1-715 ifad const scalar, ord=184 ; DEF: 1-703 ifcmg const scalar, ord=204 ; DEF: 1-705 ifcmp const scalar, ord=205 ; DEF: 1-705 ifdi const scalar, ord=196 ; DEF: 1-704 ifdv const scalar, ord=197 ; DEF: 1-704 ifld const scalar, ord=177 ; DEF: 1-702 ifmp const scalar, ord=192 ; DEF: 1-704 ifno const scalar, ord=199 ; DEF: 1-704 ifrd const scalar, ord=201 ; DEF: 1-705 ifsb const scalar, ord=188 ; DEF: 1-703 ifst const scalar, ord=180 ; DEF: 1-702 ifstr const scalar, ord=181 ; DEF: 1-702 ifszn const scalar, ord=207 ; DEF: 1-705 igtb const scalar, ord=420 ; DEF: 1-738 ilar0 const scalar, ord=457 ; DEF: 1-746 ilar1 const scalar, ord=458 ; DEF: 1-746 ilar2 const scalar, ord=459 ; DEF: 1-746 ilar3 const scalar, ord=460 ; DEF: 1-746 ilar4 const scalar, ord=461 ; DEF: 1-746 ilar5 const scalar, ord=462 ; DEF: 1-746 ilar6 const scalar, ord=463 ; DEF: 1-746 ilar7 const scalar, ord=464 ; DEF: 1-746 ilareg const scalar, ord=465 ; DEF: 1-747 ilbar const scalar, ord=421 ; DEF: 1-740 ilcaq const scalar, ord=11 ; DEF: 1-680 ilcpr const scalar, ord=422 ; DEF: 1-740 ilcx0 const scalar, ord=13 ; DEF: 1-680 ilcx1 const scalar, ord=14 ; DEF: 1-680 ilcx2 const scalar, ord=15 ; DEF: 1-680 ilcx3 const scalar, ord=16 ; DEF: 1-681 ilcx4 const scalar, ord=17 ; DEF: 1-681 ilcx5 const scalar, ord=18 ; DEF: 1-681 ilcx6 const scalar, ord=19 ; DEF: 1-681 ilcx7 const scalar, ord=20 ; DEF: 1-681 ildac const scalar, ord=22 ; DEF: 1-681 ildaq const scalar, ord=23 ; DEF: 1-681 ildbr const scalar, ord=423 ; DEF: 1-740 ilde const scalar, ord=208 ; DEF: 1-706 ildi const scalar, ord=24 ; DEF: 1-682 ildqc const scalar, ord=26 ; DEF: 1-682 ildt const scalar, ord=424 ; DEF: 1-740 ildx0 const scalar, ord=27 ; DEF: 1-682 ildx1 const scalar, ord=28 ; DEF: 1-682 ildx2 const scalar, ord=29 ; DEF: 1-682 ildx3 const scalar, ord=30 ; DEF: 1-682 ildx4 const scalar, ord=31 ; DEF: 1-682 ildx5 const scalar, ord=32 ; DEF: 1-683 ildx6 const scalar, ord=33 ; DEF: 1-683 illr const scalar, ord=76 ; DEF: 1-688 ills const scalar, ord=77 ; DEF: 1-688 ilpl const scalar, ord=466 ; DEF: 1-747 ilpri const scalar, ord=327 ; DEF: 1-724 ilprp0 const scalar, ord=328 ; DEF: 1-724 ilprp1 const scalar, ord=329 ; DEF: 1-724 ilprp2 const scalar, ord=330 ; DEF: 1-724 ilprp3 const scalar, ord=331 ; DEF: 1-724 ilprp4 const scalar, ord=332 ; DEF: 1-724 ilprp5 const scalar, ord=333 ; DEF: 1-724 ilprp6 const scalar, ord=334 ; DEF: 1-724 ilprp7 const scalar, ord=335 ; DEF: 1-725 ilptp const scalar, ord=425 ; DEF: 1-740 ilptr const scalar, ord=426 ; DEF: 1-740 ilra const scalar, ord=427 ; DEF: 1-740 ilreg const scalar, ord=35 ; DEF: 1-683 ilrl const scalar, ord=78 ; DEF: 1-688 ilsdp const scalar, ord=428 ; DEF: 1-740 ilsdr const scalar, ord=429 ; DEF: 1-741 ilxl0 const scalar, ord=36 ; DEF: 1-683 ilxl1 const scalar, ord=37 ; DEF: 1-683 ilxl2 const scalar, ord=38 ; DEF: 1-683 ilxl3 const scalar, ord=39 ; DEF: 1-683 ilxl4 const scalar, ord=40 ; DEF: 1-684 ilxl5 const scalar, ord=41 ; DEF: 1-684 ilxl6 const scalar, ord=42 ; DEF: 1-684 ilxl7 const scalar, ord=43 ; DEF: 1-684 imme const scalar, ord=410 ; DEF: 1-737 imme2 const scalar, ord=411 ; DEF: 1-737 imme3 const scalar, ord=412 ; DEF: 1-737 imme4 const scalar, ord=413 ; DEF: 1-737 imp2d const scalar, ord=532 ; DEF: 1-756 imp3d const scalar, ord=538 ; DEF: 1-757 impf const scalar, ord=154 ; DEF: 1-698 imported const scalar, ord=4 ; DEF: 1-406 importproc const scalar, ord=5 ; DEF: 1-442 importvar const scalar, ord=3 ; DEF: 1-441 imve const scalar, ord=534 ; DEF: 1-756 imvn const scalar, ord=526 ; DEF: 1-755 imvne const scalar, ord=535 ; DEF: 1-757 imvt const scalar, ord=518 ; DEF: 1-754 inar0 const scalar, ord=467 ; DEF: 1-747 inar1 const scalar, ord=468 ; DEF: 1-747 inar2 const scalar, ord=469 ; DEF: 1-747 inar3 const scalar, ord=470 ; DEF: 1-747 inar4 const scalar, ord=471 ; DEF: 1-747 inar5 const scalar, ord=472 ; DEF: 1-747 inar6 const scalar, ord=473 ; DEF: 1-748 inar7 const scalar, ord=474 ; DEF: 1-748 inegl const scalar, ord=159 ; DEF: 1-698 inhibit * const numeric ; DEF: 1-143 initcondplace * const numeric ; DEF: 1-362 initdef const scalar, ord=3 ; DEF: 1-417 initfsballocplace * const numeric ; DEF: 1-195 initmoproc field disp:250, size:10 ; pointer ; DEF: 1-561 inpr const scalar, ord=4 ; DEF: 1-814 instdcompiler const scalar, ord=2 ; DEF: 1-439 instdcomputer const scalar, ord=5 ; DEF: 1-440 instdextend const scalar, ord=4 ; DEF: 1-440 instdpure const scalar, ord=1 ; DEF: 1-439 instdsimone const scalar, ord=6 ; DEF: 1-440 instdsol const scalar, ord=3 ; DEF: 1-439 int15 * const numeric ; DEF: 1-332 int18 * const numeric ; DEF: 1-330 intcallplace * const numeric ; DEF: 1-193 intentryplace * const numeric ; DEF: 1-160 interactivebit * const numeric ; DEF: 1-237 inthelist field disp:0, size:4 ; boolean ; DEF: 1-467 intreturnplace * const numeric ; DEF: 1-190 inxerrcode * const numeric ; DEF: 1-244 inxreg field disp:44, size:4 ; scalar ; DEF: 1-862 inxtype field disp:210, size:10 ; pointer ; DEF: 1-546 iorsa const scalar, ord=234 ; DEF: 1-711 iorsq const scalar, ord=235 ; DEF: 1-711 iorsx0 const scalar, ord=236 ; DEF: 1-711 iorsx1 const scalar, ord=237 ; DEF: 1-711 iorsx2 const scalar, ord=238 ; DEF: 1-711 iorsx3 const scalar, ord=239 ; DEF: 1-711 iorsx4 const scalar, ord=240 ; DEF: 1-711 iorsx5 const scalar, ord=241 ; DEF: 1-711 iorsx6 const scalar, ord=242 ; DEF: 1-712 iorsx7 const scalar, ord=243 ; DEF: 1-712 iorx0 const scalar, ord=244 ; DEF: 1-712 iorx1 const scalar, ord=245 ; DEF: 1-712 iorx2 const scalar, ord=246 ; DEF: 1-712 iorx3 const scalar, ord=247 ; DEF: 1-712 iorx4 const scalar, ord=248 ; DEF: 1-712 iorx5 const scalar, ord=249 ; DEF: 1-712 iorx6 const scalar, ord=250 ; DEF: 1-713 iorx7 const scalar, ord=251 ; DEF: 1-713 iotextbuffersize * const numeric ; DEF: 1-303 iowarningsbit * const numeric ; DEF: 1-238 ipuls1 const scalar, ord=415 ; DEF: 1-738 ipuls2 const scalar, ord=416 ; DEF: 1-738 iqlr const scalar, ord=80 ; DEF: 1-689 iqrl const scalar, ord=82 ; DEF: 1-689 iqrs const scalar, ord=83 ; DEF: 1-689 irccl const scalar, ord=406 ; DEF: 1-737 ircu const scalar, ord=430 ; DEF: 1-741 irept * type scalar subrange ; DEF: 1-783 iret const scalar, ord=371 ; DEF: 1-731 irmcm const scalar, ord=440 ; DEF: 1-742 irpl const scalar, ord=541 ; DEF: 1-759 irrelsy const scalar, ord=0 ; DEF: 1-669 irscr const scalar, ord=441 ; DEF: 1-742 irsw const scalar, ord=442 ; DEF: 1-742 irtcd const scalar, ord=372 ; DEF: 1-731 is4bd const scalar, ord=506 ; DEF: 1-752 is6bd const scalar, ord=507 ; DEF: 1-752 is9bd const scalar, ord=508 ; DEF: 1-752 isar0 const scalar, ord=491 ; DEF: 1-750 isar1 const scalar, ord=492 ; DEF: 1-750 isar2 const scalar, ord=493 ; DEF: 1-750 isar3 const scalar, ord=494 ; DEF: 1-750 isar4 const scalar, ord=495 ; DEF: 1-750 isar5 const scalar, ord=496 ; DEF: 1-750 isar6 const scalar, ord=497 ; DEF: 1-751 isar7 const scalar, ord=498 ; DEF: 1-751 isareg const scalar, ord=499 ; DEF: 1-751 isb2d const scalar, ord=531 ; DEF: 1-756 isb3d const scalar, ord=537 ; DEF: 1-757 isbaq const scalar, ord=121 ; DEF: 1-694 isbar const scalar, ord=418 ; DEF: 1-738 isbd const scalar, ord=509 ; DEF: 1-752 isbla const scalar, ord=122 ; DEF: 1-694 isblaq const scalar, ord=123 ; DEF: 1-694 isblq const scalar, ord=124 ; DEF: 1-694 isblx0 const scalar, ord=125 ; DEF: 1-694 isblx1 const scalar, ord=126 ; DEF: 1-694 isblx2 const scalar, ord=127 ; DEF: 1-694 isblx3 const scalar, ord=128 ; DEF: 1-695 isblx4 const scalar, ord=129 ; DEF: 1-695 isblx5 const scalar, ord=130 ; DEF: 1-695 isblx6 const scalar, ord=131 ; DEF: 1-695 isblx7 const scalar, ord=132 ; DEF: 1-695 isbx0 const scalar, ord=134 ; DEF: 1-695 isbx1 const scalar, ord=135 ; DEF: 1-695 isbx2 const scalar, ord=136 ; DEF: 1-696 isbx3 const scalar, ord=137 ; DEF: 1-696 isbx4 const scalar, ord=138 ; DEF: 1-696 isbx5 const scalar, ord=139 ; DEF: 1-696 isbx6 const scalar, ord=140 ; DEF: 1-696 isbx7 const scalar, ord=141 ; DEF: 1-696 iscd const scalar, ord=523 ; DEF: 1-755 iscdr const scalar, ord=524 ; DEF: 1-755 iscm const scalar, ord=514 ; DEF: 1-754 iscmr const scalar, ord=515 ; DEF: 1-754 iscpr const scalar, ord=431 ; DEF: 1-741 iscu const scalar, ord=432 ; DEF: 1-741 isdbr const scalar, ord=433 ; DEF: 1-741 ismcm const scalar, ord=444 ; DEF: 1-742 ismic const scalar, ord=445 ; DEF: 1-743 ispbp0 const scalar, ord=336 ; DEF: 1-725 ispbp1 const scalar, ord=337 ; DEF: 1-725 ispbp2 const scalar, ord=338 ; DEF: 1-725 ispbp3 const scalar, ord=339 ; DEF: 1-725 ispbp4 const scalar, ord=340 ; DEF: 1-725 ispbp5 const scalar, ord=341 ; DEF: 1-725 ispbp6 const scalar, ord=342 ; DEF: 1-725 ispbp7 const scalar, ord=343 ; DEF: 1-726 ispl const scalar, ord=500 ; DEF: 1-751 ispri const scalar, ord=344 ; DEF: 1-726 ispri0 const scalar, ord=345 ; DEF: 1-726 ispri1 const scalar, ord=346 ; DEF: 1-726 ispri2 const scalar, ord=347 ; DEF: 1-726 ispri3 const scalar, ord=348 ; DEF: 1-726 ispri4 const scalar, ord=349 ; DEF: 1-726 ispri5 const scalar, ord=350 ; DEF: 1-726 ispri6 const scalar, ord=351 ; DEF: 1-727 ispri7 const scalar, ord=352 ; DEF: 1-727 isprp0 const scalar, ord=353 ; DEF: 1-727 isprp1 const scalar, ord=354 ; DEF: 1-727 isprp2 const scalar, ord=355 ; DEF: 1-727 isprp3 const scalar, ord=356 ; DEF: 1-727 isprp4 const scalar, ord=357 ; DEF: 1-727 isprp5 const scalar, ord=358 ; DEF: 1-727 isprp6 const scalar, ord=359 ; DEF: 1-728 isprp7 const scalar, ord=360 ; DEF: 1-728 isptp const scalar, ord=434 ; DEF: 1-741 isptr const scalar, ord=435 ; DEF: 1-741 isra const scalar, ord=417 ; DEF: 1-738 isreg const scalar, ord=44 ; DEF: 1-684 issa const scalar, ord=142 ; DEF: 1-696 isscr const scalar, ord=446 ; DEF: 1-743 issdp const scalar, ord=436 ; DEF: 1-741 issdr const scalar, ord=437 ; DEF: 1-742 issq const scalar, ord=143 ; DEF: 1-696 issx0 const scalar, ord=144 ; DEF: 1-697 issx1 const scalar, ord=145 ; DEF: 1-697 issx2 const scalar, ord=146 ; DEF: 1-697 issx3 const scalar, ord=147 ; DEF: 1-697 issx4 const scalar, ord=148 ; DEF: 1-697 issx5 const scalar, ord=149 ; DEF: 1-697 issx6 const scalar, ord=150 ; DEF: 1-697 issx7 const scalar, ord=151 ; DEF: 1-697 istac const scalar, ord=46 ; DEF: 1-684 istacq const scalar, ord=47 ; DEF: 1-684 istbq const scalar, ord=544 ; DEF: 1-761 istc1 const scalar, ord=49 ; DEF: 1-685 istc2 const scalar, ord=50 ; DEF: 1-685 istca const scalar, ord=545 ; DEF: 1-761 istcd const scalar, ord=51 ; DEF: 1-685 iste const scalar, ord=209 ; DEF: 1-706 isti const scalar, ord=52 ; DEF: 1-685 istobc * type scalar subrange ; DEF: 1-784 istt const scalar, ord=54 ; DEF: 1-685 istx0 const scalar, ord=55 ; DEF: 1-685 istx1 const scalar, ord=56 ; DEF: 1-686 istx2 const scalar, ord=57 ; DEF: 1-686 istx3 const scalar, ord=58 ; DEF: 1-686 istx4 const scalar, ord=59 ; DEF: 1-686 istx5 const scalar, ord=60 ; DEF: 1-686 istx6 const scalar, ord=61 ; DEF: 1-686 istx7 const scalar, ord=62 ; DEF: 1-686 istz const scalar, ord=63 ; DEF: 1-686 iswca const scalar, ord=152 ; DEF: 1-698 iswcq const scalar, ord=153 ; DEF: 1-698 isxl0 const scalar, ord=64 ; DEF: 1-687 isxl1 const scalar, ord=65 ; DEF: 1-687 isxl2 const scalar, ord=66 ; DEF: 1-687 isxl3 const scalar, ord=67 ; DEF: 1-687 isxl4 const scalar, ord=68 ; DEF: 1-687 isxl5 const scalar, ord=69 ; DEF: 1-687 isxl6 const scalar, ord=70 ; DEF: 1-687 isxl7 const scalar, ord=71 ; DEF: 1-687 isznc const scalar, ord=175 ; DEF: 1-700 isztl const scalar, ord=521 ; DEF: 1-755 isztr const scalar, ord=522 ; DEF: 1-755 itct const scalar, ord=511 ; DEF: 1-754 itctr const scalar, ord=512 ; DEF: 1-754 iteo const scalar, ord=373 ; DEF: 1-731 iteu const scalar, ord=374 ; DEF: 1-731 itov const scalar, ord=379 ; DEF: 1-732 itrtf const scalar, ord=384 ; DEF: 1-732 itrtn const scalar, ord=385 ; DEF: 1-732 itsdplmt field disp:74, size:4 ; integer ; DEF: 1-877 itsp0 const scalar, ord=386 ; DEF: 1-733 itsp1 const scalar, ord=387 ; DEF: 1-733 itsp2 const scalar, ord=388 ; DEF: 1-733 itsp3 const scalar, ord=389 ; DEF: 1-733 itsp4 const scalar, ord=390 ; DEF: 1-733 itsp5 const scalar, ord=391 ; DEF: 1-733 itsp6 const scalar, ord=392 ; DEF: 1-733 itsp7 const scalar, ord=393 ; DEF: 1-733 itss const scalar, ord=394 ; DEF: 1-734 itsx0 const scalar, ord=395 ; DEF: 1-734 itsx1 const scalar, ord=396 ; DEF: 1-734 itsx2 const scalar, ord=397 ; DEF: 1-734 itsx3 const scalar, ord=398 ; DEF: 1-734 itsx4 const scalar, ord=399 ; DEF: 1-734 itsx5 const scalar, ord=400 ; DEF: 1-734 itsx6 const scalar, ord=401 ; DEF: 1-734 itsx7 const scalar, ord=402 ; DEF: 1-735 ittf const scalar, ord=403 ; DEF: 1-735 ittn const scalar, ord=404 ; DEF: 1-735 iufa const scalar, ord=185 ; DEF: 1-703 iufm const scalar, ord=193 ; DEF: 1-704 iufs const scalar, ord=189 ; DEF: 1-703 ixec const scalar, ord=408 ; DEF: 1-737 ixed const scalar, ord=409 ; DEF: 1-737 kind field disp:10, size:4 ; scalar ; DEF: 1-494 l4 const scalar, ord=0 ; DEF: 1-785 l6 const scalar, ord=1 ; DEF: 1-785 l_len * var local to gen_insert, loc:267, size:4 ; integer ; DEF: 2981 l_tag * var local to gen_insert, loc:270, size:4 ; scalar ; DEF: 2981 l_tag * var local to gen_delete, loc:220, size:4 ; scalar ; DEF: 2741 labbox field disp:30, size:10 ; pointer ; DEF: 1-661 labch1 field disp:14, size:4 ; integer ; DEF: 1-660 labdef field disp:20, size:4 ; integer ; DEF: 1-660 labdescr * type record ; DEF: 1-659 labexit field disp:10, size:4 ; integer ; DEF: 1-660 lablev field disp:4, size:4 ; integer ; DEF: 1-660 labval field disp:0, size:4 ; integer ; DEF: 1-660 lcprocess * const numeric ; DEF: 1-382 lengthplace * const numeric ; DEF: 1-368 lgfilename * const numeric ; DEF: 1-302 lgparm1 * const numeric ; DEF: 1-24 lgprint * const numeric ; DEF: 1-102 linen field disp:4, size:4 ; integer ; DEF: 1-430 link15 * const numeric ; DEF: 1-329 link18 * const numeric ; DEF: 1-328 linkage const scalar, ord=2 ; DEF: 1-623 llnext field disp:50, size:10 ; pointer ; DEF: 1-846 llvalu field disp:0, size:40 ; array of (integer) ; DEF: 1-844 lnext field disp:50, size:10 ; pointer ; DEF: 1-841 localfile const scalar, ord=3 ; DEF: 1-437 localproc const scalar, ord=6 ; DEF: 1-442 locals const scalar, ord=1 ; DEF: 1-939 locinbytes field disp:4, size:4 ; integer ; DEF: 1-643 locincode field disp:164, size:4 ; integer ; DEF: 1-574 log10switch * const numeric ; DEF: 1-150 longblank const alphanumeric, 32 char(s) ; DEF: 1-139 longboxlist * const numeric ; DEF: 1-37 longplacew * const numeric ; DEF: 1-291 longprofileplace * const numeric ; DEF: 1-199 longstplacew * const numeric ; DEF: 1-293 lotptrdep * const numeric ; DEF: 1-231 lpclength * const numeric ; DEF: 1-322 lphl * const numeric ; DEF: 1-324 lvalu field disp:0, size:40 ; array of (integer) ; DEF: 1-839 lxl const scalar, ord=3 ; DEF: 1-918 mainbit * const numeric ; DEF: 1-234 maindplmt * const numeric ; DEF: 1-347 mainentryplace * const numeric ; DEF: 1-154 mainprogram const scalar, ord=7 ; DEF: 1-442 mathworksizew * const numeric ; DEF: 1-133 max10 * const numeric ; DEF: 1-118 maxchar * const numeric ; DEF: 1-96 maxchar8 * const numeric ; DEF: 1-338 maxdig * const numeric ; DEF: 1-115 maxdigitsinteger * const numeric ; DEF: 1-121 maxerpg * const numeric ; DEF: 1-20 maxerrline * const numeric ; DEF: 1-19 maxexp * const numeric ; DEF: 1-119 maxexpon * const numeric ; DEF: 1-116 maxglobsize * const numeric ; DEF: 1-71 maxhexdi * const numeric ; DEF: 1-117 maxintegerstring const alphanumeric, 20 char(s) ; DEF: 1-123 maxkeylength * const numeric ; DEF: 1-31 maxlabs * const numeric ; DEF: 1-16 maxlinepascal * const numeric ; DEF: 1-100 maxnbofkeywords * const numeric ; DEF: 1-29 maxnewsize * const numeric ; DEF: 1-42 maxpage * const numeric ; DEF: 1-95 maxpageline * const numeric ; DEF: 1-99 maxpredef * const numeric ; DEF: 1-25 maxrealstring const alphanumeric, 20 char(s) ; DEF: 1-124 maxrel * const numeric ; DEF: 1-129 maxset * const numeric ; DEF: 1-93 maxstacksize * const numeric ; DEF: 1-72 maxstring * const numeric ; DEF: 1-34 maxval * const numeric ; DEF: 1-33 medium const scalar, ord=2 ; DEF: 1-624 minexp * const numeric ; DEF: 1-120 minrealstring const alphanumeric, 20 char(s) ; DEF: 1-125 mlterrcode * const numeric ; DEF: 1-256 moaddr field disp:210, size:4 ; integer ; DEF: 1-559 moarglistw * const numeric ; DEF: 1-344 modul const scalar, ord=0 ; DEF: 1-460 module const scalar, ord=0 ; DEF: 1-459 modulentryplace * const numeric ; DEF: 1-360 modulinitsize * const numeric ; DEF: 1-134 modynlk * const numeric ; DEF: 1-342 mofatherdisp * const numeric ; DEF: 1-339 monit const scalar, ord=1 ; DEF: 1-460 monitor const scalar, ord=1 ; DEF: 1-459 monitorentryplace * const numeric ; DEF: 1-361 monitorinitsize * const numeric ; DEF: 1-135 monitormodule const scalar, ord=0 ; DEF: 1-462 motype field disp:200, size:4 ; scalar ; DEF: 1-557 mowaitsonsplace * const numeric ; DEF: 1-372 name field disp:20, size:40 ; packed array of (char) ; DEF: 1-404 name field disp:0, size:40 ; packed array of (char) ; DEF: 1-508 nbparmo field disp:214, size:4 ; integer ; DEF: 1-559 nbparproc field disp:160, size:4 ; integer ; DEF: 1-574 nbr field disp:0, size:4 ; numeric 0..25 ; DEF: 1-627 neg const scalar, ord=4 ; DEF: 1-919 negexpplace * const numeric ; DEF: 1-375 newplace * const numeric ; DEF: 1-177 next field disp:10, size:10 ; pointer ; DEF: 1-403 next field disp:0, size:10 ; pointer ; DEF: 1-493 next field disp:10, size:10 ; pointer ; DEF: 1-644 next field disp:10, size:10 ; pointer ; DEF: 1-656 next field disp:10, size:10 ; pointer ; DEF: 1-665 next_for_schema field disp:120, size:10 ; pointer ; DEF: 1-518 next_in_block field disp:100, size:10 ; pointer ; DEF: 1-653 next_sp_place * const numeric ; DEF: 1-281 nextbloc field disp:10, size:10 ; pointer ; DEF: 1-821 nextcond field disp:40, size:10 ; pointer ; DEF: 1-966 nextexitelem field disp:0, size:10 ; pointer ; DEF: 1-480 nextnode field disp:10, size:10 ; pointer ; DEF: 1-474 nextproc field disp:110, size:10 ; pointer ; DEF: 1-949 nextref field disp:0, size:10 ; pointer ; DEF: 1-427 nilleft * const numeric ; DEF: 1-75 nilright * const numeric ; DEF: 1-76 niveau field disp:204, size:4 ; numeric 0..20 ; DEF: 1-558 nmax field disp:210, size:4 ; integer ; DEF: 1-535 nmin field disp:204, size:4 ; integer ; DEF: 1-535 noerrorcond * const numeric ; DEF: 1-107 norange * type numeric 0..63 ; DEF: 1-621 normalplace * const numeric ; DEF: 1-374 notafile const scalar, ord=0 ; DEF: 1-437 notpredef const scalar, ord=0 ; DEF: 1-439 npksize field disp:200, size:4 ; integer ; DEF: 1-535 ntwotobyte * const numeric ; DEF: 1-89 ntwotohword * const numeric ; DEF: 1-90 number field disp:0, size:4 ; integer ; DEF: 1-642 numberstring * type packed array of (char) ; DEF: 1-397 o41 * const numeric ; DEF: 1-144 o43 * const numeric ; DEF: 1-145 objaccedes field disp:140, size:10 ; set of (scalar) ; DEF: 1-527 occur field disp:10, size:4 ; scalar ; DEF: 1-634 occurence * type record ; DEF: 1-670 on field disp:0, size:4 ; boolean ; DEF: 1-486 opt2 field disp:234, size:4 ; integer ; DEF: 1-549 p0t0r1 const scalar, ord=1 ; DEF: 1-791 p0t1r0 const scalar, ord=2 ; DEF: 1-791 p0t1r1 const scalar, ord=3 ; DEF: 1-791 p1t0r0 const scalar, ord=4 ; DEF: 1-791 p1t0r1 const scalar, ord=5 ; DEF: 1-791 p1t1r0 const scalar, ord=6 ; DEF: 1-791 p1t1r1 const scalar, ord=7 ; DEF: 1-791 pack field disp:124, size:4 ; boolean ; DEF: 1-525 packednil * const numeric ; DEF: 1-77 pageplace * const numeric ; DEF: 1-171 parameter_count field disp:140, size:4 ; integer ; DEF: 1-520 parerrcode * const numeric ; DEF: 1-252 parmproccheckplace * const numeric ; DEF: 1-223 pascdebstacklocal * const numeric ; DEF: 1-130 pascoperatorsdep * const numeric ; DEF: 1-232 pckerrcode * const numeric ; DEF: 1-254 pclength * const numeric ; DEF: 1-321 pdescsaddrplace field disp:350, size:4 ; integer ; DEF: 1-592 permanentfile const scalar, ord=1 ; DEF: 1-437 pextcalltrapinfoplace field disp:360, size:4 ; integer ; DEF: 1-594 phasdescriptor field disp:210, size:4 ; boolean ; DEF: 1-576 phl * const numeric ; DEF: 1-323 pisrefincode field disp:204, size:4 ; boolean ; DEF: 1-575 place field disp:14, size:4 ; integer ; DEF: 1-430 place field disp:4, size:4 ; numeric -131072..131071 ; DEF: 1-671 ploc field disp:214, size:4 ; scalar ; DEF: 1-577 pointable const scalar, ord=2 ; DEF: 1-813 ppksize field disp:200, size:4 ; integer ; DEF: 1-543 pr0 const scalar, ord=6 ; DEF: 1-774 pr2 const scalar, ord=2 ; DEF: 1-774 pr4depw * const numeric ; DEF: 1-282 pr5 const scalar, ord=3 ; DEF: 1-774 pr7 const scalar, ord=4 ; DEF: 1-774 prderrcode * const numeric ; DEF: 1-246 predbloc field disp:20, size:10 ; pointer ; DEF: 1-822 predefproc field disp:174, size:4 ; boolean ; DEF: 1-575 previous field disp:0, size:10 ; pointer ; DEF: 1-403 previous field disp:0, size:10 ; pointer ; DEF: 1-656 previous field disp:0, size:10 ; pointer ; DEF: 1-665 previousnode field disp:0, size:10 ; pointer ; DEF: 1-474 priorityplace * const numeric ; DEF: 1-369 procaccesslevel field disp:240, size:4 ; numeric 0..20 ; DEF: 1-581 procaddr field disp:150, size:4 ; integer ; DEF: 1-574 procdef field disp:340, size:4 ; scalar ; DEF: 1-590 proce field disp:20, size:10 ; pointer ; DEF: 1-469 processentryplace * const numeric ; DEF: 1-354 processlocaldplmt * const numeric ; DEF: 1-348 processreturnplace * const numeric ; DEF: 1-357 processus field disp:244, size:4 ; boolean ; DEF: 1-582 procextitem field disp:220, size:10 ; pointer ; DEF: 1-578 procfatherdisp * const numeric ; DEF: 1-340 procfirstexit field disp:310, size:10 ; pointer ; DEF: 1-586 procfirsttofinit field disp:320, size:10 ; pointer ; DEF: 1-587 procincbloc field disp:300, size:4 ; scalar ; DEF: 1-585 procinscope field disp:200, size:4 ; boolean ; DEF: 1-575 procisactive field disp:354, size:4 ; boolean ; DEF: 1-593 procisassigned field disp:170, size:4 ; boolean ; DEF: 1-575 prockind field disp:140, size:4 ; scalar ; DEF: 1-572 proclevel field disp:144, size:4 ; numeric 0..20 ; DEF: 1-573 procmodlkw * const numeric ; DEF: 1-341 procnode field disp:270, size:10 ; pointer ; DEF: 1-584 procnode field disp:30, size:10 ; pointer ; DEF: 1-646 procparmsize * const numeric ; DEF: 1-132 procstackinitsize field disp:330, size:4 ; integer ; DEF: 1-588 proctype field disp:120, size:10 ; pointer ; DEF: 1-571 procwasforwarddef field disp:334, size:4 ; boolean ; DEF: 1-589 prof * const numeric ; DEF: 1-333 profareaptr * type pointer ; DEF: 1-933 psrdepb * const numeric ; DEF: 1-284 psrinbytes * const numeric ; DEF: 1-113 psrsize field disp:30, size:4 ; integer ; DEF: 1-891 ptentr field disp:240, size:10 ; pointer ; DEF: 1-560 pthigh field disp:230, size:10 ; pointer ; DEF: 1-551 ptlimit * const numeric ; DEF: 1-14 ptlow field disp:240, size:10 ; pointer ; DEF: 1-551 ptpar field disp:220, size:10 ; pointer ; DEF: 1-560 ptpksize field disp:200, size:4 ; integer ; DEF: 1-541 ptvarloc field disp:230, size:10 ; pointer ; DEF: 1-560 ptypesymbolplace field disp:230, size:4 ; integer ; DEF: 1-579 pure field disp:250, size:4 ; boolean ; DEF: 1-582 pureentryplace * const numeric ; DEF: 1-377 putdirplace * const numeric ; DEF: 1-184 putseqplace * const numeric ; DEF: 1-173 puttextplace * const numeric ; DEF: 1-172 pwantdescs field disp:344, size:4 ; boolean ; DEF: 1-591 pwantspl1descriptors field disp:364, size:4 ; boolean ; DEF: 1-595 racmaxint * const numeric ; DEF: 1-87 rafltplace * const numeric ; DEF: 1-182 randinterrcode * const numeric ; DEF: 1-258 randintplace * const numeric ; DEF: 1-376 raq const scalar, ord=22 ; DEF: 1-776 re const scalar, ord=25 ; DEF: 1-776 readlnplace * const numeric ; DEF: 1-167 readseqplace * const numeric ; DEF: 1-166 readtextplace * const numeric ; DEF: 1-165 realtype field disp:200, size:10 ; pointer ; DEF: 1-563 recidscope * type record ; DEF: 1-632 recordptr field disp:110, size:10 ; pointer ; DEF: 1-957 recur field disp:234, size:4 ; integer ; DEF: 1-580 recursive field disp:10, size:4 ; boolean ; DEF: 1-467 recvar field disp:200, size:10 ; pointer ; DEF: 1-554 ref_allowed field disp:70, size:10 ; record ; DEF: 1-650 references field disp:70, size:10 ; pointer ; DEF: 1-512 references field disp:60, size:10 ; pointer ; DEF: 1-649 refnbr field disp:10, size:4 ; integer ; DEF: 1-428 refs field disp:14, size:620 ; array of (record) ; DEF: 1-429 remanentfile const scalar, ord=8 ; DEF: 1-442 requiredfile const scalar, ord=9 ; DEF: 1-443 reset_stack_end_op_place * const numeric ; DEF: 1-227 resetheapplace * const numeric ; DEF: 1-179 resetplace * const numeric ; DEF: 1-162 restorprevmoplace * const numeric ; DEF: 1-380 result_place * var local to gen_string_comp, loc:144, size:4 ; integer ; DEF: 2346 returnzeroplace * const numeric ; DEF: 1-192 rewriteplace * const numeric ; DEF: 1-163 ri const scalar, ord=26 ; DEF: 1-776 rnext field disp:20, size:10 ; pointer ; DEF: 1-836 roundplace * const numeric ; DEF: 1-181 rplace field disp:10, size:4 ; integer ; DEF: 1-835 rqfltplace * const numeric ; DEF: 1-183 runtimeentry const scalar, ord=10 ; DEF: 1-443 rvalu field disp:0, size:10 ; real ; DEF: 1-834 s0 const scalar, ord=0 ; DEF: 1-807 s1 const scalar, ord=1 ; DEF: 1-807 s2 const scalar, ord=2 ; DEF: 1-807 s3 const scalar, ord=3 ; DEF: 1-807 s4 const scalar, ord=4 ; DEF: 1-807 s5 const scalar, ord=5 ; DEF: 1-807 savearglistplace * const numeric ; DEF: 1-359 scaleplacew * const numeric ; DEF: 1-292 schema_ptr field disp:10, size:10 ; pointer ; DEF: 1-487 schema_status * type record ; DEF: 1-485 scientplace * const numeric ; DEF: 1-161 segsize field disp:154, size:4 ; integer ; DEF: 1-574 selectorfield field disp:150, size:10 ; pointer ; DEF: 1-613 self_rel * const numeric ; DEF: 1-331 seterrcode * const numeric ; DEF: 1-255 setinargs field disp:60, size:4 ; boolean ; DEF: 1-967 setofno * type set of (numeric 0..63) ; DEF: 1-434 settinginactivequeueplace * const numeric ; DEF: 1-355 shiftl const scalar, ord=2 ; DEF: 1-919 signalplace * const numeric ; DEF: 1-365 simainentryplace * const numeric ; DEF: 1-351 simdebstacklocal * const numeric ; DEF: 1-131 simextentryplace * const numeric ; DEF: 1-378 simintentryplace * const numeric ; DEF: 1-352 simintreturnplace * const numeric ; DEF: 1-353 sizemax field disp:14, size:4 ; integer ; DEF: 1-468 smax field disp:214, size:4 ; integer ; DEF: 1-539 smin field disp:210, size:4 ; integer ; DEF: 1-539 solstandardbit * const numeric ; DEF: 1-239 son field disp:20, size:10 ; pointer ; DEF: 1-941 spksize field disp:200, size:4 ; integer ; DEF: 1-536 spri const scalar, ord=1 ; DEF: 1-917 sptcstepw field disp:220, size:10 ; pointer ; DEF: 1-538 sreadcharplace * const numeric ; DEF: 1-212 sreadintegerplace * const numeric ; DEF: 1-213 sreadrealplace * const numeric ; DEF: 1-214 sregister field disp:0, size:4 ; scalar ; DEF: 1-819 stackboundary * const numeric ; DEF: 1-128 standardfile const scalar, ord=4 ; DEF: 1-437 standdef const scalar, ord=0 ; DEF: 1-417 start field disp:30, size:4 ; integer ; DEF: 1-667 statearray * type array of (boolean) ; DEF: 1-920 statics const scalar, ord=0 ; DEF: 1-939 stdcompiler const scalar, ord=1 ; DEF: 1-435 stdcomputer const scalar, ord=4 ; DEF: 1-435 stdpure const scalar, ord=0 ; DEF: 1-435 stdsol const scalar, ord=2 ; DEF: 1-435 stopextplace * const numeric ; DEF: 1-211 stopplace * const numeric ; DEF: 1-210 stopshortplace * const numeric ; DEF: 1-209 stringlength_assignment_error * const numeric ; DEF: 1-260 structureplace field disp:70, size:4 ; integer ; DEF: 1-947 sttmapind field disp:10, size:4 ; integer ; DEF: 1-430 sttmapptr * type pointer ; DEF: 1-924 stwotobyte * const numeric ; DEF: 1-91 subrng field disp:204, size:4 ; boolean ; DEF: 1-537 subroutine const scalar, ord=1 ; DEF: 1-462 subsize field disp:240, size:4 ; integer ; DEF: 1-549 succ field disp:0, size:4 ; numeric -131072..131071 ; DEF: 1-671 sucerrcode * const numeric ; DEF: 1-247 swritebooleanplace * const numeric ; DEF: 1-218 swritecharplace * const numeric ; DEF: 1-215 swriteenumplace * const numeric ; DEF: 1-222 swriteintegerplace * const numeric ; DEF: 1-219 swriterealdplace * const numeric ; DEF: 1-221 swriterealeplace * const numeric ; DEF: 1-220 swritestringplace * const numeric ; DEF: 1-216 swritesubstringplace * const numeric ; DEF: 1-217 sxl const scalar, ord=2 ; DEF: 1-918 symb * const numeric ; DEF: 1-335 symbolp field disp:10, size:310 ; array of (pointer) ; DEF: 1-628 symbolplace field disp:100, size:4 ; integer ; DEF: 1-513 symbtablerefs field disp:104, size:4 ; integer ; DEF: 1-514 t_char_value field disp:14, size:4 ; char ; DEF: 1-499 t_int_value field disp:14, size:4 ; integer ; DEF: 1-497 t_real_value field disp:20, size:10 ; real ; DEF: 1-498 tad const scalar, ord=43 ; DEF: 1-771 tagval field disp:130, size:4 ; boolean ; DEF: 1-612 taly const scalar, ord=21 ; DEF: 1-768 tau const scalar, ord=1 ; DEF: 1-766 tauy const scalar, ord=17 ; DEF: 1-768 taval field disp:14, size:40 ; packed array of (char) ; DEF: 1-496 tci const scalar, ord=40 ; DEF: 1-771 tcl field disp:20, size:4 ; integer ; DEF: 1-495 tdi const scalar, ord=44 ; DEF: 1-771 tdic const scalar, ord=45 ; DEF: 1-771 temp_place * var local to gen_substring, loc:147, size:4 ; integer ; DEF: 2496 terminateplace * const numeric ; DEF: 1-371 tf1 const scalar, ord=32 ; DEF: 1-770 tf2 const scalar, ord=38 ; DEF: 1-770 tf3 const scalar, ord=39 ; DEF: 1-770 ti const scalar, ord=41 ; DEF: 1-771 ticy const scalar, ord=20 ; DEF: 1-768 tid const scalar, ord=46 ; DEF: 1-771 tidc const scalar, ord=47 ; DEF: 1-771 timeopplace * const numeric ; DEF: 1-197 titp const scalar, ord=33 ; DEF: 1-770 tits const scalar, ord=35 ; DEF: 1-770 tlevel field disp:130, size:4 ; numeric 0..20 ; DEF: 1-526 tno field disp:14, size:4 ; integer ; DEF: 1-495 token_list field disp:150, size:10 ; pointer ; DEF: 1-521 top_for_schema field disp:114, size:4 ; integer ; DEF: 1-517 tqly const scalar, ord=22 ; DEF: 1-768 tqu const scalar, ord=2 ; DEF: 1-766 tquy const scalar, ord=18 ; DEF: 1-768 transoptvptr * const numeric ; DEF: 1-230 truncplace * const numeric ; DEF: 1-180 tsc const scalar, ord=42 ; DEF: 1-771 tscr const scalar, ord=37 ; DEF: 1-770 tsd const scalar, ord=36 ; DEF: 1-770 twoto18m1 * const numeric ; DEF: 1-58 twoto27 * const numeric ; DEF: 1-59 tx0 const scalar, ord=8 ; DEF: 1-767 tx0y const scalar, ord=24 ; DEF: 1-769 tx1 const scalar, ord=9 ; DEF: 1-767 tx1y const scalar, ord=25 ; DEF: 1-769 tx2 const scalar, ord=10 ; DEF: 1-767 tx2y const scalar, ord=26 ; DEF: 1-769 tx3 const scalar, ord=11 ; DEF: 1-767 tx3y const scalar, ord=27 ; DEF: 1-769 tx4 const scalar, ord=12 ; DEF: 1-767 tx4y const scalar, ord=28 ; DEF: 1-769 tx5 const scalar, ord=13 ; DEF: 1-767 tx5y const scalar, ord=29 ; DEF: 1-769 tx6y const scalar, ord=30 ; DEF: 1-769 tx7y const scalar, ord=31 ; DEF: 1-769 tyal const scalar, ord=53 ; DEF: 1-772 tyau const scalar, ord=49 ; DEF: 1-772 tydl const scalar, ord=55 ; DEF: 1-772 tydu const scalar, ord=51 ; DEF: 1-772 tyic const scalar, ord=52 ; DEF: 1-772 type_description field disp:160, size:10 ; pointer ; DEF: 1-522 typix * type scalar ; DEF: 1-918 typofconst field disp:140, size:4 ; scalar ; DEF: 1-566 typofsymb * type scalar ; DEF: 1-669 typset field disp:220, size:10 ; pointer ; DEF: 1-540 typsig * type scalar ; DEF: 1-786 typusednames * type array of (array of (char)) ; DEF: 1-436 tyql const scalar, ord=54 ; DEF: 1-772 tyqu const scalar, ord=50 ; DEF: 1-772 tyx0 const scalar, ord=56 ; DEF: 1-773 tyx1 const scalar, ord=57 ; DEF: 1-773 tyx2 const scalar, ord=58 ; DEF: 1-773 tyx3 const scalar, ord=59 ; DEF: 1-773 tyx4 const scalar, ord=60 ; DEF: 1-773 tyx5 const scalar, ord=61 ; DEF: 1-773 tyx6 const scalar, ord=62 ; DEF: 1-773 tyx7 const scalar, ord=63 ; DEF: 1-773 tz23 const scalar, ord=19 ; DEF: 1-768 tz27 const scalar, ord=23 ; DEF: 1-768 tz42 const scalar, ord=34 ; DEF: 1-770 tz60 const scalar, ord=48 ; DEF: 1-772 unddeb field disp:170, size:4 ; integer ; DEF: 1-570 undmax * const numeric ; DEF: 1-21 uniformplace * const numeric ; DEF: 1-373 usednamesptr * type pointer ; DEF: 1-974 valplacew * const numeric ; DEF: 1-290 valreel field disp:150, size:10 ; real ; DEF: 1-568 valu field disp:0, size:4 ; integer ; DEF: 1-829 variants field disp:120, size:10 ; pointer ; DEF: 1-611 varmo field disp:220, size:4 ; boolean ; DEF: 1-605 varparam field disp:200, size:4 ; boolean ; DEF: 1-603 vdescaddr field disp:150, size:4 ; integer ; DEF: 1-600 vdispl field disp:144, size:4 ; integer ; DEF: 1-600 vdspl field disp:340, size:4 ; integer ; DEF: 1-637 vfather field disp:230, size:10 ; pointer ; DEF: 1-606 vfilelocation field disp:134, size:4 ; scalar ; DEF: 1-598 visreadonly field disp:174, size:4 ; boolean ; DEF: 1-603 visrefincode field disp:204, size:4 ; boolean ; DEF: 1-603 visset field disp:170, size:4 ; boolean ; DEF: 1-603 visused field disp:164, size:4 ; boolean ; DEF: 1-603 vkind field disp:130, size:4 ; scalar ; DEF: 1-597 vlevel field disp:154, size:4 ; numeric 0..20 ; DEF: 1-601 vlink_is_generated field disp:160, size:4 ; boolean ; DEF: 1-602 vmo field disp:140, size:4 ; boolean ; DEF: 1-882 vnexttofinit field disp:210, size:10 ; pointer ; DEF: 1-604 vpack field disp:344, size:4 ; boolean ; DEF: 1-637 vptextitem field disp:240, size:10 ; pointer ; DEF: 1-607 vreflist field disp:20, size:320 ; record ; DEF: 1-637 vtimeplace * const numeric ; DEF: 1-370 waitplace * const numeric ; DEF: 1-366 waitsonsplace * const numeric ; DEF: 1-356 wbase field disp:54, size:4 ; scalar ; DEF: 1-953 wdispl field disp:60, size:4 ; integer ; DEF: 1-954 windirect field disp:64, size:4 ; boolean ; DEF: 1-955 word1 field disp:0, size:4 ; integer ; DEF: 1-927 word2 field disp:4, size:4 ; integer ; DEF: 1-928 workfile const scalar, ord=2 ; DEF: 1-437 writelnplace * const numeric ; DEF: 1-170 writeseqplace * const numeric ; DEF: 1-169 writetextplace * const numeric ; DEF: 1-168 wstrfile field disp:70, size:4 ; integer ; DEF: 1-956 wstrindex field disp:74, size:4 ; integer ; DEF: 1-956 wstrlength field disp:100, size:4 ; integer ; DEF: 1-956 x0 const scalar, ord=11 ; DEF: 1-775 x1 const scalar, ord=12 ; DEF: 1-775 x2 const scalar, ord=13 ; DEF: 1-775 x3 const scalar, ord=14 ; DEF: 1-775 x4 const scalar, ord=15 ; DEF: 1-775 x5 const scalar, ord=16 ; DEF: 1-775 x6 const scalar, ord=17 ; DEF: 1-775 xbidon const scalar, ord=19 ; DEF: 1-776 zabc * type scalar ; DEF: 1-795 NAMES DECLARED BY DEFAULT abs funct level 0 ; (standard) ; REF: 402 403 404 573 574 575 828 829 829 830 1101 1102 1103 boolean type boolean ; REF: 1-456 1-467 1-486 1-525 1-537 1-548 1-575 1-576 1-582 1-589 1-591 1-593 1-595 1-602 1-603 1-605 1-612 1-637 1-870 1-878 1-882 1-883 1-911 1-920 1-955 1-967 148 152 168 177 181 189 236 238 266 269 273 274 286 288 289 496 697 900 1038 1279 1657 2045 2497 2503 2504 2737 2739 2740 2743 2977 2979 2980 char type char ; REF: 1-397 1-398 1-399 1-400 1-422 1-499 2175 chr funct level 0 ; (standard) ; REF: 2199 false const scalar, ord=0 ; REF: 1-538 1-549 1-613 531 661 719 726 955 991 1172 1246 1300 1305 1321 1392 1445 1604 1712 1811 1857 1864 1902 1928 2031 2101 2120 2135 2163 2243 2243 2305 2396 2424 2450 2515 2542 2547 2560 2588 2599 2604 2625 2625 2647 2694 2753 2777 2814 2817 2817 2871 2871 2872 2872 2992 3030 3037 3095 3095 3096 3096 integer type integer ; REF: 1-397 1-398 1-399 1-400 1-418 1-422 1-423 1-428 1-429 1-430 1-434 1-436 1-449 1-453 1-454 1-455 1-468 1-481 1-495 1-497 1-511 1-513 1-514 1-517 1-520 1-524 1-531 1-535 1-536 1-539 1-541 1-543 1-545 1-549 1-559 1-567 1-570 1-574 1-579 1-580 1-588 1-592 1-594 1-599 1-600 1-609 1-610 1-614 1-619 1-620 1-621 1-627 1-628 1-636 1-637 1-642 1-643 1-647 1-648 1-651 1-660 1-667 1-809 1-810 1-815 1-815 1-820 1-829 1-830 1-835 1-840 1-845 1-861 1-868 1-877 1-891 1-902 1-905 1-912 1-925 1-927 1-928 1-934 1-934 1-942 1-947 1-950 1-954 1-956 1-973 149 150 153 154 176 180 182 190 190 200 201 201 224 225 226 227 228 228 230 230 245 246 248 248 249 249 256 260 264 264 267 270 276 298 298 298 346 348 494 684 693 805 883 899 1035 1195 1203 1266 1280 1408 1408 1417 1478 1492 1624 1648 1649 1652 1829 2046 2047 2051 2054 2173 2336 2346 2413 2496 2499 2500 2502 2503 2733 2734 2735 2737 2741 2741 2742 2975 2976 2981 2981 2982 new proc level 0 ; REF: 2181 2216 odd funct level 0 ; (standard) ; REF: 426 669 751 1130 1247 1564 1605 1754 ord funct level 0 ; (standard) ; REF: 719 720 722 726 727 728 1358 1445 2268 2286 real type real ; REF: 1-498 1-568 1-834 1-903 311 312 text type text ; REF: 172 true const scalar, ord=1 ; REF: 1-539 1-550 1-614 436 530 598 649 1140 1294 1300 1317 1919 1950 1967 1987 1999 2018 2033 2094 2150 2303 2441 2595 2634 2644 2692 2788 2828 2881 2891 2902 2924 2939 3105 3114 3125 3147 3159 trunc funct level 0 ; (standard) ; REF: 326 write proc level 0 ; REF: 355 470 501 674 703 781 812 873 907 1013 1045 1185 1209 1255 1286 1398 1422 1468 1499 1612 1662 1720 1722 1818 NO LABELS STATEMENT MAP FILE LINE ST LOC FILE LINE ST LOC FILE LINE ST LOC FILE LINE ST LOC FILE LINE ST LOC FILE LINE ST LOC 298 1 0 315 1 11 316 1 14 316 2 16 317 1 20 317 2 23 318 1 26 319 1 30 320 1 34 321 1 44 322 1 50 323 1 54 324 1 73 324 2 76 325 1 111 325 2 114 326 1 127 327 1 134 327 1 140 332 1 144 353 1 161 355 1 163 355 2 174 358 1 202 359 1 203 360 1 207 362 1 216 362 2 221 365 1 224 365 2 227 368 1 232 369 1 236 371 1 245 371 2 250 374 1 253 374 2 256 376 1 260 378 1 262 380 1 271 381 1 300 382 1 311 383 1 320 384 1 330 386 1 333 387 1 335 388 1 341 389 1 351 390 1 353 391 1 356 392 1 360 393 1 364 393 2 370 395 1 373 396 1 376 397 1 401 397 2 405 397 3 410 399 1 413 400 1 415 402 1 424 403 1 432 404 1 440 405 1 446 407 1 451 409 1 454 410 1 502 411 1 505 412 1 510 412 2 524 412 3 527 414 1 532 415 1 536 416 1 541 418 1 544 419 1 547 419 2 563 419 3 566 421 1 571 421 2 575 421 3 600 422 1 603 423 1 606 424 1 635 426 1 662 428 1 665 428 2 671 431 1 676 431 2 702 433 1 706 436 1 726 437 1 730 440 1 733 443 1 735 446 1 750 447 1 764 449 1 1002 449 2 1004 450 1 1006 452 1 1062 453 1 1071 453 2 1100 454 1 1111 455 1 1125 457 1 1143 457 2 1145 458 1 1147 460 1 1214 460 2 1223 461 1 1227 462 1 1255 462 2 1303 463 1 1313 465 1 1342 466 1 1372 468 1 1376 470 1 1401 470 2 1420 473 1 1426 473 1 1427 480 1 1461 499 1 1476 501 1 1500 501 2 1511 504 1 1517 505 1 1520 506 1 1522 508 1 1526 510 1 1535 510 2 1540 512 1 1543 512 2 1546 514 1 1550 516 1 1552 518 1 1561 518 2 1563 519 1 1565 520 1 1574 521 1 1605 522 1 1614 525 1 1625 525 2 1627 525 3 1631 526 1 1633 528 1 1637 530 1 1657 530 2 1663 530 3 1665 530 4 1667 531 1 1672 534 1 1673 535 1 1677 536 1 1707 537 1 1711 538 1 1714 539 1 1717 540 1 1722 540 2 1736 540 3 1741 541 1 1744 542 1 1747 543 1 1775 545 1 2004 547 1 2007 549 1 2013 549 2 2017 549 3 2032 551 1 2035 553 1 2040 553 2 2054 553 3 2057 555 1 2062 558 1 2065 559 1 2070 559 2 2104 559 3 2107 560 1 2112 561 1 2115 562 1 2120 566 1 2146 567 1 2151 567 2 2155 567 3 2160 569 1 2163 570 1 2166 570 2 2202 570 3 2205 571 1 2210 572 1 2213 573 1 2215 574 1 2223 575 1 2231 575 2 2237 577 1 2242 580 1 2270 581 1 2273 582 1 2276 583 1 2301 583 2 2315 583 3 2320 584 1 2323 585 1 2326 586 1 2331 587 1 2357 588 1 2362 588 2 2376 588 3 2401 589 1 2404 590 1 2407 591 1 2412 592 1 2440 593 1 2467 595 1 2514 598 1 2534 599 1 2536 602 1 2541 605 1 2543 608 1 2556 609 1 2572 610 1 2610 611 1 2612 611 2 2615 612 1 2620 614 1 2674 615 1 2710 616 1 2726 617 1 2730 617 2 2733 618 1 2736 619 1 3011 621 1 3047 622 1 3056 622 2 3065 623 1 3076 624 1 3112 625 1 3130 626 1 3132 626 2 3135 627 1 3140 630 1 3214 631 1 3223 632 1 3232 633 1 3234 634 1 3265 635 1 3316 635 2 3344 636 1 3354 638 1 3403 638 2 3431 639 1 3441 641 1 3470 642 1 3506 644 1 3510 645 1 3522 645 2 3525 647 1 3530 647 2 3533 649 1 3535 650 1 3563 652 1 3566 653 1 3570 653 2 3573 654 1 3576 655 1 3651 657 1 3655 658 1 3671 660 1 3727 661 1 3743 662 1 3761 663 1 3777 664 1 4001 664 2 4004 665 1 4007 666 1 4062 668 1 4120 669 1 4172 670 1 4175 672 1 4202 674 1 4205 674 2 4223 677 1 4231 677 1 4232 684 1 4264 701 1 4301 703 1 4303 703 2 4322 706 1 4330 707 1 4346 709 1 4350 709 2 4352 712 1 4355 712 2 4357 714 1 4361 714 2 4365 715 1 4373 715 2 4377 716 1 4407 717 1 4411 719 1 4415 720 1 4420 722 1 4424 724 1 4430 726 1 4434 727 1 4437 728 1 4443 730 1 4447 732 1 4452 734 1 4466 735 1 4470 736 1 4474 737 1 4500 740 1 4503 741 1 4505 742 1 4511 743 1 4515 747 1 4520 748 1 4524 748 2 4527 748 3 4532 750 1 4535 750 2 4540 750 3 4543 751 1 4545 753 1 4550 753 2 4554 756 1 4561 756 2 4565 758 1 4571 759 1 4573 760 1 4607 762 1 4625 762 2 4627 763 1 4631 765 1 4705 767 1 4716 768 1 4732 770 1 4750 770 2 4752 771 1 4754 773 1 5030 773 2 5056 774 1 5066 776 1 5124 777 1 5155 779 1 5161 781 1 5164 781 2 5203 784 1 5211 784 1 5212 791 1 5233 810 1 5250 812 1 5252 812 2 5263 815 1 5271 817 1 5275 818 1 5300 819 1 5302 820 1 5306 822 1 5311 824 1 5315 825 1 5320 827 1 5323 828 1 5325 829 1 5333 829 2 5341 830 1 5347 830 2 5355 833 1 5360 837 1 5363 838 1 5367 839 1 5377 840 1 5402 841 1 5405 842 1 5410 843 1 5413 844 1 5416 845 1 5421 847 1 5446 848 1 5450 850 1 5463 851 1 5477 852 1 5515 853 1 5517 853 2 5522 854 1 5525 855 1 5571 858 1 5577 859 1 5613 860 1 5631 861 1 5633 861 2 5636 862 1 5641 865 1 5706 866 1 5716 868 1 5724 869 1 5737 871 1 5765 873 1 5770 873 2 6007 876 1 6015 876 1 6016 883 1 6041 905 1 6056 907 1 6060 907 2 6076 910 1 6104 911 1 6122 912 1 6126 913 1 6136 914 1 6140 915 1 6143 916 1 6146 916 2 6162 916 3 6165 917 1 6170 918 1 6173 919 1 6175 919 2 6200 920 1 6203 921 1 6206 921 2 6211 922 1 6213 922 2 6217 922 3 6222 923 1 6225 924 1 6253 925 1 6257 926 1 6261 926 2 6264 927 1 6267 927 2 6272 927 3 6275 928 1 6300 928 2 6303 929 1 6305 929 2 6310 929 3 6313 930 1 6316 930 2 6321 931 1 6324 932 1 6327 932 2 6343 932 3 6346 933 1 6351 934 1 6354 935 1 6357 935 2 6373 936 1 6376 936 2 6402 936 3 6405 937 1 6410 938 1 6412 938 2 6415 938 3 6420 939 1 6423 939 2 6426 940 1 6430 940 2 6434 940 3 6437 941 1 6442 941 2 6446 941 3 6451 942 1 6454 943 1 6502 944 1 6527 945 1 6531 946 1 6544 947 1 6557 948 1 6570 949 1 6572 950 1 6613 954 1 6631 955 1 6645 956 1 6663 956 2 6667 957 1 6677 958 1 6713 959 1 6731 960 1 6733 960 2 6736 961 1 6741 962 1 7005 964 1 7007 965 1 7035 966 1 7037 967 1 7065 968 1 7103 969 1 7105 969 2 7110 970 1 7113 971 1 7157 974 1 7176 974 2 7212 975 1 7226 976 1 7244 977 1 7246 977 2 7251 978 1 7254 979 1 7320 981 1 7322 982 1 7350 983 1 7352 984 1 7400 985 1 7416 986 1 7420 986 2 7423 987 1 7426 988 1 7472 991 1 7511 991 2 7525 991 3 7543 992 1 7557 993 1 7575 994 1 7577 994 2 7602 995 1 7605 996 1 7651 998 1 7653 999 1 7701 1000 1 7703 1001 1 7731 1002 1 7747 1003 1 7751 1003 2 7754 1004 1 7757 1005 1 10023 1008 1 10042 1009 1 10114 1011 1 10121 1013 1 10124 1013 2 10143 1016 1 10151 1016 1 10152 1023 1 10173 1043 1 10210 1045 1 10212 1045 2 10223 1048 1 10231 1048 2 10232 1048 3 10233 1049 1 10234 1050 1 10240 1052 1 10242 1054 1 10251 1054 2 10254 1055 1 10257 1055 2 10263 1057 1 10266 1057 2 10271 1058 1 10274 1058 2 10300 1059 1 10303 1061 1 10323 1062 1 10327 1064 1 10331 1066 1 10340 1066 2 10343 1067 1 10346 1067 2 10352 1069 1 10355 1069 2 10360 1070 1 10363 1070 2 10367 1071 1 10372 1073 1 10411 1075 1 10413 1077 1 10422 1078 1 10431 1079 1 10442 1080 1 10451 1081 1 10461 1083 1 10464 1084 1 10466 1085 1 10472 1086 1 10502 1087 1 10524 1088 1 10526 1089 1 10531 1091 1 10533 1092 1 10535 1092 2 10547 1092 3 10552 1094 1 10555 1096 1 10560 1097 1 10563 1099 1 10565 1100 1 10567 1101 1 10573 1102 1 10601 1103 1 10607 1103 2 10615 1106 1 10620 1108 1 10624 1110 1 10627 1112 1 10631 1113 1 10634 1113 2 10646 1113 3 10651 1115 1 10654 1115 2 10660 1115 3 10663 1117 1 10666 1119 1 10671 1119 2 10673 1120 1 10676 1121 1 10701 1121 2 10715 1121 3 10720 1122 1 10723 1123 1 10725 1123 2 10731 1123 3 10734 1125 1 10737 1126 1 10742 1126 2 10746 1126 3 10751 1127 1 10754 1128 1 11002 1130 1 11027 1132 1 11032 1132 2 11036 1132 3 11042 1135 1 11045 1135 2 11051 1135 3 11055 1137 1 11057 1140 1 11077 1141 1 11101 1144 1 11104 1147 1 11106 1150 1 11121 1151 1 11135 1153 1 11153 1153 2 11155 1154 1 11157 1155 1 11232 1156 1 11235 1156 2 11237 1158 1 11246 1159 1 11256 1160 1 11265 1160 2 11274 1162 1 11305 1163 1 11314 1164 1 11320 1165 1 11346 1166 1 11362 1168 1 11411 1169 1 11425 1171 1 11454 1172 1 11470 1173 1 11506 1175 1 11524 1175 2 11526 1176 1 11530 1177 1 11603 1178 1 11606 1178 2 11610 1180 1 11617 1181 1 11675 1183 1 11701 1185 1 11704 1185 2 11723 1188 1 11731 1188 1 11732 1195 1 11763 1207 1 12000 1209 1 12002 1209 2 12013 1212 1 12021 1213 1 12023 1214 1 12032 1214 2 12046 1216 1 12051 1217 1 12060 1217 2 12074 1219 1 12076 1222 1 12101 1223 1 12115 1224 1 12127 1225 1 12140 1226 1 12166 1227 1 12214 1229 1 12225 1230 1 12231 1231 1 12241 1232 1 12255 1233 1 12267 1234 1 12300 1235 1 12326 1236 1 12354 1238 1 12357 1238 2 12371 1239 1 12402 1240 1 12430 1240 2 12442 1241 1 12453 1243 1 12501 1243 2 12511 1244 1 12521 1246 1 12523 1246 2 12526 1246 3 12530 1247 1 12533 1248 1 12536 1249 1 12553 1253 1 12567 1255 1 12572 1256 1 12620 1259 1 12626 1259 1 12627 1266 1 12654 1284 1 12671 1286 1 12673 1286 2 12711 1289 1 12717 1291 1 12721 1293 1 12725 1294 1 12741 1294 2 12752 1294 3 12757 1295 1 12761 1295 2 12762 1296 1 12763 1298 1 12765 1298 2 12767 1299 1 12772 1299 2 12775 1300 1 13007 1300 2 13012 1300 3 13014 1300 4 13016 1300 5 13020 1301 1 13023 1305 1 13036 1306 1 13037 1307 1 13043 1308 1 13056 1308 2 13070 1309 1 13076 1309 2 13102 1312 1 13113 1314 1 13115 1316 1 13121 1317 1 13135 1317 2 13137 1317 3 13144 1317 4 13146 1318 1 13147 1321 1 13151 1321 2 13152 1322 1 13156 1324 1 13172 1325 1 13206 1325 2 13210 1325 3 13211 1328 1 13213 1328 2 13225 1329 1 13233 1333 1 13244 1335 1 13246 1335 2 13251 1337 1 13264 1339 1 13266 1339 2 13271 1341 1 13303 1342 1 13325 1343 1 13330 1343 2 13333 1344 1 13345 1346 1 13350 1346 2 13352 1346 3 13354 1346 4 13355 1349 1 13357 1349 2 13361 1349 3 13363 1349 4 13365 1350 1 13367 1351 1 13372 1353 1 13405 1354 1 13433 1356 1 13461 1356 2 13462 1358 1 13463 1359 1 13505 1361 1 13520 1362 1 13522 1362 2 13525 1363 1 13531 1363 2 13535 1364 1 13540 1365 1 13614 1366 1 13616 1366 2 13621 1367 1 13625 1367 2 13631 1368 1 13634 1369 1 13710 1370 1 13713 1370 2 13716 1373 1 13721 1374 1 13723 1374 2 13726 1375 1 13732 1375 2 13736 1376 1 13741 1377 1 14015 1378 1 14017 1378 2 14022 1379 1 14026 1379 2 14032 1380 1 14035 1382 1 14111 1383 1 14113 1384 1 14116 1385 1 14121 1386 1 14124 1387 1 14127 1388 1 14150 1389 1 14160 1390 1 14170 1392 1 14172 1392 2 14175 1392 3 14177 1393 1 14202 1396 1 14205 1398 1 14210 1398 2 14227 1401 1 14235 1401 1 14236 1408 1 14263 1420 1 14300 1422 1 14302 1422 2 14321 1425 1 14327 1426 1 14331 1428 1 14335 1429 1 14340 1430 1 14343 1431 1 14346 1432 1 14351 1433 1 14354 1434 1 14357 1435 1 14362 1436 1 14365 1437 1 14370 1438 1 14373 1439 1 14376 1440 1 14430 1440 2 14435 1441 1 14446 1443 1 14451 1445 1 14455 1446 1 14460 1446 2 14463 1447 1 14465 1450 1 14470 1451 1 14504 1451 2 14506 1452 1 14510 1454 1 14521 1456 1 14524 1458 1 14526 1461 1 14572 1462 1 14574 1466 1 14631 1468 1 14634 1468 2 14653 1471 1 14661 1471 1 14662 1478 1 14711 1497 1 14726 1499 1 14730 1499 2 14741 1502 1 14747 1503 1 14756 1504 1 14760 1505 1 14767 1506 1 15000 1507 1 15007 1509 1 15020 1510 1 15022 1510 2 15026 1511 1 15034 1512 1 15040 1513 1 15050 1514 1 15051 1515 1 15053 1516 1 15056 1517 1 15061 1518 1 15064 1518 2 15070 1518 3 15073 1519 1 15076 1520 1 15105 1520 2 15110 1520 3 15113 1523 1 15116 1523 2 15121 1523 3 15124 1525 1 15127 1526 1 15155 1528 1 15164 1528 2 15167 1528 3 15172 1531 1 15175 1532 1 15200 1533 1 15202 1534 1 15206 1534 2 15212 1536 1 15215 1537 1 15217 1539 1 15222 1539 2 15236 1541 1 15241 1542 1 15245 1542 2 15251 1545 1 15254 1547 1 15257 1548 1 15262 1548 2 15276 1548 3 15301 1549 1 15304 1549 2 15307 1549 3 15312 1550 1 15315 1551 1 15320 1553 1 15346 1554 1 15351 1554 2 15365 1554 3 15370 1555 1 15373 1555 2 15376 1555 3 15401 1556 1 15404 1557 1 15407 1558 1 15435 1559 1 15437 1560 1 15443 1560 2 15446 1562 1 15451 1563 1 15500 1564 1 15525 1566 1 15530 1566 2 15534 1569 1 15541 1569 2 15545 1571 1 15551 1574 1 15553 1577 1 15566 1578 1 15602 1580 1 15620 1580 2 15622 1581 1 15624 1583 1 15700 1584 1 15714 1586 1 15732 1586 2 15734 1587 1 15736 1589 1 16003 1589 2 16031 1590 1 16041 1592 1 16070 1594 1 16106 1594 2 16110 1595 1 16112 1597 1 16157 1598 1 16174 1599 1 16211 1600 1 16265 1600 2 16275 1601 1 16305 1604 1 16307 1604 2 16312 1604 3 16315 1605 1 16317 1606 1 16322 1607 1 16337 1610 1 16353 1612 1 16356 1614 1 16404 1617 1 16412 1617 1 16413 1624 1 16441 1660 1 16456 1662 1 16460 1662 2 16505 1665 1 16513 1666 1 16514 1667 1 16520 1668 1 16524 1669 1 16526 1671 1 16532 1671 2 16536 1671 3 16541 1672 1 16544 1672 2 16550 1672 3 16553 1673 1 16556 1674 1 16603 1675 1 16605 1677 1 16611 1677 2 16615 1677 3 16620 1678 1 16623 1678 2 16627 1678 3 16632 1679 1 16635 1681 1 16662 1683 1 16665 1683 2 16667 1683 3 16671 1686 1 16674 1686 2 16676 1686 3 16700 1689 1 16703 1689 2 16705 1689 3 16707 1692 1 16712 1693 1 16714 1693 2 16716 1694 1 16720 1697 1 16723 1697 2 16725 1697 3 16727 1697 4 16731 1700 1 16734 1700 2 16736 1700 3 16740 1701 1 16742 1704 1 16745 1704 2 16747 1704 3 16751 1705 1 16753 1707 1 16756 1708 1 17001 1709 1 17017 1710 1 17035 1711 1 17040 1712 1 17057 1713 1 17060 1714 1 17064 1715 1 17071 1716 1 17101 1718 1 17130 1720 1 17133 1720 2 17144 1721 1 17152 1721 2 17162 1722 1 17172 1724 1 17233 1727 1 17241 1729 1 17243 1732 1 17246 1733 1 17250 1734 1 17253 1734 2 17256 1735 1 17261 1736 1 17264 1738 1 17266 1738 2 17272 1739 1 17275 1739 2 17277 1741 1 17302 1742 1 17304 1743 1 17307 1743 2 17323 1747 1 17326 1747 2 17337 1749 1 17342 1752 1 17345 1754 1 17372 1756 1 17375 1756 2 17401 1756 3 17405 1756 4 17407 1759 1 17412 1759 2 17416 1759 3 17422 1759 4 17424 1760 1 17426 1762 1 17430 1764 1 17433 1765 1 17447 1766 1 17465 1766 2 17467 1767 1 17471 1769 1 17545 1769 2 17561 1770 1 17563 1771 1 17565 1772 1 17601 1774 1 17620 1774 2 17634 1774 3 17636 1776 1 17640 1778 1 17643 1779 1 17646 1779 2 17660 1780 1 17662 1782 1 17674 1783 1 17706 1785 1 17717 1785 2 17745 1785 3 17747 1787 1 17751 1788 1 17767 1788 2 17771 1789 1 17773 1790 1 20015 1790 2 20017 1791 1 20021 1792 1 20066 1794 1 20125 1794 2 20141 1795 1 20143 1796 1 20171 1796 2 20173 1797 1 20175 1798 1 20217 1799 1 20255 1801 1 20314 1802 1 20336 1804 1 20341 1804 2 20345 1807 1 20356 1807 2 20366 1808 1 20376 1811 1 20400 1811 2 20403 1811 3 20405 1812 1 20410 1816 1 20413 1818 1 20416 1818 2 20435 1821 1 20443 1821 1 20444 1825 1 20514 1834 1 20531 1835 1 20533 1836 1 20537 1837 1 20550 1839 1 20556 1841 1 20572 1842 1 20575 1842 2 20607 1844 1 20616 1845 1 20632 1845 2 20643 1846 1 20644 1848 1 20646 1848 2 20651 1848 3 20663 1849 1 20666 1852 1 20670 1854 1 20673 1856 1 20705 1857 1 20707 1860 1 20726 1862 1 20730 1864 1 20736 1865 1 20757 1866 1 20762 1868 1 20777 1869 1 21013 1872 1 21024 1873 1 21065 1873 2 21071 1874 1 21103 1875 1 21140 1875 2 21142 1876 1 21170 1877 1 21244 1877 2 21246 1878 1 21274 1879 1 21312 1880 1 21337 1883 1 21355 1883 1 21356 1897 1 21364 1899 1 21371 1900 1 21375 1902 1 21410 1903 1 21427 1905 1 21433 1906 1 21437 1906 2 21442 1907 1 21446 1908 1 21451 1910 1 21452 1912 1 21457 1913 1 21465 1915 1 21503 1915 2 21516 1916 1 21522 1916 2 21531 1919 1 21544 1919 2 21562 1920 1 21565 1920 2 21577 1921 1 21602 1921 2 21604 1923 1 21606 1923 1 21607 1891 1 21610 1926 1 21621 1928 1 21623 1928 2 21625 1929 1 21630 1929 2 21632 1929 3 21635 1929 4 21640 1931 1 21643 1932 1 21647 1934 1 21656 1934 2 21661 1935 1 21664 1937 1 21667 1938 1 21674 1938 2 21677 1941 1 21705 1941 2 21727 1942 1 21732 1942 2 21735 1943 1 21740 1943 2 21745 1944 1 21760 1945 1 22030 1948 1 22041 1949 1 22056 1949 2 22064 1949 3 22076 1950 1 22101 1951 1 22104 1952 1 22115 1953 1 22164 1953 2 22166 1954 1 22171 1956 1 22202 1958 1 22230 1959 1 22244 1961 1 22262 1962 1 22267 1963 1 22304 1963 2 22317 1963 3 22323 1963 4 22325 1964 1 22327 1965 1 22342 1967 1 22345 1967 2 22372 1969 1 22375 1970 1 22453 1971 1 22531 1972 1 22577 1974 1 22602 1975 1 22624 1976 1 22673 1978 1 22676 1979 1 22707 1979 2 22712 1983 1 22736 1985 1 22741 1985 2 22755 1985 3 22767 1986 1 22772 1986 2 22774 1986 3 22776 1987 1 23004 1990 1 23010 1991 1 23015 1993 1 23027 1994 1 23053 1996 1 23057 1997 1 23064 1999 1 23067 1999 2 23114 2001 1 23117 2002 1 23156 2004 1 23161 2005 1 23203 2006 1 23206 2008 1 23255 2008 2 23260 2010 1 23304 2012 1 23311 2014 1 23322 2015 1 23327 2017 1 23332 2018 1 23337 2018 2 23364 2019 1 23367 2019 2 23374 2020 1 23407 2021 1 23466 2021 2 23471 2024 1 23515 2024 2 23521 2024 3 23534 2026 1 23540 2026 2 23545 2028 1 23547 2029 1 23551 2031 1 23555 2031 2 23557 2033 1 23561 2034 1 23563 2034 1 23564 2058 1 23574 2060 1 23601 2061 1 23604 2062 1 23610 2065 1 23621 2066 1 23642 2068 1 23674 2068 1 23675 2069 1 23676 2071 1 23703 2073 1 23706 2075 1 23712 2076 1 23741 2077 1 23745 2078 1 23767 2081 1 24022 2083 1 24054 2083 1 24055 2085 1 24056 2087 1 24063 2088 1 24071 2090 1 24110 2090 2 24122 2091 1 24126 2091 2 24135 2094 1 24150 2094 2 24167 2095 1 24172 2095 2 24203 2096 1 24206 2096 2 24210 2098 1 24212 2098 1 24213 2056 1 24214 2101 1 24225 2101 2 24227 2102 1 24231 2103 1 24235 2105 1 24244 2105 2 24247 2106 1 24251 2108 1 24254 2109 1 24261 2109 2 24264 2112 1 24272 2112 2 24315 2113 1 24320 2113 2 24322 2114 1 24325 2116 1 24331 2116 2 24336 2117 1 24352 2120 1 24424 2121 1 24443 2122 1 24473 2124 1 24523 2126 1 24535 2127 1 24562 2129 1 24570 2130 1 24605 2132 1 24624 2133 1 24642 2133 2 24654 2133 3 24660 2133 4 24662 2134 1 24664 2135 1 24700 2136 1 24717 2137 1 24756 2138 1 25015 2139 1 25044 2140 1 25067 2141 1 25117 2142 1 25124 2146 1 25137 2148 1 25142 2148 2 25157 2148 3 25170 2149 1 25173 2149 2 25175 2149 3 25177 2149 4 25205 2150 1 25207 2153 1 25213 2154 1 25220 2154 2 25231 2156 1 25234 2157 1 25260 2159 1 25266 2161 1 25277 2162 1 25304 2162 2 25311 2163 1 25325 2164 1 25344 2165 1 25403 2165 2 25410 2166 1 25412 2168 1 25417 2168 1 25420 2175 1 25426 2178 1 25437 2179 1 25446 2181 1 25454 2181 2 25463 2181 3 25471 2182 1 25501 2183 1 25507 2185 1 25513 2186 1 25515 2187 1 25517 2190 1 25525 2192 1 25531 2193 1 25536 2195 1 25567 2195 1 25570 2170 1 25575 2198 1 25606 2199 1 25610 2199 2 25614 2201 1 25645 2202 1 25652 2204 1 25656 2205 1 25660 2205 2 25667 2205 3 25726 2206 1 25733 2209 1 25736 2210 1 25747 2210 1 25750 2040 1 25754 2213 1 25771 2216 1 26034 2216 2 26037 2216 3 26043 2217 1 26051 2217 2 26053 2219 1 26055 2220 1 26057 2221 1 26061 2223 1 26067 2224 1 26070 2224 2 26077 2225 1 26106 2227 1 26110 2227 2 26113 2228 1 26115 2229 1 26140 2231 1 26144 2231 2 26147 2232 1 26152 2233 1 26155 2235 1 26160 2240 1 26164 2240 2 26165 2241 1 26166 2242 1 26177 2243 1 26210 2243 2 26226 2244 1 26244 2246 1 26246 2247 1 26264 2248 1 26306 2252 1 26335 2253 1 26363 2254 1 26371 2256 1 26417 2257 1 26445 2258 1 26503 2260 1 26505 2260 2 26511 2261 1 26523 2262 1 26525 2263 1 26536 2264 1 26575 2265 1 26614 2266 1 26642 2266 2 26644 2267 1 26646 2267 2 26652 2268 1 26664 2269 1 26706 2269 2 26711 2270 1 26715 2270 2 26721 2271 1 26724 2272 1 26771 2273 1 27027 2273 2 27031 2275 1 27041 2276 1 27051 2277 1 27077 2279 1 27101 2279 2 27105 2280 1 27117 2281 1 27121 2282 1 27132 2283 1 27171 2284 1 27210 2285 1 27236 2285 2 27240 2286 1 27242 2287 1 27264 2287 2 27267 2288 1 27273 2288 2 27277 2289 1 27302 2290 1 27347 2291 1 27405 2291 2 27407 2293 1 27417 2294 1 27427 2295 1 27437 2295 2 27445 2295 3 27456 2296 1 27460 2297 1 27526 2299 1 27530 2300 1 27532 2302 1 27601 2303 1 27647 2304 1 27652 2304 2 27664 2304 3 27667 2305 1 27671 2306 1 27717 2308 1 27722 2309 1 27725 2311 1 27727 2312 1 27752 2314 1 27756 2314 2 27761 2315 1 27764 2319 1 27770 2320 1 30007 2322 1 30013 2323 1 30016 2324 1 30021 2330 1 30024 2330 1 30025 2336 1 30046 2350 1 30063 2352 1 30076 2352 2 30101 2352 3 30104 2353 1 30106 2354 1 30123 2357 1 30141 2358 1 30156 2362 1 30173 2362 2 30177 2363 1 30211 2363 2 30215 2367 1 30227 2367 2 30233 2368 1 30245 2368 2 30251 2370 1 30263 2370 2 30274 2371 1 30305 2373 1 30327 2375 1 30403 2376 1 30457 2377 1 30461 2378 1 30464 2379 1 30467 2380 1 30472 2381 1 30475 2384 1 30516 2384 2 30520 2385 1 30530 2385 2 30534 2389 1 30544 2389 2 30546 2390 1 30556 2390 2 30562 2392 1 30572 2393 1 30602 2394 1 30612 2396 1 30614 2396 2 30617 2396 3 30621 2397 1 30624 2399 1 30627 2399 1 30630 2405 1 30636 2416 1 30653 2417 1 30674 2418 1 30711 2419 1 30714 2420 1 30742 2422 1 30757 2424 1 30761 2425 1 30777 2427 1 31015 2428 1 31020 2430 1 31047 2431 1 31075 2431 2 31077 2432 1 31125 2433 1 31153 2436 1 31201 2438 1 31214 2439 1 31222 2439 2 31226 2440 1 31240 2441 1 31315 2441 2 31326 2441 3 31330 2442 1 31332 2447 1 31333 2447 2 31337 2448 1 31351 2448 2 31355 2450 1 31367 2451 1 31405 2452 1 31433 2453 1 31435 2454 1 31463 2454 2 31474 2455 1 31505 2457 1 31527 2459 1 31603 2460 1 31657 2460 2 31661 2461 1 31707 2462 1 31744 2463 1 31772 2464 1 32026 2465 1 32044 2466 1 32072 2469 1 32110 2469 2 32112 2470 1 32122 2470 2 32126 2474 1 32136 2474 2 32140 2475 1 32150 2475 2 32154 2477 1 32164 2478 1 32174 2479 1 32204 2480 1 32214 2482 1 32216 2482 2 32221 2482 3 32223 2483 1 32226 2483 2 32240 2485 1 32243 2486 1 32271 2486 1 32272 2493 1 32300 2507 1 32315 2507 2 32317 2510 1 32320 2511 1 32321 2513 1 32323 2514 1 32326 2515 1 32340 2515 2 32342 2515 3 32360 2516 1 32375 2516 2 32377 2518 1 32414 2518 2 32426 2518 3 32433 2520 1 32447 2521 1 32453 2521 2 32465 2522 1 32467 2523 1 32474 2524 1 32521 2526 1 32535 2527 1 32556 2528 1 32624 2530 1 32626 2530 2 32630 2531 1 32656 2532 1 32703 2534 1 32721 2537 1 32767 2538 1 32777 2540 1 33001 2542 1 33004 2543 1 33022 2546 1 33037 2547 1 33051 2547 2 33067 2548 1 33072 2549 1 33074 2550 1 33077 2550 2 33111 2551 1 33113 2552 1 33116 2553 1 33141 2554 1 33177 2557 1 33246 2557 2 33253 2558 1 33266 2560 1 33272 2561 1 33310 2562 1 33336 2562 2 33340 2565 1 33367 2566 1 33414 2568 1 33424 2570 1 33426 2572 1 33430 2572 2 33432 2573 1 33460 2574 1 33476 2576 1 33514 2577 1 33522 2578 1 33550 2579 1 33571 2580 1 33617 2582 1 33621 2585 1 33636 2585 2 33642 2586 1 33652 2588 1 33654 2589 1 33655 2590 1 33657 2591 1 33661 2593 1 33664 2594 1 33670 2595 1 33702 2599 1 33705 2600 1 33723 2604 1 33743 2605 1 33761 2606 1 33777 2609 1 34026 2610 1 34030 2612 1 34047 2613 1 34075 2615 1 34077 2616 1 34102 2618 1 34121 2619 1 34147 2619 2 34151 2620 1 34177 2621 1 34215 2625 1 34233 2625 2 34234 2626 1 34235 2628 1 34237 2629 1 34244 2630 1 34251 2631 1 34261 2633 1 34264 2633 2 34275 2634 1 34277 2637 1 34301 2639 1 34303 2641 1 34316 2642 1 34324 2642 2 34330 2643 1 34342 2644 1 34417 2644 2 34430 2644 3 34432 2647 1 34435 2647 2 34437 2647 3 34440 2649 1 34451 2650 1 34453 2651 1 34502 2652 1 34520 2652 2 34524 2653 1 34536 2654 1 34573 2654 2 34575 2656 1 34577 2656 2 34600 2657 1 34602 2659 1 34605 2659 2 34607 2660 1 34611 2662 1 34614 2662 2 34616 2665 1 34620 2669 1 34637 2669 2 34645 2669 3 34646 2669 4 34657 2670 1 34661 2671 1 34727 2673 1 34755 2675 1 34757 2675 2 34761 2678 1 34764 2678 2 34766 2680 1 34770 2680 2 34774 2681 1 35006 2681 2 35012 2682 1 35024 2683 1 35046 2684 1 35122 2685 1 35177 2685 2 35201 2686 1 35211 2687 1 35221 2687 2 35223 2689 1 35233 2690 1 35243 2692 1 35245 2693 1 35250 2693 2 35262 2693 3 35265 2694 1 35271 2695 1 35317 2697 1 35322 2698 1 35325 2700 1 35330 2701 1 35353 2703 1 35357 2703 2 35362 2704 1 35365 2708 1 35371 2709 1 35410 2711 1 35414 2712 1 35417 2713 1 35422 2718 1 35425 2718 1 35426 2724 1 35450 2748 1 35465 2749 1 35466 2751 1 35470 2752 1 35473 2753 1 35505 2753 2 35507 2753 3 35525 2754 1 35542 2754 2 35544 2756 1 35561 2756 2 35573 2756 3 35600 2758 1 35614 2759 1 35620 2759 2 35632 2760 1 35634 2761 1 35641 2762 1 35666 2764 1 35702 2765 1 35723 2766 1 35771 2768 1 35773 2768 2 35775 2769 1 36023 2770 1 36050 2772 1 36066 2775 1 36134 2777 1 36144 2777 2 36145 2777 3 36147 2778 1 36150 2778 2 36152 2779 1 36153 2781 1 36155 2782 1 36160 2784 1 36174 2784 2 36206 2784 3 36211 2787 1 36220 2787 2 36234 2787 3 36245 2788 1 36247 2790 1 36252 2790 2 36255 2790 3 36267 2791 1 36271 2793 1 36275 2793 2 36316 2794 1 36320 2794 2 36325 2795 1 36340 2797 1 36417 2798 1 36444 2799 1 36446 2801 1 36462 2802 1 36465 2802 2 36467 2803 1 36512 2804 1 36547 2804 2 36551 2805 1 36577 2806 1 36615 2809 1 36633 2810 1 36635 2813 1 36652 2813 2 36656 2814 1 36666 2815 1 36667 2817 1 36671 2817 2 36707 2818 1 36710 2820 1 36713 2821 1 36716 2821 2 36730 2822 1 36731 2824 1 36733 2825 1 36737 2826 1 36741 2826 2 36753 2828 1 36754 2828 2 36773 2831 1 36776 2832 1 37014 2832 2 37020 2833 1 37032 2834 1 37035 2834 2 37037 2835 1 37062 2838 1 37120 2839 1 37123 2841 1 37142 2841 2 37146 2842 1 37160 2843 1 37163 2843 2 37165 2844 1 37210 2846 1 37245 2846 2 37251 2847 1 37263 2849 1 37321 2849 2 37322 2850 1 37324 2851 1 37327 2852 1 37331 2853 1 37333 2856 1 37353 2857 1 37401 2859 1 37403 2859 2 37405 2860 1 37433 2861 1 37451 2866 1 37470 2866 2 37472 2867 1 37473 2870 1 37511 2870 2 37513 2871 1 37515 2871 2 37516 2872 1 37517 2872 2 37520 2873 1 37521 2875 1 37523 2876 1 37530 2877 1 37535 2878 1 37545 2880 1 37550 2880 2 37552 2881 1 37563 2882 1 37565 2884 1 37570 2885 1 37573 2886 1 37600 2887 1 37610 2889 1 37613 2889 2 37615 2891 1 37626 2896 1 37630 2898 1 37632 2898 2 37634 2899 1 37636 2901 1 37651 2901 2 37657 2901 3 37661 2902 1 37672 2903 1 37674 2903 2 37700 2904 1 37712 2907 1 37770 2907 2 37772 2909 1 40003 2910 1 40005 2911 1 40024 2912 1 40052 2912 2 40056 2913 1 40070 2915 1 40125 2916 1 40127 2918 1 40132 2919 1 40137 2920 1 40144 2921 1 40154 2923 1 40157 2923 2 40161 2924 1 40172 2927 1 40174 2929 1 40176 2929 2 40200 2930 1 40202 2931 1 40205 2933 1 40224 2933 2 40230 2934 1 40242 2936 1 40277 2936 2 40301 2937 1 40311 2938 1 40321 2938 2 40327 2938 3 40331 2939 1 40342 2940 1 40344 2940 2 40350 2941 1 40362 2942 1 40437 2945 1 40475 2945 2 40477 2946 1 40507 2948 1 40517 2948 2 40521 2949 1 40523 2949 2 40527 2949 3 40541 2949 4 40545 2950 1 40557 2951 1 40601 2952 1 40655 2953 1 40731 2953 2 40733 2954 1 40743 2954 2 40745 2955 1 40755 2955 2 40757 2956 1 40767 2958 1 40777 2958 1 41000 2964 1 41012 2987 1 41027 2988 1 41030 2990 1 41032 2991 1 41035 2992 1 41047 2992 2 41051 2992 3 41067 2993 1 41104 2993 2 41106 2995 1 41123 2995 2 41135 2995 3 41142 2997 1 41156 2998 1 41162 2998 2 41174 2999 1 41176 3000 1 41203 3001 1 41230 3003 1 41244 3004 1 41265 3005 1 41333 3007 1 41335 3007 2 41337 3008 1 41365 3009 1 41412 3011 1 41430 3014 1 41476 3016 1 41506 3018 1 41523 3021 1 41540 3022 1 41542 3023 1 41544 3025 1 41552 3027 1 41555 3029 1 41567 3030 1 41571 3033 1 41610 3035 1 41612 3037 1 41620 3038 1 41641 3039 1 41644 3041 1 41661 3042 1 41675 3045 1 41706 3046 1 41747 3046 2 41753 3047 1 41765 3048 1 42023 3048 2 42025 3049 1 42053 3050 1 42130 3050 2 42132 3052 1 42160 3053 1 42162 3056 1 42221 3056 2 42225 3057 1 42237 3059 1 42314 3060 1 42371 3060 2 42373 3061 1 42421 3062 1 42446 3062 2 42464 3063 1 42502 3064 1 42527 3070 1 42545 3071 1 42603 3072 1 42605 3073 1 42607 3076 1 42627 3078 1 42655 3079 1 42657 3081 1 42661 3082 1 42677 3082 2 42703 3083 1 42715 3088 1 42755 3088 2 42761 3089 1 42773 3090 1 43030 3090 2 43034 3091 1 43046 3094 1 43104 3094 2 43106 3095 1 43110 3095 2 43111 3096 1 43112 3096 2 43113 3097 1 43114 3099 1 43116 3100 1 43123 3101 1 43130 3102 1 43140 3104 1 43143 3104 2 43145 3105 1 43156 3106 1 43160 3108 1 43162 3109 1 43165 3110 1 43172 3111 1 43202 3113 1 43205 3113 2 43207 3114 1 43220 3119 1 43222 3121 1 43224 3121 2 43226 3122 1 43230 3124 1 43243 3124 2 43251 3124 3 43253 3125 1 43264 3126 1 43266 3126 2 43272 3127 1 43304 3130 1 43362 3130 2 43364 3132 1 43375 3133 1 43377 3134 1 43416 3135 1 43444 3135 2 43450 3136 1 43462 3138 1 43517 3139 1 43521 3141 1 43523 3142 1 43530 3143 1 43535 3144 1 43545 3146 1 43550 3146 2 43552 3147 1 43563 3150 1 43565 3152 1 43567 3152 2 43571 3153 1 43573 3154 1 43575 3156 1 43614 3158 1 43651 3158 2 43657 3158 3 43661 3159 1 43672 3160 1 43674 3160 2 43700 3161 1 43712 3162 1 43767 3164 1 44024 3164 2 44026 3165 1 44030 3165 2 44034 3165 3 44046 3165 4 44052 3166 1 44064 3167 1 44106 3168 1 44153 3169 1 44220 3169 2 44222 3170 1 44232 3170 2 44234 3173 1 44236 3173 2 44240 3174 1 44241 3174 2 44245 3175 1 44257 3176 1 44261 3178 1 44264 3178 2 44265 3179 1 44267 3179 2 44271 3182 1 44274 3184 1 44313 3185 1 44350 3186 1 44372 3187 1 44446 3189 1 44522 3189 2 44524 3190 1 44534 3190 2 44536 3192 1 44546 3192 2 44550 3193 1 44560 3194 1 44570 3196 1 44600 3196 1 44601 19 1 44612 19 1 44623 3199 1 44632 3199 1 44636 3199 1 44640 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved