COMPILATION LISTING OF SEGMENT runtime_symbol_info_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/12/86 1652.3 mst Wed Options: optimize map 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 /****^ HISTORY COMMENTS: 10* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 11* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1212): 12* Added runtime_symbol_info_$subrange entry which was missing. Added 13* has_dimensions and has_subrange_limits fields in type_info record. 14* Structure version numbers have not been changed since this change does not 15* affect existing programs. 16* END HISTORY COMMENTS */ 17 18 /* Written June 83 JMAthane Grenoble University */ 19 20 /* This set of entries return information about both old (fixed format) 21* and new (variable format designed for PASCAL) symbol tables */ 22 23 24 /* The include segment runtime_symbol_info_.incl.pl1 contains declarations 25* of these entries and of the structures filled by them. */ 26 /* Changed to use include file declarations 09/02/83 S. Herbst */ 27 /* Added version strings to structures, status codes to entries using them 10/05/83 S. Herbst */ 28 /* Added subrange entry, and filling of new fields in type_info 29*(size_is_encoded, has_subrange_limits and has_dimensions) JMAthane 08/31/84 */ 30 31 runtime_symbol_info_: proc; 32 33 dcl bp ptr parameter; 34 dcl info_ptr ptr parameter; 35 dcl code fixed bin (35); 36 37 dcl i fixed bin; 38 dcl work ptr; 39 dcl (addr, addrel, bin, fixed, min, null, size) 40 builtin; 41 42 dcl error_table_$unimplemented_version 43 fixed bin (35) external; 44 45 son: entry (bp) returns (ptr); 46 47 if bp -> pascal_symbol_node_header.flags.version_flag then 48 if bp -> runtime_symbol.son = "0"b then return (null); 49 else return (addrel (bp, bp -> runtime_symbol.son)); 50 51 if ^bp -> pascal_symbol_node_header.flags.son_level then return (null); 52 53 i = size (pascal_symbol_node_header); 54 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 55 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 56 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 57 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 58 work = addrel (bp, i); 59 if work -> pascal_son_level.son = 0 then return (null); 60 return (addrel (bp, work -> pascal_son_level.son)); 61 62 father_type: entry (bp) returns (ptr); 63 64 if bp -> pascal_symbol_node_header.flags.version_flag then 65 return (null); 66 67 if ^bp -> pascal_symbol_node_header.flags.father_type_successor then return (null); 68 69 i = size (pascal_symbol_node_header); 70 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 71 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 72 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 73 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 74 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 75 work = addrel (bp, i); 76 if work -> pascal_father_type_successor.father_type = 0 then return (null); 77 return (addrel (bp, work -> pascal_father_type_successor.father_type)); 78 79 successor: entry (bp) returns (ptr); 80 81 if bp -> pascal_symbol_node_header.flags.version_flag then 82 return (null); 83 84 if ^bp -> pascal_symbol_node_header.flags.father_type_successor then return (null); 85 86 i = size (pascal_symbol_node_header); 87 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 88 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 89 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 90 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 91 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 92 work = addrel (bp, i); 93 if work -> pascal_father_type_successor.successor = 0 then return (null); 94 return (addrel (bp, work -> pascal_father_type_successor.successor)); 95 96 level: entry (bp) returns (fixed bin); 97 98 if bp -> pascal_symbol_node_header.flags.version_flag then 99 return (fixed (bp -> runtime_symbol.level, 6)); 100 101 if ^bp -> pascal_symbol_node_header.flags.son_level then return (0); 102 103 i = size (pascal_symbol_node_header); 104 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 105 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 106 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 107 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 108 return (addrel (bp, i) -> pascal_son_level.level); 109 110 type: entry (bp, info_ptr, code); 111 112 dcl 1 type_info like runtime_type_info based (info_ptr); 113 114 if type_info.version ^= RUNTIME_TYPE_INFO_VERSION_1 then do; 115 code = error_table_$unimplemented_version; 116 return; 117 end; 118 119 code = 0; 120 121 if bp -> pascal_symbol_node_header.version_flag then do; 122 type_info.aligned = bp -> runtime_symbol.aligned; 123 type_info.packed = bp -> runtime_symbol.packed; 124 type_info.scale = fixed (bp -> runtime_symbol.scale, 8); 125 type_info.size = bp -> runtime_symbol.size; 126 type_info.size_is_encoded = is_encoded (type_info.size); 127 type_info.type = fixed (bp -> runtime_symbol.type, 6); 128 type_info.base_type = 0; 129 type_info.type_addr = null; 130 type_info.base_type_addr = null; 131 type_info.has_dimensions = (bp -> runtime_symbol.ndims ^= "0"b); 132 type_info.has_subrange_limits = "0"b; 133 return; 134 end; 135 136 type_info.aligned = bp -> pascal_symbol_node_header.aligned; 137 type_info.packed = bp -> pascal_symbol_node_header.packed; 138 type_info.type = bp -> pascal_symbol_node_header.type; 139 type_info.size_is_encoded = bp -> pascal_symbol_node_header.size_is_encoded; 140 type_info.has_dimensions = bp -> pascal_symbol_node_header.array_info; 141 type_info.has_subrange_limits = bp -> pascal_symbol_node_header.subrange_limits; 142 type_info.scale = 0; 143 if bp -> pascal_symbol_node_header.type_offset = 0 then 144 type_info.type_addr = null; 145 else 146 type_info.type_addr = addrel (bp, bp -> pascal_symbol_node_header.type_offset); 147 if ^bp -> pascal_symbol_node_header.base_type_info then do; 148 type_info.base_type = 0; 149 type_info.base_type_addr = null; 150 if ^bp -> pascal_symbol_node_header.size then type_info.size = 0; 151 else do; 152 i = size (pascal_symbol_node_header); 153 if bp -> pascal_symbol_node_header.flags.name_next then 154 i = i + size (pascal_name_next); 155 if bp -> pascal_symbol_node_header.flags.base_type_info then 156 i = i + size (pascal_base_type_info); 157 if bp -> pascal_symbol_node_header.flags.address then 158 i = i + size (pascal_address); 159 if bp -> pascal_symbol_node_header.flags.father_brother then 160 i = i + size (pascal_father_brother); 161 if bp -> pascal_symbol_node_header.flags.son_level then 162 i = i + size (pascal_son_level); 163 if bp -> pascal_symbol_node_header.flags.father_type_successor then 164 i = i + size (pascal_father_type_successor); 165 work = addrel (bp, i); 166 type_info.size = work -> pascal_size; 167 end; 168 end; 169 else do; 170 i = size (pascal_symbol_node_header); 171 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 172 work = addrel (bp, i); 173 type_info.base_type = work -> pascal_base_type_info.base_type; 174 if work -> pascal_base_type_info.base_type_offset = 0 then 175 type_info.base_type_addr = null; 176 else 177 type_info.base_type_addr = addrel (bp, work -> pascal_base_type_info.base_type_offset); 178 if ^bp -> pascal_symbol_node_header.size then type_info.size = 0; 179 else do; 180 if bp -> pascal_symbol_node_header.flags.base_type_info then 181 i = i + size (pascal_base_type_info); 182 if bp -> pascal_symbol_node_header.flags.address then 183 i = i + size (pascal_address); 184 if bp -> pascal_symbol_node_header.flags.father_brother then 185 i = i + size (pascal_father_brother); 186 if bp -> pascal_symbol_node_header.flags.son_level then 187 i = i + size (pascal_son_level); 188 if bp -> pascal_symbol_node_header.flags.father_type_successor then 189 i = i + size (pascal_father_type_successor); 190 work = addrel (bp, i); 191 type_info.size = work -> pascal_size; 192 end; 193 end; 194 return; 195 196 father: entry (bp) returns (ptr); 197 198 if bp -> pascal_symbol_node_header.flags.version_flag then 199 if bp -> runtime_symbol.father = "0"b then return (null); 200 else return (addrel (bp, bp -> runtime_symbol.father)); 201 202 if ^bp -> pascal_symbol_node_header.flags.father_brother then return (null ()); 203 204 i = size (pascal_symbol_node_header); 205 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 206 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 207 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 208 work = addrel (bp, i); 209 if work -> pascal_father_brother.father = 0 then return (null); 210 return (addrel (bp, work -> pascal_father_brother.father)); 211 212 brother: entry (bp) returns (ptr); 213 214 if bp -> pascal_symbol_node_header.flags.version_flag then 215 if bp -> runtime_symbol.brother = "0"b then return (null); 216 else return (addrel (bp, bp -> runtime_symbol.brother)); 217 218 if ^bp -> pascal_symbol_node_header.flags.father_brother then return (null ()); 219 220 i = size (pascal_symbol_node_header); 221 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 222 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 223 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 224 work = addrel (bp, i); 225 if work -> pascal_father_brother.brother = 0 then return (null); 226 else 227 return (addrel (bp, work -> pascal_father_brother.brother)); 228 229 name: entry (bp) returns (ptr); 230 231 if bp -> pascal_symbol_node_header.flags.version_flag then 232 if bp -> runtime_symbol.name = "0"b then return (null); 233 else return (addrel (bp, bp -> runtime_symbol.name)); 234 235 if ^bp -> pascal_symbol_node_header.flags.name_next then return (null); 236 237 work = addrel (bp, size (pascal_symbol_node_header)); 238 if work -> pascal_name_next.name = 0 then return (null); 239 return (addrel (bp, work -> pascal_name_next.name)); 240 241 242 next: entry (bp) returns (ptr); 243 244 if bp -> pascal_symbol_node_header.flags.version_flag then do; 245 if bp -> runtime_symbol.next = "0"b then return (null); 246 return (addrel (bp, bin (bp -> runtime_symbol.next, 14) - 16384)); 247 end; 248 249 if ^bp -> pascal_symbol_node_header.flags.name_next then return (null); 250 251 work = addrel (bp, size (pascal_symbol_node_header)); 252 if work -> pascal_name_next.next_token = 0 then return (null); 253 return (addrel (bp, work -> pascal_name_next.next_token)); 254 255 address: entry (bp, info_ptr, code); 256 257 dcl 1 address_info like runtime_address_info based (info_ptr); 258 259 if address_info.version ^= RUNTIME_ADDRESS_INFO_VERSION_1 then do; 260 code = error_table_$unimplemented_version; 261 return; 262 end; 263 264 code = 0; 265 266 if bp -> pascal_symbol_node_header.flags.version_flag then do; 267 address_info.location = fixed (bp -> runtime_symbol.location, 18); 268 address_info.class = fixed (bp -> runtime_symbol.class, 4); 269 address_info.units = fixed (bp -> runtime_symbol.units, 2); 270 address_info.use_digit = fixed (bp -> runtime_symbol.use_digit, 1); 271 if bp -> runtime_symbol.bits.simple then do; 272 address_info.offset_is_encoded = "0"b; 273 address_info.offset = 0; 274 end; 275 else do; 276 address_info.offset = bp -> runtime_symbol.offset; 277 address_info.offset_is_encoded = is_encoded (address_info.offset); 278 end; 279 return; 280 end; 281 282 if ^bp -> pascal_symbol_node_header.flags.address then do; 283 address_info.class = 0; 284 return; 285 end; 286 287 i = size (pascal_symbol_node_header); 288 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 289 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 290 work = addrel (bp, i); 291 address_info.location = work -> pascal_address.location; 292 address_info.class = work -> pascal_address.class; 293 address_info.units = fixed (work -> pascal_address.units, 2); 294 address_info.use_digit = fixed (work -> pascal_address.use_digit, 1); 295 address_info.offset_is_encoded = work -> pascal_address.offset_is_encoded; 296 297 if ^bp -> pascal_symbol_node_header.flags.offset then address_info.offset = 0; 298 else do; 299 i = i + size (pascal_address); 300 if bp -> pascal_symbol_node_header.flags.father_brother then 301 i = i + size (pascal_father_brother); 302 if bp -> pascal_symbol_node_header.flags.son_level then 303 i = i + size (pascal_son_level); 304 if bp -> pascal_symbol_node_header.flags.father_type_successor then 305 i = i + size (pascal_father_type_successor); 306 if bp -> pascal_symbol_node_header.flags.size then 307 i = i + size (pascal_size); 308 address_info.offset = addrel (bp, i) -> pascal_offset; 309 end; 310 return; 311 312 array_dims: entry (bp) returns (fixed bin); 313 314 if bp -> pascal_symbol_node_header.version_flag then return (bp -> runtime_symbol.ndims); 315 316 if ^bp -> pascal_symbol_node_header.array_info then return (0); 317 318 i = size (pascal_symbol_node_header); 319 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 320 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 321 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 322 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 323 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 324 if bp -> pascal_symbol_node_header.flags.father_type_successor then i = i + size (pascal_father_type_successor); 325 if bp -> pascal_symbol_node_header.flags.size then i = i + size (pascal_size); 326 if bp -> pascal_symbol_node_header.flags.offset then i = i + size (pascal_offset); 327 if bp -> pascal_symbol_node_header.flags.subrange_limits then i = i + size (pascal_subrange_limits); 328 return (addrel (bp, i) -> pascal_array_info.ndims); 329 330 array: entry (bp, info_ptr, code); 331 332 dcl 1 array_info like runtime_array_info based (info_ptr); 333 334 if array_info.version ^= RUNTIME_ARRAY_INFO_VERSION_1 then do; 335 code = error_table_$unimplemented_version; 336 return; 337 end; 338 339 code = 0; 340 341 if bp -> pascal_symbol_node_header.version_flag then do; 342 n_dims = fixed (bp -> runtime_symbol.ndims, 6); 343 unspec (array_info) = "0"b; 344 array_info.ndims = n_dims; 345 if n_dims > 0 then do; 346 array_info.use_digit = fixed (bp -> runtime_symbol.use_digit, 1); 347 array_info.array_units = fixed (bp -> runtime_symbol.array_units, 2); 348 array_info.virtual_origin = bp -> runtime_symbol.virtual_org; 349 array_info.virtual_origin_is_encoded = is_encoded (array_info.virtual_origin); 350 do i = 1 to min (n_dims, 16); 351 array_info.bounds (i).lower = bp -> runtime_symbol.bounds (i).lower; 352 array_info.bounds (i).upper = bp -> runtime_symbol.bounds (i).upper; 353 array_info.bounds (i).multiplier = bp -> runtime_symbol.bounds (i).multiplier; 354 array_info.bounds (i).lower_is_encoded = is_encoded (array_info.bounds (i).lower); 355 array_info.bounds (i).upper_is_encoded = is_encoded (array_info.bounds (i).upper); 356 array_info.bounds (i).multiplier_is_encoded = is_encoded (array_info.bounds (i).multiplier); 357 array_info.bounds (i).subscript_type = 0; 358 array_info.bounds (i).subscript_type_addr = null; 359 end; 360 end; 361 return; 362 end; 363 364 if ^bp -> pascal_symbol_node_header.array_info then return; 365 366 i = size (pascal_symbol_node_header); 367 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 368 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 369 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 370 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 371 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 372 if bp -> pascal_symbol_node_header.flags.father_type_successor then i = i + size (pascal_father_type_successor); 373 if bp -> pascal_symbol_node_header.flags.size then i = i + size (pascal_size); 374 if bp -> pascal_symbol_node_header.flags.offset then i = i + size (pascal_offset); 375 if bp -> pascal_symbol_node_header.flags.subrange_limits then i = i + size (pascal_subrange_limits); 376 work = addrel (bp, i); 377 array_info.ndims, n_dims = work -> pascal_array_info.ndims; 378 array_info.array_units = work -> pascal_array_info.array_units; 379 array_info.virtual_origin_is_encoded = work -> pascal_array_info.virtual_origin_is_encoded; 380 array_info.virtual_origin = work -> pascal_array_info.virtual_origin; 381 array_info.use_digit = work -> pascal_array_info.use_digit; 382 do i = 1 to min (n_dims, 16); 383 array_info.bounds (i).lower_is_encoded = work -> pascal_array_info.bounds (i).lower_is_encoded; 384 array_info.bounds (i).upper_is_encoded = work -> pascal_array_info.bounds (i).upper_is_encoded; 385 array_info.bounds (i).multiplier_is_encoded = work -> pascal_array_info.bounds (i).multiplier_is_encoded; 386 array_info.bounds (i).lower = work -> pascal_array_info.bounds (i).lower; 387 array_info.bounds (i).upper = work -> pascal_array_info.bounds (i).upper; 388 array_info.bounds (i).multiplier = work -> pascal_array_info.bounds (i).multiplier; 389 array_info.bounds (i).subscript_type = work -> pascal_array_info.bounds (i).subscript_type; 390 if work -> pascal_array_info.bounds (i).subscript_type_offset ^= 0 then 391 array_info.bounds (i).subscript_type_addr = 392 addrel (bp, work -> pascal_array_info.bounds (i).subscript_type_offset); 393 else 394 array_info.bounds (i).subscript_type_addr = null; 395 end; 396 return; 397 398 subrange: entry (bp, info_ptr, code); 399 400 dcl 1 subrange_info like runtime_subrange_info based (info_ptr); 401 402 if subrange_info.version ^= RUNTIME_SUBRANGE_INFO_VERSION_1 then do; 403 code = error_table_$unimplemented_version; 404 return; 405 end; 406 407 code = 0; 408 409 subrange_info.has_subrange_limits = "0"b; 410 411 if bp -> pascal_symbol_node_header.version_flag then return; 412 413 if ^bp -> pascal_symbol_node_header.subrange_limits then return; 414 415 i = size (pascal_symbol_node_header); 416 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 417 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 418 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 419 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 420 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 421 if bp -> pascal_symbol_node_header.flags.father_type_successor then i = i + size (pascal_father_type_successor); 422 if bp -> pascal_symbol_node_header.flags.size then i = i + size (pascal_size); 423 if bp -> pascal_symbol_node_header.flags.offset then i = i + size (pascal_offset); 424 work = addrel (bp, i); 425 subrange_info.has_subrange_limits = "1"b; 426 subrange_info.upper_bound_is_encoded = work -> pascal_subrange_limits.upper_bound_is_encoded; 427 subrange_info.lower_bound_is_encoded = work -> pascal_subrange_limits.lower_bound_is_encoded; 428 subrange_info.subrange_lower_bound = work -> pascal_subrange_limits.subrange_lower_bound; 429 subrange_info.subrange_upper_bound = work -> pascal_subrange_limits.subrange_upper_bound; 430 return; 431 432 n_variants: entry (bp) returns (fixed bin); 433 434 if bp -> pascal_symbol_node_header.version_flag then return (0); 435 436 if ^bp -> pascal_symbol_node_header.variant_info then return (0); 437 438 i = size (pascal_symbol_node_header); 439 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 440 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 441 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 442 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 443 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 444 if bp -> pascal_symbol_node_header.flags.father_type_successor then i = i + size (pascal_father_type_successor); 445 if bp -> pascal_symbol_node_header.flags.size then i = i + size (pascal_size); 446 if bp -> pascal_symbol_node_header.flags.offset then i = i + size (pascal_offset); 447 if bp -> pascal_symbol_node_header.flags.subrange_limits then i = i + size (pascal_subrange_limits); 448 if bp -> pascal_symbol_node_header.array_info then do; 449 nd = addrel (bp, i) -> pascal_array_info.ndims; 450 i = i + size (addrel (bp, i) -> pascal_array_info); 451 end; 452 453 return (addrel (bp, i) -> pascal_variant_info.number_of_variants); 454 455 variant: entry (bp, info_ptr, code); 456 457 dcl 1 variant_info like runtime_variant_info based (info_ptr); 458 459 if variant_info.version ^= RUNTIME_VARIANT_INFO_VERSION_1 then do; 460 code = error_table_$unimplemented_version; 461 return; 462 end; 463 464 code = 0; 465 466 if bp -> pascal_symbol_node_header.version_flag then do; 467 no_variants: 468 return; 469 end; 470 471 if ^bp -> pascal_symbol_node_header.variant_info then go to no_variants; 472 473 i = size (pascal_symbol_node_header); 474 if bp -> pascal_symbol_node_header.flags.name_next then i = i + size (pascal_name_next); 475 if bp -> pascal_symbol_node_header.flags.base_type_info then i = i + size (pascal_base_type_info); 476 if bp -> pascal_symbol_node_header.flags.address then i = i + size (pascal_address); 477 if bp -> pascal_symbol_node_header.flags.father_brother then i = i + size (pascal_father_brother); 478 if bp -> pascal_symbol_node_header.flags.son_level then i = i + size (pascal_son_level); 479 if bp -> pascal_symbol_node_header.flags.father_type_successor then i = i + size (pascal_father_type_successor); 480 if bp -> pascal_symbol_node_header.flags.size then i = i + size (pascal_size); 481 if bp -> pascal_symbol_node_header.flags.offset then i = i + size (pascal_offset); 482 if bp -> pascal_symbol_node_header.flags.subrange_limits then i = i + size (pascal_subrange_limits); 483 if bp -> pascal_symbol_node_header.array_info then do; 484 nd = addrel (bp, i) -> pascal_array_info.ndims; 485 i = i + size (addrel (bp, i) -> pascal_array_info); 486 end; 487 work = addrel (bp, i); 488 n_variants, 489 variant_info.number_of_variants = work -> pascal_variant_info.number_of_variants; 490 variant_info.first_value_in_set = work -> pascal_variant_info.first_value_in_set; 491 do i = 1 to n_variants; 492 if work -> pascal_variant_info.case (i).set_offset ^= 0 then 493 variant_info.case (i).set_addr = addrel (bp, work -> pascal_variant_info.case (i).set_offset); 494 else 495 variant_info.case (i).set_addr = null; 496 if work -> pascal_variant_info.case (i).brother ^= 0 then 497 variant_info.case (i).brother_addr = addrel (bp, work -> pascal_variant_info.case (i).brother); 498 else 499 variant_info.case (i).brother_addr = null; 500 end; 501 return; 502 503 is_encoded: proc (value) returns (bit (1)); 504 505 dcl value fixed bin (35); 506 507 if addr (value) -> encoded_value.flag = "10"b then do; 508 addr (value) -> encoded_value.flag = "00"b; 509 return ("1"b); 510 end; 511 else return ("0"b); 512 513 end is_encoded; 514 1 1 /* BEGIN INCLUDE FILE runtime_symbol_info_.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 1 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 1 7* Added runtime_symbol_info_$subrange entry which was missing. Added 1 8* has_dimensions and has subrange_limits fields in type_info record. 1 9* Structure version numbers have not been changed since this change does not 1 10* affect existing programs. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* Declarations for using the various entry points in runtime_symbol_info_ */ 1 14 /* NOTE: These entries do not support PL/1 version 1. */ 1 15 1 16 /* Made structures aligned, removed variable extent from runtime_array_info.bounds 08/25/83 S. Herbst */ 1 17 /* Added version strings to structures 10/05/83 S. Herbst */ 1 18 /* Added has_dimensions and has_subrange_limits bits in type_info 1 19*Added subrange entry. JMAthane 08/31/84 */ 1 20 1 21 1 22 dcl runtime_symbol_info_$type entry (ptr, ptr, fixed bin (35)); 1 23 1 24 dcl 1 runtime_type_info aligned based, 1 25 2 version char (8), /* = "RUNTYP_1" */ 1 26 2 flags, 1 27 3 aligned bit (1) unal, 1 28 3 packed bit (1) unal, 1 29 3 size_is_encoded bit (1) unal, 1 30 3 has_dimensions bit (1) unal, 1 31 3 has_subrange_limits bit (1) unal, 1 32 3 pad bit (23) unal, 1 33 2 scale fixed bin (7) unal, 1 34 2 (type, base_type) fixed bin (18) unsigned unal, 1 35 2 (type_addr, base_type_addr) ptr, 1 36 2 size fixed bin (35); 1 37 1 38 dcl runtime_symbol_info_$father entry (ptr) returns (ptr); 1 39 1 40 dcl runtime_symbol_info_$brother entry (ptr) returns (ptr); 1 41 1 42 dcl runtime_symbol_info_$father_type entry (ptr) returns (ptr); 1 43 1 44 dcl runtime_symbol_info_$son entry (ptr) returns (ptr); 1 45 1 46 dcl runtime_symbol_info_$successor entry (ptr) returns (ptr); 1 47 1 48 dcl runtime_symbol_info_$name entry (ptr) returns (ptr); 1 49 1 50 dcl runtime_symbol_info_$level entry (ptr) returns (fixed bin); 1 51 1 52 dcl runtime_symbol_info_$next entry (ptr) returns (ptr); 1 53 1 54 dcl runtime_symbol_info_$address entry (ptr, ptr, fixed bin (35)); 1 55 1 56 dcl 1 runtime_address_info aligned based, 1 57 2 version char (8), /* = "RUNADR_1" */ 1 58 2 location fixed bin (18) unsigned unal, 1 59 2 class fixed bin (6) unsigned unal, 1 60 2 use_digit fixed bin (1) unsigned unal, 1 61 2 units fixed bin (2) unsigned unal, 1 62 2 offset_is_encoded bit (1) unal, 1 63 2 pad bit (8) unal, 1 64 2 offset fixed bin (35); 1 65 1 66 dcl runtime_symbol_info_$array_dims entry (ptr) returns (fixed bin); 1 67 1 68 dcl runtime_symbol_info_$array entry (ptr, ptr, fixed bin (35)); 1 69 1 70 dcl 1 runtime_array_info aligned based, 1 71 2 version char (8), /* = "RUNARY_1" */ 1 72 2 access_info aligned, 1 73 3 ndims fixed bin (6) unsigned unaligned, /* number of dimensions */ 1 74 3 use_digit fixed bin (1) unsigned unaligned, /* if "1"b and units are half words, 1 75* units are really digits */ 1 76 3 array_units fixed bin (2) unsigned unaligned, 1 77 3 virtual_origin_is_encoded 1 78 bit (1) unaligned, 1 79 3 pad bit (26) unaligned, 1 80 2 virtual_origin fixed bin (35), 1 81 2 bounds (16) 1 82 aligned, 1 83 3 flags aligned, 1 84 4 lower_is_encoded 1 85 bit (1) unaligned, 1 86 4 upper_is_encoded 1 87 bit (1) unaligned, 1 88 4 multiplier_is_encoded 1 89 bit (1) unaligned, 1 90 4 pad bit (33) unaligned, 1 91 3 lower fixed bin (35), 1 92 3 upper fixed bin (35), 1 93 3 multiplier fixed bin (35), 1 94 3 subscript_type fixed bin (35), 1 95 3 subscript_type_addr ptr; 1 96 1 97 dcl n_dims fixed bin; 1 98 1 99 dcl runtime_symbol_info_$n_variants entry (ptr) returns (fixed bin (35)); 1 100 1 101 dcl runtime_symbol_info_$variant entry (ptr, ptr, fixed bin (35)); 1 102 1 103 dcl 1 runtime_variant_info aligned based, 1 104 2 version char (8), /* = "RUNVAR_1" */ 1 105 2 number_of_variants fixed bin, 1 106 2 first_value_in_set fixed bin (35), /* value corresponding to the first bit in set stings */ 1 107 2 case (n_variants), 1 108 3 set_addr ptr, /* bit string specifies cases; 1 109* set's base type is this node's type */ 1 110 3 brother_addr ptr; /* ptr to brother for this variant */ 1 111 1 112 dcl n_variants fixed bin (35); 1 113 1 114 dcl runtime_symbol_info_$subrange entry (ptr, ptr, fixed bin (35)); 1 115 1 116 dcl 1 runtime_subrange_info based, 1 117 2 version char (8), /* = "RUNSUB_1" */ 1 118 2 flags aligned, 1 119 3 has_subrange_limits bit (1) unal, 1 120 3 lower_bound_is_encoded bit (1) unal, 1 121 3 upper_bound_is_encoded bit (1) unal, 1 122 3 pad bit (33) unal, 1 123 2 subrange_lower_bound fixed bin (35), 1 124 2 subrange_upper_bound fixed bin (35); 1 125 1 126 1 127 dcl RUNTIME_TYPE_INFO_VERSION_1 char (8) int static options (constant) init ("RUNTYP_1"); 1 128 dcl RUNTIME_ADDRESS_INFO_VERSION_1 char (8) int static options (constant) init ("RUNADR_1"); 1 129 dcl RUNTIME_ARRAY_INFO_VERSION_1 char (8) int static options (constant) init ("RUNARY_1"); 1 130 dcl RUNTIME_VARIANT_INFO_VERSION_1 char (8) int static options (constant) init ("RUNVAR_1"); 1 131 dcl RUNTIME_SUBRANGE_INFO_VERSION_1 char (8) int static options (constant) init ("RUNSUB_1"); 1 132 1 133 1 134 /* END INCLUDE FILE runtime_symbol_info_.incl.pl1 */ 515 516 2 1 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 2 2 2 3 dcl 1 runtime_symbol aligned based, 2 4 2 flag unal bit(1), /* always "1"b for Version II */ 2 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 2 6 2 array_units unal bit(2), 2 7 2 units unal bit(2), /* addressing units */ 2 8 2 type unal bit(6), /* data type */ 2 9 2 level unal bit(6), /* structure level */ 2 10 2 ndims unal bit(6), /* number of dimensions */ 2 11 2 bits unal, 2 12 3 aligned bit(1), 2 13 3 packed bit(1), 2 14 3 simple bit(1), 2 15 2 skip unal bit(1), 2 16 2 scale unal bit(8), /* arithmetic scale factor */ 2 17 2 name unal bit(18), /* rel ptr to acc name */ 2 18 2 brother unal bit(18), /* rel ptr to brother entry */ 2 19 2 father unal bit(18), /* rel ptr to father entry */ 2 20 2 son unal bit(18), /* rel ptr to son entry */ 2 21 2 address unal, 2 22 3 location bit(18), /* location in storage class */ 2 23 3 class bit(4), /* storage class */ 2 24 3 next bit(14), /* rel ptr to next of same class */ 2 25 2 size fixed bin(35), /* encoded string|arith size */ 2 26 2 offset fixed bin(35), /* encoded offset from address */ 2 27 2 virtual_org fixed bin(35), 2 28 2 bounds(1), 2 29 3 lower fixed bin(35), /* encoded lower bound */ 2 30 3 upper fixed bin(35), /* encoded upper bound */ 2 31 3 multiplier fixed bin(35); /* encoded multiplier */ 2 32 2 33 dcl 1 runtime_bound based, 2 34 2 lower fixed bin(35), 2 35 2 upper fixed bin(35), 2 36 2 multiplier fixed bin(35); 2 37 2 38 dcl 1 runtime_block aligned based, 2 39 2 flag unal bit(1), /* always "1"b for Version II */ 2 40 2 quick unal bit(1), /* "1"b if quick block */ 2 41 2 fortran unal bit(1), /* "1"b if fortran program */ 2 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 2 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 2 44 2 skip unal bit(1), 2 45 2 type unal bit(6), /* = 0 for a block node */ 2 46 2 number unal bit(6), /* begin block number */ 2 47 2 start unal bit(18), /* rel ptr to start of symbols */ 2 48 2 name unal bit(18), /* rel ptr to name of proc */ 2 49 2 brother unal bit(18), /* rel ptr to brother block */ 2 50 2 father unal bit(18), /* rel ptr to father block */ 2 51 2 son unal bit(18), /* rel ptr to son block */ 2 52 2 map unal, 2 53 3 first bit(18), /* rel ptr to first word of map */ 2 54 3 last bit(18), /* rel ptr to last word of map */ 2 55 2 entry_info unal bit(18), /* info about entry of quick block */ 2 56 2 header unal bit(18), /* rel ptr to symbol header */ 2 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 2 58* on start list with length >= 2**i */ 2 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 2 60* on list with length >= 2 ** i */ 2 61 2 owner unal bit(18); /* rel ptr to owner block */ 2 62 2 63 dcl 1 runtime_token aligned based, 2 64 2 next unal bit(18), /* rel ptr to next token */ 2 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 2 66 2 name, /* ACC */ 2 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 2 68 3 string unal char(n refer(runtime_token.size)); 2 69 2 70 dcl 1 encoded_value aligned based, 2 71 2 flag bit (2) unal, 2 72 2 code bit (4) unal, 2 73 2 n1 bit (6) unal, 2 74 2 n2 bit (6) unal, 2 75 2 n3 bit (18) unal; 2 76 2 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 517 518 3 1 /* BEGIN INCLUDE FILE ... pascal_symbol_node.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-09-15,JMAthane), approve(86-09-15,MCR7525), 3 5* audit(86-09-15,Martinson), install(86-11-12,MR12.0-1208): 3 6* Added size_is_encoded field in header. 3 7* END HISTORY COMMENTS */ 3 8 3 9 /* Written January 1983 by Melanie Weaver */ 3 10 /* Added size_is_encoded field in header May 85. JMAthane */ 3 11 3 12 dcl 1 pascal_symbol_node_header aligned based, 3 13 2 flags unaligned, /* indicate which pieces the node contains */ 3 14 3 version_flag bit (1) unaligned, /* always "0"b for post-version II PL/I format */ 3 15 3 aligned bit (1) unaligned, 3 16 3 packed bit (1) unaligned, 3 17 3 in_with_block bit (1) unaligned, 3 18 3 name_next bit (1) unaligned, 3 19 3 base_type_info bit (1) unaligned, 3 20 3 address bit (1) unaligned, 3 21 3 father_brother bit (1) unaligned, 3 22 3 son_level bit (1) unaligned, 3 23 3 father_type_successor bit (1) unaligned, 3 24 3 size bit (1) unaligned, 3 25 3 offset bit (1) unaligned, 3 26 3 subrange_limits bit (1) unaligned, 3 27 3 array_info bit (1) unaligned, 3 28 3 variant_info bit (1) unaligned, 3 29 3 size_is_encoded bit (1) unaligned, 3 30 3 pad bit (2) unaligned, 3 31 2 version fixed bin (17) unaligned, /* version of this node format */ 3 32 2 type fixed bin (17) unaligned, /* (extended) data type */ 3 33 2 type_offset fixed bin (18) unsigned unaligned; /* rel ptr to type node */ 3 34 3 35 dcl 1 pascal_name_next aligned based, 3 36 2 name fixed bin (18) unsigned unaligned, /* rel ptr to acc name */ 3 37 2 next_token fixed bin (18) unsigned unaligned; /* rel ptr to next of same class */ 3 38 3 39 dcl 1 pascal_base_type_info aligned based, 3 40 2 base_type fixed bin (17) unaligned, /* type of type */ 3 41 2 base_type_offset fixed bin (18) unsigned unaligned; 3 42 3 43 dcl 1 pascal_address aligned based, 3 44 2 location fixed bin (18) unsigned unaligned, /* location in storage class */ 3 45 2 class fixed bin (6) unsigned unaligned, /* storage class */ 3 46 2 use_digit bit (1) unaligned, 3 47 2 units bit (2) unaligned, /* addressing units */ 3 48 2 offset_is_encoded bit (1) unaligned, /* "1"b if pascal_offset is encoded */ 3 49 2 pad bit (8) unaligned; 3 50 3 51 dcl 1 pascal_father_brother aligned based, 3 52 2 father fixed bin (18) unsigned unaligned, /* rel ptr to father node */ 3 53 2 brother fixed bin (18) unsigned unaligned; /* rel ptr to brother node */ 3 54 3 55 dcl 1 pascal_son_level aligned based, 3 56 2 son fixed bin (18) unsigned unaligned, /* rel ptr to son node */ 3 57 2 level fixed bin (6) unsigned unaligned, /* record level; also enum. type elt. */ 3 58 2 pad bit (12) unaligned; 3 59 3 60 dcl 1 pascal_father_type_successor aligned based, 3 61 2 father_type fixed bin (17) unaligned, 3 62 2 successor fixed bin (18) unsigned unaligned; 3 63 3 64 dcl pascal_size fixed bin (35) based; /* precision, string size, etc. */ 3 65 3 66 dcl pascal_offset fixed bin (35) based; /* offset from address */ 3 67 3 68 dcl 1 pascal_subrange_limits aligned based, 3 69 2 flags aligned, 3 70 3 lower_bound_is_encoded bit (1) unaligned, 3 71 3 upper_bound_is_encoded bit (1) unaligned, 3 72 3 pad bit (34) unaligned, 3 73 2 subrange_lower_bound 3 74 fixed bin (35), 3 75 2 subrange_upper_bound 3 76 fixed bin (35); 3 77 3 78 dcl 1 pascal_array_info aligned based, /* info about array subscripts */ 3 79 2 access_info aligned, 3 80 3 ndims fixed bin (6) unsigned unaligned, /* number of dimensions */ 3 81 3 use_digit fixed bin (1) unsigned unaligned, /* if "1"b and units are half words, 3 82* units are really digits */ 3 83 3 array_units fixed bin (2) unsigned unaligned, 3 84 3 virtual_origin_is_encoded 3 85 bit (1) unaligned, 3 86 3 pad bit (26) unaligned, 3 87 2 virtual_origin fixed bin (35), 3 88 2 bounds (nd refer (pascal_array_info.access_info.ndims)) 3 89 aligned, 3 90 3 lower fixed bin (35), 3 91 3 upper fixed bin (35), 3 92 3 multiplier fixed bin (35), 3 93 3 subscript_type fixed bin (17) unaligned, 3 94 3 subscript_type_offset 3 95 fixed bin (18) unsigned unaligned, 3 96 3 flags aligned, 3 97 4 lower_is_encoded 3 98 bit (1) unaligned, 3 99 4 upper_is_encoded 3 100 bit (1) unaligned, 3 101 4 multiplier_is_encoded 3 102 bit (1) unaligned, 3 103 4 pad bit (33) unaligned; 3 104 3 105 dcl 1 pascal_variant_info aligned based, /* info to locate a record's variants */ 3 106 2 number_of_variants 3 107 fixed bin (17) unaligned, 3 108 2 pad bit (18) unaligned, 3 109 2 first_value_in_set fixed bin (35) unaligned, /* value corresponding to the first bit in set stings */ 3 110 2 case (nvariants refer 3 111 (pascal_variant_info.number_of_variants)), 3 112 3 set_offset fixed bin (18) unsigned unaligned, /* bit string specifies cases; 3 113* set's base type is this node's type */ 3 114 3 brother fixed bin (18) unsigned unaligned; /* rel ptr to brother for this variant */ 3 115 3 116 dcl 1 pascal_encoded_value aligned based, /* extended encoded value format */ 3 117 2 code bit (6) unaligned, /* tells how to interpret the other fields */ 3 118 2 (n1, n2) bit (6) unaligned, 3 119 2 n3 fixed bin (18) unsigned unaligned; 3 120 3 121 dcl nvariants fixed bin (17); 3 122 dcl nd fixed bin (6) unsigned; 3 123 3 124 3 125 3 126 /* END INCLUDE FILE ... pascal_symbol_node.incl.pl1 */ 519 520 521 522 end runtime_symbol_info_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/12/86 1607.4 runtime_symbol_info_.pl1 >spec>install>1212>runtime_symbol_info_.pl1 515 1 11/12/86 1333.4 runtime_symbol_info_.incl.pl1 >spec>install>1212>runtime_symbol_info_.incl.pl1 517 2 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 519 3 11/12/86 1336.3 pascal_symbol_node.incl.pl1 >spec>install>1212>pascal_symbol_node.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. RUNTIME_ADDRESS_INFO_VERSION_1 000006 constant char(8) initial unaligned dcl 1-128 ref 259 RUNTIME_ARRAY_INFO_VERSION_1 000004 constant char(8) initial unaligned dcl 1-129 ref 334 RUNTIME_SUBRANGE_INFO_VERSION_1 000000 constant char(8) initial unaligned dcl 1-131 ref 402 RUNTIME_TYPE_INFO_VERSION_1 000010 constant char(8) initial unaligned dcl 1-127 ref 114 RUNTIME_VARIANT_INFO_VERSION_1 000002 constant char(8) initial unaligned dcl 1-130 ref 459 access_info based structure level 2 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" access_info 2 based structure level 2 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" addr builtin function dcl 39 ref 507 508 addrel builtin function dcl 39 ref 49 58 60 75 77 92 94 108 145 165 172 176 190 200 208 210 216 224 226 233 237 239 246 251 253 290 308 328 376 390 424 449 450 453 484 485 487 492 496 address 3 based structure level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" address 0(06) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 56 72 89 106 157 182 207 223 282 321 369 418 441 476 address_info based structure level 1 unaligned dcl 257 aligned 0(01) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 136 aligned 2 based bit(1) level 3 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 122* 136* aligned 0(24) based bit(1) level 3 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 122 array_info 0(13) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 140 316 364 448 483 array_info based structure level 1 unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 343* array_units 2(07) based fixed bin(2,0) level 3 in structure "array_info" packed unsigned unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 347* 378* array_units 0(02) based bit(2) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 347 array_units 0(07) based fixed bin(2,0) level 3 in structure "pascal_array_info" packed unsigned unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 378 base_type based fixed bin(17,0) level 2 in structure "pascal_base_type_info" packed unaligned dcl 3-39 in procedure "runtime_symbol_info_" ref 173 base_type 3(18) based fixed bin(18,0) level 2 in structure "type_info" packed unsigned unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 128* 148* 173* base_type_addr 6 based pointer level 2 dcl 112 set ref 130* 149* 174* 176* base_type_info 0(05) based bit(1) level 3 packed unaligned dcl 3-12 ref 55 71 88 105 147 155 180 206 222 289 320 368 417 440 475 base_type_offset 0(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 3-39 ref 174 176 bin builtin function dcl 39 ref 246 bits 0(24) based structure level 2 packed unaligned dcl 2-3 bounds 2 based structure array level 2 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" bounds 7 based structure array level 2 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" bounds 4 based structure array level 2 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" bp parameter pointer dcl 33 ref 45 47 47 49 49 51 54 55 56 57 58 60 62 64 67 70 71 72 73 74 75 77 79 81 84 87 88 89 90 91 92 94 96 98 98 101 104 105 106 107 108 110 121 122 123 124 125 127 131 136 137 138 139 140 141 143 145 145 147 150 153 155 157 159 161 163 165 171 172 176 178 180 182 184 186 188 190 196 198 198 200 200 202 205 206 207 208 210 212 214 214 216 216 218 221 222 223 224 226 229 231 231 233 233 235 237 239 242 244 245 246 246 249 251 253 255 266 267 268 269 270 271 276 282 288 289 290 297 300 302 304 306 308 312 314 314 316 319 320 321 322 323 324 325 326 327 328 330 341 342 346 347 348 351 352 353 364 367 368 369 370 371 372 373 374 375 376 390 398 411 413 416 417 418 419 420 421 422 423 424 432 434 436 439 440 441 442 443 444 445 446 447 448 449 450 453 455 466 471 474 475 476 477 478 479 480 481 482 483 484 485 487 492 496 brother 0(18) based fixed bin(18,0) level 2 in structure "pascal_father_brother" packed unsigned unaligned dcl 3-51 in procedure "runtime_symbol_info_" ref 225 226 brother 2(18) based fixed bin(18,0) array level 3 in structure "pascal_variant_info" packed unsigned unaligned dcl 3-105 in procedure "runtime_symbol_info_" ref 496 496 brother 1(18) based bit(18) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 214 216 brother_addr 6 based pointer array level 3 dcl 457 set ref 496* 498* case 2 based structure array level 2 in structure "pascal_variant_info" dcl 3-105 in procedure "runtime_symbol_info_" case 4 based structure array level 2 in structure "variant_info" unaligned dcl 457 in procedure "runtime_symbol_info_" class 3(18) based bit(4) level 3 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 268 class 0(18) based fixed bin(6,0) level 2 in structure "pascal_address" packed unsigned unaligned dcl 3-43 in procedure "runtime_symbol_info_" ref 292 class 2(18) based fixed bin(6,0) level 2 in structure "address_info" packed unsigned unaligned dcl 257 in procedure "runtime_symbol_info_" set ref 268* 283* 292* code parameter fixed bin(35,0) dcl 35 set ref 110 115* 119* 255 260* 264* 330 335* 339* 398 403* 407* 455 460* 464* encoded_value based structure level 1 dcl 2-70 error_table_$unimplemented_version 000010 external static fixed bin(35,0) dcl 42 ref 115 260 335 403 460 father based fixed bin(18,0) level 2 in structure "pascal_father_brother" packed unsigned unaligned dcl 3-51 in procedure "runtime_symbol_info_" ref 209 210 father 2 based bit(18) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 198 200 father_brother 0(07) based bit(1) level 3 packed unaligned dcl 3-12 ref 57 73 90 107 159 184 202 218 300 322 370 419 442 477 father_type based fixed bin(17,0) level 2 packed unaligned dcl 3-60 ref 76 77 father_type_successor 0(09) based bit(1) level 3 packed unaligned dcl 3-12 ref 67 84 163 188 304 324 372 421 444 479 first_value_in_set 3 based fixed bin(35,0) level 2 in structure "variant_info" dcl 457 in procedure "runtime_symbol_info_" set ref 490* first_value_in_set 1 based fixed bin(35,0) level 2 in structure "pascal_variant_info" packed unaligned dcl 3-105 in procedure "runtime_symbol_info_" ref 490 fixed builtin function dcl 39 ref 98 124 127 267 268 269 270 293 294 342 346 347 flag based bit(2) level 2 packed unaligned dcl 2-70 set ref 507 508* flags 2 based structure level 2 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" flags 2 based structure level 2 in structure "subrange_info" dcl 400 in procedure "runtime_symbol_info_" flags based structure level 2 in structure "pascal_subrange_limits" dcl 3-68 in procedure "runtime_symbol_info_" flags 4 based structure array level 3 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" flags based structure level 2 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" flags 6 based structure array level 3 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" has_dimensions 2(03) based bit(1) level 3 packed unaligned dcl 112 set ref 131* 140* has_subrange_limits 2(04) based bit(1) level 3 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 132* 141* has_subrange_limits 2 based bit(1) level 3 in structure "subrange_info" packed unaligned dcl 400 in procedure "runtime_symbol_info_" set ref 409* 425* i 000100 automatic fixed bin(17,0) dcl 37 set ref 53* 54* 54 55* 55 56* 56 57* 57 58 69* 70* 70 71* 71 72* 72 73* 73 74* 74 75 86* 87* 87 88* 88 89* 89 90* 90 91* 91 92 103* 104* 104 105* 105 106* 106 107* 107 108 152* 153* 153 155* 155 157* 157 159* 159 161* 161 163* 163 165 170* 171* 171 172 180* 180 182* 182 184* 184 186* 186 188* 188 190 204* 205* 205 206* 206 207* 207 208 220* 221* 221 222* 222 223* 223 224 287* 288* 288 289* 289 290 299* 299 300* 300 302* 302 304* 304 306* 306 308 318* 319* 319 320* 320 321* 321 322* 322 323* 323 324* 324 325* 325 326* 326 327* 327 328 350* 351 351 352 352 353 353 354 354 355 355 356 356 357 358* 366* 367* 367 368* 368 369* 369 370* 370 371* 371 372* 372 373* 373 374* 374 375* 375 376 382* 383 383 384 384 385 385 386 386 387 387 388 388 389 389 390 390 390 393* 415* 416* 416 417* 417 418* 418 419* 419 420* 420 421* 421 422* 422 423* 423 424 438* 439* 439 440* 440 441* 441 442* 442 443* 443 444* 444 445* 445 446* 446 447* 447 449 450* 450 450 453 473* 474* 474 475* 475 476* 476 477* 477 478* 478 479* 479 480* 480 481* 481 482* 482 484 485* 485 485 487 491* 492 492 492 494 496 496 496 498* info_ptr parameter pointer dcl 34 ref 110 114 122 123 124 125 126 126 127 128 129 130 131 132 136 137 138 139 140 141 142 143 145 148 149 150 166 173 174 176 178 191 255 259 267 268 269 270 272 273 276 277 277 283 291 292 293 294 295 297 308 330 334 343 344 346 347 348 349 349 351 352 353 354 354 355 355 356 356 357 358 377 378 379 380 381 383 384 385 386 387 388 389 390 393 398 402 409 425 426 427 428 429 455 459 488 490 492 494 496 498 level 0(18) based fixed bin(6,0) level 2 in structure "pascal_son_level" packed unsigned unaligned dcl 3-55 in procedure "runtime_symbol_info_" ref 108 level 0(12) based bit(6) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 98 location 2 based fixed bin(18,0) level 2 in structure "address_info" packed unsigned unaligned dcl 257 in procedure "runtime_symbol_info_" set ref 267* 291* location based fixed bin(18,0) level 2 in structure "pascal_address" packed unsigned unaligned dcl 3-43 in procedure "runtime_symbol_info_" ref 291 location 3 based bit(18) level 3 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 267 lower 7 based fixed bin(35,0) array level 3 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" ref 351 lower 2 based fixed bin(35,0) array level 3 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" ref 386 lower 5 based fixed bin(35,0) array level 3 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" set ref 351* 354* 386* lower_bound_is_encoded 2(01) based bit(1) level 3 in structure "subrange_info" packed unaligned dcl 400 in procedure "runtime_symbol_info_" set ref 427* lower_bound_is_encoded based bit(1) level 3 in structure "pascal_subrange_limits" packed unaligned dcl 3-68 in procedure "runtime_symbol_info_" ref 427 lower_is_encoded 6 based bit(1) array level 4 in structure "pascal_array_info" packed unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 383 lower_is_encoded 4 based bit(1) array level 4 in structure "array_info" packed unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 354* 383* min builtin function dcl 39 ref 350 382 multiplier 4 based fixed bin(35,0) array level 3 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" ref 388 multiplier 7 based fixed bin(35,0) array level 3 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" set ref 353* 356* 388* multiplier 11 based fixed bin(35,0) array level 3 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" ref 353 multiplier_is_encoded 4(02) based bit(1) array level 4 in structure "array_info" packed unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 356* 385* multiplier_is_encoded 6(02) based bit(1) array level 4 in structure "pascal_array_info" packed unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 385 n_dims 000104 automatic fixed bin(17,0) dcl 1-97 set ref 342* 344 345 350 377* 382 n_variants 000105 automatic fixed bin(35,0) dcl 1-112 set ref 488* 491 name 1 based bit(18) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 231 233 name based fixed bin(18,0) level 2 in structure "pascal_name_next" packed unsigned unaligned dcl 3-35 in procedure "runtime_symbol_info_" ref 238 239 name_next 0(04) based bit(1) level 3 packed unaligned dcl 3-12 ref 54 70 87 104 153 171 205 221 235 249 288 319 367 416 439 474 nd 000106 automatic fixed bin(6,0) unsigned dcl 3-122 set ref 449* 450 484* 485 ndims 2 based fixed bin(6,0) level 3 in structure "array_info" packed unsigned unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 344* 377* ndims based fixed bin(6,0) level 3 in structure "pascal_array_info" packed unsigned unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 328 377 449 484 ndims 0(18) based bit(6) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 131 314 342 next 3(22) based bit(14) level 3 packed unaligned dcl 2-3 ref 245 246 next_token 0(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 3-35 ref 252 253 null builtin function dcl 39 ref 47 51 59 64 67 76 81 84 93 129 130 143 149 174 198 202 209 214 218 225 231 235 238 245 249 252 358 393 494 498 number_of_variants 2 based fixed bin(17,0) level 2 in structure "variant_info" dcl 457 in procedure "runtime_symbol_info_" set ref 488* number_of_variants based fixed bin(17,0) level 2 in structure "pascal_variant_info" packed unaligned dcl 3-105 in procedure "runtime_symbol_info_" ref 453 488 offset 5 based fixed bin(35,0) level 2 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" ref 276 offset 0(11) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 297 326 374 423 446 481 offset 3 based fixed bin(35,0) level 2 in structure "address_info" dcl 257 in procedure "runtime_symbol_info_" set ref 273* 276* 277* 297* 308* offset_is_encoded 0(27) based bit(1) level 2 in structure "pascal_address" packed unaligned dcl 3-43 in procedure "runtime_symbol_info_" ref 295 offset_is_encoded 2(27) based bit(1) level 2 in structure "address_info" packed unaligned dcl 257 in procedure "runtime_symbol_info_" set ref 272* 277* 295* packed 0(25) based bit(1) level 3 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 123 packed 2(01) based bit(1) level 3 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 123* 137* packed 0(02) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 137 pascal_address based structure level 1 dcl 3-43 ref 56 72 89 106 157 182 207 223 299 321 369 418 441 476 pascal_array_info based structure level 1 dcl 3-78 ref 450 485 pascal_base_type_info based structure level 1 dcl 3-39 ref 55 71 88 105 155 180 206 222 289 320 368 417 440 475 pascal_father_brother based structure level 1 dcl 3-51 ref 57 73 90 107 159 184 300 322 370 419 442 477 pascal_father_type_successor based structure level 1 dcl 3-60 ref 163 188 304 324 372 421 444 479 pascal_name_next based structure level 1 dcl 3-35 ref 54 70 87 104 153 171 205 221 288 319 367 416 439 474 pascal_offset based fixed bin(35,0) dcl 3-66 ref 308 326 374 423 446 481 pascal_size based fixed bin(35,0) dcl 3-64 ref 166 191 306 325 373 422 445 480 pascal_son_level based structure level 1 dcl 3-55 ref 74 91 161 186 302 323 371 420 443 478 pascal_subrange_limits based structure level 1 dcl 3-68 ref 327 375 447 482 pascal_symbol_node_header based structure level 1 dcl 3-12 ref 53 69 86 103 152 170 204 220 237 251 287 318 366 415 438 473 pascal_variant_info based structure level 1 dcl 3-105 runtime_address_info based structure level 1 dcl 1-56 runtime_array_info based structure level 1 dcl 1-70 runtime_subrange_info based structure level 1 unaligned dcl 1-116 runtime_symbol based structure level 1 dcl 2-3 runtime_type_info based structure level 1 dcl 1-24 runtime_variant_info based structure level 1 dcl 1-103 scale 0(28) based bit(8) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 124 scale 2(28) based fixed bin(7,0) level 2 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 124* 142* set_addr 4 based pointer array level 3 dcl 457 set ref 492* 494* set_offset 2 based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 3-105 ref 492 492 simple 0(26) based bit(1) level 3 packed unaligned dcl 2-3 ref 271 size 10 based fixed bin(35,0) level 2 in structure "type_info" dcl 112 in procedure "runtime_symbol_info_" set ref 125* 126* 150* 166* 178* 191* size 4 based fixed bin(35,0) level 2 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" ref 125 size 0(10) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 150 178 306 325 373 422 445 480 size builtin function dcl 39 in procedure "runtime_symbol_info_" ref 53 54 55 56 57 69 70 71 72 73 74 86 87 88 89 90 91 103 104 105 106 107 152 153 155 157 159 161 163 170 171 180 182 184 186 188 204 205 206 207 220 221 222 223 237 251 287 288 289 299 300 302 304 306 318 319 320 321 322 323 324 325 326 327 366 367 368 369 370 371 372 373 374 375 415 416 417 418 419 420 421 422 423 438 439 440 441 442 443 444 445 446 447 450 473 474 475 476 477 478 479 480 481 482 485 size_is_encoded 2(02) based bit(1) level 3 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 126* 139* size_is_encoded 0(15) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 139 son based fixed bin(18,0) level 2 in structure "pascal_son_level" packed unsigned unaligned dcl 3-55 in procedure "runtime_symbol_info_" ref 59 60 son 2(18) based bit(18) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 47 49 son_level 0(08) based bit(1) level 3 packed unaligned dcl 3-12 ref 51 74 91 101 161 186 302 323 371 420 443 478 subrange_info based structure level 1 unaligned dcl 400 subrange_limits 0(12) based bit(1) level 3 packed unaligned dcl 3-12 ref 141 327 375 413 447 482 subrange_lower_bound 1 based fixed bin(35,0) level 2 in structure "pascal_subrange_limits" dcl 3-68 in procedure "runtime_symbol_info_" ref 428 subrange_lower_bound 3 based fixed bin(35,0) level 2 in structure "subrange_info" dcl 400 in procedure "runtime_symbol_info_" set ref 428* subrange_upper_bound 2 based fixed bin(35,0) level 2 in structure "pascal_subrange_limits" dcl 3-68 in procedure "runtime_symbol_info_" ref 429 subrange_upper_bound 4 based fixed bin(35,0) level 2 in structure "subrange_info" dcl 400 in procedure "runtime_symbol_info_" set ref 429* subscript_type 10 based fixed bin(35,0) array level 3 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" set ref 357* 389* subscript_type 5 based fixed bin(17,0) array level 3 in structure "pascal_array_info" packed unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 389 subscript_type_addr 12 based pointer array level 3 dcl 332 set ref 358* 390* 393* subscript_type_offset 5(18) based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 3-78 ref 390 390 successor 0(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 3-60 ref 93 94 type 0(06) based bit(6) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 127 type 3 based fixed bin(18,0) level 2 in structure "type_info" packed unsigned unaligned dcl 112 in procedure "runtime_symbol_info_" set ref 127* 138* type 1 based fixed bin(17,0) level 2 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 138 type_addr 4 based pointer level 2 dcl 112 set ref 129* 143* 145* type_info based structure level 1 unaligned dcl 112 type_offset 1(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 3-12 ref 143 145 units 0(04) based bit(2) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 269 units 0(25) based bit(2) level 2 in structure "pascal_address" packed unaligned dcl 3-43 in procedure "runtime_symbol_info_" ref 293 units 2(25) based fixed bin(2,0) level 2 in structure "address_info" packed unsigned unaligned dcl 257 in procedure "runtime_symbol_info_" set ref 269* 293* upper 6 based fixed bin(35,0) array level 3 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" set ref 352* 355* 387* upper 3 based fixed bin(35,0) array level 3 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" ref 387 upper 10 based fixed bin(35,0) array level 3 in structure "runtime_symbol" dcl 2-3 in procedure "runtime_symbol_info_" ref 352 upper_bound_is_encoded 2(02) based bit(1) level 3 in structure "subrange_info" packed unaligned dcl 400 in procedure "runtime_symbol_info_" set ref 426* upper_bound_is_encoded 0(01) based bit(1) level 3 in structure "pascal_subrange_limits" packed unaligned dcl 3-68 in procedure "runtime_symbol_info_" ref 426 upper_is_encoded 6(01) based bit(1) array level 4 in structure "pascal_array_info" packed unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 384 upper_is_encoded 4(01) based bit(1) array level 4 in structure "array_info" packed unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 355* 384* use_digit 0(24) based bit(1) level 2 in structure "pascal_address" packed unaligned dcl 3-43 in procedure "runtime_symbol_info_" ref 294 use_digit 2(24) based fixed bin(1,0) level 2 in structure "address_info" packed unsigned unaligned dcl 257 in procedure "runtime_symbol_info_" set ref 270* 294* use_digit 0(01) based bit(1) level 2 in structure "runtime_symbol" packed unaligned dcl 2-3 in procedure "runtime_symbol_info_" ref 270 346 use_digit 0(06) based fixed bin(1,0) level 3 in structure "pascal_array_info" packed unsigned unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 381 use_digit 2(06) based fixed bin(1,0) level 3 in structure "array_info" packed unsigned unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 346* 381* value parameter fixed bin(35,0) dcl 505 set ref 503 507 508 variant_info based structure level 1 unaligned dcl 457 in procedure "runtime_symbol_info_" variant_info 0(14) based bit(1) level 3 in structure "pascal_symbol_node_header" packed unaligned dcl 3-12 in procedure "runtime_symbol_info_" ref 436 471 version based char(8) level 2 in structure "array_info" packed unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 334 version based char(8) level 2 in structure "address_info" packed unaligned dcl 257 in procedure "runtime_symbol_info_" ref 259 version based char(8) level 2 in structure "type_info" packed unaligned dcl 112 in procedure "runtime_symbol_info_" ref 114 version based char(8) level 2 in structure "variant_info" packed unaligned dcl 457 in procedure "runtime_symbol_info_" ref 459 version based char(8) level 2 in structure "subrange_info" packed unaligned dcl 400 in procedure "runtime_symbol_info_" ref 402 version_flag based bit(1) level 3 packed unaligned dcl 3-12 ref 47 64 81 98 121 198 214 231 244 266 314 341 411 434 466 virtual_org 6 based fixed bin(35,0) level 2 dcl 2-3 ref 348 virtual_origin 3 based fixed bin(35,0) level 2 in structure "array_info" dcl 332 in procedure "runtime_symbol_info_" set ref 348* 349* 380* virtual_origin 1 based fixed bin(35,0) level 2 in structure "pascal_array_info" dcl 3-78 in procedure "runtime_symbol_info_" ref 380 virtual_origin_is_encoded 0(09) based bit(1) level 3 in structure "pascal_array_info" packed unaligned dcl 3-78 in procedure "runtime_symbol_info_" ref 379 virtual_origin_is_encoded 2(09) based bit(1) level 3 in structure "array_info" packed unaligned dcl 332 in procedure "runtime_symbol_info_" set ref 349* 379* work 000102 automatic pointer dcl 38 set ref 58* 59 60 75* 76 77 92* 93 94 165* 166 172* 173 174 176 190* 191 208* 209 210 224* 225 226 237* 238 239 251* 252 253 290* 291 292 293 294 295 376* 377 378 379 380 381 383 384 385 386 387 388 389 390 390 424* 426 427 428 429 487* 488 490 492 492 496 496 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. nvariants automatic fixed bin(17,0) dcl 3-121 pascal_encoded_value based structure level 1 dcl 3-116 runtime_block based structure level 1 dcl 2-38 runtime_bound based structure level 1 unaligned dcl 2-33 runtime_symbol_info_$address 000000 constant entry external dcl 1-54 runtime_symbol_info_$array 000000 constant entry external dcl 1-68 runtime_symbol_info_$array_dims 000000 constant entry external dcl 1-66 runtime_symbol_info_$brother 000000 constant entry external dcl 1-40 runtime_symbol_info_$father 000000 constant entry external dcl 1-38 runtime_symbol_info_$father_type 000000 constant entry external dcl 1-42 runtime_symbol_info_$level 000000 constant entry external dcl 1-50 runtime_symbol_info_$n_variants 000000 constant entry external dcl 1-99 runtime_symbol_info_$name 000000 constant entry external dcl 1-48 runtime_symbol_info_$next 000000 constant entry external dcl 1-52 runtime_symbol_info_$son 000000 constant entry external dcl 1-44 runtime_symbol_info_$subrange 000000 constant entry external dcl 1-114 runtime_symbol_info_$successor 000000 constant entry external dcl 1-46 runtime_symbol_info_$type 000000 constant entry external dcl 1-22 runtime_symbol_info_$variant 000000 constant entry external dcl 1-101 runtime_token based structure level 1 dcl 2-63 NAMES DECLARED BY EXPLICIT CONTEXT. address 002154 constant entry external dcl 255 array 002576 constant entry external dcl 330 array_dims 002433 constant entry external dcl 312 brother 001463 constant entry external dcl 212 father 001301 constant entry external dcl 196 father_type 000231 constant entry external dcl 62 is_encoded 004071 constant entry internal dcl 503 ref 126 277 349 354 355 356 level 000545 constant entry external dcl 96 n_variants 003442 constant entry external dcl 432 name 001645 constant entry external dcl 229 next 002010 constant entry external dcl 242 no_variants 003656 constant label dcl 467 ref 471 runtime_symbol_info_ 000027 constant entry external dcl 31 son 000043 constant entry external dcl 45 subrange 003247 constant entry external dcl 398 successor 000376 constant entry external dcl 79 type 000670 constant entry external dcl 110 variant 003616 constant entry external dcl 455 NAME DECLARED BY CONTEXT OR IMPLICATION. unspec builtin function ref 343 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4304 4316 4121 4314 Length 4572 4121 12 240 163 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME runtime_symbol_info_ 144 external procedure is an external procedure. is_encoded internal procedure shares stack frame of external procedure runtime_symbol_info_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME runtime_symbol_info_ 000100 i runtime_symbol_info_ 000102 work runtime_symbol_info_ 000104 n_dims runtime_symbol_info_ 000105 n_variants runtime_symbol_info_ 000106 nd runtime_symbol_info_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as return_mac signal_op ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 31 000026 45 000036 47 000052 49 000076 51 000117 53 000137 54 000141 55 000147 56 000153 57 000157 58 000163 59 000167 60 000205 62 000226 64 000240 67 000260 69 000300 70 000302 71 000310 72 000314 73 000320 74 000324 75 000330 76 000334 77 000352 79 000373 81 000405 84 000425 86 000445 87 000447 88 000455 89 000461 90 000465 91 000471 92 000475 93 000501 94 000517 96 000540 98 000553 101 000577 103 000616 104 000620 105 000626 106 000632 107 000636 108 000642 110 000663 114 000677 115 000706 116 000711 119 000723 121 000724 122 000730 123 000735 124 000742 125 000747 126 000752 127 000764 128 000775 129 000777 130 001001 131 001004 132 001016 133 001020 136 001032 137 001037 138 001044 139 001047 140 001054 141 001061 142 001066 143 001072 145 001101 147 001103 148 001107 149 001113 150 001115 152 001125 153 001127 155 001133 157 001137 159 001143 161 001147 163 001153 165 001157 166 001163 168 001167 170 001170 171 001172 172 001176 173 001202 174 001207 176 001216 178 001221 180 001231 182 001235 184 001241 186 001245 188 001251 190 001255 191 001261 194 001265 196 001277 198 001310 200 001334 202 001355 204 001375 205 001377 206 001405 207 001411 208 001415 209 001421 210 001437 212 001460 214 001472 216 001516 218 001537 220 001557 221 001561 222 001567 223 001573 224 001577 225 001603 226 001621 229 001642 231 001654 233 001700 235 001721 237 001741 238 001746 239 001764 242 002005 244 002017 245 002024 246 002043 249 002065 251 002105 252 002112 253 002130 255 002151 259 002163 260 002172 261 002175 264 002207 266 002210 267 002214 268 002221 269 002226 270 002235 271 002244 272 002247 273 002251 274 002252 276 002253 277 002255 279 002267 282 002301 283 002304 284 002306 287 002320 288 002322 289 002326 290 002332 291 002336 292 002340 293 002342 294 002351 295 002360 297 002364 299 002371 300 002372 302 002376 304 002402 306 002406 308 002412 310 002417 312 002431 314 002441 316 002463 318 002502 319 002504 320 002512 321 002516 322 002522 323 002526 324 002532 325 002536 326 002542 327 002546 328 002553 330 002573 334 002605 335 002614 336 002617 339 002631 341 002632 342 002636 343 002642 344 002645 345 002647 346 002651 347 002660 348 002667 349 002672 350 002704 351 002717 352 002733 353 002735 354 002737 355 002750 356 002766 357 003004 358 003010 359 003013 361 003015 364 003027 366 003044 367 003046 368 003052 369 003056 370 003062 371 003066 372 003072 373 003076 374 003102 375 003106 376 003113 377 003117 378 003126 379 003132 380 003136 381 003140 382 003144 383 003157 384 003173 385 003177 386 003203 387 003206 388 003210 389 003212 390 003215 393 003227 395 003231 396 003233 398 003245 402 003256 403 003265 404 003270 407 003302 409 003303 411 003305 413 003323 415 003340 416 003342 417 003346 418 003352 419 003356 420 003362 421 003366 422 003372 423 003376 424 003402 425 003406 426 003410 427 003415 428 003422 429 003424 430 003426 432 003440 434 003450 436 003467 438 003506 439 003510 440 003516 441 003522 442 003526 443 003532 444 003536 445 003542 446 003546 447 003552 448 003557 449 003562 450 003570 453 003573 455 003613 459 003625 460 003634 461 003637 464 003651 466 003652 467 003656 471 003670 473 003673 474 003675 475 003701 476 003705 477 003711 478 003715 479 003721 480 003725 481 003731 482 003735 483 003742 484 003745 485 003753 487 003756 488 003762 490 003766 491 003770 492 003777 494 004017 496 004026 498 004046 500 004055 501 004057 503 004071 507 004073 508 004101 509 004103 511 004110 ----------------------------------------------------------- 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