COMPILATION LISTING OF SEGMENT display_block Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1623.4 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 display_block: 12 procedure(node_ptr,walk,no_dcls,source,tree_level); 13 14 /* Modified on: 11 August 1971 by PG */ 15 /* Modified on: 22 September 1971 by PAB */ 16 /* Modified on: 28 February 1978 by PCK for options(main) */ 17 /* Modified on: 29 November 1979 by PCK to display output with tree level indentation */ 18 19 dcl (p, q, node_ptr) ptr; 20 21 dcl (addr, fixed, null, length, string, substr) builtin; 22 23 dcl display_exp entry(ptr,fixed bin); 24 25 dcl display_any_node_name ext entry(char(*) aligned,ptr,fixed bin), 26 display_statement ext entry(ptr,bit(1) aligned,fixed bin), 27 display_symbol ext entry(ptr,fixed bin), 28 display_block ext entry(ptr,bit(1) aligned,bit(1) aligned,bit(1) aligned,fixed bin), 29 ioa_ ext entry options(variable), 30 decode_node_id entry(ptr,bit(1) aligned) returns(char(120) varying), 31 convert_binary_integer_$decimal_string entry(fixed bin(15)) returns(char(12) varying), 32 ii fixed bin(18), 33 tree_level fixed bin, 34 (no_dcls,source,walk) bit(1) aligned, 35 (i,j) fixed bin(17); 36 37 dcl display_stat_$brief_display bit(1) ext static; 38 39 40 dcl context_bits(20) bit(1) unaligned based(addr(q->context.types)), 41 context_bit_names(20) char(11) aligned int static init( 42 "structure","fixed","float","bit","char","ptr","offset","area","label", 43 "entry","file","label_const","entry_const","file_const","condition", 44 "format","builtin","generic","picture","parameter"); 45 46 47 dcl n fixed bin(15); 48 49 dcl btype char(12), 50 block_type(6) char(12) int static init(" root block", "n ext proc", 51 "n int proc", " begin block", "n on unit", " quick sub"), 52 itype fixed bin(15); 53 54 dcl bit_names(5) char(16) static varying 55 init("like ", "no_stack ", "get_data ", "flush_at_call ", "text_displayed "); 56 57 dcl nonquick_reasons (13) char (24) internal static varying 58 init ("auto_adjustable ", "returns_star ", "stack_extended ", "invoked_by_format ", 59 "format_stmt ", "io_stmts ", "assigned_to_entry_var ", 60 "condition_stmts ", "no_owner ", "recursive_call ", "options_non_quick ", "options_variable ", 61 "never_referenced "); 62 63 dcl line char(80) varying, 64 word bit(36) unaligned based, 65 b36 bit(36) aligned; 66 67 dcl pl1_stat_$constant_list ptr ext static, 68 pl1_stat_$defined_list ptr ext static, 69 pl1_stat_$temporary_list ptr ext static; 70 71 1 1 /* BEGIN INCLUDE FILE ... token.incl.pl1 */ 1 2 1 3 dcl 1 token based aligned, 1 4 2 node_type bit(9) unaligned, 1 5 2 type bit(9) unaligned, 1 6 2 loc bit(18) unaligned, /* symtab offset for identifiers, "p" flag for constants */ 1 7 2 declaration ptr unaligned, 1 8 2 next ptr unaligned, 1 9 2 size fixed(9), 1 10 2 string char(n refer(token.size)); 1 11 1 12 /* END INCLUDE FILE ... token.incl.pl1 */ 72 2 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 2 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 2 3 /* format: style3,idind30 */ 2 4 2 5 declare 1 block aligned based, 2 6 2 node_type bit (9) unaligned, 2 7 2 source_id structure unaligned, 2 8 3 file_number bit (8), 2 9 3 line_number bit (14), 2 10 3 statement_number bit (5), 2 11 2 father ptr unaligned, 2 12 2 brother ptr unaligned, 2 13 2 son ptr unaligned, 2 14 2 declaration ptr unaligned, 2 15 2 end_declaration ptr unaligned, 2 16 2 default ptr unaligned, 2 17 2 end_default ptr unaligned, 2 18 2 context ptr unaligned, 2 19 2 prologue ptr unaligned, 2 20 2 end_prologue ptr unaligned, 2 21 2 main ptr unaligned, 2 22 2 end_main ptr unaligned, 2 23 2 return_values ptr unaligned, 2 24 2 return_count ptr unaligned, 2 25 2 plio_ps ptr unaligned, 2 26 2 plio_fa ptr unaligned, 2 27 2 plio_ffsb ptr unaligned, 2 28 2 plio_ssl ptr unaligned, 2 29 2 plio_fab2 ptr unaligned, 2 30 2 block_type bit (9) unaligned, 2 31 2 prefix bit (12) unaligned, 2 32 2 like_attribute bit (1) unaligned, 2 33 2 no_stack bit (1) unaligned, 2 34 2 get_data bit (1) unaligned, 2 35 2 flush_at_call bit (1) unaligned, 2 36 2 processed bit (1) unaligned, 2 37 2 text_displayed bit (1) unaligned, 2 38 2 number fixed bin (9) unsigned unaligned, 2 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 2 40 2 temp_list ptr, 2 41 2 entry_list ptr, 2 42 2 o_and_s ptr, 2 43 2 why_nonquick aligned, 2 44 3 auto_adjustable_storage bit (1) unaligned, 2 45 3 returns_star_extents bit (1) unaligned, 2 46 3 stack_extended_by_args bit (1) unaligned, 2 47 3 invoked_by_format bit (1) unaligned, 2 48 3 format_statement bit (1) unaligned, 2 49 3 io_statements bit (1) unaligned, 2 50 3 assigned_to_entry_var bit (1) unaligned, 2 51 3 condition_statements bit (1) unaligned, 2 52 3 no_owner bit (1) unaligned, 2 53 3 recursive_call bit (1) unaligned, 2 54 3 options_non_quick bit (1) unaligned, 2 55 3 options_variable bit (1) unaligned, 2 56 3 never_referenced bit (1) unaligned, 2 57 3 pad_nonquick bit (5) unaligned, 2 58 2 prologue_flag bit (1) unaligned, 2 59 2 options_main bit (1) unaligned, 2 60 2 pad bit (16) unaligned, 2 61 2 number_of_entries fixed bin (17), 2 62 2 level fixed bin (17), 2 63 2 last_auto_loc fixed bin (17), 2 64 2 symbol_block fixed bin (17), 2 65 2 entry_info fixed bin (18), 2 66 2 enter structure unaligned, 2 67 3 start fixed bin (17), 2 68 3 end fixed bin (17), 2 69 2 leave structure unaligned, 2 70 3 start fixed bin (17), 2 71 3 end fixed bin (17), 2 72 2 owner ptr; 2 73 2 74 declare max_block_number fixed bin internal static options (constant) initial (511); 2 75 2 76 /* END INCLUDE FILE ... block.incl.pl1 */ 73 3 1 3 2 dcl 1 default based aligned, 3 3 2 node_type bit(9) unaligned, 3 4 2 source_id structure unaligned, 3 5 3 file_number bit(8), 3 6 3 line_number bit(14), 3 7 3 statement_number bit(5), 3 8 2 next ptr unaligned, 3 9 2 predicate ptr unaligned, 3 10 2 symbol ptr unaligned, 3 11 2 system bit(1) unaligned, 3 12 2 error bit(1) unaligned, 3 13 2 no_defaults bit(1) unaligned, 3 14 2 reserved bit(29) unaligned; 74 4 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 4 2 4 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 4 4 4 5 4 6 dcl 1 list based aligned, 4 7 2 node_type bit(9) unaligned, 4 8 2 reserved bit(12) unaligned, 4 9 2 number fixed(14) unaligned, 4 10 2 element dimension(n refer(list.number)) ptr unaligned; 4 11 4 12 dcl max_list_elements fixed bin(17) internal static options (constant) 4 13 init(16383); 4 14 4 15 /* END INCLUDE FILE ... list.incl.pl1 */ 75 5 1 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 5 2 5 3 dcl 1 statement based aligned, 5 4 2 node_type bit(9) unaligned, 5 5 2 source_id structure unaligned, 5 6 3 file_number bit(8), 5 7 3 line_number bit(14), 5 8 3 statement_number bit(5), 5 9 2 next ptr unaligned, 5 10 2 back ptr unaligned, 5 11 2 root ptr unaligned, 5 12 2 labels ptr unaligned, 5 13 2 reference_list ptr unaligned, 5 14 2 state_list ptr unaligned, 5 15 2 reference_count fixed(17) unaligned, 5 16 2 ref_count_copy fixed(17) unaligned, 5 17 2 object structure unaligned, 5 18 3 start fixed(17), 5 19 3 finish fixed(17), 5 20 2 source structure unaligned, 5 21 3 segment fixed(11), 5 22 3 start fixed(23), 5 23 3 length fixed(11), 5 24 2 prefix bit(12) unaligned, 5 25 2 optimized bit(1) unaligned, 5 26 2 free_temps bit(1) unaligned, 5 27 2 LHS_in_RHS bit(1) unaligned, 5 28 2 statement_type bit(9) unaligned, 5 29 2 bits structure unaligned, 5 30 3 processed bit(1) unaligned, 5 31 3 put_in_profile bit(1) unaligned, 5 32 3 generated bit(1) unaligned, 5 33 3 snap bit(1) unaligned, 5 34 3 system bit(1) unaligned, 5 35 3 irreducible bit(1) unaligned, 5 36 3 checked bit(1) unaligned, 5 37 3 save_temps bit(1) unaligned, 5 38 3 suppress_warnings bit(1) unaligned, 5 39 3 force_nonquick bit(1) unaligned, 5 40 3 expanded_by_name bit(1) unaligned, 5 41 3 pad bit(25) unaligned; 5 42 5 43 /* END INCLUDE FILE ... statement.incl.pl1 */ 76 6 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 6 2 6 3 dcl 1 symbol based aligned, 6 4 2 node_type bit(9) unal, 6 5 2 source_id structure unal, 6 6 3 file_number bit(8), 6 7 3 line_number bit(14), 6 8 3 statement_number bit(5), 6 9 2 location fixed(18) unal unsigned, 6 10 2 allocated bit(1) unal, 6 11 2 dcl_type bit(3) unal, 6 12 2 reserved bit(6) unal, 6 13 2 pix unal, 6 14 3 pic_fixed bit(1) unal, 6 15 3 pic_float bit(1) unal, 6 16 3 pic_char bit(1) unal, 6 17 3 pic_scale fixed(7) unal, 6 18 3 pic_size fixed(7) unal, 6 19 2 level fixed(8) unal, 6 20 2 boundary fixed(3) unal, 6 21 2 size_units fixed(3) unal, 6 22 2 scale fixed(7) unal, 6 23 2 runtime bit(18) unal, 6 24 2 runtime_offset bit(18) unal, 6 25 2 block_node ptr unal, 6 26 2 token ptr unal, 6 27 2 next ptr unal, 6 28 2 multi_use ptr unal, 6 29 2 cross_references ptr unal, 6 30 2 initial ptr unal, 6 31 2 array ptr unal, 6 32 2 descriptor ptr unal, 6 33 2 equivalence ptr unal, 6 34 2 reference ptr unal, 6 35 2 general ptr unal, 6 36 2 father ptr unal, 6 37 2 brother ptr unal, 6 38 2 son ptr unal, 6 39 2 word_size ptr unal, 6 40 2 bit_size ptr unal, 6 41 2 dcl_size ptr unal, 6 42 2 symtab_size ptr unal, 6 43 2 c_word_size fixed(24), 6 44 2 c_bit_size fixed(24), 6 45 2 c_dcl_size fixed(24), 6 46 6 47 2 attributes structure aligned, 6 48 3 data_type structure unal, 6 49 4 structure bit(1) , 6 50 4 fixed bit(1), 6 51 4 float bit(1), 6 52 4 bit bit(1), 6 53 4 char bit(1), 6 54 4 ptr bit(1), 6 55 4 offset bit(1), 6 56 4 area bit(1), 6 57 4 label bit(1), 6 58 4 entry bit(1), 6 59 4 file bit(1), 6 60 4 arg_descriptor bit(1), 6 61 4 storage_block bit(1), 6 62 4 unused_1 bit(1), 6 63 4 condition bit(1), 6 64 4 format bit(1), 6 65 4 builtin bit(1), 6 66 4 generic bit(1), 6 67 4 picture bit(1), 6 68 6 69 3 misc_attributes structure unal, 6 70 4 dimensioned bit(1), 6 71 4 initialed bit(1), 6 72 4 aligned bit(1), 6 73 4 unaligned bit(1), 6 74 4 signed bit(1), 6 75 4 unsigned bit(1), 6 76 4 precision bit(1), 6 77 4 varying bit(1), 6 78 4 local bit(1), 6 79 4 decimal bit(1), 6 80 4 binary bit(1), 6 81 4 real bit(1), 6 82 4 complex bit(1), 6 83 4 variable bit(1), 6 84 4 reducible bit(1), 6 85 4 irreducible bit(1), 6 86 4 returns bit(1), 6 87 4 position bit(1), 6 88 4 internal bit(1), 6 89 4 external bit(1), 6 90 4 like bit(1), 6 91 4 member bit(1), 6 92 4 non_varying bit(1), 6 93 4 options bit(1), 6 94 4 variable_arg_list bit(1), /* options(variable) */ 6 95 4 alloc_in_text bit(1), /* options(constant) */ 6 96 6 97 3 storage_class structure unal, 6 98 4 auto bit(1), 6 99 4 based bit(1), 6 100 4 static bit(1), 6 101 4 controlled bit(1), 6 102 4 defined bit(1), 6 103 4 parameter bit(1), 6 104 4 param_desc bit(1), 6 105 4 constant bit(1), 6 106 4 temporary bit(1), 6 107 4 return_value bit(1), 6 108 6 109 3 file_attributes structure unal, 6 110 4 print bit(1), 6 111 4 input bit(1), 6 112 4 output bit(1), 6 113 4 update bit(1), 6 114 4 stream bit(1), 6 115 4 reserved_1 bit(1), 6 116 4 record bit(1), 6 117 4 sequential bit(1), 6 118 4 direct bit(1), 6 119 4 interactive bit(1), /* env(interactive) */ 6 120 4 reserved_2 bit(1), 6 121 4 reserved_3 bit(1), 6 122 4 stringvalue bit(1), /* env(stringvalue) */ 6 123 4 keyed bit(1), 6 124 4 reserved_4 bit(1), 6 125 4 environment bit(1), 6 126 6 127 3 compiler_developed structure unal, 6 128 4 aliasable bit(1), 6 129 4 packed bit(1), 6 130 4 passed_as_arg bit(1), 6 131 4 allocate bit(1), 6 132 4 set bit(1), 6 133 4 exp_extents bit(1), 6 134 4 refer_extents bit(1), 6 135 4 star_extents bit(1), 6 136 4 isub bit(1), 6 137 4 put_in_symtab bit(1), 6 138 4 contiguous bit(1), 6 139 4 put_data bit(1), 6 140 4 overlayed bit(1), 6 141 4 error bit(1), 6 142 4 symtab_processed bit(1), 6 143 4 overlayed_by_builtin bit(1), 6 144 4 defaulted bit(1), 6 145 4 connected bit(1); 6 146 6 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 77 7 1 /* BEGIN INCLUDE FILE ... context.incl.pl1 */ 7 2 7 3 dcl 1 context based aligned, 7 4 2 node_type bit(9) unaligned, 7 5 2 bits structure unaligned, 7 6 3 types structure, 7 7 4 structure bit(1), 7 8 4 fixed bit(1), 7 9 4 float bit(1), 7 10 4 bit bit(1), 7 11 4 char bit(1), 7 12 4 ptr bit(1), 7 13 4 offset bit(1), 7 14 4 area bit(1), 7 15 4 label bit(1), 7 16 4 entry bit(1), 7 17 4 file bit(1), 7 18 4 arg_descriptor bit(1), 7 19 4 storage_block bit(1), 7 20 4 unused_1 bit(1), 7 21 4 condition bit(1), 7 22 4 format bit(1), 7 23 4 builtin bit(1), 7 24 4 generic bit(1), 7 25 4 picture bit(1), 7 26 3 parameter bit(1), 7 27 2 reserved bit(7) unaligned, 7 28 2 next ptr unaligned, 7 29 2 token ptr unaligned; 7 30 7 31 /* END INCLUDE FILE ... context.incl.pl1 */ 78 8 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 8 2 8 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 8 4 8 5 dcl ( block_node initial("000000001"b), 8 6 statement_node initial("000000010"b), 8 7 operator_node initial("000000011"b), 8 8 reference_node initial("000000100"b), 8 9 token_node initial("000000101"b), 8 10 symbol_node initial("000000110"b), 8 11 context_node initial("000000111"b), 8 12 array_node initial("000001000"b), 8 13 bound_node initial("000001001"b), 8 14 format_value_node initial("000001010"b), 8 15 list_node initial("000001011"b), 8 16 default_node initial("000001100"b), 8 17 machine_state_node initial("000001101"b), 8 18 source_node initial("000001110"b), 8 19 label_node initial("000001111"b), 8 20 cross_reference_node initial("000010000"b), 8 21 sf_par_node initial("000010001"b), 8 22 temporary_node initial("000010010"b), 8 23 label_array_element_node initial("000010011"b), 8 24 by_name_agg_node initial("000010100"b)) 8 25 bit(9) internal static aligned options(constant); 8 26 8 27 dcl 1 node based aligned, 8 28 2 type unal bit(9), 8 29 2 source_id unal structure, 8 30 3 file_number bit(8), 8 31 3 line_number bit(14), 8 32 3 statement_number bit(5); 8 33 8 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 79 80 81 /*eject */ 82 p=node_ptr; 83 start: 84 if p=null 85 then do; 86 call ioa_("^vxblock ptr is NULL",tree_level); 87 go to ret; 88 end; 89 90 if p->node.type^=block_node 91 then do; 92 call display_any_node_name("display_block: arg is not a block node, 93 arg =",p,tree_level+1); 94 go to ret; 95 end; 96 97 itype= fixed(p->block.block_type,9); 98 if itype<=6 & itype>=1 99 then btype=block_type(itype); 100 else btype = convert_binary_integer_$decimal_string(itype); 101 102 call ioa_("^/^vxBLOCK ^p is a^a",tree_level,p,btype); 103 call ioa_("^vx^a",tree_level,decode_node_id(p,"0"b)); 104 i=p->block.level; 105 if i ^= 0 then call ioa_("^vxlevel = ^d",tree_level,i); 106 107 ii=p->block.symbol_block; 108 if ii ^= 0 then call ioa_("^vxruntime symbol block is ^6w",tree_level,ii); 109 110 i = p -> block.last_auto_loc; 111 if i ^= 0 then call ioa_("^vxlast auto loc = ^6w",tree_level,i); 112 113 i = p -> block.number_of_entries; 114 if i ^= 0 then call ioa_("^vxnumber of entries = ^d",tree_level,i); 115 116 call ioa_("^vxprefix = ^4o",tree_level,fixed(p->block.prefix,12)); 117 call ioa_("^vxfather = ^p",tree_level,p->block.father); 118 119 if p->block.options_main 120 then call ioa_("^vxoptions_main",tree_level); 121 122 line = ""; 123 b36 = addr(p -> block.like_attribute) -> word; 124 125 do i = 1 to hbound(bit_names,1); 126 if substr(b36,i,1) 127 then line = line || bit_names(i); 128 end; 129 130 if length(line) ^= 0 then call ioa_("^vx^a",tree_level,line); 131 132 line = "nonquick reasons: "; 133 do i = 1 to hbound (nonquick_reasons, 1); 134 if substr (string (p -> block.why_nonquick), i, 1) = "1"b 135 then do; 136 if length (line) + length (nonquick_reasons (i)) > 80 137 then do; 138 call ioa_ ("^vx^a",tree_level,line); 139 line = " "; 140 end; 141 142 line = line || nonquick_reasons (i); 143 end; 144 end; 145 146 if length (line) > length ("nonquick reasons: ") 147 then call ioa_ ("^vx^a",tree_level,line); 148 149 call ioa_("^vxnumber = ^d",tree_level,p->block.number); 150 151 if p->block.owner ^= null 152 then call ioa_("^vxowner = ^p",tree_level,p->block.owner); 153 154 q = p -> block.return_values; 155 if q^=null 156 then do; 157 if display_stat_$brief_display then call ioa_("^vxreturn values = ^p",tree_level,q); 158 else do; 159 call ioa_("^vxreturn values:",tree_level); 160 161 do while(q^=null); 162 call display_exp((q->list.element(2)),tree_level+1); 163 q=q->list.element(1); 164 end; 165 end; 166 end; 167 168 q = p -> block.return_count; 169 if q^=null 170 then do; 171 if display_stat_$brief_display then call ioa_("^vxreturn count = ^p",tree_level,q); 172 else do; 173 call ioa_("^vxreturn count:",tree_level); 174 call display_exp(q,tree_level+1); 175 end; 176 end; 177 178 do i = 1 to 3; 179 q = p -> block.free_temps(i); 180 if q ^= null then call ioa_("^vxfree temps(^d) = ^p",tree_level,i,q); 181 end; 182 183 i = p -> block.enter.start; 184 j = p -> block.enter.end; 185 if i + j ^= 0 186 then call ioa_("^vxenter.start = ^o, enter.end = ^o",tree_level,i,j); 187 188 i = p -> block.leave.start; 189 j = p -> block.leave.end; 190 if i + j ^= 0 191 then call ioa_("^vxleave.start = ^o, leave.end = ^o",tree_level,i,j); 192 193 q = p -> block.entry_list; 194 if q ^= null then call ioa_("^vxentry list = ^p",tree_level,q); 195 196 q=p->block.plio_ps; 197 if q ^= null then call ioa_("^vxplio_ps= ^p",tree_level,q); 198 199 q=p->block.plio_fa; 200 if q ^= null then call ioa_("^vxplio_format_area= ^p",tree_level,q); 201 202 q=p->block.plio_ffsb; 203 if q ^= null then call ioa_("^vxplio_ffsb= ^p",tree_level,q); 204 205 q=p->block.plio_ssl; 206 if q ^= null then call ioa_("^vxplio_ssl= ^p",tree_level,q); 207 208 q=p->block.plio_fab2; 209 if q ^= null then call ioa_("^vxplio_fab2= ^p",tree_level,q); 210 211 q = p -> block.declaration; 212 if q = null 213 then call ioa_("^vxno dcls",tree_level); 214 else do; 215 if display_stat_$brief_display | no_dcls then call ioa_("^vxdeclarations = ^p",tree_level,q); 216 else do; 217 call ioa_("^vxdeclarations:",tree_level); 218 dcl_loop: call display_symbol(q,tree_level+1); 219 q=q->symbol.next; 220 if q^=null then go to dcl_loop; 221 end; 222 end; 223 224 ck_context: 225 q=p->block.context; 226 if q = null 227 then call ioa_("^vxno context",tree_level); 228 else do; 229 if display_stat_$brief_display then call ioa_("^vxcontext = ^p",tree_level,q); 230 else do; 231 call ioa_("^vxcontext:",tree_level); 232 ctxt_loop: call ioa_("^vxidentifier is ^a, attributes are:",tree_level,q->context.token->token.string); 233 do i = 1 to 20; 234 if context_bits(i) then call ioa_("^vx^a",tree_level,context_bit_names(i)); 235 end; 236 q=q->context.next; 237 if q^=null then go to ctxt_loop; 238 end; 239 end; 240 241 if p->block.father=null 242 then do; 243 if pl1_stat_$constant_list^=null 244 then do; 245 if display_stat_$brief_display then call ioa_("^vxconstants = ^p",tree_level,pl1_stat_$constant_list); 246 else do; 247 call ioa_("^vxconstants:",tree_level); 248 249 q=pl1_stat_$constant_list; 250 do while(q^=null); 251 call display_symbol(q,tree_level+1); 252 q=q->symbol.multi_use; 253 end; 254 end; 255 end; 256 257 if pl1_stat_$temporary_list^=null 258 then do; 259 if display_stat_$brief_display then call ioa_("^vxtemporaries = ^p",tree_level,pl1_stat_$temporary_list); 260 else do; 261 call ioa_("^vxtemporaries:",tree_level); 262 263 q=pl1_stat_$temporary_list; 264 do while(q^=null); 265 call display_symbol(q,tree_level+1); 266 q=q->symbol.multi_use; 267 end; 268 end; 269 end; 270 271 if pl1_stat_$defined_list ^= null 272 then do; 273 if display_stat_$brief_display 274 then call ioa_("^vxdefined overlays = ^p",tree_level,pl1_stat_$defined_list); 275 else do; 276 call ioa_("^vxdefined overlays:",tree_level); 277 278 do q = pl1_stat_$defined_list repeat q -> symbol.multi_use while(q ^= null); 279 call display_symbol(q,tree_level+1); 280 end; 281 end; 282 end; 283 end; 284 285 q=p->block.default; 286 if q^=null then do; 287 if display_stat_$brief_display then call ioa_("^vx^vxdefaults = ^p",tree_level,tree_level,q); 288 else do; 289 call ioa_("^vxdefault:",tree_level); 290 default_loop: call display_symbol(q,tree_level+1); 291 q=q->default.next; 292 if q^=null then go to default_loop; 293 end; 294 end; 295 296 q = p -> block.prologue; 297 if q = null 298 then call ioa_("^vxno prologue",tree_level); 299 else do; 300 if display_stat_$brief_display then call ioa_("^vxprologue = ^p",tree_level,q); 301 else do; 302 call ioa_("^vxprologue:",tree_level); 303 pro_loop: call display_statement(q,"0"b,tree_level+1); 304 q=q->statement.next; 305 if q^=null then go to pro_loop; 306 end; 307 end; 308 309 q = p -> block.main; 310 if q = null 311 then call ioa_("^vxno main",tree_level); 312 else do; 313 if display_stat_$brief_display then call ioa_("^vxmain = ^p",tree_level,q); 314 else do; 315 call ioa_("^vxmain:",tree_level); 316 main_loop: call display_statement(q,source,tree_level+1); 317 q=q->statement.next; 318 if q^=null then go to main_loop; 319 end; 320 end; 321 322 323 q=p->block.son; 324 if q = null 325 then call ioa_("^vxno sons",tree_level); 326 else if ^walk | display_stat_$brief_display then call ioa_("^vxson = ^p",tree_level,q); 327 else do; 328 call ioa_("^vxson:",tree_level); 329 call display_block(q,walk,no_dcls,source,tree_level+1); 330 end; 331 332 if p->block.brother=null 333 then call ioa_("^vxno brothers",tree_level); 334 else if ^walk | display_stat_$brief_display then call ioa_("^vxbrother = ^p",tree_level,p->block.brother); 335 else do; 336 call ioa_("^vxEND BLOCK ^p^/",tree_level,p); 337 p=p->block.brother; 338 call ioa_("^vxbrother:",tree_level); 339 go to start; 340 end; 341 342 ret: call ioa_("^vxEND BLOCK ^p^/",tree_level,p); 343 return; 344 end display_block; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1502.8 display_block.pl1 >dumps>old>recomp>display_block.pl1 72 1 09/14/77 1705.7 token.incl.pl1 >ldd>include>token.incl.pl1 73 2 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 74 3 05/06/74 1742.2 default.incl.pl1 >ldd>include>default.incl.pl1 75 4 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 76 5 07/21/80 1546.3 statement.incl.pl1 >ldd>include>statement.incl.pl1 77 6 07/21/80 1546.3 symbol.incl.pl1 >ldd>include>symbol.incl.pl1 78 7 11/30/78 1227.4 context.incl.pl1 >ldd>include>context.incl.pl1 79 8 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.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. addr builtin function dcl 21 ref 123 234 b36 000140 automatic bit(36) dcl 63 set ref 123* 126 bit_names 000133 constant varying char(16) initial array dcl 54 ref 125 126 bits 0(09) based structure level 2 packed unaligned dcl 7-3 block based structure level 1 dcl 2-5 block_node constant bit(9) initial dcl 8-5 ref 90 block_type 24 based bit(9) level 2 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 97 block_type 000164 constant char(12) initial array unaligned dcl 49 in procedure "display_block" ref 98 brother 2 based pointer level 2 packed unaligned dcl 2-5 set ref 332 334* 337 btype 000107 automatic char(12) unaligned dcl 49 set ref 98* 100* 102* context 10 based pointer level 2 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 224 context based structure level 1 dcl 7-3 in procedure "display_block" context_bit_names 000010 internal static char(11) initial array dcl 40 set ref 234* context_bits based bit(1) array unaligned dcl 40 ref 234 convert_binary_integer_$decimal_string 000122 constant entry external dcl 25 ref 100 declaration 4 based pointer level 2 packed unaligned dcl 2-5 ref 211 decode_node_id 000120 constant entry external dcl 25 ref 103 default based structure level 1 dcl 3-2 in procedure "display_block" default 6 based pointer level 2 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 285 display_any_node_name 000106 constant entry external dcl 25 ref 92 display_block 000114 constant entry external dcl 25 ref 329 display_exp 000104 constant entry external dcl 23 ref 162 174 display_stat_$brief_display 000124 external static bit(1) unaligned dcl 37 ref 157 171 215 229 245 259 273 287 300 313 326 334 display_statement 000110 constant entry external dcl 25 ref 303 316 display_symbol 000112 constant entry external dcl 25 ref 218 251 265 279 290 element 1 based pointer array level 2 packed unaligned dcl 4-6 ref 162 163 end 51(18) based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 184 end 52(18) based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 189 enter 51 based structure level 2 packed unaligned dcl 2-5 entry_list 36 based pointer level 2 dcl 2-5 ref 193 father 1 based pointer level 2 packed unaligned dcl 2-5 set ref 117* 241 fixed builtin function dcl 21 ref 97 116 116 free_temps 26 based pointer array level 2 dcl 2-5 ref 179 i 000105 automatic fixed bin(17,0) dcl 25 set ref 104* 105 105* 110* 111 111* 113* 114 114* 125* 126 126* 133* 134 136 142* 178* 179 180* 183* 185 185* 188* 190 190* 233* 234 234* ii 000104 automatic fixed bin(18,0) dcl 25 set ref 107* 108 108* ioa_ 000116 constant entry external dcl 25 ref 86 102 103 105 108 111 114 116 117 119 130 138 146 149 151 157 159 171 173 180 185 190 194 197 200 203 206 209 212 215 217 226 229 231 232 234 245 247 259 261 273 276 287 289 297 300 302 310 313 315 324 326 328 332 334 336 338 342 itype 000112 automatic fixed bin(15,0) dcl 49 set ref 97* 98 98 98 100* j 000106 automatic fixed bin(17,0) dcl 25 set ref 184* 185 185* 189* 190 190* last_auto_loc 46 based fixed bin(17,0) level 2 dcl 2-5 ref 110 leave 52 based structure level 2 packed unaligned dcl 2-5 length builtin function dcl 21 ref 130 136 136 146 146 level 45 based fixed bin(17,0) level 2 dcl 2-5 ref 104 like_attribute 24(21) based bit(1) level 2 packed unaligned dcl 2-5 set ref 123 line 000113 automatic varying char(80) dcl 63 set ref 122* 126* 126 130 130* 132* 136 138* 139* 142* 142 146 146* list based structure level 1 dcl 4-6 main 13 based pointer level 2 packed unaligned dcl 2-5 ref 309 multi_use 7 based pointer level 2 packed unaligned dcl 6-3 ref 252 266 280 next 1 based pointer level 2 in structure "default" packed unaligned dcl 3-2 in procedure "display_block" ref 291 next 6 based pointer level 2 in structure "symbol" packed unaligned dcl 6-3 in procedure "display_block" ref 219 next 1 based pointer level 2 in structure "context" packed unaligned dcl 7-3 in procedure "display_block" ref 236 next 1 based pointer level 2 in structure "statement" packed unaligned dcl 5-3 in procedure "display_block" ref 304 317 no_dcls parameter bit(1) dcl 25 set ref 11 215 329* node based structure level 1 dcl 8-27 node_ptr parameter pointer dcl 19 ref 11 82 nonquick_reasons 000000 constant varying char(24) initial array dcl 57 ref 133 136 142 null builtin function dcl 21 ref 83 151 155 161 169 180 194 197 200 203 206 209 212 220 226 237 241 243 250 257 264 271 278 286 292 297 305 310 318 324 332 number 24(27) based fixed bin(9,0) level 2 packed unsigned unaligned dcl 2-5 set ref 149* number_of_entries 44 based fixed bin(17,0) level 2 dcl 2-5 ref 113 options_main 43(01) based bit(1) level 2 packed unaligned dcl 2-5 ref 119 owner 54 based pointer level 2 dcl 2-5 set ref 151 151* p 000100 automatic pointer dcl 19 set ref 82* 83 90 92* 97 102* 103* 104 107 110 113 116 116 117 119 123 134 149 151 151 154 168 179 183 184 188 189 193 196 199 202 205 208 211 224 241 285 296 309 323 332 334 336* 337* 337 342* pl1_stat_$constant_list 000126 external static pointer dcl 67 set ref 243 245* 249 pl1_stat_$defined_list 000130 external static pointer dcl 67 set ref 271 273* 278 pl1_stat_$temporary_list 000132 external static pointer dcl 67 set ref 257 259* 263 plio_fa 20 based pointer level 2 packed unaligned dcl 2-5 ref 199 plio_fab2 23 based pointer level 2 packed unaligned dcl 2-5 ref 208 plio_ffsb 21 based pointer level 2 packed unaligned dcl 2-5 ref 202 plio_ps 17 based pointer level 2 packed unaligned dcl 2-5 ref 196 plio_ssl 22 based pointer level 2 packed unaligned dcl 2-5 ref 205 prefix 24(09) based bit(12) level 2 packed unaligned dcl 2-5 ref 116 116 prologue 11 based pointer level 2 packed unaligned dcl 2-5 ref 296 q 000102 automatic pointer dcl 19 set ref 154* 155 157* 161 162 163* 163 168* 169 171* 174* 179* 180 180* 193* 194 194* 196* 197 197* 199* 200 200* 202* 203 203* 205* 206 206* 208* 209 209* 211* 212 215* 218* 219* 219 220 224* 226 229* 232 234 236* 236 237 249* 250 251* 252* 252 263* 264 265* 266* 266 278* 278* 279* 280 285* 286 287* 290* 291* 291 292 296* 297 300* 303* 304* 304 305 309* 310 313* 316* 317* 317 318 323* 324 326* 329* return_count 16 based pointer level 2 packed unaligned dcl 2-5 ref 168 return_values 15 based pointer level 2 packed unaligned dcl 2-5 ref 154 size 3 based fixed bin(9,0) level 2 dcl 1-3 ref 232 232 son 3 based pointer level 2 packed unaligned dcl 2-5 ref 323 source parameter bit(1) dcl 25 set ref 11 316* 329* start 51 based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 183 start 52 based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 2-5 in procedure "display_block" ref 188 statement based structure level 1 dcl 5-3 string 4 based char level 2 in structure "token" dcl 1-3 in procedure "display_block" set ref 232* string builtin function dcl 21 in procedure "display_block" ref 134 substr builtin function dcl 21 ref 126 134 symbol based structure level 1 dcl 6-3 symbol_block 47 based fixed bin(17,0) level 2 dcl 2-5 ref 107 token 2 based pointer level 2 in structure "context" packed unaligned dcl 7-3 in procedure "display_block" ref 232 token based structure level 1 dcl 1-3 in procedure "display_block" tree_level parameter fixed bin(17,0) dcl 25 set ref 11 86* 92 102* 103* 105* 108* 111* 114* 116* 117* 119* 130* 138* 146* 149* 151* 157* 159* 162 171* 173* 174 180* 185* 190* 194* 197* 200* 203* 206* 209* 212* 215* 217* 218 226* 229* 231* 232* 234* 245* 247* 251 259* 261* 265 273* 276* 279 287* 287* 289* 290 297* 300* 302* 303 310* 313* 315* 316 324* 326* 328* 329 332* 334* 336* 338* 342* type based bit(9) level 2 packed unaligned dcl 8-27 ref 90 types 0(09) based structure level 3 packed unaligned dcl 7-3 set ref 234 walk parameter bit(1) dcl 25 set ref 11 326 329* 334 why_nonquick 42 based structure level 2 dcl 2-5 ref 134 word based bit(36) unaligned dcl 63 ref 123 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. array_node internal static bit(9) initial dcl 8-5 bound_node internal static bit(9) initial dcl 8-5 by_name_agg_node internal static bit(9) initial dcl 8-5 context_node internal static bit(9) initial dcl 8-5 cross_reference_node internal static bit(9) initial dcl 8-5 default_node internal static bit(9) initial dcl 8-5 format_value_node internal static bit(9) initial dcl 8-5 label_array_element_node internal static bit(9) initial dcl 8-5 label_node internal static bit(9) initial dcl 8-5 list_node internal static bit(9) initial dcl 8-5 machine_state_node internal static bit(9) initial dcl 8-5 max_block_number internal static fixed bin(17,0) initial dcl 2-74 max_list_elements internal static fixed bin(17,0) initial dcl 4-12 n automatic fixed bin(15,0) dcl 47 operator_node internal static bit(9) initial dcl 8-5 reference_node internal static bit(9) initial dcl 8-5 sf_par_node internal static bit(9) initial dcl 8-5 source_node internal static bit(9) initial dcl 8-5 statement_node internal static bit(9) initial dcl 8-5 symbol_node internal static bit(9) initial dcl 8-5 temporary_node internal static bit(9) initial dcl 8-5 token_node internal static bit(9) initial dcl 8-5 NAMES DECLARED BY EXPLICIT CONTEXT. ck_context 002700 constant label dcl 224 ctxt_loop 003011 constant label dcl 232 ref 237 dcl_loop 002654 constant label dcl 218 ref 220 default_loop 003541 constant label dcl 290 ref 292 display_block 000662 constant entry external dcl 11 main_loop 004031 constant label dcl 316 ref 318 pro_loop 003676 constant label dcl 303 ref 305 ret 004351 constant label dcl 342 ref 87 94 start 000673 constant label dcl 83 ref 339 NAME DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 125 133 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4570 4724 4406 4600 Length 5320 4406 134 360 162 74 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_block 191 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 context_bit_names display_block STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_block 000100 p display_block 000102 q display_block 000104 ii display_block 000105 i display_block 000106 j display_block 000107 btype display_block 000112 itype display_block 000113 line display_block 000140 b36 display_block THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_binary_integer_$decimal_string decode_node_id display_any_node_name display_block display_exp display_statement display_symbol ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. display_stat_$brief_display pl1_stat_$constant_list pl1_stat_$defined_list pl1_stat_$temporary_list LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000655 82 000667 83 000673 86 000677 87 000723 90 000724 92 000730 94 000760 97 000761 98 000765 100 001002 102 001017 103 001050 104 001111 105 001114 107 001144 108 001147 110 001175 111 001200 113 001225 114 001230 116 001255 117 001312 119 001343 122 001373 123 001374 125 001401 126 001406 128 001427 130 001431 132 001457 133 001464 134 001471 136 001476 138 001505 139 001531 142 001536 144 001552 146 001554 149 001603 151 001636 154 001673 155 001676 157 001702 159 001732 161 001752 162 001756 163 001776 164 002001 168 002002 169 002005 171 002011 173 002044 174 002067 178 002104 179 002111 180 002115 181 002151 183 002153 184 002157 185 002163 188 002214 189 002220 190 002224 193 002255 194 002260 196 002311 197 002314 199 002350 200 002353 202 002404 203 002407 205 002443 206 002446 208 002502 209 002505 211 002541 212 002544 215 002573 217 002632 218 002654 219 002671 220 002674 224 002700 226 002703 229 002734 231 002767 232 003011 233 003043 234 003050 235 003106 236 003110 237 003113 241 003117 243 003123 245 003130 247 003157 249 003202 250 003206 251 003212 252 003227 253 003232 257 003233 259 003240 261 003272 263 003315 264 003321 265 003325 266 003342 267 003345 271 003346 273 003353 276 003402 278 003422 279 003432 280 003447 285 003453 286 003456 287 003462 289 003520 290 003541 291 003556 292 003561 296 003565 297 003570 300 003621 302 003654 303 003676 304 003717 305 003722 309 003726 310 003731 313 003760 315 004012 316 004031 317 004050 318 004053 323 004057 324 004062 326 004111 328 004147 329 004165 332 004210 334 004241 336 004300 337 004323 338 004326 339 004350 342 004351 343 004376 ----------------------------------------------------------- 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