COMPILATION LISTING OF SEGMENT lister_requests_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 07/23/87 1000.2 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(87-07-20,Benjamin), approve(87-07-20,MCR7744), 16* audit(87-07-21,Lippard), install(87-07-23,MR12.1-1045): 17* Fixed so that copy_list will not allow the same segment as input and 18* output. Fixed so that a QUIT and release in the midst of an append_list 19* -prompt session will not result in a partial record remaining in the 20* database. 21* END HISTORY COMMENTS */ 22 23 24 /* Command program for the Lister system. 25* 26* Written April 20, 1973 by Paul A. Green II 27* Modified 740611 by PG to fix duplicate freeing bug 28* Modified 740731 by PG to add search function 29* Modified 740902 by PG to add expand function 30* Modified 741110 by PG to add options to sort and search functions 31* Modified 750330 by PG to use assist_delete_ 32* Modified 750624 by PG to add type function 33* Modified 750713 by PG to add command options to print & search 34* Modified 760427 by PG to add merge function 35* Modified 761101 by PG to convert to Lister command names. 36* Modified 770322 by PG to enhance -sm ctl arg to print_list. 37* Modified 770606 by PG to enhance sort_list. 38* Modified 770630 by PG to have trim_list print number of records deleted. 39* Modified 770707 by PG to change calling sequence to lister_sort_. 40* Modified 770718 by PG to fix bug 6 (sort_list path fn1 fn2 fails) 41* Modified 770718 by PG to implement -sort ctl arg to sort_list and print_list. 42* Modified 770721 by PG to rename print_list to process_list. 43* Modified 770804 by PG to change from -brief to -totals (bug 7), from suffix_pathname_ to expand_pathname_$add_suffix, 44* and to make selecting 0 records an error. 45* Modified 770817 by PG to fix bug causing -sort not to work in process_list unless -select also given. 46* Modified 770831 by PG to get sort_list to look at all arguments, and to require -select. 47* Modified 770913 by PG to eliminate lister_util_ (we can give better error messages w/o it). 48* Modified 770921 by PG to get merge_list to agree with revised documentation, and to fix bugs 004 and 013. 49* Modified 770922 by PG to rename reduce_list to copy_list, and to add -totals to process_list and copy_list. 50* Modified 771018 by PG to fix bug 015 (merge_list path1 path2 failed) 51* Modified 780407 by PG to implement -ag for process_list, and to fix bug 16 (delete .lister if error in cls) 52* Modified 790620 by PG to fix 032 (mls w/o -fn fails), 033 (mls -fn performs too little validation), 53* and 031 (cpls only accepted one control arg!) 54* Modified 790711 by PG to fix 036 (pls fails to truncate output seg if no records are selected, and 55* -extend is not given), and to do sugg 030 (make argument to -output_file of pls optional). 56* Modified 791128 by PG to fix 040 by having everybody check version number of .lister segments. 57* Modified 791128 by PG for numeric selection. 58* Modified 791211 by PG to bring back expand_list. 59* Modified 791217 by PG to fix 047 (change -ex to -ext), and to make default -of ename for pls be listform ename. 60* Modified 800306 by PG to fix bug whereby pls -of failed if -of was followed by another ctl arg. 61* Modified 800318 by PG to add -all control argument to expand_list. 62* Modified 800520 by PB to pass lister_merge_ a status code and check same. 63* Modified 800620 by PB to prevent deleting lister file when no w access. 64* Modified 800702 by PB to add status_list command. 65* Modified 800813 by PB to change status_list to describe_list and add display_list, modify_list and append_list. 66* Modified 801008 by PB to have display_list af requote strings. 67* Modified 801024 by PB to update v1 files in place and have dils default to display all fields. 68* Modified 810106 by PB to allow display_list to specify format > 250 characters. 69* Modified 810226 by PB to have pls pass the listform pathname to lister_print_. 70* Modified 810615 by PB to distinguish between arguments and control arguments in error messages. 71* Modified 810922 by PB to make -bfe work for mdls and have cpls make empty file if no records selected. 72* Modified 811022 by PB to have als not allocate null fields. 73* Modified 811109 by PB to implement cls -of. 74* Modified 830906 by PB to allow -arguments as well as -argument for pls. 75* Modified 840521 by PB to add -sort to display_list. 76* Modified 840521 by PB to add support for severity. 77* Modified 840522 by PB to add -brief_errors to copy_list and sort_list. 78* Modified 840524 by PB to add make_list. 79* Modified 840615 by PB to add support for archived listforms. 80* Modified 840615 by PB to add ssu_ usage stuff. 81* Modified 840618 by PB to prevent 0-length output segments from being created 82* by make_list, copy_list, expand_list, and merge_list 83* in error situations. 84* Modified 840619 by PB to do general housecleaning and modernization. 85* Modified 840621 by PB to change to standalone invocations. 86* Modified 840627 by PB to add -prompt to als. 87* Renamed 840628 by PB from lister.pl1 to lister_requests_.pl1. 88* Modified 841001 by PB to change als -prompt to use command_query_. 89* Modified 841024 by PB to comment out the ssu_ usage stuff. 90* Modified 841130 by PB to add check in cpls to see if input and output files 91* are the same. 92**/ 93 94 /* format: style3 */ 95 lister_requests_: 96 procedure options (packed_decimal); 97 98 /* parameters */ 99 100 dcl bv_info_ptr ptr parameter; 101 dcl bv_sci_ptr ptr parameter; 102 103 /* entries */ 104 105 dcl adjust_bit_count_ entry (char(168), char(32), bit(1) aligned, 106 fixed bin(24), fixed bin(35)), 107 com_err_ entry() options(variable), 108 command_query_ entry() options(variable), 109 cu_$af_arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), 110 ptr), 111 cu_$arg_list_ptr entry () returns (ptr), 112 cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), 113 ptr), 114 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin), 115 delete_$ptr entry (ptr, bit(36) aligned, char(*), fixed bin(35)), 116 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 117 expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), 118 fixed bin(35)), 119 expand_pathname_$component_add_suffix entry (char(*), char(*), char(*), 120 char(*), char(*), fixed bin(35)), 121 get_pdir_ entry () returns (char (168)), 122 get_system_free_area_ entry (ptr), 123 get_temp_segment_ entry (char(*), ptr, fixed bin(35)), 124 get_wdir_ entry () returns (char (168)), 125 ioa_ entry options (variable), 126 initiate_file_ entry (char(*), char(*), bit(*), ptr, fixed bin(24), 127 fixed bin(35)), 128 initiate_file_$component entry (char(*), char(*), char(*), bit(*), ptr, 129 fixed bin(24), fixed bin(35)), 130 initiate_file_$create entry (char(*), char(*), bit(*), ptr, 131 bit(1) aligned, fixed bin(24), fixed bin(35)), 132 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)), 133 pathname_ entry (char(*), char(*)) returns(char(168)), 134 pathname_$component entry (char(*), char(*), char(*)) 135 returns(char(194)), 136 release_temp_segment_ entry (char(*), ptr, fixed bin(35)), 137 ssu_$abort_line entry() options(variable), 138 ssu_$arg_list_ptr entry (ptr, ptr), 139 ssu_$destroy_invocation entry (ptr), 140 ssu_$print_message entry() options(variable), 141 /* ssu_$record_usage entry (ptr, ptr, fixed bin(35)), */ 142 ssu_$return_arg entry (ptr, fixed bin, bit(1) aligned, ptr, 143 fixed bin(21)), 144 ssu_$standalone_invocation entry (ptr, char(*), char(*), ptr, entry, 145 fixed bin(35)), 146 suffixed_name_$new_suffix entry (char(*), char(*), char(*), char(32), 147 fixed bin(35)), 148 terminate_file_ entry (ptr, fixed bin(24), bit(*), fixed bin(35)), 149 unique_chars_ entry (bit (*)) returns (char (15)); 150 151 /* external static */ 152 153 declare ( 154 error_table_$active_function fixed bin (35), 155 error_table_$bad_arg fixed bin (35), 156 error_table_$badopt fixed bin (35), 157 error_table_$inconsistent fixed bin (35), 158 error_table_$moderr fixed bin (35), 159 error_table_$noarg fixed bin (35), 160 error_table_$sameseg fixed bin(35), 161 error_table_$unimplemented_version fixed bin (35), 162 iox_$user_output ptr, 163 lister_codes_$cant_convert fixed bin (35), 164 lister_codes_$display_unknown_fieldname fixed bin (35), 165 lister_codes_$dup_fieldname fixed bin (35), 166 lister_codes_$fieldname_not_alpha_start fixed bin (35), 167 lister_codes_$listform_unknown_fieldname fixed bin (35), 168 lister_codes_$long_fieldname fixed bin (35), 169 lister_codes_$master_eq_output fixed bin (35), 170 lister_codes_$master_eq_update fixed bin (35), 171 lister_codes_$no_current_lister fixed bin (35), 172 lister_codes_$undefined_fieldname fixed bin (35), 173 lister_codes_$update_eq_output fixed bin (35), 174 lister_severity_ fixed bin (35), 175 sys_info$max_seg_size fixed bin (19) 176 ) external static; 177 178 /* automatic */ 179 180 dcl ( 181 append_info_ptr ptr, 182 arg_already_got bit (1) aligned, 183 arg_count fixed bin, 184 arg_getter entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr) 185 variable, 186 arg_index fixed bin, 187 arg_length fixed bin (21), 188 arg_list_ptr ptr, 189 arg_position fixed bin, 190 arg_ptr ptr, 191 assign_info_ptr ptr, 192 brief_errors bit (1) aligned, 193 choice_made bit (1) aligned, 194 cleanup_handler_established bit (1) aligned, 195 code fixed bin (35), 196 code2 fixed bin (35), 197 command bit (1) aligned, 198 componentname char (32), 199 delete_output_file_on_error bit (1), 200 dummy_bc fixed bin (24), 201 dummy_cr bit (1) aligned, 202 error_token char (132), 203 fdelim char (1), 204 first_fn_arg_num fixed bin, 205 format_bitcount fixed bin (24), 206 format_dname char (168), 207 format_ename char (32), 208 format_length fixed bin, 209 format_ptr ptr, 210 function_index fixed bin, 211 i fixed bin, 212 ignore_code fixed bin (35), 213 in_bitcount fixed bin (24), 214 in_dname char (168), 215 in_ename char (32), 216 in_length fixed bin (21), 217 input_ptr ptr, 218 last_fn_arg_num fixed bin, 219 lister_info_ptr ptr, 220 my_name char (16), 221 n_fields fixed bin, 222 name bit (1) aligned, 223 next_char_pos_in_listin fixed bin (21), 224 out_bitcount fixed bin (24), 225 out_dname char (168), 226 out_ename char (32), 227 output_all_fieldnames bit (1) aligned, 228 output_index fixed bin (21), 229 output_file_created bit (1) aligned, 230 output_ptr ptr, 231 overwrite_master_file bit (1) aligned, 232 partial_record_appended bit (1) aligned, 233 prompting bit (1) aligned, 234 saved_version fixed bin, 235 sci_ptr ptr, 236 segment_output bit (1) aligned, 237 select_all bit (1) aligned, 238 selected_records_ptr ptr, 239 rdelim char (1), 240 temp_append_ptr ptr, 241 temp_format_len fixed bin (21), 242 temp_format_ptr ptr, 243 temp_input_len fixed bin (21), 244 temp_input_ptr ptr, 245 temp_output_ptr ptr, 246 truncate bit (1) aligned, 247 width fixed bin, 248 working_dir char (168) 249 ) internal automatic; 250 251 dcl 1 local_qi like query_info; 252 253 dcl 1 status_info, 254 2 print_switches unal, 255 3 print_fdelim bit (1), 256 3 print_fnames bit (1), 257 3 print_rdelim bit (1), 258 3 print_totals bit (1), 259 2 af bit (1) aligned, 260 2 total fixed bin, 261 2 retlen fixed bin (21), 262 2 retptr ptr, 263 2 header bit (1) aligned, 264 2 header_specified bit (1) aligned; 265 266 267 declare (first_s, second_s) char (1) aligned, 268 ( 269 flx, 270 counts (3), 271 merge_type 272 ) fixed bin, 273 (all_fields, done, fatal_error) 274 bit (1) aligned, 275 field_list_ptr ptr; 276 277 /* based */ 278 279 dcl append_str char (append_info.append_length (i)) 280 based (append_info.append_ptr (i)), 281 arg_string char (arg_length) based (arg_ptr), 282 field_list (n_fields) fixed bin based (field_list_ptr), 283 format_string char (format_length) based (format_ptr), 284 out_string char (output_index - 1) based (temp_output_ptr), 285 ret_string char (retlen) varying based (retptr), 286 temp_append_string char ((sys_info$max_seg_size - 1) * 4) varying based (temp_append_ptr), 287 temp_input_file char (temp_input_len) based (temp_input_ptr), 288 temp_format_string char (temp_format_len) based (temp_format_ptr); 289 290 declare 1 append_info (0:field_table.max_field_index) aligned 291 based (append_info_ptr), 292 2 append_ptr ptr, 293 2 append_length fixed bin (21); 294 295 declare 1 assign_info (0:field_table.max_field_index) aligned 296 based (assign_info_ptr), 297 2 assign_ptr ptr, 298 2 assign_length fixed bin (21); 299 300 declare 1 lister_info based (lister_info_ptr), 301 2 database, 302 3 dname char (168), 303 3 ename char (32); 304 305 /* builtin functions */ 306 307 dcl (addr, before, codeptr, dim, divide, hbound, index, lbound, length, null, 308 pointer, rtrim, substr, string, unspec) 309 builtin; 310 311 /* conditions */ 312 313 dcl cleanup condition; 314 315 /* internal static */ 316 317 declare APPEND fixed bin internal static options (constant) init (13); /* function index */ 318 declare COPY fixed bin internal static options (constant) init (8); /* function index */ 319 declare CREATE fixed bin internal static options (constant) init (1); /* function index */ 320 declare DESCRIBE fixed bin internal static options (constant) init (10); /* function index */ 321 declare DISPLAY fixed bin internal static options (constant) init (11); /* function index */ 322 declare EXPAND fixed bin internal static options (constant) init (6); /* function index */ 323 declare MAKE fixed bin internal static options (constant) init (14); /* function index */ 324 declare MERGE fixed bin internal static options (constant) init (5); /* function index */ 325 declare MODIFY fixed bin internal static options (constant) init (12); /* function index */ 326 declare NL char (1) initial (" 327 ") internal static options (constant); 328 declare OFF bit (1) aligned initial ("0"b) internal static options (constant); 329 declare ON bit (1) aligned initial ("1"b) internal static options (constant); 330 declare PROCESS fixed bin internal static options (constant) init (3); /* function index */ 331 declare SORT fixed bin internal static options (constant) init (2); /* function index */ 332 declare TRIM fixed bin internal static options (constant) init (9); /* function index */ 333 declare process_dir char (168) initial ("") internal static; 334 declare lister_version char (6) initial ("11.0d") internal static options (constant); 335 336 /* include files */ 337 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 338 339 2 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 2 2 2 3 /* control flag bit string passed to delete_$path and delete_$ptr 2 4* 2 5* Jay Pattin 6/6/83 */ 2 6 2 7 declare 1 delete_options, 2 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 2 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 2 10 2 directory bit (1) unaligned, /* ON = delete directories */ 2 11 2 segment bit (1) unaligned, /* ON = delete segments */ 2 12 2 link bit (1) unaligned, /* ON = delete links */ 2 13 2 chase bit (1) unaligned, /* ON = delete through links */ 2 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 2 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 2 16 2 mbz bit (28) unaligned; 2 17 2 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 340 341 3 1 /* ====== BEGIN INCLUDE FILE lister_entries.incl.pl1 =================================== */ 3 2 3 3 /* 3 4* Modified 800521 by PB to add code to calling sequence for lister_merge_. 3 5* Modified 800702 by PB to add lister_status_. 3 6* Modified 800813 by PB to add lister_assign_. 3 7* Modified 800826 by PB to add lister_create_record_$retain_uid. 3 8* Modified 801008 by PB to add display to calling sequence for lister_print_. 3 9* Modified 801024 by PB to add lister_convert_. 3 10* Modified 810226 by PB to add listform_path to calling sequence for lister_print_. 3 11**/ 3 12 3 13 dcl lister_assign_ 3 14 entry (ptr, bit (1) aligned, ptr, ptr); 3 15 /* param 1 (input) ptr to lister segment */ 3 16 /* param 2 (input) "1"b iff all records are to be modified */ 3 17 /* param 3 (input) ptr to selected records */ 3 18 /* param 4 (input) ptr to assign info structure */ 3 19 3 20 dcl lister_compile_listin_ 3 21 entry (ptr, ptr, fixed bin (21), ptr, fixed bin, char (*), fixed bin (35)); 3 22 /* param 1 (input) ptr to new file segment */ 3 23 /* param 2 (input) ptr to listin segment */ 3 24 /* param 3 (input) length in chars of listin segment */ 3 25 /* param 4 (input) ptr to system free area */ 3 26 /* param 5 (output) number of records parsed */ 3 27 /* param 6 (output) error token, if any errors */ 3 28 /* param 7 (output) status code */ 3 29 3 30 dcl lister_compile_select_ 3 31 entry (char (*), ptr, ptr, ptr, char (*), fixed bin (35)); 3 32 /* param 1 (input) select expression to be parsed */ 3 33 /* param 2 (input) ptr to file that will be searched */ 3 34 /* param 3 (input) ptr to area */ 3 35 /* param 4 (output) ptr to compiled select expression */ 3 36 /* param 5 (output) error token */ 3 37 /* param 6 (output) standard status code */ 3 38 3 39 dcl lister_compile_sort_ 3 40 entry (char (*), ptr, ptr, ptr, char (*), fixed bin (35)); 3 41 /* param 1 (input) sort string to be parsed */ 3 42 /* param 2 (input) ptr to file */ 3 43 /* param 3 (input) ptr to area */ 3 44 /* param 4 (output) ptr to compiled sort expression */ 3 45 /* param 5 (output) token in error (if any error) */ 3 46 /* param 6 (output) standard status code */ 3 47 3 48 dcl lister_convert_ entry (ptr, fixed bin (35)); 3 49 /* param 1 (input) input file ptr */ 3 50 /* param 2 (output) standard status code */ 3 51 3 52 dcl lister_copy_file_head_ 3 53 entry (ptr, ptr); 3 54 /* param 1 (input) input file ptr */ 3 55 /* param 2 (input) output file ptr */ 3 56 3 57 dcl lister_copy_records_ 3 58 entry (ptr, ptr, ptr); 3 59 /* param 1 (input) ptr to input file */ 3 60 /* param 2 (input) ptr to output file */ 3 61 /* param 3 (input) ptr to list of records to be copied */ 3 62 3 63 dcl lister_compare_field_tables_ 3 64 entry (ptr, ptr) 3 65 returns (bit (1) aligned); 3 66 /* param 1 (input) ptr to file 1 */ 3 67 /* param 2 (input) ptr to file 2 */ 3 68 /* return (output) "1"b if field tables are equal */ 3 69 3 70 dcl lister_create_record_ 3 71 entry (ptr) 3 72 returns (ptr); 3 73 /* param 1 (input) file ptr */ 3 74 /* return (output) record ptr */ 3 75 3 76 dcl lister_create_record_$after 3 77 entry (ptr, ptr) 3 78 returns (ptr); 3 79 /* param 1 (input) ptr to file to create record in */ 3 80 /* param 2 (input) ptr to record that is to be just before created record */ 3 81 /* return (output) ptr to created record */ 3 82 3 83 dcl lister_create_record_$retain_uid 3 84 entry (ptr, fixed bin (24) unsigned unaligned) 3 85 returns (ptr); 3 86 /* param 1 (input) file ptr */ 3 87 /* param 2 (input) uid to be retained */ 3 88 /* return (output) record ptr */ 3 89 3 90 dcl lister_delete_ 3 91 entry (ptr, ptr); 3 92 /* param 1 (input) file ptr */ 3 93 /* param 2 (input) ptr to list of record to be deleted */ 3 94 3 95 dcl lister_expand_ 3 96 entry (ptr, ptr, fixed bin (21), fixed bin, bit (1) aligned) 3 97 returns (fixed bin); 3 98 /* param 1 (input) file ptr */ 3 99 /* param 2 (input) ptr to output segment */ 3 100 /* param 3 (in/out) 1-origin char index of next free char in output segment */ 3 101 /* param 4 (input) line length to use */ 3 102 /* param 5 (input) "1"b iff field names are always to appear */ 3 103 /* return (output) number of records expanded */ 3 104 3 105 dcl lister_hash_fid_ reducible 3 106 entry (ptr, char (*)) 3 107 returns (fixed bin); 3 108 /* param 1 (input) file ptr */ 3 109 /* param 2 (input) field identifier */ 3 110 /* return (output) field index */ 3 111 3 112 dcl lister_hash_fid_$enter irreducible 3 113 entry (ptr, char (*)) 3 114 returns (ptr); 3 115 /* param 1 (input) file ptr */ 3 116 /* param 2 (input) field identifier */ 3 117 /* return (output) field identifier node offset */ 3 118 3 119 dcl lister_format_parse_ 3 120 entry (ptr, ptr, char (*), ptr, char (*), fixed bin (35)); 3 121 /* param 1 (input) ptr to file containing field table */ 3 122 /* param 2 (input) ptr to area */ 3 123 /* param 3 (input) listform string */ 3 124 /* param 4 (output) format table ptr */ 3 125 /* param 5 (output) error token */ 3 126 /* param 6 (output) status code */ 3 127 3 128 dcl lister_merge_ entry (ptr, ptr, ptr, (*) fixed bin, fixed bin, fixed bin, fixed bin(35)) 3 129 returns ((3) fixed bin); 3 130 /* param 1 (input) input file ptr */ 3 131 /* param 2 (input) update file ptr */ 3 132 /* param 3 (input) output file ptr */ 3 133 /* param 4 (input) array of fields to merge on */ 3 134 /* param 5 (input) 1-origin number of elements in field_list */ 3 135 /* param 6 (input) type of merge */ 3 136 /* param 7 (output) status code */ 3 137 /* return (output) count of number of input, update, output records */ 3 138 3 139 dcl lister_print_ entry (ptr, ptr, ptr, fixed bin (21), bit (1) aligned, 3 140 ptr, ptr, fixed bin, bit (1) aligned, bit (1) aligned, char (*)); 3 141 /* param 1 (input) ptr to file to be printed */ 3 142 /* param 2 (input) format table ptr */ 3 143 /* param 3 (input) ptr to base of output segment */ 3 144 /* param 4 (in/out) index of next output character */ 3 145 /* param 5 (input) "1"b iff all records are to be printed */ 3 146 /* param 6 (input) ptr to list of records to print */ 3 147 /* null => print no records */ 3 148 /* param 7 (input) ptr to argument list for -ag */ 3 149 /* param 8 (input) index of -ag in above argument list */ 3 150 /* param 9 (input) brief error flag */ 3 151 /* param 10 (input) "1"b iff called by display_list af */ 3 152 /* param 11 (input) pathname of listform segment */ 3 153 3 154 dcl lister_select_ entry (ptr, ptr, ptr, ptr) 3 155 returns (fixed bin); 3 156 /* param 1 (input) ptr to file to be searched */ 3 157 /* param 2 (input) ptr to select_expression */ 3 158 /* param 3 (input) ptr to area */ 3 159 /* param 4 (output) ptr to list of selected records */ 3 160 /* return (output) number of records found */ 3 161 3 162 dcl lister_sort_ entry (ptr, ptr, ptr); 3 163 /* param 1 (input) file ptr */ 3 164 /* param 2 (input) ptr to list of records */ 3 165 /* param 3 (input) ptr to sort list array */ 3 166 3 167 dcl lister_status_ entry (ptr, char (*), bit (1) aligned, ptr); 3 168 /* param 1 (input) ptr to lister segment */ 3 169 /* param 2 (input) entryname of lister segment */ 3 170 /* param 3 (input) on if no selection expression given */ 3 171 /* param 4 (input) ptr to status info structure */ 3 172 3 173 /* ------ END INCLUDE FILE lister_entries.incl.pl1 ----------------------------------- */ 342 343 4 1 /* ====== BEGIN INCLUDE FILE lister_structures.incl.pl1 ================================ */ 4 2 4 3 /* 4 4* Modified 800813 by PB to add PUT_UID to listform declarations. 4 5* Modified 800825 by PB for version 2 lister file. 4 6* Modified 840523 by PB to add SELECT_BEG and SELECT_END. 4 7**/ 4 8 /* MASTER DECLARATIONS */ 4 9 4 10 /* format: style3 */ 4 11 dcl lister_file_version_2 4 12 fixed bin initial (2) internal static options (constant); 4 13 4 14 dcl 1 input_file based (in_file_ptr) aligned, 4 15 2 ( 4 16 field_table_offset, 4 17 record_head, 4 18 record_tail, 4 19 unused (2) 4 20 ) offset (input_file.area), 4 21 2 next_uid fixed bin (24) unsigned, 4 22 2 version fixed bin, 4 23 2 n_records fixed bin (17), 4 24 2 area area (261112); 4 25 4 26 dcl 1 update_file based (up_file_ptr) aligned, 4 27 2 ( 4 28 field_table_offset, 4 29 record_head, 4 30 record_tail, 4 31 unused (2) 4 32 ) offset (update_file.area), 4 33 2 next_uid fixed bin (24) unsigned, 4 34 2 version fixed bin, 4 35 2 n_records fixed bin (17), 4 36 2 area area (261112); 4 37 4 38 dcl 1 output_file based (out_file_ptr) aligned, 4 39 2 ( 4 40 field_table_offset, 4 41 record_head, 4 42 record_tail, 4 43 unused (2) 4 44 ) offset (output_file.area), 4 45 2 next_uid fixed bin (24) unsigned, 4 46 2 version fixed bin, 4 47 2 n_records fixed bin (17), 4 48 2 area area (261112); 4 49 4 50 dcl 1 input_record based (recordp) aligned, 4 51 2 next offset (input_file.area), 4 52 2 uid fixed bin (24) unsigned unaligned, 4 53 2 max_field_index fixed bin (12) unsigned unaligned, 4 54 2 field dim (0:field_table.max_field_index refer (input_record.max_field_index)) 4 55 offset (input_file.area); 4 56 4 57 dcl 1 update_record based aligned, 4 58 2 next offset (update_file.area), 4 59 2 uid fixed bin (24) unsigned unaligned, 4 60 2 max_field_index fixed bin (12) unsigned unaligned, 4 61 2 field dim (0:field_table.max_field_index refer (update_record.max_field_index)) 4 62 offset (update_file.area); 4 63 4 64 dcl 1 output_record based aligned, 4 65 2 next offset (output_file.area), 4 66 2 uid fixed bin (24) unsigned unaligned, 4 67 2 max_field_index fixed bin (12) unsigned unaligned, 4 68 2 field dim (0:field_table.max_field_index refer (output_record.max_field_index)) 4 69 offset (output_file.area); 4 70 4 71 dcl atom char (atom_length) based (atomp) varying aligned, 4 72 atom_length fixed bin initial (0), /* for table option */ 4 73 atomp ptr; 4 74 4 75 dcl (fidp, field_table_ptr, format_table_ptr, in_file_ptr, ltp, recordp, select_ptr, out_file_ptr, up_file_ptr) 4 76 ptr, 4 77 n fixed bin; 4 78 4 79 dcl 1 field_table based (field_table_ptr) aligned, 4 80 2 record_delimiter 4 81 unal char (1), 4 82 2 field_delimiter unal char (1), 4 83 2 max_field_index unal fixed bin (17), 4 84 2 hash_field_id_to_index 4 85 dimension (0:18) offset, 4 86 2 index_to_field_id 4 87 dimension (0:n refer (field_table.max_field_index)) offset; 4 88 4 89 dcl 1 field_identifier based (fidp) aligned, 4 90 2 next offset, 4 91 2 field_index unal fixed bin (17), 4 92 2 size unal fixed bin (17), 4 93 2 string unal char (n refer (field_identifier.size)); 4 94 4 95 dcl system_area area (261120) based (area_ptr); 4 96 dcl area_ptr ptr; 4 97 4 98 /* LISTFORM DECLARATIONS */ 4 99 4 100 declare ( 4 101 PUT_LITERAL initial (-1), 4 102 PUT_SPACES initial (-2), 4 103 PUT_END initial (-3), 4 104 PUT_DATE initial (-4), 4 105 PUT_TIME initial (-5), 4 106 PUT_RECORD_COUNT initial (-6), 4 107 PUT_ARGUMENT initial (-7), 4 108 PUT_UID initial (-8) 4 109 ) fixed bin internal static; 4 110 4 111 dcl 1 format_table aligned based (format_table_ptr), 4 112 2 size fixed bin (17) unal, 4 113 2 before fixed bin (17) unal, 4 114 2 after fixed bin (17) unal, 4 115 2 record fixed bin (17) unal, 4 116 2 literal_table ptr, 4 117 2 item dim (n refer (format_table.size)), 4 118 3 action fixed bin (17) unal, 4 119 3 justification bit (2) unal, 4 120 3 argument_number 4 121 fixed bin (15) unal, 4 122 3 width fixed bin (21); 4 123 4 124 dcl 1 literal_table aligned based (ltp), 4 125 2 size fixed bin, /* number of slots allocated */ 4 126 2 n_literals fixed bin, /* number of slots in use */ 4 127 2 literal dim (n refer (literal_table.size)) ptr unal; 4 128 4 129 dcl ( 4 130 flush_left initial ("00"b), 4 131 center initial ("01"b), 4 132 flush_right initial ("10"b) 4 133 ) bit (2) aligned internal static options (constant); 4 134 4 135 dcl MIN_FIELD_INDEX fixed bin initial (0) internal static options (constant); 4 136 4 137 dcl 1 list_node aligned based, 4 138 2 size fixed bin, 4 139 2 list dimension (n refer (list_node.size)) ptr; 4 140 4 141 /* SELECT DECLARATIONS */ 4 142 4 143 dcl 1 select_expression based (select_ptr) aligned, 4 144 2 literal_table_ptr 4 145 ptr, 4 146 2 size fixed bin, 4 147 2 last_element fixed bin, 4 148 2 element dim (n refer (select_expression.size)), 4 149 3 opcode unal bit (9), 4 150 3 not unal bit (1), 4 151 3 top unal bit (1), 4 152 3 unused unal bit (7), 4 153 3 field_index unal fixed bin (8), 4 154 3 literal_index unal fixed bin (8), 4 155 1 element aligned, 4 156 2 opcode fixed bin, 4 157 2 not bit (1) aligned, 4 158 2 top bit (1) aligned, 4 159 2 field_index fixed bin, 4 160 2 literal_index fixed bin, 4 161 operand1 fixed bin defined (element.field_index), 4 162 operand2 fixed bin defined (element.literal_index); 4 163 4 164 dcl ( 4 165 SELECT_AND init ("000000001"b), 4 166 SELECT_OR init ("000000010"b), 4 167 SELECT_NOT init ("000000011"b), 4 168 SELECT_FIND init ("000000100"b), 4 169 SELECT_EQ init ("000000101"b), 4 170 SELECT_LT init ("000000110"b), 4 171 SELECT_GT init ("000000111"b), 4 172 SELECT_LE init ("000001000"b), 4 173 SELECT_GE init ("000001001"b), 4 174 SELECT_NEQ init ("000001010"b), 4 175 SELECT_NLT init ("000001011"b), 4 176 SELECT_NGT init ("000001100"b), 4 177 SELECT_NLE init ("000001101"b), 4 178 SELECT_NGE init ("000001110"b), 4 179 SELECT_BEG init ("000001111"b), 4 180 SELECT_END init ("000010000"b) 4 181 ) bit (9) aligned internal static; 4 182 4 183 dcl ( 4 184 ANY_FIELD init (-1), 4 185 NULL_FIELD init (-2), 4 186 NUMERIC_FIELD init (-3), 4 187 UID init (-4) 4 188 ) aligned fixed bin (8) static; 4 189 4 190 dcl 1 numeric_atom aligned based (atomp), 4 191 2 flag fixed bin (35), /* must be -1 */ 4 192 2 value float dec (29) unal; 4 193 4 194 dcl numeric_flag fixed bin (35) internal static initial (-1) options (constant); 4 195 4 196 /* SORT DECLARATIONS */ 4 197 4 198 declare n_items_to_sort fixed bin, 4 199 sort_list_ptr ptr; 4 200 4 201 declare 1 sort_list aligned based (sort_list_ptr), 4 202 2 n_keys fixed bin, 4 203 2 key (n_items_to_sort refer (sort_list.n_keys)), 4 204 3 field_index fixed bin, 4 205 3 ascending bit (1) aligned, 4 206 3 numeric bit (1) aligned; 4 207 4 208 /* MERGE DECLARATIONS */ 4 209 4 210 dcl ( 4 211 MERGE_ADD init (0), 4 212 MERGE_AND init (1), 4 213 MERGE_OR init (2), 4 214 MERGE_SUBTRACT init (3) 4 215 ) fixed bin internal static options (constant); 4 216 4 217 /* ------ END INCLUDE FILE lister_structures.incl.pl1 -------------------------------- */ 344 345 5 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 5 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 5 3 /* version number changed to 4, 08/10/78 WOS */ 5 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 5 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 5 6 5 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 5 8 2 version fixed bin, /* version of this structure - must be set, see below */ 5 9 2 switches aligned, /* various bit switch values */ 5 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 5 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 5 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 5 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 5 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 5 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 5 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 5 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 5 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 5 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 5 20 5 21 /* Limit of data defined for version 2 */ 5 22 5 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 5 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 5 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 5 26 /* minimum of 30 seconds required for repeat */ 5 27 /* otherwise, no repeat will occur */ 5 28 /* Limit of data defined for version 4 */ 5 29 5 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 5 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 5 32 5 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 5 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 5 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 5 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 5 37 5 38 /* END INCLUDE FILE query_info.incl.pl1 */ 346 347 6 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 6 2 /* format: style2,^inddcls,idind32 */ 6 3 6 4 declare 1 terminate_file_switches based, 6 5 2 truncate bit (1) unaligned, 6 6 2 set_bc bit (1) unaligned, 6 7 2 terminate bit (1) unaligned, 6 8 2 force_write bit (1) unaligned, 6 9 2 delete bit (1) unaligned; 6 10 6 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 6 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 6 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 6 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 6 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 6 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 6 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 6 18 6 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 348 349 350 /* program */ 351 352 create_request: 353 entry (bv_sci_ptr, bv_info_ptr); 354 355 sci_ptr = bv_sci_ptr; 356 lister_info_ptr = bv_info_ptr; 357 function_index = CREATE; 358 my_name = "create"; 359 command = OFF; 360 goto create_common; 361 362 create_list: 363 cls: 364 entry; 365 366 function_index = CREATE; 367 my_name = "create_list"; 368 command = ON; 369 370 create_common: 371 call initialize; 372 out_ename = ""; 373 374 if ^command 375 then do; 376 if lister_info.database.ename = "" 377 then call ssu_$abort_line (sci_ptr, lister_codes_$no_current_lister); 378 out_ename = lister_info.database.ename; 379 out_dname = lister_info.database.dname; 380 arg_ptr = addr (lister_info.database.ename); 381 arg_length = length (rtrim (lister_info.database.ename)) - 7; 382 end; 383 else do; 384 call get_next_argument; 385 if code ^= 0 386 then go to usage_ (function_index); 387 end; 388 389 cleanup_handler_established = ON; 390 on cleanup call cleanup_handler; 391 392 call get_input_segment ("listin", input_ptr, in_bitcount, code); 393 if code ^= 0 394 then go to cleanup_and_return; 395 396 /* No version number check necessary or possible... */ 397 398 print_totals = OFF; 399 call get_next_argument; 400 do while (code = 0); 401 if arg_string = "-tt" | arg_string = "-totals" 402 then print_totals = ON; 403 else if command & (arg_string = "-of" | arg_string = "-output_file") 404 then do; 405 call get_next_argument; 406 if code ^= 0 407 then call ssu_$abort_line (sci_ptr, code, "Following -output_file"); 408 call expand_pathname_$add_suffix (arg_string, "lister", out_dname, out_ename, code); 409 if code ^= 0 410 then call ssu_$abort_line (sci_ptr, code); 411 end; 412 else if ^command & (arg_string = "-if" | arg_string = "-input_file") 413 then do; 414 call get_next_argument; 415 if code ^= 0 416 then call ssu_$abort_line (sci_ptr, code, "Following -input_file"); 417 call terminate_file_ (input_ptr, 0, TERM_FILE_TERM, code); 418 if code ^= 0 419 then call ssu_$abort_line (sci_ptr, code); 420 call get_input_segment ("listin", input_ptr, in_bitcount, code); 421 if code ^= 0 422 then call ssu_$abort_line (sci_ptr, code); 423 end; 424 else call badarg; 425 426 call get_next_argument; 427 end; 428 429 if command & out_ename = "" 430 then do; 431 call suffixed_name_$new_suffix (in_ename, "listin", "lister", out_ename, code); 432 if code ^= 0 433 then call ssu_$abort_line (sci_ptr, code); 434 out_dname = working_dir; 435 end; 436 437 call get_output_segment (out_dname, out_ename, output_ptr, out_bitcount, code); 438 if code ^= 0 439 then goto cleanup_and_return; 440 441 in_length = divide (in_bitcount + 8, 9, 24, 0); 442 call lister_compile_listin_ (output_ptr, input_ptr, in_length, area_ptr, n, error_token, code); 443 if code ^= 0 444 then do; 445 if code ^= error_table_$moderr 446 then do; 447 unspec (delete_options) = OFF; 448 delete_options.force = ON; 449 delete_options.segment = ON; 450 delete_options.link = ON; 451 delete_options.chase = ON; 452 call delete_$ptr (output_ptr, string (delete_options), my_name, ignore_code); 453 output_ptr = null; 454 call ssu_$abort_line (sci_ptr, code, "^a", error_token); 455 end; 456 else call ssu_$abort_line (sci_ptr, code, "^a", out_ename); 457 end; 458 459 if print_totals 460 then call ioa_ ("create_list: ^d record^[s^].", n, (n ^= 1)); 461 462 call adjust_bit_count_ (out_dname, out_ename, OFF, out_bitcount, code); 463 lister_severity_ = 0; 464 465 go to finish; 466 467 make_request: 468 entry (bv_sci_ptr, bv_info_ptr); 469 470 sci_ptr = bv_sci_ptr; 471 lister_info_ptr = bv_info_ptr; 472 function_index = MAKE; 473 my_name = "make"; 474 command = OFF; 475 goto make_common; 476 477 make_list: 478 mkls: entry; 479 480 function_index = MAKE; 481 my_name = "make_list"; 482 command = ON; 483 484 make_common: 485 call initialize; 486 delete_output_file_on_error = ON; 487 488 if ^command 489 then do; 490 if lister_info.database.ename = "" 491 then call ssu_$abort_line (sci_ptr, lister_codes_$no_current_lister); 492 out_dname = lister_info.database.dname; 493 out_ename = lister_info.database.ename; 494 cleanup_handler_established = ON; 495 on cleanup call cleanup_handler; 496 end; 497 else do; 498 call get_next_argument; 499 if code ^= 0 500 then goto usage_ (function_index); 501 502 cleanup_handler_established = ON; 503 on cleanup call cleanup_handler; 504 505 call expand_pathname_$add_suffix (arg_string, "lister", out_dname, out_ename, code); 506 507 if code ^= 0 508 then call ssu_$abort_line (sci_ptr, code); 509 510 end; 511 512 call get_output_segment (out_dname, out_ename, output_ptr, out_bitcount, code); 513 if code ^= 0 514 then call ssu_$abort_line (sci_ptr, code); 515 516 call get_temp_segment_ (my_name, temp_input_ptr, code); 517 518 if code ^= 0 519 then call ssu_$abort_line (sci_ptr, code); 520 521 first_fn_arg_num, last_fn_arg_num = 0; 522 523 rdelim = "$"; 524 fdelim = "="; 525 526 call get_next_argument; 527 528 do while (code = 0); 529 arg_already_got = OFF; 530 if (arg_string = "-delimiter") | (arg_string = "-dm") 531 then do; 532 call get_next_argument; 533 if code ^= 0 534 then call ssu_$abort_line (sci_ptr, code, "Following -delimiter."); 535 if arg_length ^= 2 536 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "Following -delimiter. ^a.", arg_string); 537 rdelim = substr (arg_string, 1, 1); 538 fdelim = substr (arg_string, 2, 1); 539 end; 540 else if (arg_string = "-field_name") | (arg_string = "-fn") 541 then do; 542 call get_next_argument; 543 if code ^= 0 544 then call ssu_$abort_line (sci_ptr, code, "Following -field_name."); 545 first_fn_arg_num = arg_index - 1; 546 arg_already_got = ON; 547 do while (code = 0 & last_fn_arg_num = 0); 548 if arg_length > 0 549 then if index (arg_string, "-") = 1 550 then last_fn_arg_num = arg_index - 2; 551 else call get_next_argument; 552 else /* null argument -- compile_listin would choke */ 553 call ssu_$abort_line (sci_ptr, lister_codes_$fieldname_not_alpha_start, """""."); 554 end; 555 if last_fn_arg_num = 0 556 then last_fn_arg_num = arg_index - 2; 557 end; 558 else call badarg; 559 if ^arg_already_got 560 then call get_next_argument; 561 562 end; 563 564 if first_fn_arg_num = 0 565 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "The -field_name control argument is required."); 566 567 if first_fn_arg_num > last_fn_arg_num 568 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following -field_name."); 569 570 temp_input_len = sys_info$max_seg_size * 4; 571 substr (temp_input_file, 1, 18) = "Record_delimiter: "; 572 substr (temp_input_file, 19, 1) = rdelim; 573 substr (temp_input_file, 20, 2) = ";" || NL; 574 substr (temp_input_file, 22, 17) = "Field_delimiter: "; 575 substr (temp_input_file, 39, 1) = fdelim; 576 substr (temp_input_file, 40, 2) = ";" || NL; 577 substr (temp_input_file, 42, 13) = "Field_names: "; 578 next_char_pos_in_listin = 55; 579 do i = first_fn_arg_num to last_fn_arg_num; 580 call cu_$arg_ptr_rel (i, arg_ptr, arg_length, code, arg_list_ptr); 581 substr (temp_input_file, next_char_pos_in_listin, arg_length + 2) = arg_string || ", "; 582 next_char_pos_in_listin = next_char_pos_in_listin + arg_length + 2; 583 end; 584 substr (temp_input_file, next_char_pos_in_listin - 2, 2) = ";" || NL; 585 substr (temp_input_file, next_char_pos_in_listin, 9) = "Records:" || NL; 586 temp_input_len = next_char_pos_in_listin + 8; 587 588 call lister_compile_listin_ (output_ptr, temp_input_ptr, temp_input_len, area_ptr, n, error_token, code); 589 590 if code ^= 0 591 then do; 592 if code ^= error_table_$moderr 593 then do; 594 if index (error_token, " on line") ^= 0 595 then error_token = before (error_token, " on line"); 596 unspec (delete_options) = OFF; 597 delete_options.force = ON; 598 delete_options.segment = ON; 599 delete_options.link = ON; 600 delete_options.chase = ON; 601 call delete_$ptr (output_ptr, string (delete_options), my_name, ignore_code); 602 output_ptr = null; 603 call ssu_$abort_line (sci_ptr, code, "^a", error_token); 604 end; 605 else call ssu_$abort_line (sci_ptr, code, "^a", out_ename); 606 end; 607 608 call adjust_bit_count_ (out_dname, out_ename, OFF, out_bitcount, code); 609 610 lister_severity_ = 0; 611 612 goto finish; 613 614 describe_request: 615 entry (bv_sci_ptr, bv_info_ptr); 616 617 sci_ptr = bv_sci_ptr; 618 lister_info_ptr = bv_info_ptr; 619 function_index = DESCRIBE; 620 my_name = "describe"; 621 command = OFF; 622 goto describe_common; 623 624 describe_list: 625 dls: entry; 626 627 function_index = DESCRIBE; 628 my_name = "describe_list"; 629 command = ON; 630 631 describe_common: 632 call initialize; 633 634 if command 635 then do; 636 call get_next_argument; 637 638 if code ^= 0 639 then goto usage_ (function_index); 640 end; 641 642 cleanup_handler_established = ON; 643 on cleanup call cleanup_handler; 644 645 call get_input_segment ("lister", in_file_ptr, 0, code); 646 if code ^= 0 647 then goto cleanup_and_return; 648 649 call check_version_number (in_file_ptr, in_dname, in_ename, code); 650 if code ^= 0 & saved_version ^= 1 /* OK to process old file. */ 651 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 652 653 select_all = ON; 654 header_specified = OFF; 655 656 call get_next_argument; 657 658 if code ^= 0 /* No more args--give 'em everything. */ 659 then unspec (print_switches) = "1111"b; 660 else unspec (print_switches) = "0000"b; 661 662 do while (code = 0); 663 arg_already_got = OFF; 664 if (arg_string = "-sel") | (arg_string = "-select") 665 then do; 666 select_all = OFF; 667 call get_select_arg; 668 if code ^= 0 669 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 670 end; 671 else if (arg_string = "-dm") | (arg_string = "-delimiter") 672 then do; 673 call get_next_argument; 674 if arg_string = "field" 675 then print_fdelim = ON; 676 else if arg_string = "record" 677 then print_rdelim = ON; 678 else do; 679 arg_already_got = ON; 680 print_fdelim = ON; 681 print_rdelim = ON; 682 end; 683 end; 684 else if (arg_string = "-fn") | (arg_string = "-field_name") 685 then print_fnames = ON; 686 else if (arg_string = "-tt") | (arg_string = "-totals") 687 then print_totals = ON; 688 else if (arg_string = "-he") | (arg_string = "-header") 689 then do; 690 if af 691 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "^a not allowed for active function usage.", arg_string); 692 header = ON; 693 header_specified = ON; 694 end; 695 else if (arg_string = "-nhe") | (arg_string = "-no_header") 696 then do; 697 header = OFF; 698 header_specified = ON; 699 end; 700 else call badarg; 701 if ^arg_already_got 702 then call get_next_argument; 703 end; 704 705 if unspec (print_switches) = "0000"b /* Used -sel alone, */ 706 then unspec (print_switches) = "1111"b; /* Gets everything. */ 707 else if ^select_all then print_totals = ON; /* -sel implies -tt. */ 708 709 if print_totals 710 then if ^select_all 711 then total = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 712 else total = input_file.n_records; 713 714 call lister_status_ (in_file_ptr, in_ename, select_all, addr (status_info)); 715 if print_totals & total = 0 & ^select_all 716 then lister_severity_ = 1; 717 else lister_severity_ = 0; 718 719 goto finish; 720 721 modify_request: 722 entry (bv_sci_ptr, bv_info_ptr); 723 724 sci_ptr = bv_sci_ptr; 725 lister_info_ptr = bv_info_ptr; 726 function_index = MODIFY; 727 my_name = "modify"; 728 command = OFF; 729 goto modify_common; 730 731 modify_list: 732 mdls: entry; 733 734 function_index = MODIFY; 735 my_name = "modify_list"; 736 command = ON; 737 738 modify_common: 739 call initialize; 740 741 if command 742 then do; 743 call get_next_argument; 744 745 if code ^= 0 746 then goto usage_ (function_index); 747 end; 748 749 cleanup_handler_established = ON; 750 on cleanup call cleanup_handler; 751 752 call get_input_segment ("lister", in_file_ptr, 0, code); 753 if code ^= 0 754 then goto cleanup_and_return; 755 756 call check_version_number (in_file_ptr, in_dname, in_ename, code); 757 758 if code ^= 0 759 then do; 760 if saved_version = 1 761 then call lister_convert_ (in_file_ptr, code); 762 if code ^= 0 763 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 764 end; 765 766 select_all = ON; 767 print_totals = OFF; 768 769 call get_next_argument; 770 if code ^= 0 771 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "The ""-field_name"" control argument must be specified."); 772 773 do while (code = 0); 774 if (arg_string = "-fn") | (arg_string = "-field_name") 775 then do; 776 if assign_info_ptr = null () 777 then do; 778 field_table_ptr = input_file.field_table_offset; 779 allocate assign_info; 780 do i = 0 to field_table.max_field_index; 781 assign_ptr (i) = null; 782 assign_length (i) = 0; 783 end; 784 end; 785 call get_next_argument; 786 if code ^= 0 787 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 788 if index (arg_string, "-") = 1 789 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 790 i = lister_hash_fid_ (in_file_ptr, (arg_string)); /* Weird stuff happens if not passed by value. */ 791 if i < 0 792 then call ssu_$abort_line (sci_ptr, lister_codes_$undefined_fieldname, "^a", arg_string); 793 if assign_ptr (i) ^= null () 794 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "Multiple assignments to field ""^a"".", arg_string); 795 call get_next_argument; 796 name = OFF; 797 if code = 0 798 then if (arg_string = "-str" | arg_string = "-string") 799 then do; 800 call get_next_argument; 801 name = ON; 802 end; 803 if code ^= 0 804 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: -field_name name {-string} value."); 805 if (index (arg_string, "-") = 1 & name = OFF) 806 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: -field_name name {-string} value."); 807 assign_ptr (i) = arg_ptr; 808 assign_length (i) = arg_length; 809 end; 810 else if (arg_string = "-sel") | (arg_string = "-select") 811 then do; 812 select_all = OFF; 813 call get_select_arg; 814 if code ^= 0 815 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 816 end; 817 else if (arg_string = "-tt") | (arg_string = "-total") | (arg_string = "-totals") 818 then print_totals = ON; 819 else if (arg_string = "-bfe") | (arg_string = "-brief_errors") 820 then brief_errors = ON; 821 else call badarg; 822 call get_next_argument; 823 end; 824 825 if assign_info_ptr = null () 826 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "The ""-field_name"" control argument must be specified."); 827 828 829 if ^select_all 830 then do; 831 n = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 832 if n = 0 833 then do; 834 lister_severity_ = 1; 835 if ^brief_errors 836 then call ssu_$abort_line (sci_ptr, 0, "No records were selected. ^a>^a", in_dname, in_ename); 837 call cleanup_handler; 838 return; 839 end; 840 end; 841 842 call lister_assign_ (in_file_ptr, select_all, selected_records_ptr, assign_info_ptr); 843 844 if print_totals 845 then call ioa_ ("^a: ^d record^[s^] modified.", my_name, n, (n ^= 1)); 846 lister_severity_ = 0; 847 848 goto finish; 849 850 display_request: 851 entry (bv_sci_ptr, bv_info_ptr); 852 853 sci_ptr = bv_sci_ptr; 854 lister_info_ptr = bv_info_ptr; 855 function_index = DISPLAY; 856 my_name = "display"; 857 command = OFF; 858 goto display_common; 859 860 display_list: 861 dils: entry; 862 863 function_index = DISPLAY; 864 my_name = "display_list"; 865 command = ON; 866 867 display_common: 868 call initialize; 869 870 if command 871 then do; 872 call get_next_argument; 873 if code ^= 0 874 then goto usage_ (function_index); 875 end; 876 877 cleanup_handler_established = ON; 878 on cleanup call cleanup_handler; 879 880 call get_input_segment ("lister", in_file_ptr, 0, code); 881 if code ^= 0 882 then goto cleanup_and_return; 883 884 call check_version_number (in_file_ptr, in_dname, in_ename, code); 885 if code ^= 0 & saved_version ^= 1 /* Try to process old file. */ 886 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 887 888 select_all = ON; 889 call get_temp_segment_ (my_name, temp_format_ptr, code); 890 temp_format_len = 0; 891 892 call get_next_argument; 893 894 do while (code = 0); 895 arg_already_got = OFF; 896 if (arg_string = "-fn") | (arg_string = "-field_name") 897 then do; 898 call get_next_argument; 899 if code ^= 0 900 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 901 if index (arg_string, "-") = 1 902 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 903 temp_format_len = temp_format_len + arg_length + 3; 904 substr (temp_format_string, temp_format_len - (arg_length + 2)) = "<" || arg_string || "> "; 905 do while ((code = 0) & (^arg_already_got)); 906 call get_next_argument; 907 if code = 0 908 then if index (arg_string, "-") = 1 909 then arg_already_got = ON; 910 else do; 911 temp_format_len = temp_format_len + arg_length + 3; 912 substr (temp_format_string, temp_format_len - (arg_length + 2)) = "<" || arg_string || "> "; 913 end; 914 end; 915 end; 916 else if (arg_string = "-sel") | (arg_string = "-select") 917 then do; 918 select_all = OFF; 919 call get_select_arg; 920 if code ^= 0 921 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 922 end; 923 else if (arg_string = "-bfe") | (arg_string = "-brief_errors") 924 then brief_errors = ON; 925 else if arg_string = "-st" | arg_string = "-sort" 926 then do; 927 select_all = OFF; 928 call get_sort_arg; 929 if code ^= 0 930 then do; 931 call cleanup_handler; 932 return; 933 end; 934 end; 935 else call badarg; 936 if ^arg_already_got 937 then call get_next_argument; 938 end; 939 940 if temp_format_len = 0 941 then do; 942 field_table_ptr = input_file.field_table_offset; 943 do i = 0 to hbound (field_table.index_to_field_id (*), 1); 944 fidp = pointer (field_table.index_to_field_id (i), input_file.area); 945 if i ^= 0 946 then do; 947 temp_format_len = temp_format_len + 1; 948 substr (temp_format_string, temp_format_len) = " "; 949 end; 950 temp_format_len = temp_format_len + field_identifier.size + 2; 951 substr (temp_format_string, temp_format_len - (field_identifier.size + 1)) = "<" || field_identifier.string || ">"; 952 end; 953 end; 954 955 if ^select_all | sort_list_ptr ^= null 956 then do; 957 n = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 958 if n = 0 959 then do; 960 lister_severity_ = 1; 961 if ^brief_errors 962 then call ssu_$abort_line (sci_ptr, 0, "No records were selected. ^a>^a", in_dname, in_ename); 963 call cleanup_handler; 964 return; 965 end; 966 if sort_list_ptr ^= null 967 then call lister_sort_ (in_file_ptr, selected_records_ptr, sort_list_ptr); 968 end; 969 970 if saved_version = 1 971 then if index (temp_format_string, ":uid") ^= 0 972 then do; 973 call lister_convert_ (in_file_ptr, code); 974 if code ^= 0 975 then do; 976 code = lister_codes_$cant_convert; 977 call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 978 end; 979 end; 980 981 if af 982 then call lister_format_parse_ (in_file_ptr, area_ptr, "" || rtrim (temp_format_string) || " ", format_table_ptr, error_token, code); 983 else call lister_format_parse_ (in_file_ptr, area_ptr, "" || rtrim (temp_format_string) || " 984 ", format_table_ptr, error_token, code); 985 if code ^= 0 986 then do; 987 if code = lister_codes_$listform_unknown_fieldname /* message would reference LISTFORM & line # */ 988 then do; 989 code = lister_codes_$display_unknown_fieldname; 990 call ssu_$abort_line (sci_ptr, code, "^a", substr (error_token, 1, index (error_token, " 991 " /* NL */) - 1)); 992 end; 993 else call ssu_$abort_line (sci_ptr, code); 994 end; 995 996 call get_temp_segment_ (my_name, temp_output_ptr, code); 997 if code ^= 0 998 then do; 999 call cleanup_handler; 1000 return; 1001 end; 1002 output_index = 1; 1003 1004 call lister_print_ (in_file_ptr, format_table_ptr, temp_output_ptr, output_index, select_all, selected_records_ptr, null (), 0, ON, af, ""); 1005 1006 if af 1007 then ret_string = out_string; 1008 else call ioa_ ("^a", out_string); 1009 1010 if n = 0 & ^select_all 1011 then lister_severity_ = 1; 1012 else lister_severity_ = 0; 1013 1014 goto finish; 1015 1016 append_request: 1017 entry (bv_sci_ptr, bv_info_ptr); 1018 1019 sci_ptr = bv_sci_ptr; 1020 lister_info_ptr = bv_info_ptr; 1021 function_index = APPEND; 1022 my_name = "append"; 1023 command = OFF; 1024 goto append_common; 1025 1026 append_list: 1027 als: entry; 1028 1029 function_index = APPEND; 1030 my_name = "append_list"; 1031 command = ON; 1032 1033 append_common: 1034 call initialize; 1035 1036 if command 1037 then do; 1038 call get_next_argument; 1039 if code ^= 0 1040 then goto usage_ (function_index); 1041 end; 1042 1043 cleanup_handler_established = ON; 1044 on cleanup call cleanup_handler; 1045 1046 call get_input_segment ("lister", in_file_ptr, 0, code); 1047 if code ^= 0 1048 then goto cleanup_and_return; 1049 1050 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1051 1052 if code ^= 0 1053 then do; 1054 if saved_version = 1 1055 then call lister_convert_ (in_file_ptr, code); 1056 if code ^= 0 1057 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1058 end; 1059 1060 call get_next_argument; 1061 1062 field_table_ptr = input_file.field_table_offset; 1063 allocate append_info set (append_info_ptr); 1064 append_info.append_length (*) = 0; 1065 append_info.append_ptr (*) = null (); 1066 1067 prompting = ON; 1068 choice_made = OFF; 1069 1070 do while (code = 0); 1071 if (arg_string = "-prompt" | arg_string = "-pmt") 1072 then do; 1073 if choice_made = ON & prompting = OFF 1074 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-prompt and -field_name."); 1075 choice_made = ON; 1076 prompting = ON; 1077 end; 1078 else if (arg_string = "-fn" | arg_string = "-field_name") 1079 then do; 1080 if choice_made = ON & prompting = ON 1081 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-prompt and -field_name."); 1082 choice_made = ON; 1083 prompting = OFF; 1084 call get_next_argument; 1085 if code ^= 0 1086 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 1087 if index (arg_string, "-") = 1 1088 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "Following ""-field_name""."); 1089 i = lister_hash_fid_ (in_file_ptr, (arg_string)); 1090 if i < 0 1091 then call ssu_$abort_line (sci_ptr, lister_codes_$undefined_fieldname, "^a", arg_string); 1092 if append_info.append_ptr (i) ^= null 1093 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "Multiple occurrences of field ""^a"".", arg_string); 1094 call get_next_argument; 1095 name = OFF; 1096 if code = 0 1097 then if (arg_string = "-str" | arg_string = "-string") 1098 then do; 1099 call get_next_argument; 1100 name = ON; 1101 end; 1102 if code ^= 0 1103 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: -field_name name {-string} value."); 1104 if (index (arg_string, "-") = 1 & name = OFF) 1105 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/Usage: -field_name name {-string} value."); 1106 append_info.append_ptr (i) = arg_ptr; 1107 append_info.append_length (i) = arg_length; 1108 call get_next_argument; 1109 end; 1110 else call badarg; 1111 end; 1112 1113 if prompting 1114 then do; 1115 call get_temp_segment_ (my_name, temp_append_ptr, code); 1116 if code ^= 0 1117 then call ssu_$abort_line (sci_ptr, code); 1118 local_qi.version = query_info_version_5; 1119 local_qi.switches.suppress_name_sw = ON; 1120 local_qi.switches.cp_escape_control = "01"b; /* ".." is data */ 1121 local_qi.switches.suppress_spacing = ON; 1122 local_qi.status_code = 0; 1123 local_qi.query_code = 0; 1124 local_qi.question_iocbp = null; 1125 local_qi.answer_iocbp = null; 1126 local_qi.repeat_time = 0; 1127 local_qi.explanation_ptr = null; 1128 local_qi.explanation_len = 0; 1129 recordp = lister_create_record_ (in_file_ptr); 1130 partial_record_appended = ON; 1131 do i = 0 to hbound (field_table.index_to_field_id (*), 1); 1132 fidp = pointer (field_table.index_to_field_id (i), input_file.area); 1133 call command_query_ (addr (local_qi), temp_append_string, 1134 my_name, "^/^a:^2x", field_identifier.string); 1135 if code ^= 0 1136 then call ssu_$abort_line (sci_ptr, code); 1137 if length (temp_append_string) > 0 1138 then do; 1139 atom_length = length (temp_append_string); 1140 allocate atom in (input_file.area) set (atomp); 1141 atom = temp_append_string; 1142 input_record.field (i) = atomp; 1143 end; 1144 end; 1145 partial_record_appended = OFF; 1146 call release_temp_segment_ (my_name, temp_append_ptr, code); 1147 if code ^= 0 1148 then call ssu_$abort_line (sci_ptr, code); 1149 end; 1150 1151 else do; 1152 recordp = lister_create_record_ (in_file_ptr); /* get pointer to a new record */ 1153 partial_record_appended = ON; 1154 do i = 0 to field_table.max_field_index; 1155 if append_info.append_length (i) ^= 0 /* allocate each non-null field */ 1156 then do; 1157 atom_length = append_info.append_length (i); 1158 allocate atom in (input_file.area) set (atomp); 1159 atom = append_str; 1160 input_record.field (i) = atomp; 1161 end; 1162 end; 1163 partial_record_appended = OFF; 1164 end; 1165 1166 lister_severity_ = 0; 1167 1168 free append_info; 1169 goto finish; 1170 1171 expand_request: 1172 entry (bv_sci_ptr, bv_info_ptr); 1173 1174 sci_ptr = bv_sci_ptr; 1175 lister_info_ptr = bv_info_ptr; 1176 function_index = EXPAND; 1177 my_name = "expand"; 1178 command = OFF; 1179 goto expand_common; 1180 1181 expand_list: 1182 els: 1183 entry; 1184 1185 function_index = EXPAND; 1186 my_name = "expand_list"; 1187 command = ON; 1188 1189 expand_common: 1190 call initialize; 1191 1192 delete_output_file_on_error = ON; 1193 1194 if command 1195 then do; 1196 call get_next_argument; 1197 if code ^= 0 1198 then go to usage_ (function_index); 1199 end; 1200 1201 cleanup_handler_established = ON; 1202 on cleanup call cleanup_handler; 1203 1204 call get_input_and_output_segs ("lister", "listin"); 1205 if code ^= 0 1206 then go to cleanup_and_return; 1207 1208 call check_version_number (input_ptr, in_dname, in_ename, code); 1209 if code ^= 0 & saved_version ^= 1 /* OK to process v1 file. */ 1210 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1211 1212 width = 0; /* use default width if none given */ 1213 print_totals = OFF; /* default value */ 1214 output_all_fieldnames = OFF; /* .. */ 1215 1216 code = 0; 1217 call get_next_argument; 1218 1219 do while (code = 0); 1220 if arg_string = "-tt" | arg_string = "-totals" 1221 then print_totals = ON; 1222 else if arg_string = "-ll" | arg_string = "-line_length" 1223 then do; 1224 call get_next_argument; 1225 if code ^= 0 1226 then call ssu_$abort_line (sci_ptr, code, "-line_length must be followed by decimal integer."); 1227 1228 width = cv_dec_check_ (arg_string, code); 1229 if code ^= 0 1230 then call ssu_$abort_line (sci_ptr, 0, "^a contains a non-decimal digit in position ^d.", arg_string, 1231 code); 1232 end; 1233 else if arg_string = "-a" | arg_string = "-all" 1234 then output_all_fieldnames = ON; 1235 else call badarg; 1236 call get_next_argument; 1237 end; 1238 1239 output_index = 1; 1240 n = lister_expand_ (input_ptr, output_ptr, output_index, width, output_all_fieldnames); 1241 1242 if print_totals 1243 then call ioa_ ("expand_list: ^d record^[s^].", n, (n ^= 1)); 1244 1245 out_bitcount = 9 * (output_index - 1); 1246 call close_output_segment (working_dir, out_ename, output_ptr, out_bitcount, code); 1247 1248 lister_severity_ = 0; 1249 1250 go to finish; 1251 1252 merge_request: 1253 entry (bv_sci_ptr, bv_info_ptr); 1254 1255 sci_ptr = bv_sci_ptr; 1256 lister_info_ptr = bv_info_ptr; 1257 function_index = MERGE; 1258 my_name = "merge"; 1259 command = OFF; 1260 goto merge_common; 1261 1262 merge_list: 1263 mls: 1264 entry; 1265 1266 function_index = MERGE; 1267 my_name = "merge_list"; 1268 command = ON; 1269 1270 merge_common: 1271 call initialize; 1272 1273 delete_output_file_on_error = ON; 1274 output_file_created = OFF; 1275 1276 if command 1277 then do; 1278 call get_next_argument; 1279 if code ^= 0 1280 then go to usage_ (function_index); 1281 end; 1282 1283 cleanup_handler_established = ON; 1284 on cleanup call cleanup_handler; 1285 1286 call get_input_segment ("lister", in_file_ptr, 0, code); 1287 if code ^= 0 1288 then go to cleanup_and_return; 1289 1290 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1291 1292 if code ^= 0 1293 then do; 1294 if saved_version = 1 1295 then call lister_convert_ (in_file_ptr, code); 1296 if code ^= 0 1297 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1298 end; 1299 1300 out_dname = in_dname; /* default, unless changed */ 1301 out_ename = in_ename; /* .. */ 1302 1303 n_fields = dim (input_file.field_table_offset -> field_table.index_to_field_id, 1); 1304 allocate field_list set (field_list_ptr) in (system_area); 1305 1306 call get_next_argument; /* get update file */ 1307 if code ^= 0 1308 then go to usage_ (function_index); 1309 1310 call get_input_segment ("lister", up_file_ptr, 0, code); 1311 if code ^= 0 1312 then go to cleanup_and_return; 1313 1314 call check_version_number (up_file_ptr, in_dname, in_ename, code); 1315 if code ^= 0 & saved_version ^= 1 /* OK if update is v1 file. */ 1316 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1317 1318 if in_file_ptr = up_file_ptr /* oh oh */ 1319 then call ssu_$abort_line (sci_ptr, lister_codes_$master_eq_update, "^a>^a", in_dname, in_ename); 1320 1321 call get_next_argument; /* get output file (optional) */ 1322 if code = 0 1323 then if index (arg_string, "-") ^= 1 1324 then do; 1325 call expand_pathname_$add_suffix (arg_string, "lister", out_dname, out_ename, code); 1326 if code ^= 0 1327 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 1328 1329 call initiate_file_$create ( 1330 out_dname, out_ename, RW_ACCESS, out_file_ptr, 1331 output_file_created, dummy_bc, code); 1332 if out_file_ptr = null 1333 then call ssu_$abort_line (sci_ptr, code, "^a>^a", out_dname, out_ename); 1334 1335 call get_next_argument; 1336 end; 1337 1338 if in_file_ptr = out_file_ptr /* oh oh (2) */ 1339 then call ssu_$abort_line (sci_ptr, lister_codes_$master_eq_output, "^a>^a", out_dname, out_ename); 1340 1341 if up_file_ptr = out_file_ptr /* oh oh (3) */ 1342 then call ssu_$abort_line (sci_ptr, lister_codes_$update_eq_output, "^a>^a", out_dname, out_ename); 1343 1344 if out_file_ptr = null /* user didn't specify...overwrite master at end */ 1345 then do; 1346 call initiate_file_$create ( 1347 process_dir, "!lister." || unique_chars_ (""b), RW_ACCESS, 1348 out_file_ptr, dummy_cr, dummy_bc, code2); 1349 if out_file_ptr = null 1350 then call ssu_$abort_line (sci_ptr, code2, "Trying to create temporary segment in process dir."); 1351 overwrite_master_file = ON; 1352 end; 1353 else overwrite_master_file = OFF; 1354 1355 merge_type = MERGE_ADD; /* defaults */ 1356 flx = 0; /* .. */ 1357 done = OFF; /* .. */ 1358 print_totals = OFF; /* .. */ 1359 all_fields = ON; /* .. */ 1360 fatal_error = OFF; 1361 1362 do while (code = 0); 1363 if arg_string = "-add" 1364 then merge_type = MERGE_ADD; 1365 1366 else if arg_string = "-and" 1367 then merge_type = MERGE_AND; 1368 1369 else if arg_string = "-or" 1370 then merge_type = MERGE_OR; 1371 1372 else if arg_string = "-sub" | arg_string = "-subtract" 1373 then merge_type = MERGE_SUBTRACT; 1374 1375 else if arg_string = "-tt" | arg_string = "-totals" 1376 then print_totals = ON; 1377 1378 else if arg_string = "-fn" | arg_string = "-field_name" 1379 then do; 1380 all_fields = OFF; /* user is about to specify which fields are wanted */ 1381 1382 call get_next_argument; 1383 if code ^= 0 1384 then call ssu_$abort_line (sci_ptr, 0, "-field_name must be followed by one or more field names."); 1385 1386 done = OFF; 1387 do while (^done); 1388 if index (arg_string, "-") = 1 1389 then done = ON; /* drop out of -field_name loop */ 1390 else do; 1391 if length (arg_string) > 32 1392 then do; 1393 call ssu_$print_message (sci_ptr, lister_codes_$long_fieldname, arg_string); 1394 fatal_error = ON; 1395 n = -2; 1396 end; 1397 else n = lister_hash_fid_ (in_file_ptr, (arg_string)); 1398 if n = -1 1399 then do; 1400 call ssu_$print_message (sci_ptr, lister_codes_$undefined_fieldname, arg_string); 1401 fatal_error = ON; 1402 end; 1403 1404 do i = lbound (field_list, 1) to flx while (field_list (i) ^= n); 1405 end; 1406 1407 if i <= flx 1408 then do; 1409 call ssu_$print_message (sci_ptr, lister_codes_$dup_fieldname, arg_string); 1410 fatal_error = ON; 1411 end; 1412 1413 if flx = hbound (field_list, 1) 1414 then do; 1415 call ssu_$print_message (sci_ptr, 0, "Too many fieldnames after -fn. Limit ^d", 1416 hbound (field_list, 1)); 1417 fatal_error = ON; 1418 end; 1419 1420 if ^fatal_error 1421 then do; 1422 flx = flx + 1; 1423 field_list (flx) = n; 1424 end; 1425 1426 call get_next_argument; 1427 if code ^= 0 1428 then done = ON; 1429 end; 1430 end; /* end of do while (^done); */ 1431 end; 1432 else call badarg; 1433 1434 if done /* skip call if just came out of -field_name section */ 1435 then done = OFF; /* but call next time */ 1436 else call get_next_argument; 1437 end; 1438 1439 if fatal_error 1440 then go to cleanup_and_return; 1441 1442 if all_fields 1443 then do; 1444 field_table_ptr = input_file.field_table_offset; 1445 n = MIN_FIELD_INDEX; 1446 do flx = lbound (field_list, 1) to hbound (field_list, 1); 1447 field_list (flx) = n; 1448 n = n + 1; 1449 end; 1450 flx = flx - 1; 1451 end; 1452 1453 counts = lister_merge_ (in_file_ptr, up_file_ptr, out_file_ptr, field_list, flx, merge_type, code); 1454 1455 if code ^= 0 1456 then call ssu_$abort_line (sci_ptr, code); 1457 1458 if print_totals 1459 then do; 1460 if counts (1) = 1 & counts (2) = 1 1461 then first_s = ""; 1462 else first_s = "s"; 1463 1464 if counts (3) = 1 1465 then second_s = ""; 1466 else second_s = "s"; 1467 1468 call ioa_ ("merge_list: ^d master and ^d update record^a merged into ^d output record^a.", counts (1), 1469 counts (2), first_s, counts (3), second_s); 1470 end; 1471 1472 free field_list; 1473 if overwrite_master_file 1474 then do; 1475 1476 /* Copy the items individually in order to generate a call to area_assign_. 1477* This routine will optimize copying the area, whereas assigning the 1478* whole level-1 structures will generate inline code to copy all 255K */ 1479 1480 input_file.field_table_offset = output_file.field_table_offset; 1481 input_file.record_head = output_file.record_head; 1482 input_file.record_tail = output_file.record_tail; 1483 input_file.unused (*) = output_file.unused (*); 1484 input_file.next_uid = output_file.next_uid; 1485 input_file.version = output_file.version; 1486 input_file.n_records = output_file.n_records; 1487 input_file.area = output_file.area; 1488 unspec (delete_options) = OFF; 1489 delete_options.force = ON; 1490 delete_options.segment = ON; 1491 delete_options.link = ON; 1492 delete_options.chase = ON; 1493 call delete_$ptr (out_file_ptr, string (delete_options), my_name, code); 1494 out_file_ptr = null; 1495 end; 1496 1497 call adjust_bit_count_ (out_dname, out_ename, OFF, out_bitcount, code); 1498 1499 lister_severity_ = 0; 1500 1501 go to finish; 1502 1503 process_request: 1504 entry (bv_sci_ptr, bv_info_ptr); 1505 1506 sci_ptr = bv_sci_ptr; 1507 lister_info_ptr = bv_info_ptr; 1508 function_index = PROCESS; 1509 my_name = "process"; 1510 command = OFF; 1511 goto process_common; 1512 1513 process_list: 1514 pls: 1515 entry; 1516 1517 function_index = PROCESS; 1518 my_name = "process_list"; 1519 command = ON; 1520 1521 process_common: 1522 call initialize; 1523 1524 delete_output_file_on_error = ON; 1525 1526 if command 1527 then do; 1528 call get_next_argument; 1529 if code ^= 0 1530 then go to usage_ (function_index); 1531 end; 1532 1533 cleanup_handler_established = ON; 1534 on cleanup call cleanup_handler; 1535 1536 call get_input_segment ("lister", in_file_ptr, in_bitcount, code); 1537 if code ^= 0 1538 then go to cleanup_and_return; 1539 1540 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1541 if code ^= 0 & saved_version ^= 1 /* try to process v1 file. */ 1542 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1543 1544 /* Set default listform segment pathname. */ 1545 1546 format_dname = working_dir; 1547 componentname = ""; 1548 1549 call suffixed_name_$new_suffix (in_ename, "lister", "listform", format_ename, code); 1550 if code ^= 0 1551 then call ssu_$abort_line (sci_ptr, code, "^a", in_ename); 1552 1553 /* Set default list segment pathname. */ 1554 1555 out_dname = working_dir; 1556 out_ename = substr (format_ename, 1, length (rtrim (format_ename)) - 4); 1557 1558 /* Set defaults for control arguments. */ 1559 1560 segment_output = OFF; /* .. */ 1561 truncate = ON; /* .. */ 1562 select_all = ON; /* .. */ 1563 arg_position = 0; /* .. */ 1564 print_totals = OFF; /* .. */ 1565 1566 /* Look for user-specified listform pathname. */ 1567 1568 call get_next_argument; 1569 if code = 0 1570 then if index (arg_string, "-") ^= 1 1571 then do; 1572 call expand_pathname_$component_add_suffix (arg_string, "listform", format_dname, format_ename, componentname, code); 1573 if code ^= 0 1574 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 1575 out_ename = substr (format_ename, 1, length (rtrim (format_ename)) - 4); 1576 1577 call get_next_argument; 1578 end; 1579 1580 /* Process control arguments. */ 1581 1582 do while (code = 0); 1583 if (arg_string = "-ext") | (arg_string = "-extend") | (arg_string = "-ex" /* OBSOLETE */) 1584 then truncate = OFF; 1585 else if arg_string = "-of" | arg_string = "-output_file" 1586 then do; 1587 segment_output = ON; 1588 call get_next_argument; 1589 if code = 0 1590 then if index (arg_string, "-") ^= 1 1591 then do; 1592 call expand_pathname_ (arg_string, out_dname, out_ename, code); 1593 if code ^= 0 1594 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 1595 end; 1596 else arg_index = arg_index - 1; 1597 /* look at this arg again, later */ 1598 end; 1599 else if arg_string = "-sel" | arg_string = "-select" 1600 then do; 1601 select_all = OFF; 1602 call get_select_arg; 1603 if code ^= 0 1604 then do; 1605 call cleanup_handler; 1606 return; 1607 end; 1608 end; 1609 else if arg_string = "-st" | arg_string = "-sort" 1610 then do; 1611 select_all = OFF; 1612 call get_sort_arg; 1613 if code ^= 0 1614 then do; 1615 call cleanup_handler; 1616 return; 1617 end; 1618 end; 1619 else if arg_string = "-tt" | arg_string = "-totals" 1620 then print_totals = ON; 1621 else if arg_string = "-bfe" | arg_string = "-brief_errors" 1622 then brief_errors = ON; 1623 else if arg_string = "-ag" | arg_string = "-argument" | arg_string = "-arguments" 1624 then do; 1625 arg_position = arg_index - 1; 1626 arg_index = arg_count + 1; /* force loop termination */ 1627 end; 1628 else call badarg; 1629 call get_next_argument; 1630 end; 1631 1632 if ^segment_output /* user didn't specify -output_file */ 1633 then do; 1634 out_dname = process_dir; 1635 out_ename = "!lister." || unique_chars_ (""b); 1636 end; 1637 1638 call get_output_segment (out_dname, out_ename, output_ptr, out_bitcount, code); 1639 if code ^= 0 1640 then do; 1641 call cleanup_handler; 1642 return; 1643 end; 1644 1645 if truncate 1646 then output_index = 1; 1647 else output_index = divide (out_bitcount + 8, 9, 24, 0) + 1; 1648 1649 if componentname = "" 1650 then do; 1651 1652 call initiate_file_ (format_dname, format_ename, R_ACCESS, format_ptr, format_bitcount, code); 1653 if format_ptr = null 1654 then call ssu_$abort_line (sci_ptr, code, "^a>^a", format_dname, format_ename); 1655 end; 1656 else do; 1657 call initiate_file_$component (format_dname, format_ename, componentname, R_ACCESS, format_ptr, format_bitcount, code); 1658 if format_ptr = null 1659 then call ssu_$abort_line (sci_ptr, code, 1660 pathname_$component (format_dname, format_ename, componentname)); 1661 end; 1662 1663 format_length = divide (format_bitcount + 8, 9, 24, 0); 1664 1665 if saved_version = 1 1666 then if index (format_string, ":uid") ^= 0 1667 then do; 1668 call lister_convert_ (in_file_ptr, code); 1669 if code ^= 0 1670 then call ssu_$abort_line (sci_ptr, lister_codes_$cant_convert, "^a>^a", in_dname, in_ename); 1671 end; 1672 1673 call lister_format_parse_ (in_file_ptr, area_ptr, format_string, format_table_ptr, error_token, code); 1674 if code ^= 0 1675 then call ssu_$abort_line (sci_ptr, code, "^a", error_token); 1676 1677 if select_ptr ^= null | sort_list_ptr ^= null 1678 then do; 1679 n = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 1680 1681 if select_ptr ^= null & n = 0 /* user wanted selection, but we didn't find any */ 1682 then do; 1683 out_bitcount = 9 * (output_index - 1); 1684 /* truncate seg, if necessary */ 1685 call close_output_segment (out_dname, out_ename, output_ptr, out_bitcount, code); 1686 1687 lister_severity_ = 1; 1688 if ^brief_errors 1689 then call ssu_$abort_line (sci_ptr, 0, "No records were selected. ^a>^a", in_dname, in_ename); 1690 call cleanup_handler; 1691 return; 1692 end; 1693 1694 if sort_list_ptr ^= null 1695 then call lister_sort_ (in_file_ptr, selected_records_ptr, sort_list_ptr); 1696 end; 1697 else n = input_file.n_records; 1698 1699 call lister_print_ (in_file_ptr, format_table_ptr, output_ptr, output_index, select_all, selected_records_ptr, 1700 arg_list_ptr, arg_position, brief_errors, OFF, rtrim (format_dname) || ">" || format_ename); 1701 1702 if ^segment_output 1703 then do; 1704 call iox_$put_chars (iox_$user_output, output_ptr, output_index - 1, code); 1705 if code ^= 0 1706 then call ssu_$abort_line (sci_ptr, code, "While writing on user_output"); 1707 1708 unspec (delete_options) = OFF; 1709 delete_options.force = ON; 1710 delete_options.segment = ON; 1711 delete_options.link = ON; 1712 delete_options.chase = ON; 1713 call delete_$ptr (output_ptr, string (delete_options), my_name, code); 1714 output_ptr = null; 1715 end; 1716 else do; 1717 out_bitcount = 9 * (output_index - 1); 1718 call close_output_segment (out_dname, out_ename, output_ptr, out_bitcount, code); 1719 end; 1720 1721 if print_totals 1722 then call ioa_ ("process_list: ^d record^[s^] processed.", n, (n ^= 1)); 1723 1724 lister_severity_ = 0; 1725 1726 go to finish; 1727 1728 copy_request: 1729 entry (bv_sci_ptr, bv_info_ptr); 1730 1731 sci_ptr = bv_sci_ptr; 1732 lister_info_ptr = bv_info_ptr; 1733 function_index = COPY; 1734 my_name = "copy"; 1735 command = OFF; 1736 goto copy_common; 1737 1738 copy_list: 1739 cpls: 1740 entry; 1741 1742 function_index = COPY; 1743 my_name = "copy_list"; 1744 command = ON; 1745 1746 copy_common: 1747 call initialize; 1748 1749 delete_output_file_on_error = ON; 1750 1751 if command 1752 then do; 1753 call get_next_argument; 1754 if code ^= 0 1755 then go to usage_ (function_index); 1756 end; 1757 1758 cleanup_handler_established = ON; 1759 on cleanup call cleanup_handler; 1760 1761 call get_input_segment ("lister", in_file_ptr, 0, code); 1762 if code ^= 0 1763 then go to cleanup_and_return; 1764 1765 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1766 if code ^= 0 & saved_version ^= 1 /* Try to process v1 file. */ 1767 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1768 1769 call get_next_argument; 1770 if code ^= 0 1771 then go to usage_ (function_index); 1772 1773 call expand_pathname_$add_suffix (arg_string, "lister", out_dname, out_ename, code); 1774 if code ^= 0 1775 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 1776 1777 call initiate_file_$create ( 1778 out_dname, out_ename, RW_ACCESS, out_file_ptr, 1779 output_file_created, dummy_bc, code); 1780 if out_file_ptr = null 1781 then call ssu_$abort_line (sci_ptr, code, "^a>^a", out_dname, out_ename); 1782 1783 if in_file_ptr = out_file_ptr 1784 then call ssu_$abort_line (sci_ptr, error_table_$sameseg, 1785 "^a", pathname_ (out_dname, out_ename)); 1786 1787 print_totals = OFF; /* default value */ 1788 select_ptr = null; /* .. */ 1789 1790 call get_next_argument; 1791 do while (code = 0); 1792 if arg_string = "-sel" | arg_string = "-select" 1793 then do; 1794 call get_select_arg; 1795 if code ^= 0 1796 then do; 1797 call cleanup_handler; 1798 return; 1799 end; 1800 end; 1801 else if arg_string = "-tt" | arg_string = "-totals" 1802 then print_totals = ON; 1803 else if arg_string = "-bfe" | arg_string = "-brief_errors" 1804 then brief_errors = ON; 1805 else call badarg; 1806 call get_next_argument; 1807 end; 1808 1809 n = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 1810 1811 call lister_copy_file_head_ (in_file_ptr, out_file_ptr); 1812 if n ^= 0 /* Only copy when some are selected */ 1813 then call lister_copy_records_ (in_file_ptr, out_file_ptr, selected_records_ptr); 1814 else if ^brief_errors 1815 then call ssu_$print_message (sci_ptr, 0, "No records were selected. ^a>^a", in_dname, in_ename); 1816 1817 call adjust_bit_count_ (out_dname, out_ename, OFF, out_bitcount, code); 1818 1819 if print_totals 1820 then call ioa_ ("copy_list: ^d record^[s^] copied.", n, (n ^= 1)); 1821 1822 if select_ptr ^= null & n = 0 1823 then lister_severity_ = 1; 1824 else lister_severity_ = 0; 1825 1826 go to finish; 1827 1828 sort_request: 1829 entry (bv_sci_ptr, bv_info_ptr); 1830 1831 sci_ptr = bv_sci_ptr; 1832 lister_info_ptr = bv_info_ptr; 1833 function_index = SORT; 1834 my_name = "sort"; 1835 command = OFF; 1836 goto sort_common; 1837 1838 sort_list: 1839 sls: 1840 entry; 1841 1842 function_index = SORT; 1843 my_name = "sort_list"; 1844 command = ON; 1845 1846 sort_common: 1847 call initialize; 1848 1849 if command 1850 then do; 1851 call get_next_argument; 1852 if code ^= 0 1853 then go to usage_ (function_index); 1854 end; 1855 1856 cleanup_handler_established = ON; 1857 on cleanup call cleanup_handler; 1858 1859 call get_input_segment ("lister", in_file_ptr, 0, code); 1860 if code ^= 0 1861 then go to cleanup_and_return; 1862 1863 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1864 1865 if code ^= 0 1866 then do; 1867 if saved_version = 1 1868 then call lister_convert_ (in_file_ptr, code); 1869 if code ^= 0 1870 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1871 end; 1872 1873 call get_next_argument; 1874 do while (code = 0); 1875 if arg_string = "-st" | arg_string = "-sort" 1876 then do; 1877 call get_sort_arg; 1878 if code ^= 0 1879 then do; 1880 call cleanup_handler; 1881 return; 1882 end; 1883 end; 1884 else if arg_string = "-bfe" | arg_string = "-brief_errors" 1885 then brief_errors = ON; 1886 else call badarg; 1887 1888 call get_next_argument; 1889 end; 1890 1891 if sort_list_ptr = null 1892 then go to usage_ (function_index); 1893 1894 n = lister_select_ (in_file_ptr, null, area_ptr, selected_records_ptr); 1895 1896 if n = 0 /* no records selected */ 1897 then do; 1898 lister_severity_ = 1; 1899 if ^brief_errors 1900 then call ssu_$abort_line (sci_ptr, 0, "No records were selected. ^a>^a", in_dname, in_ename); 1901 call cleanup_handler; 1902 return; 1903 end; 1904 1905 call lister_sort_ (in_file_ptr, selected_records_ptr, sort_list_ptr); 1906 1907 input_file.record_head = selected_records_ptr -> list_node.list (1); 1908 1909 do i = 1 to n - 1; 1910 selected_records_ptr -> list_node.list (i) -> input_record.next = 1911 selected_records_ptr -> list_node.list (i + 1); 1912 end; 1913 1914 selected_records_ptr -> list_node.list (n) -> input_record.next = null; 1915 input_file.record_tail = selected_records_ptr -> list_node.list (n); 1916 1917 lister_severity_ = 0; 1918 1919 go to finish; 1920 1921 trim_request: 1922 entry (bv_sci_ptr, bv_info_ptr); 1923 1924 sci_ptr = bv_sci_ptr; 1925 lister_info_ptr = bv_info_ptr; 1926 function_index = TRIM; 1927 my_name = "trim"; 1928 command = OFF; 1929 goto trim_common; 1930 1931 trim_list: 1932 tls: 1933 entry; 1934 1935 function_index = TRIM; 1936 my_name = "trim_list"; 1937 command = ON; 1938 1939 trim_common: 1940 call initialize; 1941 1942 if command 1943 then do; 1944 call get_next_argument; 1945 if code ^= 0 1946 then go to usage_ (function_index); 1947 end; 1948 1949 cleanup_handler_established = ON; 1950 on cleanup call cleanup_handler; 1951 1952 call get_input_segment ("lister", in_file_ptr, 0, code); 1953 if code ^= 0 1954 then go to cleanup_and_return; 1955 1956 call check_version_number (in_file_ptr, in_dname, in_ename, code); 1957 1958 if code ^= 0 1959 then do; 1960 if saved_version = 1 1961 then call lister_convert_ (in_file_ptr, code); 1962 if code ^= 0 1963 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 1964 end; 1965 1966 print_totals = OFF; 1967 call get_next_argument; 1968 1969 do while (code = 0); 1970 if arg_string = "-sel" | arg_string = "-select" 1971 then do; 1972 call get_select_arg; 1973 if code ^= 0 1974 then do; 1975 call cleanup_handler; 1976 return; 1977 end; 1978 end; 1979 else if arg_string = "-tt" | arg_string = "-totals" 1980 then print_totals = ON; 1981 else call badarg; 1982 1983 call get_next_argument; 1984 end; 1985 1986 if select_ptr = null /* -select not given */ 1987 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "-select must be specified."); 1988 1989 n = lister_select_ (in_file_ptr, select_ptr, area_ptr, selected_records_ptr); 1990 call lister_delete_ (in_file_ptr, selected_records_ptr); 1991 1992 if print_totals 1993 then call ioa_ ("trim_list: ^d record^[s^] deleted.", n, (n ^= 1)); 1994 1995 if n = 0 1996 then lister_severity_ = 1; 1997 else lister_severity_ = 0; 1998 1999 go to finish; 2000 2001 finish: 2002 if arg_index <= arg_count 2003 then call ssu_$print_message (sci_ptr, 0, "Extra arguments after #^d ignored.", arg_index - 1); 2004 delete_output_file_on_error = OFF; /* no errors when going to finish */ 2005 2006 cleanup_and_return: 2007 if command 2008 then call ssu_$destroy_invocation (sci_ptr); 2009 2010 if cleanup_handler_established 2011 then call cleanup_handler; 2012 return; 2013 2014 usage_ (1): /* create */ 2015 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path {-totals(-tt)}", my_name); 2016 2017 usage_ (2): /* sort */ 2018 call ssu_$abort_line (sci_ptr, 0, 2019 "Usage: ^a path -sort ""sort string"" {-brief_errors(-bfe)}^/where sort string is: " || 2020 "field_name {-ascending(-asc)|-descending(-dsc)|-numeric(-num)|-alphabetic(-alp)}...", 2021 my_name); 2022 2023 usage_ (3): /* process */ 2024 call ssu_$abort_line (sci_ptr, 0, 2025 "Usage: ^a path {fmt_path} {-output_file(-of) {path}|-select(-sel) " || 2026 "select_expr|-sort(-st) sort_string|-extend(-ext)|-totals(-tt)", my_name); 2027 2028 usage_ (5): /* merge */ 2029 call ssu_$abort_line (sci_ptr, 0, 2030 "Usage: ^a in_path up_path {out_path} {-add|-and|-or|-subtract(-sub)" || 2031 "|-field_name(-fn) fn1 ... fnK|-totals(-tt)}", my_name); 2032 2033 usage_ (6): /* expand */ 2034 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path {-totals(-tt)|-line_length(-ll) N|-all(-a)}", 2035 my_name); 2036 2037 usage_ (8): /* copy */ 2038 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a in_path out_path {-select(-sel) " || 2039 "select_expr|-totals(-tt)|-brief_errors(-bfe)}", my_name); 2040 2041 usage_ (9): /* trim */ 2042 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path -select(-sel) select_expr {-totals(-tt)}", 2043 my_name); 2044 usage_ (10): /* describe */ 2045 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path {-field_name(-fn)|-totals(-tt)|" || 2046 "-delimiter(-dm) {record|field}|-select(-sel) select_expr}", my_name); 2047 usage_ (11): /* display */ 2048 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path -field_name(-fn) name1 ... nameN " || 2049 "{-select(-sel) select_expr|-brief_errors(-bfe)}", my_name); 2050 usage_ (12): /* modify */ 2051 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path -field_name(-fn) field_name " || 2052 "{-string(-str)} field_value {-select(-sel) select_expr|-total(-tt)|-brief_errors(-bfe)}", my_name); 2053 usage_ (13): /* append */ 2054 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path {-field_name(-fn) field_name " || 2055 "{-string(-str)} field_value}", my_name); 2056 usage_ (14): /* make */ 2057 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a path -field_name(-fn) name1 ... nameN " || 2058 "{-delimiter(-dm) RF}", my_name); 2059 2060 badarg: proc; 2061 2062 if arg_length < 1 2063 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "Null argument encountered."); 2064 else if index (arg_string, "-") = 1 2065 then call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg_string); 2066 else call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "^a", arg_string); 2067 2068 end badarg; 2069 2070 check_version_number: 2071 procedure (P_file_ptr, P_dname, P_ename, P_code); 2072 2073 /* parameters */ 2074 2075 declare ( 2076 P_file_ptr ptr, 2077 P_dname char (*), 2078 P_ename char (*), 2079 P_code fixed bin (35) 2080 ) parameter; 2081 2082 /* program */ 2083 2084 saved_version = P_file_ptr -> input_file.version; 2085 if saved_version ^= lister_file_version_2 2086 then P_code = error_table_$unimplemented_version; 2087 else P_code = 0; 2088 return; 2089 2090 end check_version_number; 2091 2092 cleanup_handler: 2093 procedure; 2094 2095 /* program */ 2096 2097 if assign_info_ptr ^= null /* extents defined in input file. */ 2098 then free assign_info; /* so must free first. */ 2099 2100 if output_ptr ^= null 2101 then do; 2102 if output_file_created & delete_output_file_on_error 2103 then do; 2104 unspec (delete_options) = OFF; 2105 delete_options.force = ON; 2106 delete_options.segment = ON; 2107 delete_options.link = ON; 2108 delete_options.chase = ON; 2109 call delete_$ptr (output_ptr, string (delete_options), my_name, ignore_code); 2110 end; 2111 else call terminate_file_ (output_ptr, 0, TERM_FILE_TERM, ignore_code); 2112 output_ptr = null; 2113 end; 2114 2115 if format_ptr ^= null 2116 then do; 2117 call terminate_file_ (format_ptr, 0, TERM_FILE_TERM, ignore_code); 2118 format_ptr = null; 2119 end; 2120 2121 if temp_append_ptr ^= null 2122 then call release_temp_segment_ (my_name, temp_append_ptr, ignore_code); 2123 2124 if temp_format_ptr ^= null 2125 then call release_temp_segment_ (my_name, temp_format_ptr, ignore_code); 2126 2127 if temp_output_ptr ^= null 2128 then call release_temp_segment_ (my_name, temp_output_ptr, ignore_code); 2129 2130 if temp_input_ptr ^= null 2131 then call release_temp_segment_ (my_name, temp_input_ptr, ignore_code); 2132 2133 if input_ptr ^= null 2134 then do; 2135 call terminate_file_ (input_ptr, 0, TERM_FILE_TERM, ignore_code); 2136 input_ptr = null; 2137 end; 2138 2139 if partial_record_appended 2140 then do; 2141 n = 1; 2142 allocate list_node 2143 set (selected_records_ptr) in (system_area); 2144 selected_records_ptr -> list_node.size = 1; 2145 selected_records_ptr -> list_node.list (1) = recordp; 2146 call lister_delete_ (in_file_ptr, selected_records_ptr); 2147 free selected_records_ptr -> list_node in (system_area); 2148 input_file.next_uid = input_file.next_uid - 1; 2149 end; 2150 2151 if in_file_ptr ^= out_file_ptr 2152 then do; 2153 if out_file_ptr ^= null 2154 then do; 2155 if output_file_created & delete_output_file_on_error 2156 then do; 2157 unspec (delete_options) = OFF; 2158 delete_options.force = ON; 2159 delete_options.segment = ON; 2160 delete_options.link = ON; 2161 delete_options.chase = ON; 2162 call delete_$ptr (out_file_ptr, string (delete_options), my_name, code); 2163 end; 2164 else call terminate_file_ (out_file_ptr, 0, TERM_FILE_TERM, ignore_code); 2165 out_file_ptr = null; 2166 end; 2167 end; 2168 2169 if in_file_ptr ^= null 2170 then do; 2171 call terminate_file_ (in_file_ptr, 0, TERM_FILE_TERM, ignore_code); 2172 in_file_ptr = null; 2173 end; 2174 2175 if up_file_ptr ^= null 2176 then do; 2177 call terminate_file_ (up_file_ptr, 0, TERM_FILE_TERM, ignore_code); 2178 up_file_ptr = null; 2179 end; 2180 2181 if select_ptr ^= null 2182 then call free_select_expr; 2183 2184 if sort_list_ptr ^= null 2185 then call free_sort_expr; 2186 2187 if format_table_ptr ^= null 2188 then call free_format_table; 2189 2190 if selected_records_ptr ^= null 2191 then do; 2192 free selected_records_ptr -> list_node in (system_area); 2193 selected_records_ptr = null; 2194 end; 2195 2196 return; 2197 2198 end cleanup_handler; 2199 2200 /* Subroutine to close our output segment (truncate, set bitcount) */ 2201 2202 close_output_segment: 2203 procedure (bv_dir, bv_name, bv_output_ptr, bv_bitcount, bv_code); 2204 2205 /* parameters */ 2206 2207 declare ( 2208 bv_dir char (*), 2209 bv_name char (*), 2210 bv_output_ptr ptr, 2211 bv_bitcount fixed bin (24), 2212 bv_code fixed bin (35) 2213 ) parameter; 2214 2215 /* program */ 2216 2217 bv_code = 0; 2218 2219 call terminate_file_ (bv_output_ptr, bv_bitcount, TERM_FILE_TRUNC_BC, bv_code); 2220 if bv_code ^= 0 2221 then call ssu_$abort_line (sci_ptr, bv_code, "Attempting to truncate and set bit count on ^a>^a.", bv_dir, bv_name); 2222 2223 return; 2224 2225 end close_output_segment; 2226 2227 free_format_table: 2228 procedure (); 2229 2230 if format_table.literal_table ^= null 2231 then do; 2232 ltp = format_table.literal_table; 2233 2234 do i = 1 to literal_table.n_literals; 2235 atomp = literal_table.literal (i); 2236 atom_length = length (atom); 2237 free atom in (system_area); 2238 end; 2239 2240 free literal_table in (system_area); 2241 end; 2242 2243 free format_table in (system_area); 2244 format_table_ptr = null; 2245 return; 2246 2247 end free_format_table; 2248 2249 free_select_expr: 2250 procedure (); 2251 2252 /* automatic */ 2253 2254 dcl ltx fixed bin; 2255 2256 /* program */ 2257 2258 ltp = select_expression.literal_table_ptr; 2259 2260 if ltp ^= null 2261 then do; 2262 do ltx = 1 to literal_table.n_literals; 2263 atomp = literal_table.literal (ltx); 2264 2265 if numeric_atom.flag = numeric_flag 2266 then free numeric_atom in (system_area); 2267 else do; 2268 atom_length = length (atom); 2269 free atom in (system_area); 2270 end; 2271 end; 2272 2273 free literal_table in (system_area); 2274 end; 2275 2276 free select_expression in (system_area); 2277 select_ptr = null; 2278 return; 2279 2280 end free_select_expr; 2281 2282 free_sort_expr: 2283 procedure (); 2284 2285 /* program */ 2286 2287 free sort_list in (system_area); 2288 sort_list_ptr = null; 2289 return; 2290 2291 end free_sort_expr; 2292 2293 get_next_argument: 2294 procedure (); 2295 2296 call arg_getter (arg_index, arg_ptr, arg_length, code, arg_list_ptr); 2297 arg_index = arg_index + 1; 2298 2299 end get_next_argument; 2300 2301 get_input_segment: 2302 procedure (bv_suffix, bv_ptr, bv_bitcount, bv_code); 2303 2304 /* parameters */ 2305 2306 declare ( 2307 bv_suffix char (*), 2308 bv_ptr ptr, 2309 bv_bitcount fixed bin (24), 2310 bv_code fixed bin (35) 2311 ) parameter; 2312 2313 /* program */ 2314 2315 if command | bv_suffix ^= "lister" 2316 then do; 2317 call expand_pathname_$add_suffix (arg_string, bv_suffix, in_dname, in_ename, bv_code); 2318 if bv_code ^= 0 2319 then call ssu_$abort_line (sci_ptr, bv_code, "^a", arg_string); 2320 end; 2321 else do; 2322 if lister_info.database.ename = "" 2323 then call ssu_$abort_line (sci_ptr, lister_codes_$no_current_lister); 2324 in_dname = lister_info.database.dname; 2325 in_ename = lister_info.database.ename; 2326 end; 2327 2328 call initiate_file_ (in_dname, in_ename, R_ACCESS, bv_ptr, bv_bitcount, bv_code); 2329 if bv_ptr = null 2330 then call ssu_$abort_line (sci_ptr, bv_code, "^a>^a", in_dname, in_ename); 2331 2332 bv_code = 0; 2333 return; 2334 2335 end get_input_segment; 2336 2337 get_input_and_output_segs: 2338 procedure (bv_in_suffix, bv_out_suffix); 2339 2340 /* parameters */ 2341 2342 dcl ( 2343 bv_in_suffix char (*), 2344 bv_out_suffix char (*) 2345 ) parameter; 2346 2347 /* program */ 2348 2349 if command 2350 then do; 2351 call expand_pathname_$add_suffix (arg_string, bv_in_suffix, in_dname, in_ename, code); 2352 if code ^= 0 2353 then call ssu_$abort_line (sci_ptr, code, "^a", arg_string); 2354 end; 2355 else do; 2356 if lister_info.database.ename = "" 2357 then call ssu_$abort_line (sci_ptr, lister_codes_$no_current_lister); 2358 in_dname = lister_info.database.dname; 2359 in_ename = lister_info.database.ename; 2360 end; 2361 2362 call suffixed_name_$new_suffix (in_ename, bv_in_suffix, bv_out_suffix, out_ename, code); 2363 if code ^= 0 2364 then call ssu_$abort_line (sci_ptr, code, "^a", in_ename); 2365 2366 call initiate_file_ (in_dname, in_ename, R_ACCESS, input_ptr, in_bitcount, code); 2367 if input_ptr = null 2368 then call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 2369 2370 out_dname = working_dir; 2371 call initiate_file_$create ( 2372 out_dname, out_ename, RW_ACCESS, 2373 output_ptr, output_file_created, dummy_bc, code); 2374 if output_ptr = null 2375 then call ssu_$abort_line (sci_ptr, code, "^a>^a", out_dname, out_ename); 2376 2377 code = 0; 2378 return; 2379 2380 end get_input_and_output_segs; 2381 2382 /* Subroutine to create (if necessary) our output segment */ 2383 2384 get_output_segment: 2385 procedure (bv_dir, bv_name, bv_output_ptr, bv_bitcount, bv_code); 2386 2387 /* parameters */ 2388 2389 declare ( 2390 bv_dir char (*), 2391 bv_name char (*), 2392 bv_output_ptr ptr, 2393 bv_bitcount fixed bin (24), 2394 bv_code fixed bin (35) 2395 ) parameter; 2396 2397 /* program */ 2398 2399 bv_code = 0; 2400 2401 call initiate_file_$create ( 2402 bv_dir, bv_name, RW_ACCESS, bv_output_ptr, 2403 output_file_created, bv_bitcount, bv_code); 2404 if bv_output_ptr = null 2405 then call ssu_$abort_line (sci_ptr, bv_code, "Unable to create ^a>^a.", bv_dir, bv_name); 2406 2407 return; 2408 2409 end get_output_segment; 2410 2411 get_select_arg: 2412 procedure (); 2413 2414 call get_next_argument; 2415 if code ^= 0 2416 then call ssu_$abort_line (sci_ptr, code, "-select must be followed by a select expression."); 2417 2418 if saved_version = 1 2419 then if index (arg_string, ":uid") ^= 0 2420 then do; 2421 call lister_convert_ (in_file_ptr, code); 2422 if code ^= 0 2423 then do; 2424 code = lister_codes_$cant_convert; 2425 call ssu_$abort_line (sci_ptr, code, "^a>^a", in_dname, in_ename); 2426 end; 2427 end; 2428 2429 call lister_compile_select_ (arg_string, in_file_ptr, area_ptr, select_ptr, error_token, code); 2430 if code ^= 0 2431 then call ssu_$abort_line (sci_ptr, code, "^a", error_token); 2432 2433 return; 2434 2435 end get_select_arg; 2436 2437 get_sort_arg: 2438 procedure (); 2439 2440 call get_next_argument; 2441 if code ^= 0 2442 then call ssu_$abort_line (sci_ptr, code, "-sort must be followed by a sort string."); 2443 2444 call lister_compile_sort_ (arg_string, in_file_ptr, area_ptr, sort_list_ptr, error_token, code); 2445 if code ^= 0 2446 then call ssu_$abort_line (sci_ptr, code, "^a", error_token); 2447 return; 2448 2449 end get_sort_arg; 2450 2451 abort_entry: 2452 proc; 2453 2454 /* This is where ssu_$abort_line returns for standalone invocations */ 2455 /* The charter is to do a non-local goto. */ 2456 2457 goto cleanup_and_return; 2458 2459 end abort_entry; 2460 2461 /* Procedure to initialize a bunch of variables used by most entries, and to initialize 2462* all variables used by the cleanup handler. NB: this procedure must be quick. */ 2463 2464 initialize: 2465 procedure (); 2466 2467 cleanup_handler_established = OFF; 2468 if command 2469 then do; 2470 call ssu_$standalone_invocation (sci_ptr, my_name, 2471 lister_version, cu_$arg_list_ptr (), abort_entry, 2472 code); 2473 if code ^= 0 2474 then do; 2475 call com_err_ (code, my_name); 2476 goto cleanup_and_return; 2477 end; 2478 /* call ssu_$record_usage (sci_ptr, codeptr (process_list), code); 2479* if code ^= 0 2480* then call ssu_$abort_line (sci_ptr, code); */ 2481 end; 2482 2483 call ssu_$return_arg (sci_ptr, arg_count, af, retptr, retlen); 2484 if af /* Only dls & dils callable as AF, for now. */ 2485 then if function_index = DESCRIBE | function_index = DISPLAY 2486 then arg_getter = cu_$af_arg_ptr_rel; 2487 else call ssu_$abort_line (sci_ptr, error_table_$active_function); 2488 else do; 2489 retptr = null (); 2490 arg_getter = cu_$arg_ptr_rel; 2491 end; 2492 arg_index = 1; 2493 call ssu_$arg_list_ptr (sci_ptr, arg_list_ptr); 2494 2495 brief_errors = OFF; 2496 print_totals = OFF; 2497 delete_output_file_on_error = OFF; 2498 partial_record_appended = OFF; 2499 input_ptr = null; /* initialize variables used in cleanup handler */ 2500 output_ptr = null; 2501 format_ptr = null; 2502 in_file_ptr = null; 2503 up_file_ptr = null; 2504 out_file_ptr = null; 2505 area_ptr = null; 2506 select_ptr = null; 2507 selected_records_ptr = null; 2508 sort_list_ptr = null; 2509 assign_info_ptr = null; 2510 format_table_ptr = null; 2511 temp_append_ptr = null; 2512 temp_format_ptr = null; 2513 temp_output_ptr = null; 2514 lister_severity_ = 2; 2515 working_dir = get_wdir_ (); 2516 2517 if process_dir = "" 2518 then process_dir = get_pdir_ (); 2519 2520 call get_system_free_area_ (area_ptr); 2521 2522 end initialize; 2523 2524 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/23/87 1000.0 lister_requests_.pl1 >spec>install>1045>lister_requests_.pl1 338 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 340 2 10/14/83 1606.7 delete_options.incl.pl1 >ldd>include>delete_options.incl.pl1 342 3 04/25/81 0728.4 lister_entries.incl.pl1 >ldd>include>lister_entries.incl.pl1 344 4 11/06/84 0947.7 lister_structures.incl.pl1 >ldd>include>lister_structures.incl.pl1 346 5 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 348 6 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. APPEND constant fixed bin(17,0) initial dcl 317 ref 1021 1029 COPY constant fixed bin(17,0) initial dcl 318 ref 1733 1742 CREATE constant fixed bin(17,0) initial dcl 319 ref 357 366 DESCRIBE constant fixed bin(17,0) initial dcl 320 ref 619 627 2484 DISPLAY constant fixed bin(17,0) initial dcl 321 ref 855 863 2484 EXPAND constant fixed bin(17,0) initial dcl 322 ref 1176 1185 MAKE constant fixed bin(17,0) initial dcl 323 ref 472 480 MERGE constant fixed bin(17,0) initial dcl 324 ref 1257 1266 MERGE_ADD constant fixed bin(17,0) initial dcl 4-210 ref 1355 1363 MERGE_AND constant fixed bin(17,0) initial dcl 4-210 ref 1366 MERGE_OR constant fixed bin(17,0) initial dcl 4-210 ref 1369 MERGE_SUBTRACT constant fixed bin(17,0) initial dcl 4-210 ref 1372 MIN_FIELD_INDEX constant fixed bin(17,0) initial dcl 4-135 ref 1445 MODIFY constant fixed bin(17,0) initial dcl 325 ref 726 734 NL 024215 constant char(1) initial unaligned dcl 326 ref 573 576 584 585 OFF 000151 constant bit(1) initial dcl 328 set ref 359 398 447 462* 474 529 596 608* 621 654 663 666 697 728 767 796 805 812 857 895 918 927 1023 1068 1073 1083 1095 1104 1145 1163 1178 1213 1214 1259 1274 1353 1357 1358 1360 1380 1386 1434 1488 1497* 1510 1560 1564 1583 1601 1611 1699* 1708 1735 1787 1817* 1835 1928 1966 2004 2104 2157 2467 2495 2496 2497 2498 ON 000022 constant bit(1) initial dcl 329 set ref 368 389 401 448 449 450 451 482 486 494 502 546 597 598 599 600 629 642 653 674 676 679 680 681 684 686 692 693 698 707 736 749 766 801 817 819 865 877 888 907 923 1004* 1031 1043 1067 1073 1075 1076 1080 1080 1082 1100 1119 1121 1130 1153 1187 1192 1201 1220 1233 1268 1273 1283 1351 1359 1375 1388 1394 1401 1410 1417 1427 1489 1490 1491 1492 1519 1524 1533 1561 1562 1587 1619 1621 1709 1710 1711 1712 1744 1749 1758 1801 1803 1844 1856 1884 1937 1949 1979 2105 2106 2107 2108 2158 2159 2160 2161 PROCESS constant fixed bin(17,0) initial dcl 330 ref 1508 1517 P_code parameter fixed bin(35,0) dcl 2075 set ref 2070 2085* 2087* P_dname parameter char unaligned dcl 2075 ref 2070 P_ename parameter char unaligned dcl 2075 ref 2070 P_file_ptr parameter pointer dcl 2075 ref 2070 2084 RW_ACCESS 000023 constant bit(3) initial unaligned dcl 1-11 set ref 1329* 1346* 1777* 2371* 2401* R_ACCESS 000022 constant bit(3) initial unaligned dcl 1-11 set ref 1652* 1657* 2328* 2366* SORT constant fixed bin(17,0) initial dcl 331 ref 1833 1842 TERM_FILE_TERM 000016 constant bit(3) initial unaligned dcl 6-14 set ref 417* 2111* 2117* 2135* 2164* 2171* 2177* TERM_FILE_TRUNC_BC 000017 constant bit(2) initial unaligned dcl 6-13 set ref 2219* TRIM constant fixed bin(17,0) initial dcl 332 ref 1926 1935 addr builtin function dcl 307 ref 380 714 714 1133 1133 adjust_bit_count_ 000064 constant entry external dcl 105 ref 462 608 1497 1817 af 1 000614 automatic bit(1) level 2 dcl 253 set ref 690 981 1004* 1006 2483* 2484 all_fields 000633 automatic bit(1) dcl 267 set ref 1359* 1380* 1442 answer_iocbp 6 000702 automatic pointer initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* answer_iocbp 6 000576 automatic pointer initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1125* append_info based structure array level 1 dcl 290 set ref 1063 1168 append_info_ptr 000100 automatic pointer dcl 180 set ref 1063* 1064 1065 1092 1106 1107 1155 1157 1159 1159 1168 append_length 2 based fixed bin(21,0) array level 2 dcl 290 set ref 1064* 1107* 1155 1157 1159 append_ptr based pointer array level 2 dcl 290 set ref 1065* 1092 1106* 1159 append_str based char unaligned dcl 279 ref 1159 area 10 based area(261112) level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1487 area 10 based area(261112) level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 778 942 944 1062 1132 1140 1142 1158 1160 1303 1444 1487* 1907 1910 1915 area_ptr 000676 automatic pointer dcl 4-96 set ref 442* 588* 709* 831* 957* 981* 983* 1304 1673* 1679* 1809* 1894* 1989* 2142 2147 2192 2237 2240 2243 2265 2269 2273 2276 2287 2429* 2444* 2505* 2520* arg_already_got 000102 automatic bit(1) dcl 180 set ref 529* 546* 559 663* 679* 701 895* 905 907* 936 arg_count 000103 automatic fixed bin(17,0) dcl 180 set ref 1626 2001 2483* arg_getter 000104 automatic entry variable dcl 180 set ref 2296 2484* 2490* arg_index 000110 automatic fixed bin(17,0) dcl 180 set ref 545 548 555 1596* 1596 1625 1626* 2001 2001 2296* 2297* 2297 2492* arg_length 000111 automatic fixed bin(21,0) dcl 180 set ref 381* 401 401 403 403 408 408 412 412 505 505 530 530 535 535 535 537 538 540 540 548 548 580* 581 581 582 664 664 668 668 671 671 674 676 684 684 686 686 688 688 690 690 695 695 774 774 788 790 791 791 793 793 797 797 805 808 810 810 814 814 817 817 817 819 819 896 896 901 903 904 904 907 911 912 912 916 916 920 920 923 923 925 925 1071 1071 1078 1078 1087 1089 1090 1090 1092 1092 1096 1096 1104 1107 1220 1220 1222 1222 1228 1228 1229 1229 1233 1233 1322 1325 1325 1326 1326 1363 1366 1369 1372 1372 1375 1375 1378 1378 1388 1391 1393 1393 1397 1400 1400 1409 1409 1569 1572 1572 1573 1573 1583 1583 1583 1585 1585 1589 1592 1592 1593 1593 1599 1599 1609 1609 1619 1619 1621 1621 1623 1623 1623 1773 1773 1774 1774 1792 1792 1801 1801 1803 1803 1875 1875 1884 1884 1970 1970 1979 1979 2062 2064 2064 2064 2066 2066 2296* 2317 2317 2318 2318 2351 2351 2352 2352 2418 2429 2429 2444 2444 arg_list_ptr 000112 automatic pointer dcl 180 set ref 580* 1699* 2296* 2493* arg_position 000114 automatic fixed bin(17,0) dcl 180 set ref 1563* 1625* 1699* arg_ptr 000116 automatic pointer dcl 180 set ref 380* 401 401 403 403 408 412 412 505 530 530 535 537 538 540 540 548 580* 581 664 664 668 671 671 674 676 684 684 686 686 688 688 690 695 695 774 774 788 790 791 793 797 797 805 807 810 810 814 817 817 817 819 819 896 896 901 904 907 912 916 916 920 923 923 925 925 1071 1071 1078 1078 1087 1089 1090 1092 1096 1096 1104 1106 1220 1220 1222 1222 1228 1229 1233 1233 1322 1325 1326 1363 1366 1369 1372 1372 1375 1375 1378 1378 1388 1391 1393 1397 1400 1409 1569 1572 1573 1583 1583 1583 1585 1585 1589 1592 1593 1599 1599 1609 1609 1619 1619 1621 1621 1623 1623 1623 1773 1774 1792 1792 1801 1801 1803 1803 1875 1875 1884 1884 1970 1970 1979 1979 2064 2064 2066 2296* 2317 2318 2351 2352 2418 2429 2444 arg_string based char unaligned dcl 279 set ref 401 401 403 403 408* 412 412 505* 530 530 535* 537 538 540 540 548 581 664 664 668* 671 671 674 676 684 684 686 686 688 688 690* 695 695 774 774 788 790 791* 793* 797 797 805 810 810 814* 817 817 817 819 819 896 896 901 904 907 912 916 916 920* 923 923 925 925 1071 1071 1078 1078 1087 1089 1090* 1092* 1096 1096 1104 1220 1220 1222 1222 1228* 1229* 1233 1233 1322 1325* 1326* 1363 1366 1369 1372 1372 1375 1375 1378 1378 1388 1391 1393* 1397 1400* 1409* 1569 1572* 1573* 1583 1583 1583 1585 1585 1589 1592* 1593* 1599 1599 1609 1609 1619 1619 1621 1621 1623 1623 1623 1773* 1774* 1792 1792 1801 1801 1803 1803 1875 1875 1884 1884 1970 1970 1979 1979 2064 2064* 2066* 2317* 2318* 2351* 2352* 2418 2429* 2444* assign_info based structure array level 1 dcl 295 set ref 779 2097 assign_info_ptr 000120 automatic pointer dcl 180 set ref 776 779* 781 782 793 807 808 825 842* 2097 2097 2509* assign_length 2 based fixed bin(21,0) array level 2 dcl 295 set ref 782* 808* assign_ptr based pointer array level 2 dcl 295 set ref 781* 793 807* atom based varying char dcl 4-71 set ref 1140 1141* 1158 1159* 2236 2237 2268 2269 atom_length 000647 automatic fixed bin(17,0) initial dcl 4-71 set ref 1139* 1140 1141 1157* 1158 1159 4-71* 2236* 2237 2268* 2269 atomp 000650 automatic pointer dcl 4-71 set ref 1140* 1141 1142 1158* 1159 1160 2235* 2236 2237 2263* 2265 2265 2268 2269 before builtin function dcl 307 ref 594 brief_errors 000122 automatic bit(1) dcl 180 set ref 819* 835 923* 961 1621* 1688 1699* 1803* 1814 1884* 1899 2495* bv_bitcount parameter fixed bin(24,0) dcl 2207 in procedure "close_output_segment" set ref 2202 2219* bv_bitcount parameter fixed bin(24,0) dcl 2389 in procedure "get_output_segment" set ref 2384 2401* bv_bitcount parameter fixed bin(24,0) dcl 2306 in procedure "get_input_segment" set ref 2301 2328* bv_code parameter fixed bin(35,0) dcl 2207 in procedure "close_output_segment" set ref 2202 2217* 2219* 2220 2220* bv_code parameter fixed bin(35,0) dcl 2306 in procedure "get_input_segment" set ref 2301 2317* 2318 2318* 2328* 2329* 2332* bv_code parameter fixed bin(35,0) dcl 2389 in procedure "get_output_segment" set ref 2384 2399* 2401* 2404* bv_dir parameter char unaligned dcl 2207 in procedure "close_output_segment" set ref 2202 2220* bv_dir parameter char unaligned dcl 2389 in procedure "get_output_segment" set ref 2384 2401* 2404* bv_in_suffix parameter char unaligned dcl 2342 set ref 2337 2351* 2362* bv_info_ptr parameter pointer dcl 100 ref 352 356 467 471 614 618 721 725 850 854 1016 1020 1171 1175 1252 1256 1503 1507 1728 1732 1828 1832 1921 1925 bv_name parameter char unaligned dcl 2389 in procedure "get_output_segment" set ref 2384 2401* 2404* bv_name parameter char unaligned dcl 2207 in procedure "close_output_segment" set ref 2202 2220* bv_out_suffix parameter char unaligned dcl 2342 set ref 2337 2362* bv_output_ptr parameter pointer dcl 2389 in procedure "get_output_segment" set ref 2384 2401* 2404 bv_output_ptr parameter pointer dcl 2207 in procedure "close_output_segment" set ref 2202 2219* bv_ptr parameter pointer dcl 2306 set ref 2301 2328* 2329 bv_sci_ptr parameter pointer dcl 101 ref 352 355 467 470 614 617 721 724 850 853 1016 1019 1171 1174 1252 1255 1503 1506 1728 1731 1828 1831 1921 1924 bv_suffix parameter char unaligned dcl 2306 set ref 2301 2315 2317* chase 0(05) 000646 automatic bit(1) level 2 packed unaligned dcl 2-7 set ref 451* 600* 1492* 1712* 2108* 2161* choice_made 000123 automatic bit(1) dcl 180 set ref 1068* 1073 1075* 1080 1082* cleanup 000640 stack reference condition dcl 313 ref 390 495 503 643 750 878 1044 1202 1284 1534 1759 1857 1950 cleanup_handler_established 000124 automatic bit(1) dcl 180 set ref 389* 494* 502* 642* 749* 877* 1043* 1201* 1283* 1533* 1758* 1856* 1949* 2010 2467* code 000125 automatic fixed bin(35,0) dcl 180 set ref 385 392* 393 400 406 406* 408* 409 409* 415 415* 417* 418 418* 420* 421 421* 431* 432 432* 437* 438 442* 443 445 454* 456* 462* 499 505* 507 507* 512* 513 513* 516* 518 518* 528 533 533* 543 543* 547 580* 588* 590 592 603* 605* 608* 638 645* 646 649* 650 650* 658 662 668 668* 745 752* 753 756* 758 760* 762 762* 770 773 786 797 803 814 814* 873 880* 881 884* 885 885* 889* 894 899 905 907 920 920* 929 973* 974 976* 977* 981* 983* 985 987 989* 990* 993* 996* 997 1039 1046* 1047 1050* 1052 1054* 1056 1056* 1070 1085 1096 1102 1115* 1116 1116* 1135 1135* 1146* 1147 1147* 1197 1205 1208* 1209 1209* 1216* 1219 1225 1225* 1228* 1229 1229* 1246* 1279 1286* 1287 1290* 1292 1294* 1296 1296* 1307 1310* 1311 1314* 1315 1315* 1322 1325* 1326 1326* 1329* 1332* 1362 1383 1427 1453* 1455 1455* 1493* 1497* 1529 1536* 1537 1540* 1541 1541* 1549* 1550 1550* 1569 1572* 1573 1573* 1582 1589 1592* 1593 1593* 1603 1613 1638* 1639 1652* 1653* 1657* 1658* 1668* 1669 1673* 1674 1674* 1685* 1704* 1705 1705* 1713* 1718* 1754 1761* 1762 1765* 1766 1766* 1770 1773* 1774 1774* 1777* 1780* 1791 1795 1817* 1852 1859* 1860 1863* 1865 1867* 1869 1869* 1874 1878 1945 1952* 1953 1956* 1958 1960* 1962 1962* 1969 1973 2162* 2296* 2351* 2352 2352* 2362* 2363 2363* 2366* 2367* 2371* 2374* 2377* 2415 2415* 2421* 2422 2424* 2425* 2429* 2430 2430* 2441 2441* 2444* 2445 2445* 2470* 2473 2475* code2 000126 automatic fixed bin(35,0) dcl 180 set ref 1346* 1349* com_err_ 000066 constant entry external dcl 105 ref 2475 command 000127 automatic bit(1) dcl 180 set ref 359* 368* 374 403 412 429 474* 482* 488 621* 629* 634 728* 736* 741 857* 865* 870 1023* 1031* 1036 1178* 1187* 1194 1259* 1268* 1276 1510* 1519* 1526 1735* 1744* 1751 1835* 1844* 1849 1928* 1937* 1942 2006 2315 2349 2468 command_query_ 000070 constant entry external dcl 105 ref 1133 componentname 000130 automatic char(32) unaligned dcl 180 set ref 1547* 1572* 1649 1657* 1658* 1658* counts 000627 automatic fixed bin(17,0) array dcl 267 set ref 1453* 1460 1460 1464 1468* 1468* 1468* cp_escape_control 1(02) 000576 automatic bit(2) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* 1120* cp_escape_control 1(02) 000702 automatic bit(2) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* cu_$af_arg_ptr_rel 000072 constant entry external dcl 105 ref 2484 cu_$arg_list_ptr 000074 constant entry external dcl 105 ref 2470 2470 cu_$arg_ptr_rel 000076 constant entry external dcl 105 ref 580 2490 cv_dec_check_ 000100 constant entry external dcl 105 ref 1228 database based structure level 2 packed unaligned dcl 300 delete_$ptr 000102 constant entry external dcl 105 ref 452 601 1493 1713 2109 2162 delete_options 000646 automatic structure level 1 packed unaligned dcl 2-7 set ref 447* 452 452 596* 601 601 1488* 1493 1493 1708* 1713 1713 2104* 2109 2109 2157* 2162 2162 delete_output_file_on_error 000140 automatic bit(1) unaligned dcl 180 set ref 486* 1192* 1273* 1524* 1749* 2004* 2102 2155 2497* dim builtin function dcl 307 ref 1303 divide builtin function dcl 307 ref 441 1647 1663 dname based char(168) level 3 packed unaligned dcl 300 ref 379 492 2324 2358 done 000634 automatic bit(1) dcl 267 set ref 1357* 1386* 1387 1388* 1427* 1434 1434* dummy_bc 000141 automatic fixed bin(24,0) dcl 180 set ref 1329* 1346* 1777* 2371* dummy_cr 000142 automatic bit(1) dcl 180 set ref 1346* ename 52 based char(32) level 3 packed unaligned dcl 300 set ref 376 378 380 381 490 493 2322 2325 2356 2359 error_table_$active_function 000164 external static fixed bin(35,0) dcl 153 set ref 2487* error_table_$bad_arg 000166 external static fixed bin(35,0) dcl 153 set ref 535* 2062* 2066* error_table_$badopt 000170 external static fixed bin(35,0) dcl 153 set ref 2064* error_table_$inconsistent 000172 external static fixed bin(35,0) dcl 153 set ref 690* 793* 1073* 1080* 1092* error_table_$moderr 000174 external static fixed bin(35,0) dcl 153 ref 445 592 error_table_$noarg 000176 external static fixed bin(35,0) dcl 153 set ref 564* 567* 770* 786* 788* 803* 805* 825* 899* 901* 1085* 1087* 1102* 1104* 1986* error_table_$sameseg 000200 external static fixed bin(35,0) dcl 153 set ref 1783* error_table_$unimplemented_version 000202 external static fixed bin(35,0) dcl 153 ref 2085 error_token 000143 automatic char(132) unaligned dcl 180 set ref 442* 454* 588* 594 594* 594 603* 981* 983* 990 990 990 990 1673* 1674* 2429* 2430* 2444* 2445* expand_pathname_ 000104 constant entry external dcl 105 ref 1592 expand_pathname_$add_suffix 000106 constant entry external dcl 105 ref 408 505 1325 1773 2317 2351 expand_pathname_$component_add_suffix 000110 constant entry external dcl 105 ref 1572 explanation_len 14 000576 automatic fixed bin(21,0) initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1128* explanation_len 14 000702 automatic fixed bin(21,0) initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* explanation_ptr 12 000702 automatic pointer initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* explanation_ptr 12 000576 automatic pointer initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1127* fatal_error 000635 automatic bit(1) dcl 267 set ref 1360* 1394* 1401* 1410* 1417* 1420 1439 fdelim 000204 automatic char(1) unaligned dcl 180 set ref 524* 538* 575 fidp 000652 automatic pointer dcl 4-75 set ref 944* 950 951 951 1132* 1133 field 2 based offset array level 2 dcl 4-50 set ref 1142* 1160* field_identifier based structure level 1 dcl 4-89 field_list based fixed bin(17,0) array dcl 279 set ref 1304 1404 1404 1413 1415 1415 1423* 1446 1446 1447* 1453* 1472 field_list_ptr 000636 automatic pointer dcl 267 set ref 1304* 1404 1404 1413 1415 1415 1423 1446 1446 1447 1453 1472 field_table based structure level 1 dcl 4-79 field_table_offset based offset level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 778 942 1062 1303 1444 1480* field_table_offset based offset level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1480 field_table_ptr 000654 automatic pointer dcl 4-75 set ref 778* 779 780 942* 943 944 1062* 1063 1064 1065 1131 1132 1154 1168 1444* 2097 first_fn_arg_num 000205 automatic fixed bin(17,0) dcl 180 set ref 521* 545* 564 567 579 first_s 000624 automatic char(1) dcl 267 set ref 1460* 1462* 1468* flag based fixed bin(35,0) level 2 dcl 4-190 ref 2265 flx 000626 automatic fixed bin(17,0) dcl 267 set ref 1356* 1404 1407 1413 1422* 1422 1423 1446* 1447* 1450* 1450 1453* force 000646 automatic bit(1) level 2 packed unaligned dcl 2-7 set ref 448* 597* 1489* 1709* 2105* 2158* format_bitcount 000206 automatic fixed bin(24,0) dcl 180 set ref 1652* 1657* 1663 format_dname 000207 automatic char(168) unaligned dcl 180 set ref 1546* 1572* 1652* 1653* 1657* 1658* 1658* 1699 format_ename 000261 automatic char(32) unaligned dcl 180 set ref 1549* 1556 1556 1572* 1575 1575 1652* 1653* 1657* 1658* 1658* 1699 format_length 000271 automatic fixed bin(17,0) dcl 180 set ref 1663* 1665 1673 1673 format_ptr 000272 automatic pointer dcl 180 set ref 1652* 1653 1657* 1658 1665 1673 2115 2117* 2118* 2501* format_string based char unaligned dcl 279 set ref 1665 1673* format_table based structure level 1 dcl 4-111 ref 2243 format_table_ptr 000656 automatic pointer dcl 4-75 set ref 981* 983* 1004* 1673* 1699* 2187 2230 2232 2243 2244* 2510* function_index 000274 automatic fixed bin(17,0) dcl 180 set ref 357* 366* 385 472* 480* 499 619* 627* 638 726* 734* 745 855* 863* 873 1021* 1029* 1039 1176* 1185* 1197 1257* 1266* 1279 1307 1508* 1517* 1529 1733* 1742* 1754 1770 1833* 1842* 1852 1891 1926* 1935* 1945 2484 2484 get_pdir_ 000112 constant entry external dcl 105 ref 2517 get_system_free_area_ 000114 constant entry external dcl 105 ref 2520 get_temp_segment_ 000116 constant entry external dcl 105 ref 516 889 996 1115 get_wdir_ 000120 constant entry external dcl 105 ref 2515 hbound builtin function dcl 307 ref 943 1131 1413 1415 1415 1446 header 6 000614 automatic bit(1) level 2 dcl 253 set ref 692* 697* header_specified 7 000614 automatic bit(1) level 2 dcl 253 set ref 654* 693* 698* i 000275 automatic fixed bin(17,0) dcl 180 set ref 579* 580* 780* 781 782* 790* 791 793 807 808 943* 944 945* 1089* 1090 1092 1106 1107 1131* 1132 1142* 1154* 1155 1157 1159 1159 1160* 1404* 1404* 1407 1909* 1910 1910* 2234* 2235* ignore_code 000276 automatic fixed bin(35,0) dcl 180 set ref 452* 601* 2109* 2111* 2117* 2121* 2124* 2127* 2130* 2135* 2164* 2171* 2177* in_bitcount 000277 automatic fixed bin(24,0) dcl 180 set ref 392* 420* 441 1536* 2366* in_dname 000300 automatic char(168) unaligned dcl 180 set ref 649* 650* 756* 762* 835* 884* 885* 961* 977* 1050* 1056* 1208* 1209* 1290* 1296* 1300 1314* 1315* 1318* 1540* 1541* 1669* 1688* 1765* 1766* 1814* 1863* 1869* 1899* 1956* 1962* 2317* 2324* 2328* 2329* 2351* 2358* 2366* 2367* 2425* in_ename 000352 automatic char(32) unaligned dcl 180 set ref 431* 649* 650* 714* 756* 762* 835* 884* 885* 961* 977* 1050* 1056* 1208* 1209* 1290* 1296* 1301 1314* 1315* 1318* 1540* 1541* 1549* 1550* 1669* 1688* 1765* 1766* 1814* 1863* 1869* 1899* 1956* 1962* 2317* 2325* 2328* 2329* 2351* 2359* 2362* 2363* 2366* 2367* 2425* in_file_ptr 000660 automatic pointer dcl 4-75 set ref 645* 649* 709* 712 714* 752* 756* 760* 778 778 790* 831* 842* 880* 884* 942 942 944 957* 966* 973* 981* 983* 1004* 1046* 1050* 1054* 1062 1062 1089* 1129* 1132 1140 1142 1152* 1158 1160 1286* 1290* 1294* 1303 1303 1318 1338 1397* 1444 1444 1453* 1480 1481 1482 1483 1484 1485 1486 1487 1536* 1540* 1668* 1673* 1679* 1694* 1697 1699* 1761* 1765* 1783 1809* 1811* 1812* 1859* 1863* 1867* 1894* 1905* 1907 1907 1910 1915 1915 1952* 1956* 1960* 1989* 1990* 2146* 2148 2148 2151 2169 2171* 2172* 2421* 2429* 2444* 2502* in_length 000362 automatic fixed bin(21,0) dcl 180 set ref 441* 442* index builtin function dcl 307 ref 548 594 788 805 901 907 970 990 990 1087 1104 1322 1388 1569 1589 1665 2064 2418 index_to_field_id 24 based offset array level 2 dcl 4-79 ref 943 944 1131 1132 1303 initiate_file_ 000124 constant entry external dcl 105 ref 1652 2328 2366 initiate_file_$component 000126 constant entry external dcl 105 ref 1657 initiate_file_$create 000130 constant entry external dcl 105 ref 1329 1346 1777 2371 2401 input_file based structure level 1 dcl 4-14 input_ptr 000364 automatic pointer dcl 180 set ref 392* 417* 420* 442* 1208* 1240* 2133 2135* 2136* 2366* 2367 2499* input_record based structure level 1 dcl 4-50 ioa_ 000122 constant entry external dcl 105 ref 459 844 1008 1242 1468 1721 1819 1992 iox_$put_chars 000132 constant entry external dcl 105 ref 1704 iox_$user_output 000204 external static pointer dcl 153 set ref 1704* last_fn_arg_num 000366 automatic fixed bin(17,0) dcl 180 set ref 521* 547 548* 555 555* 567 579 lbound builtin function dcl 307 ref 1404 1446 length builtin function dcl 307 ref 381 1137 1139 1391 1556 1575 2236 2268 link 0(04) 000646 automatic bit(1) level 2 packed unaligned dcl 2-7 set ref 450* 599* 1491* 1711* 2107* 2160* list 2 based pointer array level 2 dcl 4-137 set ref 1907 1910 1910 1914 1915 2145* list_node based structure level 1 dcl 4-137 set ref 2142 2147 2192 lister_assign_ 000240 constant entry external dcl 3-13 ref 842 lister_codes_$cant_convert 000206 external static fixed bin(35,0) dcl 153 set ref 976 1669* 2424 lister_codes_$display_unknown_fieldname 000210 external static fixed bin(35,0) dcl 153 ref 989 lister_codes_$dup_fieldname 000212 external static fixed bin(35,0) dcl 153 set ref 1409* lister_codes_$fieldname_not_alpha_start 000214 external static fixed bin(35,0) dcl 153 set ref 552* lister_codes_$listform_unknown_fieldname 000216 external static fixed bin(35,0) dcl 153 ref 987 lister_codes_$long_fieldname 000220 external static fixed bin(35,0) dcl 153 set ref 1393* lister_codes_$master_eq_output 000222 external static fixed bin(35,0) dcl 153 set ref 1338* lister_codes_$master_eq_update 000224 external static fixed bin(35,0) dcl 153 set ref 1318* lister_codes_$no_current_lister 000226 external static fixed bin(35,0) dcl 153 set ref 376* 490* 2322* 2356* lister_codes_$undefined_fieldname 000230 external static fixed bin(35,0) dcl 153 set ref 791* 1090* 1400* lister_codes_$update_eq_output 000232 external static fixed bin(35,0) dcl 153 set ref 1341* lister_compile_listin_ 000242 constant entry external dcl 3-20 ref 442 588 lister_compile_select_ 000244 constant entry external dcl 3-30 ref 2429 lister_compile_sort_ 000246 constant entry external dcl 3-39 ref 2444 lister_convert_ 000250 constant entry external dcl 3-48 ref 760 973 1054 1294 1668 1867 1960 2421 lister_copy_file_head_ 000252 constant entry external dcl 3-52 ref 1811 lister_copy_records_ 000254 constant entry external dcl 3-57 ref 1812 lister_create_record_ 000256 constant entry external dcl 3-70 ref 1129 1152 lister_delete_ 000260 constant entry external dcl 3-90 ref 1990 2146 lister_expand_ 000262 constant entry external dcl 3-95 ref 1240 lister_file_version_2 constant fixed bin(17,0) initial dcl 4-11 ref 2085 lister_format_parse_ 000266 constant entry external dcl 3-119 ref 981 983 1673 lister_hash_fid_ 000264 constant entry external dcl 3-105 ref 790 1089 1397 lister_info based structure level 1 packed unaligned dcl 300 lister_info_ptr 000370 automatic pointer dcl 180 set ref 356* 376 378 379 380 381 471* 490 492 493 618* 725* 854* 1020* 1175* 1256* 1507* 1732* 1832* 1925* 2322 2324 2325 2356 2358 2359 lister_merge_ 000270 constant entry external dcl 3-128 ref 1453 lister_print_ 000272 constant entry external dcl 3-139 ref 1004 1699 lister_select_ 000274 constant entry external dcl 3-154 ref 709 831 957 1679 1809 1894 1989 lister_severity_ 000234 external static fixed bin(35,0) dcl 153 set ref 463* 610* 715* 717* 834* 846* 960* 1010* 1012* 1166* 1248* 1499* 1687* 1724* 1822* 1824* 1898* 1917* 1995* 1997* 2514* lister_sort_ 000276 constant entry external dcl 3-162 ref 966 1694 1905 lister_status_ 000300 constant entry external dcl 3-167 ref 714 lister_version 000020 constant char(6) initial unaligned dcl 334 set ref 2470* literal 2 based pointer array level 2 packed unaligned dcl 4-124 ref 2235 2263 literal_sw 1(05) 000702 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* literal_sw 1(05) 000576 automatic bit(1) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* literal_table based structure level 1 dcl 4-124 in procedure "lister_requests_" ref 2240 2273 literal_table 2 based pointer level 2 in structure "format_table" dcl 4-111 in procedure "lister_requests_" ref 2230 2232 literal_table_ptr based pointer level 2 dcl 4-143 ref 2258 local_qi 000576 automatic structure level 1 unaligned dcl 251 set ref 1133 1133 ltp 000662 automatic pointer dcl 4-75 set ref 2232* 2234 2235 2240 2258* 2260 2262 2263 2273 ltx 000116 automatic fixed bin(17,0) dcl 2254 set ref 2262* 2263* max_field_index 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 4-79 ref 779 780 943 1063 1064 1065 1131 1154 1168 1303 2097 merge_type 000632 automatic fixed bin(17,0) dcl 267 set ref 1355* 1363* 1366* 1369* 1372* 1453* my_name 000372 automatic char(16) unaligned dcl 180 set ref 358* 367* 452* 473* 481* 516* 601* 620* 628* 727* 735* 844* 856* 864* 889* 996* 1022* 1030* 1115* 1133* 1146* 1177* 1186* 1258* 1267* 1493* 1509* 1518* 1713* 1734* 1743* 1834* 1843* 1927* 1936* 2014* 2017* 2023* 2028* 2033* 2037* 2041* 2044* 2047* 2050* 2053* 2056* 2109* 2121* 2124* 2127* 2130* 2162* 2470* 2475* n 000674 automatic fixed bin(17,0) dcl 4-75 set ref 442* 459* 459 588* 831* 832 844* 844 957* 958 1010 1240* 1242* 1242 1395* 1397* 1398 1404 1423 1445* 1447 1448* 1448 1679* 1681 1697* 1721* 1721 1809* 1812 1819* 1819 1822 1894* 1896 1909 1914 1915 1989* 1992* 1992 1995 2141* 2142 2142 n_fields 000376 automatic fixed bin(17,0) dcl 180 set ref 1303* 1304 1413 1415 1415 1446 1453 1472 n_keys based fixed bin(17,0) level 2 dcl 4-201 ref 2287 n_literals 1 based fixed bin(17,0) level 2 dcl 4-124 ref 2234 2262 n_records 7 based fixed bin(17,0) level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 712 1486* 1697 n_records 7 based fixed bin(17,0) level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1486 name 000377 automatic bit(1) dcl 180 set ref 796* 801* 805 1095* 1100* 1104 next based offset level 2 dcl 4-50 set ref 1910* 1914* next_char_pos_in_listin 000400 automatic fixed bin(21,0) dcl 180 set ref 578* 581 582* 582 584 585 586 next_uid 5 based fixed bin(24,0) level 2 in structure "input_file" unsigned dcl 4-14 in procedure "lister_requests_" set ref 1484* 2148* 2148 next_uid 5 based fixed bin(24,0) level 2 in structure "output_file" unsigned dcl 4-38 in procedure "lister_requests_" ref 1484 null builtin function dcl 307 ref 251 251 251 453 602 776 781 793 825 955 966 1004 1004 1065 1092 1124 1125 1127 1332 1344 1349 1494 1653 1658 1677 1677 1681 1694 1714 1780 1788 1822 1891 1894 1894 1914 1986 5-7 5-7 5-7 2097 2100 2112 2115 2118 2121 2124 2127 2130 2133 2136 2153 2165 2169 2172 2175 2178 2181 2184 2187 2190 2193 2230 2244 2260 2277 2288 2329 2367 2374 2404 2489 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 numeric_atom based structure level 1 dcl 4-190 ref 2265 numeric_flag 024214 constant fixed bin(35,0) initial dcl 4-194 ref 2265 out_bitcount 000401 automatic fixed bin(24,0) dcl 180 set ref 437* 462* 512* 608* 1245* 1246* 1497* 1638* 1647 1683* 1685* 1717* 1718* 1817* out_dname 000402 automatic char(168) unaligned dcl 180 set ref 379* 408* 434* 437* 462* 492* 505* 512* 608* 1300* 1325* 1329* 1332* 1338* 1341* 1497* 1555* 1592* 1634* 1638* 1685* 1718* 1773* 1777* 1780* 1783* 1783* 1817* 2370* 2371* 2374* out_ename 000454 automatic char(32) unaligned dcl 180 set ref 372* 378* 408* 429 431* 437* 456* 462* 493* 505* 512* 605* 608* 1246* 1301* 1325* 1329* 1332* 1338* 1341* 1497* 1556* 1575* 1592* 1635* 1638* 1685* 1718* 1773* 1777* 1780* 1783* 1783* 1817* 2362* 2371* 2374* out_file_ptr 000670 automatic pointer dcl 4-75 set ref 1329* 1332 1338 1341 1344 1346* 1349 1453* 1480 1481 1482 1483 1484 1485 1486 1487 1493* 1494* 1777* 1780 1783 1811* 1812* 2151 2153 2162* 2164* 2165* 2504* out_string based char unaligned dcl 279 set ref 1006 1008* output_all_fieldnames 000464 automatic bit(1) dcl 180 set ref 1214* 1233* 1240* output_file based structure level 1 dcl 4-38 output_file_created 000466 automatic bit(1) dcl 180 set ref 1274* 1329* 1777* 2102 2155 2371* 2401* output_index 000465 automatic fixed bin(21,0) dcl 180 set ref 1002* 1004* 1006 1008 1008 1239* 1240* 1245 1645* 1647* 1683 1699* 1704 1717 output_ptr 000470 automatic pointer dcl 180 set ref 437* 442* 452* 453* 512* 588* 601* 602* 1240* 1246* 1638* 1685* 1699* 1704* 1713* 1714* 1718* 2100 2109* 2111* 2112* 2371* 2374 2500* overwrite_master_file 000472 automatic bit(1) dcl 180 set ref 1351* 1353* 1473 padding 1(07) 000576 automatic bit(29) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* padding 1(07) 000702 automatic bit(29) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* partial_record_appended 000473 automatic bit(1) dcl 180 set ref 1130* 1145* 1153* 1163* 2139 2498* pathname_ 000134 constant entry external dcl 105 ref 1783 1783 pathname_$component 000136 constant entry external dcl 105 ref 1658 1658 pointer builtin function dcl 307 ref 944 1132 print_fdelim 000614 automatic bit(1) level 3 packed unaligned dcl 253 set ref 674* 680* print_fnames 0(01) 000614 automatic bit(1) level 3 packed unaligned dcl 253 set ref 684* print_rdelim 0(02) 000614 automatic bit(1) level 3 packed unaligned dcl 253 set ref 676* 681* print_switches 000614 automatic structure level 2 packed unaligned dcl 253 set ref 658* 660* 705 705* print_totals 0(03) 000614 automatic bit(1) level 3 packed unaligned dcl 253 set ref 398* 401* 459 686* 707* 709 715 767* 817* 844 1213* 1220* 1242 1358* 1375* 1458 1564* 1619* 1721 1787* 1801* 1819 1966* 1979* 1992 2496* process_dir 000010 internal static char(168) initial unaligned dcl 333 set ref 1346* 1634 2517 2517* prompt_after_explanation 1(06) 000702 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* prompt_after_explanation 1(06) 000576 automatic bit(1) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* prompting 000474 automatic bit(1) dcl 180 set ref 1067* 1073 1076* 1080 1083* 1113 query_code 3 000576 automatic fixed bin(35,0) initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1123* query_code 3 000702 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* query_info 000702 automatic structure level 1 dcl 5-7 query_info_version_5 constant fixed bin(17,0) initial dcl 5-35 ref 1118 question_iocbp 4 000702 automatic pointer initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* question_iocbp 4 000576 automatic pointer initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1124* rdelim 000504 automatic char(1) unaligned dcl 180 set ref 523* 537* 572 record_head 1 based offset level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1481 record_head 1 based offset level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 1481* 1907* record_tail 2 based offset level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1482 record_tail 2 based offset level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 1482* 1915* recordp 000664 automatic pointer dcl 4-75 set ref 1129* 1142 1152* 1160 2145 release_temp_segment_ 000140 constant entry external dcl 105 ref 1146 2121 2124 2127 2130 repeat_time 10 000702 automatic fixed bin(71,0) initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* repeat_time 10 000576 automatic fixed bin(71,0) initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1126* ret_string based varying char dcl 279 set ref 1006* retlen 3 000614 automatic fixed bin(21,0) level 2 dcl 253 set ref 1006 2483* retptr 4 000614 automatic pointer level 2 dcl 253 set ref 1006 2483* 2489* rtrim builtin function dcl 307 ref 381 981 983 1556 1575 1699 saved_version 000475 automatic fixed bin(17,0) dcl 180 set ref 650 760 885 970 1054 1209 1294 1315 1541 1665 1766 1867 1960 2084* 2085 2418 sci_ptr 000476 automatic pointer dcl 180 set ref 355* 376* 406* 409* 415* 418* 421* 432* 454* 456* 470* 490* 507* 513* 518* 533* 535* 543* 552* 564* 567* 603* 605* 617* 650* 668* 690* 724* 762* 770* 786* 788* 791* 793* 803* 805* 814* 825* 835* 853* 885* 899* 901* 920* 961* 977* 990* 993* 1019* 1056* 1073* 1080* 1085* 1087* 1090* 1092* 1102* 1104* 1116* 1135* 1147* 1174* 1209* 1225* 1229* 1255* 1296* 1315* 1318* 1326* 1332* 1338* 1341* 1349* 1383* 1393* 1400* 1409* 1415* 1455* 1506* 1541* 1550* 1573* 1593* 1653* 1658* 1669* 1674* 1688* 1705* 1731* 1766* 1774* 1780* 1783* 1814* 1831* 1869* 1899* 1924* 1962* 1986* 2001* 2006* 2014* 2017* 2023* 2028* 2033* 2037* 2041* 2044* 2047* 2050* 2053* 2056* 2062* 2064* 2066* 2220* 2318* 2322* 2329* 2352* 2356* 2363* 2367* 2374* 2404* 2415* 2425* 2430* 2441* 2445* 2470* 2483* 2487* 2493* second_s 000625 automatic char(1) dcl 267 set ref 1464* 1466* 1468* segment 0(03) 000646 automatic bit(1) level 2 packed unaligned dcl 2-7 set ref 449* 598* 1490* 1710* 2106* 2159* segment_output 000500 automatic bit(1) dcl 180 set ref 1560* 1587* 1632 1702 select_all 000501 automatic bit(1) dcl 180 set ref 653* 666* 707 709 714* 715 766* 812* 829 842* 888* 918* 927* 955 1004* 1010 1562* 1601* 1611* 1699* select_expression based structure level 1 dcl 4-143 ref 2276 select_ptr 000666 automatic pointer dcl 4-75 set ref 709* 831* 957* 1677 1679* 1681 1788* 1809* 1822 1986 1989* 2181 2258 2276 2277* 2429* 2506* selected_records_ptr 000502 automatic pointer dcl 180 set ref 709* 831* 842* 957* 966* 1004* 1679* 1694* 1699* 1809* 1812* 1894* 1905* 1907 1910 1910 1914 1915 1989* 1990* 2142* 2144 2145 2146* 2147 2190 2192 2193* 2507* size 2 based fixed bin(17,0) level 2 in structure "select_expression" dcl 4-143 in procedure "lister_requests_" ref 2276 size based fixed bin(17,0) level 2 in structure "literal_table" dcl 4-124 in procedure "lister_requests_" ref 2240 2273 size 1(18) based fixed bin(17,0) level 2 in structure "field_identifier" packed unaligned dcl 4-89 in procedure "lister_requests_" ref 950 951 951 1133 1133 size based fixed bin(17,0) level 2 in structure "list_node" dcl 4-137 in procedure "lister_requests_" set ref 2142* 2144* 2147 2192 size based fixed bin(17,0) level 2 in structure "format_table" packed unaligned dcl 4-111 in procedure "lister_requests_" ref 2243 sort_list based structure level 1 dcl 4-201 ref 2287 sort_list_ptr 000700 automatic pointer dcl 4-198 set ref 955 966 966* 1677 1694 1694* 1891 1905* 2184 2287 2288* 2444* 2508* ssu_$abort_line 000142 constant entry external dcl 105 ref 376 406 409 415 418 421 432 454 456 490 507 513 518 533 535 543 552 564 567 603 605 650 668 690 762 770 786 788 791 793 803 805 814 825 835 885 899 901 920 961 977 990 993 1056 1073 1080 1085 1087 1090 1092 1102 1104 1116 1135 1147 1209 1225 1229 1296 1315 1318 1326 1332 1338 1341 1349 1383 1455 1541 1550 1573 1593 1653 1658 1669 1674 1688 1705 1766 1774 1780 1783 1869 1899 1962 1986 2014 2017 2023 2028 2033 2037 2041 2044 2047 2050 2053 2056 2062 2064 2066 2220 2318 2322 2329 2352 2356 2363 2367 2374 2404 2415 2425 2430 2441 2445 2487 ssu_$arg_list_ptr 000144 constant entry external dcl 105 ref 2493 ssu_$destroy_invocation 000146 constant entry external dcl 105 ref 2006 ssu_$print_message 000150 constant entry external dcl 105 ref 1393 1400 1409 1415 1814 2001 ssu_$return_arg 000152 constant entry external dcl 105 ref 2483 ssu_$standalone_invocation 000154 constant entry external dcl 105 ref 2470 status_code 2 000702 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" set ref 5-7* status_code 2 000576 automatic fixed bin(35,0) initial level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 251* 1122* status_info 000614 automatic structure level 1 unaligned dcl 253 set ref 714 714 string builtin function dcl 307 in procedure "lister_requests_" ref 452 452 601 601 1493 1493 1713 1713 2109 2109 2162 2162 string 2 based char level 2 in structure "field_identifier" packed unaligned dcl 4-89 in procedure "lister_requests_" set ref 951 1133* substr builtin function dcl 307 set ref 537 538 571* 572* 573* 574* 575* 576* 577* 581* 584* 585* 904* 912* 948* 951* 990 990 1556 1575 suffixed_name_$new_suffix 000156 constant entry external dcl 105 ref 431 1549 2362 suppress_name_sw 1(01) 000702 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* suppress_name_sw 1(01) 000576 automatic bit(1) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* 1119* suppress_spacing 1(04) 000702 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* suppress_spacing 1(04) 000576 automatic bit(1) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* 1121* switches 1 000702 automatic structure level 2 in structure "query_info" dcl 5-7 in procedure "lister_requests_" switches 1 000576 automatic structure level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" sys_info$max_seg_size 000236 external static fixed bin(19,0) dcl 153 ref 570 1133 system_area based area(261120) dcl 4-95 ref 1304 2142 2147 2192 2237 2240 2243 2265 2269 2273 2276 2287 temp_append_ptr 000506 automatic pointer dcl 180 set ref 1115* 1133 1137 1139 1141 1146* 2121 2121* 2511* temp_append_string based varying char dcl 279 set ref 1133* 1137 1139 1141 temp_format_len 000510 automatic fixed bin(21,0) dcl 180 set ref 890* 903* 903 904 904 911* 911 912 912 940 947* 947 948 948 950* 950 951 951 970 981 983 temp_format_ptr 000512 automatic pointer dcl 180 set ref 889* 904 912 948 951 970 981 983 2124 2124* 2512* temp_format_string based char unaligned dcl 279 set ref 904* 912* 948* 951* 970 981 983 temp_input_file based char unaligned dcl 279 set ref 571* 572* 573* 574* 575* 576* 577* 581* 584* 585* temp_input_len 000514 automatic fixed bin(21,0) dcl 180 set ref 570* 571 572 573 574 575 576 577 581 584 585 586* 588* temp_input_ptr 000516 automatic pointer dcl 180 set ref 516* 571 572 573 574 575 576 577 581 584 585 588* 2130 2130* temp_output_ptr 000520 automatic pointer dcl 180 set ref 996* 1004* 1006 1008 2127 2127* 2513* terminate_file_ 000160 constant entry external dcl 105 ref 417 2111 2117 2135 2164 2171 2177 2219 total 2 000614 automatic fixed bin(17,0) level 2 dcl 253 set ref 709* 712* 715 truncate 000522 automatic bit(1) dcl 180 set ref 1561* 1583* 1645 unique_chars_ 000162 constant entry external dcl 105 ref 1346 1635 unspec builtin function dcl 307 set ref 447* 596* 658* 660* 705 705* 1488* 1708* 2104* 2157* unused 3 based offset array level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 1483* unused 3 based offset array level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1483 up_file_ptr 000672 automatic pointer dcl 4-75 set ref 1310* 1314* 1318 1341 1453* 2175 2177* 2178* 2503* version 6 based fixed bin(17,0) level 2 in structure "input_file" dcl 4-14 in procedure "lister_requests_" set ref 1485* 2084 version 000576 automatic fixed bin(17,0) level 2 in structure "local_qi" dcl 251 in procedure "lister_requests_" set ref 1118* version 6 based fixed bin(17,0) level 2 in structure "output_file" dcl 4-38 in procedure "lister_requests_" ref 1485 width 000523 automatic fixed bin(17,0) dcl 180 set ref 1212* 1228* 1240* working_dir 000524 automatic char(168) unaligned dcl 180 set ref 434 1246* 1546 1555 2370 2515* yes_or_no_sw 1 000702 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 5-7 in procedure "lister_requests_" set ref 5-7* yes_or_no_sw 1 000576 automatic bit(1) initial level 3 in structure "local_qi" packed unaligned dcl 251 in procedure "lister_requests_" set ref 251* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANY_FIELD internal static fixed bin(8,0) initial dcl 4-183 A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 NULL_FIELD internal static fixed bin(8,0) initial dcl 4-183 NUMERIC_FIELD internal static fixed bin(8,0) initial dcl 4-183 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 PUT_ARGUMENT internal static fixed bin(17,0) initial dcl 4-100 PUT_DATE internal static fixed bin(17,0) initial dcl 4-100 PUT_END internal static fixed bin(17,0) initial dcl 4-100 PUT_LITERAL internal static fixed bin(17,0) initial dcl 4-100 PUT_RECORD_COUNT internal static fixed bin(17,0) initial dcl 4-100 PUT_SPACES internal static fixed bin(17,0) initial dcl 4-100 PUT_TIME internal static fixed bin(17,0) initial dcl 4-100 PUT_UID internal static fixed bin(17,0) initial dcl 4-100 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SELECT_AND internal static bit(9) initial dcl 4-164 SELECT_BEG internal static bit(9) initial dcl 4-164 SELECT_END internal static bit(9) initial dcl 4-164 SELECT_EQ internal static bit(9) initial dcl 4-164 SELECT_FIND internal static bit(9) initial dcl 4-164 SELECT_GE internal static bit(9) initial dcl 4-164 SELECT_GT internal static bit(9) initial dcl 4-164 SELECT_LE internal static bit(9) initial dcl 4-164 SELECT_LT internal static bit(9) initial dcl 4-164 SELECT_NEQ internal static bit(9) initial dcl 4-164 SELECT_NGE internal static bit(9) initial dcl 4-164 SELECT_NGT internal static bit(9) initial dcl 4-164 SELECT_NLE internal static bit(9) initial dcl 4-164 SELECT_NLT internal static bit(9) initial dcl 4-164 SELECT_NOT internal static bit(9) initial dcl 4-164 SELECT_OR internal static bit(9) initial dcl 4-164 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 6-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 6-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 6-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 6-11 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 6-15 UID internal static fixed bin(8,0) initial dcl 4-183 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 center internal static bit(2) initial dcl 4-129 codeptr builtin function dcl 307 element automatic structure level 1 dcl 4-143 flush_left internal static bit(2) initial dcl 4-129 flush_right internal static bit(2) initial dcl 4-129 lister_compare_field_tables_ 000000 constant entry external dcl 3-63 lister_create_record_$after 000000 constant entry external dcl 3-76 lister_create_record_$retain_uid 000000 constant entry external dcl 3-83 lister_hash_fid_$enter 000000 constant entry external dcl 3-112 n_items_to_sort automatic fixed bin(17,0) dcl 4-198 operand1 defined fixed bin(17,0) dcl 4-143 operand2 defined fixed bin(17,0) dcl 4-143 output_record based structure level 1 dcl 4-64 query_info_version_3 internal static fixed bin(17,0) initial dcl 5-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 5-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 5-36 terminate_file_switches based structure level 1 packed unaligned dcl 6-4 update_file based structure level 1 dcl 4-26 update_record based structure level 1 dcl 4-57 NAMES DECLARED BY EXPLICIT CONTEXT. abort_entry 023412 constant entry internal dcl 2451 ref 2470 2470 als 007761 constant entry external dcl 1026 append_common 010006 constant label dcl 1033 ref 1024 append_list 007771 constant entry external dcl 1026 append_request 007734 constant entry external dcl 1016 badarg 020471 constant entry internal dcl 2060 ref 424 558 700 821 935 1110 1235 1432 1628 1805 1886 1981 check_version_number 020623 constant entry internal dcl 2070 ref 649 756 884 1050 1208 1290 1314 1540 1765 1863 1956 cleanup_and_return 017774 constant label dcl 2006 ref 393 438 646 753 881 1047 1205 1287 1311 1439 1537 1762 1860 1953 2457 2476 cleanup_handler 020657 constant entry internal dcl 2092 ref 390 495 503 643 750 837 878 931 963 999 1044 1202 1284 1534 1605 1615 1641 1690 1759 1797 1857 1880 1901 1950 1975 2010 close_output_segment 021534 constant entry internal dcl 2202 ref 1246 1685 1718 cls 001664 constant entry external dcl 362 copy_common 016056 constant label dcl 1746 ref 1736 copy_list 016041 constant entry external dcl 1738 copy_request 016004 constant entry external dcl 1728 cpls 016031 constant entry external dcl 1738 create_common 001711 constant label dcl 370 ref 360 create_list 001674 constant entry external dcl 362 create_request 001637 constant entry external dcl 352 describe_common 004235 constant label dcl 631 ref 622 describe_list 004220 constant entry external dcl 624 describe_request 004163 constant entry external dcl 614 dils 006140 constant entry external dcl 860 display_common 006165 constant label dcl 867 ref 858 display_list 006150 constant entry external dcl 860 display_request 006113 constant entry external dcl 850 dls 004210 constant entry external dcl 624 els 011346 constant entry external dcl 1181 expand_common 011373 constant label dcl 1189 ref 1179 expand_list 011356 constant entry external dcl 1181 expand_request 011321 constant entry external dcl 1171 finish 017735 constant label dcl 2001 ref 465 612 719 848 1014 1169 1250 1501 1726 1826 1919 1999 free_format_table 021642 constant entry internal dcl 2227 ref 2187 free_select_expr 021720 constant entry internal dcl 2249 ref 2181 free_sort_expr 022004 constant entry internal dcl 2282 ref 2184 get_input_and_output_segs 022307 constant entry internal dcl 2337 ref 1204 get_input_segment 022040 constant entry internal dcl 2301 ref 392 420 645 752 880 1046 1286 1310 1536 1761 1859 1952 get_next_argument 022017 constant entry internal dcl 2293 ref 384 399 405 414 426 498 526 532 542 551 559 636 656 673 701 743 769 785 795 800 822 872 892 898 906 936 1038 1060 1084 1094 1099 1108 1196 1217 1224 1236 1278 1306 1321 1335 1382 1426 1436 1528 1568 1577 1588 1629 1753 1769 1790 1806 1851 1873 1888 1944 1967 1983 2414 2440 get_output_segment 022737 constant entry internal dcl 2384 ref 437 512 1638 get_select_arg 023067 constant entry internal dcl 2411 ref 667 813 919 1602 1794 1972 get_sort_arg 023271 constant entry internal dcl 2437 ref 928 1612 1877 initialize 023422 constant entry internal dcl 2464 ref 370 484 631 738 867 1033 1189 1270 1521 1746 1846 1939 lister_requests_ 001624 constant entry external dcl 95 make_common 002746 constant label dcl 484 ref 475 make_list 002731 constant entry external dcl 477 make_request 002674 constant entry external dcl 467 mdls 004756 constant entry external dcl 731 merge_common 012043 constant label dcl 1270 ref 1260 merge_list 012026 constant entry external dcl 1262 merge_request 011771 constant entry external dcl 1252 mkls 002721 constant entry external dcl 477 mls 012016 constant entry external dcl 1262 modify_common 005003 constant label dcl 738 ref 729 modify_list 004766 constant entry external dcl 731 modify_request 004731 constant entry external dcl 721 pls 014006 constant entry external dcl 1513 process_common 014033 constant label dcl 1521 ref 1511 process_list 014016 constant entry external dcl 1513 process_request 013761 constant entry external dcl 1503 sls 016750 constant entry external dcl 1838 sort_common 016775 constant label dcl 1846 ref 1836 sort_list 016760 constant entry external dcl 1838 sort_request 016723 constant entry external dcl 1828 tls 017374 constant entry external dcl 1931 trim_common 017421 constant label dcl 1939 ref 1929 trim_list 017404 constant entry external dcl 1931 trim_request 017347 constant entry external dcl 1921 usage_ 000000 constant label array(14) dcl 2014 set ref 385 499 638 745 873 1039 1197 1279 1307 1529 1754 1770 1852 1891 1945 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 25760 26262 24223 25770 Length 27266 24223 302 770 1534 52 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lister_requests_ 1204 external procedure is an external procedure. on unit on line 390 64 on unit on unit on line 495 64 on unit on unit on line 503 64 on unit on unit on line 643 64 on unit on unit on line 750 64 on unit on unit on line 878 64 on unit on unit on line 1044 64 on unit on unit on line 1202 64 on unit on unit on line 1284 64 on unit on unit on line 1534 64 on unit on unit on line 1759 64 on unit on unit on line 1857 64 on unit on unit on line 1950 64 on unit badarg internal procedure shares stack frame of external procedure lister_requests_. check_version_number internal procedure shares stack frame of external procedure lister_requests_. cleanup_handler 106 internal procedure is called by several nonquick procedures. close_output_segment internal procedure shares stack frame of external procedure lister_requests_. free_format_table internal procedure shares stack frame of internal procedure cleanup_handler. free_select_expr internal procedure shares stack frame of internal procedure cleanup_handler. free_sort_expr internal procedure shares stack frame of internal procedure cleanup_handler. get_next_argument internal procedure shares stack frame of external procedure lister_requests_. get_input_segment internal procedure shares stack frame of external procedure lister_requests_. get_input_and_output_segs internal procedure shares stack frame of external procedure lister_requests_. get_output_segment internal procedure shares stack frame of external procedure lister_requests_. get_select_arg internal procedure shares stack frame of external procedure lister_requests_. get_sort_arg internal procedure shares stack frame of external procedure lister_requests_. abort_entry 64 internal procedure is assigned to an entry variable. initialize internal procedure shares stack frame of external procedure lister_requests_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 process_dir lister_requests_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cleanup_handler 000116 ltx free_select_expr lister_requests_ 000100 append_info_ptr lister_requests_ 000102 arg_already_got lister_requests_ 000103 arg_count lister_requests_ 000104 arg_getter lister_requests_ 000110 arg_index lister_requests_ 000111 arg_length lister_requests_ 000112 arg_list_ptr lister_requests_ 000114 arg_position lister_requests_ 000116 arg_ptr lister_requests_ 000120 assign_info_ptr lister_requests_ 000122 brief_errors lister_requests_ 000123 choice_made lister_requests_ 000124 cleanup_handler_established lister_requests_ 000125 code lister_requests_ 000126 code2 lister_requests_ 000127 command lister_requests_ 000130 componentname lister_requests_ 000140 delete_output_file_on_error lister_requests_ 000141 dummy_bc lister_requests_ 000142 dummy_cr lister_requests_ 000143 error_token lister_requests_ 000204 fdelim lister_requests_ 000205 first_fn_arg_num lister_requests_ 000206 format_bitcount lister_requests_ 000207 format_dname lister_requests_ 000261 format_ename lister_requests_ 000271 format_length lister_requests_ 000272 format_ptr lister_requests_ 000274 function_index lister_requests_ 000275 i lister_requests_ 000276 ignore_code lister_requests_ 000277 in_bitcount lister_requests_ 000300 in_dname lister_requests_ 000352 in_ename lister_requests_ 000362 in_length lister_requests_ 000364 input_ptr lister_requests_ 000366 last_fn_arg_num lister_requests_ 000370 lister_info_ptr lister_requests_ 000372 my_name lister_requests_ 000376 n_fields lister_requests_ 000377 name lister_requests_ 000400 next_char_pos_in_listin lister_requests_ 000401 out_bitcount lister_requests_ 000402 out_dname lister_requests_ 000454 out_ename lister_requests_ 000464 output_all_fieldnames lister_requests_ 000465 output_index lister_requests_ 000466 output_file_created lister_requests_ 000470 output_ptr lister_requests_ 000472 overwrite_master_file lister_requests_ 000473 partial_record_appended lister_requests_ 000474 prompting lister_requests_ 000475 saved_version lister_requests_ 000476 sci_ptr lister_requests_ 000500 segment_output lister_requests_ 000501 select_all lister_requests_ 000502 selected_records_ptr lister_requests_ 000504 rdelim lister_requests_ 000506 temp_append_ptr lister_requests_ 000510 temp_format_len lister_requests_ 000512 temp_format_ptr lister_requests_ 000514 temp_input_len lister_requests_ 000516 temp_input_ptr lister_requests_ 000520 temp_output_ptr lister_requests_ 000522 truncate lister_requests_ 000523 width lister_requests_ 000524 working_dir lister_requests_ 000576 local_qi lister_requests_ 000614 status_info lister_requests_ 000624 first_s lister_requests_ 000625 second_s lister_requests_ 000626 flx lister_requests_ 000627 counts lister_requests_ 000632 merge_type lister_requests_ 000633 all_fields lister_requests_ 000634 done lister_requests_ 000635 fatal_error lister_requests_ 000636 field_list_ptr lister_requests_ 000646 delete_options lister_requests_ 000647 atom_length lister_requests_ 000650 atomp lister_requests_ 000652 fidp lister_requests_ 000654 field_table_ptr lister_requests_ 000656 format_table_ptr lister_requests_ 000660 in_file_ptr lister_requests_ 000662 ltp lister_requests_ 000664 recordp lister_requests_ 000666 select_ptr lister_requests_ 000670 out_file_ptr lister_requests_ 000672 up_file_ptr lister_requests_ 000674 n lister_requests_ 000676 area_ptr lister_requests_ 000700 sort_list_ptr lister_requests_ 000702 query_info lister_requests_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars call_ent_var call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry pointer_hard offset_hard set_chars_eis index_chars_eis op_alloc_ alloc_storage op_freen_ index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_bit_count_ area_assign_ com_err_ command_query_ cu_$af_arg_ptr_rel cu_$arg_list_ptr cu_$arg_ptr_rel cv_dec_check_ delete_$ptr expand_pathname_ expand_pathname_$add_suffix expand_pathname_$component_add_suffix get_pdir_ get_system_free_area_ get_temp_segment_ get_wdir_ initiate_file_ initiate_file_$component initiate_file_$create ioa_ iox_$put_chars lister_assign_ lister_compile_listin_ lister_compile_select_ lister_compile_sort_ lister_convert_ lister_copy_file_head_ lister_copy_records_ lister_create_record_ lister_delete_ lister_expand_ lister_format_parse_ lister_hash_fid_ lister_merge_ lister_print_ lister_select_ lister_sort_ lister_status_ pathname_ pathname_$component release_temp_segment_ ssu_$abort_line ssu_$arg_list_ptr ssu_$destroy_invocation ssu_$print_message ssu_$return_arg ssu_$standalone_invocation suffixed_name_$new_suffix terminate_file_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$active_function error_table_$bad_arg error_table_$badopt error_table_$inconsistent error_table_$moderr error_table_$noarg error_table_$sameseg error_table_$unimplemented_version iox_$user_output lister_codes_$cant_convert lister_codes_$display_unknown_fieldname lister_codes_$dup_fieldname lister_codes_$fieldname_not_alpha_start lister_codes_$listform_unknown_fieldname lister_codes_$long_fieldname lister_codes_$master_eq_output lister_codes_$master_eq_update lister_codes_$no_current_lister lister_codes_$undefined_fieldname lister_codes_$update_eq_output lister_severity_ sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 251 001540 4 71 001570 5 7 001571 95 001623 352 001632 355 001645 356 001651 357 001654 358 001656 359 001661 360 001662 362 001663 366 001702 367 001704 368 001707 370 001711 372 001712 374 001715 376 001717 378 001741 379 001745 380 001750 381 001752 382 001765 384 001766 385 001767 389 001773 390 001775 392 002017 393 002024 398 002026 399 002030 400 002031 401 002034 403 002051 405 002064 406 002065 408 002116 409 002154 411 002173 412 002174 414 002207 415 002210 417 002241 418 002267 420 002306 421 002313 423 002332 424 002333 426 002334 427 002335 429 002336 431 002344 432 002377 434 002416 437 002421 438 002424 441 002426 442 002432 443 002471 445 002473 447 002476 448 002477 449 002501 450 002503 451 002505 452 002507 453 002535 454 002537 455 002566 456 002567 459 002615 462 002650 463 002667 465 002671 467 002672 470 002702 471 002706 472 002711 473 002713 474 002716 475 002717 477 002720 480 002737 481 002741 482 002744 484 002746 486 002747 488 002751 490 002753 492 002775 493 003001 494 003004 495 003006 496 003030 498 003031 499 003032 502 003036 503 003040 505 003062 507 003120 512 003137 513 003142 516 003161 518 003202 521 003221 523 003223 524 003225 526 003227 528 003230 529 003232 530 003233 532 003245 533 003246 535 003277 537 003334 538 003341 539 003345 540 003346 542 003356 543 003357 545 003410 546 003413 547 003415 548 003422 551 003443 552 003445 554 003470 555 003471 557 003476 558 003477 559 003500 562 003503 564 003504 567 003532 570 003564 571 003570 572 003574 573 003577 574 003605 575 003610 576 003613 577 003621 578 003624 579 003626 580 003635 581 003654 582 003705 583 003712 584 003714 585 003724 586 003732 588 003734 590 003773 592 003775 594 004000 596 004020 597 004021 598 004023 599 004025 600 004027 601 004031 602 004057 603 004061 604 004110 605 004111 608 004137 610 004156 612 004160 614 004161 617 004171 618 004175 619 004200 620 004202 621 004205 622 004206 624 004207 627 004226 628 004230 629 004233 631 004235 634 004236 636 004240 638 004241 642 004245 643 004247 645 004271 646 004277 649 004301 650 004304 653 004344 654 004346 656 004347 658 004350 660 004355 662 004357 663 004362 664 004363 666 004375 667 004376 668 004377 670 004433 671 004434 673 004444 674 004445 676 004456 679 004465 680 004467 681 004471 683 004473 684 004474 686 004507 688 004522 690 004532 692 004570 693 004572 694 004574 695 004575 697 004605 698 004606 699 004610 700 004611 701 004612 703 004615 705 004616 707 004624 709 004631 712 004657 714 004662 715 004710 717 004724 719 004726 721 004727 724 004737 725 004743 726 004746 727 004750 728 004753 729 004754 731 004755 734 004774 735 004776 736 005001 738 005003 741 005004 743 005006 745 005007 749 005013 750 005015 752 005037 753 005045 756 005047 758 005052 760 005054 762 005070 766 005125 767 005127 769 005131 770 005132 773 005160 774 005162 776 005174 778 005200 779 005205 780 005215 781 005225 782 005231 783 005233 785 005235 786 005236 788 005267 790 005332 791 005363 793 005420 795 005461 796 005462 797 005463 800 005477 801 005500 803 005502 805 005530 807 005572 808 005576 809 005602 810 005603 812 005613 813 005614 814 005615 816 005651 817 005652 819 005671 821 005704 822 005705 823 005706 825 005707 829 005737 831 005742 832 005761 834 005763 835 005766 837 006025 838 006031 842 006032 844 006047 846 006106 848 006110 850 006111 853 006121 854 006125 855 006130 856 006132 857 006135 858 006136 860 006137 863 006156 864 006160 865 006163 867 006165 870 006166 872 006170 873 006171 877 006175 878 006177 880 006221 881 006227 884 006231 885 006234 888 006274 889 006276 890 006317 892 006320 894 006321 895 006324 896 006325 898 006337 899 006340 901 006371 903 006434 904 006440 905 006510 906 006516 907 006517 911 006540 912 006544 913 006613 914 006614 915 006615 916 006616 918 006626 919 006627 920 006630 922 006664 923 006665 925 006700 927 006710 928 006711 929 006712 931 006714 932 006720 934 006721 935 006722 936 006723 938 006726 940 006727 942 006731 943 006736 944 006747 945 006755 947 006757 948 006760 950 006772 951 007001 952 007053 955 007056 957 007065 958 007104 960 007106 961 007111 963 007150 964 007154 966 007155 970 007174 973 007206 974 007217 976 007221 977 007224 981 007256 983 007355 985 007451 987 007454 989 007457 990 007461 992 007525 993 007527 996 007543 997 007564 999 007566 1000 007572 1002 007573 1004 007575 1006 007653 1008 007672 1010 007716 1012 007727 1014 007731 1016 007732 1019 007742 1020 007746 1021 007751 1022 007753 1023 007756 1024 007757 1026 007760 1029 007777 1030 010001 1031 010004 1033 010006 1036 010007 1038 010011 1039 010012 1043 010016 1044 010020 1046 010042 1047 010050 1050 010052 1052 010055 1054 010057 1056 010073 1060 010130 1062 010131 1063 010136 1064 010146 1065 010166 1067 010202 1068 010204 1070 010205 1071 010210 1073 010222 1075 010256 1076 010260 1077 010261 1078 010262 1080 010272 1082 010327 1083 010331 1084 010332 1085 010333 1087 010364 1089 010427 1090 010460 1092 010515 1094 010556 1095 010557 1096 010560 1099 010574 1100 010575 1102 010577 1104 010625 1106 010667 1107 010673 1108 010677 1109 010700 1110 010701 1111 010702 1113 010703 1115 010705 1116 010726 1118 010745 1119 010747 1120 010751 1121 010755 1122 010757 1123 010760 1124 010761 1125 010763 1126 010764 1127 010766 1128 010770 1129 010771 1130 011002 1131 011004 1132 011015 1133 011023 1135 011075 1137 011114 1139 011116 1140 011117 1141 011130 1142 011141 1144 011150 1145 011152 1146 011153 1147 011174 1149 011213 1152 011214 1153 011225 1154 011227 1155 011237 1157 011244 1158 011245 1159 011256 1160 011273 1162 011302 1163 011304 1166 011305 1168 011307 1169 011316 1171 011317 1174 011327 1175 011333 1176 011336 1177 011340 1178 011343 1179 011344 1181 011345 1185 011364 1186 011366 1187 011371 1189 011373 1192 011374 1194 011376 1196 011400 1197 011401 1201 011405 1202 011407 1204 011431 1205 011440 1208 011442 1209 011445 1212 011505 1213 011506 1214 011510 1216 011511 1217 011512 1219 011513 1220 011516 1222 011533 1224 011543 1225 011544 1228 011572 1229 011616 1232 011660 1233 011661 1235 011674 1236 011675 1237 011676 1239 011677 1240 011701 1242 011722 1245 011755 1246 011761 1248 011764 1250 011766 1252 011767 1255 011777 1256 012003 1257 012006 1258 012010 1259 012013 1260 012014 1262 012015 1266 012034 1267 012036 1268 012041 1270 012043 1273 012044 1274 012046 1276 012047 1278 012051 1279 012052 1283 012056 1284 012060 1286 012102 1287 012110 1290 012112 1292 012115 1294 012117 1296 012133 1300 012170 1301 012173 1303 012176 1304 012207 1306 012214 1307 012215 1310 012221 1311 012227 1314 012231 1315 012234 1318 012274 1321 012333 1322 012334 1325 012352 1326 012410 1329 012444 1332 012505 1335 012544 1338 012545 1341 012604 1344 012643 1346 012647 1349 012733 1351 012763 1352 012765 1353 012766 1355 012767 1356 012771 1357 012772 1358 012773 1359 012775 1360 012777 1362 013000 1363 013002 1366 013013 1369 013022 1372 013031 1375 013044 1378 013057 1380 013067 1382 013070 1383 013071 1386 013120 1387 013121 1388 013124 1391 013143 1393 013146 1394 013171 1395 013173 1396 013175 1397 013176 1398 013225 1400 013231 1401 013255 1404 013257 1405 013273 1407 013275 1409 013300 1410 013324 1413 013326 1415 013331 1417 013363 1420 013365 1422 013367 1423 013370 1426 013374 1427 013375 1430 013401 1431 013402 1432 013403 1434 013404 1436 013410 1437 013411 1439 013412 1442 013414 1444 013416 1445 013423 1446 013425 1447 013435 1448 013441 1449 013442 1450 013444 1453 013446 1455 013525 1458 013544 1460 013547 1462 013560 1464 013562 1466 013570 1468 013572 1472 013630 1473 013632 1480 013634 1481 013636 1482 013642 1483 013644 1484 013650 1485 013652 1486 013654 1487 013656 1488 013673 1489 013674 1490 013676 1491 013700 1492 013702 1493 013704 1494 013733 1497 013735 1499 013754 1501 013756 1503 013757 1506 013767 1507 013773 1508 013776 1509 014000 1510 014003 1511 014004 1513 014005 1517 014024 1518 014026 1519 014031 1521 014033 1524 014034 1526 014036 1528 014040 1529 014041 1533 014045 1534 014047 1536 014071 1537 014076 1540 014100 1541 014103 1546 014143 1547 014146 1549 014151 1550 014205 1555 014236 1556 014241 1560 014256 1561 014257 1562 014261 1563 014262 1564 014263 1568 014265 1569 014266 1572 014304 1573 014345 1575 014401 1577 014416 1582 014417 1583 014422 1585 014442 1587 014452 1588 014454 1589 014455 1592 014473 1593 014523 1595 014557 1596 014560 1598 014562 1599 014563 1601 014573 1602 014574 1603 014575 1605 014577 1606 014603 1608 014604 1609 014605 1611 014615 1612 014616 1613 014617 1615 014621 1616 014625 1618 014626 1619 014627 1621 014642 1623 014655 1625 014671 1626 014674 1627 014677 1628 014700 1629 014701 1630 014702 1632 014703 1634 014705 1635 014711 1636 014740 1638 014741 1639 014744 1641 014746 1642 014752 1645 014753 1647 014760 1649 014765 1652 014771 1653 015026 1655 015065 1657 015066 1658 015126 1663 015177 1665 015203 1668 015215 1669 015226 1673 015263 1674 015321 1677 015352 1679 015362 1681 015401 1683 015407 1685 015413 1687 015416 1688 015421 1690 015460 1691 015464 1694 015465 1696 015504 1697 015505 1699 015510 1702 015621 1704 015624 1705 015644 1708 015672 1709 015673 1710 015675 1711 015677 1712 015701 1713 015703 1714 015732 1715 015734 1717 015735 1718 015741 1721 015744 1724 015777 1726 016001 1728 016002 1731 016012 1732 016016 1733 016021 1734 016023 1735 016026 1736 016027 1738 016030 1742 016047 1743 016051 1744 016054 1746 016056 1749 016057 1751 016061 1753 016063 1754 016064 1758 016070 1759 016072 1761 016114 1762 016122 1765 016124 1766 016127 1769 016167 1770 016170 1773 016174 1774 016232 1777 016266 1780 016327 1783 016366 1787 016441 1788 016443 1790 016445 1791 016446 1792 016450 1794 016462 1795 016463 1797 016465 1798 016471 1800 016472 1801 016473 1803 016506 1805 016521 1806 016522 1807 016523 1809 016524 1811 016543 1812 016554 1814 016572 1817 016632 1819 016651 1822 016704 1824 016716 1826 016720 1828 016721 1831 016731 1832 016735 1833 016740 1834 016742 1835 016745 1836 016746 1838 016747 1842 016766 1843 016770 1844 016773 1846 016775 1849 016776 1851 017000 1852 017001 1856 017005 1857 017007 1859 017031 1860 017037 1863 017041 1865 017044 1867 017046 1869 017062 1873 017117 1874 017120 1875 017122 1877 017134 1878 017135 1880 017137 1881 017143 1883 017144 1884 017145 1886 017160 1888 017161 1889 017162 1891 017163 1894 017171 1896 017212 1898 017214 1899 017217 1901 017256 1902 017262 1905 017263 1907 017276 1909 017304 1910 017315 1912 017325 1914 017327 1915 017335 1917 017342 1919 017344 1921 017345 1924 017355 1925 017361 1926 017364 1927 017366 1928 017371 1929 017372 1931 017373 1935 017412 1936 017414 1937 017417 1939 017421 1942 017422 1944 017424 1945 017425 1949 017431 1950 017433 1952 017455 1953 017463 1956 017465 1958 017470 1960 017472 1962 017506 1966 017543 1967 017545 1969 017546 1970 017550 1972 017562 1973 017563 1975 017565 1976 017571 1978 017572 1979 017573 1981 017606 1983 017607 1984 017610 1986 017611 1989 017641 1990 017660 1992 017671 1995 017724 1997 017732 1999 017734 2001 017735 2004 017773 2006 017774 2010 020005 2012 020013 2014 020014 2017 020045 2023 020076 2028 020127 2033 020160 2037 020211 2041 020242 2044 020273 2047 020324 2050 020355 2053 020406 2056 020437 2524 020470 2060 020471 2062 020472 2064 020522 2066 020570 2068 020622 2070 020623 2084 020641 2085 020646 2087 020654 2088 020655 2092 020656 2097 020664 2100 020700 2102 020705 2104 020712 2105 020713 2106 020715 2107 020717 2108 020721 2109 020723 2110 020752 2111 020753 2112 021001 2115 021004 2117 021010 2118 021036 2121 021041 2124 021066 2127 021114 2130 021142 2133 021170 2135 021175 2136 021223 2139 021226 2141 021230 2142 021232 2144 021245 2145 021247 2146 021251 2147 021262 2148 021270 2151 021274 2153 021300 2155 021304 2157 021311 2158 021312 2159 021314 2160 021316 2161 021320 2162 021322 2163 021351 2164 021352 2165 021400 2169 021403 2171 021407 2172 021435 2175 021440 2177 021444 2178 021472 2181 021475 2184 021502 2187 021510 2190 021516 2192 021523 2193 021530 2196 021533 2202 021534 2217 021552 2219 021554 2220 021601 2223 021641 2227 021642 2230 021643 2232 021651 2234 021653 2235 021664 2236 021667 2237 021671 2238 021676 2240 021701 2243 021705 2244 021714 2245 021717 2249 021720 2258 021721 2260 021726 2262 021732 2263 021741 2265 021746 2268 021754 2269 021756 2271 021763 2273 021765 2276 021772 2277 022000 2278 022003 2282 022004 2287 022005 2288 022013 2289 022016 2293 022017 2296 022020 2297 022036 2299 022037 2301 022040 2315 022051 2317 022061 2318 022117 2320 022154 2322 022155 2324 022177 2325 022203 2328 022206 2329 022244 2332 022304 2333 022306 2337 022307 2349 022325 2351 022327 2352 022365 2354 022421 2356 022422 2358 022444 2359 022450 2362 022453 2363 022505 2366 022536 2367 022573 2370 022632 2371 022635 2374 022676 2377 022735 2378 022736 2384 022737 2399 022755 2401 022757 2404 023021 2407 023066 2411 023067 2414 023070 2415 023071 2418 023117 2421 023131 2422 023142 2424 023144 2425 023147 2429 023201 2430 023237 2433 023270 2437 023271 2440 023272 2441 023273 2444 023321 2445 023357 2447 023410 2451 023411 2457 023417 2464 023422 2467 023423 2468 023424 2470 023426 2473 023474 2475 023476 2476 023513 2483 023514 2484 023533 2487 023551 2489 023567 2490 023571 2492 023576 2493 023600 2495 023611 2496 023612 2497 023614 2498 023615 2499 023616 2500 023620 2501 023621 2502 023622 2503 023623 2504 023624 2505 023625 2506 023626 2507 023627 2508 023630 2509 023631 2510 023632 2511 023633 2512 023634 2513 023635 2514 023636 2515 023641 2517 023647 2520 023662 2522 023671 ----------------------------------------------------------- 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