COMPILATION LISTING OF SEGMENT display_symbol Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1624.7 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* Modified on: 10 August 1971 by PG */ 12 /* Modified on: 14 July 1978 by PCK for unsigned binary */ 13 /* Modified on: 25 April 1979 by PCK to implement 4-bit decimal */ 14 /* Modified on: 29 November 1979 by PCK to print a tree level indented listing */ 15 16 /* This program prints a formatted dump of the symbol table pointed to 17* by p. */ 18 19 display_symbol: proc(a,tree_level); 20 21 dcl (a,p,q,vector) ptr, 22 line char(96), 23 tree_level fixed bin, 24 lp fixed bin; 25 26 dcl i fixed bin(31); 27 dcl n fixed bin(15); 28 dcl k fixed bin; 29 dcl based_bitstring bit(36) aligned based; 30 31 dcl display_any_node_name ext entry(char(*) aligned, ptr,fixed bin); 32 dcl ioa_ ext entry options(variable); 33 dcl decode_node_id entry(ptr,bit(1)) returns(char(120) varying); 34 dcl ( display_array, display_exp, display_constant) 35 ext entry(ptr,fixed bin); 36 dcl (fixed,string,length,null) builtin; 37 38 dcl display_stat_$brief_display bit(1) ext static; 39 40 dcl boundary_type(0:7) char(5) int static aligned init("----","bit ","digit","byte","half","word","mod2","mod4"); 41 dcl declare_type(0:5) char(8) int static init("--------","declare ","expl ctx","context ", 42 "implicit","compiler"); 43 44 1 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 1 2 1 3 dcl 1 symbol based aligned, 1 4 2 node_type bit(9) unal, 1 5 2 source_id structure unal, 1 6 3 file_number bit(8), 1 7 3 line_number bit(14), 1 8 3 statement_number bit(5), 1 9 2 location fixed(18) unal unsigned, 1 10 2 allocated bit(1) unal, 1 11 2 dcl_type bit(3) unal, 1 12 2 reserved bit(6) unal, 1 13 2 pix unal, 1 14 3 pic_fixed bit(1) unal, 1 15 3 pic_float bit(1) unal, 1 16 3 pic_char bit(1) unal, 1 17 3 pic_scale fixed(7) unal, 1 18 3 pic_size fixed(7) unal, 1 19 2 level fixed(8) unal, 1 20 2 boundary fixed(3) unal, 1 21 2 size_units fixed(3) unal, 1 22 2 scale fixed(7) unal, 1 23 2 runtime bit(18) unal, 1 24 2 runtime_offset bit(18) unal, 1 25 2 block_node ptr unal, 1 26 2 token ptr unal, 1 27 2 next ptr unal, 1 28 2 multi_use ptr unal, 1 29 2 cross_references ptr unal, 1 30 2 initial ptr unal, 1 31 2 array ptr unal, 1 32 2 descriptor ptr unal, 1 33 2 equivalence ptr unal, 1 34 2 reference ptr unal, 1 35 2 general ptr unal, 1 36 2 father ptr unal, 1 37 2 brother ptr unal, 1 38 2 son ptr unal, 1 39 2 word_size ptr unal, 1 40 2 bit_size ptr unal, 1 41 2 dcl_size ptr unal, 1 42 2 symtab_size ptr unal, 1 43 2 c_word_size fixed(24), 1 44 2 c_bit_size fixed(24), 1 45 2 c_dcl_size fixed(24), 1 46 1 47 2 attributes structure aligned, 1 48 3 data_type structure unal, 1 49 4 structure bit(1) , 1 50 4 fixed bit(1), 1 51 4 float bit(1), 1 52 4 bit bit(1), 1 53 4 char bit(1), 1 54 4 ptr bit(1), 1 55 4 offset bit(1), 1 56 4 area bit(1), 1 57 4 label bit(1), 1 58 4 entry bit(1), 1 59 4 file bit(1), 1 60 4 arg_descriptor bit(1), 1 61 4 storage_block bit(1), 1 62 4 unused_1 bit(1), 1 63 4 condition bit(1), 1 64 4 format bit(1), 1 65 4 builtin bit(1), 1 66 4 generic bit(1), 1 67 4 picture bit(1), 1 68 1 69 3 misc_attributes structure unal, 1 70 4 dimensioned bit(1), 1 71 4 initialed bit(1), 1 72 4 aligned bit(1), 1 73 4 unaligned bit(1), 1 74 4 signed bit(1), 1 75 4 unsigned bit(1), 1 76 4 precision bit(1), 1 77 4 varying bit(1), 1 78 4 local bit(1), 1 79 4 decimal bit(1), 1 80 4 binary bit(1), 1 81 4 real bit(1), 1 82 4 complex bit(1), 1 83 4 variable bit(1), 1 84 4 reducible bit(1), 1 85 4 irreducible bit(1), 1 86 4 returns bit(1), 1 87 4 position bit(1), 1 88 4 internal bit(1), 1 89 4 external bit(1), 1 90 4 like bit(1), 1 91 4 member bit(1), 1 92 4 non_varying bit(1), 1 93 4 options bit(1), 1 94 4 variable_arg_list bit(1), /* options(variable) */ 1 95 4 alloc_in_text bit(1), /* options(constant) */ 1 96 1 97 3 storage_class structure unal, 1 98 4 auto bit(1), 1 99 4 based bit(1), 1 100 4 static bit(1), 1 101 4 controlled bit(1), 1 102 4 defined bit(1), 1 103 4 parameter bit(1), 1 104 4 param_desc bit(1), 1 105 4 constant bit(1), 1 106 4 temporary bit(1), 1 107 4 return_value bit(1), 1 108 1 109 3 file_attributes structure unal, 1 110 4 print bit(1), 1 111 4 input bit(1), 1 112 4 output bit(1), 1 113 4 update bit(1), 1 114 4 stream bit(1), 1 115 4 reserved_1 bit(1), 1 116 4 record bit(1), 1 117 4 sequential bit(1), 1 118 4 direct bit(1), 1 119 4 interactive bit(1), /* env(interactive) */ 1 120 4 reserved_2 bit(1), 1 121 4 reserved_3 bit(1), 1 122 4 stringvalue bit(1), /* env(stringvalue) */ 1 123 4 keyed bit(1), 1 124 4 reserved_4 bit(1), 1 125 4 environment bit(1), 1 126 1 127 3 compiler_developed structure unal, 1 128 4 aliasable bit(1), 1 129 4 packed bit(1), 1 130 4 passed_as_arg bit(1), 1 131 4 allocate bit(1), 1 132 4 set bit(1), 1 133 4 exp_extents bit(1), 1 134 4 refer_extents bit(1), 1 135 4 star_extents bit(1), 1 136 4 isub bit(1), 1 137 4 put_in_symtab bit(1), 1 138 4 contiguous bit(1), 1 139 4 put_data bit(1), 1 140 4 overlayed bit(1), 1 141 4 error bit(1), 1 142 4 symtab_processed bit(1), 1 143 4 overlayed_by_builtin bit(1), 1 144 4 defaulted bit(1), 1 145 4 connected bit(1); 1 146 1 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 45 2 1 2 2 dcl 1 default based aligned, 2 3 2 node_type bit(9) unaligned, 2 4 2 source_id structure unaligned, 2 5 3 file_number bit(8), 2 6 3 line_number bit(14), 2 7 3 statement_number bit(5), 2 8 2 next ptr unaligned, 2 9 2 predicate ptr unaligned, 2 10 2 symbol ptr unaligned, 2 11 2 system bit(1) unaligned, 2 12 2 error bit(1) unaligned, 2 13 2 no_defaults bit(1) unaligned, 2 14 2 reserved bit(29) unaligned; 46 3 1 dcl 1 label based aligned, 3 2 2 node_type bit(9) unaligned, 3 3 2 source_id structure unaligned, 3 4 3 file_number bit(8), 3 5 3 line_number bit(14), 3 6 3 statement_number bit(5), 3 7 2 location fixed(17) unaligned, 3 8 2 allocated bit(1) unaligned, 3 9 2 dcl_type bit(3) unaligned, 3 10 2 reserved bit(29) unaligned, 3 11 2 array bit(1) unaligned, 3 12 2 used_as_format bit(1) unaligned, 3 13 2 used_in_goto bit(1) unaligned, 3 14 2 symbol_table bit(18) unaligned, 3 15 2 low_bound fixed(17) unaligned, 3 16 2 high_bound fixed(17) unaligned, 3 17 2 block_node ptr unaligned, 3 18 2 token ptr unaligned, 3 19 2 next ptr unaligned, 3 20 2 multi_use ptr unaligned, 3 21 2 cross_reference ptr unaligned, 3 22 2 statement ptr unaligned; 47 4 1 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 4 2 4 3 dcl 1 statement based aligned, 4 4 2 node_type bit(9) unaligned, 4 5 2 source_id structure unaligned, 4 6 3 file_number bit(8), 4 7 3 line_number bit(14), 4 8 3 statement_number bit(5), 4 9 2 next ptr unaligned, 4 10 2 back ptr unaligned, 4 11 2 root ptr unaligned, 4 12 2 labels ptr unaligned, 4 13 2 reference_list ptr unaligned, 4 14 2 state_list ptr unaligned, 4 15 2 reference_count fixed(17) unaligned, 4 16 2 ref_count_copy fixed(17) unaligned, 4 17 2 object structure unaligned, 4 18 3 start fixed(17), 4 19 3 finish fixed(17), 4 20 2 source structure unaligned, 4 21 3 segment fixed(11), 4 22 3 start fixed(23), 4 23 3 length fixed(11), 4 24 2 prefix bit(12) unaligned, 4 25 2 optimized bit(1) unaligned, 4 26 2 free_temps bit(1) unaligned, 4 27 2 LHS_in_RHS bit(1) unaligned, 4 28 2 statement_type bit(9) unaligned, 4 29 2 bits structure unaligned, 4 30 3 processed bit(1) unaligned, 4 31 3 put_in_profile bit(1) unaligned, 4 32 3 generated bit(1) unaligned, 4 33 3 snap bit(1) unaligned, 4 34 3 system bit(1) unaligned, 4 35 3 irreducible bit(1) unaligned, 4 36 3 checked bit(1) unaligned, 4 37 3 save_temps bit(1) unaligned, 4 38 3 suppress_warnings bit(1) unaligned, 4 39 3 force_nonquick bit(1) unaligned, 4 40 3 expanded_by_name bit(1) unaligned, 4 41 3 pad bit(25) unaligned; 4 42 4 43 /* END INCLUDE FILE ... statement.incl.pl1 */ 48 5 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 5 2 5 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 5 4 5 5 dcl ( block_node initial("000000001"b), 5 6 statement_node initial("000000010"b), 5 7 operator_node initial("000000011"b), 5 8 reference_node initial("000000100"b), 5 9 token_node initial("000000101"b), 5 10 symbol_node initial("000000110"b), 5 11 context_node initial("000000111"b), 5 12 array_node initial("000001000"b), 5 13 bound_node initial("000001001"b), 5 14 format_value_node initial("000001010"b), 5 15 list_node initial("000001011"b), 5 16 default_node initial("000001100"b), 5 17 machine_state_node initial("000001101"b), 5 18 source_node initial("000001110"b), 5 19 label_node initial("000001111"b), 5 20 cross_reference_node initial("000010000"b), 5 21 sf_par_node initial("000010001"b), 5 22 temporary_node initial("000010010"b), 5 23 label_array_element_node initial("000010011"b), 5 24 by_name_agg_node initial("000010100"b)) 5 25 bit(9) internal static aligned options(constant); 5 26 5 27 dcl 1 node based aligned, 5 28 2 type unal bit(9), 5 29 2 source_id unal structure, 5 30 3 file_number bit(8), 5 31 3 line_number bit(14), 5 32 3 statement_number bit(5); 5 33 5 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 49 6 1 dcl pl1_stat_$token_list_ptr ptr external static; /* pointer to token list */ 6 2 dcl token_list(token_list_length) ptr based(token_list_pointer); 6 3 dcl token_list_pointer ptr initial(pl1_stat_$token_list_ptr); /* for efficiency only */ 6 4 dcl token_list_length fixed(15) internal static initial(3000) options(constant); 6 5 6 6 dcl 1 pl1_stat_$statement_id external static, 6 7 2 file_number bit(8), 6 8 2 line_number bit(14), 6 9 2 statement_number bit(5); 6 10 6 11 dcl 1 t_table based(token_list(k)) aligned, 6 12 2 node_type bit(9) unaligned, 6 13 2 type bit(9) unaligned, 6 14 2 loc bit(18) unaligned, 6 15 2 declaration ptr unaligned, 6 16 2 next ptr unaligned, 6 17 2 size fixed(9), 6 18 2 string char(n refer(t_table.size)); 50 7 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 7 2 7 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 7 4 7 5 7 6 dcl 1 list based aligned, 7 7 2 node_type bit(9) unaligned, 7 8 2 reserved bit(12) unaligned, 7 9 2 number fixed(14) unaligned, 7 10 2 element dimension(n refer(list.number)) ptr unaligned; 7 11 7 12 dcl max_list_elements fixed bin(17) internal static options (constant) 7 13 init(16383); 7 14 7 15 /* END INCLUDE FILE ... list.incl.pl1 */ 51 8 1 dcl 1 label_array_element based aligned, 8 2 2 node_type bit(9) unaligned, 8 3 2 reserved bit(12) unaligned, 8 4 2 number fixed bin(14) unaligned, 8 5 2 next ptr unaligned, 8 6 2 statement ptr unaligned, 8 7 2 value fixed bin(17); 52 9 1 /* BEGIN INCLUDE FILE ... declare_type.incl.pl1 */ 9 2 9 3 /* Modified: 25 Apr 1979 by PCK to implement 4-bit decimal */ 9 4 9 5 dcl ( by_declare initial("001"b), 9 6 by_explicit_context initial("010"b), 9 7 by_context initial("011"b), 9 8 by_implication initial("100"b), 9 9 by_compiler initial("101"b)) int static bit(3) aligned options(constant); 9 10 9 11 /* END INCLUDE FILE ... declare_type.incl.pl1 */ 53 54 55 dcl names(89) char(20) varying int static initial( 56 57 /* data_type */ 58 59 "structure", 60 "fixed", 61 "float", 62 "bit", 63 "char", 64 "ptr", 65 "offset", 66 "area", 67 "label", 68 "entry", 69 "file", 70 "arg_descriptor", 71 "storage_block", 72 "unused_1", 73 "condition", 74 "format", 75 "builtin", 76 "generic", 77 "picture", 78 79 /* misc_attributes */ 80 81 "dimensioned", 82 "initialed", 83 "aligned", 84 "unaligned", 85 "signed", 86 "unsigned", 87 "precision", 88 "varying", 89 "local", 90 "decimal", 91 "binary", 92 "real", 93 "complex", 94 "variable", 95 "reducible", 96 "irreducible", 97 "returns", 98 "position", 99 "internal", 100 "external", 101 "like", 102 "member", 103 "non_varying", 104 "options", 105 "variable_arg_list", /* options(variable) */ 106 "alloc_in_text", /* options(constant) */ 107 108 /* storage_class */ 109 110 "auto", 111 "based", 112 "static", 113 "controlled", 114 "defined", 115 "parameter", 116 "param_desc", 117 "constant", 118 "temporary", 119 "return_value", 120 121 /* file_attributes */ 122 123 "print", 124 "input", 125 "output", 126 "update", 127 "stream", 128 "reserved_1", 129 "record", 130 "sequential", 131 "direct", 132 "interactive", /* env(interactive) */ 133 "reserved_2", 134 "reserved_3", 135 "stringvalue", /* env(stringvalue) */ 136 "keyed", 137 "reserved_4", 138 "environment", 139 140 /* compiler_developed */ 141 142 "aliasable", 143 "packed", 144 "passed_as_arg", 145 "allocate", 146 "set", 147 "exp_extents", 148 "refer_extents", 149 "star_extents", 150 "isub", 151 "put_in_symtab", 152 "contiguous", 153 "put_data", 154 "overlayed", 155 "error", 156 "symtab_processed", 157 "overlayed_by_builtin", 158 "defaulted", 159 "connected" 160 ); 161 162 p=a; 163 164 if p = null then do; 165 call ioa_("^/^vxdisplay_symbol: ptr is NULL^/",tree_level); 166 return; 167 end; 168 169 if p->node.type=label_node 170 then do; 171 call ioa_("^/^vxLABEL ^p is ^a",tree_level,p,p->label.token->t_table.string); 172 if p->label.statement ^= null 173 then if ^ p->label.array 174 then call ioa_("^vxfor ^a",tree_level,decode_node_id((p -> label.statement),"0"b)); 175 else do; 176 call ioa_("^vxfor:",tree_level); 177 vector = p->label.statement; 178 179 if vector -> node.type = label_array_element_node 180 then do while(vector ^= null); 181 call ioa_("^vx^4x^a",tree_level,decode_node_id((vector->label_array_element.statement),"0"b)); 182 vector = vector->label_array_element.next; 183 end; 184 185 else do i = 1 to vector->list.number; 186 if vector->element(i) = null 187 then call ioa_("^vx^4xNULL",tree_level); 188 else call ioa_("^vx^4x^a",tree_level,decode_node_id((vector->element(i)),"0"b)); 189 end; 190 end; 191 call ioa_("^vxdeclared by ^a",tree_level,declare_type(fixed(p->label.dcl_type,3,0))); 192 call ioa_("^vxblock = ^p, token = ^p, next = ^p, statement = ^p",tree_level, 193 p->label.block_node,p->label.token,p->label.next,p->label.statement); 194 if p->label.allocated then call ioa_("^vxallocated bit is ON",tree_level); 195 i=p->label.location; 196 if i ^= 0 then call ioa_("^vxlocation = ^6w",tree_level,i); 197 if p->label.array then call ioa_("^vxarray bit is ON, low bound = ^d, high bound = ^d",tree_level, 198 p -> label.low_bound,p -> label.high_bound); 199 call ioa_("^vxEND LABEL ^p^/",tree_level,p); 200 return; 201 end; 202 203 204 if p->node.type = default_node 205 then do; 206 call ioa_("^/^vxDEFAULT ^p, ^a",tree_level,p,decode_node_id(p,"0"b)); 207 208 q = p -> default.predicate; 209 if q ^= null then call show_exp("predicate"); 210 211 if p->default.system then call ioa_("^vxdefault is system",tree_level); 212 if p->default.error then call ioa_("^vxdefault is error",tree_level); 213 if p->default.no_defaults then call ioa_("^vxdefault is no defaults",tree_level); 214 215 call ioa_("^vxsymbol for default follows",tree_level); 216 call display_symbol((p -> default.symbol),tree_level+1); 217 218 call ioa_("^vxEND DEFAULT ^p^/",tree_level,p); 219 return; 220 221 end; 222 223 if p->symbol.node_type ^= symbol_node then do; 224 call display_any_node_name("display_symbol: arg is not a symbol node, 225 arg =",p,tree_level+1); 226 return; 227 end; 228 229 call ioa_("^/^vxSYMBOL ^p, is ^a",tree_level,p,p->symbol.token->t_table.string); 230 if p -> symbol.dcl_type = by_declare 231 then call ioa_("^vxdeclared by declare on ^a",tree_level,decode_node_id(p,"0"b)); 232 else call ioa_("^vxdeclared by ^a",tree_level,declare_type(fixed(p -> symbol.dcl_type,17,0))); 233 234 call ioa_("^vxblock = ^p, token = ^p, next = ^p",tree_level, 235 p->symbol.block_node,p->symbol.token, 236 p->symbol.next); 237 238 if p->symbol.multi_use ^= null then call ioa_("^vxmulti_use = ^p",tree_level,p->symbol.multi_use); 239 240 k = p->symbol.level; 241 if k ^= 0 then call ioa_("^vxlevel = ^d",tree_level,k); 242 243 k = p->symbol.scale; 244 if k ^= 0 then call ioa_("^vxscale = ^d",tree_level,k); 245 246 k = fixed(p -> symbol.runtime,18); 247 if k ^= 0 then call ioa_("^vxruntime = ^o",tree_level,k); 248 249 k = fixed(p -> symbol.runtime_offset,18); 250 if k ^= 0 then call ioa_("^vxruntime offset = ^o",tree_level,k); 251 252 if p->symbol.father ^= null then call ioa_("^vxfather = ^p",tree_level,p->symbol.father); 253 if p->symbol.brother ^= null then call ioa_("^vxbrother = ^p",tree_level,p->symbol.brother); 254 if p->symbol.son ^= null then call ioa_("^vxson = ^p",tree_level,p->symbol.son); 255 256 i=p->symbol.boundary; 257 if i ^= 0 then call ioa_("^vxboundary is ^a",tree_level,boundary_type(i)); 258 259 if p->symbol.allocated then call ioa_("^vxallocated bit is ON",tree_level); 260 261 i=p->symbol.location; 262 if i^= 0 then call ioa_("^vxlocation = ^6w (^d decimal)",tree_level,i,i); 263 264 q=p->symbol.cross_references; 265 if q ^= null then call ioa_("^vxcross_ref = ^p",tree_level,q); 266 267 i=p->symbol.c_word_size; 268 if i ^= 0 then call ioa_("^vxc_word_size = ^d",tree_level,i); 269 270 i=p->symbol.c_bit_size; 271 if i ^= 0 then call ioa_("^vxc_bit_size = ^d",tree_level,i); 272 273 i=p->symbol.c_dcl_size; 274 if i ^= 0 then call ioa_("^vxc_dcl_size = ^d",tree_level,i); 275 276 if string(p -> symbol.attributes) = "0"b 277 then do; 278 call ioa_("^vxNo attributes",tree_level); 279 goto long; 280 end; 281 282 line = "Attributes:"; 283 lp = 13; 284 285 do i = 1 to length(string(p -> symbol.attributes)); 286 if substr(string(p -> symbol.attributes),i,1) 287 then if i <= hbound(names,1) 288 then do; 289 n = length(names(i)); 290 substr(line,lp,n) = names(i); 291 lp = lp + n + 1; 292 293 if lp > 72 294 then do; 295 call ioa_("^vx^a",tree_level,line); 296 line = ""; 297 lp = 1; 298 end; 299 300 end; 301 end; 302 303 if lp > 1 then call ioa_("^vx^a",tree_level,line); 304 305 long: if p -> node.type ^= symbol_node then goto done; 306 307 q=p->symbol.initial; 308 if p->symbol.constant 309 then if q = null then call ioa_("^vxconstant value ptr is NULL",tree_level); 310 else call display_constant(p,tree_level+1); 311 else do; 312 if q ^= null 313 then if q->node.type ^= list_node then call display_any_node_name("initial= ",q,tree_level+1); 314 else call show("initial attributes",display_initial); 315 end; 316 317 if p->symbol.picture 318 then do; 319 call ioa_("^vxpicture attributes follows:",tree_level); 320 if p->pic_fixed then call ioa_("^vxpic_fixed",tree_level); 321 if p->pic_float then call ioa_("^vxpic_float",tree_level); 322 if p->pic_char then call ioa_("^vxpic_char ",tree_level); 323 324 call ioa_("^vxpic_scale = ^d, pic_size = ^d",tree_level,p->pic_scale,p->pic_size); 325 call ioa_("^vxend of picture attributes",tree_level); 326 end; 327 328 329 q=p->symbol.array; 330 if q ^= null then call show("array data",display_array); 331 332 q=p->symbol.descriptor; 333 if q ^= null then call show_exp("descriptor"); 334 335 q=p->symbol.equivalence; 336 if q ^= null then call show_exp("equivalences"); 337 338 q=p->symbol.reference; 339 if q ^= null then do; 340 call ioa_("^vxreference follows:",tree_level); 341 call display_exp(q,tree_level+1); 342 end; 343 344 345 q = p->symbol.general; 346 if q ^= null then call display_any_node_name("general = ",q,tree_level+1); 347 348 q = p -> symbol.word_size; 349 if q ^= null then call show_exp("word size exp"); 350 351 q=p->symbol.bit_size; 352 if q ^= null then call show_exp("bit size exp"); 353 354 q=p->symbol.dcl_size; 355 if q ^= null then call show_exp("dcl size exp"); 356 357 q = p -> symbol.symtab_size; 358 if q ^= null then call show_exp("symtab size exp"); 359 360 done: 361 362 call ioa_("^vxEND SYMBOL ^p^/",tree_level,p); 363 364 return; 365 366 show_exp: proc(message); 367 368 dcl message char(*) aligned; 369 370 if display_stat_$brief_display 371 then call ioa_("^vx^a = ^p",tree_level,message,q); 372 else do; 373 call ioa_("^vx^a:",tree_level,message); 374 call display_exp(q,tree_level+1); 375 end; 376 377 end; 378 379 show: proc(message,prog); 380 381 dcl message char(*) aligned, 382 prog entry(ptr,fixed bin); 383 384 if display_stat_$brief_display 385 then call ioa_("^vx^a = ^p",tree_level,message,q); 386 else do; 387 call ioa_("^vx^a:",tree_level,message); 388 call prog(q,tree_level+1); 389 end; 390 391 end; 392 393 display_initial: proc(listp); 394 395 dcl (listp,q) ptr; 396 397 q=listp; 398 do while(q^=null); 399 call ioa_("^vxfactor = ",tree_level); 400 call display_exp((q->list.element(1)),tree_level+1); 401 if q->list.element(2) ^= null 402 then if q->list.element(2)->node.type ^= list_node 403 then do; 404 call ioa_("^vxvalue =",tree_level); 405 call display_exp((q->list.element(2)),tree_level+1); 406 end; 407 else call display_initial((q->list.element(2))); 408 else call ioa_("vx^a",tree_level,"value = ""*"""); 409 q=q->list.element(3); 410 end; 411 end display_initial; 412 413 end display_symbol; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1503.4 display_symbol.pl1 >dumps>old>recomp>display_symbol.pl1 45 1 07/21/80 1546.3 symbol.incl.pl1 >ldd>include>symbol.incl.pl1 46 2 05/06/74 1742.2 default.incl.pl1 >ldd>include>default.incl.pl1 47 3 05/06/74 1742.1 label.incl.pl1 >ldd>include>label.incl.pl1 48 4 07/21/80 1546.3 statement.incl.pl1 >ldd>include>statement.incl.pl1 49 5 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 50 6 09/14/77 1705.7 token_list.incl.pl1 >ldd>include>token_list.incl.pl1 51 7 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 52 8 10/25/76 1558.8 label_array_element.incl.pl1 >ldd>include>label_array_element.incl.pl1 53 9 10/25/79 1645.8 declare_type.incl.pl1 >ldd>include>declare_type.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 parameter pointer dcl 21 ref 19 162 allocated 1(18) based bit(1) level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" ref 194 allocated 1(18) based bit(1) level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" ref 259 array 12 based pointer level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" ref 329 array 2(15) based bit(1) level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" ref 172 197 attributes 31 based structure level 2 dcl 1-3 ref 276 285 286 bit_size 23 based pointer level 2 packed unaligned dcl 1-3 ref 351 block_node 4 based pointer level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" set ref 192* block_node 4 based pointer level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" set ref 234* boundary 2(20) based fixed bin(3,0) level 2 packed unaligned dcl 1-3 ref 256 boundary_type 000010 internal static char(5) initial array dcl 40 set ref 257* brother 20 based pointer level 2 packed unaligned dcl 1-3 set ref 253 253* by_declare constant bit(3) initial dcl 9-5 ref 230 c_bit_size 27 based fixed bin(24,0) level 2 dcl 1-3 ref 270 c_dcl_size 30 based fixed bin(24,0) level 2 dcl 1-3 ref 273 c_word_size 26 based fixed bin(24,0) level 2 dcl 1-3 ref 267 constant 32(16) based bit(1) level 4 packed unaligned dcl 1-3 ref 308 cross_references 10 based pointer level 2 packed unaligned dcl 1-3 ref 264 data_type 31 based structure level 3 packed unaligned dcl 1-3 dcl_size 24 based pointer level 2 packed unaligned dcl 1-3 ref 354 dcl_type 1(19) based bit(3) level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" ref 230 232 dcl_type 1(19) based bit(3) level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" ref 191 declare_type 000030 internal static char(8) initial array unaligned dcl 41 set ref 191* 232* decode_node_id 000050 constant entry external dcl 33 ref 172 181 188 206 230 default based structure level 1 dcl 2-2 default_node constant bit(9) initial dcl 5-5 ref 204 descriptor 13 based pointer level 2 packed unaligned dcl 1-3 ref 332 display_any_node_name 000044 constant entry external dcl 31 ref 224 312 346 display_array 000052 constant entry external dcl 34 ref 330 330 display_constant 000056 constant entry external dcl 34 ref 310 display_exp 000054 constant entry external dcl 34 ref 341 374 400 405 display_stat_$brief_display 000060 external static bit(1) unaligned dcl 38 ref 370 384 element 1 based pointer array level 2 packed unaligned dcl 7-6 ref 186 188 400 401 401 405 407 409 equivalence 14 based pointer level 2 packed unaligned dcl 1-3 ref 335 error 4(01) based bit(1) level 2 packed unaligned dcl 2-2 ref 212 father 17 based pointer level 2 packed unaligned dcl 1-3 set ref 252 252* fixed builtin function dcl 36 ref 191 232 246 249 general 16 based pointer level 2 packed unaligned dcl 1-3 ref 345 high_bound 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 3-1 set ref 197* i 000137 automatic fixed bin(31,0) dcl 26 set ref 185* 186 188* 195* 196 196* 256* 257 257 261* 262 262* 262* 267* 268 268* 270* 271 271* 273* 274 274* 285* 286 286 289 290* initial 11 based pointer level 2 packed unaligned dcl 1-3 ref 307 ioa_ 000046 constant entry external dcl 32 ref 165 171 172 176 181 186 188 191 192 194 196 197 199 206 211 212 213 215 218 229 230 232 234 238 241 244 247 250 252 253 254 257 259 262 265 268 271 274 278 295 303 308 319 320 321 322 324 325 340 360 370 373 384 387 399 404 408 k 000141 automatic fixed bin(17,0) dcl 28 set ref 240* 241 241* 243* 244 244* 246* 247 247* 249* 250 250* label based structure level 1 dcl 3-1 label_array_element based structure level 1 dcl 8-1 label_array_element_node constant bit(9) initial dcl 5-5 ref 179 label_node constant bit(9) initial dcl 5-5 ref 169 length builtin function dcl 36 ref 285 289 level 2(11) based fixed bin(8,0) level 2 packed unaligned dcl 1-3 ref 240 line 000106 automatic char(96) unaligned dcl 21 set ref 282* 290* 295* 296* 303* list based structure level 1 dcl 7-6 list_node constant bit(9) initial dcl 5-5 ref 312 401 listp parameter pointer dcl 395 ref 393 397 location 1 based fixed bin(18,0) level 2 in structure "symbol" packed unsigned unaligned dcl 1-3 in procedure "display_symbol" ref 261 location 1 based fixed bin(17,0) level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" ref 195 low_bound 3 based fixed bin(17,0) level 2 packed unaligned dcl 3-1 set ref 197* lp 000136 automatic fixed bin(17,0) dcl 21 set ref 283* 290 291* 291 293 297* 303 message parameter char dcl 381 in procedure "show" set ref 379 384* 387* message parameter char dcl 368 in procedure "show_exp" set ref 366 370* 373* multi_use 7 based pointer level 2 packed unaligned dcl 1-3 set ref 238 238* n 000140 automatic fixed bin(15,0) dcl 27 set ref 289* 290 291 names 000000 constant varying char(20) initial array dcl 55 ref 286 289 290 next 6 based pointer level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" set ref 234* next 6 based pointer level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" set ref 192* next 1 based pointer level 2 in structure "label_array_element" packed unaligned dcl 8-1 in procedure "display_symbol" ref 182 no_defaults 4(02) based bit(1) level 2 packed unaligned dcl 2-2 ref 213 node based structure level 1 dcl 5-27 node_type based bit(9) level 2 packed unaligned dcl 1-3 ref 223 null builtin function dcl 36 ref 164 172 179 186 209 238 252 253 254 265 308 312 330 333 336 339 346 349 352 355 358 398 401 number 0(21) based fixed bin(14,0) level 2 packed unaligned dcl 7-6 ref 185 p 000100 automatic pointer dcl 21 set ref 162* 164 169 171* 171 172 172 172 177 191 192 192 192 192 194 195 197 197 197 199* 204 206* 206* 208 211 212 213 216 218* 223 224* 229* 229 230 230* 232 234 234 234 238 238 240 243 246 249 252 252 253 253 254 254 256 259 261 264 267 270 273 276 285 286 305 307 308 310* 317 320 321 322 324 324 329 332 335 338 345 348 351 354 357 360* pic_char 1(30) based bit(1) level 3 packed unaligned dcl 1-3 ref 322 pic_fixed 1(28) based bit(1) level 3 packed unaligned dcl 1-3 ref 320 pic_float 1(29) based bit(1) level 3 packed unaligned dcl 1-3 ref 321 pic_scale 1(31) based fixed bin(7,0) level 3 packed unaligned dcl 1-3 set ref 324* pic_size 2(03) based fixed bin(7,0) level 3 packed unaligned dcl 1-3 set ref 324* picture 31(18) based bit(1) level 4 packed unaligned dcl 1-3 ref 317 pix 1(28) based structure level 2 packed unaligned dcl 1-3 pl1_stat_$token_list_ptr 000062 external static pointer dcl 6-1 ref 6-3 predicate 2 based pointer level 2 packed unaligned dcl 2-2 ref 208 prog parameter entry variable dcl 381 ref 379 388 q 000100 automatic pointer dcl 395 in procedure "display_initial" set ref 397* 398 400 401 401 405 407 409* 409 q 000102 automatic pointer dcl 21 in procedure "display_symbol" set ref 208* 209 264* 265 265* 307* 308 312 312 312* 329* 330 332* 333 335* 336 338* 339 341* 345* 346 346* 348* 349 351* 352 354* 355 357* 358 370* 374* 384* 388* reference 15 based pointer level 2 packed unaligned dcl 1-3 ref 338 runtime 3 based bit(18) level 2 packed unaligned dcl 1-3 ref 246 runtime_offset 3(18) based bit(18) level 2 packed unaligned dcl 1-3 ref 249 scale 2(28) based fixed bin(7,0) level 2 packed unaligned dcl 1-3 ref 243 size 3 based fixed bin(9,0) level 2 dcl 6-11 ref 171 171 229 229 son 21 based pointer level 2 packed unaligned dcl 1-3 set ref 254 254* statement 2 based pointer level 2 in structure "label_array_element" packed unaligned dcl 8-1 in procedure "display_symbol" ref 181 statement 11 based pointer level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" set ref 172 172 177 192* storage_class 32(09) based structure level 3 packed unaligned dcl 1-3 string 4 based char level 2 in structure "t_table" dcl 6-11 in procedure "display_symbol" set ref 171* 229* string builtin function dcl 36 in procedure "display_symbol" ref 276 285 286 symbol based structure level 1 dcl 1-3 in procedure "display_symbol" symbol 3 based pointer level 2 in structure "default" packed unaligned dcl 2-2 in procedure "display_symbol" ref 216 symbol_node constant bit(9) initial dcl 5-5 ref 223 305 symtab_size 25 based pointer level 2 packed unaligned dcl 1-3 ref 357 system 4 based bit(1) level 2 packed unaligned dcl 2-2 ref 211 t_table based structure level 1 dcl 6-11 token 5 based pointer level 2 in structure "label" packed unaligned dcl 3-1 in procedure "display_symbol" set ref 171 192* token 5 based pointer level 2 in structure "symbol" packed unaligned dcl 1-3 in procedure "display_symbol" set ref 229 234* token_list_pointer 000142 automatic pointer initial dcl 6-3 set ref 6-3* tree_level parameter fixed bin(17,0) dcl 21 set ref 19 165* 171* 172* 176* 181* 186* 188* 191* 192* 194* 196* 197* 199* 206* 211* 212* 213* 215* 216 218* 224 229* 230* 232* 234* 238* 241* 244* 247* 250* 252* 253* 254* 257* 259* 262* 265* 268* 271* 274* 278* 295* 303* 308* 310 312 319* 320* 321* 322* 324* 325* 340* 341 346 360* 370* 373* 374 384* 387* 388 399* 400 404* 405 408* type based bit(9) level 2 packed unaligned dcl 5-27 ref 169 179 204 305 312 401 vector 000104 automatic pointer dcl 21 set ref 177* 179 179 181 182* 182 185 186 188 word_size 22 based pointer level 2 packed unaligned dcl 1-3 ref 348 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. array_node internal static bit(9) initial dcl 5-5 based_bitstring based bit(36) dcl 29 block_node internal static bit(9) initial dcl 5-5 bound_node internal static bit(9) initial dcl 5-5 by_compiler internal static bit(3) initial dcl 9-5 by_context internal static bit(3) initial dcl 9-5 by_explicit_context internal static bit(3) initial dcl 9-5 by_implication internal static bit(3) initial dcl 9-5 by_name_agg_node internal static bit(9) initial dcl 5-5 context_node internal static bit(9) initial dcl 5-5 cross_reference_node internal static bit(9) initial dcl 5-5 format_value_node internal static bit(9) initial dcl 5-5 machine_state_node internal static bit(9) initial dcl 5-5 max_list_elements internal static fixed bin(17,0) initial dcl 7-12 operator_node internal static bit(9) initial dcl 5-5 pl1_stat_$statement_id external static structure level 1 packed unaligned dcl 6-6 reference_node internal static bit(9) initial dcl 5-5 sf_par_node internal static bit(9) initial dcl 5-5 source_node internal static bit(9) initial dcl 5-5 statement based structure level 1 dcl 4-3 statement_node internal static bit(9) initial dcl 5-5 temporary_node internal static bit(9) initial dcl 5-5 token_list based pointer array dcl 6-2 token_list_length internal static fixed bin(15,0) initial dcl 6-4 token_node internal static bit(9) initial dcl 5-5 NAMES DECLARED BY EXPLICIT CONTEXT. display_initial 005245 constant entry internal dcl 393 ref 314 314 407 display_symbol 001573 constant entry external dcl 19 ref 216 done 004766 constant label dcl 360 ref 305 long 004137 constant label dcl 305 ref 279 show 005130 constant entry internal dcl 379 ref 314 330 show_exp 005014 constant entry internal dcl 366 ref 209 333 336 349 352 355 358 NAMES DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 286 substr builtin function set ref 286 290* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5676 5762 5543 5706 Length 6370 5543 64 372 133 34 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_symbol 256 external procedure is an external procedure. show_exp internal procedure shares stack frame of external procedure display_symbol. show internal procedure shares stack frame of external procedure display_symbol. display_initial 96 internal procedure is assigned to an entry variable. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 boundary_type display_symbol 000030 declare_type display_symbol STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_initial 000100 q display_initial display_symbol 000100 p display_symbol 000102 q display_symbol 000104 vector display_symbol 000106 line display_symbol 000136 lp display_symbol 000137 i display_symbol 000140 n display_symbol 000141 k display_symbol 000142 token_list_pointer display_symbol THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_var call_ext_in call_ext_out_desc call_ext_out call_int_other return ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. decode_node_id display_any_node_name display_array display_constant display_exp ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. display_stat_$brief_display pl1_stat_$token_list_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 001567 6 3 001600 162 001603 164 001607 165 001613 166 001632 169 001633 171 001640 172 001676 176 001753 177 001773 179 001776 181 002006 182 002052 183 002055 185 002057 186 002070 188 002117 189 002163 191 002165 192 002217 194 002256 195 002303 196 002307 197 002340 199 002376 200 002423 204 002424 206 002426 208 002476 209 002501 211 002514 212 002541 213 002571 215 002616 216 002637 218 002656 219 002703 223 002704 224 002710 226 002736 229 002737 230 002772 232 003044 234 003074 238 003130 240 003164 241 003171 243 003221 244 003226 246 003256 247 003262 249 003313 250 003317 252 003345 253 003401 254 003435 256 003470 257 003475 259 003525 261 003552 262 003556 264 003606 265 003611 267 003645 268 003650 270 003676 271 003701 273 003732 274 003735 276 003763 278 003770 279 004014 282 004015 283 004020 285 004022 286 004027 289 004036 290 004042 291 004050 293 004053 295 004055 296 004101 297 004104 301 004106 303 004110 305 004137 307 004143 308 004146 310 004200 312 004216 314 004261 317 004275 319 004301 320 004322 321 004350 322 004377 324 004425 325 004462 329 004503 330 004506 332 004527 333 004532 335 004545 336 004550 338 004564 339 004567 340 004573 341 004614 345 004631 346 004634 348 004671 349 004674 351 004711 352 004714 354 004730 355 004733 357 004746 358 004751 360 004766 364 005013 366 005014 370 005025 373 005065 374 005112 377 005127 379 005130 384 005141 387 005201 388 005226 391 005243 393 005244 397 005252 398 005256 399 005262 400 005305 401 005326 404 005337 405 005363 406 005404 407 005405 408 005417 409 005450 410 005453 411 005454 ----------------------------------------------------------- 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