dcl 1 sort_ext$acl(1) ext, 2 x_user_id char(32), 2 x_modes bit(36), 2 x_pad bit(36), 2 x_acl_code fixed bin(35); dcl 1 acl(1) defined(sort_ext$acl), 2 user_id char(32), 2 modes bit(36), 2 pad bit(36), 2 acl_code fixed bin(35); dcl sort_ext$b(0: 31) fixed bin(30) ext; /* keys - bit offset (usually) for sort_comp */ dcl b(0: 31) fixed bin(30) defined (sort_ext$b); dcl sort_ext$compares_counter fixed bin(34) ext; /* compares executed, excluding sequence checker */ dcl compares_counter fixed bin(34) defined(sort_ext$compares_counter); dcl sort_ext$compare_sw fixed bin(1) ext; /* 1 = user compare exit specified */ dcl compare_sw fixed bin(1) defined (sort_ext$compare_sw); dcl sort_ext$curr_input_file_attach char(256) ext; /* attach description, current input file (Sort) */ dcl curr_input_file_attach char(256) defined(sort_ext$curr_input_file_attach); dcl sort_ext$curr_input_file_name char(256) ext; /* pathname, current input file (Sort) */ dcl curr_input_file_name char(256) defined (sort_ext$curr_input_file_name); dcl sort_ext$curr_input_file_num fixed bin(17) ext; /* number for current input file (Sort) */ dcl curr_input_file_num fixed bin(17) defined (sort_ext$curr_input_file_num); dcl sort_ext$curr_output_file_attach char(256) ext; /* attach description, output file */ dcl curr_output_file_attach char(256) defined(sort_ext$curr_output_file_attach); dcl sort_ext$curr_output_file_name char(256) ext; /* pathname, output file */ dcl curr_output_file_name char(256) defined (sort_ext$curr_output_file_name); dcl sort_ext$debug_sw bit(1) ext; /* 1 = -debug argument specified */ dcl debug_sw bit(1) defined(sort_ext$debug_sw); dcl sort_ext$disaster2 fixed bin(17) ext; /* 0 = first call to sort_return or merge_return */ dcl disaster2 fixed bin(17) defined (sort_ext$disaster2); dcl sort_ext$dt(0: 31) fixed bin(30) ext; /* keys - datatype for sort_comp */ dcl dt(0: 31) fixed bin(30) defined (sort_ext$dt); dcl sort_ext$input_driver_is_sort bit(1) ext; /* 1 = Sort reads input files, 0 = input_file exit */ dcl input_driver_is_sort bit(1) defined(sort_ext$input_driver_is_sort); dcl sort_ext$input_file_exit_sw bit(1) ext; /* 1 = user input_file exit specified */ dcl input_file_exit_sw bit(1) defined(sort_ext$input_file_exit_sw); dcl sort_ext$input_file_max fixed bin(17) ext; /* number of input files specified [init(10)] */ /* must also change merge_return: merge_read_count & input_file_len */ dcl input_file_max fixed bin(17) defined(sort_ext$input_file_max); dcl sort_ext$input_record_exit_sw fixed bin(1) ext; /* 1 = user input_record exit specified */ dcl input_record_exit_sw fixed bin(1) defined(sort_ext$input_record_exit_sw); dcl sort_ext$input_rec_deleted fixed bin(30) ext; /* number of records deleted at input_record exit */ dcl input_rec_deleted fixed bin(30) defined(sort_ext$input_rec_deleted); dcl sort_ext$input_rec_inserted fixed bin(30) ext; /* number of records inserted _record exit */ dcl input_rec_inserted fixed bin(30) defined(sort_ext$input_rec_inserted); dcl sort_ext$in_buff_ptr ptr ext; /* buffer for an input record (Sort or Merge reading) */ dcl in_buff_ptr ptr defined (sort_ext$in_buff_ptr); dcl sort_ext$leng(0: 31) fixed bin(30) ext; /* keys - length or precision for sort_comp */ dcl leng(0: 31) fixed bin(30) defined (sort_ext$leng); dcl sort_ext$max1 fixed bin(30) ext; /* limits size of unsorted string SS (sort_release) */ dcl max1 fixed bin(30) defined (sort_ext$max1); dcl sort_ext$max2 fixed bin(30) ext; /* limits size of unsorted string SS (sort_release) */ dcl max2 fixed bin(30) defined (sort_ext$max2); dcl sort_ext$max3 fixed bin(30) ext; /* maximum number of records per string SS */ dcl max3 fixed bin(30) defined (sort_ext$max3); dcl sort_ext$max4 fixed bin(30) ext; /* maximum merge order allowed (sort_presort) */ dcl max4 fixed bin(30) defined (sort_ext$max4); dcl sort_ext$max_rec_length fixed bin(30) ext; /* maximum record length permitted by Sort or Merge; */ /* slightly less than sys_info$max_seg_size */ dcl max_rec_length fixed bin(30) defined (sort_ext$max_rec_length); dcl sort_ext$merge_compares fixed bin(34) ext; /* number of compares in merge */ dcl merge_compares fixed bin(34) defined(sort_ext$merge_compares); dcl sort_ext$merge_in_iocb_ptrs(10) ptr ext; /* iox_ iocb's for Merge input files */ dcl merge_in_iocb_ptrs(10) ptr defined(sort_ext$merge_in_iocb_ptrs); dcl sort_ext$merge_input_file_attaches(10) char(256) ext; /* attach descriptions, Merge input files */ dcl merge_input_file_attaches(10) char(256) defined(sort_ext$merge_input_file_attaches); dcl sort_ext$merge_input_file_names(10) char(256) ext; /* pathnames, Merge input files */ dcl merge_input_file_names(10) char(256) defined(sort_ext$merge_input_file_names); dcl sort_ext$mii fixed bin(17) ext; /* merge order for Sort [init(0)] */ dcl mii fixed bin(17) defined (sort_ext$mii); dcl sort_ext$min_rec_length fixed bin(30) ext; /* record length required to include all key fields */ dcl min_rec_length fixed bin(30) defined (sort_ext$min_rec_length); dcl sort_ext$mip (1000) fixed bin(30) ext; /* number of records in each string MS for merge */ dcl mip (1000) fixed bin(30) defined (sort_ext$mip); dcl sort_ext$msp (1000) ptr ext; /* sorted strings MS(1:mii) to be merged */ dcl msp (1000) ptr defined (sort_ext$msp); dcl sort_ext$no_of_keys fixed bin(30) ext; /* number of keys specified */ dcl no_of_keys fixed bin(30) defined(sort_ext$no_of_keys); dcl sort_ext$old_input_file_num fixed bin(17) ext; /* used for identifying files with bad key data */ dcl old_input_file_num fixed bin(17) /* (illegal_procedure handler in sort_presort) */ defined(sort_ext$old_input_file_num); dcl sort_ext$output_driver_is_sort bit(1) ext; /* 1 = Sort or Merge writes output file; */ dcl output_driver_is_sort bit(1) /* 0 = output_file exit */ defined(sort_ext$output_driver_is_sort); dcl sort_ext$output_file_exit_sw bit(1) ext; /* 1 = user output_file exit specified */ dcl output_file_exit_sw bit(1) defined(sort_ext$output_file_exit_sw); dcl sort_ext$output_rec_deleted fixed bin(30) ext; /* number of records deleted at output_record exit */ dcl output_rec_deleted fixed bin(30) defined(sort_ext$output_rec_deleted); dcl sort_ext$output_rec_inserted fixed bin(30) ext; /* number of record inserted at output_record exit */ dcl output_rec_inserted fixed bin(30) defined(sort_ext$output_rec_inserted); dcl sort_ext$output_record_exit_sw fixed bin(1) ext; /* 1 = user output_record exit specified */ dcl output_record_exit_sw fixed bin(1) defined(sort_ext$output_record_exit_sw); dcl sort_ext$presort_compares fixed bin(34) ext; /* number of compares in presort */ dcl presort_compares fixed bin(34) defined(sort_ext$presort_compares); dcl 1 sort_ext$pu(5) ext, 2 x_n fixed bin, /* [init((5) 1)] */ 2 x_rcpu fixed bin(71); dcl 1 pu(5) defined(sort_ext$pu), 2 n fixed bin, 2 rcpu fixed bin(71); dcl sort_ext$read_count fixed bin(30) ext; /* number of records read by Sort (or by Merge) */ dcl read_count fixed bin(30) defined (sort_ext$read_count); dcl sort_ext$rec_ptr_a ptr ext; /* buffer for output_record exit and sequence checker */ dcl rec_ptr_a ptr defined(sort_ext$rec_ptr_a); dcl sort_ext$rec_ptr_b ptr ext; /* buffer for output_record exit and sequence checker */ dcl rec_ptr_b ptr defined(sort_ext$rec_ptr_b); dcl sort_ext$release_count fixed bin(30) ext; /* number of records released to Sort (Merge) */ dcl release_count fixed bin(30) defined (sort_ext$release_count); dcl sort_ext$report_sw bit(2) ext; /* 00 = print summary report, 01 = suppress */ dcl report_sw bit(2) defined (sort_ext$report_sw); dcl sort_ext$return_count fixed bin(30) ext; /* number of records returned from Sort (Merge) */ dcl return_count fixed bin(30) defined (sort_ext$return_count); dcl sort_ext$rev(0: 31) fixed bin(1) ext; /* keys - descending indicator for sort_comp */ dcl rev(0: 31) fixed bin(1) defined (sort_ext$rev); dcl sort_ext$sii fixed bin(30) ext; /* number of records, current string (sort_release) */ dcl sii fixed bin(30) defined (sort_ext$sii); dcl sort_ext$sip ptr ext; /* SI - tree of indices (subscripts) for records */ dcl sip ptr /* being sorted or merged */ defined (sort_ext$sip); dcl sort_ext$sort_compare_exit variable /* entry point, user compare exit procedure */ entry(ptr, ptr) returns(fixed bin(1)) ext; dcl sort_ext$sort_desc_pn char(168) ext; /* pathname, Sort (Merge) Description segment */ dcl sort_desc_pn char(168) defined(sort_ext$sort_desc_pn); dcl sort_ext$sort_input_record_exit variable /* entry point, user input_record exit procedure */ entry(ptr, fixed bin(21), fixed bin, bit(1)) ext; dcl sort_input_record_exit variable entry(ptr, fixed bin(21), fixed bin, bit(1)) defined(sort_ext$sort_input_record_exit); dcl sort_ext$sort_output_record_exit variable /* entry point, user output_record exit procedure */ entry(ptr, fixed bin(21), ptr, fixed bin(21), fixed bin, fixed bin(1), bit(1), bit(1), bit(1)) ext; dcl sort_output_record_exit variable entry(ptr, fixed bin(21), ptr, fixed bin(21), fixed bin, fixed bin(1), bit(1), bit(1), bit(1)) defined(sort_ext$sort_output_record_exit); dcl sort_ext$srp ptr ext; /* SR - position and length of each record */ dcl srp ptr /* in SS string for presort */ defined (sort_ext$srp); dcl sort_ext$ssi fixed bin(30) ext; /* char offset in SS of current record (sort_release) */ dcl ssi fixed bin(30) defined (sort_ext$ssi); dcl sort_ext$ssp ptr ext; /* SS - unsorted string during presort */ dcl ssp ptr defined (sort_ext$ssp); dcl sort_ext$state fixed bin(17) ext; /* state variable controlling sequence of calls to */ dcl state fixed bin(17) /* the various stages of the Sort (Merge) [init(0)] */ defined (sort_ext$state); dcl sort_ext$terminate_print_sw bit(1) ext; /* 0 = command prints (sort_merge_print_report) */ dcl terminate_print_sw bit(1) /* 1 = subroutine prints (sort_merge_terminate) */ defined (sort_ext$terminate_print_sw); dcl 1 sort_ext$time_info(5) ext, /* used for -time information */ 2 x_etime fixed bin(71), 2 x_vtime fixed bin(71), 2 x_pf fixed bin, 2 x_pd_f fixed bin; dcl 1 time_info(5) defined(sort_ext$time_info), 2 etime fixed bin(71), 2 vtime fixed bin(71), 2 pf fixed bin, 2 pd_f fixed bin; dcl sort_ext$time_sw bit(1) ext; /* 1 = -time argument specified */ dcl time_sw bit(1) defined(sort_ext$time_sw); dcl sort_ext$user_out_sw char(32) ext; /* I/O switch for summary report, diagnostics: */ dcl user_out_sw char(32) /* "user_output", "" = suppress, other = user switch */ defined(sort_ext$user_out_sw); dcl sort_ext$unique_prefix char(16) ext; /* unique to each invocation, for temporary names */ dcl unique_prefix char(16) defined (sort_ext$unique_prefix); /* -4- */ dcl sort_ext$w(0: 31) fixed bin(30) ext; /* keys - word (sometimes char) offset for sort_comp */ dcl w(0: 31) fixed bin(30) defined (sort_ext$w); dcl sort_ext$wf_dir_name char(168) aligned ext; /* -td directory pathname argument */ dcl wf_dir_name char(168) aligned defined(sort_ext$wf_dir_name); dcl sort_ext$wf_full_name char(168) ext; /* absolute -td directory pathname */ dcl wf_full_name char(168) defined (sort_ext$wf_full_name); /* -42- */ dcl sort_ext$whoami char(6) ext; /* "sort", "merge", "sort_", "merge_" called */ dcl whoami char(6) defined (sort_ext$whoami); /* -2- */ dcl sort_ext$write_count fixed bin(30) ext; /* number of records written by Sort (Merge) */ dcl write_count fixed bin(30) defined (sort_ext$write_count); */ ----------------------------------------------------------- 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 */