COMPILATION LISTING OF SEGMENT show_statement Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1625.8 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 show_statement: proc(string); 12 13 /* Modified: 29 Nov 1979 by PCK to print a tree level indented listing */ 14 /* Modified: 24 Jun 1980 by PCK to properly indent the output of show_stm */ 15 16 dcl string char(*); /* source id of statement to show */ 17 18 dcl (k,n) fixed bin(15), 19 tree_level fixed bin initial(0), 20 ln fixed bin(15), 21 (sn,fn) fixed bin(6), 22 p ptr, 23 number int static fixed bin(31), 24 any int static bit(1), 25 pl1_stat_$root ptr ext, 26 ioa_ entry options(variable), 27 cv_dec_ entry(char(*) aligned) returns(fixed bin), 28 display_statement entry(ptr,bit(1) aligned,fixed bin); 29 30 dcl (fixed,index,null,substr) builtin; 31 32 1 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 1 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 1 3 /* format: style3,idind30 */ 1 4 1 5 declare 1 block aligned based, 1 6 2 node_type bit (9) unaligned, 1 7 2 source_id structure unaligned, 1 8 3 file_number bit (8), 1 9 3 line_number bit (14), 1 10 3 statement_number bit (5), 1 11 2 father ptr unaligned, 1 12 2 brother ptr unaligned, 1 13 2 son ptr unaligned, 1 14 2 declaration ptr unaligned, 1 15 2 end_declaration ptr unaligned, 1 16 2 default ptr unaligned, 1 17 2 end_default ptr unaligned, 1 18 2 context ptr unaligned, 1 19 2 prologue ptr unaligned, 1 20 2 end_prologue ptr unaligned, 1 21 2 main ptr unaligned, 1 22 2 end_main ptr unaligned, 1 23 2 return_values ptr unaligned, 1 24 2 return_count ptr unaligned, 1 25 2 plio_ps ptr unaligned, 1 26 2 plio_fa ptr unaligned, 1 27 2 plio_ffsb ptr unaligned, 1 28 2 plio_ssl ptr unaligned, 1 29 2 plio_fab2 ptr unaligned, 1 30 2 block_type bit (9) unaligned, 1 31 2 prefix bit (12) unaligned, 1 32 2 like_attribute bit (1) unaligned, 1 33 2 no_stack bit (1) unaligned, 1 34 2 get_data bit (1) unaligned, 1 35 2 flush_at_call bit (1) unaligned, 1 36 2 processed bit (1) unaligned, 1 37 2 text_displayed bit (1) unaligned, 1 38 2 number fixed bin (9) unsigned unaligned, 1 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 1 40 2 temp_list ptr, 1 41 2 entry_list ptr, 1 42 2 o_and_s ptr, 1 43 2 why_nonquick aligned, 1 44 3 auto_adjustable_storage bit (1) unaligned, 1 45 3 returns_star_extents bit (1) unaligned, 1 46 3 stack_extended_by_args bit (1) unaligned, 1 47 3 invoked_by_format bit (1) unaligned, 1 48 3 format_statement bit (1) unaligned, 1 49 3 io_statements bit (1) unaligned, 1 50 3 assigned_to_entry_var bit (1) unaligned, 1 51 3 condition_statements bit (1) unaligned, 1 52 3 no_owner bit (1) unaligned, 1 53 3 recursive_call bit (1) unaligned, 1 54 3 options_non_quick bit (1) unaligned, 1 55 3 options_variable bit (1) unaligned, 1 56 3 never_referenced bit (1) unaligned, 1 57 3 pad_nonquick bit (5) unaligned, 1 58 2 prologue_flag bit (1) unaligned, 1 59 2 options_main bit (1) unaligned, 1 60 2 pad bit (16) unaligned, 1 61 2 number_of_entries fixed bin (17), 1 62 2 level fixed bin (17), 1 63 2 last_auto_loc fixed bin (17), 1 64 2 symbol_block fixed bin (17), 1 65 2 entry_info fixed bin (18), 1 66 2 enter structure unaligned, 1 67 3 start fixed bin (17), 1 68 3 end fixed bin (17), 1 69 2 leave structure unaligned, 1 70 3 start fixed bin (17), 1 71 3 end fixed bin (17), 1 72 2 owner ptr; 1 73 1 74 declare max_block_number fixed bin internal static options (constant) initial (511); 1 75 1 76 /* END INCLUDE FILE ... block.incl.pl1 */ 33 2 1 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 2 2 2 3 dcl 1 statement based aligned, 2 4 2 node_type bit(9) unaligned, 2 5 2 source_id structure unaligned, 2 6 3 file_number bit(8), 2 7 3 line_number bit(14), 2 8 3 statement_number bit(5), 2 9 2 next ptr unaligned, 2 10 2 back ptr unaligned, 2 11 2 root ptr unaligned, 2 12 2 labels ptr unaligned, 2 13 2 reference_list ptr unaligned, 2 14 2 state_list ptr unaligned, 2 15 2 reference_count fixed(17) unaligned, 2 16 2 ref_count_copy fixed(17) unaligned, 2 17 2 object structure unaligned, 2 18 3 start fixed(17), 2 19 3 finish fixed(17), 2 20 2 source structure unaligned, 2 21 3 segment fixed(11), 2 22 3 start fixed(23), 2 23 3 length fixed(11), 2 24 2 prefix bit(12) unaligned, 2 25 2 optimized bit(1) unaligned, 2 26 2 free_temps bit(1) unaligned, 2 27 2 LHS_in_RHS bit(1) unaligned, 2 28 2 statement_type bit(9) unaligned, 2 29 2 bits structure unaligned, 2 30 3 processed bit(1) unaligned, 2 31 3 put_in_profile bit(1) unaligned, 2 32 3 generated bit(1) unaligned, 2 33 3 snap bit(1) unaligned, 2 34 3 system bit(1) unaligned, 2 35 3 irreducible bit(1) unaligned, 2 36 3 checked bit(1) unaligned, 2 37 3 save_temps bit(1) unaligned, 2 38 3 suppress_warnings bit(1) unaligned, 2 39 3 force_nonquick bit(1) unaligned, 2 40 3 expanded_by_name bit(1) unaligned, 2 41 3 pad bit(25) unaligned; 2 42 2 43 /* END INCLUDE FILE ... statement.incl.pl1 */ 34 35 36 if pl1_stat_$root = null 37 then do; 38 call ioa_("No tree available"); 39 return; 40 end; 41 if string = "" then do; 42 call ioa_("show_statement line#.statement# (s# is opt.)"); 43 return; 44 end; 45 46 fn = 0; 47 48 n = index(string,"."); 49 50 if n = 0 51 then do; 52 any = "1"b; 53 ln = cv_dec_((string)); 54 sn = 0; 55 end; 56 else do; 57 any = "0"b; 58 k = index(substr(string,n+1),"."); 59 if k = 0 60 then do; 61 ln = cv_dec_(substr(string,1,n-1)); 62 sn = cv_dec_(substr(string,n+1)); 63 end; 64 else do; 65 fn = cv_dec_(substr(string,1,n-1)); 66 ln = cv_dec_(substr(string,n+1,k-1)); 67 sn = cv_dec_(substr(string,n+k+1)); 68 end; 69 end; 70 71 if any then call ioa_("Searching for line ^d",ln); 72 else call ioa_("Searching for statement ^d on line ^d",sn,ln); 73 74 number = 0; 75 call show_stm(pl1_stat_$root -> block.son,tree_level+1); 76 77 if number = 0 then call ioa_("Statement not found."); 78 79 show_stm: proc(ptx,tree_level); 80 81 dcl ptx ptr unaligned; 82 dcl tree_level fixed bin; 83 84 dcl (p,q,pt) ptr; 85 86 pt = ptx; 87 if pt = null then return; 88 89 call ioa_("^/^vxStart of block ^p",tree_level,pt); 90 91 p = pt -> block.prologue; 92 93 call check_stm(p,tree_level); 94 95 p = pt -> block.main; 96 97 call check_stm(p,tree_level); 98 99 q = pt -> block.son; 100 101 102 103 do while(q^=null); 104 call show_stm((q),tree_level+1); 105 q = q -> block.brother; 106 end; 107 108 call ioa_("^vxEnd of block ^p^/",tree_level,pt); 109 110 end; 111 112 113 check_stm: proc(pt,tree_level); 114 115 dcl (pt,q) ptr, 116 tree_level fixed bin, 117 this_sn fixed bin(9); 118 119 q = pt; 120 do while(q ^= null); 121 122 if any then this_sn = 0; 123 else this_sn = fixed(q -> statement.statement_number,5); 124 125 if fixed(q -> statement.line_number,14) = ln 126 then if this_sn = sn 127 then if fixed(q -> statement.file_number,8) = fn 128 then do; 129 number = number + 1; 130 call display_statement(q,"1"b,tree_level+1); 131 end; 132 133 q = q -> statement.next; 134 end; 135 136 end; 137 138 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1503.9 show_statement.pl1 >dumps>old>recomp>show_statement.pl1 33 1 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 34 2 07/21/80 1546.3 statement.incl.pl1 >ldd>include>statement.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. any 000011 internal static bit(1) unaligned dcl 18 set ref 52* 57* 71 122 block based structure level 1 dcl 1-5 brother 2 based pointer level 2 packed unaligned dcl 1-5 ref 105 cv_dec_ 000016 constant entry external dcl 18 ref 53 61 62 65 66 67 display_statement 000020 constant entry external dcl 18 ref 130 file_number 0(09) based bit(8) level 3 packed unaligned dcl 2-3 ref 125 fixed builtin function dcl 30 ref 123 125 125 fn 000105 automatic fixed bin(6,0) dcl 18 set ref 46* 65* 125 index builtin function dcl 30 ref 48 58 ioa_ 000014 constant entry external dcl 18 ref 38 42 71 72 77 89 108 k 000100 automatic fixed bin(15,0) dcl 18 set ref 58* 59 66 66 67 67 line_number 0(17) based bit(14) level 3 packed unaligned dcl 2-3 ref 125 ln 000103 automatic fixed bin(15,0) dcl 18 set ref 53* 61* 66* 71* 72* 125 main 13 based pointer level 2 packed unaligned dcl 1-5 ref 95 n 000101 automatic fixed bin(15,0) dcl 18 set ref 48* 50 58 61 61 62 62 65 65 66 66 67 67 next 1 based pointer level 2 packed unaligned dcl 2-3 ref 133 null builtin function dcl 30 ref 36 87 103 120 number 000010 internal static fixed bin(31,0) dcl 18 set ref 74* 77 129* 129 p 000100 automatic pointer dcl 84 set ref 91* 93* 95* 97* pl1_stat_$root 000012 external static pointer dcl 18 ref 36 75 prologue 11 based pointer level 2 packed unaligned dcl 1-5 ref 91 pt parameter pointer dcl 115 in procedure "check_stm" ref 113 119 pt 000104 automatic pointer dcl 84 in procedure "show_stm" set ref 86* 87 89* 91 95 99 108* ptx parameter pointer unaligned dcl 81 ref 79 86 q 000114 automatic pointer dcl 115 in procedure "check_stm" set ref 119* 120 123 125 125 130* 133* 133 q 000102 automatic pointer dcl 84 in procedure "show_stm" set ref 99* 103 104 105* 105 sn 000104 automatic fixed bin(6,0) dcl 18 set ref 54* 62* 67* 72* 125 son 3 based pointer level 2 packed unaligned dcl 1-5 set ref 75* 99 source_id 0(09) based structure level 2 packed unaligned dcl 2-3 statement based structure level 1 dcl 2-3 statement_number 0(31) based bit(5) level 3 packed unaligned dcl 2-3 ref 123 string parameter char unaligned dcl 16 ref 11 41 48 53 58 61 61 62 62 65 65 66 66 67 67 substr builtin function dcl 30 ref 58 61 61 62 62 65 65 66 66 67 67 this_sn 000116 automatic fixed bin(9,0) dcl 115 set ref 122* 123* 125 tree_level parameter fixed bin(17,0) dcl 82 in procedure "show_stm" set ref 79 89* 93* 97* 104 108* tree_level parameter fixed bin(17,0) dcl 115 in procedure "check_stm" ref 113 130 tree_level 000102 automatic fixed bin(17,0) initial dcl 18 in procedure "show_statement" set ref 18* 75 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. max_block_number internal static fixed bin(17,0) initial dcl 1-74 p automatic pointer dcl 18 NAMES DECLARED BY EXPLICIT CONTEXT. check_stm 000742 constant entry internal dcl 113 ref 93 97 show_statement 000103 constant entry external dcl 11 show_stm 000564 constant entry internal dcl 79 ref 75 104 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1114 1136 1027 1124 Length 1346 1027 22 174 65 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME show_statement 114 external procedure is an external procedure. show_stm 112 internal procedure calls itself recursively. check_stm internal procedure shares stack frame of internal procedure show_stm. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 number show_statement 000011 any show_statement STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME show_statement 000100 k show_statement 000101 n show_statement 000102 tree_level show_statement 000103 ln show_statement 000104 sn show_statement 000105 fn show_statement show_stm 000100 p show_stm 000102 q show_stm 000104 pt show_stm 000114 q check_stm 000116 this_sn check_stm THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return shorten_stack ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_ display_statement ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pl1_stat_$root LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000100 18 000116 36 000117 38 000123 39 000141 41 000142 42 000151 43 000164 46 000165 48 000166 50 000177 52 000200 53 000202 54 000227 55 000231 57 000232 58 000233 59 000250 61 000251 62 000300 63 000332 65 000334 66 000363 67 000417 68 000456 71 000457 72 000502 74 000525 75 000527 77 000544 138 000562 79 000563 86 000571 87 000600 89 000604 91 000627 93 000632 95 000643 97 000646 99 000657 103 000662 104 000666 105 000705 106 000710 108 000711 110 000741 113 000742 119 000744 120 000747 122 000753 123 000760 125 000763 129 001001 130 001002 133 001022 134 001025 136 001026 ----------------------------------------------------------- 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