COMPILATION LISTING OF SEGMENT get_size_in_bits_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/11/88 1547.4 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(88-09-07,WAAnderson), approve(88-09-30,MCR7952), 16* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 17* Added format control comment to make the source more readable. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style1,insnl,ifthendo,indthenelse,^indnoniterdo,^inditerdo,indcom,^indthenbegin,^indprocbody,ind2,ll78,initcol0,dclind4,idind24,struclvlind1,comcol41 */ 22 23 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 24 25 get_size_in_bits_: 26 proc (P_type, P_prec, P_packedp) returns (fixed bin); 27 28 /* returns number of bits that data of specified type, etc. occupies, 29* or -1 for unhandleable types. 30* 31* James R. Davis 20 Sept 78 32* modified 20 May 79 JRD to know COBOL, and use data_type_info_ 33* modified June 83 JMAthane to know ALGOL and PASCAL */ 34 /* Added $structure to allow unspec and let to work on arrays and structures 08/24/83 S. Herbst */ 35 /* Fixed $structure to reject refer extents 08/25/83 S. Herbst */ 36 /* Added hex (47-50), extended (81-82), and generic (83-86) types 02/14/84 S. Herbst */ 37 /* Fixed $structure to handle encoded array bounds, now takes ref_ptr not symbol_ptr 06/05/84 S. Herbst */ 38 39 40 dcl ( 41 P_type fixed bin,/* data type */ 42 P_prec fixed bin (35), 43 /* declared precision */ 44 P_packedp bit (1) aligned 45 /* 1 if packed else 0 */ 46 ) parameter; 47 48 dcl TOP_LEVEL fixed bin int static options (constant) 49 init (1); 50 dcl BASED_CLASS bit (4) unaligned int static 51 options (constant) init ("0011"b); 52 53 dcl t fixed bin; 54 55 dcl type fixed bin; 56 dcl prec fixed bin (35); 57 dcl packedp bit (1) aligned; 58 59 dcl 1 an_encoded_prec aligned like encoded_precision; 60 61 dcl get_size_in_bits_ entry (fixed bin, fixed bin (35), 62 bit (1) aligned) returns (fixed bin); 63 dcl probe_error_$warning entry options (variable); 64 dcl runtime_symbol_info_$brother 65 entry (ptr) returns (ptr); 66 dcl runtime_symbol_info_$son 67 entry (ptr) returns (ptr); 68 dcl stu_$decode_runtime_value 69 entry (fixed bin (35), ptr, ptr, ptr, ptr, ptr, 70 fixed bin (35)) returns (fixed bin (35)); 71 dcl stu_$get_implicit_qualifier 72 entry (ptr, ptr, ptr, ptr, ptr) returns (ptr); 73 74 dcl (divide, fixed, hbound, lbound, mod, null, substr, unspec) 75 builtin; 76 77 type = P_type; 78 if type < lbound (sizer, 1) | type > hbound (sizer, 1) 79 then 80 return (-1); /* type we cant handle */ 81 if data_type_info_$info (type).fixed 82 then do; 83 unspec (an_encoded_prec) = unspec (P_prec); 84 prec = an_encoded_prec.prec; 85 end; 86 else prec = P_prec; 87 packedp = P_packedp; 88 89 goto sizer (type); 90 91 sizer (1): 92 sizer (2): 93 t = prec + 1; 94 if ^packedp 95 then if t <= 36 96 then return (36); 97 else return (72); 98 else return (t); 99 100 sizer (3): 101 sizer (4): 102 float_bin: 103 t = prec + 1 + 8; /* sign and exponent */ 104 if ^packedp 105 then if t <= 36 106 then return (36); 107 else return (72); 108 else return (t); 109 110 sizer (5): 111 sizer (6): 112 t = prec + 1; 113 if ^packedp 114 then if t <= 36 115 then t = 36; 116 else t = 72; 117 return (t * 2); 118 119 sizer (7): 120 sizer (8): 121 complex_float_bin: 122 t = prec + 1 + 8; /* float complx bin */ 123 if ^packedp 124 then if t <= 36 125 then t = 36; 126 else t = 72; 127 return (2 * t); 128 129 sizer (9): 130 return ((prec + 1) * 9); /* fixed dec */ 131 132 sizer (10): 133 float_dec_9bit: 134 return ((prec + 1) * 9 + 9); /* float dec */ 135 136 sizer (11): 137 return ((((prec + 1) * 9) * 2)); /* cplx fixed dec */ 138 139 sizer (12): /* cplx float dec */ 140 complex_float_dec_9bit: 141 return (((((prec + 1) * 9) + 9) * 2)); 142 143 sizer (13): /* pointer */ 144 if packedp 145 then return (36); 146 else return (72); 147 148 sizer (14): 149 return (36); /* offset */ 150 151 sizer (15): 152 return (144); /* label -two pts */ 153 154 155 sizer (16): 156 return (144); /* entry - two ptrs */ 157 158 sizer (17): 159 return (-1); /* structure */ 160 161 sizer (18): 162 return (-1); /* area */ 163 164 sizer (19): 165 return (prec); /* bit */ 166 167 sizer (20): /* varying bit */ 168 return (prec + 36); 169 170 sizer (21): 171 return (prec * 9); /* char */ 172 173 sizer (22): 174 return ((prec * 9) + 36); /* char varying */ 175 176 sizer (23): /* file */ 177 return (144); 178 179 sizer (24): /* label constant */ 180 sizer (25): /* entries of three flavors */ 181 sizer (26): 182 sizer (27): 183 sizer (28): /* not used */ 184 return (-1); 185 186 sizer (29): 187 sizer (30): 188 return (prec * 9); /* real fixed dec 9bit overpunched */ 189 190 sizer (31): /* not used */ 191 sizer (32): /* not used */ 192 return (-1); 193 194 sizer (33): /* unsigned binary short */ 195 if packedp 196 then return (prec); 197 else return (36); 198 sizer (34): /* unsigned binary long */ 199 if packedp 200 then return (prec); 201 else return (72); 202 203 sizer (35): 204 return (prec * 9); /* unsigned dec 9 bit */ 205 206 sizer (36): 207 return ((prec + 1) * 9); /* TS dec 9 bit */ 208 209 sizer (37): /* not used */ 210 return (-1); 211 212 sizer (38): /* fixed unsigned 4bit digit aligned COBOL */ 213 return (prec * 4.5e0); 214 215 sizer (39): /* fixed TS 4bit digit */ 216 return ((prec + 1) * 4.5e0); 217 218 sizer (40): /* RFU */ 219 return (-1); 220 221 sizer (41): /* fixed LS 4bit digit aligned COBOL */ 222 return ((prec + 1) * 4.5e0); 223 224 sizer (42): /* float unsigned 4bit digit aligned COBOL */ 225 return ((prec + 1) * 4.5e0 + 9); 226 227 sizer (43): /* real fixed 4bit LS byte aligned */ 228 return (prec * 4.5e0); 229 230 sizer (44): 231 return ((prec + mod (prec, 2)) * 4.5e0 + 9); 232 /* float 4bit byte al */ 233 234 sizer (45): 235 return ((prec + mod (prec, 2)) * 4.5e0 * 2); 236 /* cmlx fixed LS 4bit byte al */ 237 238 sizer (46): /* cplx flt 4bit byte aligned */ 239 return (((prec + mod (prec, 2)) * 4.5e0 + 9) * 2); 240 241 sizer (47): /* real flt hex */ 242 sizer (48): 243 go to float_bin; 244 245 sizer (49): /* cplx flt hex */ 246 sizer (50): 247 go to complex_float_bin; 248 249 sizer (51): 250 sizer (52): 251 sizer (53): 252 sizer (54): 253 sizer (55): 254 sizer (56): 255 sizer (57): 256 sizer (58): 257 sizer (59): /* algol68 straight */ 258 sizer (60): /* algol68 format */ 259 sizer (61): /* algol68 array descriptor */ 260 sizer (62): /* algol68 union */ 261 sizer (63): 262 return (-1); 263 264 sizer (64): /* pascal typed pointer */ 265 sizer (65): /* pascal char */ 266 sizer (66): /* pascal boolean */ 267 return (prec); 268 269 sizer (67): /* pascal record file */ 270 sizer (68): /* pascal record */ 271 sizer (69): /* pascal set */ 272 sizer (70): /* pascal enumerated type */ 273 return (-1); 274 275 sizer (71): /* pascal enumerated type element */ 276 sizer (72): /* pascal enumerated type instance */ 277 return (prec); 278 279 sizer (73): /* pascal user defined type */ 280 return (-1); 281 282 sizer (74): /* pascal user defined type instance */ 283 sizer (75): /* pascal text file */ 284 return (prec); 285 286 sizer (76): 287 sizer (77): 288 sizer (78): 289 sizer (79): 290 sizer (80): 291 return (-1); 292 293 sizer (81): /* real flt dec extended */ 294 go to float_dec_9bit; 295 296 sizer (82): /* cplx flt dec extended */ 297 go to complex_float_dec_9bit; 298 299 sizer (83): /* real flt dec generic */ 300 return ((prec + 1) * 9 + 36); 301 302 sizer (84): /* cplx flt dec generic */ 303 return (((prec + 1) * 9 + 36) * 2 + mod (prec + 1, 4) * 9); 304 305 sizer (85): /* real flt bin generic */ 306 return (108); 307 308 sizer (86): /* cplx flt bin generic */ 309 return (108 * 2 + 36); 310 311 312 structure: 313 entry (A_ref_ptr) returns (fixed bin); 314 315 /* Returns size given a pointer to a reference node. Works on scalars, arrays, structures */ 316 317 dcl A_ref_ptr ptr; 318 dcl a_temp_val fixed bin; 319 320 321 322 a_temp_val = size_of_structure (A_ref_ptr -> reference_node.symbol_ptr, 323 A_ref_ptr -> reference_node.source_info_ptr, 324 (A_ref_ptr -> reference_node.subscript_ptr), 325 A_ref_ptr -> reference_node.address_ptr, 326 (A_ref_ptr -> reference_node.cross_section), TOP_LEVEL); 327 return (a_temp_val); 328 329 size_of_structure: 330 proc (P_symbol_ptr, P_source_info_ptr, P_subscript_ptr, P_address_ptr, 331 P_cross_section_sw, P_level) returns (fixed bin); 332 333 /* Returns the bit size of most kinds of (PL/1 anyway) variable, including 334* structures and arrays. Returns -1 as does get_size_in_bits_ if it can't */ 335 336 dcl (P_symbol_ptr, P_source_info_ptr, P_subscript_ptr, P_address_ptr) 337 ptr; 338 dcl (P_level, round_factor, var_type) 339 fixed bin; 340 dcl (address_ptr, p) ptr; 341 dcl (P_cross_section_sw, packed_sw) 342 bit (1) aligned; 343 dcl (i, total_size) fixed bin (21); 344 dcl (code, high, low) fixed bin (35); 345 dcl 1 si aligned like source_info 346 based (P_source_info_ptr); 347 dcl 1 ref_subs aligned based (P_subscript_ptr) 348 like reference_subscripts; 349 350 if fixed (P_symbol_ptr -> runtime_symbol.type) = structure_dtype then do; 351 352 total_size = 0; 353 354 do p = runtime_symbol_info_$son (P_symbol_ptr) 355 repeat (runtime_symbol_info_$brother (p)) 356 while (p ^= null); 357 358 i = size_of_structure ((p), P_source_info_ptr, null, P_address_ptr, 359 P_cross_section_sw, P_level + 1); 360 if i = -1 361 then return (-1); 362 else total_size = total_size + i; 363 end; 364 end; 365 366 else do; 367 if substr (unspec (P_symbol_ptr -> runtime_symbol.size), 1, 2) = "10"b 368 then 369 return (-1); 370 /* encoded size field: variable or refer extent */ 371 var_type = fixed (P_symbol_ptr -> runtime_symbol.type, 17, 0); 372 packed_sw = P_symbol_ptr -> runtime_symbol.packed; 373 total_size = 374 get_size_in_bits_ (var_type, P_symbol_ptr -> runtime_symbol.size, 375 packed_sw); 376 377 if total_size > 0 & ^packed_sw & P_level > 1 378 then /* in structure, round off to whole word */ 379 if var_type = pointer_dtype then do; 380 /* aligned pointer always starts at even word */ 381 if mod (P_symbol_ptr -> runtime_symbol.offset, 2) ^= 0 382 then 383 total_size = total_size + 36; 384 end; 385 else do; 386 if var_type = cplx_fix_bin_1_dtype 387 | var_type = cplx_flt_bin_1_dtype 388 then 389 round_factor = 72; 390 else if var_type = cplx_fix_bin_2_dtype 391 | var_type = cplx_flt_bin_2_dtype 392 then 393 round_factor = 144; 394 else round_factor = 36; 395 396 total_size = 397 round_factor 398 * 399 divide (total_size + round_factor - 1, round_factor, 17, 400 0); 401 end; 402 end; 403 404 if total_size = -1 | P_symbol_ptr -> runtime_symbol.ndims = "0"b 405 then 406 return (total_size); 407 408 address_ptr = P_address_ptr; 409 if address_ptr = null 410 then 411 if P_symbol_ptr -> runtime_symbol.class = BASED_CLASS 412 then 413 address_ptr = 414 stu_$get_implicit_qualifier (si.block_ptr, P_symbol_ptr, 415 si.stack_ptr, 416 (si.seg_info_ptr -> seg_info.linkage_ptr), si.block_ptr); 417 418 /* Compute array extents, if any */ 419 420 do i = 1 to fixed (P_symbol_ptr -> runtime_symbol.ndims); 421 422 if P_subscript_ptr ^= null 423 then 424 if ref_subs.number >= i then do; 425 /* use specified subscript */ 426 low = ref_subs.value (1, i); 427 if P_cross_section_sw 428 then high = ref_subs.value (2, i); 429 else high = low; 430 go to HAVE_BOUNDS; 431 end; 432 433 low = P_symbol_ptr -> runtime_symbol.bounds.lower (i); 434 if low < 0 then do; 435 low = stu_$decode_runtime_value (low, si.block_ptr, si.stack_ptr, 436 (si.seg_info_ptr -> seg_info.linkage_ptr), si.block_ptr, 437 address_ptr, code); 438 if code ^= 0 439 then 440 return (-1); 441 end; 442 high = P_symbol_ptr -> runtime_symbol.bounds.upper (i); 443 if high < 0 then do; 444 high = stu_$decode_runtime_value (high, si.block_ptr, si.stack_ptr, 445 (si.seg_info_ptr -> seg_info.linkage_ptr), si.block_ptr, 446 address_ptr, code); 447 if code ^= 0 448 then 449 return (-1); 450 end; 451 HAVE_BOUNDS: 452 if low <= 0 453 then 454 call probe_error_$warning (null, 0, "Lower bound <= 0."); 455 if high <= 0 456 then 457 call probe_error_$warning (null, 0, "Upper bound <= 0."); 458 if low <= 0 | high <= 0 459 then 460 return (-1); 461 total_size = total_size * (high - low + 1); 462 end; 463 return (total_size); 464 465 end size_of_structure; 466 1 1 /* BEGIN INCLUDE FILE ... data_type_info_.incl.pl1 1 2* 1 3* attributes of each Multics data type. You may not rely on the dimension never exceeding 64 1 4* James R. Davis 6 Apr 79 1 5* Modified JMAthane June 83 to add "type" bit field 1 6* Upped bound from 64 to 80 10/18/83 S. Herbst 1 7* Added "hex" and "generic" bits 01/23/84 S. Herbst 1 8* Upped bound from 80 to 86 01/81/84 R. Gray 1 9* Upper bound from 86 to 87 JMAthane (for Pascal strings type dtype) 1 10**/ 1 11 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 1 15* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 1 16* The data_type_info array now has 87 entries instead of 86 due to 1 17* introduction of pascal_string_type_dtype. 1 18* END HISTORY COMMENTS */ 1 19 1 20 dcl data_type_info_$version_number fixed bin external static; 1 21 dcl data_type_info_this_version fixed bin internal static options (constant) init (1); 1 22 1 23 dcl 1 data_type_info_$info (87) aligned external static, 1 24 2 computational bit (1) unal, 1 25 2 arithmetic bit (1) unal, 1 26 2 arithmetic_attributes unal, /* only valid if arithmetic */ 1 27 3 fixed bit (1) unal, /* PL/I type */ 1 28 3 complex bit (1) unal, /* PL/I mode */ 1 29 3 decimal bit (1) unal, /* PL/I base */ 1 30 3 signed bit (1) unal, 1 31 3 trailing_sign bit (1) unal, /* only valid if signed */ 1 32 3 decimal_attributes unal, /* only valid if decimal */ 1 33 4 packed_dec bit (1) unal, /* 4 bits per digit or 9 */ 1 34 4 digit_aligned bit (1) unal, /* valid for packed_dec only */ 1 35 4 overpunched bit (1) unal, 1 36 2 char_string bit (1) unal, /* valid for non-arithmetic */ 1 37 2 bit_string bit (1) unal, /* valid for non-arithmetic */ 1 38 2 varying bit (1) unal, /* for bit or char only */ 1 39 2 type bit (1) unal, /* this symbol is a type */ 1 40 2 hex bit (1) unal, /* a hexadecimal type (eg., hex floating point) */ 1 41 2 generic bit (1) unal, /* eg., real_flt_dec_generic_dtype */ 1 42 2 pad bit (20) unal; 1 43 1 44 dcl data_type_info_$ninebit_sign_chars char (2) external static; 1 45 dcl data_type_info_$ninebit_digit_chars char (10) external static; 1 46 dcl data_type_info_$ninebit_overpunched_sign_chars char (22) external static; 1 47 1 48 dcl data_type_info_$max_decimal_precision fixed bin external static; 1 49 dcl data_type_info_$max_float_binary_precision fixed bin external static; 1 50 dcl data_type_info_$max_fixed_binary_precision fixed bin external static; 1 51 1 52 1 53 /* END INCLUDE FILE ... data_type_info_.incl.pl1 */ 467 468 2 1 /* BEGIN INCLUDE FILE ... encoded_precision.incl.pl1 2 2* 2 3* This is the format used by assign_ to encode the precision and scale of 2 4* arithmetic data into one word. This structure should be assigned (use unspec) 2 5* to a fixed bin (35). 2 6**/ 2 7 2 8 dcl 1 encoded_precision based aligned, 2 9 2 scale fixed bin (17) unal, 2 10 2 prec fixed bin (18) unsigned unal; 2 11 2 12 /* END INCLUDE FILE ... encoded_precision.incl.pl1 */ 469 470 3 1 /* BEGIN INCLUDE FILE probe_references.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 3 5* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 3 6* Added new field (c_symbol) for C-Probe support. 3 7* 2) change(88-10-28,WAAnderson), approve(88-10-28,MCR7952), 3 8* audit(88-10-31,RWaters), install(88-11-11,MR12.2-1210): 3 9* Added new field (c_sub_c_ptr) for C-Probe_support. 3 10* END HISTORY COMMENTS */ 3 11 3 12 /* Split out of probe_tokens, 04/22/79 WOS */ 3 13 /* modified for probe variables Feb 19 80 JRD */ 3 14 /* Modified June 83 JMAthane to add "type_ptr" and "builtin" fields */ 3 15 3 16 dcl 1 reference_node aligned based, /* information about a reference */ 3 17 2 symbol_ptr pointer aligned, /* to symbol table entry for reference */ 3 18 2 type_ptr pointer aligned, /* to symbol table entry for type (null if none) */ 3 19 2 address_ptr pointer aligned, /* to location of variable */ 3 20 2 base_addr pointer aligned, /* pointer on which whole symbol is based */ 3 21 2 source_info_ptr pointer aligned, /* to symbol structure for reference */ 3 22 3 23 2 name char (256) unaligned varying, /* symbol name */ 3 24 3 25 2 type fixed bin (35), /* data type */ 3 26 2 descriptor fixed bin (35), /* type || packed */ 3 27 2 precision fixed bin (35), /* scale and precision */ 3 28 2 flags, 3 29 3 packed bit (1) unal, /* data is in packed format */ 3 30 3 constant bit (1) unal, /* data is really a constant */ 3 31 3 cross_section bit (1) unal, /* reference is an array cross-section */ 3 32 3 function bit (1) unal, /* reference is function value */ 3 33 3 octal bit (1) unal, /* indicates that this is the octal bif */ 3 34 3 star_extent bit (1) unal, /* reference is a star subscript for father */ 3 35 3 have_generation bit (1) unal, /* this reference has an explicitly specified generation */ 3 36 3 pseudo_var bit (1) unal, /* it is ok to assign to it */ 3 37 3 probe_variable bit (1) unal, 3 38 3 path bit (1) unal, /* it's a pathname/virtual entry */ 3 39 3 builtin bit (1) unal, /* probe builtinvalue */ 3 40 3 c_ptr_to_char bit (1) unal, 3 41 3 c_sub_c_ptr bit (1) unal, 3 42 3 pad2 bit (23) unal, 3 43 3 44 2 optional_info, /* information which may or may not be present */ 3 45 3 argument_list pointer unaligned, /* pointer to reference_arg_list */ 3 46 3 subscript_ptr pointer unaligned, /* pointer to reference_subscripts */ 3 47 3 n_arguments fixed bin, /* number of arguments in argument list */ 3 48 3 n_subscripts fixed bin, /* number of subscripts present */ 3 49 3 50 2 constant_token_ptr pointer unaligned, /* pointer to constant token if this is a constant */ 3 51 2 subscript_refs_ptr pointer unaligned, /* pointer to array of subscript reference node pointers */ 3 52 2 invocation_level fixed bin, /* invocation level number ("[-17]") for this reference */ 3 53 2 probe_var_info_ptr ptr unal, /* only if flags.probe_variable */ 3 54 2 c_symbol_ptr ptr unal, 3 55 2 pad1 (9) pointer unaligned, 3 56 2 end_of_reference_node pointer aligned; 3 57 3 58 3 59 dcl 1 reference_arg_list aligned based, /* argument list; based on reference.argument_list */ 3 60 2 number fixed bin, /* number of arguments actually present */ 3 61 2 node (16) pointer aligned; /* reference node pointers for each argument */ 3 62 3 63 3 64 dcl 1 reference_subscripts aligned based, /* subscript array; based on reference.subscript_ptr */ 3 65 2 number fixed bin, /* number actually present */ 3 66 2 value (2, 16) fixed bin (24); /* values for lower and upper bound for each */ 3 67 3 68 3 69 dcl 1 subscript_reference_ptrs aligned based, /* array of pointers to subscript reference nodes */ 3 70 2 ptr (2, 16) pointer aligned; 3 71 3 72 /* END INCLUDE FILE probe_references.incl.pl1 */ 471 472 4 1 /* BEGIN INCLUDE FILE ... probe_seg_info.incl.pl1 4 2* 4 3* 25 June 79 JRDavis 4 4* 4 5* Modified 7 April 1983, TO - Add fields for character offset/line 4 6* correction per file. 4 7**/ 4 8 4 9 dcl 1 seg_info based aligned, /* place to remember information about object seg */ 4 10 2 language_type fixed bin, /* language of source program */ 4 11 2 bits aligned, 4 12 3 ignore_case bit (1) unal, 4 13 3 bound_segment bit (1) unaligned, 4 14 3 component bit (1) unaligned, 4 15 3 pad bit (33) unal, 4 16 2 names, /* where to find it */ 4 17 3 directory_name character (168) unal, /* what directory */ 4 18 3 entry_name character (32) unal, /* what segment */ 4 19 3 segname character (32) unal, /* procedure segname definition */ 4 20 2 identifier fixed bin (71), /* time of object creation */ 4 21 2 pointers, /* location of various parts of segment */ 4 22 3 symbol_header_ptr ptr unal, /* to symbol section */ 4 23 3 original_source_ptr ptr unal, /* to segment source map */ 4 24 3 statement_map_ptr ptr unal, /* to segment statement map */ 4 25 3 break_info ptr unal, /* for unbound segments, and start of chain for 4 26* bound ones, -> break_map !obsolete, I think! */ 4 27 3 chain ptr unal, /* to entry for next component if bound */ 4 28 3 linkage_ptr ptr unal, /* to linkage section */ 4 29 2 bounds aligned, /* structure of bounds information */ 4 30 3 text_bounds, 4 31 4 start fixed bin (35), 4 32 4 end fixed bin (35), 4 33 3 symbol_bounds, 4 34 4 start fixed bin (35), 4 35 4 end fixed bin (35), 4 36 2 map_size fixed bin, /* size of statement map */ 4 37 2 error_code fixed bin (35), /* errors encoutered while getting info, are recorded here */ 4 38 2 bound_create_time fixed bin (71), /* time seg containing was bound or compiled. */ 4 39 2 bound_sym_header ptr unal, /* to sym. section header for bound seg */ 4 40 2 pad (1) fixed bin (35), 4 41 4 42 2 nfiles fixed bin, 4 43 2 per_file (seg_info_nfiles refer (seg_info.nfiles)), 4 44 3 file_pointers ptr unal, 4 45 3 break_line (0:3) fixed bin (18) unsigned unaligned; 4 46 4 47 dcl seg_info_nfiles fixed bin; /* for allocation purposes */ 4 48 4 49 4 50 /* END INCLUDE FILE ... probe_seg_info.incl.pl1 */ 473 474 5 1 /* BEGIN INCLUDE FILE ... probe_source_info.incl.pl1 5 2* 5 3* James R. Davis 2 July 79 */ 5 4 5 5 dcl 1 source_info based aligned, 5 6 2 stmnt_map_entry_index fixed bin, /* index in stmnt map for this stmnt */ 5 7 2 instruction_ptr ptr, /* to last instruction executed */ 5 8 2 block_ptr ptr, /* to runtime_block node */ 5 9 2 stack_ptr ptr, /* to a stack frame */ 5 10 2 entry_ptr ptr, /* to entry seq. for this proc */ 5 11 2 seg_info_ptr ptr; /* to seg_info */ 5 12 5 13 dcl 1 current_source aligned like source_info based (probe_info.ptr_to_current_source); 5 14 dcl 1 initial_source aligned like source_info based (probe_info.ptr_to_initial_source); 5 15 5 16 /* END INCLUDE FILE ... probe_source_info.incl.pl1 */ 475 476 6 1 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 6 2 6 3 dcl 1 runtime_symbol aligned based, 6 4 2 flag unal bit(1), /* always "1"b for Version II */ 6 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 6 6 2 array_units unal bit(2), 6 7 2 units unal bit(2), /* addressing units */ 6 8 2 type unal bit(6), /* data type */ 6 9 2 level unal bit(6), /* structure level */ 6 10 2 ndims unal bit(6), /* number of dimensions */ 6 11 2 bits unal, 6 12 3 aligned bit(1), 6 13 3 packed bit(1), 6 14 3 simple bit(1), 6 15 2 skip unal bit(1), 6 16 2 scale unal bit(8), /* arithmetic scale factor */ 6 17 2 name unal bit(18), /* rel ptr to acc name */ 6 18 2 brother unal bit(18), /* rel ptr to brother entry */ 6 19 2 father unal bit(18), /* rel ptr to father entry */ 6 20 2 son unal bit(18), /* rel ptr to son entry */ 6 21 2 address unal, 6 22 3 location bit(18), /* location in storage class */ 6 23 3 class bit(4), /* storage class */ 6 24 3 next bit(14), /* rel ptr to next of same class */ 6 25 2 size fixed bin(35), /* encoded string|arith size */ 6 26 2 offset fixed bin(35), /* encoded offset from address */ 6 27 2 virtual_org fixed bin(35), 6 28 2 bounds(1), 6 29 3 lower fixed bin(35), /* encoded lower bound */ 6 30 3 upper fixed bin(35), /* encoded upper bound */ 6 31 3 multiplier fixed bin(35); /* encoded multiplier */ 6 32 6 33 dcl 1 runtime_bound based, 6 34 2 lower fixed bin(35), 6 35 2 upper fixed bin(35), 6 36 2 multiplier fixed bin(35); 6 37 6 38 dcl 1 runtime_block aligned based, 6 39 2 flag unal bit(1), /* always "1"b for Version II */ 6 40 2 quick unal bit(1), /* "1"b if quick block */ 6 41 2 fortran unal bit(1), /* "1"b if fortran program */ 6 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 6 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 6 44 2 skip unal bit(1), 6 45 2 type unal bit(6), /* = 0 for a block node */ 6 46 2 number unal bit(6), /* begin block number */ 6 47 2 start unal bit(18), /* rel ptr to start of symbols */ 6 48 2 name unal bit(18), /* rel ptr to name of proc */ 6 49 2 brother unal bit(18), /* rel ptr to brother block */ 6 50 2 father unal bit(18), /* rel ptr to father block */ 6 51 2 son unal bit(18), /* rel ptr to son block */ 6 52 2 map unal, 6 53 3 first bit(18), /* rel ptr to first word of map */ 6 54 3 last bit(18), /* rel ptr to last word of map */ 6 55 2 entry_info unal bit(18), /* info about entry of quick block */ 6 56 2 header unal bit(18), /* rel ptr to symbol header */ 6 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 6 58* on start list with length >= 2**i */ 6 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 6 60* on list with length >= 2 ** i */ 6 61 2 owner unal bit(18); /* rel ptr to owner block */ 6 62 6 63 dcl 1 runtime_token aligned based, 6 64 2 next unal bit(18), /* rel ptr to next token */ 6 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 6 66 2 name, /* ACC */ 6 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 6 68 3 string unal char(n refer(runtime_token.size)); 6 69 6 70 dcl 1 encoded_value aligned based, 6 71 2 flag bit (2) unal, 6 72 2 code bit (4) unal, 6 73 2 n1 bit (6) unal, 6 74 2 n2 bit (6) unal, 6 75 2 n3 bit (18) unal; 6 76 6 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 477 478 7 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 7 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 7 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 7 8* Objects of this type are PASCAL string types. 7 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 7 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 7 11* Added the new C types. 7 12* END HISTORY COMMENTS */ 7 13 7 14 /* This include file defines mnemonic names for the Multics 7 15* standard descriptor types, using both pl1 and cobol terminology. 7 16* PG 780613 7 17* JRD 790530 7 18* JRD 791016 7 19* MBW 810731 7 20* TGO 830614 Add hex types. 7 21* Modified June 83 JMAthane to add PASCAL data types 7 22* TGO 840120 Add float dec extended and generic, float binary generic 7 23**/ 7 24 7 25 dcl (real_fix_bin_1_dtype init (1), 7 26 real_fix_bin_2_dtype init (2), 7 27 real_flt_bin_1_dtype init (3), 7 28 real_flt_bin_2_dtype init (4), 7 29 cplx_fix_bin_1_dtype init (5), 7 30 cplx_fix_bin_2_dtype init (6), 7 31 cplx_flt_bin_1_dtype init (7), 7 32 cplx_flt_bin_2_dtype init (8), 7 33 real_fix_dec_9bit_ls_dtype init (9), 7 34 real_flt_dec_9bit_dtype init (10), 7 35 cplx_fix_dec_9bit_ls_dtype init (11), 7 36 cplx_flt_dec_9bit_dtype init (12), 7 37 pointer_dtype init (13), 7 38 offset_dtype init (14), 7 39 label_dtype init (15), 7 40 entry_dtype init (16), 7 41 structure_dtype init (17), 7 42 area_dtype init (18), 7 43 bit_dtype init (19), 7 44 varying_bit_dtype init (20), 7 45 char_dtype init (21), 7 46 varying_char_dtype init (22), 7 47 file_dtype init (23), 7 48 real_fix_dec_9bit_ls_overp_dtype init (29), 7 49 real_fix_dec_9bit_ts_overp_dtype init (30), 7 50 real_fix_bin_1_uns_dtype init (33), 7 51 real_fix_bin_2_uns_dtype init (34), 7 52 real_fix_dec_9bit_uns_dtype init (35), 7 53 real_fix_dec_9bit_ts_dtype init (36), 7 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 7 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 7 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 7 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 7 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 7 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 7 60 real_flt_dec_4bit_bytealigned_dtype init (44), 7 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 7 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 7 63 real_flt_hex_1_dtype init (47), 7 64 real_flt_hex_2_dtype init (48), 7 65 cplx_flt_hex_1_dtype init (49), 7 66 cplx_flt_hex_2_dtype init (50), 7 67 c_typeref_dtype init (54), 7 68 c_enum_dtype init (55), 7 69 c_enum_const_dtype init (56), 7 70 c_union_dtype init (57), 7 71 algol68_straight_dtype init (59), 7 72 algol68_format_dtype init (60), 7 73 algol68_array_descriptor_dtype init (61), 7 74 algol68_union_dtype init (62), 7 75 7 76 cobol_comp_6_dtype init (1), 7 77 cobol_comp_7_dtype init (1), 7 78 cobol_display_ls_dtype init (9), 7 79 cobol_structure_dtype init (17), 7 80 cobol_char_string_dtype init (21), 7 81 cobol_display_ls_overp_dtype init (29), 7 82 cobol_display_ts_overp_dtype init (30), 7 83 cobol_display_uns_dtype init (35), 7 84 cobol_display_ts_dtype init (36), 7 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 7 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 7 87 cobol_comp_5_uns_dtype init (40), 7 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 7 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 7 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 7 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 7 92 cplx_flt_dec_generic_dtype init (84), 7 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 7 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 7 95 7 96 dcl (ft_integer_dtype init (1), 7 97 ft_real_dtype init (3), 7 98 ft_double_dtype init (4), 7 99 ft_complex_dtype init (7), 7 100 ft_complex_double_dtype init (8), 7 101 ft_external_dtype init (16), 7 102 ft_logical_dtype init (19), 7 103 ft_char_dtype init (21), 7 104 ft_hex_real_dtype init (47), 7 105 ft_hex_double_dtype init (48), 7 106 ft_hex_complex_dtype init (49), 7 107 ft_hex_complex_double_dtype init (50) 7 108 ) fixed bin internal static options (constant); 7 109 7 110 dcl (algol68_short_int_dtype init (1), 7 111 algol68_int_dtype init (1), 7 112 algol68_long_int_dtype init (2), 7 113 algol68_real_dtype init (3), 7 114 algol68_long_real_dtype init (4), 7 115 algol68_compl_dtype init (7), 7 116 algol68_long_compl_dtype init (8), 7 117 algol68_bits_dtype init (19), 7 118 algol68_bool_dtype init (19), 7 119 algol68_char_dtype init (21), 7 120 algol68_byte_dtype init (21), 7 121 algol68_struct_struct_char_dtype init (22), 7 122 algol68_struct_struct_bool_dtype init (20) 7 123 ) fixed bin internal static options (constant); 7 124 7 125 dcl (label_constant_runtime_dtype init (24), 7 126 int_entry_runtime_dtype init (25), 7 127 ext_entry_runtime_dtype init (26), 7 128 ext_procedure_runtime_dtype init (27), 7 129 picture_runtime_dtype init (63) 7 130 ) fixed bin internal static options (constant); 7 131 7 132 dcl (pascal_integer_dtype init (1), 7 133 pascal_real_dtype init (4), 7 134 pascal_label_dtype init (24), 7 135 pascal_internal_procedure_dtype init (25), 7 136 pascal_exportable_procedure_dtype init (26), 7 137 pascal_imported_procedure_dtype init (27), 7 138 pascal_typed_pointer_type_dtype init (64), 7 139 pascal_char_dtype init (65), 7 140 pascal_boolean_dtype init (66), 7 141 pascal_record_file_type_dtype init (67), 7 142 pascal_record_type_dtype init (68), 7 143 pascal_set_dtype init (69), 7 144 pascal_enumerated_type_dtype init (70), 7 145 pascal_enumerated_type_element_dtype init (71), 7 146 pascal_enumerated_type_instance_dtype init (72), 7 147 pascal_user_defined_type_dtype init (73), 7 148 pascal_user_defined_type_instance_dtype init (74), 7 149 pascal_text_file_dtype init (75), 7 150 pascal_procedure_type_dtype init (76), 7 151 pascal_variable_formal_parameter_dtype init (77), 7 152 pascal_value_formal_parameter_dtype init (78), 7 153 pascal_entry_formal_parameter_dtype init (79), 7 154 pascal_parameter_procedure_dtype init (80), 7 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 7 156 7 157 7 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 479 480 481 482 end get_size_in_bits_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/88 1545.0 get_size_in_bits_.pl1 >spec>install>MR12.2-1210>get_size_in_bits_.pl1 467 1 11/12/86 1748.0 data_type_info_.incl.pl1 >ldd>include>data_type_info_.incl.pl1 469 2 07/11/79 1711.3 encoded_precision.incl.pl1 >ldd>include>encoded_precision.incl.pl1 471 3 11/11/88 1543.8 probe_references.incl.pl1 >spec>install>MR12.2-1210>probe_references.incl.pl1 473 4 11/02/83 1845.0 probe_seg_info.incl.pl1 >ldd>include>probe_seg_info.incl.pl1 475 5 11/26/79 1320.6 probe_source_info.incl.pl1 >ldd>include>probe_source_info.incl.pl1 477 6 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 479 7 10/26/88 1255.5 std_descriptor_types.incl.pl1 >ldd>include>std_descriptor_types.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. A_ref_ptr parameter pointer dcl 317 ref 312 322 322 322 322 322 BASED_CLASS constant bit(4) initial packed unaligned dcl 50 ref 409 P_address_ptr parameter pointer dcl 336 set ref 329 358* 408 P_cross_section_sw parameter bit(1) dcl 341 set ref 329 358* 427 P_level parameter fixed bin(17,0) dcl 338 ref 329 358 377 P_packedp parameter bit(1) dcl 40 ref 25 87 P_prec parameter fixed bin(35,0) dcl 40 ref 25 83 86 P_source_info_ptr parameter pointer dcl 336 set ref 329 358* 409 409 409 409 435 435 435 435 444 444 444 444 P_subscript_ptr parameter pointer dcl 336 ref 329 422 422 426 427 P_symbol_ptr parameter pointer dcl 336 set ref 329 350 354* 367 371 372 373 381 404 409 409* 420 433 442 P_type parameter fixed bin(17,0) dcl 40 ref 25 77 TOP_LEVEL 000133 constant fixed bin(17,0) initial dcl 48 set ref 322* a_temp_val 000105 automatic fixed bin(17,0) dcl 318 set ref 322* 327 address 3 based structure level 2 packed packed unaligned dcl 6-3 address_ptr 000102 automatic pointer dcl 340 in procedure "size_of_structure" set ref 408* 409 409* 435* 444* address_ptr 4 based pointer level 2 in structure "reference_node" dcl 3-16 in procedure "get_size_in_bits_" set ref 322* an_encoded_prec 000104 automatic structure level 1 dcl 59 set ref 83* arithmetic_attributes 0(02) 000024 external static structure array level 2 packed packed unaligned dcl 1-23 bits 0(24) based structure level 2 packed packed unaligned dcl 6-3 block_ptr 4 based pointer level 2 dcl 345 set ref 409* 409* 435* 435* 444* 444* bounds 7 based structure array level 2 dcl 6-3 class 3(18) based bit(4) level 3 packed packed unaligned dcl 6-3 ref 409 code 000111 automatic fixed bin(35,0) dcl 344 set ref 435* 438 444* 447 cplx_fix_bin_1_dtype constant fixed bin(17,0) initial dcl 7-25 ref 386 cplx_fix_bin_2_dtype constant fixed bin(17,0) initial dcl 7-25 ref 390 cplx_flt_bin_1_dtype constant fixed bin(17,0) initial dcl 7-25 ref 386 cplx_flt_bin_2_dtype constant fixed bin(17,0) initial dcl 7-25 ref 390 cross_section 116(02) based bit(1) level 3 packed packed unaligned dcl 3-16 ref 322 data_type_info_$info 000024 external static structure array level 1 dcl 1-23 divide builtin function dcl 74 ref 396 encoded_precision based structure level 1 dcl 2-8 fixed 0(02) 000024 external static bit(1) array level 3 in structure "data_type_info_$info" packed packed unaligned dcl 1-23 in procedure "get_size_in_bits_" ref 81 fixed builtin function dcl 74 in procedure "get_size_in_bits_" ref 350 371 420 flags 116 based structure level 2 dcl 3-16 get_size_in_bits_ 000010 constant entry external dcl 61 ref 373 hbound builtin function dcl 74 ref 78 high 000112 automatic fixed bin(35,0) dcl 344 set ref 427* 429* 442* 443 444* 444* 455 458 461 i 000107 automatic fixed bin(21,0) dcl 343 set ref 358* 360 362 420* 422 426 427 433 442* lbound builtin function dcl 74 ref 78 linkage_ptr 103 based pointer level 3 packed packed unaligned dcl 4-9 ref 409 435 444 low 000113 automatic fixed bin(35,0) dcl 344 set ref 426* 429 433* 434 435* 435* 451 458 461 lower 7 based fixed bin(35,0) array level 3 dcl 6-3 ref 433 mod builtin function dcl 74 ref 230 234 238 302 381 ndims 0(18) based bit(6) level 2 packed packed unaligned dcl 6-3 ref 404 420 null builtin function dcl 74 ref 354 358 358 409 422 451 451 455 455 number based fixed bin(17,0) level 2 dcl 347 ref 422 offset 5 based fixed bin(35,0) level 2 dcl 6-3 ref 381 optional_info 117 based structure level 2 dcl 3-16 p 000104 automatic pointer dcl 340 set ref 354* 354* 358* 363* packed 0(25) based bit(1) level 3 packed packed unaligned dcl 6-3 ref 372 packed_sw 000106 automatic bit(1) dcl 341 set ref 372* 373* 377 packedp 000103 automatic bit(1) dcl 57 set ref 87* 94 104 113 123 143 194 198 pointer_dtype constant fixed bin(17,0) initial dcl 7-25 ref 377 pointers 76 based structure level 2 dcl 4-9 prec 000102 automatic fixed bin(35,0) dcl 56 in procedure "get_size_in_bits_" set ref 84* 86* 91 100 110 119 129 132 136 139 164 167 170 173 186 194 198 203 206 212 215 221 224 227 230 230 234 234 238 238 264 275 282 299 302 302 prec 0(18) 000104 automatic fixed bin(18,0) level 2 in structure "an_encoded_prec" packed packed unsigned unaligned dcl 59 in procedure "get_size_in_bits_" set ref 84 probe_error_$warning 000012 constant entry external dcl 63 ref 451 455 ref_subs based structure level 1 dcl 347 reference_node based structure level 1 dcl 3-16 reference_subscripts based structure level 1 dcl 3-64 round_factor 000100 automatic fixed bin(17,0) dcl 338 set ref 386* 390* 394* 396 396 396 runtime_symbol based structure level 1 dcl 6-3 runtime_symbol_info_$brother 000014 constant entry external dcl 64 ref 363 runtime_symbol_info_$son 000016 constant entry external dcl 66 ref 354 seg_info based structure level 1 dcl 4-9 seg_info_ptr 12 based pointer level 2 dcl 345 ref 409 435 444 si based structure level 1 dcl 345 size 4 based fixed bin(35,0) level 2 dcl 6-3 set ref 367 373* source_info based structure level 1 dcl 5-5 source_info_ptr 10 based pointer level 2 dcl 3-16 set ref 322* stack_ptr 6 based pointer level 2 dcl 345 set ref 409* 435* 444* structure_dtype constant fixed bin(17,0) initial dcl 7-25 ref 350 stu_$decode_runtime_value 000020 constant entry external dcl 68 ref 435 444 stu_$get_implicit_qualifier 000022 constant entry external dcl 71 ref 409 subscript_ptr 120 based pointer level 3 packed packed unaligned dcl 3-16 ref 322 substr builtin function dcl 74 ref 367 symbol_ptr based pointer level 2 dcl 3-16 set ref 322* t 000100 automatic fixed bin(17,0) dcl 53 set ref 91* 94 98 100* 104 108 110* 113 113* 116* 117 119* 123 123* 126* 127 total_size 000110 automatic fixed bin(21,0) dcl 343 set ref 352* 362* 362 373* 377 381* 381 396* 396 404 404 461* 461 463 type 0(06) based bit(6) level 2 in structure "runtime_symbol" packed packed unaligned dcl 6-3 in procedure "get_size_in_bits_" ref 350 371 type 000101 automatic fixed bin(17,0) dcl 55 in procedure "get_size_in_bits_" set ref 77* 78 78 81 89 unspec builtin function dcl 74 set ref 83* 83 367 upper 10 based fixed bin(35,0) array level 3 dcl 6-3 ref 442 value 1 based fixed bin(24,0) array level 2 dcl 347 ref 426 427 var_type 000101 automatic fixed bin(17,0) dcl 338 set ref 371* 373* 377 386 386 390 390 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 7-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 7-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 7-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 7-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 7-25 area_dtype internal static fixed bin(17,0) initial dcl 7-25 bit_dtype internal static fixed bin(17,0) initial dcl 7-25 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 7-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 7-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 7-25 c_union_dtype internal static fixed bin(17,0) initial dcl 7-25 char_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 7-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 7-25 current_source based structure level 1 dcl 5-13 data_type_info_$max_decimal_precision external static fixed bin(17,0) dcl 1-48 data_type_info_$max_fixed_binary_precision external static fixed bin(17,0) dcl 1-50 data_type_info_$max_float_binary_precision external static fixed bin(17,0) dcl 1-49 data_type_info_$ninebit_digit_chars external static char(10) packed unaligned dcl 1-45 data_type_info_$ninebit_overpunched_sign_chars external static char(22) packed unaligned dcl 1-46 data_type_info_$ninebit_sign_chars external static char(2) packed unaligned dcl 1-44 data_type_info_$version_number external static fixed bin(17,0) dcl 1-20 data_type_info_this_version internal static fixed bin(17,0) initial dcl 1-21 encoded_value based structure level 1 dcl 6-70 entry_dtype internal static fixed bin(17,0) initial dcl 7-25 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 7-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 7-125 file_dtype internal static fixed bin(17,0) initial dcl 7-25 ft_char_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 7-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 7-96 initial_source based structure level 1 dcl 5-14 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 7-125 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 7-125 label_dtype internal static fixed bin(17,0) initial dcl 7-25 offset_dtype internal static fixed bin(17,0) initial dcl 7-25 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 7-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 7-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 7-125 real_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 7-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 7-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 7-25 reference_arg_list based structure level 1 dcl 3-59 runtime_block based structure level 1 dcl 6-38 runtime_bound based structure level 1 unaligned dcl 6-33 runtime_token based structure level 1 dcl 6-63 seg_info_nfiles automatic fixed bin(17,0) dcl 4-47 subscript_reference_ptrs based structure level 1 dcl 3-69 varying_bit_dtype internal static fixed bin(17,0) initial dcl 7-25 varying_char_dtype internal static fixed bin(17,0) initial dcl 7-25 NAMES DECLARED BY EXPLICIT CONTEXT. HAVE_BOUNDS 001510 constant label dcl 451 ref 430 complex_float_bin 000310 constant label dcl 119 ref 245 complex_float_dec_9bit 000373 constant label dcl 139 ref 296 float_bin 000243 constant label dcl 100 ref 241 float_dec_9bit 000344 constant label dcl 132 set ref 293 get_size_in_bits_ 000157 constant entry external dcl 25 size_of_structure 001030 constant entry internal dcl 329 ref 322 358 sizer 000000 constant label array(86) dcl 91 ref 78 78 89 structure 000761 constant entry external dcl 312 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1766 2014 1631 1776 Length 2346 1631 26 315 134 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_size_in_bits_ 94 external procedure is an external procedure. size_of_structure 110 internal procedure calls itself recursively. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_size_in_bits_ 000100 t get_size_in_bits_ 000101 type get_size_in_bits_ 000102 prec get_size_in_bits_ 000103 packedp get_size_in_bits_ 000104 an_encoded_prec get_size_in_bits_ 000105 a_temp_val get_size_in_bits_ size_of_structure 000100 round_factor size_of_structure 000101 var_type size_of_structure 000102 address_ptr size_of_structure 000104 p size_of_structure 000106 packed_sw size_of_structure 000107 i size_of_structure 000110 total_size size_of_structure 000111 code size_of_structure 000112 high size_of_structure 000113 low size_of_structure THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 call_ext_out_desc call_ext_out call_int_this call_int_other return_mac fl2_to_fx1 mpfx2 mdfx1 mdfx3 ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_size_in_bits_ probe_error_$warning runtime_symbol_info_$brother runtime_symbol_info_$son stu_$decode_runtime_value stu_$get_implicit_qualifier THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. data_type_info_$info LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000152 77 000167 78 000171 81 000200 83 000204 84 000206 85 000211 86 000212 87 000214 89 000217 91 000221 94 000225 97 000235 98 000240 100 000243 104 000250 107 000260 108 000263 110 000266 113 000272 116 000302 117 000304 119 000310 123 000315 126 000325 127 000327 129 000333 132 000344 136 000356 139 000373 143 000411 146 000416 148 000421 151 000424 155 000427 158 000432 161 000435 164 000440 167 000443 170 000450 173 000454 176 000461 179 000464 186 000467 190 000473 194 000476 197 000503 198 000506 201 000513 203 000516 206 000522 209 000533 212 000536 215 000544 218 000555 221 000560 224 000571 227 000603 230 000611 234 000626 238 000643 241 000661 245 000662 249 000663 264 000666 269 000671 275 000674 279 000677 282 000702 286 000705 293 000710 296 000711 299 000712 302 000724 305 000747 308 000752 312 000755 322 000771 327 001024 329 001027 350 001035 352 001051 354 001052 358 001066 360 001123 362 001131 363 001132 364 001143 367 001144 371 001154 372 001157 373 001163 377 001201 381 001214 384 001224 386 001225 390 001234 394 001243 396 001245 404 001252 408 001265 409 001270 420 001330 422 001344 426 001355 427 001360 429 001367 430 001370 433 001371 434 001400 435 001401 438 001433 442 001441 443 001447 444 001450 447 001502 451 001510 455 001541 458 001575 461 001605 462 001620 463 001622 ----------------------------------------------------------- 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