COMPILATION LISTING OF SEGMENT structure_find_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/24/88 1434.3 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* Probably written by Sibert */ 8 /* Modified 1984-10-04 BIM to admit all legal characters in structure names */ 9 /* Modified 1984-10-04 BIM to add pathname and caller_ptr entrypoints */ 10 11 structure_find_: 12 procedure (); 13 14 declare P_structure_name char (*) parameter; 15 declare P_symbol_ptr pointer parameter; /* Output: pointer to runtime symbol node */ 16 declare P_pathname char (*); 17 declare P_code fixed bin (35) parameter; 18 declare P_segment_ptr pointer; 19 20 declare code fixed bin (35); 21 declare pathname char (220); 22 declare structure_name char (256) varying; 23 declare outer_name char (64) varying; 24 declare symbol_ptr pointer; 25 declare 1 symbol aligned like runtime_symbol based (symbol_ptr); 26 declare seg_ptr pointer; 27 declare seg_bc fixed bin (24); 28 declare comp_name char (32); 29 30 declare error_table_$bad_arg fixed bin (35) external static; 31 declare error_table_$noentry fixed bin (35) external static; 32 33 declare hcs_$status_mins entry (ptr, fixed bin(2), fixed bin(24), fixed bin(35)); 34 declare structure_lib_mgr_$next_segment entry (fixed bin, pointer, pointer, char (*), pointer, fixed bin); 35 declare structure_lib_mgr_$get_segment entry (character (*), pointer, pointer, pointer, fixed binary, 36 fixed binary (35)); 37 declare structure_lib_mgr_$get_segment_ptr entry (pointer, fixed binary (24), character (*), pointer, pointer, 38 fixed binary, fixed binary (35)); 39 declare stu_$find_runtime_symbol entry (pointer, char (*), pointer, fixed bin (35)) returns (pointer); 40 41 declare (addrel, before, null, rtrim, verify) builtin; 42 43 /* */ 44 45 structure_find_$search: 46 entry (P_structure_name, P_symbol_ptr, P_code); 47 48 structure_name = rtrim (P_structure_name); 49 outer_name = before (structure_name, "."); 50 51 call find_structure (); 52 53 P_symbol_ptr = symbol_ptr; 54 P_code = code; 55 return; 56 57 structure_find_$pathname: 58 entry (P_pathname, P_structure_name, P_symbol_ptr, P_code); 59 60 structure_name = rtrim (P_structure_name); 61 outer_name = before (structure_name, "."); 62 pathname = P_pathname; 63 64 call find_structure$$pathname (); 65 66 P_symbol_ptr = symbol_ptr; 67 P_code = code; 68 return; 69 70 /**** This next clever device allows a program to find it's own symbol 71* table and use it for structure display, or to use a bound in 72* structure library. Eventually, this technology could be used to 73* support -ref_dir lower down. */ 74 75 structure_find_$pointer: 76 entry (P_segment_ptr, P_structure_name, P_symbol_ptr, P_code); 77 78 structure_name = rtrim (P_structure_name); 79 outer_name = before (structure_name, "."); 80 81 call find_component (P_segment_ptr, seg_ptr, seg_bc, comp_name); 82 call find_structure$$pointer (seg_ptr, seg_bc, comp_name); 83 P_symbol_ptr = symbol_ptr; 84 P_code = code; 85 return; 86 87 MAIN_RETURN: 88 P_code = code; 89 return; 90 91 /* */ 92 93 find_component: 94 procedure (seg_ptr, bound_seg_ptr, bound_seg_bc, comp_name); 95 96 declare seg_ptr pointer; 97 declare bound_seg_ptr pointer; 98 declare bound_seg_bc fixed bin (24); 99 declare comp_name char (32); 100 declare component_info_$offset entry (pointer, fixed binary (18), pointer, fixed binary (35)); 1 1 /* BEGIN INCLUDE SEGMENT ... component_info.incl.pl1 M. Weaver 4/26/72 */ 1 2 1 3 declare 1 ci aligned, 1 4 2 dcl_version fixed bin, /* version number of this structure */ 1 5 2 name char(32) aligned, /* objectname of component segment */ 1 6 2 text_start pointer, /* ptr to component's section of text */ 1 7 2 stat_start pointer, /* pointer to component's section of internal static */ 1 8 2 symb_start pointer, /* pointer to component's first symbol block */ 1 9 2 defblock_ptr pointer, /* ptr to component's definition block */ 1 10 2 text_lng fixed bin, /* length of text section */ 1 11 2 stat_lng fixed bin, /* length of internal static */ 1 12 2 symb_lng fixed bin, /* length of symbol section */ 1 13 2 n_blocks fixed bin, /* number of symbol blocks in component's symbol section */ 1 14 2 standard bit(1) aligned, /* indicates whether component is in standard (new) format */ 1 15 2 compiler char(8) aligned, /* name of component's compiler */ 1 16 2 compile_time fixed bin(71), /* time component was compiled */ 1 17 2 userid char(32) aligned, /* id of creator of component */ 1 18 2 cvers aligned, /* version of component's compiler in printable form */ 1 19 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 1 20 3 length bit(18) unaligned, /* length of name in characters */ 1 21 2 comment aligned, /* component's comment */ 1 22 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 1 23 3 length bit(18) unaligned, /* length of comment in characters */ 1 24 2 source_map fixed bin; /* offset, rel to beg of symbol block, of component's source map */ 1 25 1 26 /* END INCLUDE SEGMENT ... component_info.incl.pl1 */ 101 102 103 call hcs_$status_mins (seg_ptr, (0), bound_seg_bc, code); 104 if code ^= 0 then return; 105 bound_seg_ptr = setwordno (seg_ptr, 0); 106 107 call component_info_$offset (bound_seg_ptr, wordno (seg_ptr), addr (ci), code); 108 if code ^= 0 then /* not bound, mate */ 109 comp_name = ""; 110 else comp_name = ci.name; 111 return; 112 end find_component; 113 114 115 find_structure: 116 procedure (); 117 118 declare seg_ptr pointer; 119 declare header_ptr pointer; 120 declare known_list_size fixed bin; 121 declare known_list_ptr pointer; 122 declare known_list (known_list_size) char (32) based (known_list_ptr) unaligned; 123 declare seg_idx fixed bin; 124 declare pathname_sw bit (1) aligned; 125 declare ptr_sw bit (1) aligned; 126 127 ptr_sw, 128 pathname_sw = "0"b; 129 go to COMMON; 130 131 find_structure$$pathname: 132 entry; 133 134 ptr_sw = "0"b; 135 pathname_sw = "1"b; 136 go to COMMON; 137 138 find_structure$$pointer: 139 entry (P_seg_ptr, P_seg_bc, P_comp_name); 140 declare P_seg_ptr pointer; 141 declare P_seg_bc fixed bin (24); 142 declare P_comp_name char (*); 143 144 ptr_sw = "1"b; 145 pathname_sw = "0"b; 146 147 COMMON: 148 149 symbol_ptr = null (); 150 code = 0; 151 152 if (structure_name = "") | (verify (structure_name, "$_.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") ^= 0) then do; 153 code = error_table_$bad_arg; 154 return; 155 end; 156 157 if ^ptr_sw then seg_ptr = null (); 158 seg_idx = 0; 159 if pathname_sw | ptr_sw 160 then do; 161 if pathname_sw 162 then call structure_lib_mgr_$get_segment (pathname, seg_ptr, header_ptr, known_list_ptr, known_list_size, code); 163 else call structure_lib_mgr_$get_segment_ptr (P_seg_ptr, P_seg_bc, P_comp_name, header_ptr, known_list_ptr, known_list_size, code); 164 if code = 0 then call search_segment (); 165 if symbol_ptr = null () 166 then code = error_table_$noentry; 167 return; 168 end; 169 do while ((seg_idx = 0) | (seg_ptr ^= null ())); 170 call structure_lib_mgr_$next_segment (seg_idx, 171 seg_ptr, header_ptr, (""), known_list_ptr, known_list_size); 172 if (seg_ptr ^= null ()) then do; 173 call search_segment (); 174 if (symbol_ptr ^= null ()) then return; 175 end; 176 end; 177 code = error_table_$noentry; 178 return; 179 180 /* */ 181 182 search_segment: 183 procedure (); 184 185 declare rootp pointer; 186 declare idx fixed bin; 187 188 189 symbol_ptr = null (); /* until we find it*/ 190 191 if (header_ptr = null ()) then return; 192 if (header_ptr -> std_symbol_header.identifier ^= "symbtree") then return; 193 if (header_ptr -> std_symbol_header.area_pointer = ""b) then return; 194 rootp = addrel (header_ptr, header_ptr -> std_symbol_header.area_pointer); 195 if (rootp -> pl1_symbol_block.identifier ^= "pl1info") then return; 196 if (rootp -> pl1_symbol_block.root = ""b) then return; 197 rootp = addrel (header_ptr, rootp -> pl1_symbol_block.root); 198 199 if (hbound (known_list, 1) = 0) then do; /* No list, so try for anything */ 200 call search_block (rootp); 201 return; 202 end; 203 204 do idx = 1 to hbound (known_list, 1); 205 if (known_list (idx) = outer_name) then do; 206 call search_block (rootp); 207 return; 208 end; 209 end; /* Didn't find it */ 210 211 symbol_ptr = null (); 212 return; 213 214 /* */ 215 216 search_block: 217 procedure (P_blockp); 218 219 declare P_blockp pointer parameter; 220 221 declare block_ptr pointer; 222 declare block_offset bit (18) aligned; 223 declare stu_code fixed bin (35); 224 declare parentp pointer; 225 226 227 symbol_ptr = stu_$find_runtime_symbol 228 (P_blockp, (outer_name), parentp, stu_code); 229 230 if (symbol_ptr ^= null ()) then /* Found a level 1 structure */ 231 if (binary (symbol.type, 6) = structure_dtype) then 232 if (symbol.level = "01"b3) then do; 233 if (outer_name = structure_name) then return; 234 235 symbol_ptr = stu_$find_runtime_symbol 236 (P_blockp, (structure_name), parentp, stu_code); 237 if (symbol_ptr ^= null ()) then return; 238 end; 239 240 /* Couldn't find it here, so try the sons (if any) */ 241 242 block_ptr = P_blockp; 243 do block_offset = (P_blockp -> runtime_block.son) 244 repeat (block_ptr -> runtime_block.brother) 245 while (block_offset ^= ""b); 246 247 block_ptr = addrel (block_ptr, block_offset); 248 249 call search_block (block_ptr); 250 if (symbol_ptr ^= null ()) then return; /* Found it */ 251 end; 252 253 return; /* It's still null, and we've found nothing */ 254 end search_block; 255 256 end search_segment; 257 258 end find_structure; 259 260 dcl 1 std_symbol_header based aligned, 2 2 2 dcl_version fixed bin, 2 3 2 identifier char(8), 2 4 2 gen_number fixed bin, 2 5 2 gen_created fixed bin(71), 2 6 2 object_created fixed bin(71), 2 7 2 generator char(8), 2 8 2 gen_version unaligned, 2 9 3 offset bit(18), 2 10 3 size bit(18), 2 11 2 userid unaligned, 2 12 3 offset bit(18), 2 13 3 size bit(18), 2 14 2 comment unaligned, 2 15 3 offset bit(18), 2 16 3 size bit(18), 2 17 2 text_boundary bit(18) unaligned, 2 18 2 stat_boundary bit(18) unaligned, 2 19 2 source_map bit(18) unaligned, 2 20 2 area_pointer bit(18) unaligned, 2 21 2 backpointer bit(18) unaligned, 2 22 2 block_size bit(18) unaligned, 2 23 2 next_block bit(18) unaligned, 2 24 2 rel_text bit(18) unaligned, 2 25 2 rel_def bit(18) unaligned, 2 26 2 rel_link bit(18) unaligned, 2 27 2 rel_symbol bit(18) unaligned, 2 28 2 mini_truncate bit(18) unaligned, 2 29 2 maxi_truncate bit(18) unaligned; 260 261 dcl 1 pl1_symbol_block aligned based, 3 2 2 version fixed bin, 3 3 2 identifier char(8), /* must be "pl1info" */ 3 4 2 flags, 3 5 3 profile bit(1) unal, 3 6 3 table bit(1) unal, 3 7 3 map bit(1) unal, 3 8 3 flow bit(1) unal, 3 9 3 io bit(1) unal, 3 10 3 table_removed bit(1) unal, 3 11 3 long_profile bit(1) unal, 3 12 3 pad bit(29) unal, 3 13 2 greatest_severity fixed bin, 3 14 2 root unal bit(18), 3 15 2 profile unal bit(18), 3 16 2 map unal, 3 17 3 first bit(18), 3 18 3 last bit(18), 3 19 2 segname unaligned, 3 20 3 offset bit(18), 3 21 3 size bit(18); 261 262 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 4 2 4 3 dcl 1 runtime_symbol aligned based, 4 4 2 flag unal bit(1), /* always "1"b for Version II */ 4 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 4 6 2 array_units unal bit(2), 4 7 2 units unal bit(2), /* addressing units */ 4 8 2 type unal bit(6), /* data type */ 4 9 2 level unal bit(6), /* structure level */ 4 10 2 ndims unal bit(6), /* number of dimensions */ 4 11 2 bits unal, 4 12 3 aligned bit(1), 4 13 3 packed bit(1), 4 14 3 simple bit(1), 4 15 2 skip unal bit(1), 4 16 2 scale unal bit(8), /* arithmetic scale factor */ 4 17 2 name unal bit(18), /* rel ptr to acc name */ 4 18 2 brother unal bit(18), /* rel ptr to brother entry */ 4 19 2 father unal bit(18), /* rel ptr to father entry */ 4 20 2 son unal bit(18), /* rel ptr to son entry */ 4 21 2 address unal, 4 22 3 location bit(18), /* location in storage class */ 4 23 3 class bit(4), /* storage class */ 4 24 3 next bit(14), /* rel ptr to next of same class */ 4 25 2 size fixed bin(35), /* encoded string|arith size */ 4 26 2 offset fixed bin(35), /* encoded offset from address */ 4 27 2 virtual_org fixed bin(35), 4 28 2 bounds(1), 4 29 3 lower fixed bin(35), /* encoded lower bound */ 4 30 3 upper fixed bin(35), /* encoded upper bound */ 4 31 3 multiplier fixed bin(35); /* encoded multiplier */ 4 32 4 33 dcl 1 runtime_bound based, 4 34 2 lower fixed bin(35), 4 35 2 upper fixed bin(35), 4 36 2 multiplier fixed bin(35); 4 37 4 38 dcl 1 runtime_block aligned based, 4 39 2 flag unal bit(1), /* always "1"b for Version II */ 4 40 2 quick unal bit(1), /* "1"b if quick block */ 4 41 2 fortran unal bit(1), /* "1"b if fortran program */ 4 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 4 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 4 44 2 skip unal bit(1), 4 45 2 type unal bit(6), /* = 0 for a block node */ 4 46 2 number unal bit(6), /* begin block number */ 4 47 2 start unal bit(18), /* rel ptr to start of symbols */ 4 48 2 name unal bit(18), /* rel ptr to name of proc */ 4 49 2 brother unal bit(18), /* rel ptr to brother block */ 4 50 2 father unal bit(18), /* rel ptr to father block */ 4 51 2 son unal bit(18), /* rel ptr to son block */ 4 52 2 map unal, 4 53 3 first bit(18), /* rel ptr to first word of map */ 4 54 3 last bit(18), /* rel ptr to last word of map */ 4 55 2 entry_info unal bit(18), /* info about entry of quick block */ 4 56 2 header unal bit(18), /* rel ptr to symbol header */ 4 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 4 58* on start list with length >= 2**i */ 4 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 4 60* on list with length >= 2 ** i */ 4 61 2 owner unal bit(18); /* rel ptr to owner block */ 4 62 4 63 dcl 1 runtime_token aligned based, 4 64 2 next unal bit(18), /* rel ptr to next token */ 4 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 4 66 2 name, /* ACC */ 4 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 4 68 3 string unal char(n refer(runtime_token.size)); 4 69 4 70 dcl 1 encoded_value aligned based, 4 71 2 flag bit (2) unal, 4 72 2 code bit (4) unal, 4 73 2 n1 bit (6) unal, 4 74 2 n2 bit (6) unal, 4 75 2 n3 bit (18) unal; 4 76 4 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 262 263 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 5 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 5 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 5 8* Objects of this type are PASCAL string types. 5 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 5 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 5 11* Added the new C types. 5 12* END HISTORY COMMENTS */ 5 13 5 14 /* This include file defines mnemonic names for the Multics 5 15* standard descriptor types, using both pl1 and cobol terminology. 5 16* PG 780613 5 17* JRD 790530 5 18* JRD 791016 5 19* MBW 810731 5 20* TGO 830614 Add hex types. 5 21* Modified June 83 JMAthane to add PASCAL data types 5 22* TGO 840120 Add float dec extended and generic, float binary generic 5 23**/ 5 24 5 25 dcl (real_fix_bin_1_dtype init (1), 5 26 real_fix_bin_2_dtype init (2), 5 27 real_flt_bin_1_dtype init (3), 5 28 real_flt_bin_2_dtype init (4), 5 29 cplx_fix_bin_1_dtype init (5), 5 30 cplx_fix_bin_2_dtype init (6), 5 31 cplx_flt_bin_1_dtype init (7), 5 32 cplx_flt_bin_2_dtype init (8), 5 33 real_fix_dec_9bit_ls_dtype init (9), 5 34 real_flt_dec_9bit_dtype init (10), 5 35 cplx_fix_dec_9bit_ls_dtype init (11), 5 36 cplx_flt_dec_9bit_dtype init (12), 5 37 pointer_dtype init (13), 5 38 offset_dtype init (14), 5 39 label_dtype init (15), 5 40 entry_dtype init (16), 5 41 structure_dtype init (17), 5 42 area_dtype init (18), 5 43 bit_dtype init (19), 5 44 varying_bit_dtype init (20), 5 45 char_dtype init (21), 5 46 varying_char_dtype init (22), 5 47 file_dtype init (23), 5 48 real_fix_dec_9bit_ls_overp_dtype init (29), 5 49 real_fix_dec_9bit_ts_overp_dtype init (30), 5 50 real_fix_bin_1_uns_dtype init (33), 5 51 real_fix_bin_2_uns_dtype init (34), 5 52 real_fix_dec_9bit_uns_dtype init (35), 5 53 real_fix_dec_9bit_ts_dtype init (36), 5 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 5 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 5 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 5 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 5 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 5 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 5 60 real_flt_dec_4bit_bytealigned_dtype init (44), 5 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 5 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 5 63 real_flt_hex_1_dtype init (47), 5 64 real_flt_hex_2_dtype init (48), 5 65 cplx_flt_hex_1_dtype init (49), 5 66 cplx_flt_hex_2_dtype init (50), 5 67 c_typeref_dtype init (54), 5 68 c_enum_dtype init (55), 5 69 c_enum_const_dtype init (56), 5 70 c_union_dtype init (57), 5 71 algol68_straight_dtype init (59), 5 72 algol68_format_dtype init (60), 5 73 algol68_array_descriptor_dtype init (61), 5 74 algol68_union_dtype init (62), 5 75 5 76 cobol_comp_6_dtype init (1), 5 77 cobol_comp_7_dtype init (1), 5 78 cobol_display_ls_dtype init (9), 5 79 cobol_structure_dtype init (17), 5 80 cobol_char_string_dtype init (21), 5 81 cobol_display_ls_overp_dtype init (29), 5 82 cobol_display_ts_overp_dtype init (30), 5 83 cobol_display_uns_dtype init (35), 5 84 cobol_display_ts_dtype init (36), 5 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 5 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 5 87 cobol_comp_5_uns_dtype init (40), 5 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 5 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 5 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 5 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 5 92 cplx_flt_dec_generic_dtype init (84), 5 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 5 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 5 95 5 96 dcl (ft_integer_dtype init (1), 5 97 ft_real_dtype init (3), 5 98 ft_double_dtype init (4), 5 99 ft_complex_dtype init (7), 5 100 ft_complex_double_dtype init (8), 5 101 ft_external_dtype init (16), 5 102 ft_logical_dtype init (19), 5 103 ft_char_dtype init (21), 5 104 ft_hex_real_dtype init (47), 5 105 ft_hex_double_dtype init (48), 5 106 ft_hex_complex_dtype init (49), 5 107 ft_hex_complex_double_dtype init (50) 5 108 ) fixed bin internal static options (constant); 5 109 5 110 dcl (algol68_short_int_dtype init (1), 5 111 algol68_int_dtype init (1), 5 112 algol68_long_int_dtype init (2), 5 113 algol68_real_dtype init (3), 5 114 algol68_long_real_dtype init (4), 5 115 algol68_compl_dtype init (7), 5 116 algol68_long_compl_dtype init (8), 5 117 algol68_bits_dtype init (19), 5 118 algol68_bool_dtype init (19), 5 119 algol68_char_dtype init (21), 5 120 algol68_byte_dtype init (21), 5 121 algol68_struct_struct_char_dtype init (22), 5 122 algol68_struct_struct_bool_dtype init (20) 5 123 ) fixed bin internal static options (constant); 5 124 5 125 dcl (label_constant_runtime_dtype init (24), 5 126 int_entry_runtime_dtype init (25), 5 127 ext_entry_runtime_dtype init (26), 5 128 ext_procedure_runtime_dtype init (27), 5 129 picture_runtime_dtype init (63) 5 130 ) fixed bin internal static options (constant); 5 131 5 132 dcl (pascal_integer_dtype init (1), 5 133 pascal_real_dtype init (4), 5 134 pascal_label_dtype init (24), 5 135 pascal_internal_procedure_dtype init (25), 5 136 pascal_exportable_procedure_dtype init (26), 5 137 pascal_imported_procedure_dtype init (27), 5 138 pascal_typed_pointer_type_dtype init (64), 5 139 pascal_char_dtype init (65), 5 140 pascal_boolean_dtype init (66), 5 141 pascal_record_file_type_dtype init (67), 5 142 pascal_record_type_dtype init (68), 5 143 pascal_set_dtype init (69), 5 144 pascal_enumerated_type_dtype init (70), 5 145 pascal_enumerated_type_element_dtype init (71), 5 146 pascal_enumerated_type_instance_dtype init (72), 5 147 pascal_user_defined_type_dtype init (73), 5 148 pascal_user_defined_type_instance_dtype init (74), 5 149 pascal_text_file_dtype init (75), 5 150 pascal_procedure_type_dtype init (76), 5 151 pascal_variable_formal_parameter_dtype init (77), 5 152 pascal_value_formal_parameter_dtype init (78), 5 153 pascal_entry_formal_parameter_dtype init (79), 5 154 pascal_parameter_procedure_dtype init (80), 5 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 5 156 5 157 5 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 263 264 265 end structure_find_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/24/88 1400.6 structure_find_.pl1 >special_ldd>install>MR12.2-1184>structure_find_.pl1 101 1 05/06/74 1741.0 component_info.incl.pl1 >ldd>include>component_info.incl.pl1 260 2 05/06/74 1751.6 std_symbol_header.incl.pl1 >ldd>include>std_symbol_header.incl.pl1 261 3 03/10/77 1345.4 pl1_symbol_block.incl.pl1 >ldd>include>pl1_symbol_block.incl.pl1 262 4 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 263 5 10/24/88 1336.9 std_descriptor_types.incl.pl1 >special_ldd>install>MR12.2-1184>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. P_blockp parameter pointer dcl 219 set ref 216 227* 235* 242 243 P_code parameter fixed bin(35,0) dcl 17 set ref 45 54* 57 67* 75 84* 87* P_comp_name parameter char packed unaligned dcl 142 set ref 138 163* P_pathname parameter char packed unaligned dcl 16 ref 57 62 P_seg_bc parameter fixed bin(24,0) dcl 141 set ref 138 163* P_seg_ptr parameter pointer dcl 140 set ref 138 163* P_segment_ptr parameter pointer dcl 18 set ref 75 81* P_structure_name parameter char packed unaligned dcl 14 ref 45 48 57 60 75 78 P_symbol_ptr parameter pointer dcl 15 set ref 45 53* 57 66* 75 83* addrel builtin function dcl 41 ref 194 197 247 area_pointer 16(18) based bit(18) level 2 packed packed unaligned dcl 2-1 ref 193 194 before builtin function dcl 41 ref 49 61 79 block_offset 000102 automatic bit(18) dcl 222 set ref 243* 243* 247* block_ptr 000100 automatic pointer dcl 221 set ref 242* 247* 247 249* 251 bound_seg_bc parameter fixed bin(24,0) dcl 98 set ref 93 103* bound_seg_ptr parameter pointer dcl 97 set ref 93 105* 107* brother 1(18) based bit(18) level 2 packed packed unaligned dcl 4-38 ref 251 ci 000346 automatic structure level 1 dcl 1-3 set ref 107 107 code 000100 automatic fixed bin(35,0) dcl 20 set ref 54 67 84 87 103* 104 107* 108 150* 153* 161* 163* 164 165* 177* comp_name parameter char(32) packed unaligned dcl 99 in procedure "find_component" set ref 93 108* 110* comp_name 000317 automatic char(32) packed unaligned dcl 28 in procedure "structure_find_" set ref 81* 82* component_info_$offset 000026 constant entry external dcl 100 ref 107 error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 30 ref 153 error_table_$noentry 000012 external static fixed bin(35,0) dcl 31 ref 165 177 hcs_$status_mins 000014 constant entry external dcl 33 ref 103 header_ptr 000426 automatic pointer dcl 119 set ref 161* 163* 170* 191 192 193 194 194 197 identifier 1 based char(8) level 2 in structure "std_symbol_header" dcl 2-1 in procedure "structure_find_" ref 192 identifier 1 based char(8) level 2 in structure "pl1_symbol_block" dcl 3-1 in procedure "structure_find_" ref 195 idx 000450 automatic fixed bin(17,0) dcl 186 set ref 204* 205* known_list based char(32) array packed unaligned dcl 122 ref 199 204 205 known_list_ptr 000432 automatic pointer dcl 121 set ref 161* 163* 170* 199 204 205 known_list_size 000430 automatic fixed bin(17,0) dcl 120 set ref 161* 163* 170* 199 204 level 0(12) based bit(6) level 2 packed packed unaligned dcl 25 ref 230 name 1 000346 automatic char(32) level 2 dcl 1-3 set ref 110 null builtin function dcl 41 ref 147 157 165 169 172 174 189 191 211 230 237 250 outer_name 000271 automatic varying char(64) dcl 23 set ref 49* 61* 79* 205 227 233 parentp 000104 automatic pointer dcl 224 set ref 227* 235* pathname 000101 automatic char(220) packed unaligned dcl 21 set ref 62* 161* pathname_sw 000435 automatic bit(1) dcl 124 set ref 127* 135* 145* 159 161 pl1_symbol_block based structure level 1 dcl 3-1 ptr_sw 000436 automatic bit(1) dcl 125 set ref 127* 134* 144* 157 159 root 5 based bit(18) level 2 packed packed unaligned dcl 3-1 ref 196 197 rootp 000446 automatic pointer dcl 185 set ref 194* 195 196 197* 197 200* 206* rtrim builtin function dcl 41 ref 48 60 78 runtime_block based structure level 1 dcl 4-38 runtime_symbol based structure level 1 dcl 4-3 seg_bc 000316 automatic fixed bin(24,0) dcl 27 set ref 81* 82* seg_idx 000434 automatic fixed bin(17,0) dcl 123 set ref 158* 169 170* seg_ptr 000314 automatic pointer dcl 26 in procedure "structure_find_" set ref 81* 82* seg_ptr 000424 automatic pointer dcl 118 in procedure "find_structure" set ref 157* 161* 169 170* 172 seg_ptr parameter pointer dcl 96 in procedure "find_component" set ref 93 103* 105 107 107 son 2(18) based bit(18) level 2 packed packed unaligned dcl 4-38 ref 243 std_symbol_header based structure level 1 dcl 2-1 structure_dtype constant fixed bin(17,0) initial dcl 5-25 ref 230 structure_lib_mgr_$get_segment 000020 constant entry external dcl 35 ref 161 structure_lib_mgr_$get_segment_ptr 000022 constant entry external dcl 37 ref 163 structure_lib_mgr_$next_segment 000016 constant entry external dcl 34 ref 170 structure_name 000170 automatic varying char(256) dcl 22 set ref 48* 49 60* 61 78* 79 152 152 233 235 stu_$find_runtime_symbol 000024 constant entry external dcl 39 ref 227 235 stu_code 000103 automatic fixed bin(35,0) dcl 223 set ref 227* 235* symbol based structure level 1 dcl 25 symbol_ptr 000312 automatic pointer dcl 24 set ref 53 66 83 147* 165 174 189* 211* 227* 230 230 230 235* 237 250 type 0(06) based bit(6) level 2 packed packed unaligned dcl 25 ref 230 verify builtin function dcl 41 ref 152 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 5-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 5-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 5-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 5-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 5-25 area_dtype internal static fixed bin(17,0) initial dcl 5-25 bit_dtype internal static fixed bin(17,0) initial dcl 5-25 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 5-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 5-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 5-25 c_union_dtype internal static fixed bin(17,0) initial dcl 5-25 char_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 5-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 5-25 encoded_value based structure level 1 dcl 4-70 entry_dtype internal static fixed bin(17,0) initial dcl 5-25 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 5-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 5-125 file_dtype internal static fixed bin(17,0) initial dcl 5-25 ft_char_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 5-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 5-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 5-125 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 5-125 label_dtype internal static fixed bin(17,0) initial dcl 5-25 offset_dtype internal static fixed bin(17,0) initial dcl 5-25 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 5-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 5-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 5-125 pointer_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 5-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 5-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 5-25 runtime_bound based structure level 1 unaligned dcl 4-33 runtime_token based structure level 1 dcl 4-63 varying_bit_dtype internal static fixed bin(17,0) initial dcl 5-25 varying_char_dtype internal static fixed bin(17,0) initial dcl 5-25 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000525 constant label dcl 147 set ref 129 136 MAIN_RETURN 000403 constant label dcl 87 find_component 000406 constant entry internal dcl 93 ref 81 find_structure 000500 constant entry internal dcl 115 ref 51 find_structure$$pathname 000504 constant entry internal dcl 131 ref 64 find_structure$$pointer 000511 constant entry internal dcl 138 ref 82 search_block 001070 constant entry internal dcl 216 ref 200 206 249 search_segment 000757 constant entry internal dcl 182 ref 164 173 structure_find_ 000040 constant entry external dcl 11 structure_find_$pathname 000147 constant entry external dcl 57 structure_find_$pointer 000257 constant entry external dcl 75 structure_find_$search 000052 constant entry external dcl 45 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 107 107 binary builtin function ref 230 hbound builtin function ref 199 204 setwordno builtin function ref 105 wordno builtin function ref 107 107 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1702 1732 1467 1712 Length 2242 1467 30 273 212 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME structure_find_ 410 external procedure is an external procedure. find_component internal procedure shares stack frame of external procedure structure_find_. find_structure internal procedure shares stack frame of external procedure structure_find_. search_segment internal procedure shares stack frame of external procedure structure_find_. search_block 96 internal procedure calls itself recursively. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME search_block 000100 block_ptr search_block 000102 block_offset search_block 000103 stu_code search_block 000104 parentp search_block structure_find_ 000100 code structure_find_ 000101 pathname structure_find_ 000170 structure_name structure_find_ 000271 outer_name structure_find_ 000312 symbol_ptr structure_find_ 000314 seg_ptr structure_find_ 000316 seg_bc structure_find_ 000317 comp_name structure_find_ 000346 ci find_component 000424 seg_ptr find_structure 000426 header_ptr find_structure 000430 known_list_size find_structure 000432 known_list_ptr find_structure 000434 seg_idx find_structure 000435 pathname_sw find_structure 000436 ptr_sw find_structure 000446 rootp search_segment 000450 idx search_segment THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. component_info_$offset hcs_$status_mins structure_lib_mgr_$get_segment structure_lib_mgr_$get_segment_ptr structure_lib_mgr_$next_segment stu_$find_runtime_symbol THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000037 45 000045 48 000071 49 000117 51 000134 53 000135 54 000137 55 000141 57 000142 60 000173 61 000221 62 000236 64 000244 66 000245 67 000247 68 000251 75 000252 78 000276 79 000324 81 000341 82 000356 83 000376 84 000400 85 000402 87 000403 89 000405 93 000406 103 000410 104 000427 105 000432 107 000436 108 000462 110 000472 111 000477 115 000500 127 000501 129 000503 131 000504 134 000505 135 000506 136 000510 138 000511 144 000522 145 000524 147 000525 150 000527 152 000530 153 000550 154 000553 157 000554 158 000560 159 000561 161 000565 163 000623 164 000664 165 000667 167 000676 169 000677 170 000706 172 000740 173 000744 174 000745 176 000752 177 000753 178 000756 182 000757 189 000760 191 000762 192 000766 193 000774 194 001001 195 001004 196 001013 197 001020 199 001023 200 001025 201 001033 204 001034 205 001043 206 001053 207 001061 209 001062 211 001064 212 001066 216 001067 227 001075 230 001135 233 001155 235 001163 237 001223 242 001231 243 001235 247 001242 249 001245 250 001254 251 001261 253 001266 ----------------------------------------------------------- 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