COMPILATION LISTING OF SEGMENT merge_output_proc Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/11/82 1307.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* *************************************** 8* * * 9* * * 10* * Copyright (c) 1975, 1976 by * 11* * Honeywell Information Systems, Inc. * 12* * * 13* * * 14* *************************************** */ 15 merge_output_proc: proc(output_proc_code); 16 17 /* EXTERNAL ENTRIES */ 18 19 dcl iox_$attach_ioname entry(char(*), ptr, char(*), fixed bin(35)); 20 dcl iox_$open entry(ptr, fixed bin, bit(1) aligned, fixed bin(35)); 21 dcl iox_$write_record entry(ptr, ptr, fixed bin(21), fixed bin(35)); 22 dcl iox_$close entry(ptr, fixed bin(35)); 23 dcl iox_$detach_iocb entry(ptr, fixed bin(35)); 24 dcl iox_$destroy_iocb entry(ptr, fixed bin(35)); 25 dcl sub_err_ entry options(variable); 26 27 dcl merge_return$return entry(ptr, fixed bin(21), fixed bin(35)); 28 29 /* EXTERNAL STATIC */ 30 1 1 dcl 1 sort_ext$acl(1) ext, 1 2 2 x_user_id char(32), 1 3 2 x_modes bit(36), 1 4 2 x_pad bit(36), 1 5 2 x_acl_code fixed bin(35); 1 6 dcl 1 acl(1) 1 7 defined(sort_ext$acl), 1 8 2 user_id char(32), 1 9 2 modes bit(36), 1 10 2 pad bit(36), 1 11 2 acl_code fixed bin(35); 1 12 dcl sort_ext$b(0: 31) fixed bin(30) ext; /* keys - bit offset (usually) for sort_comp */ 1 13 dcl b(0: 31) fixed bin(30) 1 14 defined (sort_ext$b); 1 15 dcl sort_ext$compares_counter fixed bin(34) ext; /* compares executed, excluding sequence checker */ 1 16 dcl compares_counter fixed bin(34) 1 17 defined(sort_ext$compares_counter); 1 18 dcl sort_ext$compare_sw fixed bin(1) ext; /* 1 = user compare exit specified */ 1 19 dcl compare_sw fixed bin(1) 1 20 defined (sort_ext$compare_sw); 1 21 dcl sort_ext$curr_input_file_attach char(256) ext; /* attach description, current input file (Sort) */ 1 22 dcl curr_input_file_attach char(256) 1 23 defined(sort_ext$curr_input_file_attach); 1 24 dcl sort_ext$curr_input_file_name char(256) ext; /* pathname, current input file (Sort) */ 1 25 dcl curr_input_file_name char(256) 1 26 defined (sort_ext$curr_input_file_name); 1 27 dcl sort_ext$curr_input_file_num fixed bin(17) ext; /* number for current input file (Sort) */ 1 28 dcl curr_input_file_num fixed bin(17) 1 29 defined (sort_ext$curr_input_file_num); 1 30 dcl sort_ext$curr_output_file_attach char(256) ext; /* attach description, output file */ 1 31 dcl curr_output_file_attach char(256) 1 32 defined(sort_ext$curr_output_file_attach); 1 33 dcl sort_ext$curr_output_file_name char(256) ext; /* pathname, output file */ 1 34 dcl curr_output_file_name char(256) 1 35 defined (sort_ext$curr_output_file_name); 1 36 dcl sort_ext$debug_sw bit(1) ext; /* 1 = -debug argument specified */ 1 37 dcl debug_sw bit(1) 1 38 defined(sort_ext$debug_sw); 1 39 dcl sort_ext$disaster2 fixed bin(17) ext; /* 0 = first call to sort_return or merge_return */ 1 40 dcl disaster2 fixed bin(17) 1 41 defined (sort_ext$disaster2); 1 42 dcl sort_ext$dt(0: 31) fixed bin(30) ext; /* keys - datatype for sort_comp */ 1 43 dcl dt(0: 31) fixed bin(30) 1 44 defined (sort_ext$dt); 1 45 dcl sort_ext$input_driver_is_sort bit(1) ext; /* 1 = Sort reads input files, 0 = input_file exit */ 1 46 dcl input_driver_is_sort bit(1) 1 47 defined(sort_ext$input_driver_is_sort); 1 48 dcl sort_ext$input_file_exit_sw bit(1) ext; /* 1 = user input_file exit specified */ 1 49 dcl input_file_exit_sw bit(1) 1 50 defined(sort_ext$input_file_exit_sw); 1 51 dcl sort_ext$input_file_max fixed bin(17) ext; /* number of input files specified [init(10)] */ 1 52 /* must also change merge_return: merge_read_count & input_file_len */ 1 53 dcl input_file_max fixed bin(17) 1 54 defined(sort_ext$input_file_max); 1 55 dcl sort_ext$input_record_exit_sw fixed bin(1) ext; /* 1 = user input_record exit specified */ 1 56 dcl input_record_exit_sw fixed bin(1) 1 57 defined(sort_ext$input_record_exit_sw); 1 58 dcl sort_ext$input_rec_deleted fixed bin(30) ext; /* number of records deleted at input_record exit */ 1 59 dcl input_rec_deleted fixed bin(30) 1 60 defined(sort_ext$input_rec_deleted); 1 61 dcl sort_ext$input_rec_inserted fixed bin(30) ext; /* number of records inserted _record exit */ 1 62 dcl input_rec_inserted fixed bin(30) 1 63 defined(sort_ext$input_rec_inserted); 1 64 dcl sort_ext$in_buff_ptr ptr ext; /* buffer for an input record (Sort or Merge reading) */ 1 65 dcl in_buff_ptr ptr 1 66 defined (sort_ext$in_buff_ptr); 1 67 dcl sort_ext$leng(0: 31) fixed bin(30) ext; /* keys - length or precision for sort_comp */ 1 68 dcl leng(0: 31) fixed bin(30) 1 69 defined (sort_ext$leng); 1 70 dcl sort_ext$max1 fixed bin(30) ext; /* limits size of unsorted string SS (sort_release) */ 1 71 dcl max1 fixed bin(30) 1 72 defined (sort_ext$max1); 1 73 dcl sort_ext$max2 fixed bin(30) ext; /* limits size of unsorted string SS (sort_release) */ 1 74 dcl max2 fixed bin(30) 1 75 defined (sort_ext$max2); 1 76 dcl sort_ext$max3 fixed bin(30) ext; /* maximum number of records per string SS */ 1 77 dcl max3 fixed bin(30) 1 78 defined (sort_ext$max3); 1 79 dcl sort_ext$max4 fixed bin(30) ext; /* maximum merge order allowed (sort_presort) */ 1 80 dcl max4 fixed bin(30) 1 81 defined (sort_ext$max4); 1 82 dcl sort_ext$max_rec_length fixed bin(30) ext; /* maximum record length permitted by Sort or Merge; */ 1 83 /* slightly less than sys_info$max_seg_size */ 1 84 dcl max_rec_length fixed bin(30) 1 85 defined (sort_ext$max_rec_length); 1 86 dcl sort_ext$merge_compares fixed bin(34) ext; /* number of compares in merge */ 1 87 dcl merge_compares fixed bin(34) 1 88 defined(sort_ext$merge_compares); 1 89 dcl sort_ext$merge_in_iocb_ptrs(10) ptr ext; /* iox_ iocb's for Merge input files */ 1 90 dcl merge_in_iocb_ptrs(10) ptr 1 91 defined(sort_ext$merge_in_iocb_ptrs); 1 92 dcl sort_ext$merge_input_file_attaches(10) char(256) ext; /* attach descriptions, Merge input files */ 1 93 dcl merge_input_file_attaches(10) char(256) 1 94 defined(sort_ext$merge_input_file_attaches); 1 95 dcl sort_ext$merge_input_file_names(10) char(256) ext; /* pathnames, Merge input files */ 1 96 dcl merge_input_file_names(10) char(256) 1 97 defined(sort_ext$merge_input_file_names); 1 98 dcl sort_ext$mii fixed bin(17) ext; /* merge order for Sort [init(0)] */ 1 99 dcl mii fixed bin(17) 1 100 defined (sort_ext$mii); 1 101 dcl sort_ext$min_rec_length fixed bin(30) ext; /* record length required to include all key fields */ 1 102 dcl min_rec_length fixed bin(30) 1 103 defined (sort_ext$min_rec_length); 1 104 dcl sort_ext$mip (1000) fixed bin(30) ext; /* number of records in each string MS for merge */ 1 105 dcl mip (1000) fixed bin(30) 1 106 defined (sort_ext$mip); 1 107 dcl sort_ext$msp (1000) ptr ext; /* sorted strings MS(1:mii) to be merged */ 1 108 dcl msp (1000) ptr 1 109 defined (sort_ext$msp); 1 110 dcl sort_ext$no_of_keys fixed bin(30) ext; /* number of keys specified */ 1 111 dcl no_of_keys fixed bin(30) 1 112 defined(sort_ext$no_of_keys); 1 113 dcl sort_ext$old_input_file_num fixed bin(17) ext; /* used for identifying files with bad key data */ 1 114 dcl old_input_file_num fixed bin(17) /* (illegal_procedure handler in sort_presort) */ 1 115 defined(sort_ext$old_input_file_num); 1 116 dcl sort_ext$output_driver_is_sort bit(1) ext; /* 1 = Sort or Merge writes output file; */ 1 117 dcl output_driver_is_sort bit(1) /* 0 = output_file exit */ 1 118 defined(sort_ext$output_driver_is_sort); 1 119 dcl sort_ext$output_file_exit_sw bit(1) ext; /* 1 = user output_file exit specified */ 1 120 dcl output_file_exit_sw bit(1) 1 121 defined(sort_ext$output_file_exit_sw); 1 122 dcl sort_ext$output_rec_deleted fixed bin(30) ext; /* number of records deleted at output_record exit */ 1 123 dcl output_rec_deleted fixed bin(30) 1 124 defined(sort_ext$output_rec_deleted); 1 125 dcl sort_ext$output_rec_inserted fixed bin(30) ext; /* number of record inserted at output_record exit */ 1 126 dcl output_rec_inserted fixed bin(30) 1 127 defined(sort_ext$output_rec_inserted); 1 128 dcl sort_ext$output_record_exit_sw fixed bin(1) ext; /* 1 = user output_record exit specified */ 1 129 dcl output_record_exit_sw fixed bin(1) 1 130 defined(sort_ext$output_record_exit_sw); 1 131 dcl sort_ext$presort_compares fixed bin(34) ext; /* number of compares in presort */ 1 132 dcl presort_compares fixed bin(34) 1 133 defined(sort_ext$presort_compares); 1 134 dcl 1 sort_ext$pu(5) ext, 1 135 2 x_n fixed bin, /* [init((5) 1)] */ 1 136 2 x_rcpu fixed bin(71); 1 137 dcl 1 pu(5) 1 138 defined(sort_ext$pu), 1 139 2 n fixed bin, 1 140 2 rcpu fixed bin(71); 1 141 dcl sort_ext$read_count fixed bin(30) ext; /* number of records read by Sort (or by Merge) */ 1 142 dcl read_count fixed bin(30) 1 143 defined (sort_ext$read_count); 1 144 dcl sort_ext$rec_ptr_a ptr ext; /* buffer for output_record exit and sequence checker */ 1 145 dcl rec_ptr_a ptr 1 146 defined(sort_ext$rec_ptr_a); 1 147 dcl sort_ext$rec_ptr_b ptr ext; /* buffer for output_record exit and sequence checker */ 1 148 dcl rec_ptr_b ptr 1 149 defined(sort_ext$rec_ptr_b); 1 150 dcl sort_ext$release_count fixed bin(30) ext; /* number of records released to Sort (Merge) */ 1 151 dcl release_count fixed bin(30) 1 152 defined (sort_ext$release_count); 1 153 dcl sort_ext$report_sw bit(2) ext; /* 00 = print summary report, 01 = suppress */ 1 154 dcl report_sw bit(2) 1 155 defined (sort_ext$report_sw); 1 156 dcl sort_ext$return_count fixed bin(30) ext; /* number of records returned from Sort (Merge) */ 1 157 dcl return_count fixed bin(30) 1 158 defined (sort_ext$return_count); 1 159 dcl sort_ext$rev(0: 31) fixed bin(1) ext; /* keys - descending indicator for sort_comp */ 1 160 dcl rev(0: 31) fixed bin(1) 1 161 defined (sort_ext$rev); 1 162 dcl sort_ext$sii fixed bin(30) ext; /* number of records, current string (sort_release) */ 1 163 dcl sii fixed bin(30) 1 164 defined (sort_ext$sii); 1 165 dcl sort_ext$sip ptr ext; /* SI - tree of indices (subscripts) for records */ 1 166 dcl sip ptr /* being sorted or merged */ 1 167 defined (sort_ext$sip); 1 168 dcl sort_ext$sort_compare_exit variable /* entry point, user compare exit procedure */ 1 169 entry(ptr, ptr) returns(fixed bin(1)) ext; 1 170 dcl sort_ext$sort_desc_pn char(168) ext; /* pathname, Sort (Merge) Description segment */ 1 171 dcl sort_desc_pn char(168) 1 172 defined(sort_ext$sort_desc_pn); 1 173 dcl sort_ext$sort_input_record_exit variable /* entry point, user input_record exit procedure */ 1 174 entry(ptr, fixed bin(21), fixed bin, bit(1)) ext; 1 175 dcl sort_input_record_exit variable 1 176 entry(ptr, fixed bin(21), fixed bin, bit(1)) 1 177 defined(sort_ext$sort_input_record_exit); 1 178 dcl sort_ext$sort_output_record_exit variable /* entry point, user output_record exit procedure */ 1 179 entry(ptr, fixed bin(21), ptr, fixed bin(21), fixed bin, fixed bin(1), bit(1), bit(1), bit(1)) ext; 1 180 dcl sort_output_record_exit variable 1 181 entry(ptr, fixed bin(21), ptr, fixed bin(21), fixed bin, fixed bin(1), bit(1), bit(1), bit(1)) 1 182 defined(sort_ext$sort_output_record_exit); 1 183 dcl sort_ext$srp ptr ext; /* SR - position and length of each record */ 1 184 dcl srp ptr /* in SS string for presort */ 1 185 defined (sort_ext$srp); 1 186 dcl sort_ext$ssi fixed bin(30) ext; /* char offset in SS of current record (sort_release) */ 1 187 dcl ssi fixed bin(30) 1 188 defined (sort_ext$ssi); 1 189 dcl sort_ext$ssp ptr ext; /* SS - unsorted string during presort */ 1 190 dcl ssp ptr 1 191 defined (sort_ext$ssp); 1 192 dcl sort_ext$state fixed bin(17) ext; /* state variable controlling sequence of calls to */ 1 193 dcl state fixed bin(17) /* the various stages of the Sort (Merge) [init(0)] */ 1 194 defined (sort_ext$state); 1 195 dcl sort_ext$terminate_print_sw bit(1) ext; /* 0 = command prints (sort_merge_print_report) */ 1 196 dcl terminate_print_sw bit(1) /* 1 = subroutine prints (sort_merge_terminate) */ 1 197 defined (sort_ext$terminate_print_sw); 1 198 dcl 1 sort_ext$time_info(5) ext, /* used for -time information */ 1 199 2 x_etime fixed bin(71), 1 200 2 x_vtime fixed bin(71), 1 201 2 x_pf fixed bin, 1 202 2 x_pd_f fixed bin; 1 203 dcl 1 time_info(5) 1 204 defined(sort_ext$time_info), 1 205 2 etime fixed bin(71), 1 206 2 vtime fixed bin(71), 1 207 2 pf fixed bin, 1 208 2 pd_f fixed bin; 1 209 dcl sort_ext$time_sw bit(1) ext; /* 1 = -time argument specified */ 1 210 dcl time_sw bit(1) 1 211 defined(sort_ext$time_sw); 1 212 dcl sort_ext$user_out_sw char(32) ext; /* I/O switch for summary report, diagnostics: */ 1 213 dcl user_out_sw char(32) /* "user_output", "" = suppress, other = user switch */ 1 214 defined(sort_ext$user_out_sw); 1 215 dcl sort_ext$unique_prefix char(16) ext; /* unique to each invocation, for temporary names */ 1 216 dcl unique_prefix char(16) 1 217 defined (sort_ext$unique_prefix); /* -4- */ 1 218 dcl sort_ext$w(0: 31) fixed bin(30) ext; /* keys - word (sometimes char) offset for sort_comp */ 1 219 dcl w(0: 31) fixed bin(30) 1 220 defined (sort_ext$w); 1 221 dcl sort_ext$wf_dir_name char(168) aligned ext; /* -td directory pathname argument */ 1 222 dcl wf_dir_name char(168) aligned 1 223 defined(sort_ext$wf_dir_name); 1 224 dcl sort_ext$wf_full_name char(168) ext; /* absolute -td directory pathname */ 1 225 dcl wf_full_name char(168) 1 226 defined (sort_ext$wf_full_name); /* -42- */ 1 227 dcl sort_ext$whoami char(6) ext; /* "sort", "merge", "sort_", "merge_" called */ 1 228 dcl whoami char(6) 1 229 defined (sort_ext$whoami); /* -2- */ 1 230 dcl sort_ext$write_count fixed bin(30) ext; /* number of records written by Sort (Merge) */ 1 231 dcl write_count fixed bin(30) 1 232 defined (sort_ext$write_count); 31 32 33 dcl (error_table_$not_detached, 34 error_table_$not_attached, 35 error_table_$not_closed, 36 error_table_$end_of_info, 37 error_table_$data_loss, 38 error_table_$data_gain, 39 error_table_$data_seq_error, 40 error_table_$not_open, 41 error_table_$fatal_error) fixed bin(35) external static; 42 43 /* PARAMETERS AND AUTOMATIC */ 44 dcl output_proc_code fixed bin(35) parameter; 45 46 dcl out_attach_desc char(176), 47 out_iocb_ptr ptr, 48 iox_code fixed bin(35), 49 out_mode fixed bin, 50 seq_output fixed bin init(5), 51 no_extend bit(1) aligned init("0"b), 52 sort_code fixed bin(35), 53 out_buff_ptr ptr, 54 out_rec_len fixed bin(21), 55 out_buff_len fixed bin(21) init(32768); 56 dcl data_gain_sw bit(1) init("0"b); 57 dcl i fixed bin(21); 58 59 dcl retval fixed bin(35); 60 dcl cleanup condition; 61 62 /* Start. */ 63 output_proc_code=0; 64 do i=1 to mii; /* for cleanup work */ 65 merge_in_iocb_ptrs(i)=null(); 66 end; 67 out_iocb_ptr = null(); 68 on cleanup call cleanup_proc; 69 /* Attach. */ 70 if curr_output_file_attach = "" then out_attach_desc = "vfile_ "||curr_output_file_name; 71 else out_attach_desc = curr_output_file_attach; 72 /* without extend */ 73 call iox_$attach_ioname(unique_prefix||"sort_out_1_", out_iocb_ptr, out_attach_desc, iox_code); 74 if iox_code ^= 0 then 75 do; 76 /* error_table_$not_detached */ 77 call iox_error("Attaching"); 78 end; 79 80 /* Open. */ 81 out_mode = seq_output; 82 call iox_$open(out_iocb_ptr, out_mode, no_extend, iox_code); 83 if iox_code ^= 0 then 84 do; 85 /* error_table_$not_attached, 86* $not_closed */ 87 call iox_error("Opening"); 88 end; 89 90 /* Retrieve and write. */ 91 retrieve: call merge_return$return(out_buff_ptr, out_rec_len, sort_code); 92 if sort_code = error_table_$end_of_info then 93 go to close; 94 if sort_code ^= 0 then 95 do; 96 /* merge_$return errors */ 97 if sort_code = error_table_$data_loss then do; 98 call sub_err_(sort_code, (whoami), "c", null(), retval, ""); 99 go to close; 100 end; 101 else if sort_code = error_table_$data_gain then do; 102 if data_gain_sw = "0"b then call sub_err_(sort_code, (whoami), "c", null(), retval, ""); 103 data_gain_sw = "1"b; 104 end; 105 else if sort_code = error_table_$data_seq_error then do; 106 if curr_output_file_attach = "" then 107 call sub_err_(sort_code, (whoami), "c", null(), retval, 108 " Record ^d of output file, file name ^a", 109 write_count + 1, curr_output_file_name); 110 else call sub_err_(sort_code, (whoami), "c", null(), retval, 111 " Record ^d of output file, attach description ^a", 112 write_count + 1, curr_output_file_attach); 113 end; 114 else do; /* error_table$out_of_sequence (call), error_table_$fatal_error */ 115 output_proc_code = sort_code; 116 call cleanup_proc; 117 go to exit; 118 end; 119 end; 120 call iox_$write_record(out_iocb_ptr, out_buff_ptr, out_rec_len, iox_code); 121 if iox_code ^= 0 then 122 do; 123 /* no errors returned? */ 124 call iox_error("Writing"); 125 end; 126 write_count = write_count + 1; 127 go to retrieve; 128 129 /* Close. */ 130 close: call iox_$close(out_iocb_ptr, iox_code); 131 if iox_code ^= 0 then 132 do; 133 /* error_table_$not_open */ 134 call iox_error("Closing"); 135 end; 136 137 /* Detach. */ 138 call iox_$detach_iocb(out_iocb_ptr, iox_code); 139 if iox_code ^= 0 then 140 do; 141 /* error_table_$not_attached, 142* $not_closed */ 143 call iox_error("Detaching"); 144 end; 145 146 /* Destroy iocb. */ 147 call iox_$destroy_iocb(out_iocb_ptr, iox_code); 148 out_iocb_ptr = null(); 149 /* no errors returned? */ 150 exit: 151 return; /* to driver */ 152 153 154 iox_error: proc(action); 155 dcl action char(*) parameter; 156 output_proc_code = error_table_$fatal_error; 157 if curr_output_file_attach = "" then 158 call sub_err_(iox_code, (whoami), "c", null(), retval, 159 " ^a output file, file name ^a", 160 action, curr_output_file_name); 161 else 162 call sub_err_(iox_code, (whoami), "c", null(), retval, 163 " ^a output file, attach description ^a", 164 action, curr_output_file_attach); 165 call cleanup_proc; 166 go to exit; 167 end iox_error; 168 169 170 cleanup_proc: proc; 171 if out_iocb_ptr ^= null() then 172 do; 173 call iox_$close(out_iocb_ptr, iox_code); 174 call iox_$detach_iocb(out_iocb_ptr, iox_code); 175 call iox_$destroy_iocb(out_iocb_ptr, iox_code); 176 end; 177 do i = 1 to mii; 178 if merge_in_iocb_ptrs(i)^=null() then 179 do; 180 call iox_$close(merge_in_iocb_ptrs(i),iox_code); 181 call iox_$detach_iocb(merge_in_iocb_ptrs(i),iox_code); 182 call iox_$destroy_iocb(merge_in_iocb_ptrs(i),iox_code); 183 end; 184 end; 185 end cleanup_proc; 186 187 188 end merge_output_proc; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/82 1029.3 merge_output_proc.pl1 >spec>on>11/11/82>merge_output_proc.pl1 31 1 12/20/77 1614.2 sort_ext.incl.pl1 >ldd>include>sort_ext.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. action parameter char unaligned dcl 155 set ref 154 157* 161* cleanup 000174 stack reference condition dcl 60 ref 68 curr_output_file_attach defined char(256) unaligned dcl 1-31 set ref 70 71 106 110* 157 161* curr_output_file_name defined char(256) unaligned dcl 1-34 set ref 70 106* 157* data_gain_sw 000170 automatic bit(1) initial unaligned dcl 56 set ref 56* 102 103* error_table_$data_gain 000052 external static fixed bin(35,0) dcl 33 ref 101 error_table_$data_loss 000050 external static fixed bin(35,0) dcl 33 ref 97 error_table_$data_seq_error 000054 external static fixed bin(35,0) dcl 33 ref 105 error_table_$end_of_info 000046 external static fixed bin(35,0) dcl 33 ref 92 error_table_$fatal_error 000056 external static fixed bin(35,0) dcl 33 ref 156 i 000171 automatic fixed bin(21,0) dcl 57 set ref 64* 65* 177* 178 180 181 182* iox_$attach_ioname 000010 constant entry external dcl 19 ref 73 iox_$close 000016 constant entry external dcl 22 ref 130 173 180 iox_$destroy_iocb 000022 constant entry external dcl 24 ref 147 175 182 iox_$detach_iocb 000020 constant entry external dcl 23 ref 138 174 181 iox_$open 000012 constant entry external dcl 20 ref 82 iox_$write_record 000014 constant entry external dcl 21 ref 120 iox_code 000156 automatic fixed bin(35,0) dcl 46 set ref 73* 74 82* 83 120* 121 130* 131 138* 139 147* 157* 161* 173* 174* 175* 180* 181* 182* merge_in_iocb_ptrs defined pointer array dcl 1-90 set ref 65* 178 180* 181* 182* merge_return$return 000026 constant entry external dcl 27 ref 91 mii defined fixed bin(17,0) dcl 1-99 ref 64 177 no_extend 000161 automatic bit(1) initial dcl 46 set ref 46* 82* out_attach_desc 000100 automatic char(176) unaligned dcl 46 set ref 70* 71* 73* out_buff_len 000167 automatic fixed bin(21,0) initial dcl 46 set ref 46* out_buff_ptr 000164 automatic pointer dcl 46 set ref 91* 120* out_iocb_ptr 000154 automatic pointer dcl 46 set ref 67* 73* 82* 120* 130* 138* 147* 148* 171 173* 174* 175* out_mode 000157 automatic fixed bin(17,0) dcl 46 set ref 81* 82* out_rec_len 000166 automatic fixed bin(21,0) dcl 46 set ref 91* 120* output_proc_code parameter fixed bin(35,0) dcl 44 set ref 15 63* 115* 156* retval 000172 automatic fixed bin(35,0) dcl 59 set ref 98* 102* 106* 110* 157* 161* seq_output 000160 automatic fixed bin(17,0) initial dcl 46 set ref 46* 81 sort_code 000162 automatic fixed bin(35,0) dcl 46 set ref 91* 92 94 97 98* 101 102* 105 106* 110* 115 sort_ext$curr_output_file_attach 000030 external static char(256) unaligned dcl 1-30 ref 70 70 71 71 106 106 110 110 157 157 161 161 sort_ext$curr_output_file_name 000032 external static char(256) unaligned dcl 1-33 ref 70 70 106 106 157 157 sort_ext$merge_in_iocb_ptrs 000034 external static pointer array dcl 1-89 set ref 65* 65 178 178 180 180 181 181 182 182 sort_ext$mii 000036 external static fixed bin(17,0) dcl 1-98 ref 64 64 177 177 sort_ext$unique_prefix 000040 external static char(16) unaligned dcl 1-215 ref 73 73 sort_ext$whoami 000042 external static char(6) unaligned dcl 1-227 ref 98 98 102 102 106 106 110 110 157 157 161 161 sort_ext$write_count 000044 external static fixed bin(30,0) dcl 1-230 set ref 106 106 110 110 126* 126 126 126 sub_err_ 000024 constant entry external dcl 25 ref 98 102 106 110 157 161 unique_prefix defined char(16) unaligned dcl 1-216 ref 73 whoami defined char(6) unaligned dcl 1-228 ref 98 102 106 110 157 161 write_count defined fixed bin(30,0) dcl 1-231 set ref 106 110 126* 126 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. acl defined structure array level 1 unaligned dcl 1-6 b defined fixed bin(30,0) array dcl 1-13 compare_sw defined fixed bin(1,0) dcl 1-19 compares_counter defined fixed bin(34,0) dcl 1-16 curr_input_file_attach defined char(256) unaligned dcl 1-22 curr_input_file_name defined char(256) unaligned dcl 1-25 curr_input_file_num defined fixed bin(17,0) dcl 1-28 debug_sw defined bit(1) unaligned dcl 1-37 disaster2 defined fixed bin(17,0) dcl 1-40 dt defined fixed bin(30,0) array dcl 1-43 error_table_$not_attached external static fixed bin(35,0) dcl 33 error_table_$not_closed external static fixed bin(35,0) dcl 33 error_table_$not_detached external static fixed bin(35,0) dcl 33 error_table_$not_open external static fixed bin(35,0) dcl 33 in_buff_ptr defined pointer dcl 1-65 input_driver_is_sort defined bit(1) unaligned dcl 1-46 input_file_exit_sw defined bit(1) unaligned dcl 1-49 input_file_max defined fixed bin(17,0) dcl 1-53 input_rec_deleted defined fixed bin(30,0) dcl 1-59 input_rec_inserted defined fixed bin(30,0) dcl 1-62 input_record_exit_sw defined fixed bin(1,0) dcl 1-56 leng defined fixed bin(30,0) array dcl 1-68 max1 defined fixed bin(30,0) dcl 1-71 max2 defined fixed bin(30,0) dcl 1-74 max3 defined fixed bin(30,0) dcl 1-77 max4 defined fixed bin(30,0) dcl 1-80 max_rec_length defined fixed bin(30,0) dcl 1-84 merge_compares defined fixed bin(34,0) dcl 1-87 merge_input_file_attaches defined char(256) array unaligned dcl 1-93 merge_input_file_names defined char(256) array unaligned dcl 1-96 min_rec_length defined fixed bin(30,0) dcl 1-102 mip defined fixed bin(30,0) array dcl 1-105 msp defined pointer array dcl 1-108 no_of_keys defined fixed bin(30,0) dcl 1-111 old_input_file_num defined fixed bin(17,0) dcl 1-114 output_driver_is_sort defined bit(1) unaligned dcl 1-117 output_file_exit_sw defined bit(1) unaligned dcl 1-120 output_rec_deleted defined fixed bin(30,0) dcl 1-123 output_rec_inserted defined fixed bin(30,0) dcl 1-126 output_record_exit_sw defined fixed bin(1,0) dcl 1-129 presort_compares defined fixed bin(34,0) dcl 1-132 pu defined structure array level 1 unaligned dcl 1-137 read_count defined fixed bin(30,0) dcl 1-142 rec_ptr_a defined pointer dcl 1-145 rec_ptr_b defined pointer dcl 1-148 release_count defined fixed bin(30,0) dcl 1-151 report_sw defined bit(2) unaligned dcl 1-154 return_count defined fixed bin(30,0) dcl 1-157 rev defined fixed bin(1,0) array dcl 1-160 sii defined fixed bin(30,0) dcl 1-163 sip defined pointer dcl 1-166 sort_desc_pn defined char(168) unaligned dcl 1-171 sort_ext$acl external static structure array level 1 unaligned dcl 1-1 sort_ext$b external static fixed bin(30,0) array dcl 1-12 sort_ext$compare_sw external static fixed bin(1,0) dcl 1-18 sort_ext$compares_counter external static fixed bin(34,0) dcl 1-15 sort_ext$curr_input_file_attach external static char(256) unaligned dcl 1-21 sort_ext$curr_input_file_name external static char(256) unaligned dcl 1-24 sort_ext$curr_input_file_num external static fixed bin(17,0) dcl 1-27 sort_ext$debug_sw external static bit(1) unaligned dcl 1-36 sort_ext$disaster2 external static fixed bin(17,0) dcl 1-39 sort_ext$dt external static fixed bin(30,0) array dcl 1-42 sort_ext$in_buff_ptr external static pointer dcl 1-64 sort_ext$input_driver_is_sort external static bit(1) unaligned dcl 1-45 sort_ext$input_file_exit_sw external static bit(1) unaligned dcl 1-48 sort_ext$input_file_max external static fixed bin(17,0) dcl 1-51 sort_ext$input_rec_deleted external static fixed bin(30,0) dcl 1-58 sort_ext$input_rec_inserted external static fixed bin(30,0) dcl 1-61 sort_ext$input_record_exit_sw external static fixed bin(1,0) dcl 1-55 sort_ext$leng external static fixed bin(30,0) array dcl 1-67 sort_ext$max1 external static fixed bin(30,0) dcl 1-70 sort_ext$max2 external static fixed bin(30,0) dcl 1-73 sort_ext$max3 external static fixed bin(30,0) dcl 1-76 sort_ext$max4 external static fixed bin(30,0) dcl 1-79 sort_ext$max_rec_length external static fixed bin(30,0) dcl 1-82 sort_ext$merge_compares external static fixed bin(34,0) dcl 1-86 sort_ext$merge_input_file_attaches external static char(256) array unaligned dcl 1-92 sort_ext$merge_input_file_names external static char(256) array unaligned dcl 1-95 sort_ext$min_rec_length external static fixed bin(30,0) dcl 1-101 sort_ext$mip external static fixed bin(30,0) array dcl 1-104 sort_ext$msp external static pointer array dcl 1-107 sort_ext$no_of_keys external static fixed bin(30,0) dcl 1-110 sort_ext$old_input_file_num external static fixed bin(17,0) dcl 1-113 sort_ext$output_driver_is_sort external static bit(1) unaligned dcl 1-116 sort_ext$output_file_exit_sw external static bit(1) unaligned dcl 1-119 sort_ext$output_rec_deleted external static fixed bin(30,0) dcl 1-122 sort_ext$output_rec_inserted external static fixed bin(30,0) dcl 1-125 sort_ext$output_record_exit_sw external static fixed bin(1,0) dcl 1-128 sort_ext$presort_compares external static fixed bin(34,0) dcl 1-131 sort_ext$pu external static structure array level 1 unaligned dcl 1-134 sort_ext$read_count external static fixed bin(30,0) dcl 1-141 sort_ext$rec_ptr_a external static pointer dcl 1-144 sort_ext$rec_ptr_b external static pointer dcl 1-147 sort_ext$release_count external static fixed bin(30,0) dcl 1-150 sort_ext$report_sw external static bit(2) unaligned dcl 1-153 sort_ext$return_count external static fixed bin(30,0) dcl 1-156 sort_ext$rev external static fixed bin(1,0) array dcl 1-159 sort_ext$sii external static fixed bin(30,0) dcl 1-162 sort_ext$sip external static pointer dcl 1-165 sort_ext$sort_compare_exit external static entry variable dcl 1-168 sort_ext$sort_desc_pn external static char(168) unaligned dcl 1-170 sort_ext$sort_input_record_exit external static entry variable dcl 1-173 sort_ext$sort_output_record_exit external static entry variable dcl 1-178 sort_ext$srp external static pointer dcl 1-183 sort_ext$ssi external static fixed bin(30,0) dcl 1-186 sort_ext$ssp external static pointer dcl 1-189 sort_ext$state external static fixed bin(17,0) dcl 1-192 sort_ext$terminate_print_sw external static bit(1) unaligned dcl 1-195 sort_ext$time_info external static structure array level 1 unaligned dcl 1-198 sort_ext$time_sw external static bit(1) unaligned dcl 1-209 sort_ext$user_out_sw external static char(32) unaligned dcl 1-212 sort_ext$w external static fixed bin(30,0) array dcl 1-218 sort_ext$wf_dir_name external static char(168) dcl 1-221 sort_ext$wf_full_name external static char(168) unaligned dcl 1-224 sort_input_record_exit defined entry variable dcl 1-175 sort_output_record_exit defined entry variable dcl 1-180 srp defined pointer dcl 1-184 ssi defined fixed bin(30,0) dcl 1-187 ssp defined pointer dcl 1-190 state defined fixed bin(17,0) dcl 1-193 terminate_print_sw defined bit(1) unaligned dcl 1-196 time_info defined structure array level 1 unaligned dcl 1-203 time_sw defined bit(1) unaligned dcl 1-210 user_out_sw defined char(32) unaligned dcl 1-213 w defined fixed bin(30,0) array dcl 1-219 wf_dir_name defined char(168) dcl 1-222 wf_full_name defined char(168) unaligned dcl 1-225 NAMES DECLARED BY EXPLICIT CONTEXT. cleanup_proc 001153 constant entry internal dcl 170 ref 68 116 165 close 000702 constant label dcl 130 ref 92 99 exit 000757 constant label dcl 150 ref 117 166 iox_error 000760 constant entry internal dcl 154 ref 77 87 124 134 143 merge_output_proc 000122 constant entry external dcl 15 retrieve 000324 constant label dcl 91 ref 127 NAME DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 65 67 98 98 102 102 106 106 110 110 148 157 157 161 161 171 178 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1606 1666 1326 1616 Length 2126 1326 60 223 257 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME merge_output_proc 312 external procedure is an external procedure. on unit on line 68 64 on unit iox_error internal procedure shares stack frame of external procedure merge_output_proc. cleanup_proc 72 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME merge_output_proc 000100 out_attach_desc merge_output_proc 000154 out_iocb_ptr merge_output_proc 000156 iox_code merge_output_proc 000157 out_mode merge_output_proc 000160 seq_output merge_output_proc 000161 no_extend merge_output_proc 000162 sort_code merge_output_proc 000164 out_buff_ptr merge_output_proc 000166 out_rec_len merge_output_proc 000167 out_buff_len merge_output_proc 000170 data_gain_sw merge_output_proc 000171 i merge_output_proc 000172 retval merge_output_proc 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 enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$attach_ioname iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open iox_$write_record merge_return$return sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$data_gain error_table_$data_loss error_table_$data_seq_error error_table_$end_of_info error_table_$fatal_error sort_ext$curr_output_file_attach sort_ext$curr_output_file_name sort_ext$merge_in_iocb_ptrs sort_ext$mii sort_ext$unique_prefix sort_ext$whoami sort_ext$write_count LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000117 46 000127 56 000134 63 000135 64 000137 65 000146 66 000154 67 000156 68 000160 70 000202 71 000225 73 000231 74 000264 77 000266 81 000276 82 000300 83 000315 87 000317 91 000324 92 000337 94 000343 97 000345 98 000347 99 000413 101 000414 102 000416 103 000464 104 000466 105 000467 106 000471 110 000561 113 000643 115 000644 116 000646 117 000652 120 000653 121 000670 124 000672 126 000677 127 000701 130 000702 131 000713 134 000715 138 000722 139 000733 143 000735 147 000744 148 000755 150 000757 154 000760 156 000771 157 000775 161 001064 165 001145 166 001151 170 001152 171 001160 173 001165 174 001175 175 001207 177 001221 178 001233 180 001243 181 001254 182 001271 184 001306 185 001311 ----------------------------------------------------------- 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