COMPILATION LISTING OF SEGMENT dfast_merge_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/19/88 1502.6 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-12-03,TLNguyen), approve(87-12-03,MCR7806), 12* audit(87-12-10,Lippard), install(88-01-19,MR12.2-1015): 13* - Declare "table_ptr pointer" as a result of changing the include file 14* named dfast_line_table.incl.pl1. See that include file for more 15* details. 16* - Remove alter_ptr, dfast_err_, new_line, and white_space from the source 17* since they are not referenced anywhere within the source. 18* - Declare "addr" and "ptr" as builtin type since they are referenced, 19* but they are not defined anywhere with the source. 20* END HISTORY COMMENTS */ 21 22 23 dfast_merge_: proc (force_sort, arg_edit_info_ptr, code); 24 25 /* This procedure merges the current and alter segments. An ordered segment follows these conventions: 26* * 27* * 28* * 1. All lines begin with a positive number. 29* * 2. All lines end with the new_line character. 30* * 3. There is only one line for a given number. 31* * 4. Lines are stored with line numbers in accending order. 32* * 33* * There are two ways to call the procedure: 34* * 35* * 1. Convert the segment to ordered form (convert = "1"b). A code of zero is returned in 36* * all cases, since the procedure forces an ordered segment. 37* * 38* * a. Illegal lines (lines that do not begin with a positive number or don't end with a new_line 39* * character) are deleted. 40* * 41* * b. In the case of lines with the same line number, the line furthest from the beginning of the 42* * segment is kept. The other lines with that number are deleted. 43* * 44* * c. Lines are sorted so that their line numbers are in accending order. 45* * 46* * 2. Do not convert the segment to ordered form (convert = "0"b). If the segment 47* * is not ordered, an error message is printed giving the line that caused the error and an 48* * error code is returned. The segment is not changed. 49* * 50* * code = 0 The segment is ordered. 51* * = error_bad_sort At least one line is out of order. 52* * = error_no_nl The segment does not end in a new_line. 53* * = error_bad_line An illegal number (negative or too large) was found on the line. 54* * = error_no_num A line without a number was found. 55* * 56* * 57* * The scratch buffers used: 58* * 59* * alter_ptr ptr to the alter segment 60* * temp_ptr ptr to the new current segment 61* * cur_table_ptr ptr to the table of line information for the current segment 62* * alt_table_ptr ptr to the table of line information for the alter segment 63* * 64**/ 65 /* parameters */ 66 67 dcl force_sort bit (1) unal; 68 dcl arg_edit_info_ptr ptr; 69 dcl code fixed bin (35); 70 dcl clean_up condition; 71 dcl edit_info_ptr ptr; 72 dcl dfast_get_table_ entry (bit (1) unal, ptr, fixed bin (21), ptr, fixed bin (35)); 73 dcl free_table_buffers bit (1) unal; /* ON if should free; OFF if buffers in alter segment */ 74 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 75 dcl i fixed bin (35); 76 dcl one_ptr (1) ptr based; /* overlay to use get_temp_segments_ */ 77 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 78 dcl save_ptr ptr; 79 dcl table_ptr ptr; 80 dcl string char (f.max_seg_size) based; 81 dcl three_ptr (3) ptr based; /* overlay to use get_temp_segments_ */ 82 dcl temp char (f.max_seg_size) based (temp_ptr); 83 dcl temp_length fixed bin (21); 84 dcl (cur_index, alt_index) fixed bin (21); 85 86 dcl 1 pointers aligned, /* A structure is used for get_temp_segments_ convience */ 87 2 temp_ptr ptr, 88 2 alt_table_ptr ptr, 89 2 cur_table_ptr ptr; 90 91 1 1 /* BEGIN INCLUDE ... dfast_error_codes.incl.pl1 */ 1 2 1 3 dcl error_alt_empty fixed bin (35) int static init (1)options (constant); 1 4 dcl error_max_size fixed bin (35) int static init (2)options (constant); 1 5 dcl error_cur_empty fixed bin (35) int static init (3)options (constant); 1 6 dcl error_not_saved fixed bin (35) int static init (4)options (constant); 1 7 dcl error_name_dup fixed bin (35) int static init (5)options (constant); 1 8 dcl error_long_rec fixed bin (35) int static init (6)options (constant); 1 9 dcl error_unknown_arg fixed bin (35) int static init (7)options (constant); 1 10 dcl error_no_expl fixed bin (35) int static init (8)options (constant); 1 11 dcl error_bad_name fixed bin (35) int static init (9)options (constant); 1 12 dcl error_bad_req fixed bin (35) int static init (10)options (constant); 1 13 dcl error_syntax_string fixed bin (35) int static init (11)options (constant); 1 14 dcl error_name_miss fixed bin (35) int static init (12)options (constant); 1 15 dcl error_no_comp fixed bin (35) int static init (13)options (constant); 1 16 dcl error_no_main fixed bin (35) int static init (14)options (constant); 1 17 dcl error_block_spec fixed bin (35) int static init (15)options (constant); 1 18 dcl error_obj_nop fixed bin (35) int static init (16)options (constant); 1 19 dcl error_sav_cur fixed bin (35) int static init (17)options (constant); 1 20 dcl error_bad_type fixed bin (35) int static init (18)options (constant); 1 21 dcl error_unkn_sys fixed bin (35) int static init (19)options (constant); 1 22 dcl error_no_suffix fixed bin (35) int static init (20)options (constant); 1 23 dcl error_no_nl fixed bin (35) int static init (21)options (constant); 1 24 dcl error_bad_sort fixed bin (35) int static init (22)options (constant); 1 25 dcl error_no_num fixed bin (35) int static init (23)options (constant); 1 26 dcl error_line_miss fixed bin (35) int static init (24)options (constant); 1 27 dcl error_request_miss fixed bin (35) int static init (25)options (constant); 1 28 dcl error_bad_line fixed bin (35) int static init (26)options (constant); 1 29 dcl error_no_string fixed bin (35) int static init (27)options (constant); 1 30 dcl error_line_order fixed bin (35) int static init (28)options (constant); 1 31 dcl error_max_lines fixed bin (35) int static init (29)options (constant); 1 32 dcl error_bad_pathname fixed bin (35) int static init (30)options (constant); 1 33 dcl error_access_mode fixed bin (35) int static init (31)options (constant); 1 34 dcl error_delimiter_miss fixed bin (35) int static init (32)options (constant); 1 35 dcl error_size_fixed_record fixed bin (35) int static init (33)options (constant); 1 36 dcl error_bad_rec_len fixed bin (35) int static init (34)options (constant); 1 37 dcl error_string_size fixed bin (35) int static init (35)options (constant); 1 38 dcl error_max_line_number fixed bin (35) int static init (36)options (constant); 1 39 dcl error_max_args fixed bin (35) int static init (37)options (constant); 1 40 dcl error_name_sys fixed bin (35) int static init (38)options (constant); 1 41 dcl error_dprint_map fixed bin (35) int static init (39)options (constant); 1 42 dcl error_max_num fixed bin (35) int static options (constant) init (40); 1 43 dcl error_edit_max_num fixed bin (35) int static options (constant) init (41); 1 44 dcl error_un_num_text fixed bin (35) int static options (constant) init (42); 1 45 dcl error_no_new_line fixed bin (35) int static options (constant) init (43); 1 46 1 47 /* END INCLUDE ... dfast_error_codes.incl.pl1 */ 92 93 94 /* based */ 95 96 dcl 1 c aligned based (cur_table_ptr) like dfast_line_table; 97 dcl 1 a aligned based (alt_table_ptr) like dfast_line_table; 98 99 100 dcl (addr, divide, null, ptr, substr) builtin; 101 102 dcl 1 f aligned based (edit_info_ptr) like dfast_edit_info; 2 1 /* BEGIN INCLUDE FILE -- dfast_edit_info.incl.pl1 2 2* written 5/75 by S.E.Barr 2 3**/ 2 4 dcl 1 dfast_edit_info aligned based (edit_info_ptr), 2 5 2 flags aligned, 2 6 3 brief_mode bit (1) unal, /* ON if short messages to be used */ 2 7 3 build_mode bit (1) unal, /* On if in build mode */ 2 8 3 source_segment bit (1) unal, /* ON if segment is source */ 2 9 3 edit_done bit (1) unal, /* ON if current segment has been edited since save */ 2 10 3 basic_system bit (1) unal, /* ON if basic, OFF if fortran */ 2 11 3 caps_mode bit (1) unal, /* ON if running in CAPS mode */ 2 12 3 dbasic bit (1) unal, /* ON if double prec basic */ 2 13 3 pad bit (29) unal, 2 14 2 system_info aligned, 2 15 3 max_seg_size fixed bin (21), /* maximum segment size in characters */ 2 16 3 user_name char (32) aligned, /* person id */ 2 17 3 tty_id char (6) unal, /* terminal id of the form "ttynnn" */ 2 18 3 current_name char (256) var aligned, /* name of current segment */ 2 19 3 current_length fixed bin (21), /* length in characters of current segment */ 2 20 3 alter_length fixed bin (21), /* length in characters of the alter segment */ 2 21 3 current_ptr ptr, /* ptr to current segment */ 2 22 3 alter_ptr ptr, 2 23 3 home_dir char (168) var, /* home directory from pit */ 2 24 3 user_id char (32) var, /* login id */ 2 25 3 project_id char (32) var, /* login home directory */ 2 26 3 source_directory char (168) aligned, /* directory of where the source was. For COMPILE. */ 2 27 3 source_entryname char (32); /* name of the source. For COMPILE. */ 2 28 2 29 /* END INCLUDE FILE -- dfast_edit_info.incl.pl1 */ 103 3 1 /* BEGIN ... dfast_line_table.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(87-12-03,TLNguyen), approve(87-12-03,MCR7806), 3 7* audit(87-12-10,Lippard), install(88-01-19,MR12.2-1015): 3 8* _ Replace the "dfast_line_table aligned based" with "dfast_line_table 3 9* aligned based (table_ptr)" and the "line (2)" array field with 3 10* "line (dfast_line_table.table_length)" to fixed subscript range 3 11* occured in the dfast_get_table_.pl1. 3 12* END HISTORY COMMENTS */ 3 13 3 14 3 15 dcl 1 dfast_line_table aligned based (table_ptr), 3 16 2 table_length fixed bin (21), 3 17 2 line (dfast_line_table.table_length), 3 18 3 number fixed bin, 3 19 3 start fixed bin (21), 3 20 3 num_chars fixed bin (21); 3 21 3 22 /* END INCLUDE ... dfast_line_table.incl.pl1 */ 104 105 106 /* */ 107 edit_info_ptr = arg_edit_info_ptr; 108 109 temp_ptr, alt_table_ptr, cur_table_ptr = null; 110 free_table_buffers = "0"b; 111 112 on clean_up call free_buffers; 113 114 /* If the alter and current segments are small, the tables are put at the end of the alter segment. */ 115 116 if f.current_length + f.alter_length < divide (f.max_seg_size, 4, 35) then do; 117 i = divide (f.alter_length + 3, 4, 35, 0) +1; 118 alt_table_ptr = ptr (f.alter_ptr, i); 119 120 call dfast_get_table_ ("1"b, f.alter_ptr, f.alter_length, alt_table_ptr, 0); 121 i = i + a.table_length *3 +2; 122 cur_table_ptr = ptr (f.alter_ptr, i); 123 call get_temp_segments_ ("fast", addr (temp_ptr) -> one_ptr, code); 124 end; 125 else do; 126 call get_temp_segments_ ("fast", addr (temp_ptr) -> three_ptr, code); 127 if code = 0 then free_table_buffers = "1"b; 128 end; 129 if code = 0 then do; 130 call dfast_get_table_ (force_sort, f.current_ptr, f.current_length, cur_table_ptr, code); 131 if code = 0 then do; 132 133 cur_index = 1; 134 alt_index = 1; 135 temp_length = 0; 136 do while (cur_index <= c.table_length & alt_index <= a.table_length & code = 0); 137 138 if c.line (cur_index).number < a.line (alt_index).number then do; 139 call move (f.current_ptr, c.line (cur_index).start, c.line (cur_index).num_chars, code); 140 cur_index = cur_index + 1; 141 end; 142 143 else do; 144 call move (f.alter_ptr, a.line (alt_index).start, a.line (alt_index).num_chars, code); 145 if c.line (cur_index).number = a.line (alt_index).number then cur_index = cur_index + 1; 146 alt_index = alt_index + 1; 147 end; 148 end; 149 150 do while (alt_index <= a.table_length & code = 0); 151 call move (f.alter_ptr, a.line (alt_index).start, a.line (alt_index).num_chars, code); 152 alt_index = alt_index + 1; 153 end; 154 155 do while (cur_index <= c.table_length & code = 0); 156 call move (f.current_ptr, c.line (cur_index).start, c.line (cur_index).num_chars, code); 157 cur_index = cur_index + 1; 158 end; 159 160 if code = 0 then do; 161 f.current_length = temp_length; 162 f.alter_length = 0; 163 f.edit_done = "1"b; 164 save_ptr = f.current_ptr; 165 166 revert clean_up; 167 168 f.current_ptr = temp_ptr; 169 temp_ptr = save_ptr; 170 end; 171 172 end; 173 end; 174 if temp_ptr ^= null then call free_buffers; 175 176 return; 177 /* */ 178 179 move: proc (seg_ptr, start, num_chars, code); 180 181 dcl seg_ptr ptr; /* ptr to segment to move from */ 182 dcl start fixed bin (21); /* first character in segment to be moved */ 183 dcl num_chars fixed bin (21); /* number of characters to move */ 184 dcl code fixed bin (35); 185 186 if temp_length + num_chars > f.max_seg_size then code = error_max_size; 187 else do; 188 substr (temp, temp_length + 1, num_chars) = substr (seg_ptr -> string, start, num_chars); 189 temp_length = temp_length + num_chars; 190 end; 191 192 return; 193 194 end move; 195 196 197 198 free_buffers: proc; 199 200 dcl code fixed bin (35); 201 202 if free_table_buffers then call release_temp_segments_ ("fast", addr (temp_ptr) -> three_ptr, code); 203 else if temp_ptr ^= null then call release_temp_segments_ ("fast", addr (temp_ptr) -> one_ptr, code); 204 205 return; 206 207 end free_buffers; 208 209 210 end dfast_merge_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/19/88 1459.5 dfast_merge_.pl1 >spec>install>MR12.2-1015>dfast_merge_.pl1 92 1 03/27/82 0439.4 dfast_error_codes.incl.pl1 >ldd>include>dfast_error_codes.incl.pl1 103 2 03/27/82 0439.4 dfast_edit_info.incl.pl1 >ldd>include>dfast_edit_info.incl.pl1 104 3 01/19/88 1501.5 dfast_line_table.incl.pl1 >spec>install>MR12.2-1015>dfast_line_table.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 based structure level 1 dcl 97 addr builtin function dcl 100 ref 123 126 202 203 alt_index 000116 automatic fixed bin(21,0) dcl 84 set ref 134* 136 138 144 144 145 146* 146 150 151 151 152* 152 alt_table_ptr 2 000120 automatic pointer level 2 dcl 86 set ref 109* 118* 120* 121 136 138 144 144 145 150 151 151 alter_length 117 based fixed bin(21,0) level 3 dcl 102 set ref 116 117 120* 162* alter_ptr 122 based pointer level 3 dcl 102 set ref 118 120* 122 144* 151* arg_edit_info_ptr parameter pointer dcl 68 ref 23 107 c based structure level 1 dcl 96 clean_up 000100 stack reference condition dcl 70 ref 112 166 code parameter fixed bin(35,0) dcl 69 in procedure "dfast_merge_" set ref 23 123* 126* 127 129 130* 131 136 139* 144* 150 151* 155 156* 160 code parameter fixed bin(35,0) dcl 184 in procedure "move" set ref 179 186* code 000100 automatic fixed bin(35,0) dcl 200 in procedure "free_buffers" set ref 202* 203* cur_index 000115 automatic fixed bin(21,0) dcl 84 set ref 133* 136 138 139 139 140* 140 145 145* 145 155 156 156 157* 157 cur_table_ptr 4 000120 automatic pointer level 2 dcl 86 set ref 109* 122* 130* 136 138 139 139 145 155 156 156 current_length 116 based fixed bin(21,0) level 3 dcl 102 set ref 116 130* 161* current_ptr 120 based pointer level 3 dcl 102 set ref 130* 139* 156* 164 168* dfast_edit_info based structure level 1 dcl 2-4 dfast_get_table_ 000010 constant entry external dcl 72 ref 120 130 dfast_line_table based structure level 1 dcl 3-15 divide builtin function dcl 100 ref 116 117 edit_done 0(03) based bit(1) level 3 packed unaligned dcl 102 set ref 163* edit_info_ptr 000106 automatic pointer dcl 71 set ref 107* 116 116 116 117 118 120 120 122 130 130 139 144 151 156 161 162 163 164 168 186 188 188 error_max_size constant fixed bin(35,0) initial dcl 1-4 ref 186 f based structure level 1 dcl 102 flags based structure level 2 dcl 102 force_sort parameter bit(1) unaligned dcl 67 set ref 23 130* free_table_buffers 000110 automatic bit(1) unaligned dcl 73 set ref 110* 127* 202 get_temp_segments_ 000012 constant entry external dcl 74 ref 123 126 i 000111 automatic fixed bin(35,0) dcl 75 set ref 117* 118 121* 121 122 line 1 based structure array level 2 in structure "c" dcl 96 in procedure "dfast_merge_" line 1 based structure array level 2 in structure "a" dcl 97 in procedure "dfast_merge_" max_seg_size 2 based fixed bin(21,0) level 3 dcl 102 ref 116 186 188 188 null builtin function dcl 100 ref 109 174 203 num_chars 3 based fixed bin(21,0) array level 3 in structure "c" dcl 96 in procedure "dfast_merge_" set ref 139* 156* num_chars parameter fixed bin(21,0) dcl 183 in procedure "move" ref 179 186 188 188 189 num_chars 3 based fixed bin(21,0) array level 3 in structure "a" dcl 97 in procedure "dfast_merge_" set ref 144* 151* number 1 based fixed bin(17,0) array level 3 in structure "c" dcl 96 in procedure "dfast_merge_" ref 138 145 number 1 based fixed bin(17,0) array level 3 in structure "a" dcl 97 in procedure "dfast_merge_" ref 138 145 one_ptr based pointer array dcl 76 set ref 123* 203* pointers 000120 automatic structure level 1 dcl 86 ptr builtin function dcl 100 ref 118 122 release_temp_segments_ 000014 constant entry external dcl 77 ref 202 203 save_ptr 000112 automatic pointer dcl 78 set ref 164* 169 seg_ptr parameter pointer dcl 181 ref 179 188 start 2 based fixed bin(21,0) array level 3 in structure "a" dcl 97 in procedure "dfast_merge_" set ref 144* 151* start parameter fixed bin(21,0) dcl 182 in procedure "move" ref 179 188 start 2 based fixed bin(21,0) array level 3 in structure "c" dcl 96 in procedure "dfast_merge_" set ref 139* 156* string based char unaligned dcl 80 ref 188 substr builtin function dcl 100 set ref 188* 188 system_info 2 based structure level 2 dcl 102 table_length based fixed bin(21,0) level 2 in structure "c" dcl 96 in procedure "dfast_merge_" ref 136 155 table_length based fixed bin(21,0) level 2 in structure "a" dcl 97 in procedure "dfast_merge_" ref 121 136 150 temp based char unaligned dcl 82 set ref 188* temp_length 000114 automatic fixed bin(21,0) dcl 83 set ref 135* 161 186 188 189* 189 temp_ptr 000120 automatic pointer level 2 dcl 86 set ref 109* 123 126 168 169* 174 188 202 203 203 three_ptr based pointer array dcl 81 set ref 126* 202* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. error_access_mode internal static fixed bin(35,0) initial dcl 1-33 error_alt_empty internal static fixed bin(35,0) initial dcl 1-3 error_bad_line internal static fixed bin(35,0) initial dcl 1-28 error_bad_name internal static fixed bin(35,0) initial dcl 1-11 error_bad_pathname internal static fixed bin(35,0) initial dcl 1-32 error_bad_rec_len internal static fixed bin(35,0) initial dcl 1-36 error_bad_req internal static fixed bin(35,0) initial dcl 1-12 error_bad_sort internal static fixed bin(35,0) initial dcl 1-24 error_bad_type internal static fixed bin(35,0) initial dcl 1-20 error_block_spec internal static fixed bin(35,0) initial dcl 1-17 error_cur_empty internal static fixed bin(35,0) initial dcl 1-5 error_delimiter_miss internal static fixed bin(35,0) initial dcl 1-34 error_dprint_map internal static fixed bin(35,0) initial dcl 1-41 error_edit_max_num internal static fixed bin(35,0) initial dcl 1-43 error_line_miss internal static fixed bin(35,0) initial dcl 1-26 error_line_order internal static fixed bin(35,0) initial dcl 1-30 error_long_rec internal static fixed bin(35,0) initial dcl 1-8 error_max_args internal static fixed bin(35,0) initial dcl 1-39 error_max_line_number internal static fixed bin(35,0) initial dcl 1-38 error_max_lines internal static fixed bin(35,0) initial dcl 1-31 error_max_num internal static fixed bin(35,0) initial dcl 1-42 error_name_dup internal static fixed bin(35,0) initial dcl 1-7 error_name_miss internal static fixed bin(35,0) initial dcl 1-14 error_name_sys internal static fixed bin(35,0) initial dcl 1-40 error_no_comp internal static fixed bin(35,0) initial dcl 1-15 error_no_expl internal static fixed bin(35,0) initial dcl 1-10 error_no_main internal static fixed bin(35,0) initial dcl 1-16 error_no_new_line internal static fixed bin(35,0) initial dcl 1-45 error_no_nl internal static fixed bin(35,0) initial dcl 1-23 error_no_num internal static fixed bin(35,0) initial dcl 1-25 error_no_string internal static fixed bin(35,0) initial dcl 1-29 error_no_suffix internal static fixed bin(35,0) initial dcl 1-22 error_not_saved internal static fixed bin(35,0) initial dcl 1-6 error_obj_nop internal static fixed bin(35,0) initial dcl 1-18 error_request_miss internal static fixed bin(35,0) initial dcl 1-27 error_sav_cur internal static fixed bin(35,0) initial dcl 1-19 error_size_fixed_record internal static fixed bin(35,0) initial dcl 1-35 error_string_size internal static fixed bin(35,0) initial dcl 1-37 error_syntax_string internal static fixed bin(35,0) initial dcl 1-13 error_un_num_text internal static fixed bin(35,0) initial dcl 1-44 error_unkn_sys internal static fixed bin(35,0) initial dcl 1-21 error_unknown_arg internal static fixed bin(35,0) initial dcl 1-9 table_ptr automatic pointer dcl 79 NAMES DECLARED BY EXPLICIT CONTEXT. dfast_merge_ 000026 constant entry external dcl 23 free_buffers 000517 constant entry internal dcl 198 ref 112 174 move 000466 constant entry internal dcl 179 ref 139 144 151 156 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 674 712 601 704 Length 1142 601 16 214 73 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dfast_merge_ 122 external procedure is an external procedure. on unit on line 112 64 on unit move internal procedure shares stack frame of external procedure dfast_merge_. free_buffers 80 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dfast_merge_ 000106 edit_info_ptr dfast_merge_ 000110 free_table_buffers dfast_merge_ 000111 i dfast_merge_ 000112 save_ptr dfast_merge_ 000114 temp_length dfast_merge_ 000115 cur_index dfast_merge_ 000116 alt_index dfast_merge_ 000120 pointers dfast_merge_ free_buffers 000100 code free_buffers THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dfast_get_table_ get_temp_segments_ release_temp_segments_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000022 107 000033 109 000037 110 000043 112 000044 116 000066 117 000076 118 000105 120 000110 121 000132 122 000141 123 000145 124 000171 126 000172 127 000216 129 000223 130 000226 131 000246 133 000251 134 000253 135 000254 136 000255 138 000267 139 000304 140 000321 141 000322 144 000323 145 000340 146 000354 148 000355 150 000356 151 000364 152 000404 153 000405 155 000406 156 000414 157 000434 158 000435 160 000436 161 000441 162 000444 163 000445 164 000447 166 000451 168 000452 169 000454 174 000455 176 000465 179 000466 186 000470 188 000500 189 000513 192 000515 198 000516 202 000524 203 000552 205 000600 ----------------------------------------------------------- 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