COMPILATION LISTING OF SEGMENT mrds_rst_tree_delete Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/18/85 1104.7 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 mrds_rst_tree_delete: procedure (key, rsc_ptr, root_ptr, data_ptr, success); 19 20 /* HISTORY: 21* 22* originally written by jim gray - - july 1978 23* 24**/ 25 26 /* DESCRIPTION: 27* threaded binary tree deletion routine 28* A search is made for the key in the tree 29* specified by the root pointer. 30* If the key is not found, 31* the deletion fails. 32* Otherwise the tree node area is unlinked 33* from the tree, and the space freed */ 34 35 /* PARAMETERS: 36* 37* key - - (input) word in tree indicating node to be deleted 38* 39* rsc_ptr - - (input) pointer to common working storage 40* 41* root_ptr - - (input/output) pointer to root node of desired tree, 42* may be changed if key is at root node 43* 44* data_ptr - - (output) pointer extracted from data field of deleted node 45* 46* success - - (output) bit value indicating deletion done(on), 47* or attempt to delete node not in tree(off) */ 48 49 /* basic algorithm 50* 51* simple case - delete node has no right subtree 52* make delete node's left subtree the new descendent of delete node's parent 53* 54* complex case - delete node has a right subtree 55* subcase 1 - delete node's successor is direct descendent 56* replace delete node with successor, giving it the 57* delete node's left subtree 58* subcase 2 - delete node's successor is not a direct descendent 59* same as subcase 1 but additionally 60* successor's parent get's successors right subtree as it's left subtree 61* and successor's right subtree becomes that of the delete node's */ 62 63 64 /* get pointer to node to be deleted and to it's parent */ 65 66 call mrds_rst_tree_search (key, root_ptr, node_ptr, parent_ptr, success); 67 68 /* if node to be deleted is not found, deletion fails */ 69 70 if ^success then ; 71 72 else do; 73 74 /* node found, save data pointer, and rearrange tree links to eliminate the node */ 75 76 data_ptr = node_ptr -> node.data; 77 thread = "0"b; 78 79 /* fix predecessor thread 80* 81* since we are replacing the delete node with it's successor(if it has one), 82* the delete node's predecessor must have its's right thread 83* point to this new node(the delete node's successor) */ 84 85 if node_ptr -> node.right.thread then ; 86 else call mrds_rst_tree_successor (root_ptr, node_ptr, successor_ptr, successor_parent_ptr, success); 87 if node_ptr -> node.left.thread then ; 88 else do; 89 call mrds_rst_tree_predecessor (root_ptr, node_ptr, predecessor_ptr, predecessor_parent_ptr, success); 90 if node_ptr -> node.right.thread then 91 predecessor_ptr -> node.right.link = node_ptr -> node.right.link; 92 else do; 93 predecessor_ptr -> node.right.link = successor_ptr; 94 end; 95 end; 96 97 /* if simple case of no inorder successor(right link a thread) 98* then use the left subtree of delete node as his parent's new descendent, 99* when the left link of the delete node is not a thread, 100* else a left thread means that the parent link will become a thread. 101* the left thread of the delete node may be used as this thread unless it points 102* to the parent, in which case the right thread must be used. */ 103 104 if node_ptr -> node.right.thread then 105 if ^node_ptr -> node.left.thread then 106 successor_ptr = node_ptr -> node.left.link; 107 else do; 108 thread = "1"b; 109 if parent_ptr ^= node_ptr -> node.left.link then 110 successor_ptr = node_ptr -> node.left.link; 111 else successor_ptr = node_ptr -> node.right.link; 112 end; 113 114 else do; 115 116 /* complex case - delete node has a successor 117* give the successor node a new left subtree(previously a thread) 118* that is the current delete node's left subtree 119* this is the first step in moving the successor node 120* into the delete node's place in the tree */ 121 122 successor_ptr -> node.left.link = node_ptr -> node.left.link; 123 successor_ptr -> node.left.thread = node_ptr -> node.left.thread; 124 125 /* for direct descendent successor, ignore right subtrees */ 126 127 if node_ptr = successor_parent_ptr then ; 128 else do; 129 130 /* for successor not a direct descendent, the successor's new right subtree 131* will be that of the delete node's. The successor's old right subtree becomes 132* the left subtree of the successor's old parent */ 133 134 /* fix successor's parent's threads for case of delete node's right link not a thread, 135* and successor is not direct descendent of delete node, 136* 137* successor node's right link a thread means that the successor node's 138* parent's left link must become a thread to the successor node since the successor node 139* is being made the predecessor of the successor node's parent. 140* also the successor's right thread must be changed to pointer 141* since it will link to delete node's right subtree(known to be nonempty). 142* 143* successor node's right link not a thread means that the successor's 144* parent node's left link will be a pointer set equal to the successor 145* node's right link. (the successor parent gets as his left, the successor's rught subtree) */ 146 147 if successor_ptr -> node.right.thread then do; 148 successor_parent_ptr -> node.left.thread = "1"b; 149 successor_ptr -> node.right.thread = "0"b; 150 end; 151 else successor_parent_ptr -> node.left.link = successor_ptr -> node.right.link; 152 successor_ptr -> node.right.link = node_ptr -> node.right.link; 153 154 end; 155 156 end; 157 158 /* for all cases, change parent of delete node to point to it's new successor. 159* determine which branch of delete node parent to change. 160* the link from the parent will be a thread only if 161* the delete node's links were both threads */ 162 163 if node_ptr = parent_ptr -> node.left.link then do; 164 parent_ptr -> node.left.link = successor_ptr; 165 parent_ptr -> node.left.thread = thread; 166 end; 167 168 else do; 169 parent_ptr -> node.right.link = successor_ptr; 170 parent_ptr -> node.right.thread = thread; 171 end; 172 173 174 /* release deleted nodes space */ 175 176 call mrds_rst_rsc_alloc$free (rsc_ptr, NODE, node_ptr); 177 success = "1"b; 178 179 end; 180 181 182 183 184 declare mrds_rst_tree_search entry (char (32) aligned, ptr, ptr, ptr, bit (1)); /* binary tree search */ 185 declare mrds_rst_rsc_alloc$free entry (ptr, fixed bin, ptr); /* working area manager */ 186 declare mrds_rst_tree_successor entry (ptr, ptr, ptr, ptr, bit (1)); 187 declare mrds_rst_tree_predecessor entry (ptr, ptr, ptr, ptr, bit (1)); 188 189 1 1 /* BEGIN INCLUDE FILE mrds_rst_tree.incl.pl1 jeg 7/19/78 */ 1 2 1 3 /* common declarations for threaded binary tree routines 1 4* 1 5* The tree maintains an inorder list of it's keys. 1 6* this means that for a given node, any key in it's left subtree 1 7* is "less" than the given node's key and that any key in it's 1 8* right subtree is "greater" than the given node's key. 1 9* 1 10* Threads are maintained to allow fast and easy traversal of the tree. 1 11* threads occupy the position of null pointers of an straight binary tree, 1 12* thus they only occur in leaf nodes. 1 13* left threads point to that nodes inorder predecessor. 1 14* right threads point to that nodes inorder successor. 1 15* 1 16* note: root_ptr must be passed by reference 1 17* ( not by value ) so it can be changed . 1 18* Also, each parameter must be a different 1 19* variable. The same variable used for two 1 20* or more arguments when any of the tree 1 21* routines are called will produce errors */ 1 22 1 23 1 24 declare key char (32) aligned ; /* data key directing search */ 1 25 1 26 declare root_ptr ptr ; /* pointer to head of desired list */ 1 27 declare node_ptr ptr ; /* pointer to key node, when success */ 1 28 declare parent_ptr ptr ; /* pointer to direct parent of current node */ 1 29 declare data_ptr ptr ; /* pointer from tree node to data structure headed by node */ 1 30 declare successor_ptr ptr ; /* pointer to inorder successor of current node in tree */ 1 31 declare successor_parent_ptr ptr ; /* pointer to immediate tree parent of inorder successor node */ 1 32 declare predecessor_ptr ptr ; /* pointer to inorder predecessor of current node */ 1 33 declare predecessor_parent_ptr ptr ; /* pointer to direct parent of predecessor */ 1 34 declare area_ptr ptr ; /* pointer to based area for node allocation/freeing */ 1 35 1 36 declare work_area area based (area_ptr) ; /* area of storage for tree */ 1 37 1 38 declare success bit (1) ; /* on if operation successful */ 1 39 declare thread bit (1) aligned ; /* current thread indicator, on = thread, off = pointer */ 1 40 1 41 declare 1 node based (node_ptr) aligned, /* tree element */ 1 42 2 data ptr, /* data field link */ 1 43 2 key char (32), /* data key */ 1 44 2 right, /* right branch link */ 1 45 3 thread bit (1), /* indicates whether link is thread or pointer */ 1 46 3 link ptr, /* pointer to right descendent or thread to successor */ 1 47 2 left, /* left branch link */ 1 48 3 thread bit (1), /* indicates whether link is thread or pointer */ 1 49 3 link ptr, /* pointer to left descendent or thread to predecessor */ 1 50 2 pad bit (34) ; /* reserved for future flags */ 1 51 1 52 /* END INCLUDE FILE mrds_rst_tree.incl.pl1 */ 1 53 1 54 1 55 1 56 190 2 1 /* BEGIN INCLUDE FILE mrds_rst_rsc.incl.pl1 RDL 7/7/78 */ 2 2 2 3 /* Modified 8/21/78 by RDL */ 2 4 2 5 /* Modified 9/11/78 by RDL to add directive and stmt pointers */ 2 6 2 7 /* Modified 11/4/78 by RDL to add debug,trace,meter switches 2 8* 2 9* Modified 3/29/79 by RDL to change s_seg_info_ptr to source_seg_ptr 2 10* 2 11* Modified by Jim Gray - - Jan. 1980, to add flags to disallow blocked files, forieng keys, and restructuring. 2 12* 2 13* Modified by Jim Gray - - Feb. 1980, to add command level flag for cmdb subroutine interface. 2 14* 2 15* Modified by Jim Gray - - 80-11-06, to add bit for cmdb -secure option. 2 16* 2 17* 81-05-18 Jim Gray : added bit for max_attributes error message, so that 2 18* it would only be issued on first occurence. 2 19* 2 20* 82-08-19 Davids: added the db_type field. 2 21* 2 22* 83-02-18 Mike Kubicar : Removed the db_type field and added the 2 23* db_relation_mode_flags substructure to define the modes applicable 2 24* to the database's relations. Also removed assorted unsed fields 2 25* (names that included the word unused). 2 26* 2 27**/ 2 28 2 29 dcl 1 rsc based (rsc_ptr), /* Restructuring control info */ 2 30 2 rsc_dir char (200), /* pathname of directory containing rsc segment */ 2 31 2 dbp char (168), /* Database absolute path */ 2 32 2 temp_dir char (168), /* Path name of temp restrucuring directory */ 2 33 2 temp_dir_sw bit (1) unal, /* On => temp dir has been created */ 2 34 2 db_quiesced_sw bit (1) unal, /* On => database has been quiesced */ 2 35 2 o_db_open_sw bit (1) unal, /* On => old database has been opened */ 2 36 2 n_db_open_sw bit (1) unal, /* On => temp database is open */ 2 37 2 listing_seg_sw bit (1) unal, /* On => listing segment has been created */ 2 38 2 skip_scanner_conversion bit (1) unal, /* Skip conversion in scanner */ 2 39 2 cmdb_option bit (1) unal, /* ON => this is a cmdb source, not restructuring */ 2 40 2 trace_sw bit (1) unal, /* On -> trace mode in affect */ 2 41 2 debug_sw bit (1) unal, /* On = debug mode (NOT IMPLEMENTED) */ 2 42 2 meter_sw bit (1) unal, /* On = procedures call metering procedure */ 2 43 2 delete_db_sw bit (1) unal, /* On = delete data base in cleanup */ 2 44 2 model_consistent_sw bit (1) unal, /* On => Model is consistent */ 2 45 2 physical_started_sw bit (1) unal, /* On => Physical restructuring started */ 2 46 2 physical_complete_sw bit (1) unal, /* On => Physical restructuring completed */ 2 47 2 model_overflow bit (1) unal, /* ON => model segment area condition occurred */ 2 48 2 max_files bit (1) unal, /* ON => maximum number of files reached */ 2 49 2 allow_foreign_keys bit (1) unal, /* on => allow foreign key statment */ 2 50 2 foreign_key_seen bit (1) unal, /* on => foreign key definition in source */ 2 51 2 allow_blocked_files bit (1) unal, /* on => allow file statement with blocked option */ 2 52 2 blocked_file_seen bit (1) unal, /* on => blocked file definition in source */ 2 53 2 allow_restructuring bit (1) unal, /* on => allow RMDB entry point */ 2 54 2 command_level bit (1) unal, /* on => called from command unal, not subroutine level */ 2 55 2 secure bit (1) unal, /* on => -secure option given for cmdb */ 2 56 2 max_attrs bit (1) unal, /* on => max attrs/rel or max indexes/rel exceeded */ 2 57 2 db_relation_mode_flags, 2 58 3 dm_file_type bit (1) unal, /* on => relations are dm files */ 2 59 3 protection_on bit (1) unal, /* on => relations need transactions */ 2 60 3 concurrency_on bit (1) unal, /* on => concurrency control enabled */ 2 61 3 rollback_on bit (1) unal, /* on => before journalling is enabled */ 2 62 2 severity_high fixed bin, /* Highest severity level error encountered */ 2 63 2 phase fixed bin, /* 000 = init 2 64* 100 = global list init 2 65* 200 = parse 2 66* 300 = physical init 2 67* 400 = physical */ 2 68 2 h_o_seg_info_ls_ptr ptr, /* Pointer to head of old db seg_info list */ 2 69 2 h_n_seg_info_ls_ptr ptr, /* Pointer to head of new db seg_info list */ 2 70 2 h_gfile_ptr ptr, /* Pointer to head of global file list */ 2 71 2 h_gdom_ptr ptr, /* Pointer to head of global domain list */ 2 72 2 h_gattr_ptr ptr, /* Pointer to head of global attribute list */ 2 73 2 h_grel_ptr ptr, /* Pointer to head of global relation list */ 2 74 2 h_glink_ptr ptr, /* Pointer to head of global link list */ 2 75 2 o_dm_ptr ptr, /* Pointer to old data model seg (dm_model ) */ 2 76 2 n_dm_ptr ptr, /* Pointer to temp data model seg */ 2 77 2 o_fn_hdr_ptr ptr, /* Pointer to head of original file list (fn structure) */ 2 78 2 source_seg_ptr ptr, /* Pointer to source_seg */ 2 79 2 listing_iocb_ptr ptr, /* Pointer to listing segment iocb */ 2 80 2 directive_ptr ptr, /* Pointer to directive type str in mrds_rst_semactics.incl.pl1 */ 2 81 2 stmt_ptr ptr, /* Pointer to statement str in mrds_rst_sematics.incl.pl1 */ 2 82 2 trace_metering_iocb_ptr ptr, /* Pointer to seg used by trace and metering */ 2 83 2 tree_node_area_ptr ptr, /* pointer to working storage for tree nodes */ 2 84 2 tree_data, 2 85 3 seg_info_area_ptr ptr, /* seg info working storage area */ 2 86 3 gl_area_ptr ptr, /* global list data work storage area */ 2 87 3 sl_area_ptr ptr, /* sublist data work storage area */ 2 88 2 parse_info_area_ptr ptr, /* parse interface work area storage */ 2 89 2 static_info_area_ptr ptr, /* directive, stmt and other static work storage area */ 2 90 2 variable_length_area_ptr ptr, /* varibale allocates work storage area */ 2 91 2 other_area_ptr ptr, /* unspecified work area storage */ 2 92 2 wa area (sys_info$max_seg_size - fixed (rel (addr (rsc.wa))) + 1); /* Work area */ 2 93 2 94 dcl rsc_ptr ptr; /* Pointer to base of rsc segment */ 2 95 2 96 2 97 2 98 /* END INCLUDE FILE mrds_rst_rsc.incl.pl1 */ 2 99 191 3 1 /* BEGIN INCLUDE FILE mrds_rst_struct_types.incl.pl1 - - Jim Gray 2/20/79 */ 3 2 3 3 /* these constants are used to identify structures to be allocated 3 4* to the general purpose allocation routines */ 3 5 3 6 /* HISTORY: 3 7* 82-06-28 Roger Lackey : Removed struct types 52, 53, 54, 55, 56, 57, 58 3 8* Type 25 is no longer used and is handled with special code so bounds of 3 9* array could continue to work */ 3 10 3 11 /* PARSE INFO STRUCTURES */ 3 12 3 13 declare DOMAIN fixed bin internal static options (constant) init (1) ; 3 14 declare ATTRIBUTE_DOMAIN fixed bin internal static options (constant) init (2) ; 3 15 declare RELATION fixed bin internal static options (constant) init (3) ; 3 16 declare ATTRIBUTE fixed bin internal static options (constant) init (4) ; 3 17 declare FILE fixed bin internal static options (constant) init (5) ; 3 18 declare ITEM fixed bin internal static options (constant) init (6) ; 3 19 declare LINK fixed bin internal static options (constant) init (7) ; 3 20 declare FOREIGN_KEY fixed bin internal static options (constant) init (8) ; 3 21 declare CHILDREN fixed bin internal static options (constant) init (9) ; 3 22 declare INDEX fixed bin internal static options (constant) init (10) ; 3 23 declare DELETE_NAME fixed bin internal static options (constant) init (11) ; 3 24 declare DOM_LIST fixed bin internal static options (constant) init (12) ; /* in link handler */ 3 25 3 26 /* SEMANTIC STRUCTURES */ 3 27 3 28 declare DIRECTIVE fixed bin internal static options (constant) init (13) ; 3 29 declare STMT fixed bin internal static options (constant) init (14) ; 3 30 3 31 3 32 /* PARSING STRUCTURES */ 3 33 3 34 declare LEX_STACK fixed bin internal static options (constant) init (15) ; 3 35 declare P_STRUCT fixed bin internal static options (constant) init (16) ; 3 36 declare CUR_LEX_TOP fixed bin internal static options (constant) init (17) ; 3 37 declare FIXUP_TOKEN fixed bin internal static options (constant) init (50) ; /* scanner */ 3 38 declare STRING_SOURCE fixed bin internal static options (constant) init (51) ; /* semantics */ 3 39 declare TOKEN fixed bin internal static options (constant) init (18) ; 3 40 declare OUTPUT_TEXT fixed bin internal static options (constant) init (19) ; 3 41 3 42 3 43 /* DB_MODEL STRUCTURES */ 3 44 3 45 declare DB_MODEL fixed bin internal static options (constant) init (0) ; 3 46 declare FILE_INFO fixed bin internal static options (constant) init (1) ; 3 47 declare DOMAIN_INFO fixed bin internal static options (constant) init (2) ; 3 48 declare PATH_ENTRY fixed bin internal static options (constant) init (3) ; 3 49 declare STACK_ITEM fixed bin internal static options (constant) init (4) ; 3 50 declare CONSTANT fixed bin internal static options (constant) init (30) ; 3 51 declare VERSION_STATUS fixed bin internal static options (constant) init (5) ; 3 52 declare CHANGER fixed bin internal static options (constant) init (6) ; 3 53 3 54 3 55 /* FILE_MODEL STRUCTURES */ 3 56 3 57 declare FILE_MODEL fixed bin internal static options (constant) init (7) ; 3 58 declare REL_INFO fixed bin internal static options (constant) init (8) ; 3 59 declare ATTR_INFO fixed bin internal static options (constant) init (9) ; 3 60 declare PARENT_LINK_INFO fixed bin internal static options (constant) init (10) ; 3 61 declare CHILD_LINK_INFO fixed bin internal static options (constant) init (11) ; 3 62 declare ATTR_LIST fixed bin internal static options (constant) init (12) ; 3 63 declare ATD fixed bin internal static options (constant) init (31) ; 3 64 declare COMP_NO_ARRAY fixed bin internal static options (constant) init (32) ; 3 65 declare SORT_KEY fixed bin internal static options (constant) init (13) ; 3 66 declare DUP_PREV fixed bin internal static options (constant) init (14) ; 3 67 declare SELECT_CHAIN fixed bin internal static options (constant) init (15) ; 3 68 3 69 3 70 /* GLOBAL LIST STRUCTURES */ 3 71 3 72 declare GL fixed bin internal static options (constant) init (20) ; 3 73 declare SL fixed bin internal static options (constant) init (21) ; 3 74 declare SEGINFO fixed bin internal static options (constant) init (22) ; 3 75 declare LIST_OVRLY fixed bin internal static options (constant) init (26) ; 3 76 declare SAVED_CHILD_COUNT fixed bin internal static options (constant) init (24) ; /* in global list build */ 3 77 declare NODE fixed bin internal static options (constant) init (23) ; 3 78 3 79 3 80 /* DISPLAY STRUCTURES */ 3 81 3 82 declare DISPLAY_INFO fixed bin internal static options (constant) init (25) ; 3 83 3 84 /* Remove because nolonger used 82-06-28 3 85* NAME_LIST fixed bin internal static options (constant) init (52) ; 3 86* PAI_ARRAY fixed bin internal static options (constant) init (53) ; 3 87* PAR_LK_ATTR_INFO fixed bin internal static options (constant) init (54) ; 3 88* CAI_ARRAY fixed bin internal static options (constant) init (55) ; 3 89* CHILD_LK_ATTR_INFO fixed bin internal static options (constant) init (56) ; 3 90* NAME_TABLE fixed bin internal static options (constant) init (57) ; 3 91* ATTR_TABLE fixed bin internal static options (constant) init (58) ; 3 92**/ 3 93 3 94 /* END INCULDE FILE mrds_rst_struct_types */ 3 95 192 193 194 195 196 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/85 0909.3 mrds_rst_tree_delete.pl1 >special_ldd>online>mrds.pbf-04/18/85>mrds_rst_tree_delete.pl1 190 1 10/14/83 1608.6 mrds_rst_tree.incl.pl1 >ldd>include>mrds_rst_tree.incl.pl1 191 2 10/14/83 1609.1 mrds_rst_rsc.incl.pl1 >ldd>include>mrds_rst_rsc.incl.pl1 192 3 10/14/83 1609.0 mrds_rst_struct_types.incl.pl1 >ldd>include>mrds_rst_struct_types.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. NODE 000000 constant fixed bin(17,0) initial dcl 3-77 set ref 176* data based pointer level 2 dcl 1-41 ref 76 data_ptr parameter pointer dcl 1-29 set ref 18 76* key parameter char(32) dcl 1-24 set ref 18 66* left 16 based structure level 2 dcl 1-41 link 20 based pointer level 3 in structure "node" dcl 1-41 in procedure "mrds_rst_tree_delete" set ref 104 109 109 122* 122 151* 163 164* link 14 based pointer level 3 in structure "node" dcl 1-41 in procedure "mrds_rst_tree_delete" set ref 90* 90 93* 111 151 152* 152 169* mrds_rst_rsc_alloc$free 000012 constant entry external dcl 185 ref 176 mrds_rst_tree_predecessor 000016 constant entry external dcl 187 ref 89 mrds_rst_tree_search 000010 constant entry external dcl 184 ref 66 mrds_rst_tree_successor 000014 constant entry external dcl 186 ref 86 node based structure level 1 dcl 1-41 node_ptr 000100 automatic pointer dcl 1-27 set ref 66* 76 85 86* 87 89* 90 90 104 104 104 109 109 111 122 123 127 152 163 176* parent_ptr 000102 automatic pointer dcl 1-28 set ref 66* 109 163 164 165 169 170 predecessor_parent_ptr 000112 automatic pointer dcl 1-33 set ref 89* predecessor_ptr 000110 automatic pointer dcl 1-32 set ref 89* 90 93 right 12 based structure level 2 dcl 1-41 root_ptr parameter pointer dcl 1-26 set ref 18 66* 86* 89* rsc_ptr parameter pointer dcl 2-94 set ref 18 176* success parameter bit(1) unaligned dcl 1-38 set ref 18 66* 70 86* 89* 177* successor_parent_ptr 000106 automatic pointer dcl 1-31 set ref 86* 127 148 151 successor_ptr 000104 automatic pointer dcl 1-30 set ref 86* 93 104* 109* 111* 122 123 147 149 151 152 164 169 thread 16 based bit(1) level 3 in structure "node" dcl 1-41 in procedure "mrds_rst_tree_delete" set ref 87 104 123* 123 148* 165* thread 12 based bit(1) level 3 in structure "node" dcl 1-41 in procedure "mrds_rst_tree_delete" set ref 85 90 104 147 149* 170* thread 000114 automatic bit(1) dcl 1-39 in procedure "mrds_rst_tree_delete" set ref 77* 108* 165 170 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ATD internal static fixed bin(17,0) initial dcl 3-63 ATTRIBUTE internal static fixed bin(17,0) initial dcl 3-16 ATTRIBUTE_DOMAIN internal static fixed bin(17,0) initial dcl 3-14 ATTR_INFO internal static fixed bin(17,0) initial dcl 3-59 ATTR_LIST internal static fixed bin(17,0) initial dcl 3-62 CHANGER internal static fixed bin(17,0) initial dcl 3-52 CHILDREN internal static fixed bin(17,0) initial dcl 3-21 CHILD_LINK_INFO internal static fixed bin(17,0) initial dcl 3-61 COMP_NO_ARRAY internal static fixed bin(17,0) initial dcl 3-64 CONSTANT internal static fixed bin(17,0) initial dcl 3-50 CUR_LEX_TOP internal static fixed bin(17,0) initial dcl 3-36 DB_MODEL internal static fixed bin(17,0) initial dcl 3-45 DELETE_NAME internal static fixed bin(17,0) initial dcl 3-23 DIRECTIVE internal static fixed bin(17,0) initial dcl 3-28 DISPLAY_INFO internal static fixed bin(17,0) initial dcl 3-82 DOMAIN internal static fixed bin(17,0) initial dcl 3-13 DOMAIN_INFO internal static fixed bin(17,0) initial dcl 3-47 DOM_LIST internal static fixed bin(17,0) initial dcl 3-24 DUP_PREV internal static fixed bin(17,0) initial dcl 3-66 FILE internal static fixed bin(17,0) initial dcl 3-17 FILE_INFO internal static fixed bin(17,0) initial dcl 3-46 FILE_MODEL internal static fixed bin(17,0) initial dcl 3-57 FIXUP_TOKEN internal static fixed bin(17,0) initial dcl 3-37 FOREIGN_KEY internal static fixed bin(17,0) initial dcl 3-20 GL internal static fixed bin(17,0) initial dcl 3-72 INDEX internal static fixed bin(17,0) initial dcl 3-22 ITEM internal static fixed bin(17,0) initial dcl 3-18 LEX_STACK internal static fixed bin(17,0) initial dcl 3-34 LINK internal static fixed bin(17,0) initial dcl 3-19 LIST_OVRLY internal static fixed bin(17,0) initial dcl 3-75 OUTPUT_TEXT internal static fixed bin(17,0) initial dcl 3-40 PARENT_LINK_INFO internal static fixed bin(17,0) initial dcl 3-60 PATH_ENTRY internal static fixed bin(17,0) initial dcl 3-48 P_STRUCT internal static fixed bin(17,0) initial dcl 3-35 RELATION internal static fixed bin(17,0) initial dcl 3-15 REL_INFO internal static fixed bin(17,0) initial dcl 3-58 SAVED_CHILD_COUNT internal static fixed bin(17,0) initial dcl 3-76 SEGINFO internal static fixed bin(17,0) initial dcl 3-74 SELECT_CHAIN internal static fixed bin(17,0) initial dcl 3-67 SL internal static fixed bin(17,0) initial dcl 3-73 SORT_KEY internal static fixed bin(17,0) initial dcl 3-65 STACK_ITEM internal static fixed bin(17,0) initial dcl 3-49 STMT internal static fixed bin(17,0) initial dcl 3-29 STRING_SOURCE internal static fixed bin(17,0) initial dcl 3-38 TOKEN internal static fixed bin(17,0) initial dcl 3-39 VERSION_STATUS internal static fixed bin(17,0) initial dcl 3-51 area_ptr automatic pointer dcl 1-34 rsc based structure level 1 unaligned dcl 2-29 work_area based area(1024) dcl 1-36 NAME DECLARED BY EXPLICIT CONTEXT. mrds_rst_tree_delete 000011 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 340 360 242 350 Length 610 242 20 214 75 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_rst_tree_delete 90 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_rst_tree_delete 000100 node_ptr mrds_rst_tree_delete 000102 parent_ptr mrds_rst_tree_delete 000104 successor_ptr mrds_rst_tree_delete 000106 successor_parent_ptr mrds_rst_tree_delete 000110 predecessor_ptr mrds_rst_tree_delete 000112 predecessor_parent_ptr mrds_rst_tree_delete 000114 thread mrds_rst_tree_delete THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mrds_rst_rsc_alloc$free mrds_rst_tree_predecessor mrds_rst_tree_search mrds_rst_tree_successor NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000004 66 000016 70 000035 76 000044 77 000047 85 000050 86 000054 87 000073 89 000077 90 000117 93 000126 104 000131 108 000140 109 000142 111 000151 112 000153 122 000154 123 000157 127 000161 147 000166 148 000170 149 000173 150 000174 151 000175 152 000200 163 000202 164 000207 165 000211 166 000213 169 000214 170 000216 176 000220 177 000234 196 000241 ----------------------------------------------------------- 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