COMPILATION LISTING OF SEGMENT: >spec>install>1212>DECLARE.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 1703.2 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 page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM *** ON 11/12/86 *** PAGE 2 19 20 $OPTIONS switch trace := true ; switch security := true ; t + $ 21 PROGRAM declare ; 22 $IMPORT 23 (* IMPORTED PROCEDURES *) 24 'pascal_context_ (alm)' : asciiformataddr, octalformataddr ; 25 (* FROM PL1 *) 26 'pascal_gen_bin_area (pl1)' : genbinarea ; 27 'pascal_gen_ext_variable (pl1)' : genextvariable ; 28 'pascal_gen_entry_point (pl1)' : genentrypoint ; 29 'pascal_gen_export_file (pl1)' : genexportfile ; 30 'pascal_gen_rel_$text (pl1)' : genreltext ; 31 'RACINE (pascal)' : 32 crealfabox, 33 error, 34 generrorlink, 35 geninputlink, 36 genoutputlink, 37 inconst, 38 inserundlab, 39 insymbol, 40 nameisref, 41 nextline, 42 poweroftwo, 43 recadre, 44 skip, 45 skipextd, 46 skiptochapter, 47 statement_begins, 48 statement_ends, 49 sup, 50 warning ; 51 'UNIQUE (pascal)' : 52 heaperror ; 53 'STANDSTAT (pascal)' : 54 compstat ; 55 'CONTEXTTABLE (pascal)' : 56 boundary, 57 bytesneeded, 58 checkminmax, 59 compatbin, 60 create_vars_box, 61 create_types_box, 62 create_proc_box, 63 create_field_box, 64 create_konst_box, 65 create_tagfield_box, 66 create_dummyclass_box, 67 existfileintype, 68 packedcadre, 69 packedsize, 70 printrec ; 71 72 'GENERE (pascal)' : 73 closefile, 74 exitlabel, 75 enterreftosymbol, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 3 76 genalfa, 77 genc, 78 gencodfonct, 79 geninsertion, 80 gen_init_fsb_trap_structures, 81 genmulticsnil, 82 genpgexit, 83 genprcentry, 84 genprcexit, 85 genprolog, 86 genr, 87 genstand, 88 genstring, 89 infich, 90 initiozone, 91 writout ; 92 'optimized_procedures (alm)' : search, srchrec ; 93 (* IMPORTED VARIABLES *) 94 'RACINE (pascal)' : 95 alfaptr, 96 aval, 97 boxheader, 98 bufval, 99 charptr, 100 check_id, 101 cl, 102 conint, 103 conreel, 104 ctptr, 105 currentnode, 106 declarationpart, 107 display, 108 environt, 109 envstandard, 110 errtotal, 111 exportablecode, 112 extcalltrapplace, 113 forbidden_id, 114 init_fsb_trap_flag, 115 intptr, 116 ival, 117 lastproc, 118 level, 119 listyes, 120 longchaine, 121 longstring, 122 majmin, 123 mapswitch, 124 mpcogerr, 125 mpcogout, 126 next, 127 nilptr, 128 no, 129 progname, 130 realptr, 131 staticswordcount, 132 statnbr, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 4 133 string_ptr, 134 symbolfile, 135 symbolindex, 136 symbolline, 137 symbolmap, 138 top, 139 usednames, 140 version, 141 xc ; 142 'GENERE (pascal)' : 143 cb, 144 fichinter, 145 ic, 146 indfich, 147 usednameaddr ; 148 'STATE (pascal)' : 149 currlcstpt, 150 currllcstpt, 151 currrcstpt, 152 currwcstpt, 153 lcsave, 154 linktoend, 155 linktoendplace, 156 tmax$ 157 158 $EXPORT 159 body, 160 analyzing_schema, 161 building_from_schema, 162 checkexternalitem, 163 clabix, 164 createexternalbox, 165 decltrace, 166 externallistheader, 167 filpts, 168 filtop, 169 firstlabbox, 170 forbidden_id_list, 171 getpr4afterstop, 172 hdrfile, 173 hdrindex, 174 hdrlength, 175 hdrline, 176 initdeclare, 177 labtab, 178 lc, 179 lkc, 180 maxctp, 181 nextalf, 182 lab_pdl_top, 183 push_lab_pdl, 184 pop_lab_pdl, 185 symbtabl, 186 tabform, 187 tabkinds, 188 tabklass, 189 tabkonst, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 5 190 tabpdef$ 191 192 193 194 195 196 197 $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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 6 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 ; 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 7 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 ; 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 8 1 165 readtextplace = 14 ; 1 166 readseqplace = 15 ; 1 167 readlnplace = 16 ; 1 168 writetextplace = 17 ; 1 169 writeseqplace = 18 ; 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 9 1 222 swriteenumplace = 100 ; 1 223 parmproccheckplace = 101 ; 1 224 functionvaluesetplace = 102 ; 1 225 functionvaluecheckplace = 103 ; 1 226 extend_stack_op_place = 104 ; 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. *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 10 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 *) 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 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 11 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 } 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 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 12 1 393 1 394 1 395 (*$PAGE *) 1 396 TYPE 1 397 numberstring = PACKED ARRAY [1..maxdigitsreal] OF char ; 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 13 1 450 extdecl : ctp ; 1 451 extitemtype : externalitemtype ; 1 452 extkind : idkinds ; 1 453 extpltdisp : integer ; 1 454 extareadisp : integer ; 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 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 14 1 507 contexttable = RECORD 1 508 name : alfaid ; 1 509 nxtel : ctp ; 1 510 alfathread : ctp ; 1 511 deffile, defline : integer ; 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) ;) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 15 1 564 konst : ( 1 565 succ, contype : ctp ; 1 566 CASE typofconst : consttype OF 1 567 wordconst : (values : integer) ; 1 568 dwordconst : (valreel : real) ; 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 16 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) ; 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 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 17 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, 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, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 18 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, 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 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 19 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 *) 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 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 20 1 848 1 849 attr = RECORD 1 850 1 851 typtr : ctp ; (* TYPE OF DESCRIBED ITEM *) 1 852 CASE kind : attrkind OF 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 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 21 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 *) 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 *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 22 1 962 1 963 condaddr = ^condbox ; 1 964 condbox = RECORD 1 965 condname : alfaid ; 1 966 nextcond : condaddr ; 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 198 199 200 201 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 23 202 203 VAR 204 (* REDEFINE NOW IMPORTED VARIABLES *) 205 (* FROM RACINE *) 206 alfaptr : ctp ; 207 aval : alfaid ; 208 boxheader : PACKED ARRAY [1..120] OF char ; 209 bufval : ARRAY [1..maxval] OF char ; 210 charptr : ctp ; 211 check_id : boolean ; 212 cl : integer ; 213 conint : integer ; 214 conreel : real ; 215 currentnode : blocknodeptr ; 216 ctptr : ctp ; 217 declarationpart : boolean ; 218 display : ARRAY [0..displimit] OF recidscope ; 219 entrylength : integer ; 220 environt : contexte ; 221 envstandard : stdkind ; 222 errtotal : integer ; 223 exportablecode : boolean ; 224 extcalltrapplace : integer ; 225 forbidden_id : alfaid ; 226 init_fsb_trap_flag : boolean ; 227 functionflag : boolean ; 228 intptr : ctp ; 229 ival : integer ; 230 lastproc : blocknodeptr ; 231 level : levrange ; 232 listyes : boolean ; 233 longchaine : integer ; 234 longstring : integer ; 235 majmin : ARRAY [0..127] OF integer ; 236 mpcogerr : text ; 237 mpcogout : text ; 238 next : ctp ; 239 nilptr : ctp ; 240 no : integer ; 241 progname : alfaid ; 242 realptr : ctp ; 243 staticswordcount : integer ; 244 statnbr : integer ; 245 string_ptr : ctp ; 246 symbolfile : integer ; 247 symbolindex : integer ; 248 symbolline : integer ; 249 symbolmap : boolean ; 250 top : integer ; 251 usednames : typusednames ; 252 version : integer ; 253 xc : integer ; 254 (* FROM GENERE *) 255 mapswitch : boolean ; 256 cb : integer ; 257 fichinter : ^binartype ; 258 ic : integer ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 24 259 indfich : integer ; 260 usednameaddr : ctp ; 261 (* FROM STATE *) 262 currlcstpt : lcstpt ; 263 currllcstpt : llcstpt ; 264 currrcstpt : rcstpt ; 265 currwcstpt : wcstpt ; 266 lcsave : integer ; 267 tmax : integer ; 268 linktoend : boolean ; 269 linktoendplace : integer ; 270 (* FROM ALM OR PL1 *) 271 asciiformataddr : ctp ; 272 octalformataddr : ctp ; 273 274 275 (* NOW DEFINE EXPORTABLE VARIABLES *) 276 277 analyzing_schema, 278 building_from_schema : schema_status ; 279 clabix : integer ; 280 (* POINTS LAST USED ENTRY IN LABTAB *) 281 decltrace : levtrace ; (* TO USE TRACE IN COMPILATION OF DECLARE *) 282 externallistheader : ptexternalitem ; 283 filpts : ARRAY [0..fillimit] OF ctp ; (* CONTAINS POINTERS ON BOXES "VAR" *) 284 (* FOR EACH DECLARED FILE *) 285 filtop : integer ; 286 firstlabbox : labelblockptr ; 287 forbidden_id_list : alfalistptr ; 288 getpr4afterstop : boolean ; (* TRUE IF STOP USES UNWINDER *) 289 (* POINTS LAST USED ENTRY IN FILPTS *) 290 hdrfile : integer ; (* FILE OF PROGRAM OR PROCEDURE HEADER *) 291 hdrindex : integer ; (* INDEX OF PROGRAM OR PROCEDURE HEADER *) 292 hdrlength : integer ; (* LENGTH OF PROGRAM OR PROCEDURE HEADER *) 293 hdrline : integer ; (* LINE OF PROGRAM OR PROCEDURE HEADER *) 294 lab_pdl_top : lab_pdl_ptr ; (* CURRENT PUSH-POP LABEL BLOCK BLOCK PTR *) 295 labtab : ARRAY [1..maxlabs] OF labdescr ; 296 (* FOR EACH LEVEL, DECLARED LABELS ARE *) 297 (* MEMORIZED FROM FSTIX (BODY) --> CLABIX *) 298 lc : integer ; 299 (* DISPLACEMENT COUNTER OF STACK'S ELEMENTS *) 300 lkc : integer ; (* OFFSET IN LINK. SECTION FOR ALL EXT. ITEMS *) 301 maxctp : ctp ; 302 (* MAX POSITION REACHED IN HEAP *) 303 nextalf : ctp ; (* GIVES THE BEGINNING OF THE CHAIN OF *) 304 (* USED 'ALFA CONSTANTES' IN A PROCEDURE *) 305 symbtabl : boolean ; (* INDICATES IF INFORMATIONS FOR *) 306 (* SYMBOLIC DUMP IS TO BE GENERATED *) 307 308 (* NOW DEFINE INTERNAL VARIABLES *) 309 cadre : integer ; 310 (* USED IN TYPEDECL TO FIND THE NEEDED *) 311 (* BOUNDARY FOR A VARIABLE,FIELD *) 312 dversion : integer ; (* VERSION OF DECLARE *) 313 err : boolean ; 314 exportscode : boolean ; 315 (* PROPAGATES AN ERROR CONDITION *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 25 316 filev : ARRAY [levrange] OF integer ; 317 (* FILES DECLARED AT LEVEL "N" *) 318 (* ARE MEMORIZED IN ENTRIES *) 319 (* FILEV[N] ..FILTOP IN ARRAY FILPTS *) 320 first_forbidden_id : alfalistptr ; 321 globnbpar : integer ; (* NUMBER OF PARAMETERS USED IN A PROCEDURE. *) 322 (* +1 FOR FUNCTION , +4 FOR EACH CONF. ARRAY *) 323 globdescriptors : boolean ; 324 longparam : integer ; 325 (* LENGTH OF PARAMETER'S LIST *) 326 old_check_id : boolean ; 327 np : blocknodeptr ; 328 pendingtypeallowed : boolean ; 329 ptlist : ARRAY [0..ptlimit] OF 330 RECORD 331 hname : alfaid ; (* USED BUT NOT DECLARED NAME *) 332 pptr : ctp ; (* BOX ASSOCIATED WITH POINTER ON THIS NAME *) 333 rfil, rlin : integer ; 334 END ; 335 ptx : integer ; 336 (* POINTS FIRST FREE ENTRY IN PTLIST *) 337 structispack : boolean ; 338 (* ASSOCIATED WITH "PACKED" FOR A STRUCTURE *) 339 tabklass : ARRAY [idklass] OF alfa ; 340 tabform : ARRAY [typform] OF alfa ; 341 tabkonst : ARRAY [consttype] OF alfa ; 342 tabkinds : ARRAY [idkinds] OF alfa ; 343 tabpdef : ARRAY [idprocdef] OF alfa ; 344 (* TRACES . ALFA ASSOCIATED WITH SCALAR TYPES *) 345 terrcl : ARRAY [norange] OF typofsymb ; 346 (* ERR. RECOVERY IN TYPE DECL. PART *) 347 valuenb : integer ; (* VALUEDECL'CALLS COUNTER .MUST BE 1 *) 348 349 (* END OF VARIABLES FOR MODULE DECLARE *) 350 351 352 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 26 353 354 $VALUE 355 tabklass = ('TYPES ', 'KONST ', 'PROC ', 'VARS ', 'FIELD ', 'TAGFIELD', 356 'DUMMYCLA') ; 357 tabform = ('REEL ', 'NUMERIC ', 'SCALAR ', 'POINTER ', 'POWER ', 'ARRAYS ', 358 'RECORDS ', 'FILES ', 'ALIASTYP') ; 359 tabkonst = ('WORDCONS', 'DWORCONS', 'ALFACONS') ; 360 tabkinds = ('ACTUAL ', 'FORMAL ', 'ARRAYBOU', 'EXPORTAB', 'IMPORTED') ; 361 tabpdef = ('STANDDEF', 'FORWDEF', 'EXTDEF') ; 362 terrcl = (9 * irrelsy, 363 begsy, (* 9 ( *) 364 endsy, (* 10 ) *) 365 irrelsy, 366 endsy, (* 12 ] *) 367 3 * irrelsy, 368 endsy, (* 16 ; *) 369 irrelsy, 370 begsy, (* 18 ^ *) 371 2 * irrelsy, 372 3 * endsy, (* 21 BEGIN 22 END 23 IF *) 373 2 * irrelsy, 374 endsy, (* 26 CASE *) 375 irrelsy, 376 endsy, (* 28 REPEAT *) 377 irrelsy, 378 endsy, (* 30 WHILE *) 379 irrelsy, 380 endsy, (* 32 FOR *) 381 2 * irrelsy, 382 endsy, (* 35 GOTO *) 383 irrelsy, 384 endsy, (* 37 TYPE *) 385 begsy, (* 38 ARRAY RECORD FILE SET *) 386 irrelsy, 387 2 * endsy, (* 40 LABEL 41 CONST *) 388 irrelsy, 389 3 * endsy, (* 43 VAR 44 FUNCTION 45 PROCEDURE *) 390 2 * irrelsy, 391 endsy, (* 48 WITH *) 392 irrelsy, 393 endsy, (* 50 PROGRAM *) 394 7 * endsy) (* 51 $RENAME 52 $IMPORT 53 $EXPORT 54 $VALUE 57 $ *) $ 395 396 397 398 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 27 399 400 (* IMPORTED PROCEDURES HEADERS *) 401 (* FROM RACINE *) 402 FUNCTION recadre (fnumber, fmod : integer) : integer ; EXTERNAL ; 403 PROCEDURE insymbol ; EXTERNAL ; 404 PROCEDURE error (errno : integer) ; EXTERNAL ; 405 PROCEDURE srchrec (fbegsearch : ctp) ; EXTERNAL ; 406 PROCEDURE inconst (VAR code : integer ; VAR restype : ctp ; fnxt : ctp ; expression_allowed : boolean) ; EXTERNAL ; 407 PROCEDURE crealfabox (VAR fkonstbox : ctp) ; EXTERNAL ; 408 PROCEDURE skip (nosymb : integer) ; EXTERNAL ; 409 PROCEDURE skipextd (nosymb : setofno) ; EXTERNAL ; 410 PROCEDURE skiptochapter ; EXTERNAL ; 411 PROCEDURE search ; EXTERNAL ; 412 PROCEDURE nextline ; EXTERNAL ; 413 FUNCTION sup (fval1, fval2 : integer) : integer ; EXTERNAL ; 414 PROCEDURE inserundlab (fcb, fdebchn : integer) ; EXTERNAL ; 415 FUNCTION poweroftwo (fval : integer) : integer ; EXTERNAL ; 416 PROCEDURE nameisref (p : ctp ; f, l : integer) ; EXTERNAL ; 417 PROCEDURE statement_begins (genp : boolean) ; EXTERNAL ; 418 PROCEDURE statement_ends (sttlength : integer) ; EXTERNAL ; 419 PROCEDURE warning (errno : integer) ; EXTERNAL ; 420 421 (* FROM UNIQUE *) 422 PROCEDURE heaperror ; EXTERNAL ; 423 424 (* PROCEDURES FROM STANDSTAT *) 425 426 PROCEDURE compstat ; EXTERNAL ; 427 428 (* PROCEDURES FROM CONTEXTTABLE *) 429 430 FUNCTION boundary (objform : typform ; ispack : boolean ; pcksize : integer) : integer ; EXTERNAL ; 431 FUNCTION bytesneeded (objform : typform ; highest : integer ; ispack : boolean) : integer ; EXTERNAL ; 432 PROCEDURE checkminmax (fvalue : integer ; fctp : ctp ; ferrnum : integer) ; EXTERNAL ; 433 PROCEDURE compatbin (typleft, typright : ctp ; VAR fgeneric : ctp) ; EXTERNAL ; 434 PROCEDURE create_vars_box (VAR fvbox : ctp ; fname : alfaid) ; EXTERNAL ; 435 PROCEDURE create_types_box (VAR fvbox : ctp ; fname : alfaid ; fform : typform ; fbool : boolean) ; EXTERNAL ; 436 PROCEDURE create_proc_box (VAR fvbox : ctp ; fname : alfaid) ; EXTERNAL ; 437 PROCEDURE create_field_box (VAR fvbox : ctp ; fname : alfaid) ; EXTERNAL ; 438 PROCEDURE create_konst_box (VAR fvbox : ctp ; fname : alfaid ; ftypofconst : consttype) ; EXTERNAL ; 439 PROCEDURE create_tagfield_box (VAR fvbox : ctp ; fname : alfaid ; ftagval : boolean) ; EXTERNAL ; 440 PROCEDURE create_dummyclass_box (VAR fvbox : ctp ; fname : alfaid) ; EXTERNAL ; 441 FUNCTION existfileintype (ptontype : ctp) : boolean ; EXTERNAL ; 442 FUNCTION packedcadre (ftype : ctp) : integer ; EXTERNAL ; 443 FUNCTION packedsize (ftype : ctp) : integer ; EXTERNAL ; 444 PROCEDURE printrec (ptbox : ctp) ; EXTERNAL ; 445 446 447 (* FROM GENERE OR PL1 *) 448 FUNCTION enterreftosymbol (ctplace : ctp) : integer ; EXTERNAL ; 449 PROCEDURE genreltext (relcode, halfwordcount : integer) ; EXTERNAL ; 450 PROCEDURE gen_init_fsb_trap_structures (filpt : ctp) ; EXTERNAL ; 451 PROCEDURE genstand (fpr : preg ; fadr : integer ; fcode : istand ; ftg : tag) ; EXTERNAL ; 452 PROCEDURE genmulticsnil ; EXTERNAL ; 453 PROCEDURE genexportfile (nam : alfaid ; pr4disp : integer ; VAR returncode : integer) ; EXTERNAL ; 454 PROCEDURE genprolog (VAR fplace : integer ; VAR fdebic : integer) ; EXTERNAL ; 455 PROCEDURE genpgexit ; EXTERNAL ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 28 456 PROCEDURE genprcentry (VAR fplace : integer ; fptproc : ctp ; VAR fdebic : integer) ; EXTERNAL ; 457 PROCEDURE writout (zonedisp, endcode : integer) ; EXTERNAL ; 458 PROCEDURE closefile (filept : ctp) ; EXTERNAL ; 459 PROCEDURE exitlabel (flabinx : integer ; flabplace : integer) ; EXTERNAL ; 460 PROCEDURE geninsertion (fplace : integer ; fptproc : ctp) ; EXTERNAL ; 461 PROCEDURE gencodfonct (fptproc : ctp) ; EXTERNAL ; 462 PROCEDURE genprcexit (fptproc : ctp) ; EXTERNAL ; 463 PROCEDURE infich (fval : integer) ; EXTERNAL ; 464 PROCEDURE genr (frval : real) ; EXTERNAL ; 465 PROCEDURE genc (fval : integer) ; EXTERNAL ; 466 PROCEDURE genstring (falfapt : ctp) ; EXTERNAL ; 467 PROCEDURE genalfa ; EXTERNAL ; 468 PROCEDURE initiozone (filpt : ctp) ; EXTERNAL ; 469 470 (* **************************************** GENEXTVARIABLE ******************** *) 471 472 PROCEDURE genextvariable (segname, varname, generator : alfaid ; 473 pr4disp, varlength, endpoint : integer ; 474 VAR binarea : binartype ; 475 VAR returncode : integer) ; EXTERNAL ; 476 477 (* C VARNAME NAME OF THE VARIABLE 478* Can be found in IMPORT_STRING 479* SEGNAME 32 CHARS STRING 480* GENERATOR " "" "" 481* PR4DISP BYTES OFFSET OF "ITS" WANTED 482* . < 0 FOR IMPORTED VARS 483* VARLENGTH BYTES SIZE OF THE VARIABLE 484* ENDPOINT MAX INDEX REACHED IN BINAREA 485* BINAREA BINARY ITEMS 486* RETURNCODE 0 MEANS OK 487* C *) 488 489 490 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 29 491 492 (* ********************************************* GENBINAREA ****************** *) 493 494 PROCEDURE genbinarea (bytdisp, codearea, endpoint, endcode : integer ; 495 VAR binarea : binartype ; 496 VAR returncode : integer) ; EXTERNAL ; 497 498 (* C BYTDISP OFFSET IN AREA OF FIRST BYTE TO BE INIT. 499* CODEAREA 1 = TEXT ; 3 = STATIC(INIT) 500* 4 = STATIC(NON INIT) 501* ENDPOINT MAX INDEX REACHED IN BINAREA 502* FOR "4" NUMBER OF HALFWORDS 503* ENDCODE LAST RELOCATABLE ITEM (TEXT SECTION) 504* BINAREA BINARY ITEMS TO BE GENERATED 505* RETURNCODE 0 means OK 506* C *) 507 508 509 (* ************************************ GENENTRYPOINT (PL/1) ***************** *) 510 511 PROCEDURE genentrypoint (textbytes, pr4bytes, typofentry : integer ; 512 segname, entryname : alfaid ; functionflag : boolean ; VAR entrylength : integer ; 513 VAR returncode : integer) ; EXTERNAL ; 514 515 (* C .TYPOFENTRY 0 PASCAL INTERNAL PROCEDURE 516* 1 PASCAL EXPORTABLE PROCEDURE 517* 2 IMPORTED PROCEDURE ===> NO ENTRY SEQUENCE 518* 4 EXIT LABEL ===> NO ENTRY SEQUENCE 519* .TEXTBYTES OFFSET IN BYTES IN TEXT SECTION OF ENTRY POINT 520* (NO MEANINGS IF TYPOFENTRY=2) 521* .PR4BYTES BYTES OFFSET OF AN EVEN-WORD IN LINKAGE SECTION TO BE FILLED 522* WITH AN ITS 523* .SEGNAME 32 CHARS STRING BLANK FOR EXPORTABLE or LOCAL 524* FOUND IN IMPORTSTRING FOR IMPORTED 525* .ENTRYNAME 32 CHARS STRING Pascal name ( LOCAL or EXPORT) 526* FOUND IN IMPORTSTRING 527* .RETURNCODE 0 means OK 528* 529* (NO MEANING FOR 0,4 ) 530* C *) 531 532 533 PROCEDURE geninputlink (pr4disp : integer ; VAR returncode : integer) ; EXTERNAL ; 534 PROCEDURE genoutputlink (pr4disp : integer ; VAR returncode : integer) ; EXTERNAL ; 535 PROCEDURE generrorlink (pr4disp : integer ; VAR returncode : integer) ; EXTERNAL ; 536 (* END OF IMPORTED PROCEDURES *) 537 538 539 540 541 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 30 542 543 (* ******************************************** INITDECLARE ******************* *) 544 545 PROCEDURE initdeclare ; 546 547 (* C THIS PROCEDURE INITIALIZES THE GLOBALS OF DECLARE AND IS CALLED IN 548* INITIALISE IN THE MODULE UNIQUE C *) 549 BEGIN (* INITDECLARE *) 550 analyzing_schema.on := false ; 551 building_from_schema.on := false ; 552 clabix := 0 ; 553 exportscode := false ; 554 externallistheader := NIL ; 555 globdescriptors := false ; 556 filtop := -1 ; filev [0] := 0 ; 557 new (firstlabbox) ; 558 IF firstlabbox = NIL THEN heaperror ; 559 WITH firstlabbox^ DO 560 BEGIN 561 new (next) ; 562 IF next = NIL THEN heaperror ; 563 number := -1 ; 564 WITH next^ DO 565 BEGIN 566 next := NIL ; 567 number := 10000 ; 568 END ; 569 END ; 570 new (lab_pdl_top) ; 571 WITH lab_pdl_top^ DO 572 BEGIN 573 first_in_block := NIL ; 574 start := -1 ; 575 previous := NIL ; 576 next := NIL 577 END ; 578 new (first_forbidden_id) ; 579 WITH first_forbidden_id^ DO 580 BEGIN 581 previous := NIL ; 582 next := NIL ; 583 name := ' ' 584 END ; 585 forbidden_id_list := first_forbidden_id ; 586 functionflag := false ; 587 getpr4afterstop := false ; 588 lc := 0 ; 589 lkc := 0 ; 590 decltrace := none ; 591 ptx := 0 ; 592 symbtabl := false ; 593 dversion := 00 ; 594 IF dversion > version THEN version := dversion ; 595 valuenb := 0 ; (* COUNTER FOR CALLS OF VALUEDECL *) 596 END (* INITDECLARE *) ; 597 598 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 31 599 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 32 600 601 602 (* ********+**************************** PRINTEXTERNALBOX ********************* *) 603 604 $OPTIONS compile = trace $ 605 PROCEDURE printexternalbox (boxtoprint : ptexternalitem) ; 606 607 BEGIN 608 WITH boxtoprint^ DO 609 BEGIN 610 nextline ; write (mpcogout, boxheader) ; nextline ; 611 write (mpcogout, '* This extern box is pointed by ^', ord (boxtoprint)) ; 612 nextline ; 613 write (mpcogout, '* EXTERNNAME, EXTNEXT,EXTRFILE1, LINE1, FILE2, LINE2 and EXTDECL are:', 614 extname, ' ^', ord (extnext), ' ^', extrfile1, extrline1, extrfile2, extrline2, 615 ord (extdecl)) ; nextline ; 616 write (mpcogout, '* EXTIMTEMTYPE is (ORD)', ord (extitemtype), ' EXTKIND is', 617 tabkinds [extkind]) ; nextline ; 618 write (mpcogout, '* EXTPLTDISP,EXTAREADISP and EXTLONG are :', 619 extpltdisp : 8, extareadisp, extlong) ; nextline ; 620 write (mpcogout, '* EXTSEGNAME,GENERATOR,ENTRYNAME are :', 621 '%', extsegname, '%', extgenerator, '%', extentryname, '%') ; 622 nextline ; 623 write (mpcogout, boxheader) ; nextline ; nextline ; 624 END ; 625 END (* PRINTEXTERNALBOX *) ; 626 $OPTIONS compile = true $ 627 628 629 630 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 33 631 632 (* ************************************************* CHECKEXTERNALITEM *) 633 634 PROCEDURE checkexternalitem (fname : alfaid ; VAR foundext : ptexternalitem) ; 635 636 (* C 637* DURING THE COMPILATION OF GLOBAL VARIABLES , FUNCTIONS AND 638* PROCEDURES , EACH TIME A NEW IDENTIFIER ARRRIVES WE MUST VERIFY IF IT IS 639* THE DEFINITION OF A YET DECLARED IMPORTED OR EXPORTED ITEM. 640* IF FOUND, RETURNS THE POINTER TO THE EXTERNALITEM BOX EITHER RETURNS NIL. 641* IF FOUND, THE FIELD EXTDECL WILL BE FILLED AFTER SUCCESSFUL COMPILATION OF ITEM 642* 643* C *) 644 (* E 645* 446 : THE EXTERNAL NAME FOUND WAS ALREADY DEFINED 646* E *) 647 648 LABEL 649 1 ; (* EXIT WHILE *) 650 VAR 651 workpt : ptexternalitem ; 652 653 BEGIN (* CHECKEXTERNALITEM *) 654 $OPTIONS compile = trace $ 655 IF decltrace > none THEN 656 BEGIN 657 write (mpcogout, '@@@ begining of CHECKEXTERNALITEM @@@ for name:', 658 fname) ; nextline ; 659 END ; 660 $OPTIONS compile = true $ 661 workpt := externallistheader ; 662 foundext := NIL ; (* default means "not found" *) 663 WHILE workpt <> NIL DO 664 BEGIN 665 IF workpt^.extname = fname THEN 666 BEGIN 667 foundext := workpt ; 668 GOTO 1 (* exit while *) ; 669 END ELSE 670 workpt := workpt^.extnext ; 671 END (* while *) ; 672 1 : (* exit while *) 673 $OPTIONS compile = security $ 674 IF foundext <> NIL THEN 675 IF foundext^.extdecl <> NIL THEN 676 IF foundext^.extdecl^.klass = vars THEN error (446) ELSE 677 IF foundext^.extdecl^.procdef <> forwdef THEN 678 error (446) ; 679 $OPTIONS compile = true $ 680 $OPTIONS compile = trace $ 681 IF decltrace = high THEN 682 BEGIN 683 write (mpcogout, ' @@@ fin de CHECKEXTERNALITEM @@@ avec pointeur retournee a ^', ord (foundext)) ; 684 nextline ; 685 END ; 686 $OPTIONS compile = true $ 687 END (* CHECKEXTERNALITEM *) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 34 688 689 690 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 35 691 692 (* ***************************** CREATEEXTERNALBOX *********************** *) 693 694 PROCEDURE createexternalbox (fname : alfaid ; fitemtype : externalitemtype ; 695 fkind : idkinds ; VAR fvextbox : ptexternalitem) ; 696 697 (* C Creates a external box with specified values. 698* Returns the pointer on created box 699* Modify EXTERNALLISTHEADER ( new box created ) 700* C *) 701 702 (* E Errors detected 703* Heaperror 704* E *) 705 706 VAR 707 wkexternpt : ptexternalitem ; 708 709 BEGIN (* CREATEEXTERNALBOX *) 710 new (wkexternpt) ; IF wkexternpt = NIL THEN heaperror ; (* Exit comp *) 711 WITH wkexternpt^ DO 712 BEGIN 713 extname := fname ; extrfile1 := symbolfile ; extrline1 := symbolline ; 714 extrfile2 := 0 ; extrline2 := 0 ; 715 extnext := externallistheader ; externallistheader := wkexternpt ; 716 extsegname := blank ; extgenerator := blank ; extentryname := blank ; 717 extdecl := NIL ; (* Filled later if item is declared *) 718 extkind := fkind ; extitemtype := fitemtype ; 719 extpltdisp := 0 ; extareadisp := 0 ; extlong := 0 ; 720 END (* with *) ; 721 722 (* <----- *) 723 fvextbox := wkexternpt ; 724 END (* CREATEEXTERNALBOX *) ; 725 726 727 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 36 728 729 PROCEDURE push_lab_pdl ; 730 731 (* PUSH-POP LABEL BLOCK SYSTEM *) 732 733 BEGIN 734 IF lab_pdl_top^.next = NIL THEN 735 BEGIN 736 new (lab_pdl_top^.next) ; 737 WITH lab_pdl_top^.next^ DO 738 BEGIN 739 previous := lab_pdl_top ; 740 next := NIL ; 741 END 742 END ; 743 lab_pdl_top := lab_pdl_top^.next ; 744 WITH lab_pdl_top^ DO 745 BEGIN 746 start := ic ; 747 first_in_block := NIL ; 748 END 749 END (* PUSH_LAB_PDL *) ; 750 751 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 37 752 753 PROCEDURE pop_lab_pdl ; 754 755 (* PUSH-POP LABEL BLOCK SYSTEM *) 756 757 VAR 758 lbp : labelblockptr ; 759 760 BEGIN 761 WITH lab_pdl_top^ DO 762 BEGIN 763 lbp := first_in_block ; 764 WHILE lbp <> NIL DO 765 BEGIN 766 lbp^.ref_allowed.ic_from := start ; 767 lbp^.ref_allowed.ic_to := ic - 1 ; 768 lbp := lbp^.next_in_block ; 769 END 770 END ; 771 772 IF lab_pdl_top^.previous <> NIL THEN (* SECURITY *) 773 lab_pdl_top := lab_pdl_top^.previous ; 774 END (* POP_LAB_PDL *) ; 775 776 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 38 777 778 (* ******************************** CHECKDEFININGPOINT *************** *) 779 780 PROCEDURE checkdefiningpoint (fname : alfaid ; fbegsearch : ctp) ; 781 782 (* C 783* A new identifier is to be defined at this level. 784* Before we must verify that this name is not already used: 785* . as the name of a normally declared item 786* . to identify an item declared in an englobing procedure 787* and already used in the level we try to redeclare it 788* . as the name of an item in course of declaration 789* C *) 790 791 (* E ERRORS DETECTED 792* 101 : Identifier declared twice 793* 118 : Identifier already used at this level with another meaning 794* E *) 795 796 LABEL 797 1 (* exit while *) ; 798 799 VAR 800 (* WORKPT : PTLOCKEDITEM *) 801 802 BEGIN (* CHECKDEFININGPOINT *) 803 $OPTIONS compile = trace $ 804 IF decltrace > none THEN 805 BEGIN 806 write (mpcogout, '@@@ Debut de CHECKDEFININGPOINT @@@ ', 807 ' avec FBEGSEARCH ^', ord (fbegsearch) : 8, 808 ' et le nom:', fname) ; 809 nextline ; 810 END ; 811 $OPTIONS compile = true $ 812 srchrec (fbegsearch) ; 813 IF ctptr <> NIL THEN 814 BEGIN 815 IF symbolmap THEN 816 nameisref (ctptr, symbolfile, symbolline) ; 817 error (101) ; 818 END ELSE 819 BEGIN (* new identifier *) 820 (* This name was not already declared at this level. 821* Is it already used or pending ? *) 822 (* 823* WORKPT:= LOCKEDLISTHEADER ; 824* while WORKPT<>nil do 825* if WORKPT^.LOCKEDNAME=FNAME then 826* begin 827* ERROR(118) ; goto 1 ; 828* end else 829* WORKPT:= WORKPT^.LOCKEDNEXT ; 830* *) 831 1 : (* exit while *) 832 END (* new identifier *) ; 833 $OPTIONS compile = trace $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 39 834 IF decltrace = high THEN 835 BEGIN 836 write (mpcogout, '@@@ Fin de CHECKDEFININGPOINT @@@ ') ; 837 nextline ; 838 END ; 839 $OPTIONS compile = true $ 840 END (* CHECKDEFININGPOINT *) ; 841 842 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 40 843 844 (* *********************************************************TYPEDECL*********** *) 845 846 PROCEDURE typedecl (VAR returnsize : integer ; VAR returntype : ctp) ; 847 848 (* C CALLED AT EACH OCCURENCE OF IN PASCAL'S GRAMMAR: 849* EITHER TO RECOGNIZE AN EXISTING TYPE 850* OR TO CREATE BOX(ES) ASSOCIATED WITH A NEW TYPE. 851* IN BOTH CASES,RETURNS SIZE OF AN OBJECT OF THIS TYPE AND POINTER ON THIS 852* TYPE. 853* WHEN AN ERROR IS FOUND, RETURNTYPE IS NIL. C *) 854 (* E ERRORS DETECTED : 855* HEAPERROR 856* 2 IDENTIFIER EXPECTED 857* 4 ')' EXPECTED 858* 8 'OF' EXPECTED 859* 10 ERROR IN TYPE DECLARATION 860* 11 '[' EXPECTED 861* 12 ']' EXPECTED 862* 13 'END' EXPECTED 863* 15 INTEGER EXPECTED 864* 62 Pointed type not defined 865* 96 ILLEGAL POINTED ITEM 866* 98 'PACKED' NOT ALLOWED HERE 867* 108 File not allowed here 868* 112 TOO LARGE ARRAY 869* 115 BASE TYPE MUST BE SCALAR OR NUMERIC 870* 169 ERROR IN BASE TYPE OF A SET 871* 268 TOO MANY FORWARD DEFINED POINTERS 872* 305 VALUE IN A SET OUT OF BOUNDS E *) 873 LABEL 874 11, (* ANALYSIS FOR TYPE OF ARRAY ELEMENT *) 875 19 ; (* END OF ARRAY TYPE *) 876 VAR 877 bigsize : real ; 878 indexflag, lerr, packflag : boolean ; 879 li, lh, lcad, elsize, displ, bdispl, sl, sh : integer ; 880 nxta, lp, lt, eltyp, rtyp, nxtf, lastfld, recvpt, 881 spt, locpt, lfpt, oldnxtf, pp : ctp ; 882 check_id_saved : boolean ; 883 884 885 (* *********************************************************SKIPT < TYPEDECL*** *) 886 887 PROCEDURE skipt (fno : integer) ; 888 889 (* C SKIPS ANY SYMBOL WHICH IS NOT BEGSY,ENDSY OR THE SPECIFIED 890* ITEM " FNO " C *) 891 BEGIN 892 $OPTIONS compile = trace $ 893 IF decltrace > none THEN 894 BEGIN 895 write (mpcogout, ' @@@ DEBUT SKIPT @@@ WITH FNO ', fno : 4) ; nextline ; 896 END ; 897 $OPTIONS compile = true $ 898 WHILE (terrcl [no] = irrelsy) AND (fno # no) DO insymbol ; 899 END (* SKIPT *) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 41 900 901 902 (* *********************************************************TYPERR < TYPEDECL** *) 903 904 PROCEDURE typerr (ferrno : integer) ; 905 906 (* C ASSIGNS RETURNED PARAMETERS OF TYPEDECL WITH DEFAULT VALUES, SKIPS 907* ANY IRRELEVANT SYMBOL AND PRODUCES AN ERROR MESSAGE C *) 908 BEGIN 909 returnsize := 0 ; err := true ; 910 returntype := NIL ; 911 error (ferrno) ; 912 skipt (46) ; (* 46 IS NOT ASSIGNED => SYMBOLS ARE *) 913 (* SKIPPED UNTIL BEGSY OR ENDSY *) 914 END (* TYPERR *) ; 915 916 917 (* ***********************************************SIMPLETYPE none THEN 970 BEGIN 971 write (mpcogout, ' @@@ DEBUT SUBRANGE @@@ WITH FBEGSEARCH', ord (fbegsearch)) ; 972 nextline ; 973 END ; 974 $OPTIONS compile = true $ 975 inconst (dummy, lowtype, fbegsearch, false) ; 976 IF symbolmap THEN 977 IF lowtype <> NIL THEN 978 IF lowtype^.name <> blank THEN 979 nameisref (lowtype, symbolfile, symbolline) ; 980 typcstes := lowtype ; 981 IF lowtype # NIL THEN 982 IF lowtype@.form IN [numeric, scalar] THEN 983 BEGIN 984 lowbound := conint ; (* CONINT ASSIGNED BY INCONST *) 985 IF no = 39 (* .. *) THEN 986 insymbol ELSE 987 BEGIN error (5) ; err := true ; 988 END ; 989 inconst (dummy, hightype, next, false) ; 990 IF lowtype # hightype THEN 991 BEGIN 992 IF symbolmap THEN 993 IF hightype <> NIL THEN 994 IF hightype^.name <> blank THEN 995 nameisref (hightype, symbolfile, symbolline) ; 996 error (145) ; err := true ; 997 END ELSE 998 BEGIN 999 highbound := conint ; (* SEE INCONST *) 1000 IF lowbound > highbound THEN 1001 BEGIN 1002 error (102) ; err := true ; 1003 END ; 1004 END ; (* NO ERROR IN HIGHTYPE *) 1005 END (* NO ERROR IN LOWTYPE *) ELSE 1006 BEGIN 1007 err := true ; IF indexflag THEN error (113) ELSE error (114) ; 1008 END (* TYPE NOT SCALAR OR NUMERIC *) ELSE (* LOWTYPE = NIL *) 1009 err := true ; (* ERROR IS CALLED BY INCONST *) 1010 $OPTIONS compile = trace $ 1011 IF decltrace > low THEN 1012 BEGIN 1013 write (mpcogout, ' @@@ FIN SUBRANGE @@@ WITH V.LOW,HIGH,TYP BOUNDS', lowbound, *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 43 1014 highbound, ord (typcstes)) ; 1015 nextline ; 1016 END ; 1017 $OPTIONS compile = true $ 1018 END (* SUBRANGE *) ; 1019 1020 1021 (* *************************************SCALDECL < SIMPLETYPE < TYPEDECL******* *) 1022 1023 PROCEDURE scaldecl (fbegsearch : ctp) ; 1024 1025 (* C THIS PROCEDURE IS CALLED IN ORDER TO BUILD THE BOX ASSOCIATED WITH A TYPE 1026* CST1..CST2 (NOT CALLED FOR INDEX) 1027* THE BUILT TYPE IS EITHER (TYPES,NUMERIC) 1028* EITHER (TYPES,SCALAR,TRUE) 1029* THE RETURNED VALUES ARE: 1030* SRETMIN,SRETMAX (SIMPLETYPE) 1031* SRETTYPE (SIMPLETYPE) 1032* RETURNSIZE (TYPEDECL) 1033* CADRE (GLOBAL) C *) 1034 VAR 1035 lmin, lmax : integer ; 1036 i1, i2 : integer ; 1037 lp, lpp : ctp ; 1038 BEGIN 1039 $OPTIONS compile = trace $ 1040 IF decltrace > none THEN 1041 BEGIN 1042 write (mpcogout, ' @@@ DEBUT SCALDECL @@@ WITH FBEGSEARCH', ord (fbegsearch)) ; 1043 nextline ; 1044 END ; 1045 $OPTIONS compile = true $ 1046 subrange (lmin, lmax, lpp, fbegsearch) ; 1047 IF NOT err THEN 1048 BEGIN 1049 IF lpp@.form = scalar THEN 1050 BEGIN 1051 create_types_box (lp, blank, scalar, true) ; 1052 WITH lp^ DO 1053 BEGIN 1054 spksize := bytesneeded (scalar, lmax, true) ; 1055 smin := lmin ; smax := lmax ; 1056 typset := lpp ; 1057 cadrage := boundary (scalar, packflag, spksize) ; 1058 IF packflag THEN 1059 size := spksize ELSE 1060 size := bytesneeded (scalar, 0, false) ; 1061 END ; 1062 END (* SCALAR *) ELSE 1063 BEGIN (* NUMERIC *) 1064 create_types_box (lp, blank, numeric, false) ; 1065 WITH lp^ DO 1066 BEGIN 1067 IF lmin >= 0 THEN 1068 i1 := lmin ELSE 1069 i1 := lmin + 1 ; 1070 IF lmax >= 0 THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 44 1071 i2 := lmax ELSE 1072 i2 := lmax + 1 ; 1073 npksize := bytesneeded (numeric, sup (abs (i1), abs (i2)), true) ; 1074 nmin := lmin ; nmax := lmax ; 1075 cadrage := boundary (numeric, packflag, npksize) ; 1076 IF packflag THEN 1077 size := npksize ELSE 1078 size := bytesneeded (numeric, 0, false) ; 1079 END ; 1080 END ; (* NUMERIC *) 1081 WITH lp@ DO 1082 BEGIN 1083 name := blank ; nxtel := NIL ; klass := types ; pack := packflag ; 1084 references := NIL ; 1085 END ; 1086 $OPTIONS compile = trace $ 1087 printrec (lp) ; 1088 $OPTIONS compile = true $ 1089 sretmin := lmin ; sretmax := lmax ; (* FOR SIMPLETYPE *) 1090 srettype := lp ; (* FOR SIMPLETYPE *) 1091 returnsize := lp@.size ; (* FOR TYPEDECL *) 1092 cadre := sup (cadre, lp@.cadrage) ; 1093 END (* NOT ERR *) ELSE 1094 srettype := NIL ; 1095 $OPTIONS compile = trace $ 1096 IF decltrace > low THEN 1097 BEGIN 1098 write (mpcogout, ' @@@ FIN SCALDECL @@@ WITH SRET MIN, MAX, TYPE;RETSIZE,CADRE', 1099 sretmin, sretmax, ord (srettype), returnsize, cadre) ; 1100 nextline ; 1101 END ; 1102 $OPTIONS compile = true $ 1103 END (* SCALDECL *) ; 1104 1105 1106 BEGIN (* SIMPLETYPE *) 1107 $OPTIONS compile = trace $ 1108 IF decltrace > none THEN 1109 BEGIN 1110 write (mpcogout, 1111 ' @@@ DEBUT SIMPLETYPE @@@ WITH NEXT, NO,CADRE,PACKFLAG', ord (next), 1112 no, cadre, packflag) ; 1113 nextline ; 1114 END ; 1115 $OPTIONS compile = true $ 1116 IF no = 1 (* ID *) THEN 1117 BEGIN 1118 lerr := err ; err := false ; 1119 srchrec (next) ; IF ctptr = NIL THEN search ; 1120 IF ctptr = NIL (* ID. NOT FOUND *) THEN 1121 BEGIN 1122 error (104) ; skipt (16) ; (* ; *) srettype := NIL ; err := true ; 1123 END ELSE 1124 IF ctptr^.klass = schema THEN 1125 BEGIN 1126 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1127 WITH building_from_schema DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 45 1128 IF on THEN typerr (511) 1129 ELSE 1130 BEGIN 1131 schema_ptr := ctptr ; 1132 current_parameter := ctptr^.formal_parameter_list ; 1133 current_token := ctptr^.token_list ; 1134 insymbol ; (* "(" *) 1135 IF no <> 9 THEN typerr (9) ; 1136 lnext := ctptr^.next_for_schema ; 1137 WHILE (NOT err) AND (current_parameter <> NIL) DO 1138 BEGIN 1139 insymbol ; 1140 inconst (ccode, ctype, next, true) ; 1141 compatbin (ctype, current_parameter^.vtype, generic) ; 1142 IF (generic = NIL) OR (generic = realptr) THEN typerr (271) (* ILLEGAL SHEMA PARAMETER SUBSTITUT ION *) 1143 ELSE 1144 BEGIN 1145 checkminmax (conint, current_parameter^.vtype, 272) ; 1146 create_konst_box (lctp, current_parameter^.name, wordconst) ; 1147 WITH lctp^ DO 1148 BEGIN 1149 values := conint ; contype := generic ; 1150 succ := lnext ; 1151 END ; 1152 lnext := lctp ; 1153 END ; 1154 current_parameter := current_parameter^.nxtel ; 1155 IF NOT err THEN 1156 IF current_parameter <> NIL THEN 1157 IF no <> 15 (* , *) THEN typerr (20) ELSE insymbol 1158 ELSE 1159 IF no <> 10 THEN typerr (4) 1160 END ; (* PARAMETER WHILE LOOP *) 1161 IF err THEN srettype := NIL 1162 ELSE 1163 BEGIN 1164 on := true ; 1165 insymbol ; 1166 saved_next := next ; saved_top := top ; 1167 next := lnext ; top := schema_ptr^.top_for_schema ; 1168 typedecl (returnsize, srettype) ; 1169 next := saved_next ; top := saved_top ; 1170 on := false ; 1171 IF srettype <> NIL THEN 1172 WITH srettype^ DO 1173 BEGIN 1174 father_schema := schema_ptr ; 1175 actual_parameter_list := lnext ; 1176 lctp := lnext ; 1177 it := father_schema^.parameter_count ; 1178 WHILE it <> 1 DO 1179 BEGIN 1180 it := it - 1 ; 1181 lctp := lctp^.nxtel 1182 END ; 1183 lctp^.nxtel := NIL ; (* END OF ACTUAL PARAMETER LIST *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 46 1184 END ; 1185 END ; 1186 END (* BUILDING FROM SHEMA *) 1187 END 1188 ELSE 1189 BEGIN (* ID. FOUND *) 1190 IF ctptr@.klass = types (* ID. TYPE *) THEN 1191 BEGIN 1192 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1193 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 1194 IF packflag THEN returnsize := packedsize (ctptr) ELSE 1195 returnsize := ctptr@.size ; 1196 IF indexflag (* ARRAY INDEX *) THEN 1197 IF NOT (ctptr@.form IN [scalar, numeric]) THEN 1198 BEGIN 1199 error (113) ; err := true ; 1200 END ; 1201 srettype := ctptr ; 1202 IF ctptr@.form > pointer THEN 1203 cadre := ctptr@.cadrage ELSE 1204 cadre := boundary (ctptr@.form, packflag, returnsize) ; 1205 WITH ctptr@ DO 1206 CASE form OF 1207 numeric : BEGIN sretmin := nmin ; sretmax := nmax ; 1208 END ; 1209 scalar : IF subrng THEN (* SUBRANGE *) 1210 BEGIN sretmin := smin ; sretmax := smax ; 1211 END ELSE (* NO SUBRANGE *) 1212 BEGIN sretmin := 0 ; sretmax := fconst@.values ; 1213 END ; 1214 power, pointer, arrays, records, reel, files, aliastype 1215 : BEGIN sretmin := 0 ; sretmax := 0 ; (* NO MEANING *) 1216 END ; 1217 END ; (* CASE , WITH *) 1218 insymbol ; 1219 END (* TYPE ID *) ELSE 1220 IF ctptr@.klass = konst (* CONST. ID. *) THEN 1221 IF indexflag THEN (* ARRAY INDEX *) 1222 subrange (sretmin, sretmax, srettype, ctptr) ELSE (* NOT INDEX *) 1223 scaldecl (ctptr) ELSE (* NOT A CONSTANT *) 1224 BEGIN 1225 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1226 typerr (103) 1227 END ; 1228 END (* CTPTR # NIL *) ; 1229 IF NOT err THEN err := lerr ; 1230 END (* NO = 1 *) ELSE 1231 IF no IN [2, 7] (* CONST,SIGN *) THEN 1232 BEGIN 1233 lerr := err ; err := false ; 1234 IF indexflag THEN (* ARRAY INDEX *) 1235 subrange (sretmin, sretmax, srettype, next) ELSE 1236 scaldecl (next) ; 1237 IF NOT err THEN err := lerr ; 1238 END (* SUBRANGE *) ELSE 1239 IF no = 9 (* ( *) THEN 1240 BEGIN (* IDENTIFIER LIST *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 47 1241 cv := -1 (* COUNTER GIVES A VALUE FOR EACH IDENTIFIER *) ; 1242 lerr := err ; err := false ; 1243 create_types_box (lp, blank, scalar, false) ; 1244 WITH lp^ DO 1245 BEGIN 1246 pack := packflag ; 1247 END ; 1248 ltyp := lp ; nxtc := NIL ; (* CHAIN OF CONST *) 1249 REPEAT 1250 insymbol ; cv := cv + 1 ; 1251 IF no # 1 (* ID. *) THEN 1252 BEGIN 1253 error (2) ; skipt (15) ; (* , *) 1254 GOTO 2 ; (* BEFORE UNTIL *) 1255 END ; 1256 srchrec (next) ; 1257 IF ctptr <> NIL THEN BEGIN 1258 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1259 error (101) 1260 END 1261 ELSE 1262 BEGIN 1263 create_konst_box (lp, aval, wordconst) ; 1264 WITH lp^ DO 1265 BEGIN 1266 contype := ltyp ; values := cv ; succ := nxtc ; 1267 next := lp ; nxtc := lp ; 1268 END ; 1269 next := lp ; nxtc := lp ; 1270 END ; 1271 $OPTIONS compile = trace $ 1272 printrec (lp) ; 1273 $OPTIONS compile = true $ 1274 insymbol ; 1275 2 : (* HAVE WE ,? *) 1276 UNTIL no # 15 ; (* SYMBOL READ NOT, *) 1277 WITH ltyp@ DO 1278 BEGIN 1279 fconst := next ; (* LAST CREATED BOX *) 1280 spksize := bytesneeded (scalar, cv, true) ; 1281 cadrage := boundary (scalar, packflag, spksize) ; 1282 size := bytesneeded (scalar, cv, packflag) ; 1283 END ; 1284 returnsize := ltyp@.size ; cadre := sup (cadre, ltyp@.cadrage) ; 1285 sretmin := 0 ; sretmax := cv ; srettype := ltyp ; 1286 (* NOW CREATES SET BOX *) 1287 create_types_box (lp, blank, power, false) ; 1288 WITH lp^ DO 1289 BEGIN 1290 ppksize := bytesneeded (power, cv, true) ; 1291 setlength := cv + 1 ; 1292 pack := packflag ; 1293 cadrage := boundary (power, packflag, ppksize) ; 1294 size := bytesneeded (power, cv, packflag) ; 1295 elset := ltyp ; 1296 END ; 1297 ltyp@.sptcstepw := lp ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 48 1298 $OPTIONS compile = trace $ 1299 printrec (ltyp) ; printrec (lp) ; 1300 $OPTIONS compile = true $ 1301 IF no = 10 (* ) *) THEN 1302 insymbol ELSE typerr (4) ; 1303 IF NOT err THEN err := lerr ; 1304 END (* IDENTIFIER LIST *) ELSE 1305 typerr (99) ; 1306 $OPTIONS compile = trace $ 1307 IF decltrace > low THEN 1308 BEGIN 1309 write (mpcogout, ' @@@ FIN SIMPLETYPE @@@ WITH V.SRET MIN,MAX,TYPE;CADRE;RETURNSIZE', 1310 sretmin, sretmax, ord (srettype), cadre, returnsize) ; 1311 nextline ; 1312 END ; 1313 $OPTIONS compile = true $ 1314 END ; (* SIMPLETYPE *) 1315 1316 1317 (* ***********************************************FIELDLIST < TYPEDECL********* *) 1318 1319 PROCEDURE fieldlist (VAR maxsize : integer ; VAR varptr, nxtf : ctp) ; 1320 1321 (* C ANALYZES A LIST OF FIELDS + VARIANT PART . EACH LIST IN THE CASE IS 1322* ANALYZED BY CALLING AGAIN FIELDLIST. 1323* RETURNS MAXSIZE : MAX. SIZE OF THE RECORD 1324* VARPTR : POINTER ON THE TAGFIELD BOX 1325* NXTF:POINTER ON THE LAST FIELD(HAS THE SAME MEANING IN INPUT) C *) 1326 (* E ERRORS 2 IDENTIFIER EXPECTED 1327* 4 ')' EXPECTED 1328* 7 ':' EXPECTED 1329* 8 'OF' EXPECTED 1330* 9 '(' EXPECTED 1331* 50 ERROR IN CONSTANT 1332* 101 IDENTIFIER DECLARED TWICE 1333* 103 IDENTIFIER IS NOT OF APPROPRIATE CLASS 1334* 104 IDENTIFIER NOT DECLARED 1335* 108 File not allowed here 1336* 110 ERROR IN THE TYPE IDENTIFIER OF A TAGFIELD 1337* 111 INCOMPATIBLE WITH TAGFIELD TYPE 1338* 301 CASE VARIANT OUT OF BOUND E *) 1339 VAR 1340 tagflag, lerr, casefield, llast : boolean ; 1341 nbfield, lcad, i, lsize, it, minsize, casebytes, mxl, fieldsize : integer ; 1342 auxalf : alfaid ; 1343 lp, lpp, pp, nxt, fieldtype, nxtdeb, nxtc, tempctptr, tagtype : ctp ; 1344 selfield, oldnxt, ffld : ctp ; 1345 oldfile, oldline : integer ; 1346 checkcase : SET OF 0..maxset ; 1347 origin, max, ccount, k : integer ; 1348 negative : boolean ; 1349 1350 1351 (* *************************************ADJUST < FIELDLIST < TYPEDECL********** *) 1352 1353 PROCEDURE adjust ; 1354 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 49 1355 (* C PROCEDURE USED IN ORDER TO ADJUST THE BOUNDARY OF A FIELD IN A 1356* PACKED PART OF A RECORD 1357* IF IT IS THE FIRST FIELD OF THE RECORD, NOTHING IS DONE. 1358* OTHERWISE : 1)IF THE LAST FIELD IS NOT A TAGFIELD: 1359* -MOVE IT TO THE RIGHT OF THE WORD 1360* -SET ITS WIDTH TO WORD SIZE IF IT IS THE ONLY FIELD OF THE 1361* WORD AND IF IT IS SMALLER THAN A WORD. 1362* 2)ALWAYS INCREASE DISPL AND RESET BDISPL 1363* ASSERTION : AN ITEM GREATER THAN A WORD BEGINS AT A WORD BOUNDARY C *) 1364 BEGIN 1365 $OPTIONS compile = trace $ 1366 IF decltrace > none THEN 1367 BEGIN 1368 write (mpcogout, ' @@@ DEBUT ADJUST @@@ WITH DISPL,BDISPL,TAGFLAG,LASTFLD:', displ, 1369 bdispl : 4, tagflag : 7, ord (lastfld)) ; 1370 nextline ; 1371 END ; 1372 $OPTIONS compile = true $ 1373 IF lastfld # NIL THEN (* NOT FIRST FIELD *) 1374 BEGIN 1375 IF NOT tagflag THEN WITH lastfld@ DO (* NOT A TAGFIELD *) 1376 IF fldtype@.form <= power THEN 1377 IF fldaddr MOD bytesinword = 0 THEN (* FIRST FIELD OF A WORD *) 1378 BEGIN 1379 IF bytwidth < bytesinword THEN bytwidth := bytesinword 1380 END ELSE 1381 BEGIN 1382 fldaddr := recadre (fldaddr, bytesinword) - bytwidth ; 1383 END ; 1384 displ := displ + bytesinword - bdispl ; 1385 bdispl := 0 ; 1386 END ; 1387 $OPTIONS compile = trace $ 1388 IF decltrace > low THEN 1389 BEGIN 1390 write (mpcogout, ' @@@ FIN ADJUST @@@ WITH DISPL,BDISPL:', displ, bdispl : 4) ; 1391 nextline ; 1392 END ; 1393 $OPTIONS compile = true $ 1394 END (* ADJUST *) ; 1395 1396 1397 BEGIN (* FIELDLIST *) 1398 $OPTIONS compile = trace $ 1399 IF decltrace > none THEN 1400 BEGIN 1401 write (mpcogout, ' @@@ DEBUT FIELDLIST @@@ WITH NXTF AT', ord (nxtf)) ; nextline ; 1402 END ; 1403 $OPTIONS compile = true $ 1404 tagflag := true (* FIRST FIELD OF A RECORD OR OF A LIST IN THE CASE *) ; 1405 nxt := nxtf (* LAST FIELD FOUND IN THE SAME RECORD INITIALY NIL TYPEDECL *) ; 1406 1407 (* ANALYSIS OF FIXED PART NO#26 'CASE' *) 1408 REPEAT (* LOOP ON X,Y,Z:TYPID; *) 1409 IF no # 26 (* NOT CASE *) THEN 1410 BEGIN 1411 IF no = 1 (* ID *) THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 50 1412 BEGIN 1413 nbfield := 0 ; (* NB OF ID OF THE SAME TYPE *) ; nxtdeb := NIL ; (* DEFAULT *) 1414 REPEAT (* LOOP ON X,Y,... *) 1415 srchrec (nxt) ; 1416 IF ctptr # NIL THEN (* TWO IDENTICAL FIELDS *) 1417 BEGIN 1418 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1419 error (101) 1420 END 1421 ELSE 1422 BEGIN (* NEW ID. AT THIS LEVEL *) 1423 create_field_box (lp, aval) ; 1424 WITH lp^ DO 1425 BEGIN 1426 nxtel := nxt ; 1427 END ; 1428 IF nbfield # 0 THEN nxt@.fldtype := lp (* FORWARD LINKAGE *) ELSE 1429 nxtdeb := lp (* POINTS ON THE FIRST FIELD OF THE LIST *) ; 1430 nxt := lp ; nbfield := nbfield + 1 ; 1431 END ; (* NEW ID. *) 1432 insymbol ; 1433 IF no = 15 (* , *) THEN 1434 BEGIN 1435 insymbol ; 1436 IF no # 1 (* ID *) THEN 1437 BEGIN 1438 error (2) ; skipt (46) ; 1439 END ; 1440 END ; 1441 UNTIL no # 1 ; 1442 nxt@.fldtype := NIL ; (* ENDS FORWARD LINKAGE *) 1443 1444 check_id := old_check_id ; 1445 1446 IF no # 19 (* : *) THEN error (7) ELSE 1447 insymbol ; 1448 lcad := cadre ; cadre := 0 ; 1449 lerr := err ; err := false ; 1450 llast := structispack ; 1451 typedecl (fieldsize, fieldtype) ; 1452 1453 check_id := false ; 1454 1455 structispack := llast ; 1456 IF (fieldtype = NIL) OR err THEN 1457 err := true ELSE 1458 BEGIN 1459 IF cadre = 0 THEN cadre := bytesinword ; (* Security *) 1460 IF fieldtype@.form > records THEN 1461 BEGIN error (108) ; err := true ; 1462 END ELSE 1463 BEGIN 1464 IF NOT structispack THEN 1465 BEGIN (* UNPACKED *) 1466 IF cadre < bytesinword THEN cadre := bytesinword ; 1467 displ := recadre (displ, cadre) ; 1468 IF nbfield > 1 THEN fieldsize := recadre (fieldsize, cadre) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 51 1469 pp := nxtdeb ; (* FIRST FIELD OF THE LIST *) 1470 FOR i := 1 TO nbfield DO 1471 BEGIN 1472 lp := pp ; lp@.fldaddr := displ ; 1473 lp@.bytwidth := fieldsize ; 1474 pp := lp@.fldtype ; (* FORWARD LINKAGE *) ; 1475 lp@.fldtype := fieldtype ; 1476 displ := displ + fieldsize ; 1477 $OPTIONS compile = trace $ 1478 printrec (lp) ; 1479 $OPTIONS compile = true $ 1480 END ; 1481 END (* UNPACKED *) ELSE 1482 BEGIN (* PACKED *) 1483 IF fieldtype@.form = pointer THEN cadre := bytesinword ; 1484 IF fieldtype@.form >= power THEN 1485 lsize := fieldtype@.size ELSE 1486 lsize := packedsize (fieldtype) ; 1487 pp := nxtdeb ; (* FIRST FIELD OF THE LIST *) 1488 IF fieldtype@.form <= power THEN (* NEITHER ARRAY NOR RECORD *) 1489 FOR i := 1 TO nbfield DO 1490 BEGIN (* A FIELD > 1 WORD MUST BEGIN *) 1491 (* AT A WORD BOUNDARY *) 1492 IF ((bdispl + lsize) > bytesinword) AND (bdispl # 0) 1493 THEN adjust ; 1494 WITH pp@ DO 1495 BEGIN 1496 bytwidth := lsize ; 1497 displ := recadre (displ, cadre) ; 1498 fldaddr := displ ; 1499 END ; 1500 displ := displ + lsize ; bdispl := displ MOD bytesinword ; 1501 lp := pp ; pp := lp@.fldtype ; lp@.fldtype := fieldtype ; 1502 tagflag := false ; lastfld := lp ; 1503 $OPTIONS compile = trace $ 1504 printrec (lp) ; 1505 $OPTIONS compile = true $ 1506 END ELSE (* ARRAYS AND RECORDS MUST *) 1507 (* START AT WORD LIMIT *) 1508 FOR i := 1 TO nbfield DO 1509 BEGIN 1510 IF bdispl # 0 THEN adjust ; 1511 WITH pp@ DO 1512 BEGIN 1513 displ := recadre (displ, cadre) ; 1514 fldaddr := displ ; bytwidth := lsize ; 1515 END ; 1516 bdispl := lsize MOD bytesinword ; displ := displ + lsize ; 1517 lp := pp ; pp := lp@.fldtype ; lp@.fldtype := fieldtype ; 1518 tagflag := false ; lastfld := lp ; 1519 $OPTIONS compile = trace $ 1520 printrec (lp) ; 1521 $OPTIONS compile = true $ 1522 END ; (* ARRAYS AND RECORDS *) 1523 END ; (* PACKED *) 1524 END ; (* FORM <= RECORD AND *) 1525 (* NO PREVIOUS ERROR *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 52 1526 END ; 1527 IF err THEN 1528 BEGIN (* SET FLDTYPE TO NIL *) 1529 pp := nxt ; 1530 FOR i := nbfield DOWNTO 1 DO 1531 BEGIN 1532 pp@.fldtype := NIL ; 1533 $OPTIONS compile = trace $ 1534 printrec (pp) ; 1535 $OPTIONS compile = true $ 1536 pp := pp@.nxtel ; 1537 END ; 1538 END ELSE err := lerr ; 1539 cadre := sup (cadre, lcad) ; 1540 END ; (* NO = 1 *) 1541 IF no = 16 THEN 1542 insymbol ELSE 1543 BEGIN 1544 IF no = 1 THEN error (14) ; 1545 END ; 1546 END ; (* NO# 26 'CASE' *) 1547 UNTIL NOT (no IN [1, 16]) ; (* ; ID *) 1548 maxsize := displ ; varptr := NIL ; 1549 IF no = 26 (* CASE *) THEN 1550 BEGIN 1551 insymbol ; 1552 IF no # 1 (* ID *) THEN error (2) ELSE 1553 BEGIN 1554 srchrec (nxt) ; tempctptr := ctptr ; (* IT MAY BE A FIELD OR *) 1555 srchrec (next) ; 1556 IF ctptr = NIL THEN search ; (* A TYPE IDENTIFIER *) 1557 auxalf := aval ; 1558 oldfile := symbolfile ; oldline := symbolline ; 1559 insymbol ; 1560 IF no = 19 (* : *) THEN (* SELECTOR HAS A FIELD *) 1561 BEGIN 1562 IF tempctptr # NIL THEN error (101) (* ALLREADY USED *) ELSE 1563 BEGIN 1564 create_field_box (lp, auxalf) ; 1565 WITH lp^ DO 1566 BEGIN 1567 nxtel := nxt ; deffile := oldfile ; defline := oldline ; 1568 END ; 1569 nxt := lp ; 1570 selfield := lp ; 1571 END ; (* TAG FIELD IS NEW FIELD *) 1572 insymbol ; (* LOOK AT THE TYPE IDENTIFIER *) 1573 IF no # 1 (* ID *) THEN error (2) ELSE 1574 BEGIN 1575 srchrec (next) ; 1576 IF ctptr = NIL THEN search ; 1577 END ; 1578 casefield := true ; 1579 oldfile := symbolfile ; oldline := symbolline ; 1580 insymbol ; 1581 END ELSE (* SELECTOR HAS NO FIELD *) 1582 casefield := false ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 53 1583 IF ctptr = NIL THEN error (104) (* UNKNOWN TYPE *) ELSE 1584 BEGIN 1585 IF symbolmap THEN nameisref (ctptr, oldfile, oldline) ; 1586 IF ctptr@.klass # types THEN error (110) ELSE 1587 BEGIN 1588 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 1589 origin := 0 ; max := 0 ; 1590 WITH ctptr^ DO 1591 IF form = numeric THEN 1592 IF ctptr = intptr THEN error (106) ELSE 1593 BEGIN 1594 origin := nmin ; max := nmax - nmin ; 1595 END 1596 ELSE 1597 IF form = scalar THEN 1598 IF subrng THEN 1599 BEGIN 1600 origin := smin ; max := smax - smin ; 1601 END ELSE 1602 BEGIN 1603 origin := 0 ; max := fconst^.values ; 1604 END 1605 ELSE 1606 error (110) ; 1607 1608 ccount := -1 ; checkcase := [] ; 1609 IF max > maxset THEN 1610 BEGIN 1611 error (32) ; max := maxset ; 1612 END ; 1613 END ; 1614 END ; 1615 IF no # 27 (* OF *) THEN error (8) ; 1616 tagtype := ctptr ; 1617 IF casefield THEN 1618 BEGIN (* CASE ID: TYPE OF *) 1619 IF tagtype # NIL THEN 1620 BEGIN 1621 IF NOT structispack THEN 1622 BEGIN 1623 displ := recadre (displ, tagtype@.cadrage) ; 1624 lsize := tagtype@.size ; 1625 END ELSE 1626 BEGIN 1627 lsize := packedsize (tagtype) ; 1628 IF (bdispl # 0) AND (bdispl + lsize > bytesinword) THEN adjust ; 1629 tagflag := false ; lastfld := lp ; 1630 END ; (* PACKED *) 1631 WITH lp@ DO 1632 BEGIN 1633 fldaddr := displ ; bytwidth := lsize ; fldtype := tagtype ; 1634 END ; 1635 $OPTIONS compile = trace $ 1636 printrec (lp) ; 1637 $OPTIONS compile = true $ 1638 displ := displ + lsize ; bdispl := displ MOD bytesinword ; 1639 END ; (* TAGTYPE # NIL *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 54 1640 END ; (* TAG IDENTIFIER *) 1641 minsize := displ ; maxsize := minsize ; nxtc := NIL ; 1642 casebytes := bdispl ; 1643 insymbol ; 1644 REPEAT (* LOOP ON CASE 'LABELS' *) 1645 i := 0 ; (* COUNT THE CONSTANTS FOR ONE CASE *) 1646 REPEAT (* SAME CASE *) 1647 IF (no = 7) AND (cl = 2) THEN 1648 BEGIN 1649 negative := true ; 1650 insymbol 1651 END 1652 ELSE negative := false ; 1653 IF (no > 2) OR ((no = 2) AND (NOT (cl IN [1, 4]))) THEN 1654 BEGIN (* ILLEGAL CASE LABEL *) 1655 error (50) ; skipt (46) ; 1656 END ELSE 1657 BEGIN 1658 IF tagtype # NIL THEN 1659 IF no = 1 (* ID *) THEN 1660 BEGIN 1661 srchrec (next) ; IF ctptr = NIL THEN search ; 1662 IF ctptr = NIL THEN error (104) ELSE 1663 BEGIN 1664 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 1665 WITH ctptr@ DO 1666 IF klass # konst THEN error (103) ELSE 1667 BEGIN 1668 IF ((tagtype@.form = scalar) AND (contype # tagtype) AND 1669 (tagtype@.typset # contype)) OR 1670 ((tagtype@.form = numeric) AND (contype # intptr)) THEN 1671 BEGIN 1672 error (111) ; it := 0 ; 1673 END ELSE 1674 IF (tagtype^.form = scalar) AND negative THEN 1675 BEGIN 1676 error (50) ; it := 0 1677 END 1678 ELSE 1679 BEGIN 1680 it := values ; IF negative THEN it := -it ; 1681 checkminmax (it, tagtype, 301) ; 1682 END ; 1683 END (* ELSE,WITH *) 1684 END ; 1685 END (* NO=1 *) ELSE (* EXPLICIT CONST *) 1686 BEGIN 1687 IF negative THEN ival := -ival ; 1688 it := ival ; 1689 IF ((cl = 1) AND (tagtype@.form # numeric)) OR ((cl = 4) AND 1690 (tagtype # charptr) AND (tagtype@.typset # charptr)) 1691 THEN error (111) ; 1692 checkminmax (it, tagtype, 301) ; 1693 END (* NUMERIC *) ELSE (* TAGTYPE = NIL *) 1694 it := 0 ; 1695 k := it - origin ; 1696 IF (k >= 0) AND (k <= max) THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 55 1697 IF k IN checkcase THEN error (310) ELSE 1698 BEGIN 1699 checkcase := checkcase + [k] ; 1700 ccount := ccount + 1 ; 1701 END ELSE 1702 error (312) ; 1703 create_tagfield_box (lp, blank, true) ; 1704 WITH lp^ DO 1705 BEGIN 1706 nxtel := nxtc ; caseval := it ; 1707 END ; 1708 nxtc := lp ; i := i + 1 ; 1709 insymbol ; 1710 END ; (* CONSTANT *) 1711 IF no <> 19 THEN 1712 IF no = 15 THEN insymbol 1713 ELSE error (317) ; 1714 UNTIL (no > 2) AND (no <> 7) ; 1715 IF no # 19 (* : *) THEN error (7) ELSE insymbol ; 1716 oldnxt := nxt ; 1717 IF no = 9 (* ( *) THEN 1718 BEGIN (* START OF FIELDS LIST *) 1719 displ := minsize ; bdispl := casebytes ; insymbol ; 1720 fieldlist (mxl, pp, nxt) ; 1721 IF no = 10 (* ) *) THEN insymbol ELSE error (4) ; 1722 END (* NO=9 *) ELSE 1723 BEGIN 1724 error (9) ; pp := NIL ; mxl := minsize ; skipt (46) ; 1725 END ; 1726 lpp := nxtc ; 1727 IF nxt = oldnxt THEN ffld := NIL 1728 ELSE 1729 BEGIN 1730 ffld := nxt ; 1731 WHILE ffld^.nxtel <> oldnxt DO 1732 ffld := ffld^.nxtel ; 1733 END ; 1734 FOR i := i DOWNTO 1 DO (* END OF THE FILLING OF *) 1735 (* TAG VALUES RECORDS *) 1736 IF lpp # NIL THEN WITH lpp@ DO 1737 BEGIN 1738 casesize := mxl ; variants := pp ; 1739 firstfield := ffld ; 1740 $OPTIONS compile = trace $ 1741 printrec (lpp) ; 1742 $OPTIONS compile = true $ 1743 lpp := nxtel ; 1744 END ; (* THEN,WITH *) 1745 maxsize := sup (mxl, maxsize) ; (* MAX. SIZE OF THE RECORD *) 1746 IF no = 16 (* ; *) THEN insymbol ; 1747 UNTIL no > 2 ; (* LOOP ON CASE 'LABELS' *) 1748 IF ccount <> max THEN 1749 IF envstandard <> stdextend THEN error (311) ELSE warning (313) ; 1750 create_tagfield_box (lp, blank, false) ; 1751 WITH lp^ DO 1752 BEGIN 1753 casesize := maxsize ; variants := nxtc ; casetype := tagtype ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 56 1754 IF casefield THEN selectorfield := selfield 1755 END ; 1756 $OPTIONS compile = trace $ 1757 printrec (lp) ; 1758 $OPTIONS compile = true $ 1759 varptr := lp ; 1760 END ; (* NO=1 *) 1761 END ; (* NO=26 'CASE' *) 1762 nxtf := nxt ; 1763 $OPTIONS compile = trace $ 1764 IF decltrace > low THEN 1765 BEGIN 1766 IF decltrace = high THEN 1767 BEGIN 1768 write (mpcogout, ' DISPL,BDISPL,CADRE,ERR ', displ, bdispl, cadre, err) ; 1769 nextline ; 1770 END ; 1771 write (mpcogout, ' @@@ FIN FIELDLIST @@@ WITH V.MAXSIZE, V.VARPTR, V.NXTF', maxsize, 1772 ord (varptr), ord (nxtf)) ; 1773 nextline ; 1774 END ; 1775 $OPTIONS compile = true $ 1776 END (* FIELDLIST *) ; 1777 1778 1779 BEGIN (* TYPEDECL *) 1780 $OPTIONS compile = trace $ 1781 IF decltrace > none THEN 1782 BEGIN 1783 write (mpcogout, 1784 ' @@@ DEBUT TYPEDECL @@@ WITH CADRE,ERR,NO,CL,STRUCTISPACK', cadre : 4, 1785 err, no : 4, cl : 4, structispack) ; 1786 nextline ; 1787 END ; 1788 $OPTIONS compile = true $ 1789 packflag := structispack ; structispack := false ; 1790 indexflag := false (* USED IN SIMPLETYPE FOR ARRAY'S INDEX *) ; 1791 IF no = 42 (* PACKED *) THEN 1792 BEGIN 1793 insymbol ; 1794 IF no IN [1, 2, 7, 9, 18] THEN (* ID,CONST,SIGN,(,@ *) 1795 error (98) ELSE 1796 BEGIN structispack := true ; packflag := true ; 1797 END ; 1798 END ; 1799 IF no IN [1, 2, 7, 9] THEN (* ID,CONST,SIGN,( *) 1800 simpletype (li, lh, returntype) (* RETURNSIZE IS ASSIGNED IN PROC *) ELSE 1801 IF no = 38 (* STRUCTURED TYPES *) THEN 1802 BEGIN 1803 CASE cl OF 1804 1 : BEGIN (* ARRAYS *) 1805 insymbol ; 1806 IF no # 11 (* [ *) THEN 1807 BEGIN 1808 error (11) ; 1809 IF NOT (no IN [1, 2, 7]) THEN (* NOT SUBRANGE BEGINNING *) 1810 insymbol ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 57 1811 END ; 1812 indexflag := true ; (* FOR EACH DIMENSION *) 1813 nxta := NIL (* USED TO CHAIN SUBARRAYS VIA AELTYPE *) ; 1814 REPEAT (* LOOP ON DIMENSIONS *) 1815 (* ONE BOX 'ARRAYS' FOR EACH DIM. *) 1816 create_types_box (lp, blank, arrays, false) ; 1817 WITH lp^ DO 1818 BEGIN 1819 pack := structispack ; 1820 aeltype := nxta ; 1821 (* Temporary reverse linkage *) 1822 END ; 1823 nxta := lp ; 1824 insymbol ; 1825 lerr := err ; err := false ; 1826 simpletype (li, lh, lt) ; (* DIMENSION 'S INDEX = SUBRANGE *) 1827 (* CHECK FOR TYPE OF INDEX MADE *) 1828 (* EITHER IN SIMPLETYPE, *) 1829 (* EITHER IN SUBRANGE *) 1830 IF err THEN 1831 BEGIN 1832 skipt (15) ; (* FIND , *) li := 0 ; lh := 0 ; lt := NIL ; 1833 END ELSE 1834 err := lerr ; 1835 WITH nxta@ DO 1836 BEGIN 1837 lo := li ; hi := lh ; inxtype := lt ; 1838 END ; 1839 UNTIL no # 15 (* , *) ; 1840 indexflag := false ; 1841 IF no # 12 (* ] *) THEN 1842 BEGIN 1843 error (12) ; skipt (27) ; (* ==> OF *) 1844 IF terrcl [no] = begsy THEN GOTO 11 ; (* TYPE OF ELEMENT *) 1845 IF no = 27 (* OF *) THEN 1846 BEGIN 1847 insymbol ; GOTO 11 ; 1848 END ; 1849 IF no # 12 (* ] *) THEN 1850 BEGIN 1851 returntype := NIL ; returnsize := 0 ; GOTO 19 ; (* END OF ARRAY TYPE *) 1852 END ; 1853 END (* NO#12 *) ; 1854 insymbol ; 1855 IF no = 27 (* OF *) THEN 1856 insymbol ELSE error (8) ; 1857 11 : (* ANALYSIS OF ELEMENT TYPE *) 1858 lcad := cadre ; cadre := 0 ; lerr := err ; err := false ; 1859 typedecl (elsize, eltyp) ; 1860 IF eltyp # NIL THEN 1861 IF eltyp@.form > records THEN 1862 BEGIN error (108) ; eltyp := NIL ; err := true ; 1863 END ELSE 1864 IF (cadre = 0) OR err THEN (* PREVIOUS ERROR(S) *) 1865 BEGIN 1866 eltyp := NIL ; err := true ; 1867 END ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 58 1868 BEGIN 1869 REPEAT 1870 WITH nxta@ DO 1871 BEGIN 1872 IF NOT pack THEN cadre := sup (cadre, bytesinword) ; 1873 elsize := recadre (elsize, cadre) ; 1874 subsize := elsize ; opt2 := poweroftwo (elsize) ; 1875 bigsize := hi ; bigsize := bigsize - lo + 1 ; 1876 bigsize := bigsize * elsize ; 1877 IF bigsize >= twoto18 * bytesinword THEN 1878 BEGIN error (112) ; bigsize := 1 ; 1879 hi := 1 ; lo := 1 ; (* PROTECT *) 1880 END ; 1881 elsize := round (bigsize) ; 1882 size := elsize ; cadrage := cadre ; 1883 lp := aeltype ; aeltype := eltyp ; (* REVERSE LINKAGE *) 1884 END ; 1885 $OPTIONS compile = trace $ 1886 printrec (nxta) ; 1887 $OPTIONS compile = true $ 1888 eltyp := nxta ; nxta := lp ; 1889 UNTIL nxta = NIL ; 1890 returnsize := elsize ; (* SIZE FOR THE TOTAL ARRAY *) 1891 err := lerr ; 1892 END ; 1893 returntype := eltyp ; (* MAY BE NIL *) 1894 cadre := sup (lcad, cadre) ; 1895 19 : END (* ARRAYS NO=38 CL=1 *) ; 1896 2 : BEGIN (* RECORDS *) 1897 create_types_box (lp, blank, records, false) ; 1898 WITH lp^ DO 1899 BEGIN 1900 pack := structispack ; 1901 END ; 1902 rtyp := lp ; 1903 1904 old_check_id := check_id ; check_id := false ; 1905 1906 insymbol ; 1907 nxtf := NIL ; 1908 displ := 0 ; bdispl := 0 ; (* DISP. IN RECORD AND IN WORD (IN BYTES) *) 1909 lastfld := NIL (* TO INHIBIT USE OF ADJUST FUNCTION WITH FIRST FIELD *) ; 1910 lerr := err ; lcad := cadre ; 1911 err := false ; cadre := 0 ; 1912 fieldlist (returnsize, recvpt, nxtf) ; (* ANALYZIS OF FIELDS' LIST *) 1913 1914 check_id := old_check_id ; 1915 1916 IF no # 22 (* END *) THEN error (13) ; 1917 IF err THEN 1918 typerr (10) ELSE 1919 BEGIN (* NO PREVIOUS ERROR *) 1920 err := lerr ; 1921 returntype := rtyp ; 1922 cadre := sup (lcad, cadre) ; 1923 IF nxtf # NIL THEN (* REVERSE FIELDS'POINTERS *) 1924 (* TO HAVE REAL ORDER *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 59 1925 BEGIN 1926 oldnxtf := nxtf ; pp := nxtf@.nxtel ; 1927 WHILE pp # NIL DO 1928 BEGIN 1929 lp := pp ; pp := lp@.nxtel ; lp@.nxtel := nxtf ; nxtf := lp ; 1930 END ; 1931 oldnxtf@.nxtel := NIL ; 1932 END ; 1933 WITH rtyp@ DO 1934 BEGIN 1935 size := returnsize ; fstfld := nxtf ; recvar := recvpt ; 1936 cadrage := cadre ; 1937 END ; 1938 $OPTIONS compile = trace $ 1939 printrec (rtyp) ; 1940 $OPTIONS compile = true $ 1941 END ; (* NO ERROR *) 1942 IF no = 22 (* END *) THEN insymbol ; 1943 END (* RECORDS NO=38 CL=2 *) ; 1944 3 : BEGIN (* FILES *) 1945 create_types_box (lp, blank, files, false) ; 1946 WITH lp^ DO 1947 BEGIN 1948 pack := structispack ; 1949 cadrage := boundary (files, false, 0) ; 1950 END ; 1951 insymbol ; 1952 IF no = 27 (* OF *) THEN 1953 insymbol ELSE error (8) ; 1954 lcad := cadre ; cadre := 0 ; 1955 lerr := err ; err := false ; 1956 typedecl (returnsize, lfpt) ; 1957 IF (lfpt = NIL) OR (cadre = 0) OR err THEN 1958 typerr (10) ELSE 1959 IF lfpt@.form > records THEN 1960 BEGIN 1961 error (108) ; returntype := NIL ; err := true ; 1962 END ELSE 1963 BEGIN 1964 locpt := lp ; (* BOX FILES *) 1965 cadre := locpt@.cadrage ; err := lerr ; 1966 lp@.feltype := lfpt ; 1967 lp@.size := fsbpointersize ; 1968 $OPTIONS compile = trace $ 1969 printrec (lp) ; 1970 $OPTIONS compile = true $ 1971 returntype := lp ; 1972 END ; 1973 cadre := sup (cadre, lcad) ; 1974 END ; (* FILES NO=38 CL=3 *) 1975 4 : BEGIN (* SET *) 1976 insymbol ; 1977 IF no = 27 (* OF *) THEN 1978 insymbol ELSE error (8) ; 1979 lerr := err ; err := false ; lcad := cadre ; cadre := 0 ; 1980 (* SET IS PACKED ONLY IF *) 1981 (* WE HAVE "PACKED SET" *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 60 1982 packflag := structispack ; 1983 simpletype (sl, sh, spt) ; (* CHECK MADE HERE FOR TYPE *) 1984 IF err OR (spt = NIL) OR (cadre = 0) THEN 1985 typerr (169) ELSE 1986 BEGIN 1987 err := lerr ; 1988 IF NOT (spt@.form IN [numeric, scalar]) THEN typerr (115) ELSE 1989 IF (sl < 0) OR (sh > maxset) THEN 1990 typerr (305) ELSE 1991 BEGIN 1992 create_types_box (lp, blank, power, false) ; 1993 WITH lp^ DO 1994 BEGIN 1995 ppksize := bytesneeded (power, sh, true) ; 1996 setlength := sh + 1 ; 1997 pack := structispack ; 1998 cadrage := boundary (power, packflag, ppksize) ; 1999 size := bytesneeded (power, sh, packflag) ; 2000 elset := spt ; 2001 END ; 2002 $OPTIONS compile = trace $ 2003 printrec (lp) ; 2004 $OPTIONS compile = true $ 2005 returnsize := lp@.size ; 2006 returntype := lp ; 2007 cadre := sup (lcad, lp@.cadrage) ; 2008 END ; 2009 END ; 2010 END ; (* POWER NO=38 CL=4 *) 2011 END (* CASE CL *) 2012 END (* NO = 38 *) ELSE 2013 IF no = 18 (* @ *) THEN 2014 BEGIN (* POINTER *) 2015 check_id_saved := check_id ; check_id := false ; 2016 insymbol ; 2017 check_id := check_id_saved ; 2018 IF no # 1 (* ID *) THEN 2019 typerr (2) ELSE 2020 BEGIN 2021 returnsize := bytesneeded (pointer, 0, packflag) ; 2022 create_types_box (lp, blank, pointer, false) ; 2023 WITH lp^ DO 2024 BEGIN 2025 size := returnsize ; 2026 pack := packflag ; 2027 ptpksize := bytesneeded (pointer, 0, true) ; 2028 cadrage := boundary (pointer, packflag, ptpksize) ; 2029 END ; 2030 srchrec (next) ; IF ctptr = NIL THEN search ; 2031 IF ctptr # NIL (* ID. FOUND *) THEN BEGIN 2032 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 2033 IF (ctptr@.klass = vars) AND (ctptr@.vtype = NIL) THEN 2034 ctptr := NIL ; (* ERROR SECURITY; *) 2035 IF ctptr^.klass = types THEN 2036 IF ctptr^.tlevel < level THEN 2037 IF pendingtypeallowed THEN 2038 ctptr := NIL ; (* IN CASE OF DEFINITION ALTER AT THIS LEVEL *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 61 2039 (* ERROR DETECTED AT END OF VARDECL *) 2040 END ; 2041 IF ctptr = NIL THEN 2042 BEGIN (* UNDEC TYPE *) 2043 IF NOT pendingtypeallowed THEN 2044 BEGIN 2045 error (62) ; returntype := NIL ; returnsize := 0 ; 2046 END ELSE 2047 IF ptx > ptlimit THEN 2048 BEGIN 2049 error (268) ; returntype := NIL ; returnsize := 0 ; 2050 END ELSE 2051 WITH ptlist [ptx], lp@ DO 2052 BEGIN 2053 hname := aval ; pptr := lp ; 2054 domain := lp ; eltype := lp ; 2055 returntype := lp ; ptx := ptx + 1 ; (* POINTS NEXT FREE ENTRY *) 2056 rfil := symbolfile ; rlin := symbolline ; 2057 END ; 2058 insymbol ; 2059 END (* UNDECLAR *) ELSE 2060 BEGIN returntype := lp ; insymbol ; 2061 IF ctptr@.klass = types THEN 2062 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 2063 WITH ctptr@ DO 2064 BEGIN 2065 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 2066 IF (klass = types) AND (form <= records) THEN 2067 BEGIN 2068 lp@.domain := lp ; 2069 lp@.eltype := ctptr ; (* DOMAIN FLAG NEW ON HEAP *) 2070 END ELSE 2071 error (96) ; 2072 END ; 2073 END ; 2074 $OPTIONS compile = trace $ 2075 printrec (lp) ; 2076 $OPTIONS compile = true $ 2077 cadre := sup (cadre, lp@.cadrage) ; 2078 END (* NOT ERROR *) 2079 END (* POINTER *) ELSE 2080 typerr (10) ; 2081 $OPTIONS compile = trace $ 2082 IF decltrace > low THEN 2083 BEGIN 2084 write (mpcogout, ' @@@ FIN TYPEDECL @@@ WITH V.RETSIZE,TYPE ;CADRE,ERR,STRUCTISPACK ', 2085 returnsize, ord (returntype), cadre, err, structispack) ; 2086 nextline ; 2087 END ; 2088 $OPTIONS compile = true $ 2089 END (* TYPEDECL *) ; 2090 2091 2092 $OPTIONS page $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 62 2093 2094 (* *******************************************************************BODY***** *) 2095 2096 PROCEDURE body (surrptr, firstentry : ctp) ; 2097 2098 (* C THIS PROCEDURE COMPILES A PASCAL 'BLOCK'. 2099* LABEL DECLARATION 2100* CONST " " ..... INCONST 2101* TYPE " " ..... TYPEDECL 2102* VAR " " ..... VARDECL 2103* VALUE VALUEDECL 2104* PROCEDURE (FUNCTION) 2105* INSTRUCTION ..... ENTERBODY 2106* COMPSTAT 2107* LEAVEBODY. 2108* ALL NEEDED INFORMATIONS ARE MEMORIZED IN BOXES OF SEVERAL KLASS 2109* TYPES,KONST,VARS, PROC AND SOON 2110* THESE BOXES ARE BUILT IN SEVERAL PROCEDURES,ALL CALLED BY 'BODY' 2111* ARE USED IN GENERATION PART 2112* PARAMETER'S MEANINGS 2113* SURRPTR POINTS ON THE BOX 'PROC' WHICH DECLARATION PART IS 2114* ACTUALLY COMPILED 2115* NIL FOR THE MAIN 2116* FIRSTENTRY POINTS A BOX 'DUMMYCLASS' WHICH IDENTIFIES THE 2117* BEGINNING OF ALL BOXES LIVING THE SAME TIME 2118* AS THE PROCEDURE COMPILED (USE WITH RESET ) 2119* C *) 2120 (* E ERRORS DETECTED 2121* HEAPERROR 2122* 2 IDENTIFIER EXPECTED 2123* 4 ')' EXPECTED 2124* 7 ':' EXPECTED 2125* 14 ';' EXPECTED 2126* 15 INTEGER EXPECTED 2127* 16 '=' EXPECTED 2128* 17 'BEGIN' EXPECTED 2129* 20 ',' EXPECTED 2130* 65 VALUE PART ONLY FOR GLOBALS 2131* 87 PROC MUST BE DEFINED IN EXTERNAL LIST 2132* 88 INVALID DIRECTIVE 2133* 101 IDENTIFIER DECLARED TWICE 2134* 103 IDENTIFIER NOT OF APPROPRIATE CLASS 2135* 104 IDENTIFIER NOT DECLARED 2136* 108 File not allowed here 2137* 116 Forward redefinition conflict with declaration 2138* 117 UNDEF FORWARD PROCEDURE 2139* 119 REPETITION OF PARAMETER LIST NOT ALLOWED (FORWARD) 2140* 120 FUNCTION TYPE MUST BE REAL,NUMERIC,SCALAR OR POINTER 2141* 123 RESULT TYPE IDENTIFIER EXPECTED 2142* 166 MULTIDECLARED LABELS 2143* 214 SIZE ALLOWED FOR GLOBALS EXCEEDED 2144* 251 TOO MANY NESTED PROC AND (OR) FUNCTIONS 2145* 267 TOO MANY LABELS (MAXLABS) 2146* 306 LABEL MUST HAVE AT MOST 4 DIGITS 2147* E *) 2148 LABEL 2149 1 ; (* BODY BEGINS. USED FOR ERR. RECOVERY *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 63 2150 VAR 2151 lca, lic : integer ; (* INITIALIZED(AND USED) *) 2152 (* IN ENTERBODY(LEAVEBODY) *) 2153 saved_level, it : integer ; 2154 lprockind : idkinds ; 2155 typofproc : idprocdef ; 2156 lp, procptr, lfirstentry : ctp ; 2157 fstix, lno, oldlev, oldlc, nestproc, locreturncode : integer ; 2158 locerr : boolean ; 2159 lextpt : ptexternalitem ; 2160 locsegname, locentryname : alfaid ; 2161 workextp : ptexternalitem ; 2162 2163 (* ***********************************************FINDSEMICOLON < BODY********* *) 2164 2165 PROCEDURE findsemicolon ; 2166 2167 (* C USED TO VERIFY IF THE READ SYMBOL IS ;AND TO PERFORM THE NEXT INSYMBOL 2168* IF ; IS NOT FOUND THEN 2169* SKIP UNTIL ; USING ERRCL 2170* IF ; NOT FOUND THEN GOTO EXIT 1 IN BODY (LABEL PART) 2171* C *) 2172 (* E ERROR(S) DETECTED 2173* 14 : ';' EXPECTED 2174* E *) 2175 BEGIN (* FINDSEMICOLON *) 2176 IF no # 16 (* ; *) THEN 2177 BEGIN 2178 error (14) ; skip (16) ; 2179 IF no # 16 (* ; *) THEN GOTO 1 ; (* EXIT AT LABEL PART IN BODY *) 2180 END ; 2181 insymbol ; 2182 END (* FINDSEMICOLON *) ; 2183 2184 2185 (* ***********************************************ENTERBODY < BODY************* *) 2186 2187 PROCEDURE enterbody ; 2188 2189 (* C CALLED AT BEGINNING OF THE STATEMENT PART OF A PROC,(PROGRAM) 2190* . GENERATES CODE TO OPEN FILES 2191* . GENERATES PROCEDURE (PROGRAM) PROLOG 2192* . INITIALIZES LOCAL TABLES FOR THIS LEVEL 2193* . INITIALIZE PHYSICAL POINTER ON CLASSES 2194* . INIT LIC, LCA (DEFINED IN BODY) 2195* LIC HAS THE VALUE OF THE INITIAL IC 2196* LCA IS OBTAINED EITHER BY GENPROLOG OR BY GENPROCENTRY AND GIVES THE 2197* ADDRESS OF AN UNCOMPLETED WORD OF PUSH WHICH WILL BE FILLED IN 2198* LEAVEBODY 2199* C *) 2200 VAR 2201 it : integer ; 2202 BEGIN 2203 $OPTIONS compile = trace $ 2204 IF decltrace > none THEN 2205 BEGIN 2206 write (mpcogout, ' @@@ DEBUT ENTERBODY @@@ PROCPTR,IC,LC ', ord (procptr), ic, lc) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 64 2207 nextline ; 2208 END ; 2209 $OPTIONS compile = true $ 2210 (* PROGRAM OR PROCEDURE ENTRY CODE *) 2211 environt := code ; 2212 lic := ic ; (* DEPL OF FIRST INSTR. OF THIS *) 2213 (* PROCEDURE,LIC DEFINED IN BODY *) 2214 cb := 0 ; 2215 (* BY LEVEL INITIALIZE *) 2216 (* CONSTANT'S LISTS *) 2217 currwcstpt := NIL ; (* WORDS *) 2218 currlcstpt := NIL ; (* DOUBLE-WORDS *) 2219 currllcstpt := NIL ; (* EIGHT-WORDS (SETS) *) 2220 currrcstpt := NIL ; (* REAL *) 2221 nextalf := NIL ; 2222 IF mapswitch THEN BEGIN 2223 WITH currentnode^ DO 2224 BEGIN 2225 symbolindex := hdrind ; 2226 symbolfile := hdrfil ; 2227 symbolline := hdrlin ; 2228 END ; 2229 statement_begins (false) ; 2230 END ; 2231 IF level = 0 THEN (* MAIN PROGRAM *) 2232 BEGIN 2233 genprolog (lca, lic) ; 2234 lc := pascdebstacklocal ; 2235 END ELSE 2236 (* PASCAL PROCEDURE ENTRY CODE *) 2237 genprcentry (lca, surrptr, lic) ; 2238 IF mapswitch THEN BEGIN 2239 statement_ends (5) ; (* "begin" *) 2240 statement_begins (true) ; 2241 END ; 2242 (* NOW GENERATES LOCAL FILES FSB *) 2243 FOR it := filev [level] TO filtop DO initiozone (filpts [it]) ; 2244 (* RECADRE LC AND INITIALIZES TMAX AND LCSAVE *) 2245 lc := recadre (lc, bytesindword) ; 2246 lcsave := lc ; tmax := lc ; 2247 IF mapswitch THEN statement_ends (5) ; (* "begin" *) 2248 $OPTIONS compile = trace $ 2249 IF decltrace > low THEN 2250 BEGIN 2251 write (mpcogout, ' @@@ FIN ENTERBODY @@@ WITH IC AT', ic) ; nextline ; 2252 END ; 2253 $OPTIONS compile = true $ 2254 END ; (* ENTERBODY *) 2255 2256 2257 (* *****************************************LEAVEBODY < BODY******************** *) 2258 2259 PROCEDURE leavebody ; 2260 2261 (* C FUNCTIONS OF THIS PROCEDURE 2262* . CLOSE FILES 2263* . CHECK FOR UNDEFINED LABELS AND EXIT LABELS *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 65 2264* . FREES LOCAL TABLES 2265* . EXIT CODE FOR A FUNCTION 2266* . GENERATES IN LINES CSTES 2267* . GENERATES EXIT CODE FOR PROC OR PROGRAM. 2268* C *) 2269 (* E ERRORS DETECTED 2270* 155: FUNCTION IDENTIFIER HAS NOT BEEN ASSIGNED 2271* 168: UNDEFINED LABEL ; SEE MESSAGE 2272* 227 : SOME LABELS DECLARED IN THIS PROCEDURE ARE ILLEGALLY REFERENCED. 2273* E *) 2274 VAR 2275 it, endcode : integer ; 2276 lerr : boolean ; 2277 locreturncode : integer ; 2278 lp, lpaux : ctp ; 2279 locintext : integer ; 2280 trans : RECORD 2281 CASE boolean OF 2282 true : (name : alfaid) ; 2283 false : (half_wd : PACKED ARRAY [1..4] OF shrtint) ; 2284 END ; 2285 message : PACKED ARRAY [1..132] OF char ; 2286 iter, index : integer ; 2287 ref_err : boolean ; 2288 refbox : refptr ; 2289 BEGIN (* LEAVEBODY *) 2290 $OPTIONS compile = trace $ 2291 IF decltrace > none THEN 2292 BEGIN 2293 write (mpcogout, ' @@@ DEBUT LEAVEBODY @@@ WITH LIC,LCA, IC', lic, lca, ic) ; 2294 nextline ; 2295 END ; 2296 $OPTIONS compile = true $ 2297 IF mapswitch THEN statement_begins (true) ; 2298 IF level = 0 THEN 2299 BEGIN 2300 genstand (pr0, returnzeroplace, itsp3, tn) ; 2301 IF linktoend THEN 2302 IF errtotal = 0 THEN 2303 BEGIN 2304 genentrypoint (ic, linktoendplace, 4 (* EXIT LABEL *), 2305 blank, blank, 2306 functionflag, entrylength, 2307 locreturncode) ; 2308 IF locreturncode <> 0 THEN 2309 error (510) ; 2310 IF getpr4afterstop THEN 2311 genstand (pr6, pr4depw, iepp4, tny) ; 2312 IF mapswitch THEN BEGIN 2313 statement_ends (1) ; 2314 statement_begins (true) ; 2315 END ; 2316 END ; 2317 END ; 2318 (* CLOSE FILES AND FREES FILEV *) (* FILES *) 2319 FOR it := filev [level] TO filtop DO 2320 closefile (filpts [it]) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 66 2321 (* * CHECK FOR UNDEFINED LABELS, FREES LABTAB *) (* LABELS *) 2322 ref_err := false ; 2323 lerr := false ; 2324 FOR it := fstix TO clabix DO 2325 WITH labtab [it] DO 2326 IF labdef = 0 THEN 2327 BEGIN 2328 nextline ; 2329 writeln (mpcogerr, ' ***** UNDEFINED LABEL :', labval : 5) ; 2330 write (mpcogout, ' ***** UNDEFINED LABEL :', labval : 5) ; nextline ; 2331 lerr := true ; 2332 END ELSE 2333 BEGIN 2334 IF labexit # 0 THEN 2335 exitlabel (labexit, lic + labdef) ; 2336 WITH labbox^ DO 2337 BEGIN 2338 refbox := references ; 2339 WHILE refbox <> NIL DO 2340 BEGIN 2341 WITH refbox^ DO 2342 FOR iter := 1 TO refnbr DO 2343 WITH refs [iter] DO 2344 IF (place < ref_allowed.ic_from) OR 2345 (place > ref_allowed.ic_to) THEN 2346 BEGIN 2347 ref_err := true ; 2348 index := swrite (message, 1, ' ***** ILLEGAL REFERENCE TO LABEL ', labval : 1, ' AT LINE ' ) ; 2349 IF filen <> 0 THEN 2350 index := swrite (message, index, filen : 1, '-') ; 2351 IF linen > 0 THEN 2352 index := swrite (message, index, linen : 1) ELSE 2353 index := swrite (message, index, -linen : 1) ; 2354 write (mpcogout, message : index - 1) ; nextline ; 2355 writeln (mpcogerr, message : index - 1) 2356 END ; 2357 refbox := refbox^.nextref 2358 END 2359 END 2360 END ; 2361 IF ref_err THEN error (227) ; 2362 IF lerr THEN error (168) ; 2363 clabix := fstix - 1 ; 2364 (* INSER MAX STACK DEPL IN INST GENERATED IN PROLOG *) (* INSER *) 2365 IF lca # 0 THEN (* NOT PREVIOUS ERROR *) 2366 geninsertion (lca, surrptr) ; (* LCA INIT IN ENTERBODY *) 2367 (* BY GENPROCENTRY *) 2368 IF mapswitch THEN BEGIN 2369 statement_ends (1) ; 2370 statement_begins (true) ; 2371 END ; 2372 IF surrptr = NIL THEN level := 0 ; (* FOR ERRORS SAVING *) 2373 (* FUNCTION CODE *) (* FUNCTION *) 2374 IF level # 0 THEN 2375 IF surrptr@.proctype # surrptr (* FUNCTION FLAG *) THEN 2376 BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 67 2377 IF NOT surrptr@.procisassigned THEN error (155) ; 2378 surrptr@.procinscope := false ; 2379 genstand (pr0, functionvaluecheckplace, itsp3, tn) ; 2380 gencodfonct (surrptr) ; 2381 END ; 2382 (* GENERATES PROCEDURE ( PROGRAM) EXIT *) (* EXIT CODE *) 2383 IF level = 0 THEN 2384 genpgexit ELSE 2385 genprcexit (surrptr) ; 2386 IF mapswitch THEN BEGIN 2387 statement_ends (1) ; 2388 statement_begins (false) ; 2389 END ; 2390 (* GENERATE F.REF. INFO IF FSB INIT. BY TRAP *) 2391 IF (level = 0) AND init_fsb_trap_flag THEN 2392 FOR it := filev [0] TO filtop DO 2393 gen_init_fsb_trap_structures (filpts [it]) ; 2394 2395 filtop := filev [level] - 1 ; 2396 2397 2398 (* SCANS PROC DEF. AT THIS LEVEL *) 2399 (* AS FORWARD AND NOT DEFINED *) 2400 lp := next ; 2401 WHILE lp <> NIL DO 2402 WITH lp@ DO 2403 IF klass = proc THEN 2404 BEGIN 2405 IF prockind = imported THEN 2406 BEGIN 2407 (* GENERATES LINK "ITS" *) 2408 (* FOR IMPORTED PROCEDURES *) 2409 IF errtotal = 0 THEN 2410 BEGIN 2411 IF procextitem <> NIL THEN 2412 BEGIN 2413 locsegname := procextitem^.extsegname ; 2414 locentryname := procextitem^.extentryname ; 2415 END ELSE 2416 BEGIN 2417 locsegname := blank ; locentryname := blank ; 2418 END ; 2419 2420 IF pwantdescs THEN locintext := ic ELSE locintext := 0 ; 2421 genentrypoint (locintext, procaddr, 2, 2422 locsegname, locentryname, 2423 functionflag, entrylength, 2424 locreturncode) ; 2425 IF locreturncode <> 0 THEN 2426 error (505) ; 2427 IF pwantdescs THEN BEGIN 2428 usednameaddr := octalformataddr ; 2429 lp^.pextcalltrapinfoplace := ic DIV bytesinword ; 2430 (* FILL NOW TRAP INFO STRUCTURE FOR EXT CALL WANTING DESCS. 2431* FOR CONTENTS SEE : pascal_ext_call_trap_info.incl.pl1 *) 2432 infich (1) ; (* VERSION NUMBER IN TRAP INFO STRUCTURE *) 2433 infich (0) ; (* REL OFFSET TO PARM DESCS _ FILLED IN PASCAL_CREATE_TABLES *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 68 2434 usednameaddr := octalformataddr ; 2435 infich (enterreftosymbol (lp)) ; 2436 infich (pdescsaddrplace DIV bytesinword) ; 2437 genreltext (absl, 3) ; genreltext (int18, 1) ; 2438 trans.name := lp^.procextitem^.extgenerator ; 2439 FOR it := 1 TO 4 DO 2440 BEGIN 2441 usednameaddr := asciiformataddr ; 2442 infich (trans.half_wd [it]) ; 2443 END ; 2444 genreltext (absl, 4) ; 2445 END ; 2446 END ; 2447 END ELSE 2448 IF procdef = forwdef THEN 2449 BEGIN 2450 nextline ; 2451 write (mpcogout, ' ***** PROC NOT DEFINED :', name) ; nextline ; 2452 error (117) ; 2453 END ; 2454 lp := nxtel ; 2455 END ELSE 2456 lp := nxtel ; 2457 endcode := indfich - 1 ; 2458 (* GENERATION OF WORD CSTES *) 2459 WHILE currwcstpt # NIL DO 2460 WITH currwcstpt@ DO 2461 BEGIN 2462 inserundlab (cb, cstplace) ; 2463 usednameaddr := octalformataddr ; 2464 genc (valu) ; 2465 currwcstpt := cstnext ; 2466 END ; 2467 IF ic MOD bytesindword # 0 THEN genc (0) ; 2468 (* GENERATION OF D-WORD CSTES *) 2469 WHILE currlcstpt # NIL DO 2470 WITH currlcstpt@ DO 2471 BEGIN 2472 inserundlab (cb, lplace) ; 2473 usednameaddr := octalformataddr ; genc (lvalu [0]) ; usednameaddr := octalformataddr ; genc (lvalu [1]) ; 2474 currlcstpt := lnext ; 2475 END ; 2476 (* GENERATION OF REAL CSTES *) 2477 WHILE currrcstpt # NIL DO 2478 WITH currrcstpt@ DO 2479 BEGIN 2480 inserundlab (cb, rplace) ; 2481 genr (rvalu) ; 2482 currrcstpt := rnext ; 2483 END ; 2484 (* GENERATION OF SET(8 W) CSTES *) 2485 WHILE currllcstpt # NIL DO 2486 WITH currllcstpt@ DO 2487 BEGIN 2488 inserundlab (cb, llplace) ; 2489 FOR it := 0 TO bornesupset DO BEGIN usednameaddr := octalformataddr ; genc (llvalu [it]) ; END ; 2490 currllcstpt := llnext ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 69 2491 END ; 2492 (* NOW GENERATES ALFA STRINGS *) 2493 lp := nextalf ; (* LAST ALFA CONST USED *) 2494 WHILE lp # NIL DO 2495 WITH lp@ DO 2496 BEGIN 2497 IF unddeb <> 0 THEN 2498 BEGIN 2499 inserundlab (cb, unddeb) ; 2500 genstring (lp) ; 2501 IF NOT odd (indfich) THEN infich (0) ; unddeb := 0 ; 2502 END ; 2503 lpaux := lp ; lp := succ ; lpaux@.succ := lpaux ; (* NEXT AND FREE OLD OCC. *) 2504 END ; 2505 writout (lic, endcode) ; 2506 IF mapswitch THEN 2507 statement_ends (0) ; 2508 $OPTIONS compile = trace $ 2509 IF decltrace > low THEN 2510 BEGIN 2511 write (mpcogout, ' @@@ FIN LEAVEBODY @@@ WITH IC,CB ', ic, cb) ; nextline ; 2512 END ; 2513 $OPTIONS compile = true $ 2514 END (* LEAVEBODY *) ; 2515 2516 2517 (* ***********************************************VALUEDECL < BODY *********** *) 2518 2519 PROCEDURE valuedecl ; 2520 2521 (* C THIS PROCEDURE IS USED IN ORDER TO ANALYZE THE VALUE PART OF A MAIN 2522* PROGRAM. SPACE IS KEPT FOR ALL VARIABLES AND VARIABLES WHICH 2523* OCCUR IN VALUE PART ARE INITIALIZED. C *) 2524 (* E 2 IDENTIFIER EXPECTED 2525* 15 INTEGER EXPECTED 2526* 16 '=' EXPECTED 2527* 64 ',' OR ')' EXPECTED IN VALUE PART 2528* 69 VALUE PART NOT ALLOWED (STANDARD) 2529* 104 IDENTIFIER NOT DECLARED 2530* 130 NIL NO MORE ALLOWED (STANDARD) 2531* 138 TYPE OF THE VARIABLE IS NOT ARRAY OR RECORD 2532* 145 TYPE CONFICT 2533* 178 ALPHANUMERIC STRING IS TOO LONG 2534* 179 INITIALIZATION LIST IS TOO LONG 2535* 180 INITIALIZATION OF IMPORTED VARIABLE NOT ALLOWED 2536* 181 VARIABLE MUST BE ARRAY OR RECORD 2537* 182 PACKED VARIABLE NOT ALLOWED HERE 2538* 183 ILLEGAL VARIABLE TYPE IN VALUE PART 2539* 184 IDENTIFIER MUST BE VARIABLE (VALUE) 2540* 185 VARIABLES MUST BE INITIALIZED IN THEIR DECLARATION ORDER E *) 2541 LABEL 10, (* END OF VALUE PART *) 2542 20, (* EMERGENCY LABEL USED IF *) 2543 (* SEVERAL CALLS OCCUR *) 2544 5 ; (* STOPS LIST INSPECTION *) 2545 VAR 2546 wkextpt : ptexternalitem ; 2547 itisstring, invalue, valerr : boolean ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 70 2548 addcurrent, nbpack, alfamax, nbitem, nrep, i, nitem, it, kt : integer ; 2549 cstkind : 1..4 ; strlen : integer ; 2550 oldnext, generic, before, curritem, pt, pteltype, toinit : ctp ; 2551 filesize : integer ; 2552 locreturncode : integer ; 2553 wkname : alfaid ; 2554 2555 2556 (* *************************************VALERROR < VALUEDECL < BODY************ *) 2557 2558 PROCEDURE valerror (fnoerr : integer) ; 2559 2560 (* C PRODUCES AN ERROR MESSAGE AND FINDS A SEMI-COLON. VALERR IS SET TRUE C *) 2561 BEGIN 2562 error (fnoerr) ; 2563 valerr := true ; 2564 skip (16) ; 2565 IF no # 16 THEN 2566 BEGIN error (14) ; GOTO 1 ; (* LABEL PART IN BODY *) END ; insymbol ; 2567 END (* VALERROR *) ; 2568 2569 2570 BEGIN (* VALUEDECL *) 2571 $OPTIONS compile = trace $ 2572 IF decltrace > none THEN 2573 BEGIN 2574 write (mpcogout, ' @@@ DEBUT VALUEDECL @@@ WITH NEXT ,XC ', ord (next), xc) ; 2575 nextline ; 2576 END ; 2577 $OPTIONS compile = true $ 2578 valuenb := valuenb + 1 ; (* IF NO ERROR MUST BE ONE *) 2579 IF valuenb > 1 THEN GOTO 20 ; (* EXIT WITH EMERGENCY *) 2580 (* REVERSE LINKAGE OF THE *) 2581 (* CONTEXTE TABLE TO THIS LEVEL *) 2582 IF next # NIL THEN 2583 BEGIN 2584 oldnext := NIL ; before := next@.nxtel ; 2585 WHILE before # NIL DO 2586 BEGIN 2587 next@.nxtel := oldnext ; 2588 oldnext := next ; 2589 next := before ; 2590 before := before@.nxtel ; 2591 END ; 2592 next@.nxtel := oldnext ; 2593 END ; 2594 IF no = 54 (* VALUE *) THEN 2595 BEGIN 2596 IF envstandard = stdpure THEN 2597 error (69) ; 2598 insymbol ; invalue := true ; 2599 END ELSE invalue := false ; 2600 addcurrent := xc ; (* CURRENT ADDRESS IN BYTES *) 2601 curritem := next ; (* CURRENT ITEM OF CONTEXTABLE *) 2602 toinit := NIL ; (* LAST INITIALIZED VALUE *) 2603 oldnext := next ; (* FIRST INITIALIZABLE VAR *) 2604 WHILE curritem # NIL DO (* SCAN CONTEXTABLE *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 71 2605 WITH curritem@ DO 2606 IF klass # vars THEN curritem := nxtel (* NOT A VARIABLE *) ELSE 2607 IF vtype = NIL THEN curritem := nxtel (* ERROR IN TYPE *) ELSE 2608 BEGIN 2609 IF vtype^.form = files THEN 2610 BEGIN 2611 IF vkind <> imported THEN 2612 BEGIN 2613 IF vkind = exportable THEN 2614 BEGIN 2615 environt := linkage ; vaddr := lkc ; 2616 lkc := lkc + bytesindword ; 2617 IF errtotal = 0 THEN 2618 BEGIN 2619 genexportfile (name, vaddr, locreturncode) ; 2620 IF locreturncode <> 0 THEN 2621 error (509) ; 2622 END ; 2623 indfich := 1 ; environt := data ; 2624 END (* EXPORTABLE *) ELSE 2625 BEGIN 2626 addcurrent := vaddr ; 2627 genmulticsnil ; 2628 writout (addcurrent, 0) ; 2629 addcurrent := vaddr + bytesneeded (files, 0, false) ; 2630 END (* STATIC or PERMANENT FILE *) ; 2631 END (* not IMPORTED *) ; 2632 END (* FILES *) ELSE 2633 IF invalue THEN (* LOOK IF THE CURRENT VARIABLE *) 2634 (* IS IN VALUE LIST *) 2635 BEGIN 2636 WHILE no # 1 DO (* SEEKS INITIALIZED IDENTIFIERS *) 2637 BEGIN 2638 IF no IN [21, 44, 45, 55] (* BEGIN,PROCEDURE,FUNCTION $ *) THEN 2639 BEGIN 2640 IF no <> 55 THEN 2641 error (76) ELSE 2642 insymbol ; 2643 invalue := false ; GOTO 10 (* EXIT INVALUE *) ; 2644 END ; 2645 error (2) ; skip (46) ; 2646 IF no # 16 (* ; *) THEN 2647 BEGIN 2648 invalue := false ; GOTO 10 (* EXIT INVALUE *) ; 2649 END ; 2650 insymbol ; 2651 END ; 2652 (* IDENTIFIER HAS BEEN FOUND *) 2653 srchrec (next) ; (* LOOKS IN CONTEXTTABLE *) 2654 IF ctptr = NIL THEN valerror (104) (* UNDECLARED *) ELSE 2655 IF ctptr@.klass # vars THEN valerror (184) (* NOT A VARIABLE *) ELSE 2656 toinit := ctptr ; 2657 IF toinit = curritem THEN 2658 BEGIN (* DECLARED IDENTIFIER *) 2659 srchrec (oldnext) ; 2660 IF symbolmap THEN 2661 nameisref (ctptr, symbolfile, -symbolline) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 72 2662 IF ctptr = NIL THEN valerror (185) ELSE 2663 WITH ctptr@ DO (* INITIALIZABLE *) 2664 IF vkind = imported THEN valerror (180) ELSE 2665 BEGIN 2666 valerr := false ; 2667 IF vkind = exportable THEN 2668 environt := linkage ELSE 2669 addcurrent := vaddr ; 2670 insymbol ; 2671 IF (no # 8) OR (cl # 6) (* = *) 2672 THEN error (16) ELSE insymbol ; 2673 pteltype := vtype ; itisstring := false ; nbpack := 0 ; 2674 WHILE pteltype@.form = arrays DO 2675 BEGIN 2676 IF pteltype@.pack THEN 2677 BEGIN 2678 nbpack := nbpack + 1 ; (* NBR OF SUBTYPES PACKED *) 2679 IF nbpack = 1 THEN 2680 IF pteltype@.aeltype = charptr THEN 2681 BEGIN 2682 itisstring := true ; 2683 (* SIZE OF ALFA STRING : *) 2684 alfamax := pteltype@.size ; 2685 END (* STRING OF CHAR *) ; 2686 END ; 2687 pteltype := pteltype@.aeltype ; 2688 IF pteltype = NIL THEN valerror (183) ; 2689 END ; 2690 IF pteltype^.father_schema = string_ptr THEN 2691 BEGIN 2692 cstkind := 4 ; 2693 alfamax := pteltype^.actual_parameter_list^.values ; 2694 END ELSE 2695 BEGIN 2696 IF pteltype@.form IN 2697 [pointer, power, files, aliastype] THEN 2698 valerror (183) ELSE 2699 IF (nbpack # 0) THEN 2700 IF itisstring THEN cstkind := 3 ELSE 2701 valerror (182) ELSE 2702 IF pteltype = realptr 2703 THEN cstkind := 2 ELSE cstkind := 1 ; 2704 IF NOT valerr THEN 2705 IF (vtype@.form = records) OR 2706 ((vtype@.form = arrays) AND (NOT vtype@.pack)) 2707 THEN 2708 BEGIN 2709 IF no # 9 (* ( *) THEN valerror (009) ; 2710 END 2711 ELSE 2712 IF no = 9 THEN valerror (138) ; 2713 END ; 2714 IF NOT valerr THEN 2715 BEGIN 2716 IF no = 9 THEN (* LIST OF VALUES *) 2717 BEGIN 2718 IF vtype@.form = records THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 73 2719 BEGIN 2720 pteltype := intptr ; cstkind := 1 ; 2721 END ; 2722 CASE cstkind OF 2723 1 : nbitem := vtype@.size DIV intptr@.size ; 2724 2 : nbitem := vtype@.size DIV realptr@.size ; 2725 3 : nbitem := vtype@.size DIV alfamax ; 2726 4 : nbitem := vtype^.size DIV (alfamax + 4) ; 2727 END (* CASE *) ; 2728 nitem := 0 ; 2729 REPEAT 2730 insymbol ; inconst (i, pt, next, false) ; 2731 nrep := 1 ; 2732 IF (no = 6) AND (cl = 1) (* * *) THEN 2733 BEGIN 2734 IF (i = 1) AND (conint > 0) 2735 THEN nrep := conint ELSE error (15) ; 2736 insymbol ; inconst (i, pt, next, true) ; 2737 END ; 2738 nitem := nitem + nrep ; 2739 IF nitem > nbitem THEN (* TOO MANY ITEMS IN THE LIST *) 2740 BEGIN 2741 valerror (179) ; 2742 GOTO 5 ; (* SKIP INITIAL VALUE -> ; *) 2743 END ; 2744 CASE cstkind OF 2745 1 : BEGIN 2746 compatbin (pteltype, pt, generic) ; 2747 IF (generic = NIL) OR (generic = realptr) 2748 THEN error (145) ELSE 2749 BEGIN 2750 IF pteltype # intptr THEN 2751 checkminmax (conint, pteltype, 303) ; 2752 FOR it := 1 TO nrep DO genc (conint) ; 2753 END ; 2754 END ; 2755 2 : BEGIN 2756 IF pt # pteltype THEN 2757 IF pt = intptr 2758 THEN conreel := conint ELSE 2759 error (145) ; 2760 FOR it := 1 TO nrep DO genr (conreel) ; 2761 END ; 2762 3 : IF pt # alfaptr THEN error (145) ELSE 2763 BEGIN 2764 IF longstring > alfamax THEN error (178) ; 2765 longstring := alfamax ; (* TRUNC OR PAD *) 2766 FOR it := 1 TO nrep DO genalfa ; 2767 END ; 2768 4 : IF pt <> alfaptr THEN 2769 IF pt = charptr THEN 2770 FOR it := 1 TO nrep DO 2771 BEGIN 2772 genc (1) ; genc (conint * twoto27) ; 2773 IF alfamax > 4 THEN 2774 FOR kt := 1 TO ((alfamax - 1) DIV 4) DO genc (0) ; 2775 END *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 74 2776 ELSE error (145) 2777 ELSE 2778 BEGIN 2779 IF longstring > alfamax THEN 2780 BEGIN 2781 error (178) ; 2782 strlen := alfamax ; 2783 END ELSE 2784 strlen := longstring ; 2785 longstring := alfamax ; (* TRUNC OR PAD *) 2786 FOR it := 1 TO nrep DO 2787 BEGIN 2788 genc (strlen) ; 2789 genalfa ; 2790 END ; 2791 END ; 2792 END (* CASE *) ; 2793 IF NOT (no IN [10, 15]) (* , ) *) THEN error (64) ; 2794 UNTIL no # 15 ; 2795 IF no = 10 THEN insymbol ; 2796 END ELSE (* ONE CONSTANT ONLY *) 2797 BEGIN 2798 inconst (i, pt, next, true) ; 2799 CASE cstkind OF 2800 1 : BEGIN 2801 compatbin (pteltype, pt, generic) ; 2802 IF (generic = NIL) OR (generic = realptr) THEN 2803 error (145) ELSE 2804 BEGIN 2805 IF pteltype # intptr THEN 2806 checkminmax (conint, pteltype, 303) ; 2807 genc (conint) ; 2808 END ; 2809 END ; 2810 2 : BEGIN 2811 IF pt # pteltype THEN 2812 IF pt = intptr 2813 THEN conreel := conint ELSE error (145) ; 2814 genr (conreel) ; 2815 END ; 2816 3 : IF pt # alfaptr THEN error (145) ELSE 2817 BEGIN 2818 IF longstring > alfamax THEN error (178) ; 2819 longstring := alfamax ; 2820 genalfa ; 2821 END ; 2822 4 : IF pt <> alfaptr THEN 2823 IF pt = charptr THEN 2824 BEGIN 2825 genc (1) ; genc (conint * twoto27) ; 2826 IF alfamax > 4 THEN 2827 FOR it := 1 TO ((alfamax - 1) DIV 4) DO genc (0) ; 2828 END 2829 ELSE error (145) 2830 ELSE 2831 BEGIN 2832 IF longstring > alfamax THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 75 2833 BEGIN 2834 error (178) ; 2835 genc (alfamax) ; 2836 END 2837 ELSE 2838 genc (longstring) ; 2839 longstring := alfamax ; 2840 genalfa ; 2841 END ; 2842 END (* CASE *) ; 2843 END (* ONE CONSTANT ONLY *) ; 2844 IF NOT (no IN [16, 55]) THEN 2845 BEGIN 2846 error (76) ; skip (46) ; 2847 END ELSE 2848 IF no = 16 (* ; *) THEN 2849 BEGIN 2850 insymbol ; 2851 IF no = 55 THEN 2852 BEGIN insymbol ; invalue := false ; 2853 END ELSE 2854 IF no <> 1 THEN 2855 error (76) ; 2856 END ELSE 2857 BEGIN insymbol ; invalue := false ; 2858 END ; 2859 END (* NOT VALERR *) ; 2860 5 : 2861 IF environt = linkage THEN 2862 BEGIN 2863 vaddr := lkc ; 2864 lkc := lkc + bytesindword ; 2865 IF errtotal = 0 THEN 2866 BEGIN 2867 genextvariable (blank, name, blank, 2868 vaddr, vtype^.size, indfich - 1, fichinter^, 2869 locreturncode) ; 2870 IF locreturncode <> 0 THEN 2871 error (508) ; 2872 END ; 2873 indfich := 1 ; 2874 environt := data ; 2875 END ELSE 2876 BEGIN 2877 writout (addcurrent, 0) ; 2878 addcurrent := recadre (addcurrent + vtype@.size, 2879 bytesinword) ; 2880 END ; 2881 END ; (* WITH CTPTR,INITIALIZABLE, *) 2882 (* NOT IMPORTED *) 2883 END ; (* DECLARED ID. *) 2884 END ; (* INVALUE *) 2885 10 : curritem := curritem@.nxtel ; 2886 END ; (* SCAN CONTEXT TABLE *) 2887 IF addcurrent < lc THEN 2888 IF errtotal = 0 THEN 2889 BEGIN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 76 2890 genbinarea (addcurrent, 4, 2891 (lc - addcurrent) DIV bytesinhword, 2892 0, fichinter^, 2893 locreturncode) ; 2894 IF locreturncode <> 0 THEN 2895 error (507) ; 2896 END ; 2897 (* NOW CREATES "ITS" FOR IMPORT *) 2898 (* OR EXPORTED NOT YET RESOLVED *) 2899 wkextpt := externallistheader ; 2900 WHILE wkextpt <> NIL DO 2901 BEGIN 2902 WITH wkextpt^ DO 2903 IF extdecl <> NIL THEN 2904 IF extdecl^.klass = vars THEN 2905 IF extdecl^.vaddr = -1 THEN 2906 IF extdecl^.vtype <> NIL THEN 2907 IF (extdecl^.vtype^.form = files) AND (extdecl^.vkind = exportable) THEN ELSE 2908 WITH extdecl^ DO 2909 BEGIN 2910 vaddr := lkc ; lkc := lkc + bytesindword ; 2911 IF vtype # NIL THEN 2912 IF vkind = imported THEN i := -vtype@.size ELSE i := vtype@.size ; 2913 IF errtotal = 0 THEN 2914 BEGIN 2915 IF name = usednames [1] THEN 2916 geninputlink (vaddr, locreturncode) ELSE 2917 IF name = usednames [2] THEN 2918 genoutputlink (vaddr, locreturncode) ELSE 2919 IF name = usednames [3] THEN 2920 generrorlink (vaddr, locreturncode) ELSE 2921 BEGIN 2922 IF i < 0 THEN 2923 wkname := extentryname (* IMPORTED *) ELSE 2924 wkname := extname ; 2925 genextvariable (extsegname, wkname, extgenerator, 2926 vaddr, i, 0, 2927 fichinter^, 2928 locreturncode) ; 2929 END ; 2930 IF locreturncode <> 0 THEN 2931 error (506) ; 2932 END ; 2933 END ; 2934 wkextpt := wkextpt ^.extnext ; 2935 END ; 2936 $OPTIONS compile = trace $ 2937 IF decltrace > low THEN 2938 BEGIN 2939 write (mpcogout, ' @@@ FIN VALUEDECL @@@ WITH LKC,LC ', lkc, lc) ; 2940 nextline ; 2941 END ; 2942 $OPTIONS compile = true $ 2943 20 : (* SKIP HERE IF NOT FIRST *) 2944 (* CALL OF VALUEDECL *) 2945 END (* VALUEDECL *) ; 2946 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 77 2947 2948 (* ***********************************************FORMPARM < BODY************** *) 2949 2950 PROCEDURE formparm ; 2951 2952 (* C ANALYZES THE LIST OF PARAMETERS OF A PROCEDURE OR A FUNCTION 2953* IF NESTPROC =0 PARAMETERS ARE RELEVANT 2954* IF NESTPROC #0 PARAMETERS ARE DUMMY AND USED ONLY FOR TYPE COMPATIBILITY 2955* IN PROCEDURE OR FUNCTION PARAMETERS 2956* CONFORMANT ARRAY TYPES ARE ANALYZED WITH PROCEDURE CONFORMARRAY 2957* C *) 2958 (* E HEAPERROR 2959* 2 IDENTIFIER EXPECTED 2960* 4 ')' EXPECTED 2961* 7 ':' EXPECTED 2962* 101 IDENTIFIER DECLARED TWICE 2963* 103 IDENTIFIER IS NOT OF APPROPRIATE CLASS 2964* 104 IDENTIFIER NOT DECLARED 2965* 120 FUNCTION RESULT TYPE MUST BE SCALAR,SUBRANGE,REAL OR POINTER 2966* 121 FILE MUST BE VAR PARAMETER 2967* 123 MISSING RESULT IDENTIFIER IN FUNCTION DECLARATION 2968* E *) 2969 VAR 2970 it, nbpar, savenbpar, lcaux : integer ; 2971 lp, lp1, savenext : ctp ; 2972 itisproc, itisvar, rep : boolean ; 2973 savedescriptors : boolean ; 2974 locended : boolean ; 2975 loccounter : integer ; 2976 locad : integer ; 2977 lctop : integer ; 2978 nbofdim : integer ; 2979 lctp : ctp ; 2980 lctp1, lctp2, lctp3 : ctp ; 2981 schema_parameter_count : integer ; 2982 2983 2984 PROCEDURE conformarray (VAR fvnombofdim : integer) ; 2985 2986 (* C 2987* As output FVNOMBOFDIM is the number of pseudo-parameters 2988* created for Read-Only bounds. 2989* 2990* Analyses a 2991* Is a local procedure of FORMPARM to avoid a "too long procedure" 2992* error in FORMPARM. 2993* Is invocated with NO=42 "packed" 2994* or NO=38 and CL=1 "array" 2995* Expects : 2996* [packed] array "[" .. : [ ; .. : ]* 2997* "]" of 2998* At the call, the descriptive boxe(s) of the parameter(s) have been 2999* constructed with a nil VTYPE. NEXT is the head of the backward chain 3000* of parameters. NBPAR is the number of variables of the conformant array 3001* schema to be analysed. 3002* It constructs as many array boxes as dimensions declared and two VAR 3003* READONLY boxes (one for lower bound, one for higher bound) by dimension. *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 78 3004* The bound boxes are inserted in the backward parameter's chain. 3005* At the end of CONFORMARRAY the variable boxes are completed with 3006* VTYPE and VADDR. 3007* C *) 3008 3009 (* E ERRORS DETECTED 3010* 2 identifier expected 3011* 5 .. expected 3012* 7 : expected 3013* 8 OF expected 3014* 11 [ expected 3015* 12 ] expected 3016* 56 type identifier or conformant array schema expected 3017* 57 conformant array schema expected 3018* 103 identifier is not of the appropriate CLASS 3019* 104 identifier not declared 3020* 71 Pack allowed only on last dimension 3021* 113 Index type must be scalar or numeric 3022* E *) 3023 3024 LABEL 3025 1 ; (* exit in case of non recoverable error *) 3026 3027 VAR 3028 it : integer ; 3029 conformagain : boolean ; 3030 lp : ctp ; 3031 packedfound : boolean ; 3032 ptfirstbound : ctp ; 3033 ptfirstdim : ctp ; 3034 ptlastdim : ctp ; 3035 ptfirstvar : ctp ; 3036 ptsecondvar : ctp ; 3037 ptlastvar : ctp ; 3038 nbofdim : integer ; 3039 ptsecondbound : ctp ; 3040 3041 BEGIN (* CONFORMARRAY *) 3042 3043 $OPTIONS compile = trace $ 3044 IF decltrace > none THEN 3045 BEGIN 3046 write (mpcogout, '@@@ Debut de CONFORMARRAY @@@ avec NO :', 3047 no : 5, ' CL:', cl : 5, ' NBPAR :', nbpar : 5, ' NEXT en^', ord (next)) ; 3048 nextline ; 3049 END ; 3050 $OPTIONS compile = true $ 3051 3052 3053 fvnombofdim := 0 ; 3054 nbofdim := 0 ; 3055 ptfirstbound := NIL ; 3056 lctop := 0 ; 3057 ptsecondbound := NIL ; packedfound := false ; 3058 ptfirstdim := NIL ; 3059 ptlastdim := NIL ; 3060 ptlastvar := next ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 79 3061 3062 REPEAT 3063 conformagain := false ; 3064 3065 (* CHECK IF SYMBOL FOUND IS "PACKED" OR "ARRAY" *) 3066 3067 IF no = 42 THEN (* packed *) 3068 BEGIN 3069 insymbol ; 3070 IF packedfound THEN 3071 error (71) ; 3072 packedfound := true ; 3073 END ELSE 3074 packedfound := false ; 3075 3076 IF NOT ((no = 38) AND (cl = 1)) THEN (* array *) 3077 BEGIN 3078 error (57) ; 3079 skipextd ([10]) ; 3080 GOTO 1 ; 3081 END ELSE 3082 BEGIN (* ARRAY *) 3083 insymbol ; 3084 IF no <> 11 THEN (* [ *) 3085 BEGIN 3086 error (11) ; 3087 skipextd ([10]) ; 3088 GOTO 1 ; 3089 END ELSE 3090 BEGIN 3091 3092 REPEAT (* LOOP ON DIMENSIONS *) 3093 3094 (* FIRST BOUND *) 3095 3096 insymbol ; 3097 IF no <> 1 THEN 3098 BEGIN 3099 error (2) ; 3100 skipextd ([10]) ; 3101 GOTO 1 ; 3102 END ; 3103 checkdefiningpoint (aval, next) ; 3104 create_vars_box (lp, aval) ; 3105 WITH lp^ DO 3106 BEGIN 3107 vkind := arraybound ; 3108 visset := true ; 3109 visreadonly := true ; 3110 END ; 3111 next := lp ; 3112 ptfirstbound := lp ; 3113 fvnombofdim := fvnombofdim + 1 ; (* <-------- *) 3114 3115 (* BOUNDS SEPARATOR .. *) 3116 3117 insymbol ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 80 3118 IF no <> 39 THEN 3119 BEGIN 3120 error (5) ; 3121 skipextd ([10, 39]) ; 3122 IF no <> 39 THEN 3123 GOTO 1 ; 3124 END ; 3125 3126 (* SECOND BOUND *) 3127 3128 insymbol ; 3129 IF no <> 1 THEN 3130 BEGIN 3131 error (2) ; 3132 skipextd ([10]) ; 3133 GOTO 1 ; 3134 END ; 3135 checkdefiningpoint (aval, next) ; 3136 create_vars_box (lp, aval) ; 3137 WITH lp^ DO 3138 BEGIN 3139 vkind := arraybound ; 3140 visset := true ; 3141 visreadonly := true ; 3142 END ; 3143 next := lp ; 3144 fvnombofdim := fvnombofdim + 1 ; (* <-------- *) 3145 ptsecondbound := lp ; 3146 3147 (* DECLARED TYPE FOR BOUNDS *) 3148 3149 insymbol ; 3150 IF no <> 19 THEN (* : *) 3151 BEGIN 3152 error (7) ; 3153 skipextd ([10, 19]) ; 3154 IF no <> 19 THEN 3155 GOTO 1 ; 3156 END ; 3157 insymbol ; 3158 IF no <> 1 THEN 3159 BEGIN 3160 error (2) ; 3161 skipextd ([10]) ; 3162 GOTO 1 ; 3163 END ; 3164 srchrec (next) ; IF ctptr = NIL THEN search ; 3165 IF ctptr = NIL THEN (* not found *) 3166 BEGIN 3167 error (104) ; 3168 END ELSE 3169 BEGIN 3170 IF symbolmap THEN 3171 nameisref (ctptr, symbolfile, symbolline) ; 3172 IF ctptr^.klass = types THEN 3173 BEGIN 3174 (* LOCKNAME(AVAL,USEDNAME) ; *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 81 3175 IF ctptr^.form = aliastype THEN 3176 ctptr := ctptr^.realtype ; 3177 IF NOT (ctptr^.form IN [scalar, numeric]) THEN 3178 error (113) ; 3179 END ELSE 3180 BEGIN 3181 error (103) ; 3182 ctptr := NIL ; 3183 END ; 3184 END ; 3185 next^.vtype := ctptr ; 3186 next^.nxtel^.vtype := ctptr ; 3187 3188 (* CREATE CONFORMANT ARRAY DIMENSION BOX *) 3189 3190 create_types_box (lp, blank, arrays, true) ; 3191 WITH lp^ DO 3192 BEGIN 3193 pack := packedfound ; 3194 inxtype := ctptr ; 3195 ptlow := ptfirstbound ; 3196 pthigh := ptsecondbound ; 3197 END ; 3198 3199 IF ptlastdim = NIL THEN 3200 ptfirstdim := lp ELSE 3201 ptlastdim^.aeltype := lp ; 3202 lp^.nxtel := ptlastdim ; 3203 ptlastdim := lp ; 3204 nbofdim := nbofdim + 1 ; 3205 3206 insymbol ; 3207 IF (no <> 16) AND (no <> 12) THEN (* ; or ] *) 3208 BEGIN 3209 error (12) ; 3210 skipextd ([10, 12]) ; 3211 (* it would be hazardous to consider ";" (if found by SKIP) 3212* as a separator of dimensions instead of a separator 3213* of parameters *) 3214 IF no <> 12 THEN 3215 GOTO 1 ; 3216 END ; 3217 3218 $OPTIONS compile = trace $ 3219 IF decltrace > none THEN 3220 BEGIN 3221 write (mpcogout, '@ CONFORMARRAY ( until NO <> 16) :') ; nextline ; 3222 write (mpcogout, '@ CONFORMARRAY (until ..). NEXT est en ^', 3223 ord (next), ' PTLASTDIM,PTFIRSTDIM en ^', 3224 ord (ptlastdim), ord (ptfirstdim)) ; 3225 nextline ; 3226 END ; 3227 $OPTIONS compile = true $ 3228 3229 UNTIL no <> 16 ; (* ; *) 3230 (* FIN LOOP ON DIMENSIONS *) 3231 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 82 3232 3233 3234 (* EXPECTED SYMBOLS ARE NOW 3235* 12 ] 3236* 27 of 3237* 1 Type_Identifier 3238* *) 3239 3240 IF no <> 12 THEN (* ] *) 3241 BEGIN 3242 error (12) ; 3243 skipextd ([10, 12]) ; 3244 IF no <> 12 THEN 3245 GOTO 1 ELSE 3246 insymbol ; 3247 END ELSE 3248 insymbol ; 3249 IF no <> 27 THEN (* of *) 3250 BEGIN 3251 error (8) ; 3252 skipextd ([10, 27]) ; 3253 IF no <> 27 THEN 3254 GOTO 1 ELSE 3255 insymbol ; 3256 END ELSE 3257 insymbol ; 3258 3259 (* TYPE IDENTIFIER ? *) 3260 3261 IF no = 1 THEN 3262 BEGIN 3263 srchrec (next) ; IF ctptr = NIL THEN search ; 3264 IF ctptr = NIL THEN (* not found *) 3265 BEGIN 3266 error (104) ; 3267 END ELSE 3268 BEGIN 3269 IF symbolmap THEN 3270 nameisref (ctptr, symbolfile, symbolline) ; 3271 IF ctptr^.klass = types THEN 3272 BEGIN 3273 (* LOCKNAME(AVAL,USEDNAME) ; *) 3274 IF ctptr^.form = aliastype THEN 3275 ctptr := ctptr^.realtype ; 3276 END ELSE 3277 BEGIN 3278 error (103) ; 3279 ctptr := NIL ; 3280 END ; 3281 END ; 3282 ptlastdim^.aeltype := ctptr ; 3283 IF ctptr <> NIL THEN 3284 BEGIN 3285 lp := ptlastdim ; 3286 WHILE lp <> NIL DO 3287 BEGIN 3288 IF packedfound THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 83 3289 lp^.cadrage := packedcadre (ctptr) ELSE 3290 lp^.cadrage := ctptr^.cadrage ; 3291 lp := lp^.nxtel ; 3292 END ; 3293 END ; 3294 END ELSE 3295 IF (no = 42) OR (no = 38) AND (cl = 1) THEN (* array *) 3296 BEGIN 3297 conformagain := true ; 3298 END ELSE 3299 BEGIN 3300 error (56) ; 3301 skipextd ([10]) ; 3302 GOTO 1 ; 3303 END ; 3304 END (* NO=11 *) ; 3305 END (* NO=38 and CL=1 *) ; 3306 UNTIL NOT conformagain ; 3307 3308 lp := ptfirstdim ; (* FILL NOW VDISPL FIELD IN BOUNDS BOXES *) 3309 FOR it := nbofdim DOWNTO 1 DO 3310 IF lp <> NIL THEN 3311 BEGIN 3312 lp^.ptlow^.vdispl := it * 12 - 8 ; 3313 lp^.pthigh^.vdispl := it * 12 - 4 ; 3314 lp := lp^.aeltype 3315 END ; 3316 3317 IF nbpar = 1 THEN 3318 BEGIN 3319 ptlastvar^.vtype := ptfirstdim ; 3320 END ELSE 3321 BEGIN 3322 (* Break NXTEL chain *) 3323 lp := ptlastvar ; 3324 FOR it := 1 TO nbpar DO 3325 BEGIN 3326 lp^.vtype := ptfirstdim ; 3327 lp := lp^.nxtel ; 3328 END ; 3329 ptfirstvar := ptlastvar ; 3330 FOR it := 1 TO nbpar - 1 DO 3331 BEGIN 3332 ptsecondvar := ptfirstvar ; 3333 ptfirstvar := ptfirstvar^.nxtel ; 3334 END ; 3335 ptsecondvar^.nxtel := next ; 3336 next := ptlastvar ; 3337 ptfirstbound^.nxtel := ptfirstvar ; 3338 END ; 3339 1 : 3340 3341 $OPTIONS compile = trace $ 3342 IF decltrace = high THEN 3343 BEGIN 3344 write (mpcogout, '@@@ Fin de CONFORMARRAY @@@ avec NO,CL:', no : 5, cl : 5, ' ', 3345 'PTLASTDIM,PTFIRSTDIM ^', ord (ptlastdim), ord (ptfirstdim), *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 84 3346 ' PTFIRSTVAR,PTSECONDVAR,PTLASTVAR en ^', 3347 ord (ptfirstvar), ord (ptsecondvar), ord (ptlastvar)) ; 3348 nextline ; 3349 write (mpcogout, '@@@ CONFORMARRAY returns FVNOMBOFDIM =', fvnombofdim) ; 3350 nextline ; 3351 END ; 3352 $OPTIONS compile = true $ 3353 END (* CONFORMARRAY *) ; 3354 3355 3356 BEGIN (* FORMPARM *) 3357 $OPTIONS compile = trace $ 3358 IF decltrace > none THEN 3359 BEGIN 3360 write (mpcogout, ' @@@ DEBUT FORMPARM @@@ WITH NESTPROC,LC,NEXT', nestproc, lc, 3361 ord (next)) ; nextline ; 3362 END ; 3363 $OPTIONS compile = true $ 3364 REPEAT 3365 IF no IN [44, 45] (* FUNC OR PROC PARAMETER *) THEN 3366 BEGIN 3367 itisproc := no = 45 ; insymbol ; 3368 IF no # 1 THEN error (2) ELSE 3369 BEGIN 3370 srchrec (next) ; 3371 IF ctptr # NIL THEN error (101) (* PARAMETER YET USED *) ELSE 3372 BEGIN 3373 create_proc_box (lp, aval) ; 3374 WITH lp^ DO 3375 BEGIN 3376 proctype := lp ; prockind := formal ; 3377 IF nestproc = 0 THEN 3378 BEGIN 3379 procaddr := lc ; 3380 lc := lc + bytesindword ; 3381 END ; 3382 END ; 3383 globnbpar := globnbpar + 1 ; 3384 next := lp ; 3385 nestproc := nestproc + 1 ; 3386 savenext := next ; next := NIL ; 3387 insymbol ; 3388 savenbpar := globnbpar ; 3389 globnbpar := 0 ; 3390 savedescriptors := globdescriptors ; 3391 globdescriptors := false ; 3392 IF no = 9 THEN (* ( *) 3393 BEGIN 3394 insymbol ; formparm ; 3395 IF no = 10 THEN insymbol ; 3396 END ; 3397 IF NOT itisproc THEN 3398 BEGIN 3399 IF no = 19 (* : *) THEN insymbol ELSE error (7) ; 3400 IF no # 1 THEN 3401 BEGIN 3402 error (123) ; lp@.proctype := NIL ; skip (46) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 85 3403 END ELSE 3404 BEGIN 3405 search ; 3406 IF ctptr # NIL THEN 3407 BEGIN 3408 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 3409 IF ctptr@.klass # types THEN 3410 BEGIN 3411 error (103) ; ctptr := NIL ; 3412 END ELSE 3413 BEGIN 3414 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 3415 IF ctptr@.form >= power THEN 3416 BEGIN 3417 error (120) ; ctptr := NIL ; 3418 END ; 3419 END ; 3420 END ELSE error (104) ; 3421 globnbpar := globnbpar + 1 ; 3422 lp@.proctype := ctptr ; 3423 insymbol ; 3424 END ; 3425 END ; (* TYPE OF FUNCTION *) 3426 lp@.nbparproc := globnbpar ; 3427 globnbpar := savenbpar ; 3428 lp^.phasdescriptor := globdescriptors ; 3429 globdescriptors := savedescriptors ; 3430 lp@.segsize := nestproc ; (* LEVEL OF NESTING *) 3431 lp@.formals := next ; (* LIST OF PARAMETERS *) 3432 next := savenext ; 3433 nestproc := nestproc - 1 ; 3434 END ; (* CTPTR=NIL *) 3435 END ; (* NO=1 *) 3436 END (* NO IN [44,45] *) ELSE 3437 BEGIN 3438 IF no = 43 (* VAR *) THEN 3439 BEGIN 3440 itisvar := true ; 3441 insymbol ; 3442 END ELSE itisvar := false ; 3443 IF no = 1 THEN 3444 BEGIN 3445 nbpar := 0 ; 3446 REPEAT (* ID1,ID2,... *) 3447 srchrec (next) ; 3448 IF ctptr # NIL THEN 3449 BEGIN 3450 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 3451 error (101) (* YET USED *) 3452 END 3453 ELSE 3454 BEGIN 3455 nbpar := nbpar + 1 ; 3456 create_vars_box (lp, aval) ; 3457 WITH lp^ DO 3458 BEGIN 3459 vkind := formal ; varparam := itisvar ; visset := true ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 86 3460 END ; 3461 next := lp ; 3462 globnbpar := globnbpar + 1 ; 3463 END ; (* NEW PARAMETER *) 3464 insymbol ; 3465 IF no = 15 (* , *) THEN 3466 BEGIN 3467 insymbol ; 3468 IF no = 19 (* : *) THEN error (2) ; (* TO DETECT ,: *) 3469 END ELSE 3470 IF no <> 19 THEN 3471 BEGIN error (7) ; insymbol ; 3472 END ; 3473 UNTIL no # 1 ; 3474 IF no = 19 (* : *) THEN insymbol ; 3475 IF (no = 42 (* PACKED *)) OR ((no = 38) AND (cl = 1)) THEN 3476 BEGIN 3477 conformarray (nbofdim) ; 3478 globdescriptors := true ; 3479 IF nestproc = 0 THEN 3480 BEGIN 3481 lc := lc + (nbpar * bytesindword) ; lcaux := lc ; 3482 lp := next ; lctop := lcaux ; 3483 FOR it := 1 TO (nbofdim + nbpar) DO 3484 BEGIN 3485 IF lp <> NIL THEN 3486 BEGIN 3487 IF lp^.vkind <> arraybound THEN 3488 BEGIN 3489 lcaux := lcaux - bytesindword ; 3490 lp^.vaddr := lcaux ; 3491 lp^.vdescaddr := -1 ; 3492 END ; 3493 lp := lp^.nxtel ; 3494 END ; 3495 END ; 3496 END ; 3497 END ELSE 3498 IF no # 1 THEN error (2) ELSE 3499 BEGIN (* TYPE IDENTIFIER *) 3500 search ; 3501 IF ctptr = NIL THEN 3502 error (104) 3503 ELSE 3504 BEGIN 3505 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 3506 IF ctptr^.klass = schema THEN 3507 BEGIN 3508 IF procptr^.pwantspl1descriptors THEN 3509 error (448) ; 3510 IF NOT itisvar THEN 3511 BEGIN 3512 itisvar := true ; 3513 error (281) ; 3514 END ; 3515 create_types_box (lctp, ctptr^.name, records, false) ; 3516 WITH lctp^ DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 87 3517 BEGIN 3518 father_schema := ctptr ; 3519 END ; 3520 ctptr := lctp ; 3521 globdescriptors := true ; 3522 END ; 3523 IF ctptr@.klass # types THEN error (103) ELSE 3524 BEGIN 3525 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 3526 IF (ctptr^.form = files) AND (NOT itisvar) THEN 3527 BEGIN 3528 error (121) ; (* File must be VAR parameter *) 3529 itisvar := true ; 3530 END ; 3531 IF nestproc = 0 THEN (* NOT DUMMY PARAMETERS *) 3532 BEGIN 3533 lc := lc + nbpar * bytesindword ; lcaux := lc ; 3534 lp := next ; 3535 END (* NOT DUMMY PARAMETER *) 3536 ELSE BEGIN 3537 IF ctptr^.father_schema <> NIL THEN 3538 IF ctptr^.actual_parameter_list = NIL THEN (* BUILD ACTUAL PARAMETER LIST FOR SCHEMA * ) 3539 WITH ctptr^ DO 3540 BEGIN 3541 lctp1 := father_schema^.formal_parameter_list ; 3542 WHILE lctp1 <> NIL DO 3543 BEGIN 3544 create_vars_box (lctp2, lctp1^.name) ; 3545 lctp2^.vtype := lctp1^.vtype ; 3546 lctp2^.vkind := arraybound ; 3547 lctp2^.visset := true ; 3548 lctp2^.visreadonly := true ; 3549 IF actual_parameter_list = NIL THEN 3550 actual_parameter_list := lctp2 3551 ELSE 3552 lctp3^.nxtel := lctp2 ; 3553 lctp1 := lctp1^.nxtel ; 3554 lctp3 := lctp2 ; 3555 END ; 3556 END ; 3557 END ; 3558 FOR it := nbpar DOWNTO 1 DO 3559 BEGIN 3560 IF nestproc = 0 THEN 3561 BEGIN 3562 lcaux := lcaux - bytesindword ; 3563 lp@.vaddr := lcaux ; 3564 END ; 3565 lp^.varparam := itisvar ; 3566 IF ctptr^.father_schema <> NIL THEN 3567 IF ctptr^.actual_parameter_list = NIL THEN lp^.vdescaddr := -1 ; (* needs descriptor * ) 3568 lp := lp@.nxtel ; 3569 END ; (* FOR *) 3570 lp := next ; 3571 FOR it := nbpar DOWNTO 1 DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 88 3572 BEGIN 3573 lp@.vtype := ctptr ; 3574 lp := lp@.nxtel ; 3575 END ; 3576 END ; (* CORRECT TYPE *) 3577 END ; 3578 END ; 3579 insymbol ; 3580 END ELSE 3581 BEGIN (* FIRST ITEM OF THE'LIST IS ILLEGAL *) 3582 error (2) ; 3583 skip (10) ; (* ) *) 3584 END ; 3585 END ; (* NEITHER PROCEDURE NOR FUNCTION *) 3586 IF no = 16 (* ; *) THEN 3587 BEGIN 3588 insymbol ; 3589 IF no = 10 THEN 3590 BEGIN 3591 rep := false ; error (2) ; (* TO DETECT ;) *) 3592 END ELSE rep := true ; 3593 END ELSE rep := no IN [1, 43, 44, 45] ; (* ID,VAR,FUNC,PROC *) 3594 UNTIL NOT rep ; 3595 IF no # 10 THEN 3596 BEGIN 3597 error (4) ; skip (10) ; 3598 IF no IN [37, 40, 41, 43, 44, 45] (* TYPE,LABEL,CONST,VAR,PROC,FUNC *) THEN 3599 GOTO 1 ; (* LEAVES FORMPARM *) (* 1 DEFINED IN BODY *) 3600 END ; (* NO # 10 *) 3601 (* LINKAGE REVERSE *) 3602 lp := next ; next := NIL ; 3603 WHILE lp # NIL DO 3604 BEGIN 3605 lp1 := lp ; lp := lp@.nxtel ; 3606 lp1@.nxtel := next ; next := lp1 ; 3607 END ; 3608 (* La chaine est dans le bon ordre. Termine le remplissage *) 3609 lp := next ; locended := false ; loccounter := 0 ; 3610 locad := 0 ; 3611 WHILE NOT locended DO 3612 IF lp = NIL THEN 3613 locended := true ELSE 3614 WITH lp^ DO 3615 BEGIN 3616 schema_parameter_count := 0 ; 3617 IF klass = proc THEN 3618 BEGIN 3619 IF prockind <> formal THEN 3620 locended := true ELSE 3621 BEGIN 3622 loccounter := loccounter + 1 ; 3623 $OPTIONS compile = trace $ 3624 printrec (lp) ; 3625 $OPTIONS compile = true $ 3626 lp := nxtel ; 3627 END (* FORMAL *) ; 3628 END (* PROC *) ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 89 3629 IF klass <> vars THEN 3630 locended := true ELSE 3631 BEGIN 3632 IF vkind = formal THEN 3633 BEGIN 3634 locad := vaddr ; loccounter := loccounter + 1 ; 3635 IF vdescaddr = -1 THEN 3636 BEGIN 3637 vdescaddr := vaddr + (globnbpar * bytesindword) ; 3638 IF vtype <> NIL THEN 3639 WITH vtype^ DO 3640 IF (father_schema <> NIL) AND (actual_parameter_list = NIL) THEN 3641 (* THIS VARIABLE HAS A SCHEMA FOR TYPE. 3642* BUILD ACTUAL PARAMETER LIST FOR THIS TYPE (PASSED IN DESCRIPTOR) *) 3643 BEGIN 3644 lctp1 := father_schema^.formal_parameter_list ; 3645 WHILE lctp1 <> NIL DO 3646 BEGIN 3647 create_vars_box (lctp2, lctp1^.name) ; 3648 lctp2^.vtype := lctp1^.vtype ; 3649 lctp2^.vkind := arraybound ; 3650 lctp2^.vaddr := locad + (globnbpar * bytesindword) ; 3651 lctp2^.visset := true ; 3652 lctp2^.visreadonly := true ; 3653 lctp2^.vdispl := 8 (* TWO WORDS FOR MULTICS EXTENDED ARG DESC HEADER *) 3654 + 4 (* ONE WORD FOR ACTUAL SIZE OF PASSED SCHEMA *) 3655 + 4 * schema_parameter_count ; (* ONE WORD PER SCHEMA PARAMETER *) ; 3656 schema_parameter_count := schema_parameter_count + 1 ; 3657 IF actual_parameter_list = NIL THEN 3658 actual_parameter_list := lctp2 3659 ELSE 3660 lctp3^.nxtel := lctp2 ; 3661 lctp1 := lctp1^.nxtel ; 3662 lctp3 := lctp2 ; 3663 END ; 3664 END ; 3665 END ; 3666 $OPTIONS compile = trace $ 3667 printrec (lp) ; 3668 $OPTIONS compile = true $ 3669 lp := nxtel ; 3670 END (* FORMAL *) ELSE 3671 IF vkind = arraybound THEN 3672 BEGIN 3673 vaddr := locad + (globnbpar * bytesindword) ; 3674 $OPTIONS compile = trace $ 3675 printrec (lp) ; 3676 $OPTIONS compile = true $ 3677 lp := nxtel ; 3678 END (* ARRAYBOUND *) ELSE 3679 locended := true ; 3680 END (* VARS *) ; 3681 IF loccounter > globnbpar THEN 3682 locended := true ; (* Security *) 3683 END ; (* with LP^, LP <> nil, while not ENDED *) 3684 IF nestproc = 0 THEN 3685 IF globdescriptors THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 90 3686 lc := lc + globnbpar * bytesindword ; 3687 $OPTIONS compile = trace $ 3688 IF decltrace > low THEN 3689 BEGIN 3690 write (mpcogout, ' @@@ FIN FORMPARM @@@ WITH NESTPROC,LC,NEXT ', nestproc, lc, 3691 ord (next)) ; 3692 nextline ; 3693 END ; 3694 $OPTIONS compile = true $ 3695 END (* FORMPARM *) ; 3696 3697 3698 (* *********************************** IMPORTPARTDECL < BODY ************** *) 3699 3700 PROCEDURE importpartdecl ; 3701 3702 (* C . Before call, $IMPORT has been read. 3703* . Caution: 3704* This declaration is allowed only for globals, in mode not standard. 3705* . The name of origin is not used. 3706* C *) 3707 3708 (* E Errors detected 3709* 2 Identifier expected 3710* 7 ":" expected 3711* 19 String expected 3712* 20 "," expected 3713* 37 Invalid Multics string for imported item 3714* 76 "$" expected 3715* 77 $IMPORT must appear at global level after the program header 3716* 78 $IMPORT ( EXPORT) not standard features 3717* 100 Duplicate external name 3718* E *) 3719 3720 LABEL 3721 10 ; (* Procedure exit *) 3722 3723 VAR 3724 wkexternpt : ptexternalitem ; 3725 errorfound : boolean ; 3726 locsegname, 3727 locentryname, 3728 locgenerator : alfaid ; 3729 locwantdescs : boolean ; 3730 loconlyone : boolean ; 3731 locerrfound : boolean ; 3732 locsamestring : integer ; 3733 3734 (* **************************** DECODESTRING < IMPORTPARTDECL ***** *) 3735 3736 PROCEDURE decodestring (VAR fsegname, fentryname, fgenerator : alfaid ; 3737 VAR fwantdescs, fonlyone, ferrfound : boolean) ; 3738 3739 (* Given the output of INSYMBOL : BUFVAL filled on LONGCHAINE chars, 3740* this procedure try to find 3741* - A segment name followed if any by 3742* - "$" entryname *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 91 3743* - in all cases "(" genrator_name ")" 3744* 3745* If there is an entryname, only one element in the following list 3746* 3747* One exception : The word 'external_static' 3748* Obsolete 'external_statics' still supported.. 3749* 3750* In all cases, for each entity, all caracters are allowed 3751* except < > ? $ * ( ) 3752* C *) 3753 3754 VAR 3755 index : integer ; 3756 iderr : boolean ; 3757 locerr : boolean ; 3758 currch : char ; 3759 locdescs : alfaid ; 3760 stopch : char ; 3761 3762 PROCEDURE getamulticsid (VAR fid : alfaid ; VAR fstopch : char ; low : boolean ; VAR ferr : boolean) ; 3763 3764 VAR 3765 ended : boolean ; 3766 locerr : boolean ; 3767 loci : integer ; 3768 locid : alfaid ; 3769 it : integer ; 3770 3771 BEGIN 3772 fstopch := chr (000) ; (* Means ended *) 3773 (* Skip leading spaces *) 3774 3775 locerr := false ; 3776 ended := NOT (currch IN [' ', chr (9) (* TAB *)]) ; 3777 WHILE NOT ended DO 3778 BEGIN 3779 index := index + 1 ; 3780 IF index > longchaine THEN 3781 BEGIN 3782 locerr := true ; ended := true ; currch := chr (000) ; 3783 END ELSE 3784 BEGIN 3785 currch := bufval [index] ; 3786 ended := NOT (currch IN [' ', chr (9) (* TAB *)]) ; 3787 END ; 3788 END ; 3789 3790 IF currch IN ['(', '$'] THEN 3791 BEGIN 3792 index := index + 1 ; 3793 IF index > longchaine THEN 3794 locerr := true ELSE 3795 currch := bufval [index] ; 3796 END ; 3797 loci := 0 ; locid := ' ' ; 3798 ended := NOT (currch IN [' ', chr (9) (* TAB *)]) ; 3799 WHILE NOT ended DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 92 3800 BEGIN 3801 index := index + 1 ; 3802 IF index > longchaine THEN 3803 BEGIN 3804 locerr := true ; ended := true ; 3805 END ELSE 3806 BEGIN 3807 currch := bufval [index] ; 3808 ended := NOT (currch IN [' ', chr (9) (* TAB *)]) ; 3809 END ; 3810 END ; 3811 3812 (* Now first char of identifier multics expected *) 3813 3814 3815 3816 ended := currch IN ['(', ')', '$', '<', '>', '*', '?'] ; 3817 3818 IF NOT locerr THEN 3819 WHILE NOT ended DO 3820 BEGIN 3821 3822 loci := loci + 1 ; 3823 IF loci > maxident THEN 3824 BEGIN 3825 ended := true ; locerr := true ; 3826 END ELSE 3827 BEGIN 3828 locid [loci] := currch ; 3829 index := index + 1 ; 3830 IF index > longchaine THEN 3831 BEGIN 3832 locerr := true ; currch := chr (0) ; 3833 END ELSE 3834 currch := bufval [index] ; 3835 ended := currch IN ['(', ')', '$', '<', '>', '*', '?', ' ', chr (9) (* TAB *), chr (000)] ; 3836 END ; 3837 END (* while *) ; 3838 3839 (* Here stops on end caracter or end strings *) 3840 IF currch IN [' ', chr (9) (* TAB *)] THEN 3841 BEGIN 3842 (* Skip until a good end caracter *) 3843 REPEAT 3844 index := index + 1 ; 3845 IF index > longchaine THEN 3846 currch := chr (000) ELSE 3847 currch := bufval [index] ; 3848 UNTIL NOT (currch IN [' ', chr (9) (* TAB *)]) ; 3849 END (* Skip *) ; 3850 3851 fstopch := currch ; 3852 fid := locid ; 3853 ferr := locerr ; 3854 3855 IF low THEN 3856 FOR it := 1 TO maxident DO *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 93 3857 fid [it] := chr (majmin [ord (fid [it])]) ; 3858 3859 $OPTIONS compile = trace $ 3860 IF decltrace = high THEN 3861 BEGIN 3862 write (mpcogout, ' Fin de GET_A_MULTICS_ID avec FERR, FSTOPCH, INDEX:', 3863 ferr : 7, '%', fstopch, '%', index : 5, 3864 ' et LOCI ', loci : 4) ; 3865 nextline ; 3866 END ; 3867 $OPTIONS compile = true $ 3868 3869 3870 3871 END (* GET_A_MULTICS_ID *) ; 3872 3873 3874 3875 BEGIN (* DECODESTRING *) 3876 3877 locdescs := blank ; 3878 fsegname := blank ; fgenerator := blank ; fentryname := blank ; 3879 fonlyone := false ; ferrfound := false ; 3880 index := 0 ; currch := ' ' ; iderr := false ; locerr := false ; 3881 fwantdescs := false ; 3882 3883 getamulticsid (fsegname, stopch, false, locerr) ; 3884 IF locerr THEN 3885 iderr := true ; 3886 IF stopch = chr (000) THEN 3887 BEGIN 3888 IF (fsegname <> 'external_statics') AND (fsegname <> 'external_static') THEN 3889 ferrfound := true 3890 ELSE 3891 iderr := false ; 3892 END ELSE 3893 BEGIN 3894 IF stopch = '$' THEN 3895 BEGIN 3896 fonlyone := true ; 3897 getamulticsid (fentryname, stopch, false, locerr) ; 3898 IF locerr THEN 3899 iderr := true ; 3900 IF stopch <> '(' THEN 3901 ferrfound := true ; 3902 END ; 3903 3904 IF stopch = '(' THEN 3905 BEGIN 3906 getamulticsid (fgenerator, stopch, true, locerr) ; 3907 IF locerr THEN 3908 iderr := true ; 3909 IF stopch IN ['d', 'D'] THEN 3910 BEGIN 3911 getamulticsid (locdescs, stopch, true, locerr) ; 3912 IF locdescs = 'descriptors' THEN 3913 fwantdescs := true *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 94 3914 ELSE ferrfound := true ; 3915 END ; 3916 IF stopch <> ')' THEN 3917 ferrfound := true ; 3918 END ; 3919 3920 IF fgenerator = blank THEN 3921 ferrfound := true ; 3922 3923 END ; (* STOPCH <> chr(000) *) 3924 3925 ferrfound := ferrfound OR iderr ; 3926 3927 $OPTIONS compile = trace $ 3928 IF decltrace = high THEN 3929 BEGIN 3930 write (mpcogout, ' Fin de DECODESTRING avec IDERR,FERRFOUND :', iderr : 7, 3931 ferrfound : 7) ; nextline ; 3932 write (mpcogout, ' "" "" avec FONLYONE =', fonlyone : 7) ; 3933 nextline ; 3934 END ; 3935 $OPTIONS compile = true $ 3936 3937 3938 END (* DECODESTRING *) ; 3939 3940 3941 BEGIN (* IMPORTPARTDECL *) 3942 $OPTIONS compile = trace $ 3943 IF decltrace > none THEN 3944 BEGIN 3945 write (mpcogout, ' @@@ Debut de IMPORTPARTDECL @@@') ; nextline ; 3946 END ; 3947 $OPTIONS compile = true $ 3948 IF level <> 0 THEN 3949 BEGIN 3950 error (77) ; skiptochapter ; GOTO 10 ; (* Exit proc *) 3951 END ; 3952 IF envstandard = stdpure THEN 3953 error (78) ; 3954 3955 insymbol ; 3956 IF (no <> 2) OR (cl <> 3) THEN 3957 BEGIN 3958 error (19) ; skipextd ([16, 55]) ; 3959 END ; 3960 WHILE (no = 2) AND (cl = 3) DO (* String *) 3961 BEGIN 3962 3963 decodestring (locsegname, locentryname, locgenerator, locwantdescs, 3964 loconlyone, locerrfound) ; 3965 IF locerrfound THEN 3966 error (37) ; 3967 3968 locsamestring := 0 ; 3969 3970 insymbol ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 95 3971 IF no <> 19 (* : *) THEN 3972 BEGIN 3973 error (7) ; skipextd ([1, 16, 55]) ; 3974 END ELSE 3975 insymbol ; 3976 3977 IF no <> 1 (* Identifier *) THEN 3978 BEGIN 3979 error (2) ; skipextd ([16, 55, 2]) ; 3980 END ; 3981 3982 WHILE no = 1 DO 3983 BEGIN 3984 (* Check if it is a new external identifier *) 3985 errorfound := false ; 3986 checkexternalitem (aval, wkexternpt) ; 3987 IF wkexternpt <> NIL THEN 3988 BEGIN 3989 (* External box found may be for a REMANENT file *) 3990 wkexternpt^.extrfile2 := symbolfile ; wkexternpt^.extrline2 := symbolline ; 3991 IF wkexternpt^.extkind = actual THEN 3992 wkexternpt^.extkind := imported ELSE 3993 BEGIN 3994 error (100) ; wkexternpt := NIL ; 3995 END ; 3996 END ELSE 3997 createexternalbox (aval, extnotresolved, imported, wkexternpt) ; 3998 IF wkexternpt <> NIL THEN 3999 BEGIN 4000 4001 wkexternpt^.extsegname := locsegname ; 4002 locsamestring := locsamestring + 1 ; 4003 wkexternpt^.extgenerator := locgenerator ; 4004 wkexternpt^.extwantdescs := locwantdescs ; 4005 IF locentryname <> blank THEN 4006 wkexternpt^.extentryname := locentryname ELSE 4007 wkexternpt^.extentryname := aval ; 4008 END (* Create a box for a new external *) ; 4009 4010 insymbol ; 4011 IF no = 15 (* , *) THEN 4012 BEGIN insymbol ; 4013 IF no <> 1 THEN 4014 BEGIN error (2) ; skipextd ([2, 16, 55]) ; 4015 END 4016 END ELSE 4017 BEGIN 4018 IF NOT (no IN [16, 55]) THEN 4019 BEGIN error (20) ; errorfound := true ; 4020 END ; 4021 END ; 4022 END (* while NO=1 *) ; 4023 4024 4025 (* IF loconlyone THEN 4026* IF locsamestring <> 1 THEN 4027* error (37) ; *) *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 96 4028 IF no = 16 (* ; *) THEN 4029 insymbol ELSE 4030 IF no <> 55 (* $ *) THEN 4031 BEGIN 4032 IF NOT errorfound THEN error (76) ; 4033 skipextd ([2, 55]) ; 4034 IF no = 16 (* ; *) THEN insymbol ; 4035 END ; 4036 4037 END (* While NO=2, CL=3 *) ; 4038 4039 IF no <> 55 THEN 4040 BEGIN 4041 error (76) ; skiptochapter ; 4042 END ELSE 4043 insymbol ; 4044 4045 $OPTIONS compile = trace $ 4046 IF decltrace = high THEN 4047 BEGIN 4048 write (mpcogout, ' ** Boxes created in IMPORTPARTDECL are the following') ; 4049 nextline ; wkexternpt := externallistheader ; 4050 WHILE wkexternpt <> NIL DO 4051 BEGIN 4052 printexternalbox (wkexternpt) ; 4053 wkexternpt := wkexternpt^.extnext ; 4054 END ; 4055 END ; 4056 $OPTIONS compile = true $ 4057 4058 10 : (* Procedure exit *) 4059 4060 $OPTIONS compile = trace $ 4061 IF decltrace = high THEN 4062 BEGIN 4063 write (mpcogout, ' @@@ Fin de IMPORTPARTDECL @@@ with NO,CL', 4064 no : 4, cl : 4) ; nextline ; 4065 END ; 4066 $OPTIONS compile = true $ 4067 4068 END (* IMPORTPARTDECL *) ; 4069 4070 (* ******************************************* EXPORTPARTDECL(BODY) *) 4071 4072 PROCEDURE exportpartdecl ; 4073 4074 (* C Before call $EXPORT has been read 4075* C *) 4076 4077 (* E 4078* 2 IDENTIFIER expected 4079* 20 ',' expected 4080* 76 $ expected 4081* 78 $IMPORT et $EXPORT not allowed in STANDARD 4082* 79 $EXPORT only in global part 4083* 80 EXPORTED ITEM CANNOT HAVE SAME NAME THAN PROGRAM. 4084* 100 duplicate external name *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 97 4085* 447 externbox not nil for a box found 4086* E *) 4087 4088 LABEL 4089 10 ; (* exit procedure *) 4090 4091 VAR 4092 $OPTIONS compile = trace $ 4093 currextpt : ptexternalitem ; 4094 $OPTIONS compile = true $ 4095 wkexternpt : ptexternalitem ; 4096 4097 BEGIN (* EXPORTPARTDECL *) 4098 $OPTIONS compile = trace $ 4099 IF decltrace > none THEN 4100 BEGIN 4101 write (mpcogout, '@@@ begin of EXPORTPARTDECL @@@ with EXTERNALHEADER at ^', 4102 ord (externallistheader)) ; nextline ; 4103 END ; 4104 currextpt := externallistheader ; 4105 $OPTIONS compile = true $ 4106 4107 IF level <> 0 THEN 4108 BEGIN 4109 error (79) ; skiptochapter ; GOTO 10 (* exit proc *) ; 4110 END ; 4111 IF envstandard = stdpure THEN 4112 error (78) ; 4113 insymbol ; 4114 4115 init_fsb_trap_flag := true ; 4116 4117 IF NOT (no IN [1, 55]) THEN (* Ident, $ *) 4118 BEGIN error (2) ; skipextd ([1]) ; 4119 END ; 4120 WHILE no = 1 DO 4121 BEGIN 4122 checkexternalitem (aval, wkexternpt) ; 4123 IF wkexternpt <> NIL THEN 4124 BEGIN 4125 (* External box found may be for a REMANENT file *) 4126 wkexternpt^.extrfile2 := symbolfile ; wkexternpt^.extrline2 := symbolline ; 4127 IF wkexternpt^.extkind = actual THEN 4128 wkexternpt^.extkind := exportable ELSE 4129 error (100) ; 4130 END ELSE 4131 BEGIN (* new external *) 4132 createexternalbox (aval, extnotresolved, exportable, wkexternpt) ; 4133 END (* new external *) ; 4134 IF aval = progname THEN error (80) ; 4135 insymbol ; 4136 IF no = 15 (* , *) THEN 4137 BEGIN 4138 insymbol ; 4139 IF no <> 1 THEN 4140 BEGIN error (2) ; 4141 skipextd ([1]) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 98 4142 END ; 4143 END ELSE 4144 IF no <> 55 THEN 4145 BEGIN 4146 error (20) ; 4147 IF no <> 1 THEN skipextd ([1]) ; 4148 END ; 4149 END (* while NO=1 *) ; 4150 IF no <> 55 (* $ *) THEN 4151 BEGIN 4152 error (76) ; skiptochapter ; 4153 END ELSE 4154 insymbol ; 4155 $OPTIONS compile = trace $ 4156 IF decltrace = high THEN 4157 BEGIN 4158 write (mpcogout, '* boxes created in EXPORTPARTDECL are the following:') ; 4159 nextline ; 4160 wkexternpt := externallistheader ; 4161 WHILE wkexternpt <> currextpt DO 4162 BEGIN 4163 printexternalbox (wkexternpt) ; 4164 wkexternpt := wkexternpt^.extnext ; 4165 END ; 4166 END ; 4167 $OPTIONS compile = true $ 4168 10 : (* exit proc *) 4169 $OPTIONS compile = trace $ 4170 IF decltrace = high THEN 4171 BEGIN 4172 write (mpcogout, '@@@ end of EXPORTPARTDECL @@@ with NO,CL:', 4173 no : 4, cl : 4) ; 4174 nextline ; 4175 END ; 4176 $OPTIONS compile = true $ 4177 END (* EXPORTPARTDECL *) ; 4178 4179 (* ************************************* LABELPARTDECL < BODY ************** *) 4180 4181 PROCEDURE labelpartdecl ; 4182 4183 (* C Compilation of LABEL lab1, lab2 ..... ; 4184* Called if the key-word LABEL (NO=40) was encountered. 4185* C *) 4186 4187 (* E ERRORS DETECTED 4188* 15 integer EXPECTED 4189* 20 ',' EXPECTED 4190* 166 MULTIDECLARED LABELS 4191* 267 TOO MANY LABELS (MAXLABS) 4192* 306 LABEL MUST HAVE AT MOST 4 DIGITS 4193* E *) 4194 4195 LABEL 4196 2 ; (* Skip here if bideclared label *) 4197 VAR 4198 i : integer ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 99 4199 currlabbox : labelblockptr ; 4200 BEGIN (* LABELPARTDECL *) 4201 insymbol ; 4202 WHILE (no = 2) AND (cl = 1) (* CSTE integer *) DO 4203 BEGIN 4204 (* SEARCH for UNIQUE DECLARATION AT THIS LEVEL *) 4205 FOR i := fstix TO clabix DO 4206 IF labtab [i].labval = ival THEN 4207 BEGIN 4208 error (166) ; GOTO 2 ; 4209 END ; 4210 (* CHECK if AT MOST 4 DIGITS *) 4211 IF ival > 9999 THEN error (306) ; 4212 (* ALL OK ENTER IT IN LABTAB *) 4213 IF clabix = maxlabs THEN 4214 error (267) ELSE 4215 BEGIN 4216 clabix := clabix + 1 ; 4217 WITH labtab [clabix] DO 4218 BEGIN 4219 labval := ival ; lablev := level ; 4220 labdef := 0 ; labexit := 0 ; labch1 := 0 ; 4221 labbox := NIL ; 4222 new (labbox) ; 4223 IF labbox = NIL THEN heaperror ; 4224 WITH labbox^ DO 4225 BEGIN 4226 number := ival ; 4227 next := NIL ; 4228 ref_allowed.ic_from := 0 ; 4229 ref_allowed.ic_to := maxint ; 4230 next_in_block := NIL ; 4231 brother := currentnode ^.firstlabel ; 4232 currentnode^.firstlabel := labbox ; 4233 procnode := currentnode ; 4234 dclfile := symbolfile ; 4235 dclline := symbolline ; 4236 deffile := 0 ; defline := 0 ; 4237 new (references) ; 4238 IF references = NIL THEN heaperror ; 4239 WITH references^ DO 4240 BEGIN refnbr := 0 ; nextref := NIL END ; 4241 BEGIN 4242 next := firstlabbox ^.next ; 4243 firstlabbox^.next := labbox ; 4244 currlabbox := firstlabbox ; 4245 WHILE (next^.number < ival) DO 4246 BEGIN 4247 currlabbox^.next := next ; 4248 currlabbox := next ; 4249 next := next^.next ; 4250 currlabbox^.next := labbox ; 4251 END ; 4252 END ; 4253 END ; 4254 END ; 4255 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 100 4256 2 : (* SKIP HERE if BIDECLARED *) 4257 insymbol ; 4258 IF no = 15 (* , *) THEN 4259 BEGIN 4260 insymbol ; 4261 IF (no <> 2) OR (cl <> 1) THEN error (15) ; 4262 END ELSE 4263 IF no <> 16 THEN error (20) ; 4264 END ; (* while integer CSTE *) 4265 IF no = 16 (* ; *) THEN 4266 insymbol ; 4267 $OPTIONS compile = trace $ 4268 IF decltrace = high THEN 4269 BEGIN 4270 write (mpcogout, ' @ BODY.END LABEL PART @@@CLABIX,FSTIX ARE', clabix : 4, fstix : 4) ; 4271 nextline ; 4272 END ; 4273 $OPTIONS compile = true $ 4274 END (* LABELPARTDECL *) ; 4275 4276 (* ****************************** CONSTPARTDECL < BODY *********************** *) 4277 4278 PROCEDURE constpartdecl ; 4279 4280 (* C 4281* Compile CONST CONSTID = constante; CONSTID= ....... ; 4282* C *) 4283 4284 4285 (* E ERRORS DETECTED 4286* HEAPERROR 4287* 16 '=' EXPECTED 4288* 101 Identifier declared twice 4289* 130 Nil not allowed in standard 4290* 226 : THIS IDENTIFIER HAS BEEN PREVIOUSLY REFERENCED AT SAME LEVEL 4291* E *) 4292 4293 VAR 4294 constid : alfaid ; 4295 typcste, lp : ctp ; 4296 codcste : integer ; 4297 tnp : alfalistptr ; 4298 oldfile, oldline : integer ; 4299 4300 BEGIN (* CONSTPARTDECL *) 4301 forbidden_id_list := first_forbidden_id ; 4302 insymbol ; 4303 WHILE no = 1 (* ID *) DO (* LOOP ON < CST_ID = CSTE ; > *) 4304 BEGIN 4305 srchrec (next) ; 4306 IF ctptr # NIL THEN 4307 BEGIN 4308 IF listyes THEN nameisref (ctptr, symbolfile, symbolline) ; 4309 error (101) 4310 END ; 4311 constid := aval ; 4312 oldfile := symbolfile ; oldline := symbolline ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 101 4313 tnp := forbidden_id_list ; 4314 WHILE tnp <> first_forbidden_id DO 4315 IF tnp^.name = constid THEN 4316 BEGIN 4317 error (226) ; 4318 tnp := first_forbidden_id 4319 END 4320 ELSE tnp := tnp^.previous ; 4321 insymbol ; 4322 IF (no = 8) AND (cl = 6) (* = *) THEN 4323 BEGIN 4324 forbidden_id := constid ; check_id := true ; 4325 insymbol 4326 END ELSE error (16) ; 4327 IF no = 36 (* NIL *) THEN 4328 BEGIN 4329 IF envstandard <> stdextend THEN 4330 error (130) ; 4331 create_konst_box (lp, constid, wordconst) ; 4332 WITH lp^ DO 4333 BEGIN 4334 contype := nilptr ; 4335 IF listyes THEN nameisref (nilptr, symbolfile, symbolline) ; 4336 END ; 4337 insymbol ; 4338 END (* NIL *) ELSE 4339 BEGIN 4340 inconst (codcste, typcste, next, true) ; 4341 CASE codcste OF 4342 1 (* integer *), 4 (* CHAR *), 5 (* SCALAR *), 0 (* ERR *) : 4343 BEGIN 4344 create_konst_box (lp, constid, wordconst) ; 4345 WITH lp^ DO 4346 BEGIN 4347 values := conint ; 4348 END ; 4349 END ; 4350 2 (* REAL *) : 4351 BEGIN 4352 create_konst_box (lp, constid, dwordconst) ; 4353 WITH lp^ DO 4354 BEGIN 4355 valreel := conreel ; 4356 END ; 4357 END ; 4358 3 (* ALFA *) : 4359 BEGIN 4360 create_konst_box (lp, constid, alfaconst) ; 4361 WITH lp^ DO 4362 BEGIN 4363 succ := lp ; (* Means Not Used *) 4364 END ; 4365 crealfabox (lp) ; (* Init ALFALONG ALFADEB *) 4366 END (* ALFA *) ; 4367 END (* CASE CODCSTE *) ; 4368 lp^.contype := typcste ; 4369 END (* not NIL *) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 102 4370 check_id := false ; 4371 WITH lp^ DO 4372 BEGIN 4373 deffile := oldfile ; defline := oldline ; 4374 END ; 4375 $OPTIONS compile = trace $ 4376 printrec (lp) ; 4377 $OPTIONS compile = true $ 4378 next := lp ; 4379 findsemicolon ; 4380 END ; (* while NO=1 *) 4381 $OPTIONS compile = trace $ 4382 IF decltrace = high THEN 4383 BEGIN 4384 write (mpcogout, ' @ BODY.END CONST PART @@@') ; nextline ; 4385 END ; 4386 $OPTIONS compile = true $ 4387 END (* CONSTPARTDECL *) ; 4388 4389 (* ******************************** TYPEPARTDECL < BODY ******************** *) 4390 4391 PROCEDURE typepartdecl ; 4392 4393 (* C 4394* TYPE ( NO=37 ) has been read and tested before call 4395* C *) 4396 4397 (* E Errors DETECTED 4398* 16 = expected 4399* 93 Non resolved forward declared type identifier 4400* 101 Identifier declared twice 4401* 108 File not allowed here 4402* 226 : THIS IDENTIFIER HAS BEEN PREVIOUSLY REFERENCED AT SAME LEVEL 4403* E *) 4404 4405 VAR 4406 typid : alfaid ; 4407 lp, retpt : ctp ; 4408 oldfile, oldline : integer ; 4409 tl : integer ; 4410 i, j : integer ; 4411 tnp : alfalistptr ; 4412 4413 BEGIN (* TYPEPARTDECL *) 4414 forbidden_id_list := first_forbidden_id ; 4415 insymbol ; 4416 WHILE no = 1 (* ID *) DO (* LOOP ON TYPE DECLARATION TYPID = TYPE ; *) 4417 BEGIN 4418 srchrec (next) ; 4419 IF ctptr <> NIL THEN 4420 BEGIN 4421 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 4422 error (101) ; 4423 END ; 4424 oldfile := symbolfile ; oldline := symbolline ; 4425 typid := aval ; 4426 tnp := forbidden_id_list ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 103 4427 WHILE tnp <> first_forbidden_id DO 4428 IF tnp^.name = typid THEN 4429 BEGIN 4430 error (226) ; 4431 tnp := first_forbidden_id 4432 END 4433 ELSE tnp := tnp^.previous ; 4434 insymbol ; 4435 IF (no = 8) AND (cl = 6) (* = *) THEN 4436 BEGIN 4437 check_id := true ; forbidden_id := typid ; 4438 insymbol 4439 END ELSE error (16) ; 4440 4441 structispack := false ; err := false ; cadre := 0 ; 4442 typedecl (tl, retpt) ; 4443 check_id := false ; 4444 IF (NOT err) AND (retpt <> NIL) THEN 4445 IF retpt^.name <> blank THEN 4446 BEGIN (* SYNONYMY *) 4447 create_types_box (lp, typid, aliastype, false) ; 4448 WITH lp^ DO 4449 BEGIN 4450 realtype := retpt ; 4451 END ; 4452 $OPTIONS compile = trace $ 4453 printrec (lp) ; 4454 $OPTIONS compile = true $ 4455 next := lp ; 4456 END (* ALIAS *) ELSE 4457 BEGIN (* NEW TYPE *) 4458 WITH retpt^ DO 4459 BEGIN 4460 name := typid ; nxtel := next ; 4461 deffile := oldfile ; defline := oldline ; alfathread := NIL ; 4462 new (references) ; IF references = NIL THEN heaperror ; 4463 WITH references^ DO 4464 BEGIN 4465 refnbr := 0 ; nextref := NIL ; 4466 END ; 4467 END (* with RETPT *) ; 4468 next := retpt ; 4469 END (* NEW TYPE *) ; 4470 $OPTIONS compile = trace $ 4471 IF decltrace = high THEN 4472 BEGIN 4473 write (mpcogout, ' ON TYPE DEFINED AT ', ord (retpt), ' NAME AND NXTEL ARE ', 4474 typid : 9, ord (next)) ; 4475 nextline ; 4476 END ; 4477 $OPTIONS compile = true $ 4478 (* WAS THIS TYPE ALREADY *) 4479 (* IN PTLIST ( @TYPID) *) 4480 FOR i := ptx - 1 DOWNTO 0 DO 4481 WITH ptlist [i] DO 4482 IF (hname = typid) AND (retpt <> NIL) THEN 4483 IF retpt^.form = files THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 104 4484 error (108) ELSE 4485 BEGIN 4486 pptr^.eltype := retpt ; ptx := ptx - 1 ; pptr^.domain := pptr ; 4487 (* NOW FREES TOP OF ARRAY PTLIST *) 4488 hname := ptlist [ptx].hname ; pptr := ptlist [ptx].pptr ; 4489 IF listyes THEN nameisref (next, rfil, rlin) ; 4490 END ; (* WITH,FOR *) 4491 findsemicolon ; (* SEARCH ; and READ NEXT SYMBOL *) 4492 4493 END (* while NO=1 *) ; 4494 IF ptx > 0 THEN 4495 FOR j := ptx - 1 DOWNTO 0 DO 4496 WITH ptlist [j] DO 4497 BEGIN 4498 aval := hname ; search ; 4499 IF ctptr <> NIL THEN 4500 BEGIN 4501 IF ctptr^.klass = types THEN 4502 IF ctptr^.form = aliastype THEN ctptr := ctptr^.realtype ; 4503 WITH ctptr^ DO 4504 IF (klass = types) AND (form <= records) THEN 4505 BEGIN 4506 pptr^.eltype := ctptr ; ptx := ptx - 1 ; pptr^.domain := pptr ; 4507 hname := ptlist [ptx].hname ; pptr := ptlist [ptx].pptr ; 4508 END 4509 ELSE 4510 BEGIN 4511 error (96) ; 4512 nextline ; 4513 write (mpcogout, ' ****** ITEM POINTED BY TYPE ', pptr^.name, ' IS OF ILLEGAL TYPE.') ; 4514 writeln (mpcogerr, ' ****** ITEM POINTED BY TYPE ', pptr^.name, ' IS OF ILLEGAL TYPE.') ; 4515 nextline 4516 END 4517 END 4518 END ; 4519 IF ptx > 0 THEN 4520 BEGIN 4521 error (93) ; 4522 FOR j := ptx - 1 DOWNTO 0 DO 4523 BEGIN 4524 nextline ; 4525 write (mpcogout, ' ****** IDENTIFIER PENDING :', ptlist [j].hname) ; 4526 writeln (mpcogerr, ' ****** IDENTIFIER PENDING :', ptlist [j].hname) ; 4527 nextline ; 4528 END ; 4529 ptx := 0 ; 4530 END (* PTX>0 *) ; 4531 $OPTIONS compile = trace $ 4532 IF decltrace = high THEN 4533 BEGIN 4534 write (mpcogout, ' ^ BODY.END TYPE PART ^^^') ; nextline ; 4535 END ; 4536 $OPTIONS compile = true $ 4537 END (* TYPEPARTDECL *) ; 4538 4539 (* ******************************** VARPARTDECL < BODY************************* *) 4540 *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 105 4541 PROCEDURE varpartdecl ; 4542 4543 (* C .COMPILES ALL VARIABLES DECLARATION PART FOR A GIVEN LEVEL 4544* .CREATES 'VARS' BOXES 4545* ACTUAL EXPORTABLE or IMPORTED 4546* .ENTER FILES IN FILPTS 4547* C *) 4548 (* E ERRORS DETECTED 4549* 2: IDENTIFIER EXPECTED 4550* 7: ':' EXPECTED 4551* 101 : Identifier declared twice 4552* 258: TOO MANY FILES 4553* 262: STARTING POINT FOR VARIABLE TOO BIG IN SEGMENT 4554* 264: PLT DISP TOO HIGH 4555* E *) 4556 LABEL 4557 10 ; (* FIND SEMICOLON *) 4558 VAR 4559 varsize : integer ; 4560 recvarsize : integer ; 4561 locdata : integer ; 4562 lextpt : ptexternalitem ; 4563 liactual, liimport, liexport : integer ; 4564 locerr : boolean ; 4565 lp, vardeb, varpoint, vartype : ctp ; 4566 BEGIN (* VARPARTDECL *) 4567 $OPTIONS compile = trace $ 4568 IF decltrace > none THEN 4569 BEGIN 4570 write (mpcogout, ' @@@ DEBUT VARPARTDECL @@@ with NEXT, LC', ord (next), lc) ; nextline ; 4571 END ; 4572 $OPTIONS compile = true $ 4573 locdata := 0 ; 4574 insymbol ; 4575 WHILE no = 1 (* ID. *) DO (* LOOP Ident_list: type [ ; Ident_list:type]* *) 4576 BEGIN 4577 liactual := 0 ; liexport := 0 ; liimport := 0 ; 4578 (* Counters for actual, exportable, imported variables of same type *) 4579 vardeb := next ; 4580 REPEAT (* SECONDARY LOOP ON A,B,C... *) 4581 locerr := false ; 4582 srchrec (next) ; 4583 IF ctptr <> NIL THEN 4584 BEGIN 4585 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 4586 error (101) ; locerr := true ; 4587 END ; 4588 create_vars_box (lp, aval) ; 4589 WITH lp^ DO 4590 BEGIN 4591 vaddr := -1 ; 4592 lextpt := NIL ; 4593 IF (level = 0) AND NOT locerr THEN 4594 BEGIN 4595 checkexternalitem (aval, lextpt) ; 4596 IF lextpt = NIL THEN 4597 vkind := actual ELSE *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 106 4598 BEGIN 4599 IF symbolmap THEN 4600 BEGIN 4601 nameisref (lp, lextpt^.extrfile1, lextpt^.extrline1) ; 4602 IF lextpt^.extrline2 <> 0 THEN 4603 nameisref (lp, lextpt^.extrfile2, lextpt^.extrline2) ; 4604 END ; 4605 IF lextpt^.extitemtype = remanentfile THEN 4606 BEGIN 4607 vfilelocation := permanentfile ; 4608 lextpt^.extdecl := lp ; 4609 END ; 4610 vkind := lextpt^.extkind ; 4611 END ; 4612 END ELSE 4613 vkind := actual ; 4614 vptextitem := lextpt ; 4615 END ; 4616 4617 IF lp^.vkind = actual THEN liactual := liactual + 1 ELSE 4618 BEGIN 4619 lextpt^.extdecl := lp ; 4620 IF lp^.vkind = exportable THEN 4621 BEGIN 4622 liexport := liexport + 1 ; 4623 lextpt^.extitemtype := exportvar ; 4624 END ELSE 4625 BEGIN 4626 liimport := liimport + 1 ; 4627 lextpt^.extitemtype := importvar ; 4628 lp^.visset := true ; 4629 END ; 4630 END ; 4631 next := lp ; 4632 insymbol ; (* EXPECT , or : *) 4633 IF no = 15 (* , *) THEN 4634 BEGIN 4635 insymbol ; 4636 IF no <> 1 (* ID. *) THEN 4637 BEGIN 4638 error (2) ; skip (1) ; 4639 END ; 4640 END ELSE 4641 IF no <> 19 (* : *) THEN 4642 BEGIN 4643 error (7) ; 4644 END ; 4645 UNTIL (no <> 1) ; 4646 varpoint := next ; 4647 4648 (* NOW COMES TYPE FOR THESE VARIABLES *) 4649 4650 IF no = 19 (* : *) THEN 4651 insymbol ELSE error (7) ; 4652 err := false ; cadre := 0 ; structispack := false ; 4653 typedecl (varsize, vartype) ; 4654 IF err OR (vartype = NIL) THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 107 4655 GOTO 10 ; 4656 4657 4658 (* ADJUST SIZE FUNCTION OF CADRE *) 4659 (* A VARIABLE STARTS AT LESS ON A WORD BOUNDARY *) 4660 cadre := sup (vartype^.cadrage, bytesinword) ; 4661 recvarsize := recadre (vartype^.size, cadre) ; 4662 (* Adjust BOUNDARIES *) 4663 IF liactual > 0 THEN 4664 BEGIN 4665 lc := recadre (lc, cadre) + liactual * recvarsize ; 4666 locdata := lc ; 4667 END ; 4668 IF locdata - recvarsize > twoto17 - 1 THEN 4669 BEGIN 4670 error (260) ; 4671 recvarsize := bytesindword ; 4672 lc := 0 ; 4673 locdata := liactual * bytesindword ; 4674 END ; 4675 4676 IF varpoint <> vardeb THEN 4677 REPEAT 4678 WITH varpoint^ DO 4679 BEGIN 4680 vtype := vartype ; 4681 CASE vkind OF 4682 actual : 4683 BEGIN 4684 locdata := locdata - recvarsize ; 4685 vaddr := locdata ; 4686 END ; 4687 imported : 4688 BEGIN 4689 vptextitem^.extlong := vartype^.size ; 4690 END ; 4691 exportable : 4692 BEGIN 4693 vptextitem^.extlong := vartype^.size ; 4694 END ; 4695 END (* case VKIND *) ; 4696 IF existfileintype (vtype) THEN 4697 BEGIN 4698 IF filtop = fillimit THEN 4699 error (258) ELSE 4700 BEGIN 4701 filtop := filtop + 1 ; 4702 filpts [filtop] := varpoint ; 4703 IF level = 0 THEN 4704 BEGIN 4705 IF varpoint^.vfilelocation <> permanentfile THEN 4706 varpoint^.vfilelocation := workfile ; 4707 END ELSE 4708 varpoint^.vfilelocation := localfile ; 4709 END ; 4710 END ; 4711 $OPTIONS compile = trace $ *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 108 4712 printrec (varpoint) ; 4713 $OPTIONS compile = true $ 4714 varpoint := nxtel ; 4715 END (* WITH VARPOINT *) ; 4716 UNTIL varpoint = vardeb ; 4717 10 : 4718 findsemicolon ; 4719 END ; (* while NO=1 MAIN LOOP *) 4720 $OPTIONS compile = trace $ 4721 IF decltrace > low THEN 4722 BEGIN 4723 write (mpcogout, ' @@@ FIN VARPARTDECL @@@ with LC', lc) ; nextline ; 4724 END ; 4725 $OPTIONS compile = true $ 4726 END (* VARPARTDECL *) ; 4727 4728 4729 4730 4731 4732 (* ************************************************ MAIN de BODY ********** *) 4733 BEGIN (* BODY *) 4734 $OPTIONS compile = trace $ 4735 IF decltrace > none THEN 4736 BEGIN 4737 write (mpcogout, ' @@@ DEBUT BODY @@@') ; nextline ; 4738 END ; 4739 $OPTIONS compile = true $ 4740 environt := data ; saved_level := level ; 4741 declarationpart := true ; 4742 fstix := clabix + 1 ; 4743 (* LABELS DECLARED AT THIS LEVEL ARE FROM FSTIX to CLABIX *) 4744 4745 currentnode^.nextproc := lastproc ; 4746 lastproc := currentnode ; 4747 currentnode ^.codebegin := statnbr * 2 ; 4748 IF level = 1 (* Procedure globale *) THEN 4749 IF surrptr <> NIL THEN 4750 exportablecode := exportscode ; 4751 4752 4753 1 : (* BEGINNING OF DECLARATION PART *) 4754 level := saved_level ; (* FOR SECURITY, IN CASE OF ERROR *) 4755 $OPTIONS compile = trace $ 4756 IF decltrace > low THEN 4757 BEGIN 4758 write (mpcogout, ' @@@ LABEL 1 IN BODY @@@') ; nextline ; 4759 END ; 4760 $OPTIONS compile = true $ 4761 4762 push_lab_pdl ; 4763 4764 IF no = 52 (* $IMPORT *) THEN 4765 importpartdecl ; 4766 4767 IF no = 53 (* $EXPORT *) THEN 4768 exportpartdecl ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 109 4769 4770 IF no = 40 (* LABEL *) THEN 4771 labelpartdecl ; 4772 4773 IF no = 41 (* CONST *) THEN 4774 constpartdecl ; 4775 4776 pendingtypeallowed := true ; 4777 IF no = 37 (* TYPE *) THEN 4778 typepartdecl ; 4779 pendingtypeallowed := false ; 4780 4781 IF level <> 0 THEN 4782 filev [level] := filtop + 1 ; 4783 4784 (* THE FILES DECLARED AT LEVEL N ARE IN ARRAY FILPTS FROM 4785* FILEV[N] to FILTOP . *) 4786 4787 IF no = 43 (* VAR *) THEN 4788 varpartdecl ; 4789 IF level = 0 THEN 4790 BEGIN (* GLOBAL LEVEL *) 4791 workextp := externallistheader ; 4792 WHILE workextp <> NIL DO 4793 BEGIN 4794 IF workextp^.extdecl = NIL THEN 4795 IF workextp^.extitemtype IN [extnotresolved, remanentfile] THEN 4796 exportscode := true ; 4797 workextp := workextp^.extnext ; 4798 END ; 4799 IF lc > maxglobsize THEN error (214) ELSE 4800 valuedecl ; 4801 END ELSE 4802 BEGIN (* NOT GLOBAL LEVEL *) 4803 IF no = 54 (* VALUE *) THEN 4804 BEGIN 4805 error (65) ; 4806 REPEAT 4807 skip (46) ; (* NOT ASSIGNED *) 4808 UNTIL (no # 16) ; (* ; *) 4809 END ; 4810 END ; 4811 $OPTIONS compile = trace $ 4812 IF decltrace = high THEN 4813 BEGIN 4814 write (mpcogout, ' @ BODY.END VAR PART @@@ ') ; nextline ; 4815 END ; 4816 $OPTIONS compile = true $ 4817 IF no IN [44, 45] (* FUNCTION,PROCEDURE *) THEN 4818 BEGIN 4819 REPEAT 4820 IF mapswitch THEN 4821 BEGIN 4822 hdrfile := symbolfile ; 4823 hdrindex := symbolindex ; 4824 hdrline := symbolline ; 4825 END ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 110 4826 lno := no ; oldlev := level ; 4827 lextpt := NIL ; 4828 IF level < maxlevel THEN 4829 level := level + 1 ELSE 4830 error (251) ; 4831 insymbol ; 4832 IF no # 1 THEN (* NOT ID. *) 4833 BEGIN 4834 error (2) ; level := oldlev ; 4835 GOTO 1 ; (* BEGINNING OF BODY *) 4836 END ; 4837 locerr := false ; 4838 srchrec (next) ; 4839 IF ctptr # NIL (* ID. FOUND *) THEN 4840 BEGIN 4841 IF ctptr@.klass # proc (* FORWARDS ? *) THEN 4842 BEGIN 4843 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 4844 error (101) ; ctptr := NIL ; locerr := true ; 4845 END ; 4846 END ; 4847 IF ctptr = NIL THEN (* UNDECLARED PROC OR FUNCT. *) 4848 BEGIN 4849 create_proc_box (procptr, aval) ; 4850 WITH procptr^ DO 4851 BEGIN 4852 proctype := procptr ; (* Default means not a fucntion *) 4853 IF (oldlev = 0) AND NOT locerr THEN 4854 BEGIN 4855 checkexternalitem (aval, lextpt) ; 4856 IF lextpt = NIL THEN 4857 lprockind := actual ELSE 4858 BEGIN 4859 lprockind := lextpt^.extkind ; 4860 END ; 4861 END ELSE 4862 lprockind := actual ; 4863 IF lextpt <> NIL THEN 4864 BEGIN 4865 IF symbolmap THEN 4866 BEGIN 4867 nameisref (procptr, lextpt^.extrfile1, lextpt^.extrline1) ; 4868 IF lextpt^.extrline2 <> 0 THEN 4869 nameisref (procptr, lextpt^.extrfile2, lextpt^.extrline2) ; 4870 END ; 4871 lextpt^.extdecl := procptr ; 4872 IF lprockind = imported THEN 4873 WITH lextpt^ DO 4874 BEGIN 4875 pwantdescs := extwantdescs ; 4876 IF (extgenerator = 'pl1') OR 4877 (extgenerator = 'pl/i') OR 4878 (extgenerator = 'pl/1') THEN extgenerator := 'PL/1' 4879 ELSE IF (extgenerator = 'fortran') THEN extgenerator := 'FORTRAN' 4880 ELSE IF (extgenerator = 'pascal') THEN extgenerator := 'Pascal' 4881 ELSE IF (extgenerator = 'cobol') THEN extgenerator := 'COBOL' 4882 ELSE IF (extgenerator = 'alm') THEN extgenerator := 'ALM' *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 111 4883 ELSE extgenerator := 'Unknown' ; 4884 pwantspl1descriptors := 4885 (extgenerator = 'PL/1') OR (extgenerator = 'FORTRAN') OR (extgenerator = 'COBOL') ; 4886 lextpt^.extitemtype := importproc END ELSE 4887 lextpt^.extitemtype := exportproc ; 4888 END ; 4889 4890 prockind := lprockind ; 4891 proclevel := oldlev ; (* LEVEL -1 *) 4892 procextitem := lextpt ; 4893 END ; 4894 (* NOW BEGINS NEW LEVEL *) 4895 display [top].fname := procptr ; 4896 next := NIL ; 4897 insymbol ; (* PARAMETER LIST BEGINS, IF ANY *) 4898 oldlc := lc ; 4899 lc := pascdebstacklocal ; longparam := 0 ; 4900 IF lno = 44 (* FUNCTION *) THEN 4901 BEGIN 4902 globnbpar := 1 ; (* ONE FOR FUNCTION RESULT *) 4903 IF no = 9 (* ( *) THEN 4904 BEGIN 4905 insymbol ; nestproc := 0 ; formparm ; 4906 IF no = 10 (* ) *) THEN 4907 insymbol ; 4908 END ; 4909 lc := lc + bytesindword ; (* FUNCTION RESULT "ITS" *) 4910 longparam := lc - pascdebstacklocal ; 4911 (* TYPE OF FUNCTION *) 4912 IF no = 19 (* : *) THEN 4913 insymbol ELSE error (7) ; 4914 (* MUST BE A TYPE IDENTIFIER < POWER *) 4915 IF no # 1 (* ID *) THEN 4916 BEGIN 4917 error (123) ; procptr@.proctype := NIL ; skip (46) ; 4918 END ELSE 4919 BEGIN 4920 search ; 4921 IF ctptr # NIL THEN 4922 BEGIN 4923 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 4924 IF ctptr@.klass # types THEN 4925 BEGIN error (103) ; ctptr := NIL ; 4926 END ELSE 4927 BEGIN 4928 IF ctptr@.form = aliastype THEN ctptr := ctptr@.realtype ; 4929 IF ctptr@.form >= power THEN 4930 BEGIN error (120) ; ctptr := NIL ; 4931 END ; 4932 END ; 4933 END ELSE error (104) ; 4934 procptr@.proctype := ctptr ; 4935 insymbol ; 4936 END (* TYPID RESULT FUNCTION *) ; 4937 END (* LNO=44 FUNCTION *) ELSE 4938 BEGIN (* PROCEDURE *) 4939 globnbpar := 0 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 112 4940 IF no = 9 (* ( *) THEN 4941 BEGIN 4942 insymbol ; nestproc := 0 ; formparm ; 4943 longparam := lc - pascdebstacklocal ; 4944 IF no = 10 (* ) *) THEN 4945 insymbol ; 4946 END (* NO=9 *) ; 4947 END ; (* PROCEDURE *) 4948 procptr@.segsize := longparam ; 4949 hdrlength := symbolindex - hdrindex ; 4950 IF no = 16 (* ; *) THEN 4951 insymbol ELSE 4952 BEGIN 4953 error (14) ; skip (16) ; (* ; *) 4954 END ; 4955 procptr@.formals := next ; (* NIL OR FIRST PARAM *) 4956 typofproc := standdef ; 4957 procptr@.nbparproc := globnbpar ; 4958 procptr^.phasdescriptor := globdescriptors ; 4959 IF no = 1 (* ID *) THEN 4960 BEGIN 4961 IF aval = usednames [4] THEN 4962 BEGIN 4963 typofproc := forwdef ; 4964 WITH procptr@ DO 4965 BEGIN 4966 nameisref (procptr, deffile, defline) ; 4967 deffile := 0 ; defline := 0 ; 4968 END ; 4969 END ELSE 4970 IF aval = usednames [5] THEN 4971 typofproc := extdef ELSE 4972 BEGIN 4973 error (88) ; typofproc := extdef ; 4974 END ; 4975 next := procptr ; 4976 IF NOT (typofproc IN [standdef, forwdef]) THEN 4977 IF procptr@.prockind # imported THEN 4978 BEGIN error (87) ; procptr@.prockind := imported ; END ; 4979 procptr@.procdef := typofproc ; procptr@.procinscope := false ; 4980 insymbol ; 4981 IF no <> 16 THEN 4982 BEGIN 4983 error (14) ; skip (16) ; 4984 END ; 4985 END ; 4986 WITH procptr@ DO 4987 BEGIN 4988 procaddr := lkc ; 4989 lkc := lkc + bytesindword ; 4990 IF pwantdescs THEN 4991 BEGIN 4992 lkc := lkc + bytesindword ; (* PLACE FOR LINK TO INFO FOR TRAP PROC *) 4993 oldlc := recadre (oldlc, bytesindword) ; 4994 pdescsaddrplace := oldlc ; (* PLACE FOR VECTOR OF PTRS TO ARG DESCRIPTORS *) 4995 oldlc := oldlc + bytesindword * nbparproc ; 4996 IF extcalltrapplace = 0 THEN *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 113 4997 BEGIN 4998 extcalltrapplace := lkc ; 4999 lkc := lkc + bytesindword ; 5000 genentrypoint (0, extcalltrapplace, 2, 'pascal_ext_call_trap_proc_', 5001 'pascal_ext_call_trap_proc_', false, entrylength, locreturncode) ; 5002 IF locreturncode <> 0 THEN error (505) ; 5003 END ; 5004 END ; 5005 END ; 5006 $OPTIONS compile = trace $ 5007 printrec (procptr) ; 5008 $OPTIONS compile = true $ 5009 IF procptr@.procdef = standdef THEN 5010 BEGIN 5011 (* COMPILE BODY OF THIS PROC *) 5012 top := level + 1 ; 5013 WITH display [top] DO 5014 BEGIN 5015 fname := next ; occur := block ; 5016 END ; 5017 create_dummyclass_box (lfirstentry, blank) ; 5018 new (np, procblock) ; 5019 WITH np^ DO 5020 BEGIN 5021 father := currentnode ; 5022 brother := currentnode^.son ; 5023 currentnode^.son := np ; 5024 son := NIL ; 5025 nextproc := NIL ; 5026 blockbox := procptr ; 5027 procptr^.procisactive := true ; 5028 codebegin := 0 ; 5029 codeend := 0 ; 5030 structureplace := 0 ; 5031 first := NIL ; 5032 firstlabel := NIL ; 5033 blocktp := procblock ; 5034 hdrlin := hdrline ; 5035 hdrfil := hdrfile ; 5036 hdrind := hdrindex ; 5037 hdrlen := hdrlength ; 5038 END ; 5039 currentnode := np ; 5040 (* ***************************** *) 5041 body (procptr, lfirstentry) ; 5042 (* ************************** *) 5043 currentnode^.codeend := statnbr * 2 ; 5044 procptr^.procisactive := false ; 5045 currentnode := currentnode^.father ; 5046 END (* COMPILE BODY OF A NEW PROC *) 5047 END (* THIS WAS A NEW PROC *) ELSE 5048 BEGIN (* ALREADY DECLARED *) 5049 WITH ctptr@ DO 5050 IF procdef <> forwdef THEN 5051 BEGIN 5052 IF symbolmap THEN nameisref (ctptr, symbolfile, symbolline) ; 5053 error (101) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 114 5054 END 5055 ELSE 5056 BEGIN 5057 IF ((lno = 45) (* PROC *) AND 5058 (ctptr^.proctype <> ctptr)) OR 5059 ((lno = 44) AND (ctptr^.proctype = ctptr)) THEN 5060 error (116) ; 5061 deffile := symbolfile ; defline := symbolline 5062 END ; 5063 insymbol ; 5064 IF no = 9 (* ( *) THEN (* IGNORE PARMLIST *) 5065 BEGIN 5066 error (119) ; 5067 REPEAT 5068 skip (10) ; 5069 IF no IN [16, 40, 37, 41, 43, 44, 45] THEN insymbol ; 5070 (* ;LABEL CONST TYPE VAR FUNC PROC *) 5071 UNTIL NOT (no IN [1, 16, 40, 37, 41, 43, 44, 45]) ; 5072 IF no = 10 THEN 5073 insymbol ELSE error (4) ; 5074 hdrlength := symbolindex - hdrindex ; 5075 END (* IGNORE PARMLIST *) ; 5076 IF no = 15 (* , *) THEN skip (16) ; 5077 IF no = 16 THEN 5078 insymbol ELSE error (14) ; 5079 IF (no = 1) THEN 5080 BEGIN insymbol ; error (88) ; findsemicolon ; END ELSE 5081 BEGIN (* COMPILE BODY OF AN OLD DEFINED PROC *) 5082 procptr := ctptr ; 5083 WITH procptr@ DO 5084 BEGIN 5085 lc := segsize ; procdef := standdef ; (* NO MORE FORWARD *) 5086 lc := lc + pascdebstacklocal ; procinscope := true ; 5087 next := formals ; 5088 END ; 5089 top := level + 1 ; 5090 WITH display [top] DO 5091 BEGIN 5092 fname := next ; occur := block ; 5093 END ; 5094 $OPTIONS compile = trace $ 5095 printrec (procptr) ; 5096 $OPTIONS compile = true $ 5097 create_dummyclass_box (lfirstentry, blank) ; 5098 new (np, procblock) ; 5099 WITH np^ DO 5100 BEGIN 5101 father := currentnode ; 5102 brother := currentnode^.son ; 5103 currentnode^.son := np ; 5104 son := NIL ; 5105 nextproc := NIL ; 5106 blockbox := procptr ; 5107 procptr^.procisactive := true ; 5108 codebegin := 0 ; 5109 codeend := 0 ; 5110 structureplace := 0 ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 115 5111 first := NIL ; 5112 firstlabel := NIL ; 5113 blocktp := procblock ; 5114 hdrlin := hdrline ; 5115 hdrfil := hdrfile ; 5116 hdrind := hdrindex ; 5117 hdrlen := hdrlength ; 5118 END ; 5119 currentnode := np ; 5120 (* **************************** *) 5121 body (procptr, lfirstentry) ; 5122 (* ************************ *) 5123 currentnode^.codeend := statnbr * 2 ; 5124 procptr^.procisactive := false ; 5125 currentnode := currentnode^.father ; 5126 END (* BODY OF AN OLD PROC *) ; 5127 END (* ALREADY DECLARED *) ; 5128 lc := oldlc ; 5129 level := oldlev ; 5130 findsemicolon ; 5131 UNTIL NOT (no IN [44, 45]) ; (* FUNCT , PROC *) 5132 $OPTIONS compile = trace $ 5133 IF decltrace = high THEN 5134 BEGIN 5135 write (mpcogout, ' @ BODY.END PROC/FUNC,PART @@@') ; nextline ; 5136 END ; 5137 $OPTIONS compile = true $ 5138 END (* FUNCTION OR PROCEDURE *) ; 5139 display [top].fname := next ; 5140 IF level = 0 THEN 5141 staticswordcount := (lc + bytesinword - 1) DIV bytesinword ; 5142 5143 IF NOT (no = 21) THEN 5144 BEGIN (* BEGIN EXPECTED AND NOT FOUND *) 5145 error (17) ; skip (46) ; 5146 WHILE no IN [16, 22] DO (* ; END *) 5147 BEGIN 5148 insymbol ; skip (46) ; 5149 END ; 5150 IF no IN [37, 40, 41, 43, 44, 45] THEN GOTO 1 (* BODY BEGINNING *) 5151 END (* BEGIN NOT FOUND *) ; 5152 (* STATEMENT PART *) 5153 declarationpart := false ; 5154 enterbody ; 5155 compstat ; 5156 leavebody ; 5157 declarationpart := true ; 5158 currentnode^.first := display [top].fname ; 5159 IF surrptr # NIL THEN 5160 BEGIN 5161 surrptr@.segsize := lc ; 5162 create_dummyclass_box (lp, blank) ; 5163 IF lp > maxctp THEN maxctp := lp ; 5164 firstentry := NIL ; 5165 top := level ; 5166 next := display [top].fname ; 5167 END (* NOT NIL *) ; *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 116 5168 5169 pop_lab_pdl ; 5170 5171 $OPTIONS compile = trace $ 5172 IF decltrace > low THEN 5173 BEGIN 5174 write (mpcogout, ' @@@ END BODY @@@') ; nextline ; 5175 END ; 5176 $OPTIONS compile = true $ 5177 END (* BODY *) ; 5178 5179 (* END OF THE DECLARE MODULE ********************************************** *) BEGIN 5180 END. *** MULTICS PASCAL COMPILER - V8.03 **** PROGRAM declare *** ON 11/12/86 *** PAGE 117 NO COMPILATION ERROR STORAGE REQUIREMENTS FOR OBJECT SEGMENT Object Text Defs Links Static Symbol Start 0 0 50164 52430 52440 53764 Length 56340 50164 2243 1334 545 2340 STORAGE REQUIREMENTS FOR PRIVATE_STORAGE SEGMENT Object Text Defs Links Static Symbol Start 0 0 0 252 262 1422 Length 1640 0 251 1150 1140 202 SOURCE FILES USED IN THIS COMPILATION NUMBER DATE MODIFIED PATHNAME 0 11/12/86 1607.7 >spec>install>1212>DECLARE.pascal 1 11/12/86 1528.2 >spec>install>1212>CONSTTYPE.incl.pascal NAMES DECLARED AND REFERENCED absl const numeric ; DEF: 1-334 ; REF: 2437 2444 actual const scalar, ord=0 ; DEF: 1-406 ; REF: 3991 4127 4597 4613 4617 4682 4857 4862 actual_parameter_list field disp:160, size:10 ; pointer ; DEF: 1-530 ; REF: 1175* 2693 3538 3549 3550* 3567 3640 3657 3658* addcurrent var local to valuedecl, loc:145, size:4 ; integer ; DEF: 2548 ; REF: 2600* 2626* 2628 2629* 2669* 2877 2878* 2878 2887 2890 2891 adjust proc of fieldlist ; DEF: 1353 ; REF: 1493 1510 1628 aeltype field disp:200, size:10 ; pointer ; DEF: 1-546 ; REF: 1820* 1883 1883* 2680 2687 3201* 3282* 3315 alfa type packed array of (char) ; DEF: 1-398 ; REF: 339 340 341 342 343 alfaconst const scalar, ord=2 ; DEF: 1-416 ; REF: 1-569 4360 alfaid type packed array of (char) ; DEF: 1-399 ; REF: 1-404 1-436 1-446 1-447 1-496 1-508 1-965 207 225 241 331 434 435 436 437 438 439 440 453 472 512 634 694 780 1342 2160 2282 2553 3728 3736 3759 3762 3768 4294 4406 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 287 320 4297 4411 alfamax var local to valuedecl, loc:147, size:4 ; integer ; DEF: 2548 ; REF: 2684* 2693* 2725 2726 2764 2765 2773 2774 2779 2782 2785 2818 2819 2826 2827 2832 2835 2839 alfapt type pointer ; DEF: 1-419 ; REF: 1-421 1-569 alfaptr var global imported, size:10 ; pointer ; DEF: 206 ; REF: 95 2762 2768 2816 2822 alfathread field disp:50, size:10 ; pointer ; DEF: 1-510 ; REF: 4461* alfavalue type record ; DEF: 1-420 ; REF: 1-419 aliastype const scalar, ord=10 ; DEF: 1-413 ; REF: 1-563 1193 1214 1588 2062 2697 3175 3274 3414 3525 4447 4502 4928 analyzing_schema var global exportable, size:40 ; record ; DEF: 277 ; REF: 160 550* arraybound const scalar, ord=2 ; DEF: 1-406 ; REF: 3107 3139 3487 3546 3649 3671 arrays const scalar, ord=5 ; DEF: 1-412 ; REF: 1-546 1214 1816 2674 2706 3190 asciiformataddr var global imported, size:10 ; pointer ; DEF: 271 ; REF: 24 2441 attraccess type scalar ; DEF: 1-813 ; REF: 1-871 attrkind type scalar ; DEF: 1-812 ; REF: 1-852 auxalf var local to fieldlist, loc:163, size:40 ; packed array of (char) ; DEF: 1342 ; REF: 1557* 1564 aval var global imported, size:40 ; packed array of (char) ; DEF: 207 ; REF: 96 1263 1423 1557 2053 3103 3104 3135 3136 3373 3456 3986 3997 4007 4122 4132 4134 4311 4425 4498* 4588 4595 4849 4855 4961 4970 bdispl var local to typedecl, loc:156, size:4 ; integer ; DEF: 879 ; REF: 1369 1384 1385* 1390 1492 1492 1500* 1510 1516* 1628 1628 1638* 1642 1719* 1768 1908* before var local to valuedecl, loc:164, size:10 ; pointer ; DEF: 2550 ; REF: 2584* 2585 2589 2590* 2590 begsy const scalar, ord=1 ; DEF: 1-669 ; REF: 363 370 385 1844 bigsize var local to typedecl, loc:144, size:10 ; real ; DEF: 877 ; REF: 1875* 1875* 1875 1876* 1876 1877 1878* 1881 binartype type packed array of (integer) ; DEF: 1-810 ; REF: 1-811 1-811 257 257 474 495 bitsinbyte const numeric ; DEF: 1-63 ; REF: 1-78 1-79 bitsinword const numeric ; DEF: 1-78 ; REF: 1-80 1-92 1-111 1-115 1-117 blank const alphanumeric, 8 char(s) ; DEF: 1-138 ; REF: 716 716 716 978 994 1051 1064 1083 1243 1287 1703 1750 1816 1897 1945 1992 2022 2305 2305 2417 2417 2867 2867 3190 3877 3878 3878 3878 3920 4005 4445 5017 5097 5162 block const scalar, ord=0 ; DEF: 1-622 ; REF: 1-635 5015 5092 blockbox field disp:60, size:10 ; pointer ; DEF: 1-946 ; REF: 5026* 5106* blocknode type record ; DEF: 1-940 ; REF: 1-639 blocknodeptr type pointer ; DEF: 1-639 ; REF: 1-646 1-941 1-949 215 230 327 blocktp field disp:50, size:4 ; scalar ; DEF: 1-944 ; REF: 5033* 5113* blocktype type scalar ; DEF: 1-938 ; REF: 1-944 bornesupset const numeric ; DEF: 1-112 ; REF: 1-815 2489 boundary funct level 0, imported ; integer ; DEF: 430 ; REF: 56 1057 1075 1204 1281 1293 1949 1998 2028 boxheader var global imported, size:170 ; array of (char) ; DEF: 208 ; REF: 97 610 623 boxtoprint var parameter of printexternalbox, size:10 ; pointer ; DEF: 605 ; REF: 608 611 brother field disp:20, size:10 ; pointer ; DEF: 1-645 ; REF: 4231* brother field disp:10, size:10 ; pointer ; DEF: 1-941 ; REF: 5022* 5102* bufval var global imported, size:2000 ; array of (char) ; DEF: 209 ; REF: 98 3785 3795 3807 3834 3847 building_from_schema var global exportable, size:40 ; record ; DEF: 278 ; REF: 161 551* 1127 1128 1131* 1132* 1133* 1137 1141 1145 1146 1154* 1154 1156 1164* 1167 1170* 1174 bytesindword const numeric ; DEF: 1-66 ; REF: 2245 2467 2616 2864 2910 3380 3481 3489 3533 3562 3637 3650 3673 3686 4671 4673 4909 4989 4992 4993 4995 4999 bytesinhword const numeric ; DEF: 1-65 ; REF: 1-79 2891 bytesinword const numeric ; DEF: 1-64 ; REF: 1-65 1-66 1-71 1-72 1-78 1-110 1-128 1-276 1377 1379 1379 1382 1384 1459 1466 1466 1483 1492 1500 1516 1628 1638 1872 1877 2429 2436 2879 4660 5141 5141 bytesneeded funct level 0, imported ; integer ; DEF: 431 ; REF: 57 1054 1060 1073 1078 1280 1282 1290 1294 1995 1999 2021 2027 2629 bytwidth field disp:134, size:4 ; integer ; DEF: 1-609 ; REF: 1379 1379* 1382 1473* 1496* 1514* 1633* cadrage field disp:120, size:4 ; integer ; DEF: 1-524 ; REF: 1057* 1075* 1092 1203 1281* 1284 1293* 1623 1882* 1936* 1949* 1965 1998* 2007 2028* 2077 3289* 3290* 3290 4660 cadre var global, loc:12, size:4 ; integer ; DEF: 309 ; REF: 1092* 1092 1099 1112 1203* 1204* 1284* 1284 1310 1448 1448* 1459 1459* 1466 1466* 1467 1468 1483* 1497 1513 1539* 1539 1768 1784 1858 1858* 1864 1872* 1872 1873 1882 1894* 1894 1910 1911* 1922* 1922 1936 1954 1954* 1957 1965* 1973* 1973 1979 1979* 1984 2007* 2077* 2077 2085 4441* 4652* 4660* 4661 4665 casebytes var local to fieldlist, loc:160, size:4 ; integer ; DEF: 1341 ; REF: 1642* 1719 casefield var local to fieldlist, loc:150, size:4 ; boolean ; DEF: 1340 ; REF: 1578* 1582* 1617 1754 casesize field disp:114, size:4 ; integer ; DEF: 1-610 ; REF: 1738* 1753* casetype field disp:140, size:10 ; pointer ; DEF: 1-613 ; REF: 1753* caseval field disp:134, size:4 ; integer ; DEF: 1-614 ; REF: 1706* cb var global imported, size:4 ; integer ; DEF: 256 ; REF: 143 2214* 2462 2472 2480 2488 2499 2511 ccode var local to simpletype, loc:172, size:4 ; integer ; DEF: 945 ; REF: 1140* ccount var local to fieldlist, loc:240, size:4 ; integer ; DEF: 1347 ; REF: 1608* 1700* 1700 1748 chain const scalar, ord=3 ; DEF: 1-812 ; REF: 1-894 char_const_token const scalar, ord=3 ; DEF: 1-491 ; REF: 1-499 charptr var global imported, size:10 ; pointer ; DEF: 210 ; REF: 99 1690 1690 2680 2769 2823 check_id var global imported, size:4 ; boolean ; DEF: 211 ; REF: 100 1444* 1453* 1904 1904* 1914* 2015 2015* 2017* 4324* 4370* 4437* 4443* check_id_saved var local to typedecl, loc:214, size:4 ; boolean ; DEF: 882 ; REF: 2015* 2017 checkcase var local to fieldlist, loc:226, size:40 ; set of (numeric 0..287) ; DEF: 1346 ; REF: 1608* 1697 1699* 1699 checkdefiningpoint proc level 0 ; DEF: 780 ; REF: 3103 3135 checkexternalitem proc level 0, exportable ; DEF: 634 ; REF: 162 3986 4122 4595 4855 checkminmax proc level 0, imported ; DEF: 432 ; REF: 58 1145 1681 1692 2751 2806 cl var global imported, size:4 ; integer ; DEF: 212 ; REF: 101 1647 1653 1689 1689 1785 1803 2671 2732 3047 3076 3295 3344 3475 3956 3960 4064 4173 4202 4261 4322 4435 clabix var global exportable, size:4 ; integer ; DEF: 279 ; REF: 163 552* 2324 2363* 4205 4213 4216* 4216 4217 4270 4742 closefile proc level 0, imported ; DEF: 458 ; REF: 73 2320 codcste var local to constpartdecl, loc:154, size:4 ; integer ; DEF: 4296 ; REF: 4340* 4341 code const scalar, ord=1 ; DEF: 1-623 ; REF: 2211 codebegin field disp:30, size:4 ; integer ; DEF: 1-942 ; REF: 4747* 5028* 5108* codeend field disp:34, size:4 ; integer ; DEF: 1-942 ; REF: 5029* 5043* 5109* 5123* compatbin proc level 0, imported ; DEF: 433 ; REF: 59 1141 2746 2801 compstat proc level 0, imported ; DEF: 426 ; REF: 54 5155 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 conformagain var local to conformarray, loc:143, size:4 ; boolean ; DEF: 3029 ; REF: 3063* 3297* 3306 conformarray proc of formparm ; DEF: 2984 ; REF: 3477 conint var global imported, size:4 ; integer ; DEF: 213 ; REF: 102 984 999 1145 1149 2734 2735 2751 2752 2758 2772 2806 2807 2813 2825 4347 conreel var global imported, size:10 ; real ; DEF: 214 ; REF: 103 2758* 2760 2813* 2814 4355 constid var local to constpartdecl, loc:140, size:40 ; packed array of (char) ; DEF: 4294 ; REF: 4311* 4315 4324 4331 4344 4352 4360 constpartdecl proc of body ; DEF: 4278 ; REF: 4774 consttype type scalar ; DEF: 1-416 ; REF: 1-566 341 438 contexte type scalar ; DEF: 1-623 ; REF: 220 contexttable type record ; DEF: 1-507 ; REF: 1-433 contype field disp:130, size:10 ; pointer ; DEF: 1-565 ; REF: 1149* 1266* 1668 1669 1670 4334* 4368* crealfabox proc level 0, imported ; DEF: 407 ; REF: 32 4365 create_dummyclass_box proc level 0, imported ; DEF: 440 ; REF: 66 5017 5097 5162 create_field_box proc level 0, imported ; DEF: 437 ; REF: 63 1423 1564 create_konst_box proc level 0, imported ; DEF: 438 ; REF: 64 1146 1263 4331 4344 4352 4360 create_proc_box proc level 0, imported ; DEF: 436 ; REF: 62 3373 4849 create_tagfield_box proc level 0, imported ; DEF: 439 ; REF: 65 1703 1750 create_types_box proc level 0, imported ; DEF: 435 ; REF: 61 1051 1064 1243 1287 1816 1897 1945 1992 2022 3190 3515 4447 create_vars_box proc level 0, imported ; DEF: 434 ; REF: 60 3104 3136 3456 3544 3647 4588 createexternalbox proc level 0, exportable ; DEF: 694 ; REF: 164 3997 4132 cstkind var local to valuedecl, loc:156, size:4 ; numeric 1..4 ; DEF: 2549 ; REF: 2692* 2700* 2703* 2703* 2720* 2722 2744 2799 cstnext field disp:10, size:10 ; pointer ; DEF: 1-831 ; REF: 2465 cstplace field disp:4, size:4 ; integer ; DEF: 1-830 ; REF: 2462 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 206 210 216 228 238 239 242 245 260 271 272 283 301 303 332 405 406 406 407 416 432 433 433 434 435 436 437 438 439 440 441 442 443 444 448 450 456 458 460 461 462 466 468 780 846 881 919 943 944 950 951 966 1023 1037 1319 1343 1344 2096 2156 2278 2550 2971 2979 2980 3030 3032 3033 3034 3035 3036 3037 3039 4295 4407 4565 ctptr var global imported, size:10 ; pointer ; DEF: 216 ; REF: 104 813 816 1119 1120 1124 1126 1131 1132 1133 1136 1190 1192 1193 1193* 1193 1194 1195 1197 1201 1202 1203 1204 1205 1220 1222 1223 1225 1257 1258 1416 1418 1554 1556 1576 1583 1585 1586 1588 1588* 1588 1590 1592 1616 1661 1662 1664 1665 2030 2031 2032 2033 2033 2034* 2035 2036 2038* 2041 2061 2062 2062* 2062 2063 2065 2069 2654 2655 2656 2661 2662 2663 3164 3165 3171 3172 3175 3176* 3176 3177 3182* 3185 3186 3194 3263 3264 3270 3271 3274 3275* 3275 3279* 3282 3283 3289 3290 3371 3406 3408 3409 3411* 3414 3414* 3414 3415 3417* 3422 3448 3450 3501 3505 3506 3515 3518 3520* 3523 3525 3525* 3525 3526 3537 3538 3539 3566 3567 3573 4306 4308 4419 4421 4499 4501 4502 4502* 4502 4503 4506 4583 4585 4839 4841 4843 4844* 4847 4921 4923 4924 4925* 4928 4928* 4928 4929 4930* 4934 5049 5052 5058 5058 5059 5059 5082 ctype var local to simpletype, loc:166, size:10 ; pointer ; DEF: 944 ; REF: 1140* 1141 currch var local to decodestring, loc:157, size:4 ; char ; DEF: 3758 ; REF: 3776 3782* 3785* 3786 3790 3795* 3798 3807* 3808 3816 3828 3832* 3834* 3835 3840 3846* 3847* 3848 3851 3880* current_parameter field disp:30, size:10 ; pointer ; DEF: 1-489 ; REF: 1132* 1137 1141 1145 1146 1154* 1154 1156 current_token field disp:20, size:10 ; pointer ; DEF: 1-488 ; REF: 1133* currentnode var global imported, size:10 ; pointer ; DEF: 215 ; REF: 105 2223 4231 4232 4233 4745 4746 4747 5021 5022 5023 5039* 5043 5045* 5045 5101 5102 5103 5119* 5123 5125* 5125 5158 currextpt var local to exportpartdecl, loc:140, size:10 ; pointer ; DEF: 4093 ; REF: 4104* 4161 curritem var local to valuedecl, loc:166, size:10 ; pointer ; DEF: 2550 ; REF: 2601* 2604 2605 2606* 2607* 2657 2885* 2885 currlabbox var local to labelpartdecl, loc:142, size:10 ; pointer ; DEF: 4199 ; REF: 4244* 4247 4248* 4250 currlcstpt var global imported, size:10 ; pointer ; DEF: 262 ; REF: 149 2218* 2469 2470 2474* currllcstpt var global imported, size:10 ; pointer ; DEF: 263 ; REF: 150 2219* 2485 2486 2490* currrcstpt var global imported, size:10 ; pointer ; DEF: 264 ; REF: 151 2220* 2477 2478 2482* currwcstpt var global imported, size:10 ; pointer ; DEF: 265 ; REF: 152 2217* 2459 2460 2465* cv var local to simpletype, loc:147, size:4 ; integer ; DEF: 942 ; REF: 1241* 1250* 1250 1266 1280 1282 1285 1290 1291 1294 cwith const scalar, ord=1 ; DEF: 1-622 ; REF: 1-636 data const scalar, ord=0 ; DEF: 1-623 ; REF: 2623 2874 4740 dclfile field disp:40, size:4 ; integer ; DEF: 1-647 ; REF: 4234* dclline field disp:44, size:4 ; integer ; DEF: 1-647 ; REF: 4235* declarationpart var global imported, size:4 ; boolean ; DEF: 217 ; REF: 106 4741* 5153* 5157* decltrace var global exportable, size:4 ; scalar ; DEF: 281 ; REF: 165 590* 655 681 804 834 893 969 1011 1040 1096 1108 1307 1366 1388 1399 1764 1766 1781 2082 2204 2249 2291 2509 2572 2937 3044 3219 3342 3358 3688 3860 3928 3943 4046 4061 4099 4156 4170 4268 4382 4471 4532 4568 4721 4735 4756 4812 5133 5172 decodestring proc of importpartdecl ; DEF: 3736 ; REF: 3963 deffile field disp:60, size:4 ; integer ; DEF: 1-511 ; REF: 1567* 4373* 4461* 4966 4967* 5061* deffile field disp:50, size:4 ; integer ; DEF: 1-648 ; REF: 4236* defline field disp:64, size:4 ; integer ; DEF: 1-511 ; REF: 1567* 4373* 4461* 4966 4967* 5061* defline field disp:54, size:4 ; integer ; DEF: 1-648 ; REF: 4236* displ var local to typedecl, loc:155, size:4 ; integer ; DEF: 879 ; REF: 1368 1384* 1384 1390 1467* 1467 1472 1476* 1476 1497* 1497 1498 1500* 1500 1500 1513* 1513 1514 1516* 1516 1548 1623* 1623 1633 1638* 1638 1638 1641 1719* 1768 1908* display var global imported, size:16030 ; array of (record) ; DEF: 218 ; REF: 107 4895* 5013 5015* 5015* 5090 5092* 5092* 5139* 5158 5166 displimit const numeric ; DEF: 1-15 ; REF: 218 domain field disp:210, size:10 ; pointer ; DEF: 1-542 ; REF: 2054* 2068* 4486* 4506* dummy var local to subrange, loc:150, size:4 ; integer ; DEF: 965 ; REF: 975* 989* dummyclass const scalar, ord=7 ; DEF: 1-415 ; REF: 1-615 dversion var global, loc:13, size:4 ; integer ; DEF: 312 ; REF: 593* 594 594 dwordconst const scalar, ord=1 ; DEF: 1-416 ; REF: 1-568 4352 elset field disp:210, size:10 ; pointer ; DEF: 1-544 ; REF: 1295* 2000* elsize var local to typedecl, loc:154, size:4 ; integer ; DEF: 879 ; REF: 1859* 1873* 1873 1874 1874 1876 1881* 1882 1890 eltyp var local to typedecl, loc:170, size:10 ; pointer ; DEF: 880 ; REF: 1859* 1860 1861 1862* 1866* 1883 1888* 1893 eltype field disp:220, size:10 ; pointer ; DEF: 1-542 ; REF: 2054* 2069* 4486* 4506* endcode var local to leavebody, loc:141, size:4 ; integer ; DEF: 2275 ; REF: 2457* 2505 ended var local to getamulticsid, loc:150, size:4 ; boolean ; DEF: 3765 ; REF: 3776* 3777 3782* 3786* 3798* 3799 3804* 3808* 3816* 3819 3825* 3835* endsy const scalar, ord=2 ; DEF: 1-669 ; REF: 364 366 368 372 374 376 378 380 382 384 387 389 391 393 394 ensaccessible type set of (scalar) ; DEF: 1-461 ; REF: 1-527 enterbody proc of body ; DEF: 2187 ; REF: 5154 enterreftosymbol funct level 0, imported ; integer ; DEF: 448 ; REF: 75 2435 entrylength var global, loc:10, size:4 ; integer ; DEF: 219 ; REF: 2306* 2423* 5001* environt var global imported, size:4 ; scalar ; DEF: 220 ; REF: 108 2211* 2615* 2623* 2668* 2861 2874* 4740* envstandard var global imported, size:4 ; scalar ; DEF: 221 ; REF: 109 1749 2596 3952 4111 4329 err var global, loc:14, size:4 ; boolean ; DEF: 313 ; REF: 909* 987* 996* 1002* 1007* 1009* 1047 1118 1118* 1122* 1137 1155 1161 1199* 1229 1229* 1233 1233* 1237 1237* 1242 1242* 1303 1303* 1449 1449* 1456 1457* 1461* 1527 1538* 1768 1785 1825 1825* 1830 1834* 1858 1858* 1862* 1864 1866* 1891* 1910 1911* 1917 1920* 1955 1955* 1957 1961* 1965* 1979 1979* 1984 1987* 2085 4441* 4444 4652* 4654 error proc level 0, imported ; DEF: 404 ; REF: 33 676 678 817 911 987 996 1002 1007 1007 1122 1199 1253 1259 1419 1438 1446 1461 1544 1552 1562 1573 1583 1586 1592 1606 1611 1615 1655 1662 1666 1672 1676 1691 1697 1702 1713 1715 1721 1724 1749 1795 1808 1843 1856 1862 1878 1916 1953 1961 1978 2045 2049 2071 2178 2309 2361 2362 2377 2426 2452 2562 2566 2597 2621 2641 2645 2672 2735 2748 2759 2762 2764 2776 2781 2793 2803 2813 2816 2818 2829 2834 2846 2855 2871 2895 2931 3071 3078 3086 3099 3120 3131 3152 3160 3167 3178 3181 3209 3242 3251 3266 3278 3300 3368 3371 3399 3402 3411 3417 3420 3451 3468 3471 3498 3502 3509 3513 3523 3528 3582 3591 3597 3950 3953 3958 3966 3973 3979 3994 4014 4019 4032 4041 4109 4112 4118 4129 4134 4140 4146 4152 4208 4211 4214 4261 4263 4309 4317 4326 4330 4422 4430 4439 4484 4511 4521 4586 4638 4643 4651 4670 4699 4799 4805 4830 4834 4844 4913 4917 4925 4930 4933 4953 4973 4978 4983 5002 5053 5060 5066 5073 5078 5080 5145 errorfound var local to importpartdecl, loc:142, size:4 ; boolean ; DEF: 3725 ; REF: 3985* 4019* 4032 errtotal var global imported, size:4 ; integer ; DEF: 222 ; REF: 110 2302 2409 2617 2865 2888 2913 existfileintype funct level 0, imported ; boolean ; DEF: 441 ; REF: 67 4696 exitelem type record ; DEF: 1-479 ; REF: 1-478 exitlabel proc level 0, imported ; DEF: 459 ; REF: 74 2335 exitptr type pointer ; DEF: 1-478 ; REF: 1-480 1-586 exportable const scalar, ord=3 ; DEF: 1-406 ; REF: 2613 2667 2907 4128 4132 4620 4691 exportablecode var global imported, size:4 ; boolean ; DEF: 223 ; REF: 111 4750* exportpartdecl proc of body ; DEF: 4072 ; REF: 4768 exportproc const scalar, ord=4 ; DEF: 1-442 ; REF: 4887 exportscode var global, loc:15, size:4 ; boolean ; DEF: 314 ; REF: 553* 4750 4796* exportvar const scalar, ord=2 ; DEF: 1-441 ; REF: 4623 extareadisp field disp:254, size:4 ; integer ; DEF: 1-454 ; REF: 619 719* extcalltrapplace var global imported, size:4 ; integer ; DEF: 224 ; REF: 112 4996 4998* 5000 extdecl field disp:230, size:10 ; pointer ; DEF: 1-450 ; REF: 615 675 676 677 717* 2903 2904 2905 2906 2907 2907 2908 4608* 4619* 4794 4871* extdef const scalar, ord=2 ; DEF: 1-417 ; REF: 4971 4973 extentryname field disp:140, size:40 ; packed array of (char) ; DEF: 1-447 ; REF: 621 716* 2414 2923 4006* 4007* externalitem type record ; DEF: 1-445 ; REF: 1-444 externalitemtype type scalar ; DEF: 1-441 ; REF: 1-451 694 externallistheader var global exportable, size:10 ; pointer ; DEF: 282 ; REF: 166 554* 661 715 715* 2899 4049 4102 4104 4160 4791 extgenerator field disp:100, size:40 ; packed array of (char) ; DEF: 1-447 ; REF: 621 716* 2438 2925 4003* 4876 4877 4878 4878* 4879 4879* 4880 4880* 4881 4881* 4882 4882* 4883* 4885 4885 4885 extitemtype field disp:240, size:4 ; scalar ; DEF: 1-451 ; REF: 616 718* 4605 4623* 4627* 4795 4886* 4887* extkind field disp:244, size:4 ; scalar ; DEF: 1-452 ; REF: 617 718* 3991 3992* 4127 4128* 4610 4859 extlong field disp:260, size:4 ; integer ; DEF: 1-455 ; REF: 619 719* 4689* 4693* extname field disp:0, size:40 ; packed array of (char) ; DEF: 1-446 ; REF: 614 665 713* 2924 extnext field disp:200, size:10 ; pointer ; DEF: 1-448 ; REF: 614 670 715* 2934 4053 4164 4797 extnotresolved const scalar, ord=0 ; DEF: 1-441 ; REF: 3997 4132 4795 extpltdisp field disp:250, size:4 ; integer ; DEF: 1-453 ; REF: 619 719* extrfile1 field disp:210, size:4 ; integer ; DEF: 1-449 ; REF: 614 713* 4601 4867 extrfile2 field disp:220, size:4 ; integer ; DEF: 1-449 ; REF: 614 714* 3990* 4126* 4603 4869 extrline1 field disp:214, size:4 ; integer ; DEF: 1-449 ; REF: 614 713* 4601 4867 extrline2 field disp:224, size:4 ; integer ; DEF: 1-449 ; REF: 614 714* 3990* 4126* 4602 4603 4868 4869 extsegname field disp:40, size:40 ; packed array of (char) ; DEF: 1-447 ; REF: 621 716* 2413 2925 4001* extwantdescs field disp:264, size:4 ; boolean ; DEF: 1-456 ; REF: 4004* 4875 father field disp:0, size:10 ; pointer ; DEF: 1-941 ; REF: 5021* 5045 5101* 5125 father_schema field disp:150, size:10 ; pointer ; DEF: 1-529 ; REF: 1174* 1177 2690 3518* 3537 3541 3566 3640 3644 fbegsearch var parameter of scaldecl, size:10 ; pointer ; DEF: 1023 ; REF: 1042 1046 fbegsearch var parameter of subrange, size:10 ; pointer ; DEF: 951 ; REF: 971 975 fbegsearch var parameter of checkdefiningpoint, size:10 ; pointer ; DEF: 780 ; REF: 807 812 fconst field disp:210, size:10 ; pointer ; DEF: 1-538 ; REF: 1212 1279* 1603 feltype field disp:200, size:10 ; pointer ; DEF: 1-555 ; REF: 1966* fentryname var var parameter of decodestring, size:40 ; packed array of (char) ; DEF: 3736 ; REF: 3878* 3897* ferr var var parameter of getamulticsid, size:4 ; boolean ; DEF: 3762 ; REF: 3853* 3863 ferrfound var var parameter of decodestring, size:4 ; boolean ; DEF: 3737 ; REF: 3879* 3889* 3901* 3914* 3917* 3921* 3925* 3925 3931 ferrno var parameter of typerr, size:4 ; integer ; DEF: 904 ; REF: 911 ffld var local to fieldlist, loc:222, size:10 ; pointer ; DEF: 1344 ; REF: 1727* 1730* 1731 1732* 1732 1739 fgenerator var var parameter of decodestring, size:40 ; packed array of (char) ; DEF: 3736 ; REF: 3878* 3906* 3920 fichinter var global imported, size:10 ; pointer ; DEF: 257 ; REF: 144 2868 2892 2927 fid var var parameter of getamulticsid, size:40 ; packed array of (char) ; DEF: 3762 ; REF: 3852* 3857* 3857 field const scalar, ord=5 ; DEF: 1-415 ; REF: 1-608 fieldlist proc of typedecl ; DEF: 1319 ; REF: 1720 1912 fieldsize var local to fieldlist, loc:162, size:4 ; integer ; DEF: 1341 ; REF: 1451* 1468* 1468 1473 1476 fieldtype var local to fieldlist, loc:204, size:10 ; pointer ; DEF: 1343 ; REF: 1451* 1456 1460 1475 1483 1484 1485 1486 1488 1501 1517 filelocation type scalar ; DEF: 1-437 ; REF: 1-598 filen field disp:0, size:4 ; integer ; DEF: 1-430 ; REF: 2349 2350 files const scalar, ord=9 ; DEF: 1-413 ; REF: 1-555 1214 1945 1949 2609 2629 2697 2907 3526 4483 filev var global, loc:16, size:124 ; array of (integer) ; DEF: 316 ; REF: 556* 2243 2319 2392 2395 4782* fillimit const numeric ; DEF: 1-17 ; REF: 283 4698 filpts var global exportable, size:630 ; array of (pointer) ; DEF: 283 ; REF: 167 2243 2320 2393 4702* filtop var global exportable, size:4 ; integer ; DEF: 285 ; REF: 168 556* 2243 2319 2392 2395* 4698 4701* 4701 4702 4782 findsemicolon proc of body ; DEF: 2165 ; REF: 4379 4491 4718 5080 5130 first field disp:40, size:10 ; pointer ; DEF: 1-943 ; REF: 5031* 5111* 5158* first_forbidden_id var global, loc:44, size:10 ; pointer ; DEF: 320 ; REF: 578* 579 585 4301 4314 4319 4414 4427 4432 first_in_block field disp:20, size:10 ; pointer ; DEF: 1-666 ; REF: 573* 747* 763 firstentry var parameter of body, size:10 ; pointer ; DEF: 2096 ; REF: 5164* firstfield field disp:140, size:10 ; pointer ; DEF: 1-614 ; REF: 1739* firstlabbox var global exportable, size:10 ; pointer ; DEF: 286 ; REF: 169 557* 558 559 4242 4243 4244 firstlabel field disp:100, size:10 ; pointer ; DEF: 1-948 ; REF: 4231 4232* 5032* 5112* fitemtype var parameter of createexternalbox, size:4 ; scalar ; DEF: 694 ; REF: 718 fkind var parameter of createexternalbox, size:4 ; scalar ; DEF: 695 ; REF: 718 fldaddr field disp:130, size:4 ; integer ; DEF: 1-609 ; REF: 1377 1382* 1382 1472* 1498* 1514* 1633* fldtype field disp:120, size:10 ; pointer ; DEF: 1-608 ; REF: 1376 1428* 1442* 1474 1475* 1501 1501* 1517 1517* 1532* 1633* fname field disp:0, size:10 ; pointer ; DEF: 1-633 ; REF: 4895* 5015* 5092* 5139* 5158 5166 fname var parameter of checkdefiningpoint, size:40 ; packed array of (char) ; DEF: 780 ; REF: 808 fname var parameter of createexternalbox, size:40 ; packed array of (char) ; DEF: 694 ; REF: 713 fname var parameter of checkexternalitem, size:40 ; packed array of (char) ; DEF: 634 ; REF: 658 665 fno var parameter of skipt, size:4 ; integer ; DEF: 887 ; REF: 895 898 fnoerr var parameter of valerror, size:4 ; integer ; DEF: 2558 ; REF: 2562 fonlyone var var parameter of decodestring, size:4 ; boolean ; DEF: 3737 ; REF: 3879* 3896* 3932 forbidden_id var global imported, size:40 ; packed array of (char) ; DEF: 225 ; REF: 113 4324* 4437* forbidden_id_list var global exportable, size:10 ; pointer ; DEF: 287 ; REF: 170 585* 4301* 4313 4414* 4426 form field disp:174, size:4 ; scalar ; DEF: 1-533 ; REF: 982 1049 1193 1197 1202 1204 1206 1376 1460 1483 1484 1488 1588 1591 1597 1668 1670 1674 1689 1861 1959 1988 2062 2066 2609 2674 2696 2705 2706 2718 2907 3175 3177 3274 3414 3415 3525 3526 4483 4502 4504 4928 4929 formal const scalar, ord=1 ; DEF: 1-406 ; REF: 3376 3459 3619 3632 formal_parameter_list field disp:130, size:10 ; pointer ; DEF: 1-519 ; REF: 1132 3541 3644 formals field disp:130, size:10 ; pointer ; DEF: 1-571 ; REF: 3431* 4955* 5087 formparm proc of body ; DEF: 2950 ; REF: 3394 4905 4942 forwdef const scalar, ord=1 ; DEF: 1-417 ; REF: 677 2448 4963 4976 5050 foundext var var parameter of checkexternalitem, size:10 ; pointer ; DEF: 634 ; REF: 662* 667* 674 675 676 677 683 fsbpointersize const numeric ; DEF: 1-305 ; REF: 1967 fsegname var var parameter of decodestring, size:40 ; packed array of (char) ; DEF: 3736 ; REF: 3878* 3883* 3888 3888 fstfld field disp:210, size:10 ; pointer ; DEF: 1-554 ; REF: 1935* fstix var local to body, loc:160, size:4 ; integer ; DEF: 2157 ; REF: 2324 2363 4205 4270 4742* fstopch var var parameter of getamulticsid, size:4 ; char ; DEF: 3762 ; REF: 3772* 3851* 3863 ftp type pointer ; DEF: 1-484 ; REF: 1-488 1-493 1-521 functionflag var global, loc:11, size:4 ; boolean ; DEF: 227 ; REF: 586* 2306 2423 functionvaluecheckplace const numeric ; DEF: 1-225 ; REF: 2379 fvextbox var var parameter of createexternalbox, size:10 ; pointer ; DEF: 695 ; REF: 723* fvnombofdim var var parameter of conformarray, size:4 ; integer ; DEF: 2984 ; REF: 3053* 3113* 3113 3144* 3144 3349 fwantdescs var var parameter of decodestring, size:4 ; boolean ; DEF: 3737 ; REF: 3881* 3913* gen_init_fsb_trap_structures proc level 0, imported ; DEF: 450 ; REF: 80 2393 genalfa proc level 0, imported ; DEF: 467 ; REF: 76 2766 2789 2820 2840 genbinarea proc level 0, imported ; DEF: 494 ; REF: 26 2890 genc proc level 0, imported ; DEF: 465 ; REF: 77 2464 2467 2473 2473 2489 2752 2772 2772 2774 2788 2807 2825 2825 2827 2835 2838 gencodfonct proc level 0, imported ; DEF: 461 ; REF: 78 2380 genentrypoint proc level 0, imported ; DEF: 511 ; REF: 28 2304 2421 5000 generic var local to valuedecl, loc:162, size:10 ; pointer ; DEF: 2550 ; REF: 2746* 2747 2747 2801* 2802 2802 generic var local to simpletype, loc:164, size:10 ; pointer ; DEF: 944 ; REF: 1141* 1142 1142 1149 generrorlink proc level 0, imported ; DEF: 535 ; REF: 34 2920 genexportfile proc level 0, imported ; DEF: 453 ; REF: 29 2619 genextvariable proc level 0, imported ; DEF: 472 ; REF: 27 2867 2925 geninputlink proc level 0, imported ; DEF: 533 ; REF: 35 2916 geninsertion proc level 0, imported ; DEF: 460 ; REF: 79 2366 genmulticsnil proc level 0, imported ; DEF: 452 ; REF: 81 2627 genoutputlink proc level 0, imported ; DEF: 534 ; REF: 36 2918 genpgexit proc level 0, imported ; DEF: 455 ; REF: 82 2384 genprcentry proc level 0, imported ; DEF: 456 ; REF: 83 2237 genprcexit proc level 0, imported ; DEF: 462 ; REF: 84 2385 genprolog proc level 0, imported ; DEF: 454 ; REF: 85 2233 genr proc level 0, imported ; DEF: 464 ; REF: 86 2481 2760 2814 genreltext proc level 0, imported ; DEF: 449 ; REF: 30 2437 2437 2444 genstand proc level 0, imported ; DEF: 451 ; REF: 87 2300 2311 2379 genstring proc level 0, imported ; DEF: 466 ; REF: 88 2500 getamulticsid proc of decodestring ; DEF: 3762 ; REF: 3883 3897 3906 3911 getpr4afterstop var global exportable, size:4 ; boolean ; DEF: 288 ; REF: 171 587* 2310 globdescriptors var global, loc:47, size:4 ; boolean ; DEF: 323 ; REF: 555* 3390 3391* 3428 3429* 3478* 3521* 3685 4958 globnbpar var global, loc:46, size:4 ; integer ; DEF: 321 ; REF: 3383* 3383 3388 3389* 3421* 3421 3426 3427* 3462* 3462 3637 3650 3673 3681 3686 4902* 4939* 4957 half_wd field disp:0, size:10 ; array of (numeric -131072..131071) ; DEF: 2283 ; REF: 2442 halfword type integer ; DEF: 1-809 ; REF: 1-810 hdrfil field disp:120, size:4 ; integer ; DEF: 1-950 ; REF: 2226 5035* 5115* hdrfile var global exportable, size:4 ; integer ; DEF: 290 ; REF: 172 4822* 5035 5115 hdrind field disp:124, size:4 ; integer ; DEF: 1-950 ; REF: 2225 5036* 5116* hdrindex var global exportable, size:4 ; integer ; DEF: 291 ; REF: 173 4823* 4949 5036 5074 5116 hdrlen field disp:130, size:4 ; integer ; DEF: 1-950 ; REF: 5037* 5117* hdrlength var global exportable, size:4 ; integer ; DEF: 292 ; REF: 174 4949* 5037 5074* 5117 hdrlin field disp:134, size:4 ; integer ; DEF: 1-950 ; REF: 2227 5034* 5114* hdrline var global exportable, size:4 ; integer ; DEF: 293 ; REF: 175 4824* 5034 5114 heaperror proc level 0, imported ; DEF: 422 ; REF: 52 558 562 710 4223 4238 4462 hi field disp:230, size:4 ; integer ; DEF: 1-549 ; REF: 1837* 1875 1879* high const scalar, ord=3 ; DEF: 1-624 ; REF: 681 834 1766 3342 3860 3928 4046 4061 4156 4170 4268 4382 4471 4532 4812 5133 highbound var var parameter of subrange, size:4 ; integer ; DEF: 950 ; REF: 999* 1000 1014 hightype var local to subrange, loc:154, size:10 ; pointer ; DEF: 966 ; REF: 989* 990 993 994 995 hname field disp:0, size:40 ; packed array of (char) ; DEF: 331 ; REF: 2053* 4482 4488* 4488 4498 4507* 4507 4525 4526 i var local to typepartdecl, loc:157, size:4 ; integer ; DEF: 4410 ; REF: 4480* 4481 i var local to labelpartdecl, loc:140, size:4 ; integer ; DEF: 4198 ; REF: 4205* 4206 i var local to valuedecl, loc:152, size:4 ; integer ; DEF: 2548 ; REF: 2730* 2734 2736* 2798* 2912* 2912* 2922 2926 i var local to fieldlist, loc:154, size:4 ; integer ; DEF: 1341 ; REF: 1470* 1489* 1508* 1530* 1645* 1708* 1708 1734* 1734 i1 var local to scaldecl, loc:144, size:4 ; integer ; DEF: 1036 ; REF: 1068* 1069* 1073 i2 var local to scaldecl, loc:145, size:4 ; integer ; DEF: 1036 ; REF: 1071* 1072* 1073 ic var global imported, size:4 ; integer ; DEF: 258 ; REF: 145 746 767 2206 2212 2251 2293 2304 2420 2429 2467 2511 ic_from field disp:0, size:4 ; integer ; DEF: 1-651 ; REF: 766* 2344 4228* ic_to field disp:4, size:4 ; integer ; DEF: 1-651 ; REF: 767* 2345 4229* icmpc const scalar, ord=513 ; DEF: 1-754 ; REF: 1-782 iderr var local to decodestring, loc:155, size:4 ; boolean ; DEF: 3756 ; REF: 3880* 3885* 3891* 3899* 3908* 3925 3930 idkinds type scalar ; DEF: 1-406 ; REF: 1-452 1-572 1-597 342 695 2154 idklass type scalar ; DEF: 1-415 ; REF: 1-515 339 idprocdef type scalar ; DEF: 1-417 ; REF: 1-590 343 2155 idv3d const scalar, ord=539 ; DEF: 1-757 ; REF: 1-782 ieaa const scalar, ord=0 ; DEF: 1-679 ; REF: 1-781 iepp4 const scalar, ord=323 ; DEF: 1-723 ; REF: 2311 imported const scalar, ord=4 ; DEF: 1-406 ; REF: 2405 2611 2664 2912 3992 3997 4687 4872 4977 4978 importpartdecl proc of body ; DEF: 3700 ; REF: 4765 importproc const scalar, ord=5 ; DEF: 1-442 ; REF: 4886 importvar const scalar, ord=3 ; DEF: 1-441 ; REF: 4627 incbloc type scalar ; DEF: 1-462 ; REF: 1-585 inconst proc level 0, imported ; DEF: 406 ; REF: 37 975 989 1140 2730 2736 2798 4340 index var local to decodestring, loc:154, size:4 ; integer ; DEF: 3755 ; REF: 3779* 3779 3780 3785 3792* 3792 3793 3795 3801* 3801 3802 3807 3829* 3829 3830 3834 3844* 3844 3845 3847 3863 3880* index var local to leavebody, loc:223, size:4 ; integer ; DEF: 2286 ; REF: 2348* 2350* 2350 2352* 2352 2353* 2353 2354 2355 indexflag var local to typedecl, loc:146, size:4 ; boolean ; DEF: 878 ; REF: 1007 1196 1221 1234 1790* 1812* 1840* indfich var global imported, size:4 ; integer ; DEF: 259 ; REF: 146 2457 2501 2623* 2868 2873* infich proc level 0, imported ; DEF: 463 ; REF: 89 2432 2433 2435 2436 2442 2501 init_fsb_trap_flag var global imported, size:4 ; boolean ; DEF: 226 ; REF: 114 2391 4115* initiozone proc level 0, imported ; DEF: 468 ; REF: 90 2243 inserundlab proc level 0, imported ; DEF: 414 ; REF: 38 2462 2472 2480 2488 2499 instword type scalar ; DEF: 1-679 ; REF: 1-781 1-782 1-783 1-784 insymbol proc level 0, imported ; DEF: 403 ; REF: 39 898 986 1134 1139 1157 1165 1218 1250 1274 1302 1432 1435 1447 1542 1551 1559 1572 1580 1643 1650 1709 1712 1715 1719 1721 1746 1793 1805 1810 1824 1847 1854 1856 1906 1942 1951 1953 1976 1978 2016 2058 2060 2181 2566 2598 2642 2650 2670 2672 2730 2736 2795 2850 2852 2857 3069 3083 3096 3117 3128 3149 3157 3206 3246 3248 3255 3257 3367 3387 3394 3395 3399 3423 3441 3464 3467 3471 3474 3579 3588 3955 3970 3975 4010 4012 4029 4034 4043 4113 4135 4138 4154 4201 4257 4260 4266 4302 4321 4325 4337 4415 4434 4438 4574 4632 4635 4651 4831 4897 4905 4907 4913 4935 4942 4945 4951 4980 5063 5069 5073 5078 5080 5148 int18 const numeric ; DEF: 1-330 ; REF: 2437 int_const_token const scalar, ord=2 ; DEF: 1-491 ; REF: 1-497 intptr var global imported, size:10 ; pointer ; DEF: 228 ; REF: 115 1592 1670 2720 2723 2750 2758 2805 2813 invalue var local to valuedecl, loc:143, size:4 ; boolean ; DEF: 2547 ; REF: 2598* 2599* 2633 2643* 2648* 2852* 2857* inxtype field disp:210, size:10 ; pointer ; DEF: 1-546 ; REF: 1837* 3194* irpd const scalar, ord=540 ; DEF: 1-759 ; REF: 1-783 irpt const scalar, ord=542 ; DEF: 1-759 ; REF: 1-783 irrelsy const scalar, ord=0 ; DEF: 1-669 ; REF: 362 365 367 369 371 373 375 377 379 381 383 386 388 390 392 898 istand type scalar subrange ; DEF: 1-781 ; REF: 451 istba const scalar, ord=543 ; DEF: 1-761 ; REF: 1-784 istcq const scalar, ord=546 ; DEF: 1-761 ; REF: 1-784 iswd const scalar, ord=510 ; DEF: 1-752 ; REF: 1-781 it var local to getamulticsid, loc:163, size:4 ; integer ; DEF: 3769 ; REF: 3856* 3857 3857 it var local to formparm, loc:140, size:4 ; integer ; DEF: 2970 ; REF: 3483* 3558* 3571* it var local to conformarray, loc:142, size:4 ; integer ; DEF: 3028 ; REF: 3309* 3312 3313 3324* 3330* it var local to valuedecl, loc:154, size:4 ; integer ; DEF: 2548 ; REF: 2752* 2760* 2766* 2770* 2786* 2827* it var local to leavebody, loc:140, size:4 ; integer ; DEF: 2275 ; REF: 2319* 2320 2324* 2325 2392* 2393 2439* 2442 2489* 2489 it var local to enterbody, loc:140, size:4 ; integer ; DEF: 2201 ; REF: 2243* 2243 it var local to fieldlist, loc:156, size:4 ; integer ; DEF: 1341 ; REF: 1672* 1676* 1680* 1680* 1680 1681 1688* 1692 1694* 1695 1706 it var local to simpletype, loc:173, size:4 ; integer ; DEF: 945 ; REF: 1177* 1178 1180* 1180 iter var local to leavebody, loc:222, size:4 ; integer ; DEF: 2286 ; REF: 2342* 2343 itisproc var local to formparm, loc:152, size:4 ; boolean ; DEF: 2972 ; REF: 3367* 3397 itisstring var local to valuedecl, loc:142, size:4 ; boolean ; DEF: 2547 ; REF: 2673* 2682* 2700 itisvar var local to formparm, loc:153, size:4 ; boolean ; DEF: 2972 ; REF: 3440* 3442* 3459 3510 3512* 3526 3529* 3565 itsp3 const scalar, ord=389 ; DEF: 1-733 ; REF: 2300 2379 iunresolv type record ; DEF: 1-828 ; REF: 1-824 ival var global imported, size:4 ; integer ; DEF: 229 ; REF: 116 1687* 1687 1688 4206 4211 4219 4226 4245 j var local to typepartdecl, loc:160, size:4 ; integer ; DEF: 4410 ; REF: 4495* 4496 4522* 4525 4526 k var local to fieldlist, loc:241, size:4 ; integer ; DEF: 1347 ; REF: 1695* 1696 1696 1697 1699 klass field disp:110, size:4 ; scalar ; DEF: 1-515 ; REF: 676 1083* 1124 1190 1220 1586 1666 2033 2035 2061 2066 2403 2606 2655 2904 3172 3271 3409 3506 3523 3617 3629 4501 4504 4841 4924 konst const scalar, ord=2 ; DEF: 1-415 ; REF: 1-564 1220 1666 kt var local to valuedecl, loc:155, size:4 ; integer ; DEF: 2548 ; REF: 2774* lab_pdl_element type record ; DEF: 1-664 ; REF: 1-663 lab_pdl_ptr type pointer ; DEF: 1-663 ; REF: 1-665 294 lab_pdl_top var global exportable, size:10 ; pointer ; DEF: 294 ; REF: 182 570* 571 734 736 737 739 743* 743 744 761 772 773* 773 labbox field disp:30, size:10 ; pointer ; DEF: 1-661 ; REF: 2336 4221* 4222* 4223 4224 4232 4243 4250 labch1 field disp:14, size:4 ; integer ; DEF: 1-660 ; REF: 4220* labdef field disp:20, size:4 ; integer ; DEF: 1-660 ; REF: 2326 2335 4220* labdescr type record ; DEF: 1-659 ; REF: 295 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 286 758 4199 labelpartdecl proc of body ; DEF: 4181 ; REF: 4771 labexit field disp:10, size:4 ; integer ; DEF: 1-660 ; REF: 2334 2335 4220* lablev field disp:4, size:4 ; integer ; DEF: 1-660 ; REF: 4219* labtab var global exportable, size:3100 ; array of (record) ; DEF: 295 ; REF: 177 2325 2326 2329 2330 2334 2335 2335 2336 2348 4206 4217 4219* 4219* 4220* 4220* 4220* 4221* 4222* 4223 4224 4232 4243 4250 labval field disp:0, size:4 ; integer ; DEF: 1-660 ; REF: 2329 2330 2348 4206 4219* lastfld var local to typedecl, loc:176, size:10 ; pointer ; DEF: 880 ; REF: 1369 1373 1375 1502* 1518* 1629* 1909* lastproc var global imported, size:10 ; pointer ; DEF: 230 ; REF: 117 4745 4746* lbp var local to pop_lab_pdl, loc:140, size:10 ; pointer ; DEF: 758 ; REF: 763* 764 766 767 768* 768 lc var global exportable, size:4 ; integer ; DEF: 298 ; REF: 178 588* 2206 2234* 2245* 2245 2246 2246 2887 2891 2939 3360 3379 3380* 3380 3481* 3481 3481 3533* 3533 3533 3686* 3686 3690 4570 4665* 4665 4666 4672* 4723 4799 4898 4899* 4909* 4909 4910 4943 5085* 5086* 5086 5128* 5141 5161 lca var local to body, loc:144, size:4 ; integer ; DEF: 2151 ; REF: 2233* 2237* 2293 2365 2366 lcad var local to typedecl, loc:153, size:4 ; integer ; DEF: 879 ; REF: 1858* 1894 1910* 1922 1954* 1973 1979* 2007 lcad var local to fieldlist, loc:153, size:4 ; integer ; DEF: 1341 ; REF: 1448* 1539 lcaux var local to formparm, loc:143, size:4 ; integer ; DEF: 2970 ; REF: 3481* 3482 3489* 3489 3490 3533* 3562* 3562 3563 lcond const scalar, ord=1 ; DEF: 1-812 ; REF: 1-908 lcsave var global imported, size:4 ; integer ; DEF: 266 ; REF: 153 2246* lcstpt type pointer ; DEF: 1-826 ; REF: 1-841 262 lctop var local to formparm, loc:161, size:4 ; integer ; DEF: 2977 ; REF: 3056* 3482* lctp var local to formparm, loc:164, size:10 ; pointer ; DEF: 2979 ; REF: 3515* 3516 3520 lctp var local to simpletype, loc:162, size:10 ; pointer ; DEF: 944 ; REF: 1146* 1147 1152 1176* 1181* 1181 1183 lctp1 var local to formparm, loc:166, size:10 ; pointer ; DEF: 2980 ; REF: 3541* 3542 3544 3545 3553* 3553 3644* 3645 3647 3648 3661* 3661 lctp2 var local to formparm, loc:170, size:10 ; pointer ; DEF: 2980 ; REF: 3544* 3545 3546 3547 3548 3551 3552 3554 3647* 3648 3649 3650 3651 3652 3653 3659 3660 3662 lctp3 var local to formparm, loc:172, size:10 ; pointer ; DEF: 2980 ; REF: 3552 3554* 3660 3662* leavebody proc of body ; DEF: 2259 ; REF: 5156 lerr var local to leavebody, loc:142, size:4 ; boolean ; DEF: 2276 ; REF: 2323* 2331* 2362 lerr var local to typedecl, loc:147, size:4 ; boolean ; DEF: 878 ; REF: 1825* 1834 1858* 1891 1910* 1920 1955* 1965 1979* 1987 lerr var local to fieldlist, loc:147, size:4 ; boolean ; DEF: 1340 ; REF: 1449* 1538 lerr var local to simpletype, loc:146, size:4 ; boolean ; DEF: 941 ; REF: 1118* 1229 1233* 1237 1242* 1303 level var global imported, size:4 ; numeric 0..20 ; DEF: 231 ; REF: 118 2036 2231 2243 2298 2319 2372* 2374 2383 2391 2395 3948 4107 4219 4593 4703 4740 4748 4754* 4781 4782 4789 4826 4828 4829* 4829 4834* 5012 5089 5129* 5140 5165 levrange type numeric 0..20 ; DEF: 1-418 ; REF: 1-526 1-558 1-573 1-581 1-601 1-636 1-855 231 316 levtrace type scalar ; DEF: 1-624 ; REF: 281 lextpt var local to body, loc:170, size:10 ; pointer ; DEF: 2159 ; REF: 4827* 4855* 4856 4859 4863 4867 4867 4868 4869 4869 4871 4873 4886 4887 4892 lextpt var local to varpartdecl, loc:144, size:10 ; pointer ; DEF: 4562 ; REF: 4592* 4595* 4596 4601 4601 4602 4603 4603 4605 4608 4610 4614 4619 4623 4627 lfirstentry var local to body, loc:156, size:10 ; pointer ; DEF: 2156 ; REF: 5017* 5041 5097* 5121 lfpt var local to typedecl, loc:206, size:10 ; pointer ; DEF: 881 ; REF: 1956* 1957 1959 1966 lgparm const numeric ; DEF: 1-23 ; REF: 1-24 lh var local to typedecl, loc:152, size:4 ; integer ; DEF: 879 ; REF: 1800* 1826* 1832* 1837 li var local to typedecl, loc:151, size:4 ; integer ; DEF: 879 ; REF: 1800* 1826* 1832* 1837 liactual var local to varpartdecl, loc:146, size:4 ; integer ; DEF: 4563 ; REF: 4577* 4617* 4617 4663 4665 4673 lic var local to body, loc:145, size:4 ; integer ; DEF: 2151 ; REF: 2212* 2233* 2237* 2293 2335 2505 liexport var local to varpartdecl, loc:150, size:4 ; integer ; DEF: 4563 ; REF: 4577* 4622* 4622 liimport var local to varpartdecl, loc:147, size:4 ; integer ; DEF: 4563 ; REF: 4577* 4626* 4626 linen field disp:4, size:4 ; integer ; DEF: 1-430 ; REF: 2351 2352 2353 linkage const scalar, ord=2 ; DEF: 1-623 ; REF: 2615 2668 2861 linktoend var global imported, size:4 ; boolean ; DEF: 268 ; REF: 154 2301 linktoendplace var global imported, size:4 ; integer ; DEF: 269 ; REF: 155 2304 listyes var global imported, size:4 ; boolean ; DEF: 232 ; REF: 119 4308 4335 4489 liunresolv type record ; DEF: 1-838 ; REF: 1-825 lkc var global exportable, size:4 ; integer ; DEF: 300 ; REF: 179 589* 2615 2616* 2616 2863 2864* 2864 2910 2910* 2910 2939 4988 4989* 4989 4992* 4992 4998 4999* 4999 llast var local to fieldlist, loc:151, size:4 ; boolean ; DEF: 1340 ; REF: 1450* 1455 llcstpt type pointer ; DEF: 1-827 ; REF: 1-846 263 lliunresolv type record ; DEF: 1-843 ; REF: 1-824 llnext field disp:50, size:10 ; pointer ; DEF: 1-846 ; REF: 2490 llplace field disp:40, size:4 ; integer ; DEF: 1-845 ; REF: 2488 llvalu field disp:0, size:40 ; array of (integer) ; DEF: 1-844 ; REF: 2489 lmax var local to scaldecl, loc:143, size:4 ; integer ; DEF: 1035 ; REF: 1046* 1054 1055 1070 1071 1072 1074 1089 lmin var local to scaldecl, loc:142, size:4 ; integer ; DEF: 1035 ; REF: 1046* 1055 1067 1068 1069 1074 1089 lnext field disp:50, size:10 ; pointer ; DEF: 1-841 ; REF: 2474 lnext var local to simpletype, loc:156, size:10 ; pointer ; DEF: 944 ; REF: 1136* 1150 1152* 1167 1175 1176 lno var local to body, loc:161, size:4 ; integer ; DEF: 2157 ; REF: 4826* 4900 5057 5059 lo field disp:224, size:4 ; integer ; DEF: 1-549 ; REF: 1837* 1875 1879* locad var local to formparm, loc:160, size:4 ; integer ; DEF: 2976 ; REF: 3610* 3634* 3650 3673 localfile const scalar, ord=3 ; DEF: 1-437 ; REF: 4708 loccounter var local to formparm, loc:157, size:4 ; integer ; DEF: 2975 ; REF: 3609* 3622* 3622 3634* 3634 3681 locdata var local to varpartdecl, loc:142, size:4 ; integer ; DEF: 4561 ; REF: 4573* 4666* 4668 4673* 4684* 4684 4685 locdescs var local to decodestring, loc:160, size:40 ; packed array of (char) ; DEF: 3759 ; REF: 3877* 3911* 3912 locended var local to formparm, loc:156, size:4 ; boolean ; DEF: 2974 ; REF: 3609* 3611 3613* 3620* 3630* 3679* 3682* locentryname var local to body, loc:202, size:40 ; packed array of (char) ; DEF: 2160 ; REF: 2414* 2417* 2422 locentryname var local to importpartdecl, loc:153, size:40 ; packed array of (char) ; DEF: 3727 ; REF: 3963* 4005 4006 locerr var local to body, loc:166, size:4 ; boolean ; DEF: 2158 ; REF: 4837* 4844* 4853 locerr var local to varpartdecl, loc:151, size:4 ; boolean ; DEF: 4564 ; REF: 4581* 4586* 4593 locerr var local to decodestring, loc:156, size:4 ; boolean ; DEF: 3757 ; REF: 3880* 3883* 3884 3897* 3898 3906* 3907 3911* locerr var local to getamulticsid, loc:151, size:4 ; boolean ; DEF: 3766 ; REF: 3775* 3782* 3794* 3804* 3818 3825* 3832* 3853 locerrfound var local to importpartdecl, loc:175, size:4 ; boolean ; DEF: 3731 ; REF: 3964* 3965 locgenerator var local to importpartdecl, loc:163, size:40 ; packed array of (char) ; DEF: 3728 ; REF: 3963* 4003 loci var local to getamulticsid, loc:152, size:4 ; integer ; DEF: 3767 ; REF: 3797* 3822* 3822 3823 3828 3864 locid var local to getamulticsid, loc:153, size:40 ; packed array of (char) ; DEF: 3768 ; REF: 3797* 3828* 3852 locintext var local to leavebody, loc:150, size:4 ; integer ; DEF: 2279 ; REF: 2420* 2420* 2421 loconlyone var local to importpartdecl, loc:174, size:4 ; boolean ; DEF: 3730 ; REF: 3964* locpt var local to typedecl, loc:204, size:10 ; pointer ; DEF: 881 ; REF: 1964* 1965 locreturncode var local to body, loc:165, size:4 ; integer ; DEF: 2157 ; REF: 5001* 5002 locreturncode var local to valuedecl, loc:177, size:4 ; integer ; DEF: 2552 ; REF: 2619* 2620 2869* 2870 2893* 2894 2916* 2918* 2920* 2928* 2930 locreturncode var local to leavebody, loc:143, size:4 ; integer ; DEF: 2277 ; REF: 2307* 2308 2424* 2425 locsamestring var local to importpartdecl, loc:176, size:4 ; integer ; DEF: 3732 ; REF: 3968* 4002* 4002 locsegname var local to body, loc:172, size:40 ; packed array of (char) ; DEF: 2160 ; REF: 2413* 2417* 2422 locsegname var local to importpartdecl, loc:143, size:40 ; packed array of (char) ; DEF: 3726 ; REF: 3963* 4001 locwantdescs var local to importpartdecl, loc:173, size:4 ; boolean ; DEF: 3729 ; REF: 3963* 4004 longalfbox const numeric ; DEF: 1-22 ; REF: 1-422 longchaine var global imported, size:4 ; integer ; DEF: 233 ; REF: 120 3780 3793 3802 3830 3845 longparam var global, loc:50, size:4 ; integer ; DEF: 324 ; REF: 4899* 4910* 4943* 4948 longstring var global imported, size:4 ; integer ; DEF: 234 ; REF: 121 2764 2765* 2779 2784 2785* 2818 2819* 2832 2838 2839* low const scalar, ord=1 ; DEF: 1-624 ; REF: 1011 1096 1307 1388 1764 2082 2249 2509 2937 3688 4721 4756 5172 low var parameter of getamulticsid, size:4 ; boolean ; DEF: 3762 ; REF: 3855 lowbound var var parameter of subrange, size:4 ; integer ; DEF: 950 ; REF: 984* 1000 1013 lowtype var local to subrange, loc:152, size:10 ; pointer ; DEF: 966 ; REF: 975* 977 978 979 980 981 982 990 lp var local to body, loc:152, size:10 ; pointer ; DEF: 2156 ; REF: 5162* 5163 5163 lp var local to varpartdecl, loc:152, size:10 ; pointer ; DEF: 4565 ; REF: 4588* 4589 4601 4603 4608 4617 4619 4620 4628 4631 lp var local to typepartdecl, loc:150, size:10 ; pointer ; DEF: 4407 ; REF: 4447* 4448 4453 4455 lp var local to constpartdecl, loc:152, size:10 ; pointer ; DEF: 4295 ; REF: 4331* 4332 4344* 4345 4352* 4353 4360* 4361 4363 4365* 4368 4371 4376 4378 lp var local to formparm, loc:144, size:10 ; pointer ; DEF: 2971 ; REF: 3373* 3374 3376 3384 3402 3422 3426 3428 3430 3431 3456* 3457 3461 3482* 3485 3487 3490 3491 3493* 3493 3534* 3563 3565 3567 3568* 3568 3570* 3573 3574* 3574 3602* 3603 3605 3605* 3605 3609* 3612 3614 3624 3626* 3667 3669* 3675 3677* lp var local to conformarray, loc:144, size:10 ; pointer ; DEF: 3030 ; REF: 3104* 3105 3111 3112 3136* 3137 3143 3145 3190* 3191 3200 3201 3202 3203 3285* 3286 3289 3290 3291* 3291 3308* 3310 3312 3313 3314* 3314 3323* 3326 3327* 3327 lp var local to leavebody, loc:144, size:10 ; pointer ; DEF: 2278 ; REF: 2400* 2401 2402 2429 2435 2438 2454* 2456* 2493* 2494 2495 2500 2503 2503* lp var local to typedecl, loc:164, size:10 ; pointer ; DEF: 880 ; REF: 1816* 1817 1823 1883* 1888 1897* 1898 1902 1929* 1929 1929 1929 1945* 1946 1964 1966 1967 1969 1971 1992* 1993 2003 2005 2006 2007 2022* 2023 2051 2053 2054 2054 2055 2060 2068 2068 2069 2075 2077 lp var local to fieldlist, loc:174, size:10 ; pointer ; DEF: 1343 ; REF: 1423* 1424 1428 1429 1430 1472* 1472 1473 1474 1475 1478 1501* 1501 1501 1502 1504 1517* 1517 1517 1518 1520 1564* 1565 1569 1570 1629 1631 1636 1703* 1704 1708 1750* 1751 1757 1759 lp var local to simpletype, loc:150, size:10 ; pointer ; DEF: 943 ; REF: 1243* 1244 1248 1263* 1264 1267 1267 1269 1269 1272 1287* 1288 1297 1299 lp var local to scaldecl, loc:146, size:10 ; pointer ; DEF: 1037 ; REF: 1051* 1052 1064* 1065 1081 1087 1090 1091 1092 lp1 var local to formparm, loc:146, size:10 ; pointer ; DEF: 2971 ; REF: 3605* 3606 3606 lpaux var local to leavebody, loc:146, size:10 ; pointer ; DEF: 2278 ; REF: 2503* 2503 2503 lplace field disp:40, size:4 ; integer ; DEF: 1-840 ; REF: 2472 lpp var local to fieldlist, loc:176, size:10 ; pointer ; DEF: 1343 ; REF: 1726* 1736 1736 1741 1743* lpp var local to scaldecl, loc:150, size:10 ; pointer ; DEF: 1037 ; REF: 1046* 1049 1056 lprockind var local to body, loc:150, size:4 ; scalar ; DEF: 2154 ; REF: 4857* 4859* 4862* 4872 4890 lsize var local to fieldlist, loc:155, size:4 ; integer ; DEF: 1341 ; REF: 1485* 1486* 1492 1496 1500 1514 1516 1516 1624* 1627* 1628 1633 1638 lt var local to typedecl, loc:166, size:10 ; pointer ; DEF: 880 ; REF: 1826* 1832* 1837 ltyp var local to simpletype, loc:154, size:10 ; pointer ; DEF: 943 ; REF: 1248* 1266 1277 1284 1284 1285 1295 1297 1299 lval const scalar, ord=2 ; DEF: 1-812 ; REF: 1-887 lvalu field disp:0, size:40 ; array of (integer) ; DEF: 1-839 ; REF: 2473 2473 majmin var global imported, size:1000 ; array of (integer) ; DEF: 235 ; REF: 122 3857 mapswitch var global imported, size:4 ; boolean ; DEF: 255 ; REF: 123 2222 2238 2247 2297 2312 2368 2386 2506 4820 max var local to fieldlist, loc:237, size:4 ; integer ; DEF: 1347 ; REF: 1589* 1594* 1600* 1603* 1609 1611* 1696 1748 maxctp var global exportable, size:10 ; pointer ; DEF: 301 ; REF: 180 5163 5163* 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 maxglobsize const numeric ; DEF: 1-71 ; REF: 4799 maxident const numeric ; DEF: 1-26 ; REF: 1-399 3823 3856 maxint const numeric ; DEF: 1-84 ; REF: 4229 maxlabs const numeric ; DEF: 1-16 ; REF: 295 4213 maxlevel const numeric ; DEF: 1-18 ; REF: 1-418 4828 maxno const numeric ; DEF: 1-13 ; REF: 1-434 1-621 maxref const numeric ; DEF: 1-38 ; REF: 1-429 maxset const numeric ; DEF: 1-93 ; REF: 1346 1609 1611 1989 maxsize var var parameter of fieldlist, size:4 ; integer ; DEF: 1319 ; REF: 1548* 1641* 1745* 1745 1753 1771 maxsliceline const numeric ; DEF: 1-101 ; REF: 1-102 maxval const numeric ; DEF: 1-33 ; REF: 209 maxwseg const numeric ; DEF: 1-73 ; REF: 1-973 message var local to leavebody, loc:161, size:204 ; array of (char) ; DEF: 2285 ; REF: 2348* 2350* 2352* 2353* 2354 2355 minno const numeric ; DEF: 1-12 ; REF: 1-434 1-621 minsize var local to fieldlist, loc:157, size:4 ; integer ; DEF: 1341 ; REF: 1641* 1641 1719 1724 monormod const scalar, ord=7 ; DEF: 1-412 ; REF: 1-557 motypes type scalar ; DEF: 1-459 ; REF: 1-557 mpcogerr var global imported ; text ; DEF: 236 ; REF: 124 2329 2355 4514 4526 mpcogout var global imported ; text ; DEF: 237 ; REF: 125 610 611 613 616 618 620 623 657 683 806 836 895 971 1013 1042 1098 1110 1309 1368 1390 1401 1768 1771 1783 2084 2206 2251 2293 2330 2354 2451 2511 2574 2939 3046 3221 3222 3344 3349 3360 3690 3862 3930 3932 3945 4048 4063 4101 4158 4172 4270 4384 4473 4513 4525 4534 4570 4723 4737 4758 4814 5135 5174 mxl var local to fieldlist, loc:161, size:4 ; integer ; DEF: 1341 ; REF: 1720* 1724* 1738 1745 name field disp:20, size:40 ; packed array of (char) ; DEF: 1-404 ; REF: 583* 4315 4428 name field disp:0, size:40 ; packed array of (char) ; DEF: 1-508 ; REF: 978 994 1083* 1146 2451 2619 2867 2915 2917 2919 3515 3544 3647 4445 4460* 4513 4514 name field disp:0, size:40 ; packed array of (char) ; DEF: 2282 ; REF: 2438* name_token const scalar, ord=1 ; DEF: 1-491 ; REF: 1-496 nameisref proc level 0, imported ; DEF: 416 ; REF: 40 816 979 995 1126 1192 1225 1258 1418 1585 1664 2032 2065 2661 3171 3270 3408 3450 3505 4308 4335 4421 4489 4585 4601 4603 4843 4867 4869 4923 4966 5052 nbfield var local to fieldlist, loc:152, size:4 ; integer ; DEF: 1341 ; REF: 1413* 1428 1430* 1430 1468 1470 1489 1508 1530 nbitem var local to valuedecl, loc:150, size:4 ; integer ; DEF: 2548 ; REF: 2723* 2724* 2725* 2726* 2739 nbofdim var local to formparm, loc:162, size:4 ; integer ; DEF: 2978 ; REF: 3477* 3483 nbofdim var local to conformarray, loc:164, size:4 ; integer ; DEF: 3038 ; REF: 3054* 3204* 3204 3309 nbpack var local to valuedecl, loc:146, size:4 ; integer ; DEF: 2548 ; REF: 2673* 2678* 2678 2679 2699 nbpar var local to formparm, loc:141, size:4 ; integer ; DEF: 2970 ; REF: 3047 3317 3324 3330 3445* 3455* 3455 3481 3483 3533 3558 3571 nbparproc field disp:160, size:4 ; integer ; DEF: 1-574 ; REF: 3426* 4957* 4995 negative var local to fieldlist, loc:242, size:4 ; boolean ; DEF: 1348 ; REF: 1649* 1652* 1674 1680 1687 nestproc var local to body, loc:164, size:4 ; integer ; DEF: 2157 ; REF: 3360 3377 3385* 3385 3430 3433* 3433 3479 3531 3560 3684 3690 4905* 4942* next field disp:10, size:10 ; pointer ; DEF: 1-403 ; REF: 582* next field disp:10, size:10 ; pointer ; DEF: 1-644 ; REF: 561* 562 564 566* 4227* 4242* 4242 4243* 4245 4247* 4247 4248 4249* 4249 4249 4250* next field disp:10, size:10 ; pointer ; DEF: 1-665 ; REF: 576* 734 736* 737 740* 743 next var global imported, size:10 ; pointer ; DEF: 238 ; REF: 126 989 1111 1119 1140 1166 1167* 1169* 1235 1236 1256 1267* 1269* 1279 1555 1575 1661 2030 2400 2574 2582 2584 2587 2588 2589* 2592 2601 2603 2653 2730 2736 2798 3047 3060 3103 3111* 3135 3143* 3164 3185 3186 3223 3263 3335 3336* 3361 3370 3384* 3386 3386* 3431 3432* 3447 3461* 3482 3534 3570 3602 3602* 3606 3606* 3609 3691 4305 4340 4378* 4418 4455* 4460 4468* 4474 4489 4570 4579 4582 4631* 4646 4838 4896* 4955 4975* 5015 5087* 5092 5139 5166* next_for_schema field disp:120, size:10 ; pointer ; DEF: 1-518 ; REF: 1136 next_in_block field disp:100, size:10 ; pointer ; DEF: 1-653 ; REF: 768 4230* nextalf var global exportable, size:10 ; pointer ; DEF: 303 ; REF: 181 2221* 2493 nextline proc level 0, imported ; DEF: 412 ; REF: 41 610 610 612 615 617 619 622 623 623 658 684 809 837 895 972 1015 1043 1100 1113 1311 1370 1391 1401 1769 1773 1786 2086 2207 2251 2294 2328 2330 2354 2450 2451 2511 2575 2940 3048 3221 3225 3348 3350 3361 3692 3865 3931 3933 3945 4049 4064 4102 4159 4174 4271 4384 4475 4512 4515 4524 4527 4534 4570 4723 4737 4758 4814 5135 5174 nextproc field disp:110, size:10 ; pointer ; DEF: 1-949 ; REF: 4745* 5025* 5105* nextref field disp:0, size:10 ; pointer ; DEF: 1-427 ; REF: 2358 4240* 4465* nilptr var global imported, size:10 ; pointer ; DEF: 239 ; REF: 127 4334 4335 nitem var local to valuedecl, loc:153, size:4 ; integer ; DEF: 2548 ; REF: 2728* 2738* 2738 2739 nmax field disp:210, size:4 ; integer ; DEF: 1-535 ; REF: 1074* 1207 1594 nmin field disp:204, size:4 ; integer ; DEF: 1-535 ; REF: 1074* 1207 1594 1594 no var global imported, size:4 ; integer ; DEF: 240 ; REF: 128 898 898 985 1112 1116 1135 1157 1159 1231 1239 1251 1276 1301 1409 1411 1433 1436 1441 1446 1541 1544 1547 1549 1552 1560 1573 1615 1647 1653 1653 1659 1711 1712 1714 1714 1715 1717 1721 1746 1747 1785 1791 1794 1799 1801 1806 1809 1839 1841 1844 1845 1849 1855 1916 1942 1952 1977 2013 2018 2176 2179 2565 2594 2636 2638 2640 2646 2671 2709 2712 2716 2732 2793 2794 2795 2844 2848 2851 2854 3047 3067 3076 3084 3097 3118 3122 3129 3150 3154 3158 3207 3207 3214 3229 3240 3244 3249 3253 3261 3295 3295 3344 3365 3367 3368 3392 3395 3399 3400 3438 3443 3465 3468 3470 3473 3474 3475 3475 3498 3586 3589 3593 3595 3598 3956 3960 3971 3977 3982 4011 4013 4018 4028 4030 4034 4039 4064 4117 4120 4136 4139 4144 4147 4150 4173 4202 4258 4261 4263 4265 4303 4322 4327 4416 4435 4575 4633 4636 4641 4645 4650 4764 4767 4770 4773 4777 4787 4803 4808 4817 4826 4832 4903 4906 4912 4915 4940 4944 4950 4959 4981 5064 5069 5071 5072 5076 5077 5079 5131 5143 5146 5150 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: 590 655 804 893 969 1040 1108 1366 1399 1781 2204 2291 2572 3044 3219 3358 3943 4099 4568 4735 norange type numeric 0..63 ; DEF: 1-621 ; REF: 345 np var global, loc:52, size:10 ; pointer ; DEF: 327 ; REF: 5018* 5019 5023 5039 5098* 5099 5103 5119 npksize field disp:200, size:4 ; integer ; DEF: 1-535 ; REF: 1073* 1075 1077 nreg const scalar, ord=0 ; DEF: 1-774 ; REF: 1-777 nrep var local to valuedecl, loc:151, size:4 ; integer ; DEF: 2548 ; REF: 2731* 2735* 2738 2752 2760 2766 2770 2786 number field disp:0, size:4 ; integer ; DEF: 1-642 ; REF: 563* 567* 4226* 4245 numeric const scalar, ord=1 ; DEF: 1-412 ; REF: 1-535 982 1064 1073 1075 1078 1197 1207 1591 1670 1689 1988 3177 nxt var local to fieldlist, loc:202, size:10 ; pointer ; DEF: 1343 ; REF: 1405* 1415 1426 1428 1430* 1442 1529 1554 1567 1569* 1716 1720* 1727 1730 1762 nxta var local to typedecl, loc:162, size:10 ; pointer ; DEF: 880 ; REF: 1813* 1820 1823* 1835 1870 1886 1888 1888* 1889 nxtc var local to fieldlist, loc:210, size:10 ; pointer ; DEF: 1343 ; REF: 1641* 1706 1708* 1726 1753 nxtc var local to simpletype, loc:152, size:10 ; pointer ; DEF: 943 ; REF: 1248* 1266 1267* 1269* nxtdeb var local to fieldlist, loc:206, size:10 ; pointer ; DEF: 1343 ; REF: 1413* 1429* 1469 1487 nxtel field disp:40, size:10 ; pointer ; DEF: 1-509 ; REF: 1083* 1154 1182 1183* 1426* 1536 1567* 1706* 1731 1732 1743 1926 1929 1929* 1931* 2454 2456 2584 2587* 2590 2592* 2606 2607 2885 3186 3202* 3291 3327 3333 3335* 3337* 3493 3552* 3553 3568 3574 3605 3606* 3626 3660* 3661 3669 3677 4460* 4714 nxtf var local to typedecl, loc:174, size:10 ; pointer ; DEF: 880 ; REF: 1907* 1912* 1923 1926 1926 1929 1929* 1935 nxtf var var parameter of fieldlist, size:10 ; pointer ; DEF: 1319 ; REF: 1401 1405 1762* 1772 objaccessibles type scalar ; DEF: 1-460 ; REF: 1-461 occur field disp:10, size:4 ; scalar ; DEF: 1-634 ; REF: 5015* 5092* octalformataddr var global imported, size:10 ; pointer ; DEF: 272 ; REF: 24 2428 2434 2463 2473 2473 2489 old_check_id var global, loc:51, size:4 ; boolean ; DEF: 326 ; REF: 1444 1904* 1914 oldfile var local to typepartdecl, loc:154, size:4 ; integer ; DEF: 4408 ; REF: 4424* 4461 oldfile var local to constpartdecl, loc:160, size:4 ; integer ; DEF: 4298 ; REF: 4312* 4373 oldfile var local to fieldlist, loc:224, size:4 ; integer ; DEF: 1345 ; REF: 1558* 1567 1579* 1585 oldlc var local to body, loc:163, size:4 ; integer ; DEF: 2157 ; REF: 4898* 4993* 4993 4994 4995* 4995 5128 oldlev var local to body, loc:162, size:4 ; integer ; DEF: 2157 ; REF: 4826* 4834 4853 4891 5129 oldline var local to typepartdecl, loc:155, size:4 ; integer ; DEF: 4408 ; REF: 4424* 4461 oldline var local to constpartdecl, loc:161, size:4 ; integer ; DEF: 4298 ; REF: 4312* 4373 oldline var local to fieldlist, loc:225, size:4 ; integer ; DEF: 1345 ; REF: 1558* 1567 1579* 1585 oldnext var local to valuedecl, loc:160, size:10 ; pointer ; DEF: 2550 ; REF: 2584* 2587 2588* 2592 2603* 2659 oldnxt var local to fieldlist, loc:220, size:10 ; pointer ; DEF: 1344 ; REF: 1716* 1727 1731 oldnxtf var local to typedecl, loc:210, size:10 ; pointer ; DEF: 881 ; REF: 1926* 1931 on field disp:0, size:4 ; boolean ; DEF: 1-486 ; REF: 550* 551* 1128 1164* 1170* opt2 field disp:234, size:4 ; integer ; DEF: 1-549 ; REF: 1874* origin var local to fieldlist, loc:236, size:4 ; integer ; DEF: 1347 ; REF: 1589* 1594* 1600* 1603* 1695 pack field disp:124, size:4 ; boolean ; DEF: 1-525 ; REF: 1083* 1246* 1292* 1819* 1872 1900* 1948* 1997* 2026* 2676 2706 3193* packedcadre funct level 0, imported ; integer ; DEF: 442 ; REF: 68 3289 packedfound var local to conformarray, loc:146, size:4 ; boolean ; DEF: 3031 ; REF: 3057* 3070 3072* 3074* 3193 3288 packedsize funct level 0, imported ; integer ; DEF: 443 ; REF: 69 1194 1486 1627 packflag var local to typedecl, loc:150, size:4 ; boolean ; DEF: 878 ; REF: 1057 1058 1075 1076 1083 1112 1194 1204 1246 1281 1282 1292 1293 1294 1789* 1796* 1982* 1998 1999 2021 2026 2028 pagesinsegment const numeric ; DEF: 1-69 ; REF: 1-70 parameter_count field disp:140, size:4 ; integer ; DEF: 1-520 ; REF: 1177 pascdebstacklocal const numeric ; DEF: 1-130 ; REF: 2234 4899 4910 4943 5086 pdescsaddrplace field disp:350, size:4 ; integer ; DEF: 1-592 ; REF: 2436 4994* pendingtypeallowed var global, loc:54, size:4 ; boolean ; DEF: 328 ; REF: 2037 2043 4776* 4779* permanentfile const scalar, ord=1 ; DEF: 1-437 ; REF: 4607 4705 pextcalltrapinfoplace field disp:360, size:4 ; integer ; DEF: 1-594 ; REF: 2429* phasdescriptor field disp:210, size:4 ; boolean ; DEF: 1-576 ; REF: 3428* 4958* place field disp:14, size:4 ; integer ; DEF: 1-430 ; REF: 2344 2345 pointer const scalar, ord=3 ; DEF: 1-412 ; REF: 1-541 1202 1214 1483 2021 2022 2027 2028 2697 pop_lab_pdl proc level 0, exportable ; DEF: 753 ; REF: 184 5169 power const scalar, ord=4 ; DEF: 1-412 ; REF: 1-543 1214 1287 1290 1293 1294 1376 1484 1488 1992 1995 1998 1999 2697 3415 4929 poweroftwo funct level 0, imported ; integer ; DEF: 415 ; REF: 42 1874 pp var local to typedecl, loc:212, size:10 ; pointer ; DEF: 881 ; REF: 1926* 1927 1929 1929* pp var local to fieldlist, loc:200, size:10 ; pointer ; DEF: 1343 ; REF: 1469* 1472 1474* 1487* 1494 1501 1501* 1511 1517 1517* 1529* 1532 1534 1536* 1536 1720* 1724* 1738 ppksize field disp:200, size:4 ; integer ; DEF: 1-543 ; REF: 1290* 1293 1995* 1998 pptr field disp:40, size:10 ; pointer ; DEF: 332 ; REF: 2053* 4486 4486 4486 4488* 4488 4506 4506 4506 4507* 4507 4513 4514 pr0 const scalar, ord=6 ; DEF: 1-774 ; REF: 2300 2379 pr4depw const numeric ; DEF: 1-282 ; REF: 2311 pr6 const scalar, ord=9 ; DEF: 1-774 ; REF: 1-777 2311 preg type scalar subrange ; DEF: 1-777 ; REF: 1-856 1-880 451 previous field disp:0, size:10 ; pointer ; DEF: 1-403 ; REF: 581* 4320 4433 previous field disp:0, size:10 ; pointer ; DEF: 1-665 ; REF: 575* 739* 772 773 printexternalbox proc level 0 ; DEF: 605 ; REF: 4052 4163 printrec proc level 0, imported ; DEF: 444 ; REF: 70 1087 1272 1299 1299 1478 1504 1520 1534 1636 1741 1757 1886 1939 1969 2003 2075 3624 3667 3675 4376 4453 4712 5007 5095 proc const scalar, ord=3 ; DEF: 1-415 ; REF: 1-571 2403 3617 4841 procaddr field disp:150, size:4 ; integer ; DEF: 1-574 ; REF: 2421 3379* 4988* procblock const scalar, ord=0 ; DEF: 1-938 ; REF: 1-945 5033 5113 procdef field disp:340, size:4 ; scalar ; DEF: 1-590 ; REF: 677 2448 4979* 5009 5050 5085* procextitem field disp:220, size:10 ; pointer ; DEF: 1-578 ; REF: 2411 2413 2414 2438 4892* procinscope field disp:200, size:4 ; boolean ; DEF: 1-575 ; REF: 2378* 4979* 5086* procisactive field disp:354, size:4 ; boolean ; DEF: 1-593 ; REF: 5027* 5044* 5107* 5124* procisassigned field disp:170, size:4 ; boolean ; DEF: 1-575 ; REF: 2377 prockind field disp:140, size:4 ; scalar ; DEF: 1-572 ; REF: 2405 3376* 3619 4890* 4977 4978* proclevel field disp:144, size:4 ; numeric 0..20 ; DEF: 1-573 ; REF: 4891* proclocation type scalar ; DEF: 1-439 ; REF: 1-577 procnode field disp:30, size:10 ; pointer ; DEF: 1-646 ; REF: 4233* procptr var local to body, loc:154, size:10 ; pointer ; DEF: 2156 ; REF: 2206 3508 4849* 4850 4852 4867 4869 4871 4895 4917 4934 4948 4955 4957 4958 4964 4966 4975 4977 4978 4979 4979 4986 5007 5009 5026 5027 5041 5044 5082* 5083 5095 5106 5107 5121 5124 proctype field disp:120, size:10 ; pointer ; DEF: 1-571 ; REF: 2375 3376* 3402* 3422* 4852* 4917* 4934* 5058 5059 profarea type array of (integer) ; DEF: 1-934 ; REF: 1-933 progname var global imported, size:40 ; packed array of (char) ; DEF: 241 ; REF: 129 4134 pt var local to valuedecl, loc:170, size:10 ; pointer ; DEF: 2550 ; REF: 2730* 2736* 2746 2756 2757 2762 2768 2769 2798* 2801 2811 2812 2816 2822 2823 pteltype var local to valuedecl, loc:172, size:10 ; pointer ; DEF: 2550 ; REF: 2673* 2674 2676 2680 2684 2687* 2687 2688 2690 2693 2696 2702 2720* 2746 2750 2751 2756 2801 2805 2806 2811 ptexternalitem type pointer ; DEF: 1-444 ; REF: 1-448 1-578 1-607 282 605 634 651 695 707 2159 2161 2546 3724 4093 4095 4562 ptfirstbound var local to conformarray, loc:150, size:10 ; pointer ; DEF: 3032 ; REF: 3055* 3112* 3195 3337 ptfirstdim var local to conformarray, loc:152, size:10 ; pointer ; DEF: 3033 ; REF: 3058* 3200* 3224 3308 3319 3326 3345 ptfirstvar var local to conformarray, loc:156, size:10 ; pointer ; DEF: 3035 ; REF: 3329* 3332 3333* 3333 3337 3347 pthigh field disp:230, size:10 ; pointer ; DEF: 1-551 ; REF: 3196* 3313 ptlastdim var local to conformarray, loc:154, size:10 ; pointer ; DEF: 3034 ; REF: 3059* 3199 3201 3202 3203* 3224 3282 3285 3345 ptlastvar var local to conformarray, loc:162, size:10 ; pointer ; DEF: 3037 ; REF: 3060* 3319 3323 3329 3336 3347 ptlimit const numeric ; DEF: 1-14 ; REF: 329 2047 ptlist var global, loc:56, size:1760 ; array of (record) ; DEF: 329 ; REF: 2051 2053* 2053* 2056* 2056* 4481 4482 4486* 4486* 4486 4488* 4488 4488* 4488 4489 4489 4496 4498 4506* 4506* 4506 4507* 4507 4507* 4507 4513 4514 4525 4526 ptlow field disp:240, size:10 ; pointer ; DEF: 1-551 ; REF: 3195* 3312 ptpksize field disp:200, size:4 ; integer ; DEF: 1-541 ; REF: 2027* 2028 ptsecondbound var local to conformarray, loc:166, size:10 ; pointer ; DEF: 3039 ; REF: 3057* 3145* 3196 ptsecondvar var local to conformarray, loc:160, size:10 ; pointer ; DEF: 3036 ; REF: 3332* 3335 3347 ptx var global, loc:452, size:4 ; integer ; DEF: 335 ; REF: 591* 2047 2051 2055* 2055 4480 4486* 4486 4488 4488 4494 4495 4506* 4506 4507 4507 4519 4522 4529* push_lab_pdl proc level 0, exportable ; DEF: 729 ; REF: 183 4762 pwantdescs field disp:344, size:4 ; boolean ; DEF: 1-591 ; REF: 2420 2427 4875* 4990 pwantspl1descriptors field disp:364, size:4 ; boolean ; DEF: 1-595 ; REF: 3508 4884* rcstpt type pointer ; DEF: 1-825 ; REF: 1-836 264 real_const_token const scalar, ord=4 ; DEF: 1-491 ; REF: 1-498 realptr var global imported, size:10 ; pointer ; DEF: 242 ; REF: 130 1142 2703 2724 2747 2802 realtype field disp:200, size:10 ; pointer ; DEF: 1-563 ; REF: 1193 1588 2062 3176 3275 3414 3525 4450* 4502 4928 recadre funct level 0, imported ; integer ; DEF: 402 ; REF: 43 1382 1467 1468 1497 1513 1623 1873 2245 2878 4661 4665 4993 recidscope type record ; DEF: 1-632 ; REF: 218 records const scalar, ord=6 ; DEF: 1-412 ; REF: 1-554 1214 1460 1861 1897 1959 2066 2705 2718 3515 4504 recvar field disp:200, size:10 ; pointer ; DEF: 1-554 ; REF: 1935* recvarsize var local to varpartdecl, loc:141, size:4 ; integer ; DEF: 4560 ; REF: 4661* 4665 4668 4671* 4684 recvpt var local to typedecl, loc:200, size:10 ; pointer ; DEF: 880 ; REF: 1912* 1935 reel const scalar, ord=0 ; DEF: 1-412 ; REF: 1-534 1214 ref_allowed field disp:70, size:10 ; record ; DEF: 1-650 ; REF: 766* 767* 2344 2345 4228* 4229* ref_err var local to leavebody, loc:224, size:4 ; boolean ; DEF: 2287 ; REF: 2322* 2347* 2361 refbox var local to leavebody, loc:226, size:10 ; pointer ; DEF: 2288 ; REF: 2338* 2339 2341 2357* 2357 references field disp:70, size:10 ; pointer ; DEF: 1-512 ; REF: 1084* 4462* 4462 4463 references field disp:60, size:10 ; pointer ; DEF: 1-649 ; REF: 2338 4237* 4238 4239 reflist type record ; DEF: 1-426 ; REF: 1-425 refnbr field disp:10, size:4 ; integer ; DEF: 1-428 ; REF: 2342 4240* 4465* refptr type pointer ; DEF: 1-425 ; REF: 1-427 1-512 1-649 2288 refs field disp:14, size:620 ; array of (record) ; DEF: 1-429 ; REF: 2343 2344 2345 2349 2350 2351 2352 2353 regbox type record ; DEF: 1-817 ; REF: 1-816 register type scalar ; DEF: 1-774 ; REF: 1-777 1-819 1-862 1-889 1-920 regpt type pointer ; DEF: 1-816 ; REF: 1-821 1-822 1-858 1-867 1-881 1-890 1-910 remanentfile const scalar, ord=8 ; DEF: 1-442 ; REF: 4605 4795 rep var local to formparm, loc:154, size:4 ; boolean ; DEF: 2972 ; REF: 3591* 3592* 3593* 3594 retpt var local to typepartdecl, loc:152, size:10 ; pointer ; DEF: 4407 ; REF: 4442* 4444 4445 4450 4458 4468 4473 4482 4483 4486 returnsize var var parameter of typedecl, size:4 ; integer ; DEF: 846 ; REF: 909* 1091* 1099 1168* 1194* 1195* 1204 1284* 1310 1851* 1890* 1912* 1935 1956* 2005* 2021* 2025 2045* 2049* 2085 returntype var var parameter of typedecl, size:10 ; pointer ; DEF: 846 ; REF: 910* 1800* 1851* 1893* 1921* 1961* 1971* 2006* 2045* 2049* 2055* 2060* 2085 returnzeroplace const numeric ; DEF: 1-192 ; REF: 2300 rfil field disp:50, size:4 ; integer ; DEF: 333 ; REF: 2056* 4489 rlin field disp:54, size:4 ; integer ; DEF: 333 ; REF: 2056* 4489 rnext field disp:20, size:10 ; pointer ; DEF: 1-836 ; REF: 2482 rplace field disp:10, size:4 ; integer ; DEF: 1-835 ; REF: 2480 rtyp var local to typedecl, loc:172, size:10 ; pointer ; DEF: 880 ; REF: 1902* 1921 1933 1939 runresolv type record ; DEF: 1-833 ; REF: 1-825 rvalu field disp:0, size:10 ; real ; DEF: 1-834 ; REF: 2481 saved_level var local to body, loc:146, size:4 ; integer ; DEF: 2153 ; REF: 4740* 4754 saved_next var local to simpletype, loc:160, size:10 ; pointer ; DEF: 944 ; REF: 1166* 1169 saved_top var local to simpletype, loc:171, size:4 ; integer ; DEF: 945 ; REF: 1166* 1169 savedescriptors var local to formparm, loc:155, size:4 ; boolean ; DEF: 2973 ; REF: 3390* 3429 savenbpar var local to formparm, loc:142, size:4 ; integer ; DEF: 2970 ; REF: 3388* 3427 savenext var local to formparm, loc:150, size:10 ; pointer ; DEF: 2971 ; REF: 3386* 3432 scalar const scalar, ord=2 ; DEF: 1-412 ; REF: 1-536 982 1049 1051 1054 1057 1060 1197 1209 1243 1280 1281 1282 1597 1668 1674 1988 3177 scaldecl proc of simpletype ; DEF: 1023 ; REF: 1223 1236 schema const scalar, ord=0 ; DEF: 1-415 ; REF: 1-516 1124 3506 schema_parameter_count var local to formparm, loc:174, size:4 ; integer ; DEF: 2981 ; REF: 3616* 3655 3656* 3656 schema_ptr field disp:10, size:10 ; pointer ; DEF: 1-487 ; REF: 1131* 1167 1174 schema_status type record ; DEF: 1-485 ; REF: 278 schema_token type record ; DEF: 1-492 ; REF: 1-484 schema_token_kind type scalar ; DEF: 1-491 ; REF: 1-494 search proc level 0, imported ; DEF: 411 ; REF: 92 1119 1556 1576 1661 2030 3164 3263 3405 3500 4498 4920 segsize field disp:154, size:4 ; integer ; DEF: 1-574 ; REF: 3430* 4948* 5085 5161* selectorfield field disp:150, size:10 ; pointer ; DEF: 1-613 ; REF: 1754* selfield var local to fieldlist, loc:216, size:10 ; pointer ; DEF: 1344 ; REF: 1570* 1755 setarray type array of (integer) ; DEF: 1-815 ; REF: 1-839 1-844 1-904 setlength field disp:220, size:4 ; integer ; DEF: 1-545 ; REF: 1291* 1996* setofno type set of (numeric 0..63) ; DEF: 1-434 ; REF: 409 setrange const numeric ; DEF: 1-92 ; REF: 1-93 1-94 sh var local to typedecl, loc:160, size:4 ; integer ; DEF: 879 ; REF: 1983* 1989 1995 1996 1999 shrtint type numeric -131072..131071 ; DEF: 1-619 ; REF: 1-671 2283 simpletype proc of typedecl ; DEF: 919 ; REF: 1800 1826 1983 size field disp:114, size:4 ; integer ; DEF: 1-524 ; REF: 1059* 1060* 1077* 1078* 1091 1195 1282* 1284 1294* 1485 1624 1882* 1935* 1967* 1999* 2005 2025* 2684 2723 2723 2724 2724 2725 2726 2868 2878 2912 2912 4661 4689 4693 skip proc level 0, imported ; DEF: 408 ; REF: 44 2178 2564 2645 2846 3402 3583 3597 4638 4807 4917 4953 4983 5068 5076 5145 5148 skipextd proc level 0, imported ; DEF: 409 ; REF: 45 3079 3087 3100 3121 3132 3153 3161 3210 3243 3252 3301 3958 3973 3979 4014 4033 4118 4141 4147 skipt proc of typedecl ; DEF: 887 ; REF: 912 1122 1253 1438 1655 1724 1832 1843 skiptochapter proc level 0, imported ; DEF: 410 ; REF: 46 3950 4041 4109 4152 sl var local to typedecl, loc:157, size:4 ; integer ; DEF: 879 ; REF: 1983* 1989 smax field disp:214, size:4 ; integer ; DEF: 1-539 ; REF: 1055* 1210 1600 smin field disp:210, size:4 ; integer ; DEF: 1-539 ; REF: 1055* 1210 1600 1600 son field disp:20, size:10 ; pointer ; DEF: 1-941 ; REF: 5022 5023* 5024* 5102 5103* 5104* spksize field disp:200, size:4 ; integer ; DEF: 1-536 ; REF: 1054* 1057 1059 1280* 1281 spt var local to typedecl, loc:202, size:10 ; pointer ; DEF: 881 ; REF: 1983* 1984 1988 2000 sptcstepw field disp:220, size:10 ; pointer ; DEF: 1-538 ; REF: 1297* srchrec proc level 0, imported ; DEF: 405 ; REF: 92 812 1119 1256 1415 1554 1555 1575 1661 2030 2653 2659 3164 3263 3370 3447 4305 4418 4582 4838 sretmax var var parameter of simpletype, size:4 ; integer ; DEF: 919 ; REF: 1089* 1099 1207* 1210* 1212* 1215* 1222* 1235* 1285* 1310 sretmin var var parameter of simpletype, size:4 ; integer ; DEF: 919 ; REF: 1089* 1099 1207* 1210* 1212* 1215* 1222* 1235* 1285* 1310 srettype var var parameter of simpletype, size:10 ; pointer ; DEF: 919 ; REF: 1090* 1094* 1099 1122* 1161* 1168* 1171 1172 1201* 1222* 1235* 1285* 1310 standdef const scalar, ord=0 ; DEF: 1-417 ; REF: 4956 4976 5009 5085 start field disp:30, size:4 ; integer ; DEF: 1-667 ; REF: 574* 746* 766 statement_begins proc level 0, imported ; DEF: 417 ; REF: 47 2229 2240 2297 2314 2370 2388 statement_ends proc level 0, imported ; DEF: 418 ; REF: 48 2239 2247 2313 2369 2387 2507 staticswordcount var global imported, size:4 ; integer ; DEF: 243 ; REF: 131 5141* statnbr var global imported, size:4 ; integer ; DEF: 244 ; REF: 132 4747 5043 5123 stdextend const scalar, ord=3 ; DEF: 1-435 ; REF: 1749 4329 stdkind type scalar ; DEF: 1-435 ; REF: 221 stdpure const scalar, ord=0 ; DEF: 1-435 ; REF: 2596 3952 4111 stopch var local to decodestring, loc:170, size:4 ; char ; DEF: 3760 ; REF: 3883* 3886 3894 3897* 3900 3904 3906* 3909 3911* 3916 string_ptr var global imported, size:10 ; pointer ; DEF: 245 ; REF: 133 2690 strlen var local to valuedecl, loc:157, size:4 ; integer ; DEF: 2549 ; REF: 2782* 2784* 2788 structispack var global, loc:453, size:4 ; boolean ; DEF: 337 ; REF: 1450 1455* 1464 1621 1785 1789 1789* 1796* 1819 1900 1948 1982 1997 2085 4441* 4652* structureplace field disp:70, size:4 ; integer ; DEF: 1-947 ; REF: 5030* 5110* sttmap type array of (record) ; DEF: 1-925 ; REF: 1-924 subrange proc of simpletype ; DEF: 950 ; REF: 1046 1222 1235 subrng field disp:204, size:4 ; boolean ; DEF: 1-537 ; REF: 1209 1598 subsize field disp:240, size:4 ; integer ; DEF: 1-549 ; REF: 1874* succ field disp:120, size:10 ; pointer ; DEF: 1-565 ; REF: 1150* 1266* 2503 2503* 4363* sup funct level 0, imported ; integer ; DEF: 413 ; REF: 49 1073 1092 1284 1539 1745 1872 1894 1922 1973 2007 2077 4660 surrptr var parameter of body, size:10 ; pointer ; DEF: 2096 ; REF: 2237 2366 2372 2375 2375 2377 2378 2380 2385 4749 5159 5161 sval const scalar, ord=4 ; DEF: 1-812 ; REF: 1-900 symbol_token const scalar, ord=0 ; DEF: 1-491 ; REF: 1-495 symbolfile var global imported, size:4 ; integer ; DEF: 246 ; REF: 134 713 816 979 995 1126 1192 1225 1258 1418 1558 1579 1664 2032 2056 2065 2226* 2661 3171 3270 3408 3450 3505 3990 4126 4234 4308 4312 4335 4421 4424 4585 4822 4843 4923 5052 5061 symbolindex var global imported, size:4 ; integer ; DEF: 247 ; REF: 135 2225* 4823 4949 5074 symbolline var global imported, size:4 ; integer ; DEF: 248 ; REF: 136 713 816 979 995 1126 1192 1225 1258 1418 1558 1579 1664 2032 2056 2065 2227* 2661 3171 3270 3408 3450 3505 3990 4126 4235 4308 4312 4335 4421 4424 4585 4824 4843 4923 5052 5062 symbolmap var global imported, size:4 ; boolean ; DEF: 249 ; REF: 137 815 976 992 1126 1192 1225 1258 1418 1585 1664 2032 2065 2660 3170 3269 3408 3450 3505 4421 4585 4599 4843 4865 4923 5052 symbtabl var global exportable, size:4 ; boolean ; DEF: 305 ; REF: 185 592* tabkinds var global exportable, size:50 ; array of (array of (char)) ; DEF: 342 ; REF: 187 360* 617 tag type scalar ; DEF: 1-766 ; REF: 1-778 451 tagfield const scalar, ord=6 ; DEF: 1-415 ; REF: 1-610 tagflag var local to fieldlist, loc:146, size:4 ; boolean ; DEF: 1340 ; REF: 1369 1375 1404* 1502* 1518* 1629* tagtype var local to fieldlist, loc:214, size:10 ; pointer ; DEF: 1343 ; REF: 1616* 1619 1623 1624 1627 1633 1658 1668 1668 1669 1670 1674 1681 1689 1690 1690 1692 1753 tempctptr var local to fieldlist, loc:212, size:10 ; pointer ; DEF: 1343 ; REF: 1554* 1562 terrcl var global, loc:454, size:400 ; array of (scalar) ; DEF: 345 ; REF: 362* 898 1844 tl var local to typepartdecl, loc:156, size:4 ; integer ; DEF: 4409 ; REF: 4442* tlevel field disp:130, size:4 ; numeric 0..20 ; DEF: 1-526 ; REF: 2036 tmax var global imported, size:4 ; integer ; DEF: 267 ; REF: 156 2246* tn const scalar, ord=0 ; DEF: 1-766 ; REF: 1-778 2300 2379 tnp var local to typepartdecl, loc:162, size:10 ; pointer ; DEF: 4411 ; REF: 4426* 4427 4428 4431* 4433* 4433 tnp var local to constpartdecl, loc:156, size:10 ; pointer ; DEF: 4297 ; REF: 4313* 4314 4315 4318* 4320* 4320 tny const scalar, ord=16 ; DEF: 1-768 ; REF: 2311 toinit var local to valuedecl, loc:174, size:10 ; pointer ; DEF: 2550 ; REF: 2602* 2656* 2657 token_list field disp:150, size:10 ; pointer ; DEF: 1-521 ; REF: 1133 top var global imported, size:4 ; integer ; DEF: 250 ; REF: 138 1166 1167* 1169* 4895 5012* 5013 5089* 5090 5139 5158 5165* 5166 top_for_schema field disp:114, size:4 ; integer ; DEF: 1-517 ; REF: 1167 trans var local to leavebody, loc:151, size:40 ; record ; DEF: 2280 ; REF: 2438* 2442 twoto10 const numeric ; DEF: 1-50 ; REF: 1-51 1-68 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 4668 twoto17m1 const numeric ; DEF: 1-56 ; REF: 1-619 twoto18 const numeric ; DEF: 1-57 ; REF: 1-58 1-59 1-71 1877 twoto27 const numeric ; DEF: 1-59 ; REF: 2772 2825 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 tx7 const scalar, ord=15 ; DEF: 1-767 ; REF: 1-778 typcste var local to constpartdecl, loc:150, size:10 ; pointer ; DEF: 4295 ; REF: 4340* 4368 typcstes var var parameter of subrange, size:10 ; pointer ; DEF: 950 ; REF: 980* 1014 typedecl proc level 0 ; DEF: 846 ; REF: 1168 1451 1859 1956 4442 4653 typepartdecl proc of body ; DEF: 4391 ; REF: 4778 typerr proc of typedecl ; DEF: 904 ; REF: 1128 1135 1142 1157 1159 1226 1302 1305 1918 1958 1985 1988 1990 2019 2080 types const scalar, ord=1 ; DEF: 1-415 ; REF: 1-523 1083 1190 1586 2035 2061 2066 3172 3271 3409 3523 4501 4504 4924 typform type scalar ; DEF: 1-412 ; REF: 1-533 340 430 431 435 typid var local to typepartdecl, loc:140, size:40 ; packed array of (char) ; DEF: 4406 ; REF: 4425* 4428 4437 4447 4460 4474 4482 typofproc var local to body, loc:151, size:4 ; scalar ; DEF: 2155 ; REF: 4956* 4963* 4971* 4973* 4976 4979 typofsymb type scalar ; DEF: 1-669 ; REF: 345 typset field disp:220, size:10 ; pointer ; DEF: 1-540 ; REF: 1056* 1669 1690 typusednames type array of (array of (char)) ; DEF: 1-436 ; REF: 251 unddeb field disp:170, size:4 ; integer ; DEF: 1-570 ; REF: 2497 2499 2501* usednameaddr var global imported, size:10 ; pointer ; DEF: 260 ; REF: 147 2428* 2434* 2441* 2463* 2473* 2473* 2489* usednames var global imported, size:300 ; array of (array of (char)) ; DEF: 251 ; REF: 139 2915 2917 2919 4961 4970 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: 2615* 2619 2626 2629 2669 2863* 2868 2905 2910* 2916 2918 2920 2926 3490* 3563* 3634 3637 3650* 3673* 4591* 4685* valerr var local to valuedecl, loc:144, size:4 ; boolean ; DEF: 2547 ; REF: 2563* 2666* 2704 2714 valerror proc of valuedecl ; DEF: 2558 ; REF: 2654 2655 2662 2664 2688 2698 2701 2709 2712 2741 valreel field disp:150, size:10 ; real ; DEF: 1-568 ; REF: 4355* valu field disp:0, size:4 ; integer ; DEF: 1-829 ; REF: 2464 valuedecl proc of body ; DEF: 2519 ; REF: 4800 valuenb var global, loc:554, size:4 ; integer ; DEF: 347 ; REF: 595* 2578* 2578 2579 values field disp:144, size:4 ; integer ; DEF: 1-567 ; REF: 1149* 1212 1266* 1603 1680 2693 4347* vararea type scalar ; DEF: 1-939 ; REF: 1-953 varbl const scalar, ord=0 ; DEF: 1-812 ; REF: 1-854 vardeb var local to varpartdecl, loc:154, size:10 ; pointer ; DEF: 4565 ; REF: 4579* 4676 4716 variants field disp:120, size:10 ; pointer ; DEF: 1-611 ; REF: 1738* 1753* varparam field disp:200, size:4 ; boolean ; DEF: 1-603 ; REF: 3459* 3565* varpartdecl proc of body ; DEF: 4541 ; REF: 4788 varpoint var local to varpartdecl, loc:156, size:10 ; pointer ; DEF: 4565 ; REF: 4646* 4676 4678 4702 4705 4706 4708 4712 4714* 4716 varptr var var parameter of fieldlist, size:10 ; pointer ; DEF: 1319 ; REF: 1548* 1759* 1772 vars const scalar, ord=4 ; DEF: 1-415 ; REF: 1-596 676 2033 2606 2655 2904 3629 varsize var local to varpartdecl, loc:140, size:4 ; integer ; DEF: 4559 ; REF: 4653* vartype var local to varpartdecl, loc:160, size:10 ; pointer ; DEF: 4565 ; REF: 4653* 4654 4660 4661 4680 4689 4693 vdescaddr field disp:150, size:4 ; integer ; DEF: 1-600 ; REF: 3491* 3567* 3635 3637* vdispl field disp:144, size:4 ; integer ; DEF: 1-600 ; REF: 3312* 3313* 3653* version var global imported, size:4 ; integer ; DEF: 252 ; REF: 140 594 594* vfilelocation field disp:134, size:4 ; scalar ; DEF: 1-598 ; REF: 4607* 4705 4706* 4708* visreadonly field disp:174, size:4 ; boolean ; DEF: 1-603 ; REF: 3109* 3141* 3548* 3652* visset field disp:170, size:4 ; boolean ; DEF: 1-603 ; REF: 3108* 3140* 3459* 3547* 3651* 4628* vkind field disp:130, size:4 ; scalar ; DEF: 1-597 ; REF: 2611 2613 2664 2667 2907 2912 3107* 3139* 3459* 3487 3546* 3632 3649* 3671 4597* 4610* 4613* 4617 4620 4681 vptextitem field disp:240, size:10 ; pointer ; DEF: 1-607 ; REF: 4614* 4689 4693 vtype field disp:120, size:10 ; pointer ; DEF: 1-596 ; REF: 1141 1145 2033 2607 2609 2673 2705 2706 2706 2718 2723 2724 2725 2726 2868 2878 2906 2907 2911 2912 2912 3185* 3186* 3319* 3326* 3545* 3545 3573* 3638 3639 3648* 3648 4680* 4696 vwith const scalar, ord=2 ; DEF: 1-622 ; REF: 1-637 warning proc level 0, imported ; DEF: 419 ; REF: 50 1749 wcstpt type pointer ; DEF: 1-824 ; REF: 1-831 265 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 wkexternpt var local to exportpartdecl, loc:142, size:10 ; pointer ; DEF: 4095 ; REF: 4122* 4123 4126 4126 4127 4128 4132* 4160* 4161 4163 4164* 4164 wkexternpt var local to importpartdecl, loc:140, size:10 ; pointer ; DEF: 3724 ; REF: 3986* 3987 3990 3990 3991 3992 3994* 3997* 3998 4001 4003 4004 4006 4007 4049* 4050 4052 4053* 4053 wkexternpt var local to createexternalbox, loc:150, size:10 ; pointer ; DEF: 707 ; REF: 710* 710 711 715 723 wkextpt var local to valuedecl, loc:140, size:10 ; pointer ; DEF: 2546 ; REF: 2899* 2900 2902 2934* 2934 wkname var local to valuedecl, loc:200, size:40 ; packed array of (char) ; DEF: 2553 ; REF: 2923* 2924* 2925 wordconst const scalar, ord=0 ; DEF: 1-416 ; REF: 1-567 1146 1263 4331 4344 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 workextp var local to body, loc:212, size:10 ; pointer ; DEF: 2161 ; REF: 4791* 4792 4794 4795 4797* 4797 workfile const scalar, ord=2 ; DEF: 1-437 ; REF: 4706 workpt var local to checkexternalitem, loc:144, size:10 ; pointer ; DEF: 651 ; REF: 661* 663 665 667 670* 670 writout proc level 0, imported ; DEF: 457 ; REF: 91 2505 2628 2877 xc var global imported, size:4 ; integer ; DEF: 253 ; REF: 141 2574 2600 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 a1r0i0 const scalar, ord=4 ; DEF: 1-799 a1r0i1 const scalar, ord=5 ; DEF: 1-799 a1r1i0 const scalar, ord=6 ; DEF: 1-799 a1r1i1 const scalar, ord=7 ; DEF: 1-799 accbloc field disp:20, size:10 ; pointer ; DEF: 1-910 accbool field disp:30, size:4 ; boolean ; DEF: 1-911 access field disp:70, size:4 ; scalar ; DEF: 1-871 activated field disp:54, size:4 ; boolean ; DEF: 1-967 active field disp:50, size:4 ; boolean ; DEF: 1-967 add const scalar, ord=3 ; DEF: 1-919 adlx const scalar, ord=0 ; DEF: 1-918 adx const scalar, ord=1 ; DEF: 1-918 alfactp field disp:20, size:10 ; pointer ; DEF: 1-897 alfadeb field disp:150, size:10 ; pointer ; DEF: 1-569 alfalevel field disp:164, size:4 ; integer ; DEF: 1-570 alfalong field disp:160, size:4 ; integer ; DEF: 1-570 alfaval field disp:10, size:20 ; array of (char) ; DEF: 1-422 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 askforexclusionplace * const numeric ; DEF: 1-363 asserrcode * const numeric ; DEF: 1-250 attr * type record ; DEF: 1-849 bad_date_time_parameter * const numeric ; DEF: 1-269 bad_string_index * const numeric ; DEF: 1-268 basebloc field disp:30, size:10 ; pointer ; DEF: 1-858 baseprocessdplmt * const numeric ; DEF: 1-345 basereg field disp:20, size:4 ; scalar subrange ; DEF: 1-856 binartypeptr * type pointer ; DEF: 1-811 bit29 * const numeric ; DEF: 1-142 bitsforset * const numeric ; DEF: 1-111 bitsindword * const numeric ; DEF: 1-80 bitsinhword * const numeric ; DEF: 1-79 blocenglob field disp:270, size:10 ; pointer ; DEF: 1-561 body * proc level 0, exportable ; DEF: 2096 ; REF: 159 5041 5121 byteinbyte * const numeric ; DEF: 1-81 bytesforset * const numeric ; DEF: 1-110 byteshift * const numeric ; DEF: 1-82 bytint * type numeric -256..255 ; DEF: 1-620 caserrcode * const numeric ; DEF: 1-253 cdspl field disp:344, size:4 ; integer ; DEF: 1-636 chaineentree field disp:260, size:10 ; pointer ; DEF: 1-583 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 cmp const scalar, ord=5 ; DEF: 1-919 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 creflist field disp:20, size:320 ; record ; DEF: 1-636 dateopplace * const numeric ; DEF: 1-196 deccode const scalar, ord=4 ; DEF: 1-623 definition const scalar, ord=3 ; DEF: 1-623 deflbool * const numeric ; DEF: 1-390 deflchar * const numeric ; DEF: 1-391 deflnum * const numeric ; DEF: 1-389 deflreal * const numeric ; DEF: 1-388 delete_negative_length_error * const numeric ; DEF: 1-265 delete_offset_error * const numeric ; DEF: 1-264 delete_too_long_error * const numeric ; DEF: 1-266 desc_vector_references field disp:170, size:4 ; integer ; DEF: 1-531 descbloc field disp:130, size:10 ; pointer ; DEF: 1-881 descreg field disp:120, size:4 ; scalar subrange ; DEF: 1-880 destination * type scalar ; DEF: 1-814 direct const scalar, ord=0 ; DEF: 1-813 disposeplace * const numeric ; DEF: 1-178 diverrcode * const numeric ; DEF: 1-251 dlkdepw * const numeric ; DEF: 1-285 dopevectorsize * const numeric ; DEF: 1-274 dplmt field disp:40, size:4 ; integer ; DEF: 1-861 elem field disp:20, size:10 ; pointer ; DEF: 1-475 emptyindex * const numeric ; DEF: 1-385 emptyplace * const numeric ; DEF: 1-367 encode const scalar, ord=3 ; DEF: 1-813 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 epp const scalar, ord=0 ; DEF: 1-917 errorcond * const numeric ; DEF: 1-106 evareaw * const numeric ; DEF: 1-288 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 extcallplace * const numeric ; DEF: 1-194 extend_stack_op_place * const numeric ; DEF: 1-226 extentryplace * const numeric ; DEF: 1-155 externalarea const scalar, ord=1 ; DEF: 1-441 externid * type packed array of (char) ; DEF: 1-400 extreturnplace * const numeric ; DEF: 1-191 fappendplace * const numeric ; DEF: 1-201 fastbit * const numeric ; DEF: 1-235 fcloseplace * const numeric ; DEF: 1-187 fctdepl * const numeric ; DEF: 1-287 fctdeplw * const numeric ; DEF: 1-286 fdescsize * const numeric ; DEF: 1-304 filesize * var local to valuedecl, loc:176, size:4 ; integer ; DEF: 2551 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 firstglobal * const numeric ; DEF: 1-298 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 forerricode * const numeric ; DEF: 1-248 forerrscode * const numeric ; DEF: 1-249 forset * type scalar ; DEF: 1-807 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 fsizeb * const numeric ; DEF: 1-312 fsizew * const numeric ; DEF: 1-308 fstatusb * const numeric ; DEF: 1-310 fstatusw * const numeric ; DEF: 1-306 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 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 holdplace * const numeric ; DEF: 1-358 ia4bd const scalar, ord=501 ; DEF: 1-751 ia6bd const scalar, ord=502 ; DEF: 1-751 ia9bd const scalar, ord=503 ; 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 iada const scalar, ord=84 ; DEF: 1-689 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 iadq const scalar, ord=98 ; 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 ials const scalar, ord=73 ; DEF: 1-688 iana const scalar, ord=210 ; DEF: 1-708 ianaq const scalar, ord=211 ; DEF: 1-708 ianq const scalar, ord=212 ; DEF: 1-708 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 iasq const scalar, ord=109 ; 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 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 icmpa const scalar, ord=162 ; DEF: 1-699 icmpaq const scalar, ord=163 ; DEF: 1-699 icmpb const scalar, ord=527 ; DEF: 1-756 icmpn const scalar, ord=525 ; DEF: 1-755 icmpq const scalar, ord=164 ; DEF: 1-699 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 icsl const scalar, ord=519 ; DEF: 1-755 icsr const scalar, ord=520 ; DEF: 1-755 icwl const scalar, ord=173 ; DEF: 1-700 idfad const scalar, ord=182 ; DEF: 1-702 idfcmg const scalar, ord=202 ; DEF: 1-705 idfcmp const scalar, ord=203 ; DEF: 1-705 idfdi const scalar, ord=194 ; DEF: 1-704 idfdv const scalar, ord=195 ; DEF: 1-704 idfld const scalar, ord=176 ; DEF: 1-702 idfmp const scalar, ord=190 ; DEF: 1-703 idfrd const scalar, ord=200 ; DEF: 1-705 idfsb const scalar, ord=186 ; DEF: 1-703 idfst const scalar, ord=178 ; DEF: 1-702 idfstr const scalar, ord=179 ; DEF: 1-702 idis const scalar, ord=448 ; DEF: 1-743 idiv const scalar, ord=156 ; DEF: 1-698 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 ieax6 const scalar, ord=8 ; DEF: 1-680 ieax7 const scalar, ord=9 ; DEF: 1-680 ieism * type scalar subrange ; DEF: 1-782 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 iepp3 const scalar, ord=322 ; 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 ieraq const scalar, ord=253 ; 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 ifneg const scalar, ord=198 ; 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 ilca const scalar, ord=10 ; DEF: 1-680 ilcaq const scalar, ord=11 ; DEF: 1-680 ilcpr const scalar, ord=422 ; DEF: 1-740 ilcq const scalar, ord=12 ; DEF: 1-680 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 ilda const scalar, ord=21 ; 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 ildq const scalar, ord=25 ; 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 ildx7 const scalar, ord=34 ; 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 ilrs const scalar, ord=79 ; 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 imlr const scalar, ord=516 ; DEF: 1-754 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 impy const scalar, ord=155 ; DEF: 1-698 imrl const scalar, ord=517 ; DEF: 1-754 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 inacc const scalar, ord=0 ; DEF: 1-814 inaq const scalar, ord=2 ; DEF: 1-814 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 ineg const scalar, ord=158 ; DEF: 1-698 inegl const scalar, ord=159 ; DEF: 1-698 inhibit * const numeric ; DEF: 1-143 initcondplace * const numeric ; DEF: 1-362 initdeclare * proc level 0, exportable ; DEF: 545 ; REF: 176 initdef const scalar, ord=3 ; DEF: 1-417 initfsballocplace * const numeric ; DEF: 1-195 initmoproc field disp:250, size:10 ; pointer ; DEF: 1-561 inop const scalar, ord=414 ; DEF: 1-738 inpr const scalar, ord=4 ; DEF: 1-814 inpsr const scalar, ord=3 ; DEF: 1-814 inq const scalar, ord=1 ; DEF: 1-814 insert_overflow_error * const numeric ; DEF: 1-267 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 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 inxbloc field disp:50, size:10 ; pointer ; DEF: 1-867 inxerrcode * const numeric ; DEF: 1-244 inxmem field disp:60, size:4 ; integer ; DEF: 1-868 inxmemrw field disp:64, size:4 ; boolean ; DEF: 1-870 inxreg field disp:44, size:4 ; scalar ; DEF: 1-862 iora const scalar, ord=231 ; DEF: 1-710 ioraq const scalar, ord=232 ; DEF: 1-710 iorq const scalar, ord=233 ; DEF: 1-710 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 iqls const scalar, ord=81 ; 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 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 isba const scalar, ord=120 ; DEF: 1-694 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 isbq const scalar, ord=133 ; 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 ista const scalar, ord=45 ; DEF: 1-684 istac const scalar, ord=46 ; DEF: 1-684 istacq const scalar, ord=47 ; DEF: 1-684 istaq const scalar, ord=48 ; DEF: 1-685 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 istq const scalar, ord=53 ; DEF: 1-685 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 iszn const scalar, ord=174 ; DEF: 1-700 isznc const scalar, ord=175 ; DEF: 1-700 isztl const scalar, ord=521 ; DEF: 1-755 isztr const scalar, ord=522 ; DEF: 1-755 it * var local to body, loc:147, size:4 ; integer ; DEF: 2153 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 itmi const scalar, ord=375 ; DEF: 1-731 itmoz const scalar, ord=376 ; DEF: 1-731 itnc const scalar, ord=377 ; DEF: 1-731 itnz const scalar, ord=378 ; DEF: 1-732 itov const scalar, ord=379 ; DEF: 1-732 itpl const scalar, ord=380 ; DEF: 1-732 itpnz const scalar, ord=381 ; DEF: 1-732 itra const scalar, ord=382 ; DEF: 1-732 itrc const scalar, ord=383 ; 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 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 itze const scalar, ord=405 ; 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 kind field disp:10, size:4 ; scalar ; DEF: 1-852 l4 const scalar, ord=0 ; DEF: 1-785 l6 const scalar, ord=1 ; DEF: 1-785 l9 const scalar, ord=2 ; DEF: 1-785 lcprocess * const numeric ; DEF: 1-382 ldreg field disp:14, size:4 ; scalar ; DEF: 1-889 ldregbloc field disp:20, size:10 ; pointer ; DEF: 1-890 lengthplace * const numeric ; DEF: 1-368 lgcar * type scalar ; DEF: 1-785 lgfilename * const numeric ; DEF: 1-302 lgparm1 * const numeric ; DEF: 1-24 lgprint * const numeric ; DEF: 1-102 link15 * const numeric ; DEF: 1-329 link18 * const numeric ; DEF: 1-328 load const scalar, ord=0 ; DEF: 1-919 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 longfill field disp:30, size:4 ; integer ; DEF: 1-423 longplacew * const numeric ; DEF: 1-291 longprofileplace * const numeric ; DEF: 1-199 longstplacew * const numeric ; DEF: 1-293 longv field disp:70, size:4 ; integer ; DEF: 1-905 lotptrdep * const numeric ; DEF: 1-231 lpclength * const numeric ; DEF: 1-322 lphl * const numeric ; DEF: 1-324 lprp const scalar, ord=2 ; DEF: 1-917 ltop * var local to simpletype, loc:170, size:4 ; integer ; DEF: 945 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 maxhexdi * const numeric ; DEF: 1-117 maxintegerstring const alphanumeric, 20 char(s) ; DEF: 1-123 maxkeylength * const numeric ; DEF: 1-31 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 maxstacksize * const numeric ; DEF: 1-72 maxstring * const numeric ; DEF: 1-34 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 mreg * type scalar subrange ; DEF: 1-778 nameaddr field disp:110, size:10 ; pointer ; DEF: 1-879 nbparmo field disp:214, size:4 ; integer ; DEF: 1-559 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:0, size:10 ; pointer ; DEF: 1-493 next field disp:10, size:10 ; pointer ; DEF: 1-656 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 nextval field disp:0, size:10 ; pointer ; DEF: 1-421 nilleft * const numeric ; DEF: 1-75 nilright * const numeric ; DEF: 1-76 niveau field disp:204, size:4 ; numeric 0..20 ; DEF: 1-558 noerrorcond * const numeric ; DEF: 1-107 normalplace * const numeric ; DEF: 1-374 notafile const scalar, ord=0 ; DEF: 1-437 notpredef const scalar, ord=0 ; DEF: 1-439 ntwotobyte * const numeric ; DEF: 1-89 ntwotohword * const numeric ; DEF: 1-90 numberstring * type packed array of (char) ; DEF: 1-397 nxreg const scalar, ord=10 ; DEF: 1-775 o41 * const numeric ; DEF: 1-144 o43 * const numeric ; DEF: 1-145 objaccedes field disp:140, size:10 ; set of (scalar) ; DEF: 1-527 occurence * type record ; DEF: 1-670 out const scalar, ord=5 ; DEF: 1-814 p0t0r0 const scalar, ord=0 ; DEF: 1-791 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 packednil * const numeric ; DEF: 1-77 pageplace * const numeric ; DEF: 1-171 parerrcode * const numeric ; DEF: 1-252 parmproccheckplace * const numeric ; DEF: 1-223 pascoperatorsdep * const numeric ; DEF: 1-232 pckd field disp:100, size:4 ; boolean ; DEF: 1-878 pckerrcode * const numeric ; DEF: 1-254 pclength * const numeric ; DEF: 1-321 phl * const numeric ; DEF: 1-323 pisrefincode field disp:204, size:4 ; boolean ; DEF: 1-575 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 pointee const scalar, ord=1 ; DEF: 1-813 pr1 const scalar, ord=1 ; DEF: 1-774 pr2 const scalar, ord=2 ; DEF: 1-774 pr3 const scalar, ord=5 ; DEF: 1-774 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-656 previousnode field disp:0, size:10 ; pointer ; DEF: 1-474 priorityplace * const numeric ; DEF: 1-369 prlink const scalar, ord=8 ; DEF: 1-774 procaccesslevel field disp:240, size:4 ; numeric 0..20 ; DEF: 1-581 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 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 procmodlkw * const numeric ; DEF: 1-341 procnode field disp:270, size:10 ; pointer ; DEF: 1-584 procparmsize * const numeric ; DEF: 1-132 procstackinitsize field disp:330, size:4 ; integer ; DEF: 1-588 procwasforwarddef field disp:334, size:4 ; boolean ; DEF: 1-589 prof * const numeric ; DEF: 1-333 profareaptr * type pointer ; DEF: 1-933 prstatic const scalar, ord=7 ; DEF: 1-774 psr const scalar, ord=24 ; DEF: 1-776 psrdepb * const numeric ; DEF: 1-284 psrdepw * const numeric ; DEF: 1-283 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 ptpar field disp:220, size:10 ; pointer ; DEF: 1-560 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 ra const scalar, ord=20 ; DEF: 1-776 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 reaq const scalar, ord=23 ; DEF: 1-776 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 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 rewriteplace * const numeric ; DEF: 1-163 ri const scalar, ord=26 ; DEF: 1-776 roundplace * const numeric ; DEF: 1-181 rq const scalar, ord=21 ; DEF: 1-776 rqfltplace * const numeric ; DEF: 1-183 rsval field disp:20, size:10 ; real ; DEF: 1-903 runtimeentry const scalar, ord=10 ; DEF: 1-443 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 saveplace field disp:4, size:4 ; integer ; DEF: 1-820 scaleplacew * const numeric ; DEF: 1-292 scientplace * const numeric ; DEF: 1-161 self_rel * const numeric ; DEF: 1-331 seterrcode * const numeric ; DEF: 1-255 setinargs field disp:60, size:4 ; boolean ; DEF: 1-967 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 solstandardbit * const numeric ; DEF: 1-239 spri const scalar, ord=1 ; DEF: 1-917 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 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 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 stor const scalar, ord=6 ; DEF: 1-919 stringlength_assignment_error * const numeric ; DEF: 1-260 stringlength_range_error * const numeric ; DEF: 1-259 sttmapind field disp:10, size:4 ; integer ; DEF: 1-430 sttmapptr * type pointer ; DEF: 1-924 stwotobyte * const numeric ; DEF: 1-91 sub const scalar, ord=1 ; DEF: 1-919 subroutine const scalar, ord=1 ; DEF: 1-462 substring_negative_length_error * const numeric ; DEF: 1-262 substring_offset_error * const numeric ; DEF: 1-261 substring_too_long_error * const numeric ; DEF: 1-263 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 tabform * var global exportable, size:130 ; array of (array of (char)) ; DEF: 340 ; REF: 186 357* tabklass * var global exportable, size:100 ; array of (array of (char)) ; DEF: 339 ; REF: 188 355* tabkonst * var global exportable, size:30 ; array of (array of (char)) ; DEF: 341 ; REF: 189 359* tabpdef * var global exportable, size:50 ; array of (array of (char)) ; DEF: 343 ; REF: 190 361* tad const scalar, ord=43 ; DEF: 1-771 tagval field disp:130, size:4 ; boolean ; DEF: 1-612 tal const scalar, ord=5 ; DEF: 1-766 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 tdl const scalar, ord=7 ; DEF: 1-766 tdu const scalar, ord=3 ; DEF: 1-766 temporary field disp:144, size:4 ; boolean ; DEF: 1-883 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 tic const scalar, ord=4 ; DEF: 1-766 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 tno field disp:14, size:4 ; integer ; DEF: 1-495 tql const scalar, ord=6 ; DEF: 1-766 tqly const scalar, ord=22 ; DEF: 1-768 tqu const scalar, ord=2 ; DEF: 1-766 tquy const scalar, ord=18 ; DEF: 1-768 transf field disp:34, size:4 ; integer ; DEF: 1-912 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 twoto12 * const numeric ; DEF: 1-51 twoto18m1 * const numeric ; DEF: 1-58 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 tx6 const scalar, ord=14 ; DEF: 1-767 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 typeofop * type scalar ; DEF: 1-919 typepr * type scalar ; DEF: 1-917 typix * type scalar ; DEF: 1-918 typofconst field disp:140, size:4 ; scalar ; DEF: 1-566 typsig * type scalar ; DEF: 1-786 typtr field disp:0, size:10 ; pointer ; DEF: 1-851 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 undmax * const numeric ; DEF: 1-21 uniformplace * const numeric ; DEF: 1-373 usednamesptr * type pointer ; DEF: 1-974 val field disp:14, size:4 ; integer ; DEF: 1-902 valplacew * const numeric ; DEF: 1-290 valpw field disp:30, size:40 ; array of (integer) ; DEF: 1-904 varmo field disp:220, size:4 ; boolean ; DEF: 1-605 vdspl field disp:340, size:4 ; integer ; DEF: 1-637 vfather field disp:230, size:10 ; pointer ; DEF: 1-606 visrefincode field disp:204, size:4 ; boolean ; DEF: 1-603 visused field disp:164, size:4 ; boolean ; DEF: 1-603 vlev field disp:14, size:4 ; numeric 0..20 ; DEF: 1-855 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 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 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 x7 const scalar, ord=18 ; DEF: 1-775 xbidon const scalar, ord=19 ; DEF: 1-776 zabc * type scalar ; DEF: 1-795 zari * type scalar ; DEF: 1-799 zptr * type scalar ; DEF: 1-791 NAMES DECLARED BY DEFAULT abs funct level 0 ; (standard) ; REF: 1073 1073 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 211 217 223 226 227 232 249 255 268 288 305 313 314 323 326 328 337 406 417 430 431 435 439 441 512 878 882 941 1340 1348 2158 2276 2281 2287 2547 2972 2973 2974 3029 3031 3725 3729 3730 3731 3737 3756 3757 3762 3762 3765 3766 4564 char type char ; REF: 1-397 1-398 1-399 1-400 1-422 1-499 208 209 2285 3758 3760 3762 chr funct level 0 ; (standard) ; REF: 3772 3776 3782 3786 3798 3808 3832 3835 3835 3840 3846 3848 3857 3886 false const scalar, ord=0 ; REF: 1-538 1-549 1-613 550 551 553 555 586 587 592 975 989 1060 1064 1078 1118 1170 1233 1242 1243 1287 1449 1453 1502 1518 1582 1629 1652 1750 1789 1790 1816 1825 1840 1858 1897 1904 1911 1945 1949 1955 1979 1992 2015 2022 2229 2283 2322 2323 2378 2388 2599 2629 2643 2648 2666 2673 2730 2852 2857 3057 3063 3074 3391 3442 3515 3591 3609 3775 3879 3879 3880 3880 3881 3883 3891 3897 3985 4370 4441 4441 4443 4447 4581 4652 4652 4779 4837 4979 5001 5044 5124 5153 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 208 209 212 213 218 219 222 224 229 233 234 235 235 240 243 244 246 247 248 250 252 253 256 258 259 266 267 269 279 283 285 290 291 292 293 295 298 300 309 312 316 321 324 329 333 335 347 402 402 404 406 408 413 413 414 415 415 416 418 419 430 430 431 431 432 432 442 443 448 449 451 453 453 454 454 456 456 457 459 459 460 463 465 473 475 494 496 511 512 513 533 533 534 534 535 535 846 879 887 904 919 942 945 950 965 1035 1036 1319 1341 1345 1346 1347 2151 2153 2157 2201 2275 2277 2279 2283 2285 2286 2548 2549 2549 2551 2552 2558 2970 2975 2976 2977 2978 2981 2984 3028 3038 3732 3755 3767 3769 4198 4296 4298 4408 4409 4410 4559 4560 4561 4563 new proc level 0 ; REF: 557 561 570 578 710 736 4222 4237 4462 5018 5098 odd funct level 0 ; (standard) ; REF: 2501 ord funct level 0 ; (standard) ; REF: 611 614 615 616 683 807 971 1014 1042 1099 1111 1310 1369 1401 1772 1772 2085 2206 2574 3047 3223 3224 3224 3345 3345 3347 3347 3347 3361 3691 3857 4102 4473 4474 4570 real type real ; REF: 1-498 1-568 1-834 1-903 214 464 877 round funct level 0 ; (standard) ; REF: 1881 swrite funct level 0 ; (standard) ; REF: 2348 2350 2352 2353 text type text ; REF: 236 237 true const scalar, ord=1 ; REF: 1-539 1-550 1-614 909 987 996 1002 1007 1009 1051 1054 1073 1122 1140 1164 1199 1280 1290 1404 1457 1461 1578 1649 1703 1796 1796 1812 1862 1866 1961 1995 2027 2240 2282 2297 2314 2331 2347 2370 2563 2598 2682 2736 2798 3072 3108 3109 3140 3141 3190 3297 3440 3459 3478 3512 3521 3529 3547 3548 3592 3613 3620 3630 3651 3652 3679 3682 3782 3782 3794 3804 3804 3825 3825 3832 3885 3889 3896 3899 3901 3906 3908 3911 3913 3914 3917 3921 4019 4115 4324 4340 4437 4586 4628 4741 4776 4796 4844 5027 5086 5107 5157 write proc level 0 ; REF: 610 611 613 616 618 620 623 657 683 806 836 895 971 1013 1042 1098 1110 1309 1368 1390 1401 1768 1771 1783 2084 2206 2251 2293 2330 2354 2451 2511 2574 2939 3046 3221 3222 3344 3349 3360 3690 3862 3930 3932 3945 4048 4063 4101 4158 4172 4270 4384 4473 4513 4525 4534 4570 4723 4737 4758 4814 5135 5174 writeln proc level 0 ; REF: 2329 2355 4514 4526 LABELS BLOCK NAME 1 conformarray DCL : 3025 ; DEF: 3339 ; REF: 3080 3088 3101 3123 3133 3155 3162 3215 3245 3254 3302 1 body DCL : 2149 ; DEF: 4753 ; REF: 2179* 2566* 3599* 4835 5150 1* checkdefiningpoint DCL : 797 ; DEF: 831 1 checkexternalitem DCL : 649 ; DEF: 672 ; REF: 668 2 labelpartdecl DCL : 4196 ; DEF: 4256 ; REF: 4208 2 simpletype DCL : 938 ; DEF: 1275 ; REF: 1254 5 valuedecl DCL : 2544 ; DEF: 2860 ; REF: 2742 10 varpartdecl DCL : 4557 ; DEF: 4717 ; REF: 4655 10 exportpartdecl DCL : 4089 ; DEF: 4168 ; REF: 4109 10 importpartdecl DCL : 3721 ; DEF: 4058 ; REF: 3950 10 valuedecl DCL : 2541 ; DEF: 2885 ; REF: 2643 2648 11 typedecl DCL : 874 ; DEF: 1857 ; REF: 1844 1847 19 typedecl DCL : 875 ; DEF: 1895 ; REF: 1851 20 valuedecl DCL : 2542 ; DEF: 2943 ; REF: 2579 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 545 1 0 550 1 11 551 1 12 552 1 13 553 1 14 554 1 15 555 1 17 556 1 20 556 2 22 557 1 23 558 1 26 558 2 32 559 1 40 561 1 43 562 1 47 562 2 54 563 1 62 564 1 64 566 1 70 567 1 73 570 1 75 571 1 100 573 1 103 574 1 106 575 1 111 576 1 113 578 1 116 579 1 121 581 1 123 582 1 125 583 1 130 585 1 136 586 1 140 587 1 141 588 1 142 589 1 143 590 1 144 591 1 145 592 1 146 593 1 147 594 1 150 594 2 153 595 1 155 596 1 156 596 1 157 605 1 165 608 1 176 610 1 201 610 2 207 610 3 220 611 1 226 612 1 246 613 1 254 615 1 365 616 1 373 617 1 444 618 1 452 619 1 510 620 1 516 622 1 600 623 1 606 623 2 617 623 3 625 625 1 633 625 1 634 634 1 727 655 1 744 657 1 746 658 1 765 661 1 773 662 1 775 663 1 777 665 1 1003 667 1 1011 668 1 1013 670 1 1015 674 1 1021 675 1 1025 676 1 1033 676 2 1041 677 1 1054 678 1 1062 681 1 1074 683 1 1077 684 1 1117 687 1 1125 687 1 1126 694 1 1166 710 1 1203 710 2 1206 710 3 1212 711 1 1220 713 1 1222 713 2 1227 713 3 1232 714 1 1235 714 2 1237 715 1 1241 715 2 1244 716 1 1246 716 2 1254 716 3 1262 717 1 1270 718 1 1273 718 2 1305 719 1 1317 719 2 1321 719 3 1323 723 1 1325 724 1 1327 724 1 1330 729 1 1336 734 1 1347 736 1 1355 737 1 1364 739 1 1370 740 1 1372 743 1 1375 744 1 1401 746 1 1404 747 1 1407 749 1 1412 749 1 1413 753 1 1420 761 1 1431 763 1 1434 764 1 1437 766 1 1443 767 1 1447 768 1 1453 772 1 1457 773 1 1465 774 1 1471 774 1 1472 780 1 1476 804 1 1507 806 1 1511 809 1 1555 812 1 1563 813 1 1575 815 1 1601 816 1 1603 817 1 1625 834 1 1640 836 1 1643 837 1 1654 840 1 1662 840 1 1663 887 1 1722 893 1 1733 895 1 1735 895 2 1753 898 1 1762 898 2 2010 899 1 2020 899 1 2021 904 1 2032 909 1 2043 909 2 2045 910 1 2047 911 1 2052 912 1 2065 914 1 2076 914 1 2077 950 1 2102 969 1 2113 971 1 2115 972 1 2135 975 1 2145 976 1 2171 977 1 2173 978 1 2177 979 1 2205 980 1 2231 981 1 2233 982 1 2237 984 1 2253 985 1 2255 986 1 2260 987 1 2271 987 2 2305 989 1 2307 990 1 2333 992 1 2342 993 1 2344 994 1 2350 995 1 2356 996 1 2402 996 2 2416 999 1 2421 1000 1 2423 1002 1 2426 1002 2 2442 1007 1 2445 1007 2 2447 1007 3 2453 1007 4 2470 1009 1 2505 1011 1 2507 1013 1 2512 1015 1 2546 1018 1 2556 1018 1 2557 1023 1 2621 1040 1 2632 1042 1 2634 1043 1 2654 1046 1 2664 1047 1 2703 1049 1 2705 1051 1 2711 1052 1 2741 1054 1 2743 1055 1 2774 1055 2 2777 1056 1 3002 1057 1 3005 1058 1 3050 1059 1 3054 1060 1 3061 1064 1 3113 1065 1 3143 1067 1 3145 1068 1 3147 1069 1 3152 1070 1 3155 1071 1 3157 1072 1 3162 1073 1 3165 1074 1 3244 1074 2 3247 1075 1 3252 1076 1 3315 1077 1 3321 1078 1 3326 1081 1 3357 1083 1 3361 1083 2 3366 1083 3 3371 1083 4 3374 1084 1 3410 1087 1 3413 1089 1 3427 1089 2 3432 1090 1 3435 1091 1 3440 1092 1 3445 1094 1 3473 1096 1 3476 1098 1 3501 1100 1 3556 1103 1 3566 1103 1 3567 919 1 3625 1108 1 3636 1110 1 3640 1113 1 3706 1116 1 3715 1118 1 3720 1118 2 3731 1119 1 3732 1119 2 3745 1119 3 3751 1120 1 3760 1122 1 3764 1122 2 3777 1122 3 4010 1122 4 4012 1124 1 4015 1126 1 4021 1126 2 4023 1127 1 4046 1128 1 4050 1128 2 4052 1131 1 4064 1132 1 4067 1133 1 4074 1134 1 4101 1135 1 4110 1135 2 4113 1136 1 4124 1137 1 4130 1139 1 4145 1140 1 4154 1141 1 4177 1142 1 4223 1142 2 4247 1145 1 4261 1146 1 4307 1147 1 4335 1149 1 4337 1149 2 4342 1150 1 4345 1152 1 4350 1154 1 4352 1155 1 4360 1156 1 4362 1157 1 4367 1157 2 4372 1157 3 4404 1159 1 4414 1159 2 4417 1161 1 4431 1161 2 4433 1164 1 4436 1165 1 4440 1166 1 4447 1166 2 4451 1167 1 4453 1167 2 4455 1168 1 4462 1169 1 4475 1169 2 4477 1170 1 4501 1171 1 4502 1172 1 4506 1174 1 4511 1175 1 4515 1176 1 4520 1177 1 4522 1178 1 4527 1180 1 4532 1181 1 4535 1183 1 4541 1190 1 4545 1192 1 4552 1192 2 4554 1193 1 4577 1193 2 4604 1194 1 4610 1194 2 4613 1195 1 4636 1196 1 4643 1197 1 4646 1199 1 4663 1199 2 4676 1201 1 4700 1202 1 4702 1203 1 4707 1204 1 4714 1205 1 4765 1206 1 4770 1207 1 4773 1207 2 4776 1209 1 5002 1210 1 5005 1210 2 5010 1212 1 5014 1212 2 5015 1215 1 5023 1215 2 5024 1217 1 5026 1218 1 5061 1220 1 5071 1221 1 5076 1222 1 5101 1223 1 5121 1225 1 5133 1225 2 5135 1226 1 5160 1229 1 5171 1229 2 5173 1231 1 5205 1233 1 5220 1233 2 5231 1234 1 5232 1235 1 5235 1236 1 5255 1237 1 5266 1237 2 5270 1239 1 5302 1241 1 5305 1242 1 5307 1242 2 5320 1243 1 5321 1244 1 5350 1246 1 5352 1248 1 5365 1248 2 5367 1250 1 5371 1250 2 5400 1251 1 5403 1253 1 5406 1253 2 5421 1254 1 5432 1256 1 5433 1257 1 5446 1258 1 5452 1258 2 5454 1259 1 5477 1263 1 5513 1264 1 5536 1266 1 5540 1266 2 5543 1266 3 5546 1267 1 5551 1267 2 5553 1269 1 5555 1269 2 5557 1272 1 5561 1274 1 5574 1276 1 5603 1277 1 5606 1279 1 5610 1280 1 5613 1281 1 5643 1282 1 5704 1284 1 5744 1284 2 5750 1285 1 5774 1285 2 5775 1285 3 5777 1287 1 6001 1288 1 6030 1290 1 6032 1291 1 6062 1292 1 6066 1293 1 6101 1294 1 6142 1295 1 6202 1297 1 6205 1299 1 6210 1299 2 6223 1301 1 6236 1302 1 6241 1302 2 6251 1303 1 6262 1303 2 6264 1305 1 6276 1307 1 6307 1309 1 6312 1311 1 6363 1314 1 6372 1314 1 6373 1353 1 6447 1366 1 6454 1368 1 6456 1370 1 6527 1373 1 6537 1375 1 6545 1375 2 6550 1376 1 6554 1377 1 6562 1379 1 6573 1379 2 6577 1382 1 6603 1384 1 6633 1385 1 6645 1388 1 6650 1390 1 6653 1391 1 6704 1394 1 6714 1394 1 6715 1319 1 6752 1399 1 6763 1401 1 6765 1401 2 7005 1404 1 7014 1405 1 7016 1409 1 7020 1411 1 7023 1413 1 7026 1413 2 7027 1415 1 7031 1416 1 7044 1418 1 7050 1418 2 7052 1419 1 7075 1423 1 7111 1424 1 7130 1426 1 7132 1428 1 7135 1428 2 7137 1429 1 7143 1430 1 7145 1430 2 7147 1432 1 7152 1433 1 7161 1435 1 7164 1436 1 7173 1438 1 7176 1438 2 7211 1441 1 7222 1442 1 7225 1444 1 7230 1446 1 7241 1446 2 7244 1447 1 7260 1448 1 7267 1448 2 7271 1449 1 7272 1449 2 7303 1450 1 7304 1451 1 7315 1453 1 7327 1455 1 7330 1456 1 7341 1457 1 7352 1459 1 7355 1459 2 7357 1460 1 7361 1461 1 7365 1461 2 7400 1464 1 7403 1466 1 7405 1466 2 7410 1467 1 7412 1468 1 7441 1468 2 7444 1469 1 7467 1470 1 7471 1472 1 7477 1472 2 7501 1473 1 7505 1474 1 7510 1475 1 7513 1476 1 7516 1478 1 7523 1480 1 7536 1483 1 7544 1483 2 7550 1484 1 7552 1485 1 7556 1486 1 7562 1487 1 7601 1488 1 7603 1489 1 7607 1492 1 7615 1493 1 7636 1494 1 7643 1496 1 7645 1497 1 7650 1498 1 7677 1500 1 7703 1500 2 7710 1501 1 7722 1501 2 7724 1501 3 7727 1502 1 7732 1502 2 7733 1504 1 7736 1506 1 7751 1508 1 7757 1510 1 7765 1510 2 7770 1511 1 7775 1513 1 7777 1514 1 10026 1514 2 10032 1516 1 10035 1516 2 10046 1517 1 10053 1517 2 10055 1517 3 10060 1518 1 10063 1518 2 10064 1520 1 10067 1522 1 10102 1527 1 10107 1529 1 10111 1530 1 10113 1532 1 10117 1534 1 10122 1536 1 10135 1537 1 10140 1538 1 10146 1539 1 10157 1541 1 10202 1542 1 10205 1544 1 10215 1544 2 10220 1547 1 10233 1548 1 10246 1548 2 10251 1549 1 10253 1551 1 10256 1552 1 10265 1552 2 10270 1554 1 10304 1554 2 10317 1555 1 10321 1556 1 10334 1556 2 10340 1557 1 10347 1558 1 10353 1558 2 10355 1559 1 10357 1560 1 10366 1562 1 10371 1562 2 10375 1564 1 10411 1565 1 10427 1567 1 10431 1567 2 10434 1567 3 10437 1569 1 10442 1570 1 10444 1572 1 10446 1573 1 10455 1573 2 10460 1575 1 10474 1576 1 10507 1576 2 10513 1578 1 10522 1579 1 10524 1579 2 10526 1580 1 10530 1582 1 10540 1583 1 10541 1583 2 10545 1585 1 10561 1585 2 10563 1586 1 10606 1586 2 10613 1588 1 10627 1588 2 10634 1589 1 10640 1589 2 10641 1590 1 10642 1591 1 10645 1592 1 10651 1592 2 10660 1594 1 10674 1594 2 10677 1597 1 10705 1598 1 10711 1600 1 10714 1600 2 10717 1603 1 10725 1603 2 10726 1606 1 10734 1608 1 10747 1608 2 10751 1609 1 10754 1611 1 10757 1611 2 10772 1615 1 10774 1615 2 10777 1616 1 11012 1617 1 11014 1619 1 11016 1621 1 11022 1623 1 11024 1624 1 11054 1627 1 11060 1628 1 11077 1628 2 11120 1629 1 11125 1629 2 11126 1631 1 11131 1633 1 11133 1633 2 11137 1633 3 11142 1636 1 11145 1638 1 11160 1638 2 11165 1641 1 11177 1641 2 11202 1641 3 11204 1642 1 11206 1643 1 11211 1645 1 11220 1647 1 11221 1649 1 11240 1650 1 11242 1652 1 11252 1653 1 11253 1655 1 11312 1655 2 11325 1658 1 11337 1659 1 11343 1661 1 11346 1661 2 11361 1661 3 11365 1662 1 11374 1662 2 11400 1664 1 11414 1664 2 11416 1665 1 11441 1666 1 11444 1666 2 11450 1668 1 11464 1672 1 11555 1672 2 11570 1674 1 11572 1676 1 11603 1676 2 11616 1680 1 11620 1680 2 11623 1680 3 11625 1681 1 11627 1687 1 11653 1687 2 11655 1688 1 11657 1689 1 11661 1691 1 11742 1692 1 11755 1694 1 12001 1695 1 12002 1696 1 12005 1697 1 12023 1697 2 12036 1699 1 12052 1700 1 12101 1702 1 12105 1703 1 12120 1704 1 12143 1706 1 12145 1706 2 12150 1708 1 12153 1708 2 12155 1709 1 12160 1711 1 12167 1712 1 12172 1712 2 12175 1713 1 12205 1714 1 12220 1715 1 12237 1715 2 12242 1715 3 12256 1716 1 12265 1717 1 12267 1719 1 12272 1719 2 12275 1719 3 12300 1720 1 12307 1721 1 12322 1721 2 12325 1721 3 12335 1724 1 12351 1724 2 12364 1724 3 12366 1724 4 12370 1726 1 12401 1727 1 12403 1727 2 12412 1730 1 12415 1731 1 12417 1732 1 12427 1734 1 12433 1736 1 12437 1736 2 12443 1738 1 12445 1738 2 12450 1739 1 12453 1741 1 12456 1743 1 12471 1744 1 12474 1745 1 12501 1746 1 12524 1746 2 12527 1747 1 12536 1748 1 12541 1749 1 12544 1749 2 12547 1749 3 12563 1750 1 12576 1751 1 12621 1753 1 12623 1753 2 12626 1753 3 12631 1754 1 12634 1754 2 12636 1757 1 12641 1759 1 12654 1762 1 12656 1764 1 12660 1766 1 12663 1768 1 12666 1769 1 12734 1771 1 12743 1773 1 13000 1776 1 13007 1776 1 13010 846 1 13064 1781 1 13075 1783 1 13077 1786 1 13154 1789 1 13162 1789 2 13173 1790 1 13174 1791 1 13175 1793 1 13200 1794 1 13206 1795 1 13221 1796 1 13234 1796 2 13236 1799 1 13240 1800 1 13253 1801 1 13267 1803 1 13272 1805 1 13274 1806 1 13302 1808 1 13305 1809 1 13317 1810 1 13332 1812 1 13340 1813 1 13342 1816 1 13344 1817 1 13372 1819 1 13374 1820 1 13406 1823 1 13411 1824 1 13413 1825 1 13421 1825 2 13432 1826 1 13433 1830 1 13446 1832 1 13450 1832 2 13461 1832 3 13462 1832 4 13463 1834 1 13466 1835 1 13477 1837 1 13501 1837 2 13504 1837 3 13507 1839 1 13512 1840 1 13515 1841 1 13516 1843 1 13521 1843 2 13533 1844 1 13544 1844 2 13561 1845 1 13562 1847 1 13565 1847 2 13573 1849 1 13574 1851 1 13577 1851 2 13601 1851 3 13602 1854 1 13603 1855 1 13611 1856 1 13614 1856 2 13623 1858 1 13635 1858 2 13637 1858 3 13640 1858 4 13651 1859 1 13652 1860 1 13663 1861 1 13667 1862 1 13673 1862 2 13705 1862 3 13707 1864 1 13712 1866 1 13721 1866 2 13723 1870 1 13726 1872 1 13730 1872 2 13733 1873 1 13755 1874 1 13777 1874 2 14002 1875 1 14021 1875 2 14025 1876 1 14034 1877 1 14040 1878 1 14043 1878 2 14055 1879 1 14057 1879 2 14062 1881 1 14065 1882 1 14070 1882 2 14073 1883 1 14076 1883 2 14101 1886 1 14104 1888 1 14116 1888 2 14120 1889 1 14122 1890 1 14126 1891 1 14130 1893 1 14141 1894 1 14143 1897 1 14166 1898 1 14214 1900 1 14216 1902 1 14230 1904 1 14232 1904 2 14243 1906 1 14244 1907 1 14252 1908 1 14254 1908 2 14255 1909 1 14256 1910 1 14260 1910 2 14271 1911 1 14273 1911 2 14274 1912 1 14275 1914 1 14310 1916 1 14321 1916 2 14324 1917 1 14336 1918 1 14340 1920 1 14352 1921 1 14363 1922 1 14365 1923 1 14407 1926 1 14413 1926 2 14415 1927 1 14420 1929 1 14424 1929 2 14426 1929 3 14431 1929 4 14434 1931 1 14437 1933 1 14442 1935 1 14444 1935 2 14447 1935 3 14452 1936 1 14455 1939 1 14460 1942 1 14472 1942 2 14475 1945 1 14504 1946 1 14532 1948 1 14534 1949 1 14546 1951 1 14575 1952 1 14603 1953 1 14606 1953 2 14615 1954 1 14627 1954 2 14631 1955 1 14632 1955 2 14643 1956 1 14644 1957 1 14655 1958 1 14675 1959 1 14707 1961 1 14713 1961 2 14725 1961 3 14727 1964 1 14732 1965 1 14734 1965 2 14737 1966 1 14750 1967 1 14753 1969 1 14756 1971 1 14770 1973 1 14772 1976 1 15015 1977 1 15023 1978 1 15026 1978 2 15035 1979 1 15047 1979 2 15060 1979 3 15061 1979 4 15063 1982 1 15064 1983 1 15075 1984 1 15110 1985 1 15130 1987 1 15142 1988 1 15153 1988 2 15167 1989 1 15201 1990 1 15217 1992 1 15231 1993 1 15257 1995 1 15261 1996 1 15310 1997 1 15314 1998 1 15326 1999 1 15365 2000 1 15423 2003 1 15426 2005 1 15440 2006 1 15443 2007 1 15445 2011 1 15471 2013 1 15511 2015 1 15514 2015 2 15525 2016 1 15526 2017 1 15534 2018 1 15545 2019 1 15550 2021 1 15562 2022 1 15617 2023 1 15645 2025 1 15647 2026 1 15652 2027 1 15664 2028 1 15713 2030 1 15752 2030 2 15764 2030 3 15770 2031 1 15776 2032 1 16002 2032 2 16004 2033 1 16026 2034 1 16052 2035 1 16054 2036 1 16061 2037 1 16066 2038 1 16070 2041 1 16072 2043 1 16076 2045 1 16100 2045 2 16112 2045 3 16114 2047 1 16116 2049 1 16121 2049 2 16133 2049 3 16135 2051 1 16137 2053 1 16154 2053 2 16161 2054 1 16164 2054 2 16167 2055 1 16172 2055 2 16174 2056 1 16177 2056 2 16202 2058 1 16205 2060 1 16214 2060 2 16216 2061 1 16224 2062 1 16231 2062 2 16236 2063 1 16242 2065 1 16245 2065 2 16247 2066 1 16271 2068 1 16312 2069 1 16315 2071 1 16321 2075 1 16333 2077 1 16345 2080 1 16371 2082 1 16402 2084 1 16405 2086 1 16463 2089 1 16471 2089 1 16472 2165 1 16554 2176 1 16561 2178 1 16564 2178 2 16577 2179 1 16612 2179 2 16615 2181 1 16620 2182 1 16627 2187 1 16630 2204 1 16635 2206 1 16637 2207 1 16674 2211 1 16703 2212 1 16705 2214 1 16710 2217 1 16711 2218 1 16713 2219 1 16715 2220 1 16717 2221 1 16721 2222 1 16723 2223 1 16725 2225 1 16730 2226 1 16733 2227 1 16736 2229 1 16741 2231 1 16754 2233 1 16756 2234 1 16773 2237 1 16776 2238 1 17020 2239 1 17022 2240 1 17035 2243 1 17050 2243 2 17066 2243 3 17112 2245 1 17117 2246 1 17142 2246 2 17144 2247 1 17146 2247 2 17150 2249 1 17163 2251 1 17166 2251 2 17205 2254 1 17214 2254 1 17215 2259 1 17243 2291 1 17250 2293 1 17252 2294 1 17307 2297 1 17316 2297 2 17320 2298 1 17333 2300 1 17335 2301 1 17364 2302 1 17366 2304 1 17370 2308 1 17446 2309 1 17450 2310 1 17463 2311 1 17465 2312 1 17514 2313 1 17516 2314 1 17531 2319 1 17544 2320 1 17562 2320 2 17606 2322 1 17613 2323 1 17614 2324 1 17615 2325 1 17624 2326 1 17640 2328 1 17643 2329 1 17652 2330 1 17672 2330 2 17711 2331 1 17720 2334 1 17723 2335 1 17726 2336 1 17751 2338 1 17755 2339 1 17760 2341 1 17764 2342 1 17766 2343 1 17775 2344 1 20011 2347 1 20034 2348 1 20036 2349 1 20072 2350 1 20074 2351 1 20120 2352 1 20123 2353 1 20143 2354 1 20162 2354 2 20175 2355 1 20204 2356 1 20220 2357 1 20225 2360 1 20230 2361 1 20235 2361 2 20237 2362 1 20252 2362 2 20254 2363 1 20267 2365 1 20273 2366 1 20276 2368 1 20317 2369 1 20321 2370 1 20334 2372 1 20347 2372 2 20354 2374 1 20355 2375 1 20357 2377 1 20372 2377 2 20377 2378 1 20412 2379 1 20416 2380 1 20445 2383 1 20461 2384 1 20463 2385 1 20473 2386 1 20507 2387 1 20511 2388 1 20524 2391 1 20537 2392 1 20546 2393 1 20554 2393 2 20600 2395 1 20605 2400 1 20620 2401 1 20622 2402 1 20626 2403 1 20630 2405 1 20634 2409 1 20640 2411 1 20642 2413 1 20647 2414 1 20660 2417 1 20672 2417 2 20700 2420 1 20706 2420 2 20711 2420 3 20714 2421 1 20715 2425 1 20776 2426 1 21000 2427 1 21013 2428 1 21016 2429 1 21020 2432 1 21026 2433 1 21041 2434 1 21054 2435 1 21056 2436 1 21106 2437 1 21125 2437 2 21144 2438 1 21163 2439 1 21172 2441 1 21174 2442 1 21176 2443 1 21231 2444 1 21236 2448 1 21256 2450 1 21262 2451 1 21271 2451 2 21310 2452 1 21317 2454 1 21332 2456 1 21336 2457 1 21342 2459 1 21345 2460 1 21351 2462 1 21354 2463 1 21374 2464 1 21376 2465 1 21411 2467 1 21415 2467 2 21425 2469 1 21440 2470 1 21444 2472 1 21447 2473 1 21467 2473 2 21471 2473 3 21504 2473 4 21506 2474 1 21522 2477 1 21526 2478 1 21532 2480 1 21535 2481 1 21555 2482 1 21570 2485 1 21574 2486 1 21600 2488 1 21603 2489 1 21623 2489 2 21625 2489 3 21627 2489 4 21652 2490 1 21657 2493 1 21663 2494 1 21665 2495 1 21671 2497 1 21673 2499 1 21676 2500 1 21716 2501 1 21731 2501 2 21734 2501 3 21747 2503 1 21751 2503 2 21753 2503 3 21756 2505 1 21762 2506 1 22002 2507 1 22004 2509 1 22017 2511 1 22022 2511 2 22047 2514 1 22056 2514 1 22057 2558 1 22153 2562 1 22164 2563 1 22200 2564 1 22203 2565 1 22217 2566 1 22222 2566 2 22236 2566 3 22242 2567 1 22252 2567 1 22253 2519 1 22254 2572 1 22261 2574 1 22263 2575 1 22311 2578 1 22320 2579 1 22323 2579 2 22326 2582 1 22327 2584 1 22333 2584 2 22335 2585 1 22341 2587 1 22345 2588 1 22351 2589 1 22353 2590 1 22355 2592 1 22361 2594 1 22365 2596 1 22370 2597 1 22372 2598 1 22405 2598 2 22414 2599 1 22417 2600 1 22420 2601 1 22422 2602 1 22424 2603 1 22426 2604 1 22430 2605 1 22434 2606 1 22436 2606 2 22442 2607 1 22446 2607 2 22453 2609 1 22457 2611 1 22465 2613 1 22471 2615 1 22475 2615 2 22477 2616 1 22502 2617 1 22505 2619 1 22507 2620 1 22533 2621 1 22535 2623 1 22550 2623 2 22552 2626 1 22554 2627 1 22557 2628 1 22566 2629 1 22605 2633 1 22637 2636 1 22641 2638 1 22644 2640 1 22657 2641 1 22662 2642 1 22676 2643 1 22705 2643 2 22706 2645 1 22707 2645 2 22722 2646 1 22735 2648 1 22740 2648 2 22741 2650 1 22742 2653 1 22752 2654 1 22765 2654 2 22771 2655 1 23003 2655 2 23010 2656 1 23022 2657 1 23024 2659 1 23033 2660 1 23046 2661 1 23050 2662 1 23073 2662 2 23077 2663 1 23111 2664 1 23114 2664 2 23120 2666 1 23132 2667 1 23133 2668 1 23137 2669 1 23142 2670 1 23145 2671 1 23154 2672 1 23173 2672 2 23207 2673 1 23216 2673 2 23221 2673 3 23222 2674 1 23223 2676 1 23227 2678 1 23232 2679 1 23235 2680 1 23240 2682 1 23250 2684 1 23252 2687 1 23255 2688 1 23260 2688 2 23264 2690 1 23276 2692 1 23306 2693 1 23310 2696 1 23316 2698 1 23332 2699 1 23344 2700 1 23346 2700 2 23350 2701 1 23353 2702 1 23365 2703 1 23374 2703 2 23377 2704 1 23401 2705 1 23403 2709 1 23437 2709 2 23442 2712 1 23454 2712 2 23457 2714 1 23470 2716 1 23472 2718 1 23475 2720 1 23503 2720 2 23505 2722 1 23507 2723 1 23511 2724 1 23531 2725 1 23551 2726 1 23567 2727 1 23607 2728 1 23635 2730 1 23636 2730 2 23645 2731 1 23670 2732 1 23672 2734 1 23711 2735 1 23727 2735 2 23732 2736 1 23745 2736 2 23754 2738 1 23777 2739 1 24002 2741 1 24005 2742 1 24016 2744 1 24017 2746 1 24021 2747 1 24042 2748 1 24066 2750 1 24102 2751 1 24111 2752 1 24134 2752 2 24142 2752 3 24155 2756 1 24163 2757 1 24172 2758 1 24201 2759 1 24205 2760 1 24220 2760 2 24226 2760 3 24241 2762 1 24247 2762 2 24256 2764 1 24272 2764 2 24275 2765 1 24310 2766 1 24312 2766 2 24320 2766 3 24327 2768 1 24335 2769 1 24344 2770 1 24353 2772 1 24361 2772 2 24374 2773 1 24410 2774 1 24413 2774 2 24427 2774 3 24442 2776 1 24447 2776 2 24455 2779 1 24471 2781 1 24474 2782 1 24507 2784 1 24512 2785 1 24514 2786 1 24516 2788 1 24524 2789 1 24537 2790 1 24546 2792 1 24554 2793 1 24602 2793 2 24615 2794 1 24630 2795 1 24633 2795 2 24636 2798 1 24646 2799 1 24671 2801 1 24673 2802 1 24714 2803 1 24740 2805 1 24754 2806 1 24763 2807 1 25006 2811 1 25022 2812 1 25031 2813 1 25040 2813 2 25044 2814 1 25057 2816 1 25073 2816 2 25102 2818 1 25116 2818 2 25121 2819 1 25134 2820 1 25136 2822 1 25146 2823 1 25155 2825 1 25164 2825 2 25177 2826 1 25213 2827 1 25216 2827 2 25232 2827 3 25245 2829 1 25253 2832 1 25267 2834 1 25272 2835 1 25305 2838 1 25321 2839 1 25334 2840 1 25336 2842 1 25346 2844 1 25374 2846 1 25407 2846 2 25422 2848 1 25436 2850 1 25441 2851 1 25450 2852 1 25453 2852 2 25462 2854 1 25464 2855 1 25467 2857 1 25503 2857 2 25512 2861 1 25513 2863 1 25516 2864 1 25521 2865 1 25524 2867 1 25526 2870 1 25606 2871 1 25610 2873 1 25623 2874 1 25625 2877 1 25627 2878 1 25646 2885 1 25675 2887 1 25701 2888 1 25704 2890 1 25706 2894 1 25751 2895 1 25753 2899 1 25766 2900 1 25770 2902 1 25774 2903 1 25776 2904 1 26003 2905 1 26011 2906 1 26017 2907 1 26026 2908 1 26055 2910 1 26061 2910 2 26064 2911 1 26067 2912 1 26074 2912 2 26100 2912 3 26106 2913 1 26113 2915 1 26115 2916 1 26123 2917 1 26142 2918 1 26151 2919 1 26170 2920 1 26177 2922 1 26216 2923 1 26220 2924 1 26226 2925 1 26232 2930 1 26307 2931 1 26311 2934 1 26324 2937 1 26330 2939 1 26333 2940 1 26360 2945 1 26367 2945 1 26370 2984 1 26435 3044 1 26446 3046 1 26450 3048 1 26540 3053 1 26550 3054 1 26551 3055 1 26552 3056 1 26554 3057 1 26556 3057 2 26560 3058 1 26561 3059 1 26563 3060 1 26565 3063 1 26567 3067 1 26570 3069 1 26573 3070 1 26603 3071 1 26605 3072 1 26621 3074 1 26624 3076 1 26625 3078 1 26644 3079 1 26660 3080 1 26676 3083 1 26700 3084 1 26710 3086 1 26713 3087 1 26727 3088 1 26745 3096 1 26747 3097 1 26757 3099 1 26762 3100 1 26776 3101 1 27014 3103 1 27015 3104 1 27036 3105 1 27056 3107 1 27060 3108 1 27063 3109 1 27066 3111 1 27071 3112 1 27073 3113 1 27075 3117 1 27100 3118 1 27110 3120 1 27113 3121 1 27127 3122 1 27145 3123 1 27150 3128 1 27151 3129 1 27161 3131 1 27164 3132 1 27200 3133 1 27216 3135 1 27217 3136 1 27240 3137 1 27260 3139 1 27262 3140 1 27265 3141 1 27270 3143 1 27273 3144 1 27275 3145 1 27300 3149 1 27302 3150 1 27312 3152 1 27315 3153 1 27331 3154 1 27347 3155 1 27352 3157 1 27353 3158 1 27363 3160 1 27366 3161 1 27402 3162 1 27420 3164 1 27421 3164 2 27435 3164 3 27441 3165 1 27451 3167 1 27455 3170 1 27472 3171 1 27474 3172 1 27520 3175 1 27525 3176 1 27532 3177 1 27536 3178 1 27553 3181 1 27570 3182 1 27604 3185 1 27606 3186 1 27612 3190 1 27617 3191 1 27647 3193 1 27651 3194 1 27663 3195 1 27666 3196 1 27671 3199 1 27674 3200 1 27700 3201 1 27703 3202 1 27706 3203 1 27711 3204 1 27713 3206 1 27716 3207 1 27726 3209 1 27745 3210 1 27761 3214 1 27777 3215 1 30002 3219 1 30003 3221 1 30005 3221 2 30016 3222 1 30026 3225 1 30073 3229 1 30103 3240 1 30106 3242 1 30111 3243 1 30125 3244 1 30143 3245 1 30146 3246 1 30150 3248 1 30161 3249 1 30171 3251 1 30174 3252 1 30210 3253 1 30226 3254 1 30231 3255 1 30233 3257 1 30244 3261 1 30254 3263 1 30257 3263 2 30273 3263 3 30277 3264 1 30307 3266 1 30313 3269 1 30330 3270 1 30332 3271 1 30356 3274 1 30363 3275 1 30370 3278 1 30375 3279 1 30411 3282 1 30413 3283 1 30416 3285 1 30422 3286 1 30424 3288 1 30430 3289 1 30432 3290 1 30454 3291 1 30461 3295 1 30466 3297 1 30515 3300 1 30520 3301 1 30534 3302 1 30552 3306 1 30553 3308 1 30555 3309 1 30557 3310 1 30563 3312 1 30567 3313 1 30610 3314 1 30631 3315 1 30634 3317 1 30641 3319 1 30645 3323 1 30651 3324 1 30653 3326 1 30662 3327 1 30665 3328 1 30670 3329 1 30675 3330 1 30677 3332 1 30707 3333 1 30711 3334 1 30714 3335 1 30721 3336 1 30724 3337 1 30726 3342 1 30731 3344 1 30734 3348 1 31047 3349 1 31057 3350 1 31076 3353 1 31106 3353 1 31107 2950 1 31251 3358 1 31256 3360 1 31260 3361 1 31315 3365 1 31324 3367 1 31337 3367 2 31355 3368 1 31364 3368 2 31367 3370 1 31403 3371 1 31416 3371 2 31422 3373 1 31436 3374 1 31455 3376 1 31457 3376 2 31462 3377 1 31465 3379 1 31470 3380 1 31473 3383 1 31476 3384 1 31501 3385 1 31503 3386 1 31510 3386 2 31512 3387 1 31514 3388 1 31523 3389 1 31525 3390 1 31526 3391 1 31537 3392 1 31540 3394 1 31543 3394 2 31552 3395 1 31557 3395 2 31562 3397 1 31571 3399 1 31573 3399 2 31576 3399 3 31606 3400 1 31621 3402 1 31624 3402 2 31637 3402 3 31642 3405 1 31656 3406 1 31665 3408 1 31671 3408 2 31673 3409 1 31716 3411 1 31723 3411 2 31736 3414 1 31741 3414 2 31746 3415 1 31752 3417 1 31757 3417 2 31772 3420 1 31775 3421 1 32010 3422 1 32013 3423 1 32016 3426 1 32025 3427 1 32030 3428 1 32032 3429 1 32044 3430 1 32055 3431 1 32061 3432 1 32064 3433 1 32066 3438 1 32074 3440 1 32077 3441 1 32101 3442 1 32111 3443 1 32112 3445 1 32115 3447 1 32116 3448 1 32131 3450 1 32135 3450 2 32137 3451 1 32162 3455 1 32176 3456 1 32201 3457 1 32220 3459 1 32222 3459 2 32225 3459 3 32237 3461 1 32242 3462 1 32244 3464 1 32247 3465 1 32256 3467 1 32261 3468 1 32270 3468 2 32273 3470 1 32307 3471 1 32312 3471 2 32325 3473 1 32334 3474 1 32337 3474 2 32342 3475 1 32351 3477 1 32400 3478 1 32407 3479 1 32411 3481 1 32414 3481 2 32420 3482 1 32422 3482 2 32424 3483 1 32426 3485 1 32435 3487 1 32441 3489 1 32445 3490 1 32450 3491 1 32453 3493 1 32456 3495 1 32461 3498 1 32467 3498 2 32472 3500 1 32506 3501 1 32515 3502 1 32521 3505 1 32535 3505 2 32537 3506 1 32562 3508 1 32566 3509 1 32572 3510 1 32605 3512 1 32607 3513 1 32611 3515 1 32624 3516 1 32655 3518 1 32657 3520 1 32662 3521 1 32664 3523 1 32666 3523 2 32673 3525 1 32707 3525 2 32714 3526 1 32720 3528 1 32735 3529 1 32750 3531 1 32752 3533 1 32755 3533 2 32761 3534 1 32763 3537 1 32766 3538 1 32774 3539 1 33002 3541 1 33005 3542 1 33012 3544 1 33016 3545 1 33035 3546 1 33041 3547 1 33044 3548 1 33047 3549 1 33052 3550 1 33057 3552 1 33063 3553 1 33066 3554 1 33071 3558 1 33074 3560 1 33100 3562 1 33103 3563 1 33106 3565 1 33111 3566 1 33123 3567 1 33131 3567 2 33137 3568 1 33142 3569 1 33145 3570 1 33152 3571 1 33154 3573 1 33160 3574 1 33163 3575 1 33166 3579 1 33173 3582 1 33203 3583 1 33216 3586 1 33231 3588 1 33234 3589 1 33243 3591 1 33246 3591 2 33247 3592 1 33263 3593 1 33266 3594 1 33314 3595 1 33316 3597 1 33321 3597 2 33334 3598 1 33347 3599 1 33362 3602 1 33365 3602 2 33367 3603 1 33371 3605 1 33375 3605 2 33377 3606 1 33402 3606 2 33405 3609 1 33410 3609 2 33412 3609 3 33413 3610 1 33414 3611 1 33415 3612 1 33417 3613 1 33423 3614 1 33426 3616 1 33430 3617 1 33431 3619 1 33435 3620 1 33441 3622 1 33444 3624 1 33447 3626 1 33462 3629 1 33466 3630 1 33472 3632 1 33475 3634 1 33501 3634 2 33504 3635 1 33507 3637 1 33513 3638 1 33521 3639 1 33526 3640 1 33532 3644 1 33555 3645 1 33562 3647 1 33566 3648 1 33605 3649 1 33611 3650 1 33614 3651 1 33621 3652 1 33624 3653 1 33627 3656 1 33634 3657 1 33637 3658 1 33644 3660 1 33650 3661 1 33653 3662 1 33656 3667 1 33661 3669 1 33674 3671 1 33700 3673 1 33704 3675 1 33711 3677 1 33724 3679 1 33730 3681 1 33732 3682 1 33735 3684 1 33740 3685 1 33743 3686 1 33745 3688 1 33751 3690 1 33754 3692 1 34011 3695 1 34020 3695 1 34021 3762 1 34064 3772 1 34075 3775 1 34076 3776 1 34077 3777 1 34126 3779 1 34130 3780 1 34135 3782 1 34141 3782 2 34143 3782 3 34145 3785 1 34150 3786 1 34174 3790 1 34224 3792 1 34240 3793 1 34245 3794 1 34251 3795 1 34254 3797 1 34300 3797 2 34301 3798 1 34305 3799 1 34334 3801 1 34336 3802 1 34343 3804 1 34347 3804 2 34351 3807 1 34354 3808 1 34400 3816 1 34430 3818 1 34457 3819 1 34461 3822 1 34463 3823 1 34466 3825 1 34471 3825 2 34473 3828 1 34476 3829 1 34526 3830 1 34533 3832 1 34537 3832 2 34541 3834 1 34544 3835 1 34570 3840 1 34620 3844 1 34634 3845 1 34641 3846 1 34645 3847 1 34650 3848 1 34674 3851 1 34710 3852 1 34722 3853 1 34726 3855 1 34737 3856 1 34741 3857 1 34743 3857 2 35027 3860 1 35034 3862 1 35037 3865 1 35121 3871 1 35132 3871 1 35133 3736 1 35166 3877 1 35177 3878 1 35203 3878 2 35210 3878 3 35215 3879 1 35222 3879 2 35223 3880 1 35224 3880 2 35225 3880 3 35227 3880 4 35230 3881 1 35231 3883 1 35232 3884 1 35251 3885 1 35253 3886 1 35255 3888 1 35257 3889 1 35304 3891 1 35307 3894 1 35311 3896 1 35314 3897 1 35316 3898 1 35335 3899 1 35337 3900 1 35341 3901 1 35344 3904 1 35346 3906 1 35351 3907 1 35370 3908 1 35372 3909 1 35374 3911 1 35407 3912 1 35426 3913 1 35433 3914 1 35436 3916 1 35440 3917 1 35443 3920 1 35445 3921 1 35453 3925 1 35455 3928 1 35467 3930 1 35472 3931 1 35517 3932 1 35527 3933 1 35546 3938 1 35556 3938 1 35557 3700 1 35631 3943 1 35636 3945 1 35640 3945 2 35650 3948 1 35657 3950 1 35661 3950 2 35674 3950 3 35703 3952 1 35704 3953 1 35706 3955 1 35721 3956 1 35730 3958 1 35747 3958 2 35762 3960 1 35777 3963 1 36016 3965 1 36037 3966 1 36041 3968 1 36054 3970 1 36055 3971 1 36064 3973 1 36067 3973 2 36102 3975 1 36120 3977 1 36127 3979 1 36132 3979 2 36145 3982 1 36162 3985 1 36165 3986 1 36166 3987 1 36205 3990 1 36211 3990 2 36214 3991 1 36217 3992 1 36222 3994 1 36226 3994 2 36241 3997 1 36244 3998 1 36273 4001 1 36277 4002 1 36304 4003 1 36307 4004 1 36314 4005 1 36326 4006 1 36333 4007 1 36341 4010 1 36347 4011 1 36356 4012 1 36361 4013 1 36370 4014 1 36373 4014 2 36406 4018 1 36424 4019 1 36437 4019 2 36452 4028 1 36455 4029 1 36460 4030 1 36470 4032 1 36473 4032 2 36475 4033 1 36510 4034 1 36525 4034 2 36530 4039 1 36540 4041 1 36543 4041 2 36556 4043 1 36566 4046 1 36575 4048 1 36600 4049 1 36611 4049 2 36620 4050 1 36622 4052 1 36626 4053 1 36640 4061 1 36644 4063 1 36647 4064 1 36674 4068 1 36703 4068 1 36704 4072 1 36763 4099 1 36770 4101 1 36772 4102 1 37012 4104 1 37021 4107 1 37023 4109 1 37025 4109 2 37040 4109 3 37047 4111 1 37050 4112 1 37052 4113 1 37065 4115 1 37074 4117 1 37076 4118 1 37111 4118 2 37124 4120 1 37141 4122 1 37144 4123 1 37163 4126 1 37167 4126 2 37172 4127 1 37175 4128 1 37200 4129 1 37204 4132 1 37220 4134 1 37247 4134 2 37255 4135 1 37270 4136 1 37277 4138 1 37302 4139 1 37311 4140 1 37314 4141 1 37327 4144 1 37345 4146 1 37350 4147 1 37363 4147 2 37366 4150 1 37404 4152 1 37407 4152 2 37422 4154 1 37432 4156 1 37441 4158 1 37444 4159 1 37455 4160 1 37464 4161 1 37466 4163 1 37475 4164 1 37507 4170 1 37513 4172 1 37516 4174 1 37543 4177 1 37552 4177 1 37553 4181 1 37634 4201 1 37641 4202 1 37650 4205 1 37667 4206 1 37676 4208 1 37715 4208 2 37730 4209 1 37731 4211 1 37736 4211 2 37741 4213 1 37754 4214 1 37757 4216 1 37773 4217 1 37776 4219 1 40012 4219 2 40014 4220 1 40017 4220 2 40021 4220 3 40023 4221 1 40025 4222 1 40030 4223 1 40034 4223 2 40041 4224 1 40050 4226 1 40054 4227 1 40056 4228 1 40061 4229 1 40063 4230 1 40066 4231 1 40071 4232 1 40076 4233 1 40103 4234 1 40106 4235 1 40111 4236 1 40114 4236 2 40116 4237 1 40120 4238 1 40124 4238 2 40131 4239 1 40140 4240 1 40144 4240 2 40146 4242 1 40150 4243 1 40155 4244 1 40162 4245 1 40164 4247 1 40172 4248 1 40176 4249 1 40201 4250 1 40207 4257 1 40214 4258 1 40223 4260 1 40226 4261 1 40235 4261 2 40254 4263 1 40270 4263 2 40273 4265 1 40307 4266 1 40312 4268 1 40321 4270 1 40324 4271 1 40352 4274 1 40361 4274 1 40362 4278 1 40403 4301 1 40410 4302 1 40412 4303 1 40421 4305 1 40424 4306 1 40437 4308 1 40443 4308 2 40445 4309 1 40470 4311 1 40503 4312 1 40507 4312 2 40511 4313 1 40513 4314 1 40515 4315 1 40524 4317 1 40532 4318 1 40545 4320 1 40550 4321 1 40553 4322 1 40562 4324 1 40601 4324 2 40605 4325 1 40607 4326 1 40617 4327 1 40632 4329 1 40635 4330 1 40640 4331 1 40653 4332 1 40675 4334 1 40677 4335 1 40702 4335 2 40704 4337 1 40727 4340 1 40737 4341 1 40762 4344 1 40764 4345 1 41006 4347 1 41010 4352 1 41014 4353 1 41036 4355 1 41040 4360 1 41044 4361 1 41066 4363 1 41070 4365 1 41073 4367 1 41105 4368 1 41124 4370 1 41127 4371 1 41130 4373 1 41132 4373 2 41135 4376 1 41140 4378 1 41153 4379 1 41155 4382 1 41163 4384 1 41166 4384 2 41177 4387 1 41206 4387 1 41207 4391 1 41225 4414 1 41232 4415 1 41234 4416 1 41243 4418 1 41246 4419 1 41261 4421 1 41265 4421 2 41267 4422 1 41312 4424 1 41325 4424 2 41327 4425 1 41331 4426 1 41335 4427 1 41337 4428 1 41346 4430 1 41354 4431 1 41367 4433 1 41372 4434 1 41375 4435 1 41404 4437 1 41423 4437 2 41425 4438 1 41431 4439 1 41441 4441 1 41454 4441 2 41455 4441 3 41456 4442 1 41457 4443 1 41471 4444 1 41472 4445 1 41506 4447 1 41514 4448 1 41542 4450 1 41544 4453 1 41547 4455 1 41562 4458 1 41565 4460 1 41567 4460 2 41573 4461 1 41576 4461 2 41601 4461 3 41604 4462 1 41607 4462 2 41613 4462 3 41620 4463 1 41627 4465 1 41633 4465 2 41635 4468 1 41637 4471 1 41641 4473 1 41644 4475 1 41711 4480 1 41720 4481 1 41725 4482 1 41740 4483 1 41762 4484 1 41766 4486 1 42002 4486 2 42007 4486 3 42012 4488 1 42020 4488 2 42036 4489 1 42052 4489 2 42054 4490 1 42101 4491 1 42106 4494 1 42114 4495 1 42116 4496 1 42123 4498 1 42136 4498 2 42143 4499 1 42152 4501 1 42156 4502 1 42163 4502 2 42170 4503 1 42174 4504 1 42177 4506 1 42220 4506 2 42225 4506 3 42230 4507 1 42236 4507 2 42254 4511 1 42271 4512 1 42304 4513 1 42313 4514 1 42344 4515 1 42376 4518 1 42405 4519 1 42412 4521 1 42414 4522 1 42427 4524 1 42434 4525 1 42443 4526 1 42473 4527 1 42524 4528 1 42533 4529 1 42540 4532 1 42541 4534 1 42544 4534 2 42555 4537 1 42564 4537 1 42565 4541 1 42667 4568 1 42674 4570 1 42676 4570 2 42724 4573 1 42733 4574 1 42734 4575 1 42743 4577 1 42746 4577 2 42747 4577 3 42750 4579 1 42751 4581 1 42753 4582 1 42754 4583 1 42767 4585 1 42773 4585 2 42775 4586 1 43020 4586 2 43033 4588 1 43035 4589 1 43054 4591 1 43056 4592 1 43061 4593 1 43063 4595 1 43075 4596 1 43114 4597 1 43120 4599 1 43123 4601 1 43125 4602 1 43152 4603 1 43155 4605 1 43202 4607 1 43206 4608 1 43211 4610 1 43214 4613 1 43230 4614 1 43232 4617 1 43235 4617 2 43240 4619 1 43244 4620 1 43247 4622 1 43253 4623 1 43256 4626 1 43262 4627 1 43265 4628 1 43270 4631 1 43273 4632 1 43275 4633 1 43304 4635 1 43307 4636 1 43316 4638 1 43321 4638 2 43334 4641 1 43350 4643 1 43353 4645 1 43366 4646 1 43371 4650 1 43373 4651 1 43376 4651 2 43406 4652 1 43421 4652 2 43422 4652 3 43423 4653 1 43424 4654 1 43436 4655 1 43447 4660 1 43450 4661 1 43474 4663 1 43520 4665 1 43522 4666 1 43561 4668 1 43563 4670 1 43567 4671 1 43602 4672 1 43604 4673 1 43605 4676 1 43610 4678 1 43617 4680 1 43621 4681 1 43624 4684 1 43627 4685 1 43632 4689 1 43636 4693 1 43645 4695 1 43654 4696 1 43701 4698 1 43721 4699 1 43724 4701 1 43740 4702 1 43743 4703 1 43760 4705 1 43762 4706 1 43766 4708 1 43772 4712 1 43775 4714 1 44010 4716 1 44013 4718 1 44022 4721 1 44030 4723 1 44033 4723 2 44052 4726 1 44061 4726 1 44062 2096 1 44116 4735 1 44133 4737 1 44135 4737 2 44146 4740 1 44154 4740 2 44155 4741 1 44157 4742 1 44161 4745 1 44164 4746 1 44170 4747 1 44172 4748 1 44177 4749 1 44202 4750 1 44206 4754 1 44220 4756 1 44231 4758 1 44234 4758 2 44245 4762 1 44253 4764 1 44261 4765 1 44264 4767 1 44271 4768 1 44274 4770 1 44301 4771 1 44304 4773 1 44311 4774 1 44314 4776 1 44321 4777 1 44323 4778 1 44326 4779 1 44333 4781 1 44334 4782 1 44336 4787 1 44353 4788 1 44356 4789 1 44363 4791 1 44365 4792 1 44367 4794 1 44373 4795 1 44400 4796 1 44414 4797 1 44416 4799 1 44422 4799 2 44425 4800 1 44440 4803 1 44446 4805 1 44451 4807 1 44463 4808 1 44475 4812 1 44500 4814 1 44503 4814 2 44514 4817 1 44522 4820 1 44535 4822 1 44537 4823 1 44541 4824 1 44543 4826 1 44545 4826 2 44547 4827 1 44551 4828 1 44553 4829 1 44556 4830 1 44571 4831 1 44603 4832 1 44611 4834 1 44614 4834 2 44626 4835 1 44637 4837 1 44640 4838 1 44641 4839 1 44653 4841 1 44657 4843 1 44664 4843 2 44666 4844 1 44710 4844 2 44722 4844 3 44724 4847 1 44726 4849 1 44732 4850 1 44750 4852 1 44752 4853 1 44755 4855 1 44767 4856 1 45005 4857 1 45011 4859 1 45013 4862 1 45026 4863 1 45027 4865 1 45033 4867 1 45035 4868 1 45061 4869 1 45064 4871 1 45110 4872 1 45113 4873 1 45116 4875 1 45120 4876 1 45133 4878 1 45176 4879 1 45205 4879 2 45214 4880 1 45223 4880 2 45232 4881 1 45241 4881 2 45250 4882 1 45257 4882 2 45266 4883 1 45275 4884 1 45303 4886 1 45356 4887 1 45362 4890 1 45365 4891 1 45377 4892 1 45411 4895 1 45414 4896 1 45431 4897 1 45433 4898 1 45441 4899 1 45443 4899 2 45445 4900 1 45446 4902 1 45451 4903 1 45453 4905 1 45456 4905 2 45464 4905 3 45465 4906 1 45472 4907 1 45475 4909 1 45503 4910 1 45506 4912 1 45511 4913 1 45514 4913 2 45523 4915 1 45535 4917 1 45540 4917 2 45552 4917 3 45555 4920 1 45570 4921 1 45576 4923 1 45602 4923 2 45604 4924 1 45626 4925 1 45633 4925 2 45645 4928 1 45650 4928 2 45655 4929 1 45661 4930 1 45666 4930 2 45700 4933 1 45703 4934 1 45715 4935 1 45720 4939 1 45727 4940 1 45730 4942 1 45733 4942 2 45741 4942 3 45742 4943 1 45747 4944 1 45752 4945 1 45755 4948 1 45763 4949 1 45766 4950 1 45771 4951 1 45774 4953 1 46003 4953 2 46015 4955 1 46027 4956 1 46032 4957 1 46033 4958 1 46036 4959 1 46050 4961 1 46053 4963 1 46062 4964 1 46064 4966 1 46066 4967 1 46112 4967 2 46114 4970 1 46117 4971 1 46126 4973 1 46131 4973 2 46143 4975 1 46145 4976 1 46147 4977 1 46162 4978 1 46166 4978 2 46200 4979 1 46203 4979 2 46215 4980 1 46217 4981 1 46225 4983 1 46230 4983 2 46242 4986 1 46254 4988 1 46256 4989 1 46261 4990 1 46264 4992 1 46267 4993 1 46272 4994 1 46314 4995 1 46317 4996 1 46324 4998 1 46326 4999 1 46330 5000 1 46333 5002 1 46401 5002 2 46403 5007 1 46415 5009 1 46427 5012 1 46432 5013 1 46435 5015 1 46451 5015 2 46453 5017 1 46455 5018 1 46473 5019 1 46476 5021 1 46500 5022 1 46502 5023 1 46507 5024 1 46513 5025 1 46516 5026 1 46521 5027 1 46524 5028 1 46527 5029 1 46531 5030 1 46533 5031 1 46535 5032 1 46540 5033 1 46543 5034 1 46545 5035 1 46550 5036 1 46553 5037 1 46556 5039 1 46561 5041 1 46563 5043 1 46601 5044 1 46606 5045 1 46610 5049 1 46615 5050 1 46620 5052 1 46624 5052 2 46626 5053 1 46650 5057 1 46663 5060 1 46736 5061 1 46750 5061 2 46753 5063 1 46756 5064 1 46764 5066 1 46767 5068 1 47001 5069 1 47013 5069 2 47026 5071 1 47034 5072 1 47047 5073 1 47052 5073 2 47061 5074 1 47073 5076 1 47076 5076 2 47101 5077 1 47113 5078 1 47116 5078 2 47125 5079 1 47137 5080 1 47142 5080 2 47150 5080 3 47162 5082 1 47170 5083 1 47172 5085 1 47174 5085 2 47177 5086 1 47201 5086 2 47204 5087 1 47207 5089 1 47212 5090 1 47215 5092 1 47231 5092 2 47233 5095 1 47235 5097 1 47247 5098 1 47265 5099 1 47270 5101 1 47272 5102 1 47274 5103 1 47301 5104 1 47305 5105 1 47310 5106 1 47313 5107 1 47316 5108 1 47321 5109 1 47323 5110 1 47325 5111 1 47327 5112 1 47332 5113 1 47335 5114 1 47337 5115 1 47342 5116 1 47345 5117 1 47350 5119 1 47353 5121 1 47355 5123 1 47373 5124 1 47400 5125 1 47402 5128 1 47406 5129 1 47410 5130 1 47421 5131 1 47426 5133 1 47441 5135 1 47444 5135 2 47455 5139 1 47463 5140 1 47500 5141 1 47502 5143 1 47513 5145 1 47516 5145 2 47530 5146 1 47542 5148 1 47555 5148 2 47563 5150 1 47576 5150 2 47611 5153 1 47612 5154 1 47613 5155 1 47620 5156 1 47626 5157 1 47633 5158 1 47635 5159 1 47652 5161 1 47656 5162 1 47662 5163 1 47700 5163 2 47707 5164 1 47711 5165 1 47713 5166 1 47715 5169 1 47730 5172 1 47736 5174 1 47741 5174 2 47752 5177 1 47760 5177 1 47761 21 1 50116 21 1 50127 5180 1 50145 5180 1 50154 5180 1 50156 ----------------------------------------------------------- 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