COMPILATION LISTING OF SEGMENT display_array Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1926.65_Mon_mdt 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 array|bound nodes, 12* modified on 26 August by PAG for Version II */ 13 /* Modified again on: 19 October 1970 PG */ 14 /* Modified on: 2 December 1970 jk */ 15 /* Modified on: 7 January 1971 by BLW */ 16 /* Modified on: 25 April 1979 by PCK to implement 4-bit decimal */ 17 /* Modified on: 29 November 1979 by PCK to display tree level indented output */ 18 19 display_array: proc(a,tree_level); 20 21 dcl tree_level fixed bin; 22 dcl (a,p,b) ptr; 23 dcl units(0:7) char(5) int aligned static init("----","bits","digit","byte","half","word","mod2","mod4"); 24 dcl i fixed bin(31); 25 dcl c char(16) varying; 26 dcl display_exp external entry(ptr,fixed bin), display_any_node_name ext entry(char(*) aligned,ptr,fixed bin), 27 ioa_ entry options(variable), 28 (fixed,null) builtin; 29 30 dcl display_stat_$brief_display bit(1) ext static; 31 32 dcl boundary_type(7) char(5) aligned int static 33 init("bit", "digit", "byte", "half", "word", "mod2", "mod4"); 34 1 1 dcl 1 array based aligned, 1 2 2 node_type bit(9) unaligned, 1 3 2 reserved bit(34) unaligned, 1 4 2 number_of_dimensions fixed(7) unaligned, 1 5 2 own_number_of_dimensions fixed(7) unaligned, 1 6 2 element_boundary fixed(3) unaligned, 1 7 2 size_units fixed(3) unaligned, 1 8 2 offset_units fixed(3) unaligned, 1 9 2 interleaved bit(1) unaligned, 1 10 2 c_element_size fixed(24), 1 11 2 c_element_size_bits fixed(24), 1 12 2 c_virtual_origin fixed(24), 1 13 2 element_size ptr unaligned, 1 14 2 element_size_bits ptr unaligned, 1 15 2 virtual_origin ptr unaligned, 1 16 2 symtab_virtual_origin ptr unaligned, 1 17 2 symtab_element_size ptr unaligned, 1 18 2 bounds ptr unaligned, 1 19 2 element_descriptor ptr unaligned; 1 20 1 21 dcl 1 bound based aligned, 1 22 2 node_type bit(9), 1 23 2 c_lower fixed(24), 1 24 2 c_upper fixed(24), 1 25 2 c_multiplier fixed(24), 1 26 2 c_desc_multiplier fixed(24), 1 27 2 lower ptr unaligned, 1 28 2 upper ptr unaligned, 1 29 2 multiplier ptr unaligned, 1 30 2 desc_multiplier ptr unaligned, 1 31 2 symtab_lower ptr unaligned, 1 32 2 symtab_upper ptr unaligned, 1 33 2 symtab_multiplier ptr unaligned, 1 34 2 next ptr unaligned; 35 2 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 2 2 2 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 2 4 2 5 dcl ( block_node initial("000000001"b), 2 6 statement_node initial("000000010"b), 2 7 operator_node initial("000000011"b), 2 8 reference_node initial("000000100"b), 2 9 token_node initial("000000101"b), 2 10 symbol_node initial("000000110"b), 2 11 context_node initial("000000111"b), 2 12 array_node initial("000001000"b), 2 13 bound_node initial("000001001"b), 2 14 format_value_node initial("000001010"b), 2 15 list_node initial("000001011"b), 2 16 default_node initial("000001100"b), 2 17 machine_state_node initial("000001101"b), 2 18 source_node initial("000001110"b), 2 19 label_node initial("000001111"b), 2 20 cross_reference_node initial("000010000"b), 2 21 sf_par_node initial("000010001"b), 2 22 temporary_node initial("000010010"b), 2 23 label_array_element_node initial("000010011"b), 2 24 by_name_agg_node initial("000010100"b)) 2 25 bit(9) internal static aligned options(constant); 2 26 2 27 dcl 1 node based aligned, 2 28 2 type unal bit(9), 2 29 2 source_id unal structure, 2 30 3 file_number bit(8), 2 31 3 line_number bit(14), 2 32 3 statement_number bit(5); 2 33 2 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 36 37 begin: 38 p = a; 39 if p = null then do; 40 call ioa_("^/^vxdisplay_array: ptr is NULL^/",tree_level); 41 return; 42 end; 43 44 if p -> node.type = bound_node 45 then do; 46 call display_bounds(p,tree_level+1); 47 return; 48 end; 49 50 if p -> node.type ^= array_node then do; 51 call display_any_node_name("display_array: arg is not an array node, 52 arg =",p,tree_level+1); 53 return; 54 end; 55 56 if p -> array.interleaved then c = " is interleaved"; else c = ""; 57 call ioa_("^/^vxARRAY ^p^a, dimensions = ^d",tree_level,p,c,p -> array.number_of_dimensions); 58 59 i=p->array.own_number_of_dimensions; 60 if i ^= 0 then 61 call ioa_("^vxown_number_of_dimensions = ^d",tree_level,i); 62 63 i = p -> array.element_boundary; 64 if i ^= 0 then call ioa_("^vxelement boundary is ^a",tree_level,(boundary_type(i))); 65 66 i = p -> array.size_units; 67 if i ^= 0 then call ioa_("^vxsize units are ^a",tree_level,(boundary_type(i))); 68 69 call ioa_("^vxoffset units are ^a",tree_level,units(p->array.offset_units)); 70 71 b=p->array.element_descriptor; 72 if b ^= null then call show_exp("element descriptor",tree_level); 73 74 b=p->array.virtual_origin; 75 if b ^= null then call show_exp("virtual origin",tree_level); 76 77 b = p -> array.symtab_virtual_origin; 78 if b ^= null then call show_exp("symtab virtual origin",tree_level); 79 80 i=p->array.c_virtual_origin; 81 if i ^= 0 then 82 call ioa_("^vxc_virtual_origin = ^d",tree_level,i); 83 84 b=p->array.element_size; 85 if b ^= null then call show_exp("element size",tree_level); 86 87 b = p -> array.symtab_element_size; 88 if b ^= null then call show_exp("symtab element size",tree_level); 89 90 i=p->array.c_element_size; 91 if i ^= 0 then 92 call ioa_("^vxc_element_size = ^d",tree_level,i); 93 94 b=p->array.element_size_bits; 95 if b ^= null then call show_exp("bit element size",tree_level); 96 97 i=p->array.c_element_size_bits; 98 if i ^= 0 then 99 call ioa_("^vxc_element_size_bits = ^d",tree_level,i); 100 101 p=p->array.bounds; 102 call ioa_("^vxbounds of ARRAY ^p:",tree_level,p); 103 call display_bounds(p,tree_level+1); 104 call ioa_("^vxEND ARRAY ^p^/",tree_level,p); 105 return; 106 107 display_bounds: procedure (s,tree_level); 108 dcl (p,s) ptr; 109 dcl tree_level fixed bin; 110 111 p=s; 112 test_bounds: 113 if p = null then do; 114 call ioa_("^/^vxbounds ptr is NULL^/b",tree_level); 115 return; 116 end; 117 118 if p->node.type ^= bound_node then do; 119 call display_any_node_name("display_array: arg is not a bound node, 120 arg =",p,tree_level+1); 121 return; 122 end; 123 124 next: if p = null then return; 125 126 call ioa_("^/^vxBOUND ^p",tree_level,p); 127 128 b = p->bound.lower; 129 if b ^= null then call show_exp("lower bound",tree_level); 130 131 i=p->bound.c_lower; 132 if i ^= 0 then call ioa_("^vxc_lower bound = ^d",tree_level,i); 133 134 b=p->bound.upper; 135 if b ^= null then call show_exp("upper bound",tree_level); 136 137 i=p->bound.c_upper; 138 if i ^= 0 then call ioa_("^vxc_upper bound = ^d",tree_level,i); 139 140 b=p->bound.multiplier; 141 if b ^= null then call show_exp("multiplier",tree_level); 142 143 i=p->bound.c_multiplier; 144 if i ^= 0 then call ioa_("^vxc_multiplier = ^d",tree_level,i); 145 146 b=p->bound.desc_multiplier; 147 if b ^= null then call show_exp("descriptor multiplier",tree_level); 148 149 i=p->bound.c_desc_multiplier; 150 if i ^= 0 then call ioa_("^vxc_desc_multiplier = ^d",tree_level,i); 151 152 b = p -> bound.symtab_lower; 153 if b ^= null then call show_exp("symtab lower",tree_level); 154 155 b = p -> bound.symtab_upper; 156 if b ^= null then call show_exp("symtab upper",tree_level); 157 158 b = p -> bound.symtab_multiplier; 159 if b ^= null then call show_exp("symtab multiplier",tree_level); 160 161 call ioa_("^vxEND BOUND ^p^/",tree_level,p); 162 p = p->bound.next; 163 go to next; 164 end display_bounds; 165 166 show_exp: proc(mess,tree_level); 167 168 dcl tree_level fixed bin; 169 dcl mess char(*) aligned; 170 171 if display_stat_$brief_display then call ioa_("^vx^a = ^p",tree_level,mess,b); 172 else do; 173 call ioa_("^vx^a exp follows",tree_level,mess); 174 call display_exp(b,tree_level+1); 175 call ioa_("^vx^a ended",tree_level,mess); 176 end; 177 178 end; 179 180 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1926.6 display_array.pl1 >udd>sm>ds>w>ml>display_array.pl1 35 1 05/06/74 1841.6 array.incl.pl1 >ldd>incl>array.incl.pl1 36 2 07/21/80 1646.3 nodes.incl.pl1 >ldd>incl>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. a parameter pointer dcl 22 ref 19 37 array based structure level 1 dcl 1-1 array_node constant bit(9) initial dcl 2-5 ref 50 b 000102 automatic pointer dcl 22 set ref 71* 72 74* 75 77* 78 84* 85 87* 88 94* 95 128* 129 134* 135 140* 141 146* 147 152* 153 155* 156 158* 159 171* 174* bound based structure level 1 dcl 1-21 bound_node constant bit(9) initial dcl 2-5 ref 44 118 boundary_type 000000 constant char(5) initial array dcl 32 ref 64 67 bounds 12 based pointer level 2 packed packed unaligned dcl 1-1 ref 101 c 000105 automatic varying char(16) dcl 25 set ref 56* 56* 57* c_desc_multiplier 4 based fixed bin(24,0) level 2 dcl 1-21 ref 149 c_element_size 2 based fixed bin(24,0) level 2 dcl 1-1 ref 90 c_element_size_bits 3 based fixed bin(24,0) level 2 dcl 1-1 ref 97 c_lower 1 based fixed bin(24,0) level 2 dcl 1-21 ref 131 c_multiplier 3 based fixed bin(24,0) level 2 dcl 1-21 ref 143 c_upper 2 based fixed bin(24,0) level 2 dcl 1-21 ref 137 c_virtual_origin 4 based fixed bin(24,0) level 2 dcl 1-1 ref 80 desc_multiplier 10 based pointer level 2 packed packed unaligned dcl 1-21 ref 146 display_any_node_name 000032 constant entry external dcl 26 ref 51 119 display_exp 000030 constant entry external dcl 26 ref 174 display_stat_$brief_display 000036 external static bit(1) packed unaligned dcl 30 ref 171 element_boundary 1(23) based fixed bin(3,0) level 2 packed packed unaligned dcl 1-1 ref 63 element_descriptor 13 based pointer level 2 packed packed unaligned dcl 1-1 ref 71 element_size 5 based pointer level 2 packed packed unaligned dcl 1-1 ref 84 element_size_bits 6 based pointer level 2 packed packed unaligned dcl 1-1 ref 94 i 000104 automatic fixed bin(31,0) dcl 24 set ref 59* 60 60* 63* 64 64 66* 67 67 80* 81 81* 90* 91 91* 97* 98 98* 131* 132 132* 137* 138 138* 143* 144 144* 149* 150 150* interleaved 1(35) based bit(1) level 2 packed packed unaligned dcl 1-1 ref 56 ioa_ 000034 constant entry external dcl 26 ref 40 57 60 64 67 69 81 91 98 102 104 114 126 132 138 144 150 161 171 173 175 lower 5 based pointer level 2 packed packed unaligned dcl 1-21 ref 128 mess parameter char dcl 169 set ref 166 171* 173* 175* multiplier 7 based pointer level 2 packed packed unaligned dcl 1-21 ref 140 next 14 based pointer level 2 packed packed unaligned dcl 1-21 ref 162 node based structure level 1 dcl 2-27 null builtin function dcl 26 ref 39 72 75 78 85 88 95 112 124 129 135 141 147 153 156 159 number_of_dimensions 1(07) based fixed bin(7,0) level 2 packed packed unaligned dcl 1-1 set ref 57* offset_units 1(31) based fixed bin(3,0) level 2 packed packed unaligned dcl 1-1 ref 69 own_number_of_dimensions 1(15) based fixed bin(7,0) level 2 packed packed unaligned dcl 1-1 ref 59 p 000120 automatic pointer dcl 108 in procedure "display_bounds" set ref 111* 112 118 119* 124 126* 128 131 134 137 140 143 146 149 152 155 158 161* 162* 162 p 000100 automatic pointer dcl 22 in procedure "display_array" set ref 37* 39 44 46* 50 51* 56 57* 57 59 63 66 69 71 74 77 80 84 87 90 94 97 101* 101 102* 103* 104* s parameter pointer dcl 108 ref 107 111 size_units 1(27) based fixed bin(3,0) level 2 packed packed unaligned dcl 1-1 ref 66 symtab_element_size 11 based pointer level 2 packed packed unaligned dcl 1-1 ref 87 symtab_lower 11 based pointer level 2 packed packed unaligned dcl 1-21 ref 152 symtab_multiplier 13 based pointer level 2 packed packed unaligned dcl 1-21 ref 158 symtab_upper 12 based pointer level 2 packed packed unaligned dcl 1-21 ref 155 symtab_virtual_origin 10 based pointer level 2 packed packed unaligned dcl 1-1 ref 77 tree_level parameter fixed bin(17,0) dcl 21 in procedure "display_array" set ref 19 40* 46 51 57* 60* 64* 67* 69* 72* 75* 78* 81* 85* 88* 91* 95* 98* 102* 103 104* tree_level parameter fixed bin(17,0) dcl 168 in procedure "show_exp" set ref 166 171* 173* 174 175* tree_level parameter fixed bin(17,0) dcl 109 in procedure "display_bounds" set ref 107 114* 119 126* 129* 132* 135* 138* 141* 144* 147* 150* 153* 156* 159* 161* type based bit(9) level 2 packed packed unaligned dcl 2-27 ref 44 50 118 units 000010 internal static char(5) initial array dcl 23 set ref 69* upper 6 based pointer level 2 packed packed unaligned dcl 1-21 ref 134 virtual_origin 7 based pointer level 2 packed packed unaligned dcl 1-1 ref 74 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. block_node internal static bit(9) initial dcl 2-5 by_name_agg_node internal static bit(9) initial dcl 2-5 context_node internal static bit(9) initial dcl 2-5 cross_reference_node internal static bit(9) initial dcl 2-5 default_node internal static bit(9) initial dcl 2-5 fixed builtin function dcl 26 format_value_node internal static bit(9) initial dcl 2-5 label_array_element_node internal static bit(9) initial dcl 2-5 label_node internal static bit(9) initial dcl 2-5 list_node internal static bit(9) initial dcl 2-5 machine_state_node internal static bit(9) initial dcl 2-5 operator_node internal static bit(9) initial dcl 2-5 reference_node internal static bit(9) initial dcl 2-5 sf_par_node internal static bit(9) initial dcl 2-5 source_node internal static bit(9) initial dcl 2-5 statement_node internal static bit(9) initial dcl 2-5 symbol_node internal static bit(9) initial dcl 2-5 temporary_node internal static bit(9) initial dcl 2-5 token_node internal static bit(9) initial dcl 2-5 NAMES DECLARED BY EXPLICIT CONTEXT. begin 000402 constant label dcl 37 display_array 000375 constant entry external dcl 19 display_bounds 001373 constant entry internal dcl 107 ref 46 103 next 001462 constant label dcl 124 ref 163 show_exp 002176 constant entry internal dcl 166 ref 72 75 78 85 88 95 129 135 141 147 153 156 159 test_bounds 001400 constant label dcl 112 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2444 2504 2360 2454 Length 2714 2360 40 174 64 20 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_array 242 external procedure is an external procedure. display_bounds internal procedure shares stack frame of external procedure display_array. show_exp internal procedure shares stack frame of external procedure display_array. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 units display_array STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_array 000100 p display_array 000102 b display_array 000104 i display_array 000105 c display_array 000120 p display_bounds THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. display_any_node_name display_exp ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. display_stat_$brief_display LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000371 37 000402 39 000406 40 000412 41 000431 44 000432 46 000437 47 000444 50 000445 51 000447 53 000475 56 000476 56 000507 57 000510 59 000545 60 000552 63 000600 64 000605 66 000637 67 000644 69 000677 71 000734 72 000737 74 000766 75 000771 77 001016 78 001021 80 001050 81 001053 84 001104 85 001107 87 001135 88 001140 90 001164 91 001167 94 001220 95 001223 97 001250 98 001253 101 001301 102 001304 103 001334 104 001342 105 001372 107 001373 111 001375 112 001400 114 001404 115 001425 118 001426 119 001432 121 001461 124 001462 126 001467 128 001515 129 001520 131 001545 132 001550 134 001601 135 001604 137 001632 138 001635 140 001666 141 001671 143 001716 144 001721 146 001747 147 001752 149 002001 150 002004 152 002032 153 002035 155 002063 156 002066 158 002113 159 002116 161 002145 162 002172 163 002175 166 002176 171 002207 173 002246 174 002276 175 002313 178 002342 ----------------------------------------------------------- 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