COMPILATION LISTING OF SEGMENT display_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 1624.6 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_statement: procedure(p,sourceb,tree_level); 12 13 /* Modified on: 22 September 1970 by PG. */ 14 /* Modified on: 7 January 1971 by BLW */ 15 /* Modified on: 24 May 1971 by ACF */ 16 /* Modified on: 25 July 1971 by PG */ 17 /* Modified on: 6 June 1977 by RAB */ 18 /* Modified on: 29 Nov 1979 by PCK to print a tree level indented listing */ 19 /* Modified on: 17 Mar 1980 by PCK to display expanded_by_name */ 20 21 dcl (p, q) ptr, 22 tree_level fixed bin, 23 sourceb bit(1) aligned, 24 cu_$arg_count entry returns(fixed bin), 25 display_any_node_name ext entry(char(*) aligned, ptr,fixed bin), 26 (ioa_,ioa_$nnl) ext entry options(variable), display_exp ext entry(ptr,fixed bin), 27 decode_node_id entry(ptr,bit(1) aligned) returns(char(120) varying), 28 ios_$write_ptr entry(ptr,fixed bin,fixed bin), 29 (addr,fixed,length,min,null,ptr) builtin, 30 n fixed bin(15); 31 32 dcl itype fixed bin(15), 33 line char(132) aligned varying, 34 st(0:38) char(12) int static options(constant) 35 init("unknown", "allocate", "assignment", "begin", "call", "close", 36 "declare", "delay", "delete", "display", "do", "else clause", 37 "end", "entry", "exit", "format", "free", "get", "go to", "if", 38 "locate", "null", "on", "open", "procedure", "put", "read", 39 "return", "revert", "rewrite", "signal", "stop", 40 "system", "unlock", "wait", "write", "default","continue","pause"); 41 1 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 1 2 1 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 1 4 1 5 1 6 dcl 1 list based aligned, 1 7 2 node_type bit(9) unaligned, 1 8 2 reserved bit(12) unaligned, 1 9 2 number fixed(14) unaligned, 1 10 2 element dimension(n refer(list.number)) ptr unaligned; 1 11 1 12 dcl max_list_elements fixed bin(17) internal static options (constant) 1 13 init(16383); 1 14 1 15 /* END INCLUDE FILE ... list.incl.pl1 */ 42 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 */ 43 3 1 dcl m fixed bin(15); 3 2 dcl pl1_stat_$source_seg fixed bin(8) ext static; 3 3 dcl pl1_stat_$last_source fixed bin(15) ext static; 3 4 dcl pl1_stat_$source_list_ptr ptr ext static; 3 5 dcl source_list(0:source_list_length) ptr based(pl1_stat_$source_list_ptr); 3 6 dcl source_list_length fixed bin(15) internal static initial(255) options(constant); 3 7 3 8 dcl 1 source based(source_list(m)) aligned, 3 9 2 node_type unal bit(9), 3 10 2 source_id unal structure, 3 11 3 file_number bit(8), 3 12 3 line_number bit(14), 3 13 3 statement_number bit(5), 3 14 2 standard_object_info aligned structure, 3 15 3 uid bit(36), 3 16 3 dtm fixed bin(71), 3 17 2 seg_ptr unal ptr, 3 18 2 name unal ptr, 3 19 2 source_length unal fixed bin(24), 3 20 2 pathlen unal fixed bin(10), 3 21 2 pathname char(n refer(source.pathlen)); 44 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 */ 45 5 1 dcl pl1_stat_$token_list_ptr ptr external static; /* pointer to token list */ 5 2 dcl token_list(token_list_length) ptr based(token_list_pointer); 5 3 dcl token_list_pointer ptr initial(pl1_stat_$token_list_ptr); /* for efficiency only */ 5 4 dcl token_list_length fixed(15) internal static initial(3000) options(constant); 5 5 5 6 dcl 1 pl1_stat_$statement_id external static, 5 7 2 file_number bit(8), 5 8 2 line_number bit(14), 5 9 2 statement_number bit(5); 5 10 5 11 dcl 1 t_table based(token_list(k)) aligned, 5 12 2 node_type bit(9) unaligned, 5 13 2 type bit(9) unaligned, 5 14 2 loc bit(18) unaligned, 5 15 2 declaration ptr unaligned, 5 16 2 next ptr unaligned, 5 17 2 size fixed(9), 5 18 2 string char(n refer(t_table.size)); 46 47 48 begin: 49 if p=null 50 then do; 51 call ioa_("^/^vxdisplay_statement: ptr is NULL^/",tree_level); 52 return; 53 end; 54 if p->node.type^=statement_node 55 then do; 56 call display_any_node_name("display_statement: arg is not a statement node, 57 arg =",p,tree_level+1); 58 return; 59 end; 60 itype=fixed(p->statement.statement_type,17,0); 61 if itype > hbound(st,1) then itype = 0; 62 call ioa_("^/^vx^a STATEMENT ^p, next = ^p, back = ^p",tree_level,st(itype),p,p->statement.next, 63 p->statement.back); 64 call ioa_("^vx^a",tree_level,decode_node_id(p,"0"b)); 65 66 if cu_$arg_count() > 1 67 then if sourceb 68 then do; 69 m = p->statement.source.segment; 70 if p->statement.source.length ^= 0 71 then do; 72 call ioa_$nnl("^vxSOURCE: ",tree_level); 73 call ios_$write_ptr((source.seg_ptr),(p->statement. 74 source.start),min(p->statement.source.length,120)); 75 call ioa_(""); 76 end; 77 end; 78 m = p -> object.start; 79 if m ^= 0 80 then if m = p->object.finish then call ioa_("^vxno object code, ic = ^o",tree_level,m); 81 else call ioa_("^vxobject code start = ^o, finish = ^o",tree_level,m,p->object.finish); 82 83 if p->statement.prefix ^= "111110000000"b then call ioa_("^vxprefix = o^4o",tree_level, 84 fixed(p->statement.prefix,12,0)); 85 line = ""; 86 if p->statement.optimized then line = "optimized "; 87 if p->statement.generated then line = line || "generated "; 88 if p->statement.free_temps then line = line || "free_temps "; 89 if p->statement.LHS_in_RHS then line = line || "LHS_in_RHS "; 90 if p->statement.processed then line = line || "processed "; 91 if p->statement.put_in_profile then line = line || "put_in_profile "; 92 if p->statement.snap then line = line || "snap "; 93 if p->statement.system then line = line || "system "; 94 if p->statement.irreducible then line = line || "irreducible "; 95 if p->statement.checked then line = line || "checked "; 96 if p->statement.save_temps then line = line || "save_temps "; 97 if p->statement.suppress_warnings then line = line || "suppress_warnings "; 98 if p->statement.force_nonquick then line = line || "force_nonquick "; 99 if p->statement.expanded_by_name then line = line || "expanded_by_name "; 100 if length(line) ^= 0 then call ioa_("^vx^a",tree_level,line); 101 m=p->statement.reference_count; 102 if m ^= 0 103 then call ioa_("^vxreference count = ^d",tree_level,m); 104 q=p->statement.reference_list; 105 if q ^= null then call ioa_("^vxreference list = ^p",tree_level,q); 106 q = p -> statement.state_list; 107 if q ^= null then call ioa_("^vxstate list = ^p",tree_level,q); 108 q=p->statement.labels; 109 if q ^= null 110 then do; 111 call ioa_("^vxlabels:",tree_level); 112 do while(q^=null); 113 if q->list.element(2)->node.type=token_node 114 then call ioa_(q->list.element(2)->t_table.string); 115 else call display_exp((q->list.element(2)),tree_level+1); /* for arrays */ 116 q=q->list.element(1); 117 end; 118 end; 119 q=p->statement.root; 120 if q ^= null 121 then do; 122 call ioa_("^vxroot:",tree_level); 123 call display_exp(q,tree_level+1); 124 end; 125 call ioa_("^vxEND ^a STATEMENT ^p^/",tree_level,st(itype),p); 126 return; 127 end display_statement; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1503.3 display_statement.pl1 >dumps>old>recomp>display_statement.pl1 42 1 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 43 2 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 44 3 05/03/76 1320.4 source_list.incl.pl1 >ldd>include>source_list.incl.pl1 45 4 07/21/80 1546.3 statement.incl.pl1 >ldd>include>statement.incl.pl1 46 5 09/14/77 1705.7 token_list.incl.pl1 >ldd>include>token_list.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. LHS_in_RHS 12(26) based bit(1) level 2 packed unaligned dcl 4-3 ref 89 back 2 based pointer level 2 packed unaligned dcl 4-3 set ref 62* bits 13 based structure level 2 packed unaligned dcl 4-3 checked 13(06) based bit(1) level 3 packed unaligned dcl 4-3 ref 95 cu_$arg_count 000010 constant entry external dcl 21 ref 66 decode_node_id 000022 constant entry external dcl 21 ref 64 display_any_node_name 000012 constant entry external dcl 21 ref 56 display_exp 000020 constant entry external dcl 21 ref 115 123 element 1 based pointer array level 2 packed unaligned dcl 1-6 ref 113 113 115 116 expanded_by_name 13(10) based bit(1) level 3 packed unaligned dcl 4-3 ref 99 finish 10(18) based fixed bin(17,0) level 3 packed unaligned dcl 4-3 set ref 79 81* fixed builtin function dcl 21 ref 60 83 83 force_nonquick 13(09) based bit(1) level 3 packed unaligned dcl 4-3 ref 98 free_temps 12(25) based bit(1) level 2 packed unaligned dcl 4-3 ref 88 generated 13(02) based bit(1) level 3 packed unaligned dcl 4-3 ref 87 ioa_ 000014 constant entry external dcl 21 ref 51 62 64 75 79 81 83 100 102 105 107 111 113 122 125 ioa_$nnl 000016 constant entry external dcl 21 ref 72 ios_$write_ptr 000024 constant entry external dcl 21 ref 73 irreducible 13(05) based bit(1) level 3 packed unaligned dcl 4-3 ref 94 itype 000102 automatic fixed bin(15,0) dcl 32 set ref 60* 61 61* 62 125 labels 4 based pointer level 2 packed unaligned dcl 4-3 ref 108 length 12 based fixed bin(11,0) level 3 in structure "statement" packed unaligned dcl 4-3 in procedure "display_statement" ref 70 73 73 length builtin function dcl 21 in procedure "display_statement" ref 100 line 000103 automatic varying char(132) dcl 32 set ref 85* 86* 87* 87 88* 88 89* 89 90* 90 91* 91 92* 92 93* 93 94* 94 95* 95 96* 96 97* 97 98* 98 99* 99 100 100* list based structure level 1 dcl 1-6 m 000145 automatic fixed bin(15,0) dcl 3-1 set ref 69* 73 78* 79 79 79* 81* 101* 102 102* min builtin function dcl 21 ref 73 73 next 1 based pointer level 2 packed unaligned dcl 4-3 set ref 62* node based structure level 1 dcl 2-27 null builtin function dcl 21 ref 48 105 107 109 112 120 object 10 based structure level 2 packed unaligned dcl 4-3 optimized 12(24) based bit(1) level 2 packed unaligned dcl 4-3 ref 86 p parameter pointer dcl 21 set ref 11 48 54 56* 60 62* 62 62 64* 69 70 73 73 73 78 79 81 83 83 83 86 87 88 89 90 91 92 93 94 95 96 97 98 99 101 104 106 108 119 125* pl1_stat_$source_list_ptr 000026 external static pointer dcl 3-4 ref 73 pl1_stat_$token_list_ptr 000030 external static pointer dcl 5-1 ref 5-3 prefix 12(12) based bit(12) level 2 packed unaligned dcl 4-3 ref 83 83 83 processed 13 based bit(1) level 3 packed unaligned dcl 4-3 ref 90 put_in_profile 13(01) based bit(1) level 3 packed unaligned dcl 4-3 ref 91 q 000100 automatic pointer dcl 21 set ref 104* 105 105* 106* 107 107* 108* 109 112 113 113 115 116* 116 119* 120 123* reference_count 7 based fixed bin(17,0) level 2 packed unaligned dcl 4-3 ref 101 reference_list 5 based pointer level 2 packed unaligned dcl 4-3 ref 104 root 3 based pointer level 2 packed unaligned dcl 4-3 ref 119 save_temps 13(07) based bit(1) level 3 packed unaligned dcl 4-3 ref 96 seg_ptr 6 based pointer level 2 packed unaligned dcl 3-8 ref 73 segment 11 based fixed bin(11,0) level 3 packed unaligned dcl 4-3 ref 69 size 3 based fixed bin(9,0) level 2 dcl 5-11 ref 113 113 snap 13(03) based bit(1) level 3 packed unaligned dcl 4-3 ref 92 source 11 based structure level 2 in structure "statement" packed unaligned dcl 4-3 in procedure "display_statement" source based structure level 1 dcl 3-8 in procedure "display_statement" source_list based pointer array dcl 3-5 ref 73 sourceb parameter bit(1) dcl 21 ref 11 66 st 000000 constant char(12) initial array unaligned dcl 32 set ref 61 62* 125* start 11(12) based fixed bin(23,0) level 3 in structure "statement" packed unaligned dcl 4-3 in procedure "display_statement" ref 73 start 10 based fixed bin(17,0) level 3 in structure "statement" packed unaligned dcl 4-3 in procedure "display_statement" ref 78 state_list 6 based pointer level 2 packed unaligned dcl 4-3 ref 106 statement based structure level 1 dcl 4-3 statement_node constant bit(9) initial dcl 2-5 ref 54 statement_type 12(27) based bit(9) level 2 packed unaligned dcl 4-3 ref 60 string 4 based char level 2 dcl 5-11 set ref 113* suppress_warnings 13(08) based bit(1) level 3 packed unaligned dcl 4-3 ref 97 system 13(04) based bit(1) level 3 packed unaligned dcl 4-3 ref 93 t_table based structure level 1 dcl 5-11 token_list_pointer 000146 automatic pointer initial dcl 5-3 set ref 5-3* token_node constant bit(9) initial dcl 2-5 ref 113 tree_level parameter fixed bin(17,0) dcl 21 set ref 11 51* 56 62* 64* 72* 79* 81* 83* 100* 102* 105* 107* 111* 115 122* 123 125* type based bit(9) level 2 packed unaligned dcl 2-27 ref 54 113 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 21 array_node internal static bit(9) initial dcl 2-5 block_node internal static bit(9) initial dcl 2-5 bound_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 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 max_list_elements internal static fixed bin(17,0) initial dcl 1-12 n automatic fixed bin(15,0) dcl 21 operator_node internal static bit(9) initial dcl 2-5 pl1_stat_$last_source external static fixed bin(15,0) dcl 3-3 pl1_stat_$source_seg external static fixed bin(8,0) dcl 3-2 pl1_stat_$statement_id external static structure level 1 packed unaligned dcl 5-6 ptr builtin function dcl 21 reference_node internal static bit(9) initial dcl 2-5 sf_par_node internal static bit(9) initial dcl 2-5 source_list_length internal static fixed bin(15,0) initial dcl 3-6 source_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_list based pointer array dcl 5-2 token_list_length internal static fixed bin(15,0) initial dcl 5-4 NAMES DECLARED BY EXPLICIT CONTEXT. begin 000442 constant label dcl 48 display_statement 000432 constant entry external dcl 11 NAME DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 61 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2116 2150 1770 2126 Length 2436 1770 32 251 125 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_statement 213 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_statement 000100 q display_statement 000102 itype display_statement 000103 line display_statement 000145 m display_statement 000146 token_list_pointer display_statement 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. cu_$arg_count decode_node_id display_any_node_name display_exp ioa_ ioa_$nnl ios_$write_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pl1_stat_$source_list_ptr pl1_stat_$token_list_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000426 5 3 000437 48 000442 51 000447 52 000466 54 000467 56 000474 58 000522 60 000523 61 000527 62 000532 64 000572 66 000634 69 000652 70 000657 72 000662 73 000703 75 000742 78 000753 79 000761 81 001014 83 001046 85 001111 86 001112 87 001125 88 001142 89 001157 90 001174 91 001211 92 001226 93 001243 94 001260 95 001275 96 001312 97 001327 98 001344 99 001361 100 001376 101 001423 102 001431 104 001461 105 001466 106 001521 107 001526 108 001556 109 001563 111 001567 112 001610 113 001614 115 001640 116 001660 117 001663 119 001664 120 001671 122 001675 123 001714 125 001731 126 001767 ----------------------------------------------------------- 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