COMPILATION LISTING OF SEGMENT list_help Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 02/16/88 1417.9 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(74-06-01,Dean), approve(), audit(), install(): 13* Written June 1974 by John W. Dean III MITIPC 14* 2) change(78-10-01,Greenberg), approve(), audit(), install(): 15* Modified October 1978 by Bernie S. Greenberg for new search facility etc. 16* 3) change(80-06-11,Herbst), approve(), audit(), install(): 17* Modified 06/11/80 by S. Herbst to implement [list_help] and add 18* -absolute_pathname. 19* 4) change(81-09-01,GJohnson), approve(), audit(), install(): 20* Modified September, 1981 by Gary E. Johnson: 21* - increase printed output limit to 4092 characters 22* - no error message when empty dir encountered 23* - ignore ".info" suffix 24* - allow multiple -pn arguments 25* - allow -brief on active function invocation 26* - implement case insensitivity 27* - add -long control argument 28* 5) change(83-12-01,Spitzer), approve(), audit(), install(): 29* Modified December 1983 by C. Spitzer: 30* - add -sort control argument 31* 6) change(85-01-25,Lippard), approve(85-01-23,MCR7158), 32* audit(85-10-04,RBarstad), install(85-12-17,MR12.0-1001): 33* Modified January 1985 by Jim Lippard: 34* - not complain about info segs to which user doesn't have access 35* END HISTORY COMMENTS */ 36 37 38 list_help: 39 lh: procedure; 40 41 42 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 43 /* */ 44 /* Command to list names of "help" files: */ 45 /* if no args are given, a usage message is printed, */ 46 /* arguments are taken as "topics" to be searched for, */ 47 /* only names which contain one of the topics will be listed */ 48 /* */ 49 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 50 51 /* LIST OF AUTOMATIC VARIABLES */ 52 53 54 declare absp_sw bit (1), /* -absolute_pathname specified */ 55 af_sw bit (1), /* invoked as an active function */ 56 (alp, eptr, nptr) pointer, 57 arglen fixed binary (21), 58 (argptr, return_ptr) ptr, 59 arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr) variable, 60 brief bit (1), /* controls output format */ 61 complain entry variable options (variable), 62 code fixed bin (35), /* general code variable */ 63 ecount fixed bin, 64 entryname char (32) varying, 65 xentryname char (32) varying, 66 67 (numpath, return_len) fixed binary, 68 found bit (1), /* topic found in file name */ 69 (i, iname, narg, nargs, nentry, nname) fixed bin, 70 list_all bit (1), /* -all option */ 71 link_target_type fixed binary (2), 72 ndir fixed bin, /* directory counter */ 73 ntopics fixed bin, /* number of topics given as arguments */ 74 number_printed fixed bin, /* number of files listed */ 75 outstring char (4092) varying, 76 pn_flag bit (1), /* user has specified the dir */ 77 sort_sw bit (1) aligned, /* want sorting on output */ 78 sort_stringsl fixed bin (21), 79 tempp (4) ptr, 80 (sort_strings_arrayp, ptr_arrayp, index_arrayp, length_arrayp) ptr; 81 82 /* LIST OF BASED VARIABLES */ 83 84 declare area area based (areap), 85 arg char (arglen) based (argptr), 86 return_arg char (return_len) varying based (return_ptr); 87 88 declare 1 ptr_array based (ptr_arrayp) aligned, 89 2 n fixed bin (18), 90 2 ptr (ptr_array.n) ptr unaligned; 91 92 declare 1 length_array based (length_arrayp) aligned, 93 2 n fixed bin (18), 94 2 length (length_array.n) fixed bin (18); 95 96 declare 1 index_array based (index_arrayp) aligned, 97 2 n fixed bin (18), 98 2 index (index_array.n) fixed bin (21); 99 100 declare sort_strings char (sort_stringsl) based (sort_strings_arrayp); 101 declare sort_strings_array (sort_stringsl) char (1) unaligned based (sort_strings_arrayp); 102 103 declare 1 entry (ecount) aligned based (eptr), 104 2 type bit (2) unaligned, 105 2 nnames fixed bin (15) unaligned, 106 2 nindex fixed bin (17) unaligned, 107 names (iname) char (32) based (nptr); 108 109 /* LIST OF CONDITIONS */ 110 111 declare cleanup condition; 112 113 declare absolute_pathname_ entry (char (*), char (*), fixed bin (35)), 114 active_fnc_err_ entry options (variable), 115 com_err_ entry options (variable), 116 check_star_name_$path entry (char (*), fixed bin (35)), 117 cu_$af_return_arg entry (fixed bin, ptr, fixed bin, fixed bin (35)), 118 cu_$arg_list_ptr entry (pointer), 119 cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 120 cu_$af_arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr), 121 get_system_free_area_ entry returns (pointer), 122 hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)), 123 hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), 124 fixed bin (35)), 125 ioa_ entry options (variable), 126 pathname_ entry (char(*), char(*)) returns(char(168)), 127 sort_items_indirect_$adj_char entry (ptr, ptr, ptr), 128 (get_temp_segments_, release_temp_segments_) entry (char(*), (*) ptr, fixed bin(35)), 129 search_paths_$get entry (char (*), bit (36), char (*), ptr, ptr, fixed bin, ptr, fixed bin (35)); 130 131 132 /* LIST OF STATIC VARIABLES */ 133 134 declare areap ptr int static init (null), 135 error_table_$badopt fixed bin (35) external, /* illegal control argument */ 136 error_table_$inconsistent fixed bin (35) external, 137 error_table_$incorrect_access fixed bin (35) external, 138 error_table_$noentry fixed bin(35) ext static, 139 error_table_$no_info fixed bin(35) ext static, 140 error_table_$nomatch fixed bin (35) external, 141 error_table_$nostars fixed bin (35) external, 142 error_table_$wrong_no_of_args fixed bin (35) external, 143 myname char (32) options (constant) static init ("list_help"), 144 sys_info$max_seg_size fixed bin(35) ext static, 145 (upper_case char (26) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 146 lower_case char (26) init ("abcdefghijklmnopqrstuvwxyz")) static options (constant); 147 148 149 declare (addr, divide, index, length, null, rtrim, substr, translate, unspec) builtin; 150 151 /* initialization and argument handling */ 152 153 154 call cu_$af_return_arg (nargs, return_ptr, return_len, code); 155 if code ^= 0 then do; 156 af_sw = "0"b; 157 complain = com_err_; 158 arg_ptr = cu_$arg_ptr_rel; 159 end; 160 else do; 161 af_sw = "1"b; 162 complain = active_fnc_err_; 163 return_arg = ""; 164 arg_ptr = cu_$af_arg_ptr_rel; 165 end; 166 167 call cu_$arg_list_ptr (alp); 168 169 BLOCK: begin; 170 declare user_dir (divide (nargs, 2, 17, 0)) char (168); /* for user specified directory */ 171 declare topic (nargs) char (32) varying; /* can't be more topics than arguments */ 172 173 numpath = 0; /* for pathname count */ 174 list_all = "0"b; 175 number_printed = 0; 176 ntopics = 0; 177 absp_sw = "0"b; 178 pn_flag = "0"b; 179 sort_sw = "0"b; 180 brief = af_sw; 181 do narg = 1 to nargs; 182 call arg_ptr (narg, argptr, arglen, code, alp); 183 if index (arg, "-") = 1 then do; 184 if arg = "-long" | arg = "-lg" then brief = "0"b; 185 else if arg = "-brief" | arg = "-bf" then brief = "1"b; 186 else if arg = "-a" | arg = "-all" then list_all = "1"b; 187 else if arg = "-absolute_pathname" | arg = "-absp" then absp_sw = "1"b; 188 else if arg = "-sort" then sort_sw = "1"b; 189 else if arg = "-no_sort" then sort_sw = "0"b; 190 else if arg = "-pathname" | arg = "-pn" then do; 191 pn_flag = "1"b; 192 narg = narg + 1; 193 call arg_ptr (narg, argptr, arglen, code, alp); 194 /* get user specified dir path */ 195 196 if code ^= 0 then do; 197 call complain (code, myname, " 198 The -pn control argument must be followed by a pathname."); 199 return; 200 end; 201 202 203 numpath = numpath + 1; 204 call absolute_pathname_ (arg, user_dir (numpath), code); 205 /* get absolute path of dir */ 206 if code ^= 0 then do; 207 call complain (code, myname, "^a", arg); 208 return; 209 end_path: end; 210 call check_star_name_$path (user_dir (numpath), code); 211 if code ^= 0 then do; 212 if code = 1 | code = 2 then code = error_table_$nostars; 213 else call complain (code, myname, "^a", arg); 214 return; 215 end; 216 end; 217 else do; 218 BAD_OPT: call complain (error_table_$badopt, myname, """^a""", arg); 219 return; 220 end; 221 end; 222 223 else do; 224 ntopics = ntopics+1; 225 topic (ntopics) = translate (arg, lower_case, upper_case); 226 end; 227 228 229 end; /* of arg getting loop */ 230 231 if ntopics > 0 then do; /* both topics and -all in same command */ 232 if list_all then do; 233 call complain (error_table_$inconsistent, myname, " 234 Topics cannot be specified with -all."); 235 return; 236 end; 237 end; 238 if af_sw then if ^brief then do; 239 call complain (error_table_$badopt, myname, " 240 The -long control arg is not accepted for active function."); 241 return; 242 end; 243 244 if ntopics = 0 then do; /* ntopics=0 and -all not specified is wrong */ 245 if ^list_all then do; 246 call complain (error_table_$wrong_no_of_args, myname, " 247 You must specify topics or use the -all control_arg. For details, type, 248 249 help lh"); 250 return; 251 end; 252 end; 253 254 255 areap = get_system_free_area_ (); /* for allocating star info */ 256 sl_info_p = null; 257 eptr, nptr = null; 258 tempp (*) = null; 259 on cleanup call clean_up; 260 261 if ^pn_flag then do; 262 call search_paths_$get ("info_segments", sl_control_default, 263 "", null, areap, sl_info_version_1, sl_info_p, code); 264 if code ^= 0 then do; 265 call complain (code, myname, "Getting search list for info segments."); 266 return; 267 end; 268 end; 269 270 271 /* searching and printing of file names */ 272 273 if pn_flag then do ndir = 1 to numpath; /* specified by -pn option */ 274 call scan_dir (user_dir (ndir)); 275 end; 276 /* default directories */ 277 else do ndir = 1 to sl_info.num_paths; 278 call scan_dir (sl_info.pathname (ndir)); 279 end; 280 281 if number_printed = 0 & ^af_sw then call ioa_ ("No files found."); 282 else if sort_sw 283 then do; 284 unspec (index_array) = "0"b; 285 call sort_items_indirect_$adj_char (ptr_arrayp, index_arrayp, length_arrayp); 286 do i = 1 to ptr_array.n; 287 argptr = ptr_array.ptr (index_array.index (i)); 288 arglen = length_array.length (index_array.index (i)); 289 if af_sw 290 then return_arg = return_arg || arg; 291 else call ioa_ ("^a", arg); 292 end; 293 end; 294 295 call clean_up; 296 297 goto RETURN; 298 /* internal proc to do searching and listing */ 299 300 scan_dir: procedure (dirname); 301 302 declare dirname char (168) parameter; 303 declare strip_info_suffix bit (1) aligned; 304 305 call hcs_$star_ (dirname, "**.info", 3, areap, ecount, eptr, nptr, code); 306 /* use "**" to avoid duplication of effort */ 307 /* get all segs and links in specified dir */ 308 if code ^= 0 then do; /* problem getting info */ 309 if code ^= error_table_$nomatch then do; 310 call complain (code, myname, "Listing files in ^a.", dirname); 311 312 return; 313 end; 314 end; 315 316 317 do nentry = 1 to ecount; /* scan all entries */ 318 if entry.type (nentry) = "10"b then go to NEXT_ENTRY; /* ignore directories */ 319 iname = entry.nindex (nentry); 320 if entry.type (nentry) = "00"b then do; 321 call hcs_$status_minf (dirname, names(iname), 1, link_target_type, 322 0, code); 323 if code = error_table_$noentry then go to NEXT_ENTRY; 324 else if code = error_table_$incorrect_access then go to NEXT_ENTRY; 325 else if code = error_table_$no_info then go to NEXT_ENTRY; 326 else if code ^= 0 then do; 327 call complain (code, myname, "^a", 328 pathname_ (dirname, names (iname))); 329 go to NEXT_ENTRY; 330 end; 331 if link_target_type = 00b | link_target_type = 10b then go to NEXT_ENTRY; 332 end; 333 nname = 1; /* nname is the number+1 of names with ".info" */ 334 found = list_all; /* no topics matched for this seg yet */ 335 strip_info_suffix = "0"b; 336 do nname = 1 to entry.nnames (nentry); 337 /* go through all names */ 338 entryname = rtrim (names (iname)); 339 340 if substr (entryname, length (entryname) - length (".info") + 1) = ".info" then do; 341 entryname = substr (entryname, 1, length (entryname) - length (".info")); 342 strip_info_suffix = "1"b; 343 xentryname = translate (entryname, lower_case, upper_case); 344 end; 345 else go to NEXT_ENTRY; 346 347 if ^found then do; /* topics specified and not matched yet */ 348 do i = 1 to ntopics 349 while (index (xentryname, topic (i)) = 0); 350 end; 351 found = (i <= ntopics); 352 end; 353 354 if nname = 1 then do; /* first name */ 355 if absp_sw then do; 356 outstring = rtrim (pathname_ ((dirname), (entryname))); 357 if strip_info_suffix then outstring = outstring || ".info"; 358 end; 359 else outstring = entryname; 360 end; 361 362 363 if ^brief & nname > 1 then do; /* additional names */ 364 if nname = 2 then outstring = outstring || " ("; 365 else outstring = outstring || ", "; 366 outstring = outstring || entryname; 367 end; 368 369 iname = iname+1; 370 end; /* end of loop for names of one entry */ 371 372 if found then do; /* there is something to print */ 373 if ^brief & nname > 2 then /* add closing paren */ 374 outstring = outstring||")"; 375 376 if sort_sw then call add_to_sort_data (outstring); 377 else if af_sw then do; 378 if number_printed > 0 then return_arg = return_arg || " "; 379 return_arg = return_arg || outstring; 380 end; 381 else call ioa_ ("^a", outstring); 382 383 number_printed = number_printed+1; 384 end; 385 386 NEXT_ENTRY: 387 end; /* end of processing for one entry */ 388 389 if nptr ^= null () then do; free names in (area); nptr = null (); end; 390 if eptr ^= null () then do; free entry in (area); eptr = null (); end; 391 392 end scan_dir; /* end of processing for one directory */ 393 394 end BLOCK; /* end of begin block for topic allocation */ 395 396 RETURN: 397 return; 398 399 add_to_sort_data: 400 proc (in); 401 402 dcl in char (*) varying parameter; 403 dcl len fixed bin (21); 404 405 if tempp (1) = null then do; 406 call get_temp_segments_ (myname, tempp, code); 407 if code ^= 0 then do; 408 call complain (code, myname, "Getting temp segments."); 409 goto RETURN; 410 end; 411 ptr_arrayp = tempp (1); 412 index_arrayp = tempp (2); 413 length_arrayp = tempp (3); 414 sort_strings_arrayp = tempp (4); 415 length_array.n, ptr_array.n, index_array.n = 0; 416 sort_stringsl = 0; 417 end; 418 419 len = length (in); 420 if sort_stringsl + len + 1 > sys_info$max_seg_size * 4 then do; 421 call complain (0, myname, "Attempt to sort too much data."); 422 goto RETURN; 423 end; 424 425 ptr_array.n = ptr_array.n + 1; 426 ptr_array.ptr (ptr_array.n) = addr (sort_strings_array (sort_stringsl+1)); 427 428 length_array.n = length_array.n + 1; 429 length_array.length (length_array.n) = len; 430 431 substr (sort_strings, sort_stringsl+1, len) = in; 432 sort_stringsl = sort_stringsl + len; 433 434 return; 435 end add_to_sort_data; 436 437 /* procedure to free things allocated by hcs_$star_ */ 438 439 clean_up: proc; 440 if nptr ^= null () then do; free names in (area); nptr = null (); end; 441 if eptr ^= null () then do; free entry in (area); eptr = null (); end; 442 if sl_info_p ^= null () then do; free sl_info in (area); sl_info_p = null (); end; 443 if tempp (1) ^= null () then call release_temp_segments_ (myname, tempp, (0)); 444 445 end clean_up; 446 447 1 1 /* BEGIN INCLUDE FILE . . . sl_info.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(87-11-16,Lippard), approve(87-12-21,MCR7822), 1 7* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 1 8* Modified to add INITIATED_SEGS type. 1 9* 2) change(87-11-19,Lippard), approve(87-12-21,MCR7822), 1 10* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 1 11* Added uid to sl_info structure. 1 12* END HISTORY COMMENTS */ 1 13 1 14 1 15 declare 1 sl_info aligned based (sl_info_p), 1 16 2 version fixed binary, /* Must be 1 */ 1 17 2 num_paths fixed binary, /* Number of search paths */ 1 18 2 change_index_p pointer, /* Pointer to search list's update count */ 1 19 2 change_index fixed binary (71), /* This search list's update count */ 1 20 2 pad1 (6) bit (36), /* Must be zero */ 1 21 2 paths (sl_info_num_paths refer (sl_info.num_paths)), 1 22 3 type fixed binary, /* Type of search path */ 1 23 3 code fixed binary (35), /* Standard status code of search path */ 1 24 3 uid bit (36), /* Unique ID */ 1 25 3 pathname char (168) unaligned; /* Search pathname */ 1 26 1 27 declare sl_info_num_paths fixed binary; 1 28 declare sl_info_p pointer; 1 29 declare sl_info_version_1 fixed binary internal static options (constant) initial (1); 1 30 1 31 /* Keyword Types */ 1 32 1 33 declare ABSOLUTE_PATH fixed binary internal static options (constant) initial (0); 1 34 declare UNEXPANDED_PATH fixed binary internal static options (constant) initial (1); 1 35 declare REFERENCING_DIR fixed binary internal static options (constant) initial (3); 1 36 declare WORKING_DIR fixed binary internal static options (constant) initial (4); 1 37 declare PROCESS_DIR fixed binary internal static options (constant) initial (5); 1 38 declare HOME_DIR fixed binary internal static options (constant) initial (6); 1 39 declare INITIATED_SEGS fixed binary internal static options (constant) initial (7); 1 40 1 41 /* END INCLUDE FILE . . . sl_info.incl.pl1 */ 448 2 1 /* BEGIN INCLUDE FILE . . . sl_control_s.incl.pl1 */ 2 2 2 3 declare 1 sl_control_s unaligned based (addr (sl_control)), 2 4 2 af_pathname bit (1), /* "1"b => expand active functions */ 2 5 2 pad1 bit (1), /* Must be zero */ 2 6 2 key_ref_dir bit (1), /* "1"b => expand -referencing_dir keyword */ 2 7 2 key_work_dir bit (1), /* "1"b => expand -working_dir keyword */ 2 8 2 key_proc_dir bit (1), /* "1"b => expand -process_dir keyword */ 2 9 2 key_home_dir bit (1), /* "1"b => expand -home_dir keyword */ 2 10 2 pad2 bit (30); /* Must be zero */ 2 11 2 12 declare sl_control bit (36); 2 13 declare sl_control_default bit (36) internal static options (constant) initial ("101111"b); 2 14 2 15 /* END INCLUDE FILE . . . sl_control_s.incl.pl1 */ 449 450 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/88 1411.8 list_help.pl1 >spec>install>MR12.2-1023>list_help.pl1 448 1 02/16/88 1407.4 sl_info.incl.pl1 >spec>install>MR12.2-1023>sl_info.incl.pl1 449 2 01/09/79 1617.9 sl_control_s.incl.pl1 >ldd>include>sl_control_s.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. absolute_pathname_ 000012 constant entry external dcl 113 ref 204 absp_sw 000100 automatic bit(1) unaligned dcl 54 set ref 177* 187* 355 active_fnc_err_ 000014 constant entry external dcl 113 ref 162 addr builtin function dcl 149 ref 426 af_sw 000101 automatic bit(1) unaligned dcl 54 set ref 156* 161* 180 238 281 289 377 alp 000102 automatic pointer dcl 54 set ref 167* 182* 193* area based area(1024) dcl 84 ref 389 390 440 441 442 areap 000010 internal static pointer initial dcl 134 set ref 255* 262* 305* 389 390 440 441 442 arg based char unaligned dcl 84 set ref 183 184 184 185 185 186 186 187 187 188 189 190 190 204* 207* 213* 218* 225 289 291* arg_ptr 000116 automatic entry variable dcl 54 set ref 158* 164* 182 193 arglen 000110 automatic fixed bin(21,0) dcl 54 set ref 182* 183 184 184 185 185 186 186 187 187 188 189 190 190 193* 204 204 207 207 213 213 218 218 225 288* 289 291 291 argptr 000112 automatic pointer dcl 54 set ref 182* 183 184 184 185 185 186 186 187 187 188 189 190 190 193* 204 207 213 218 225 287* 289 291 brief 000122 automatic bit(1) unaligned dcl 54 set ref 180* 184* 185* 238 363 373 check_star_name_$path 000020 constant entry external dcl 113 ref 210 cleanup 000000 stack reference condition dcl 111 ref 259 code 000130 automatic fixed bin(35,0) dcl 54 set ref 154* 155 182* 193* 196 197* 204* 206 207* 210* 211 212 212 212* 213* 262* 264 265* 305* 308 309 310* 321* 323 324 325 326 327* 406* 407 408* com_err_ 000016 constant entry external dcl 113 ref 157 complain 000124 automatic entry variable dcl 54 set ref 157* 162* 197 207 213 218 233 239 246 265 310 327 408 421 cu_$af_arg_ptr_rel 000030 constant entry external dcl 113 ref 164 cu_$af_return_arg 000022 constant entry external dcl 113 ref 154 cu_$arg_list_ptr 000024 constant entry external dcl 113 ref 167 cu_$arg_ptr_rel 000026 constant entry external dcl 113 ref 158 dirname parameter char(168) unaligned dcl 302 set ref 300 305* 310* 321* 327* 327* 356 divide builtin function dcl 149 ref 170 ecount 000131 automatic fixed bin(17,0) dcl 54 set ref 305* 317 390 441 entry based structure array level 1 dcl 103 ref 390 441 entryname 000132 automatic varying char(32) dcl 54 set ref 338* 340 340 341* 341 341 343 356 359 366 eptr 000104 automatic pointer dcl 54 set ref 257* 305* 318 319 320 336 390 390 390* 441 441 441* error_table_$badopt 000054 external static fixed bin(35,0) dcl 134 set ref 218* 239* error_table_$inconsistent 000056 external static fixed bin(35,0) dcl 134 set ref 233* error_table_$incorrect_access 000060 external static fixed bin(35,0) dcl 134 ref 324 error_table_$no_info 000064 external static fixed bin(35,0) dcl 134 ref 325 error_table_$noentry 000062 external static fixed bin(35,0) dcl 134 ref 323 error_table_$nomatch 000066 external static fixed bin(35,0) dcl 134 ref 309 error_table_$nostars 000070 external static fixed bin(35,0) dcl 134 ref 212 error_table_$wrong_no_of_args 000072 external static fixed bin(35,0) dcl 134 set ref 246* found 000156 automatic bit(1) unaligned dcl 54 set ref 334* 347 351* 372 get_system_free_area_ 000032 constant entry external dcl 113 ref 255 get_temp_segments_ 000046 constant entry external dcl 113 ref 406 hcs_$star_ 000034 constant entry external dcl 113 ref 305 hcs_$status_minf 000036 constant entry external dcl 113 ref 321 i 000157 automatic fixed bin(17,0) dcl 54 set ref 286* 287 288* 348* 348* 351 in parameter varying char dcl 402 ref 399 419 431 iname 000160 automatic fixed bin(17,0) dcl 54 set ref 319* 321 327 327 338 369* 369 389 440 index 1 based fixed bin(21,0) array level 2 in structure "index_array" dcl 96 in procedure "lh" set ref 287 288 index builtin function dcl 149 in procedure "lh" ref 183 348 index_array based structure level 1 dcl 96 set ref 284* index_arrayp 002212 automatic pointer dcl 54 set ref 284 284 285* 287 288 412* 415 ioa_ 000040 constant entry external dcl 113 ref 281 291 381 len 000164 automatic fixed bin(21,0) dcl 403 set ref 419* 420 429 431 432 length 1 based fixed bin(18,0) array level 2 in structure "length_array" dcl 92 in procedure "lh" set ref 288 429* length builtin function dcl 149 in procedure "lh" ref 340 340 341 341 419 length_array based structure level 1 dcl 92 length_arrayp 002214 automatic pointer dcl 54 set ref 285* 288 413* 415 428 428 429 429 link_target_type 000166 automatic fixed bin(2,0) dcl 54 set ref 321* 331 331 list_all 000165 automatic bit(1) unaligned dcl 54 set ref 174* 186* 232 245 334 lower_case 000001 constant char(26) initial unaligned dcl 134 ref 225 343 myname 000017 constant char(32) initial unaligned dcl 134 set ref 197* 207* 213* 218* 233* 239* 246* 265* 310* 327* 406* 408* 421* 443* n based fixed bin(18,0) level 2 in structure "length_array" dcl 92 in procedure "lh" set ref 415* 428* 428 429 n based fixed bin(18,0) level 2 in structure "ptr_array" dcl 88 in procedure "lh" set ref 286 415* 425* 425 426 n based fixed bin(18,0) level 2 in structure "index_array" dcl 96 in procedure "lh" set ref 284 415* names based char(32) array unaligned dcl 103 set ref 321* 327* 327* 338 389 440 narg 000161 automatic fixed bin(17,0) dcl 54 set ref 181* 182* 192* 192 193* nargs 000162 automatic fixed bin(17,0) dcl 54 set ref 154* 170 171 181 ndir 000167 automatic fixed bin(17,0) dcl 54 set ref 273* 274* 277* 278* nentry 000163 automatic fixed bin(17,0) dcl 54 set ref 317* 318 319 320 336* nindex 0(18) based fixed bin(17,0) array level 2 packed unaligned dcl 103 ref 319 nname 000164 automatic fixed bin(17,0) dcl 54 set ref 333* 336* 354 363 364* 373 nnames 0(02) based fixed bin(15,0) array level 2 packed unaligned dcl 103 ref 336 nptr 000106 automatic pointer dcl 54 set ref 257* 305* 321 327 327 338 389 389 389* 440 440 440* ntopics 000170 automatic fixed bin(17,0) dcl 54 set ref 176* 224* 224 225 231 244 348 351 null builtin function dcl 149 ref 256 257 258 262 262 389 389 390 390 405 440 440 441 441 442 442 443 num_paths 1 based fixed bin(17,0) level 2 dcl 1-15 ref 277 442 number_printed 000171 automatic fixed bin(17,0) dcl 54 set ref 175* 281 378 383* 383 numpath 000154 automatic fixed bin(17,0) dcl 54 set ref 173* 203* 203 204 210 273 outstring 000172 automatic varying char(4092) dcl 54 set ref 356* 357* 357 359* 364* 364 365* 365 366* 366 373* 373 376* 379 381* pathname 17 based char(168) array level 3 packed unaligned dcl 1-15 set ref 278* pathname_ 000042 constant entry external dcl 113 ref 327 327 356 paths 14 based structure array level 2 dcl 1-15 pn_flag 002172 automatic bit(1) unaligned dcl 54 set ref 178* 191* 261 273 ptr 1 based pointer array level 2 packed unaligned dcl 88 set ref 287 426* ptr_array based structure level 1 dcl 88 ptr_arrayp 002210 automatic pointer dcl 54 set ref 285* 286 287 411* 415 425 425 426 426 release_temp_segments_ 000050 constant entry external dcl 113 ref 443 return_arg based varying char dcl 84 set ref 163* 289* 289 378* 378 379* 379 return_len 000155 automatic fixed bin(17,0) dcl 54 set ref 154* 163 289 378 379 return_ptr 000114 automatic pointer dcl 54 set ref 154* 163 289 289 378 378 379 379 rtrim builtin function dcl 149 ref 338 356 search_paths_$get 000052 constant entry external dcl 113 ref 262 sl_control_default 000000 constant bit(36) initial unaligned dcl 2-13 set ref 262* sl_info based structure level 1 dcl 1-15 set ref 442 sl_info_p 002216 automatic pointer dcl 1-28 set ref 256* 262* 277 278 442 442 442* sl_info_version_1 000067 constant fixed bin(17,0) initial dcl 1-29 set ref 262* sort_items_indirect_$adj_char 000044 constant entry external dcl 113 ref 285 sort_strings based char unaligned dcl 100 set ref 431* sort_strings_array based char(1) array unaligned dcl 101 set ref 426 sort_strings_arrayp 002206 automatic pointer dcl 54 set ref 414* 426 431 sort_stringsl 002174 automatic fixed bin(21,0) dcl 54 set ref 416* 420 426 431 431 432* 432 sort_sw 002173 automatic bit(1) dcl 54 set ref 179* 188* 189* 282 376 strip_info_suffix 000132 automatic bit(1) dcl 303 set ref 335* 342* 357 substr builtin function dcl 149 set ref 340 341 431* sys_info$max_seg_size 000074 external static fixed bin(35,0) dcl 134 ref 420 tempp 002176 automatic pointer array dcl 54 set ref 258* 405 406* 411 412 413 414 443 443* topic 000100 automatic varying char(32) array dcl 171 set ref 225* 348 translate builtin function dcl 149 ref 225 343 type based bit(2) array level 2 packed unaligned dcl 103 ref 318 320 unspec builtin function dcl 149 set ref 284* upper_case 000010 constant char(26) initial unaligned dcl 134 ref 225 343 user_dir 000100 automatic char(168) array unaligned dcl 170 set ref 204* 210* 274* xentryname 000143 automatic varying char(32) dcl 54 set ref 343* 348 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_PATH internal static fixed bin(17,0) initial dcl 1-33 HOME_DIR internal static fixed bin(17,0) initial dcl 1-38 INITIATED_SEGS internal static fixed bin(17,0) initial dcl 1-39 PROCESS_DIR internal static fixed bin(17,0) initial dcl 1-37 REFERENCING_DIR internal static fixed bin(17,0) initial dcl 1-35 UNEXPANDED_PATH internal static fixed bin(17,0) initial dcl 1-34 WORKING_DIR internal static fixed bin(17,0) initial dcl 1-36 sl_control automatic bit(36) unaligned dcl 2-12 sl_control_s based structure level 1 packed unaligned dcl 2-3 sl_info_num_paths automatic fixed bin(17,0) dcl 1-27 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_OPT 001005 constant label dcl 218 BLOCK 000357 constant label dcl 169 NEXT_ENTRY 002543 constant label dcl 386 ref 318 323 324 325 329 331 340 RETURN 002573 constant label dcl 396 ref 297 409 422 add_to_sort_data 002574 constant entry internal dcl 399 ref 376 clean_up 002773 constant entry internal dcl 439 ref 259 295 end_path 000716 constant label dcl 209 lh 000272 constant entry external dcl 38 list_help 000301 constant entry external dcl 38 scan_dir 001611 constant entry internal dcl 300 ref 274 278 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3644 3742 3301 3654 Length 4220 3301 76 241 343 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lh 1178 external procedure is an external procedure. begin block on line 169 420 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 259 64 on unit scan_dir internal procedure shares stack frame of begin block on line 169. add_to_sort_data internal procedure shares stack frame of begin block on line 169. clean_up 80 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 areap lh STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 169 000100 topic begin block on line 169 000100 user_dir begin block on line 169 000132 strip_info_suffix scan_dir 000164 len add_to_sort_data lh 000100 absp_sw lh 000101 af_sw lh 000102 alp lh 000104 eptr lh 000106 nptr lh 000110 arglen lh 000112 argptr lh 000114 return_ptr lh 000116 arg_ptr lh 000122 brief lh 000124 complain lh 000130 code lh 000131 ecount lh 000132 entryname lh 000143 xentryname lh 000154 numpath lh 000155 return_len lh 000156 found lh 000157 i lh 000160 iname lh 000161 narg lh 000162 nargs lh 000163 nentry lh 000164 nname lh 000165 list_all lh 000166 link_target_type lh 000167 ndir lh 000170 ntopics lh 000171 number_printed lh 000172 outstring lh 002172 pn_flag lh 002173 sort_sw lh 002174 sort_stringsl lh 002176 tempp lh 002206 sort_strings_arrayp lh 002210 ptr_arrayp lh 002212 index_arrayp lh 002214 length_arrayp lh 002216 sl_info_p lh THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_le_a alloc_char_temp enter_begin_block call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry set_chars_eis index_chars_eis op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ active_fnc_err_ check_star_name_$path com_err_ cu_$af_arg_ptr_rel cu_$af_return_arg cu_$arg_list_ptr cu_$arg_ptr_rel get_system_free_area_ get_temp_segments_ hcs_$star_ hcs_$status_minf ioa_ pathname_ release_temp_segments_ search_paths_$get sort_items_indirect_$adj_char THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$incorrect_access error_table_$no_info error_table_$noentry error_table_$nomatch error_table_$nostars error_table_$wrong_no_of_args sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 38 000271 154 000306 155 000322 156 000324 157 000325 158 000332 159 000335 161 000336 162 000340 163 000345 164 000346 167 000351 169 000357 170 000362 171 000372 204 000400 173 000402 174 000403 175 000404 176 000405 177 000406 178 000407 179 000410 180 000411 181 000413 182 000424 183 000442 184 000457 185 000471 186 000504 187 000517 188 000532 189 000541 190 000547 191 000557 192 000561 193 000562 196 000600 197 000603 199 000626 203 000630 204 000631 206 000660 207 000663 208 000714 210 000716 211 000736 212 000741 213 000751 214 001002 216 001004 218 001005 219 001037 221 001041 224 001042 225 001043 226 001065 229 001066 231 001071 232 001073 233 001075 235 001121 238 001123 239 001127 241 001153 244 001155 245 001157 246 001161 250 001205 255 001207 256 001216 257 001221 258 001224 259 001240 261 001262 262 001265 264 001340 265 001343 266 001366 273 001370 274 001402 275 001412 277 001416 278 001430 279 001440 281 001443 282 001470 284 001472 285 001503 286 001516 287 001530 288 001533 289 001536 291 001554 292 001575 295 001600 297 001605 394 001610 300 001611 305 001613 308 001663 309 001666 310 001671 312 001721 317 001722 318 001732 319 001737 320 001745 321 001747 323 002016 324 002023 325 002025 326 002027 327 002031 329 002105 331 002106 333 002112 334 002114 335 002116 336 002117 338 002132 340 002166 341 002200 342 002206 343 002210 344 002226 347 002227 348 002231 350 002254 351 002256 354 002262 355 002265 356 002267 357 002346 358 002363 359 002364 363 002371 364 002376 365 002413 366 002425 369 002437 370 002440 372 002442 373 002444 376 002457 377 002472 378 002474 379 002506 380 002521 381 002522 383 002541 386 002543 389 002546 389 002552 389 002556 390 002561 390 002565 390 002567 392 002572 396 002573 399 002574 405 002605 406 002612 407 002633 408 002636 409 002661 411 002664 412 002666 413 002670 414 002672 415 002674 416 002677 419 002700 420 002704 421 002717 422 002743 425 002746 426 002747 428 002754 429 002755 431 002760 432 002767 434 002771 439 002772 440 003000 440 003005 440 003011 441 003014 441 003020 441 003022 442 003025 442 003031 442 003037 443 003042 445 003070 ----------------------------------------------------------- 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