COMPILATION LISTING OF SEGMENT value_list Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 02/27/89 1051.4 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(89-01-19,TLNguyen), approve(89-01-19,MCR8051), 17* audit(89-02-03,Parisek), install(89-02-27,MR12.3-1015): 18* Accept a starname whose length is longer than 32 characters 19* (entryname length) when specifying the -match or -exclude 20* control argument. 21* END HISTORY COMMENTS */ 22 23 24 value_list: vls: proc; 25 26 /* Written 04/15/81 by S. Herbst */ 27 /* Fixed bug in vls -all 06/02/82 S. Herbst */ 28 /* Added -depth, changed to omit pushed values by default 07/26/84 S. Herbst */ 29 /* Added -brief, changed to report nomatch's for individual args 07/27/84 S. Herbst */ 30 /* Fixed -data erroneous "not found" error message 12/17/84 Steve Herbst */ 31 1 1 /* BEGIN: check_star_name.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-14,JSLove), approve(86-08-14,MCR7518), 1 5* audit(86-08-14,FCSmith), install(86-10-02,MR12.0-1174): 1 6* Created, to support check_star_name_ entrypoint. 1 7* 2) change(87-06-01,GDixon), approve(87-07-13,MCR7740), 1 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 9* Change structures and bit structures to be unaligned, to match the 1 10* check_star_name_ parameters to which such strings are passed. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* format: style3,comcol71,ifthenstmt,indcomtxt,indproc,idind30 */ 1 14 1 15 declare 1 check_star aligned based, 1 16 2 reject_wild bit (1) unaligned, 1 17 2 ignore_archive bit (1) unaligned, 1 18 2 process_archive bit (1) unaligned, 1 19 2 ignore_entrypoint bit (1) unaligned, 1 20 2 process_entrypoint bit (1) unaligned, 1 21 2 ignore_path bit (1) unaligned, 1 22 2 process_path bit (1) unaligned, 1 23 2 ignore_equal bit (1) unaligned, 1 24 2 ignore_length bit (1) unaligned, 1 25 2 ignore_nonascii bit (1) unaligned, 1 26 2 ignore_null bit (1) unaligned, 1 27 2 unimplemented bit (25) unaligned; 1 28 1 29 declare ( 1 30 CHECK_STAR_ENTRY_DEFAULT initial ("00010001000"b), /* Behavior of check_star_name_$entry (obsolete). */ 1 31 CHECK_STAR_IGNORE_ALL initial ("01010101111"b), /* Check for *** and classify only. */ 1 32 CHECK_STAR_IGNORE_ARCHIVE initial ("01000000000"b), /* Do not reject archive convention "::". */ 1 33 CHECK_STAR_IGNORE_ENTRYPOINT initial ("00010000000"b), /* Do not reject "$" or "|" characters. */ 1 34 CHECK_STAR_IGNORE_EQUAL initial ("00000001000"b), /* Do not reject "=" or "%" characters. */ 1 35 CHECK_STAR_IGNORE_LENGTH initial ("00000000100"b), /* Do not reject star names longer than 32 chars. */ 1 36 CHECK_STAR_IGNORE_NONASCII initial ("00000000010"b), /* No not reject star names with nonASCII chars. */ 1 37 CHECK_STAR_IGNORE_NULL initial ("00000000001"b), /* Do not reject names with null components. */ 1 38 CHECK_STAR_IGNORE_PATH initial ("00000100000"b), /* Do not reject "<" or ">" characters. */ 1 39 CHECK_STAR_PATH_DEFAULT initial ("00110011100"b), /* Behavior of check_star_name_$path (obsolete). */ 1 40 CHECK_STAR_PROCESS_ARCHIVE initial ("00100000000"b), /* Process "::" as archive delimiter. */ 1 41 CHECK_STAR_PROCESS_ENTRYPOINT initial ("00001000000"b), /* Ignore trailing entrypoint if present. */ 1 42 CHECK_STAR_PROCESS_PATH initial ("00000010000"b), /* Ignore leading directory path if present. */ 1 43 CHECK_STAR_REJECT_WILD initial ("10000000000"b), /* Return error_table_$nostars if type not zero. */ 1 44 CHECK_STAR_UNIMPLEMENTED initial ("001FFFFFF"b4) /* Nonexistent test flags. Reject them. */ 1 45 ) bit (36) static options (constant); 1 46 1 47 declare ( 1 48 STAR_TYPE_MATCHES_EVERYTHING initial (2), 1 49 STAR_TYPE_USE_MATCH_PROCEDURE initial (1), 1 50 STAR_TYPE_USE_PL1_COMPARE initial (0) 1 51 ) fixed bin (2) static options (constant); 1 52 1 53 /* END OF: check_star_name.incl.pl1 * * * * * */ 32 2 1 /* BEGIN value_structures.incl.pl1 */ 2 2 2 3 dcl (match_info_ptr, value_list_info_ptr) ptr; 2 4 dcl (alloc_name_count, alloc_pair_count) fixed bin; 2 5 dcl (alloc_max_name_len, alloc_chars_len) fixed bin (21); 2 6 2 7 dcl 1 match_info aligned based (match_info_ptr), 2 8 2 version fixed bin, /* = 1 */ 2 9 2 name_count fixed bin, 2 10 2 max_name_len fixed bin (21), 2 11 2 name_array (alloc_name_count refer (match_info.name_count)), 2 12 3 exclude_sw bit (1) unaligned, /* ON for -exclude, OFF for -match */ 2 13 3 regexp_sw bit (1) unaligned, /* ON for regular exp. without the //, OFF for starname */ 2 14 3 pad bit (34) unaligned, 2 15 3 name char (alloc_max_name_len refer (match_info.max_name_len)) varying; 2 16 2 17 dcl 1 value_list_info aligned based (value_list_info_ptr), 2 18 2 version fixed bin, /* = 1 */ 2 19 2 pair_count fixed bin, 2 20 2 chars_len fixed bin (21), 2 21 2 pairs (alloc_pair_count refer (value_list_info.pair_count)), 2 22 3 type_switches bit (36), /* correspond to the selection switches arg */ 2 23 3 (name_index, name_len) fixed bin (21), 2 24 3 (value_index, value_len) fixed bin (21), 2 25 2 chars char (alloc_chars_len refer (value_list_info.chars_len)); 2 26 2 27 dcl (match_info_version_1, value_list_info_version_1) fixed bin int static options (constant) init (1); 2 28 2 29 /* END OF value_structures.incl.pl1 */ 33 34 35 /* Constants */ 36 37 dcl ME char (32) aligned int static options (constant) init ("value_list"); 38 dcl PERPROCESS_SW bit (36) int static options (constant) init ("100000000000000000000000000000000000"b); 39 40 41 /* Based */ 42 43 dcl arg char (arg_len) based (arg_ptr); 44 dcl return_arg char (return_len) varying based (return_ptr); 45 46 47 /* Automatic */ 48 49 dcl based_area area based (area_ptr); 50 51 dcl (seg_dn, seg_path) char (168); 52 dcl seg_en char (32); 53 dcl num_str char (16); 54 55 dcl call_switches bit (36) aligned; 56 dcl (af_sw, all_sw, bad_starname_sw, brief_sw, data_only_sw, default_sw, exclude_first_sw) bit (1); 57 dcl (listed_data_sw, listed_sw, match_sw, match_arg_sw, path_sw, some_sw, some_data_sw, val_sw, var_sw) bit (1); 58 59 dcl (area_ptr, arg_ptr, return_ptr, seg_ptr) ptr; 60 61 dcl (arg_count, i, j, k, name_index) fixed bin; 62 dcl (bottom_index, more_count, print_count, push_depth, same_count, top_index) fixed bin; 63 dcl starname_type fixed bin (2); 64 dcl (arg_len, return_len) fixed bin (21); 65 dcl code fixed bin (35); 66 67 dcl complain entry variable options (variable); 68 69 70 /* External */ 71 72 dcl error_table_$bad_conversion fixed bin (35) ext; 73 dcl error_table_$badopt fixed bin (35) ext; 74 dcl error_table_$nomatch fixed bin (35) ext; 75 dcl error_table_$not_act_fnc fixed bin (35) ext; 76 dcl error_table_$oldnamerr fixed bin (35) ext; 77 78 dcl active_fnc_err_ entry options (variable); 79 dcl check_star_name_ entry (char (*), bit (36) aligned, fixed bin (2), fixed bin (35)); 80 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 81 dcl com_err_ entry options (variable); 82 dcl cu_$af_return_arg entry (fixed, ptr, fixed (21), fixed (35)); 83 dcl cu_$arg_ptr entry (fixed, ptr, fixed (21), fixed (35)); 84 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 85 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed (35)); 86 dcl get_system_free_area_ entry returns (ptr); 87 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed (1), fixed (2), ptr, fixed (35)); 88 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 89 dcl (ioa_, ioa_$rsnnl) entry options (variable); 90 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 91 dcl requote_string_ entry (char (*)) returns (char (*)); 92 dcl value_$get_path entry (char (*), fixed bin (35)); 93 dcl value_$list entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed (35)); 94 dcl value_$list_data_names entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed (35)); 95 96 dcl (index, length, max, min, null, rtrim, substr, unspec) builtin; 97 98 dcl cleanup condition; 99 100 call cu_$af_return_arg (arg_count, return_ptr, return_len, code); 101 if code = 0 then do; 102 af_sw = "1"b; 103 complain = active_fnc_err_; 104 end; 105 else if code = error_table_$not_act_fnc then do; 106 af_sw = "0"b; 107 complain = com_err_; 108 code = 0; 109 end; 110 else do; 111 call com_err_ (code, ME); 112 return; 113 end; 114 115 area_ptr = get_system_free_area_ (); 116 match_info_ptr, seg_ptr, value_list_info_ptr = null; 117 118 on cleanup call clean_up (); 119 120 all_sw, brief_sw, data_only_sw, exclude_first_sw, match_sw, match_arg_sw, path_sw, val_sw, var_sw = "0"b; 121 call_switches = "0"b; 122 push_depth = 1; /* default = list latest only */ 123 alloc_name_count, alloc_max_name_len = 0; 124 125 do i = 1 to arg_count; 126 127 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 128 129 if index (arg, "-") = 1 then 130 if arg = "-all" | arg = "-a" then all_sw = "1"b; 131 132 else if arg = "-brief" | arg = "-bf" then brief_sw = "1"b; 133 134 else if arg = "-data" then data_only_sw = "1"b; 135 136 else if arg = "-depth" | arg = "-dh" then do; 137 i = i + 1; 138 if i > arg_count then call give_up ("No value specified for " || arg); 139 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 140 push_depth = cv_dec_check_ (arg, code); 141 if code ^= 0 then do; 142 call complain (error_table_$bad_conversion, ME, "-depth value ^a", arg); 143 return; 144 end; 145 end; 146 147 else if arg = "-exclude" | arg = "-ex" | arg = "-match" then do; 148 i = i + 1; 149 if i > arg_count then call give_up ("No value specified for " || arg); 150 if ^match_sw & (arg = "-exclude" | arg = "-ex") then exclude_first_sw = "1"b; 151 match_sw = "1"b; 152 if arg = "-match" then match_arg_sw = "1"b; 153 NAME_NEXT: 154 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 155 NAME: 156 alloc_name_count = alloc_name_count + 1; 157 alloc_max_name_len = max (alloc_max_name_len, arg_len); 158 end; 159 160 else if arg = "-long" | arg = "-lg" then brief_sw = "0"b; 161 162 else if arg = "-name" | arg = "-nm" then do; 163 i = i + 1; 164 if i > arg_count then call give_up ("No value specified for -name"); 165 match_sw, match_arg_sw = "1"b; 166 go to NAME_NEXT; 167 end; 168 169 else if arg = "-pathname" | arg = "-pn" then do; 170 i = i + 1; 171 if i > arg_count then call give_up ("No value specified for -pathname"); 172 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 173 call expand_pathname_$add_suffix (arg, "value", seg_dn, seg_en, code); 174 if code ^= 0 then do; 175 call complain (code, ME, "^a", arg); 176 return; 177 end; 178 path_sw = "1"b; 179 end; 180 181 else if arg = "-permanent" | arg = "-perm" then substr (call_switches, 2, 1) = "1"b; 182 183 else if arg = "-perprocess" | arg = "-pp" then substr (call_switches, 1, 1) = "1"b; 184 185 else if arg = "-value" | arg = "-val" then val_sw = "1"b; 186 187 else if arg = "-variable" | arg = "-var" then var_sw = "1"b; 188 189 else do; 190 call complain (error_table_$badopt, ME, "^a", arg); 191 return; 192 end; 193 194 else do; /* individual name to be matched */ 195 match_sw, match_arg_sw = "1"b; 196 go to NAME; 197 end; 198 end; 199 200 if ^val_sw & ^var_sw then 201 if af_sw then 202 call give_up ("Either -var or -val required to the active function."); 203 else var_sw, val_sw = "1"b; 204 205 if substr (call_switches, 1, 2) = "00"b then substr (call_switches, 1, 2) = "11"b; 206 /* default is both */ 207 208 if path_sw then do; 209 call hcs_$initiate (seg_dn, seg_en, "", 0, 0, seg_ptr, code); 210 if seg_ptr = null then do; 211 call complain (code, ME, "Value segment ^a^[>^]^a", seg_dn, seg_dn ^= ">", seg_en); 212 return; 213 end; 214 end; 215 216 default_sw = (alloc_name_count = 0); 217 if default_sw then do; 218 alloc_name_count = 1; 219 alloc_max_name_len = 2; 220 end; 221 else if exclude_first_sw then alloc_name_count = alloc_name_count + 1; 222 /* if -exclude is first, start by matching "**" */ 223 224 /* Allocate and fill the match structure */ 225 226 allocate match_info in (based_area) set (match_info_ptr); 227 228 unspec (match_info) = "0"b; 229 match_info.version = match_info_version_1; 230 match_info.name_count = alloc_name_count; 231 match_info.max_name_len = alloc_max_name_len; 232 name_index = 0; 233 234 if default_sw | exclude_first_sw then do; 235 name_index = 1; 236 match_info.exclude_sw (1), match_info.regexp_sw (1) = "0"b; 237 match_info.name (1) = "**"; 238 end; 239 240 bad_starname_sw = "0"b; 241 242 if ^default_sw then 243 do i = 1 to arg_count; 244 245 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 246 247 if index (arg, "-") = 1 then do; 248 249 if arg = "-exclude" | arg = "-ex" then do; 250 name_index = name_index + 1; 251 match_info.exclude_sw (name_index) = "1"b; 252 MATCH_NAME: 253 i = i + 1; 254 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 255 if substr (arg, 1, 1) = "/" & substr (arg, arg_len, 1) = "/" & arg ^= "/" then do; 256 /* The specified STR for -ex is a qedx regular expression */ 257 match_info.regexp_sw (name_index) = "1"b; 258 match_info.name (name_index) = substr (arg, 2, arg_len - 2); 259 end; 260 else do; /* The specified STR for either -ex or -match is a starname. */ 261 /* We allow lengths of longer than 32 chars. */ 262 call check_star_name_ (arg, (CHECK_STAR_IGNORE_LENGTH), starname_type, code); 263 if code ^= 0 then do; 264 bad_starname_sw = "1"b; 265 call complain (code, ME, "^a", arg); 266 end; 267 match_info.regexp_sw (name_index) = "0"b; 268 /* a starname */ 269 match_info.name (name_index) = arg; 270 end; 271 end; 272 273 274 else if arg = "-match" then do; 275 name_index = name_index + 1; 276 match_info.exclude_sw (name_index) = "0"b; 277 go to MATCH_NAME; 278 end; 279 280 else if arg = "-name" | arg = "-nm" then do; 281 i = i + 1; 282 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 283 PLAIN_NAME: 284 name_index = name_index + 1; 285 match_info.exclude_sw (name_index), match_info.regexp_sw (name_index) = "0"b; 286 match_info.name (name_index) = arg; 287 end; 288 289 else if arg = "-depth" | arg = "-dh" | 290 arg = "-pathname" | arg = "-pn" then i = i + 1; 291 end; 292 293 else go to PLAIN_NAME; 294 end; 295 296 if bad_starname_sw then go to RETURN; 297 298 listed_data_sw, listed_sw = "0"b; 299 if data_only_sw then go to LIST_DATA; 300 301 call value_$list (seg_ptr, call_switches, match_info_ptr, area_ptr, value_list_info_ptr, code); 302 if code ^= 0 then do; 303 ERROR: 304 if code = error_table_$nomatch then 305 if all_sw & ^listed_data_sw then go to LIST_DATA; 306 else if af_sw then return; /* return null string */ 307 else call complain (0, ME, "No matching names."); 308 else do; 309 if seg_ptr = null then 310 call value_$get_path (seg_path, (0)); 311 else seg_path = pathname_ (seg_dn, seg_en); 312 call complain (code, ME, "^a", seg_path); 313 end; 314 go to RETURN; 315 end; 316 317 listed_sw = "1"b; /* Note that we have had data to list. */ 318 319 /* Show the results */ 320 321 do i = 1 to value_list_info.pair_count; 322 323 do j = i to value_list_info.pair_count while 324 (substr (value_list_info.chars, value_list_info.name_index (j), value_list_info.name_len (j)) = 325 substr (value_list_info.chars, value_list_info.name_index (i), value_list_info.name_len (i))); 326 end; 327 same_count = j - i; /* number of pushed values for same var name */ 328 329 if same_count > 1 then do; /* some pushed values */ 330 331 top_index = i; 332 print_count = min (same_count, push_depth); 333 more_count = same_count - print_count; 334 bottom_index = top_index + print_count - 1; 335 336 do k = top_index to bottom_index; 337 338 call print_one (k, top_index, bottom_index, more_count); 339 end; 340 341 i = j - 1; 342 end; 343 344 else call print_one (i, i, i, 0); 345 346 end; 347 348 if ^all_sw then go to DONE_LISTING; /* Don't list data variables unless requested. */ 349 350 free value_list_info_ptr -> value_list_info in (based_area); 351 352 LIST_DATA: 353 listed_data_sw = "1"b; 354 355 call value_$list_data_names (seg_ptr, call_switches, match_info_ptr, area_ptr, value_list_info_ptr, code); 356 if code ^= 0 then 357 if listed_sw & code = error_table_$nomatch then go to RETURN; 358 else go to ERROR; 359 360 do i = 1 to value_list_info.pair_count; 361 362 do j = i to value_list_info.pair_count while 363 (substr (value_list_info.chars, value_list_info.name_index (j), value_list_info.name_len (j)) = 364 substr (value_list_info.chars, value_list_info.name_index (i), value_list_info.name_len (i))); 365 end; 366 same_count = j - i; /* number of pushed values for same var name */ 367 368 if same_count > 1 then do; /* some pushed values */ 369 top_index = i; 370 print_count = min (same_count, push_depth); 371 more_count = same_count - print_count; 372 bottom_index = top_index + print_count - 1; 373 374 do k = top_index to bottom_index; 375 376 call print_one_data (k, top_index, bottom_index, more_count); 377 end; 378 379 i = j - 1; 380 end; 381 382 else call print_one_data (i, i, i, 0); 383 384 end; 385 DONE_LISTING: 386 if ^brief_sw then do; /* check for individual match failures */ 387 388 match_info.name_count = 1; /* do this name by name */ 389 match_info.exclude_sw (1) = "0"b; 390 391 do i = 1 to arg_count; 392 393 call cu_$arg_ptr (i, arg_ptr, arg_len, 0); 394 if index (arg, "-") = 1 then do; 395 if arg = "-depth" | arg = "-dh" | 396 arg = "-exclude" | arg = "-ex" | /* ignore the -exclude and -match names */ 397 arg = "-match" | 398 arg = "-pathname" | arg = "-pn" then i = i + 1; 399 end; 400 else do; 401 match_info.name (1) = arg; 402 some_sw, some_data_sw = "0"b; 403 if ^data_only_sw then do; 404 if value_list_info_ptr ^= null then free value_list_info in (based_area); 405 406 call value_$list (seg_ptr, call_switches, match_info_ptr, area_ptr, 407 value_list_info_ptr, code); 408 some_sw = (code = 0); 409 end; 410 if all_sw | data_only_sw then do; 411 if value_list_info_ptr ^= null then free value_list_info in (based_area); 412 413 call value_$list_data_names (seg_ptr, call_switches, match_info_ptr, area_ptr, 414 value_list_info_ptr, code); 415 some_data_sw = (code = 0); 416 end; 417 if ^some_sw & ^some_data_sw then do; 418 call check_star_name_$entry (arg, code); 419 if code = 0 then call complain (error_table_$oldnamerr, ME, "^a", arg); 420 else call complain (error_table_$nomatch, ME, "^a", arg); 421 end; 422 end; 423 end; 424 end; 425 RETURN: 426 call clean_up; 427 428 return; 429 430 clean_up: 431 proc; 432 433 if match_info_ptr ^= null then free match_info_ptr -> match_info in (based_area); 434 if value_list_info_ptr ^= null then free value_list_info_ptr -> value_list_info in (based_area); 435 436 if seg_ptr ^= null then call hcs_$terminate_noname (seg_ptr, 0); 437 438 end clean_up; 439 440 441 442 443 444 give_up: 445 proc (P_str); 446 447 dcl P_str char (*); 448 449 call complain (0, ME, "^a", P_str); 450 go to RETURN; 451 452 end give_up; 453 454 print_one: proc (P_index, P_top_index, P_bottom_index, P_more_count); 455 456 dcl (P_index, P_top_index, P_bottom_index, P_more_count) fixed; 457 458 if af_sw then do; 459 if var_sw then do; 460 if length (return_arg) > 0 then return_arg = return_arg || " "; 461 return_arg = return_arg || requote_string_ ( 462 substr (value_list_info.chars, 463 value_list_info.name_index (P_index), 464 value_list_info.name_len (P_index))); 465 end; 466 if val_sw then do; 467 if length (return_arg) > 0 then return_arg = return_arg || " "; 468 return_arg = return_arg || requote_string_ ( 469 substr (value_list_info.chars, 470 value_list_info.value_index (P_index), 471 value_list_info.value_len (P_index))); 472 end; 473 end; 474 475 else call ioa_ ("^[^[PP^]^5t^a^[^31.2t^a^]^;^3s^a^]^a", var_sw, 476 value_list_info.type_switches (P_index) & PERPROCESS_SW, 477 substr (value_list_info.chars, 478 value_list_info.name_index (P_index), 479 value_list_info.name_len (P_index)), 480 val_sw, 481 requote_string_ ( 482 substr (value_list_info.chars, 483 value_list_info.value_index (P_index), 484 value_list_info.value_len (P_index))), 485 pushed_message (P_index, P_top_index, P_bottom_index, P_more_count)); 486 487 end print_one; 488 489 print_one_data: proc (P_index, P_top_index, P_bottom_index, P_more_count); 490 491 dcl (P_index, P_top_index, P_bottom_index, P_more_count) fixed bin; 492 493 if af_sw then do; 494 if var_sw then do; 495 if length (return_arg) > 0 then return_arg = return_arg || " "; 496 return_arg = return_arg || requote_string_ ( 497 substr (value_list_info.chars, 498 value_list_info.name_index (P_index), 499 value_list_info.name_len (P_index))); 500 end; 501 if val_sw then do; /* give length in words rather than the value */ 502 if length (return_arg) > 0 then return_arg = return_arg || " "; 503 call ioa_$rsnnl ("^d", num_str, length (num_str), value_list_info.value_len (P_index)); 504 return_arg = return_arg || rtrim (num_str); 505 end; 506 end; 507 508 else call ioa_ ("^[^[PP^]^5t^a^[^31.2t^]^;^3s^]^[(^d word^[s^])^]^a", var_sw, 509 value_list_info.type_switches (P_index) & PERPROCESS_SW, 510 substr (value_list_info.chars, 511 value_list_info.name_index (P_index), 512 value_list_info.name_len (P_index)), 513 val_sw, val_sw, value_list_info.value_len (P_index), 514 value_list_info.value_len (P_index) ^= 1, 515 pushed_message (P_index, P_top_index, P_bottom_index, P_more_count)); 516 517 end print_one_data; 518 519 pushed_message: proc (P_index, P_top_index, P_bottom_index, P_more_count) returns (char (32) varying); 520 521 dcl (P_index, P_top_index, P_bottom_index, P_more_count) fixed; 522 dcl message char (32) varying; 523 524 message = ""; 525 if P_top_index ^= P_bottom_index then do; 526 if P_index = P_top_index then message = " (current value)"; 527 else if P_index = P_bottom_index then 528 if P_more_count > 0 then 529 call ioa_$rsnnl (" (^d more pushed value^[s^])", message, length (message), 530 P_more_count, P_more_count > 1); 531 else message = " (earliest value)"; 532 end; 533 else if P_more_count > 0 then 534 call ioa_$rsnnl (" (^d pushed value^[s^])", message, length (message), 535 P_more_count, P_more_count > 1); 536 537 return (message); 538 539 end pushed_message; 540 541 end value_list; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/27/89 1051.4 value_list.pl1 >spec>install>1015>value_list.pl1 32 1 08/06/87 0913.4 check_star_name.incl.pl1 >ldd>include>check_star_name.incl.pl1 33 2 06/24/81 1743.9 value_structures.incl.pl1 >ldd>include>value_structures.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. CHECK_STAR_IGNORE_LENGTH constant bit(36) initial packed unaligned dcl 1-29 ref 262 ME 000000 constant char(32) initial dcl 37 set ref 111* 142* 175* 190* 211* 265* 307* 312* 419* 420* 449* PERPROCESS_SW constant bit(36) initial packed unaligned dcl 38 ref 475 508 P_bottom_index parameter fixed bin(17,0) dcl 456 in procedure "print_one" set ref 454 475* P_bottom_index parameter fixed bin(17,0) dcl 521 in procedure "pushed_message" ref 519 525 527 P_bottom_index parameter fixed bin(17,0) dcl 491 in procedure "print_one_data" set ref 489 508* P_index parameter fixed bin(17,0) dcl 491 in procedure "print_one_data" set ref 489 496 496 496 496 503 508 508 508 508 508 508 508 508* P_index parameter fixed bin(17,0) dcl 456 in procedure "print_one" set ref 454 461 461 461 461 468 468 468 468 475 475 475 475 475 475 475 475 475 475* P_index parameter fixed bin(17,0) dcl 521 in procedure "pushed_message" ref 519 526 527 P_more_count parameter fixed bin(17,0) dcl 456 in procedure "print_one" set ref 454 475* P_more_count parameter fixed bin(17,0) dcl 521 in procedure "pushed_message" set ref 519 527 527* 527 533 533* 533 P_more_count parameter fixed bin(17,0) dcl 491 in procedure "print_one_data" set ref 489 508* P_str parameter char packed unaligned dcl 447 set ref 444 449* P_top_index parameter fixed bin(17,0) dcl 491 in procedure "print_one_data" set ref 489 508* P_top_index parameter fixed bin(17,0) dcl 521 in procedure "pushed_message" ref 519 525 526 P_top_index parameter fixed bin(17,0) dcl 456 in procedure "print_one" set ref 454 475* active_fnc_err_ 000022 constant entry external dcl 78 ref 103 af_sw 000247 automatic bit(1) packed unaligned dcl 56 set ref 102* 106* 200 306 458 493 all_sw 000250 automatic bit(1) packed unaligned dcl 56 set ref 120* 129* 303 348 410 alloc_max_name_len 000105 automatic fixed bin(21,0) dcl 2-5 set ref 123* 157* 157 219* 226 226 231 alloc_name_count 000104 automatic fixed bin(17,0) dcl 2-4 set ref 123* 155* 155 216 218* 221* 221 226 226 230 area_ptr 000270 automatic pointer dcl 59 set ref 115* 226 301* 350 355* 404 406* 411 413* 433 434 arg based char packed unaligned dcl 43 set ref 129 129 129 132 132 134 136 136 138 140* 142* 147 147 147 149 150 150 152 160 160 162 162 169 169 173* 175* 181 181 183 183 185 185 187 187 190* 247 249 249 255 255 255 258 262* 265* 269 274 280 280 286 289 289 289 289 394 395 395 395 395 395 395 395 401 418* 419* 420* arg_count 000300 automatic fixed bin(17,0) dcl 61 set ref 100* 125 138 149 164 171 242 391 arg_len 000314 automatic fixed bin(21,0) dcl 64 set ref 127* 129 129 129 132 132 134 136 136 138 139* 140 140 142 142 147 147 147 149 150 150 152 153* 157 160 160 162 162 169 169 172* 173 173 175 175 181 181 183 183 185 185 187 187 190 190 245* 247 249 249 254* 255 255 255 255 258 258 262 262 265 265 269 274 280 280 282* 286 289 289 289 289 393* 394 395 395 395 395 395 395 395 401 418 418 419 419 420 420 arg_ptr 000272 automatic pointer dcl 59 set ref 127* 129 129 129 132 132 134 136 136 138 139* 140 142 147 147 147 149 150 150 152 153* 160 160 162 162 169 169 172* 173 175 181 181 183 183 185 185 187 187 190 245* 247 249 249 254* 255 255 255 258 262 265 269 274 280 280 282* 286 289 289 289 289 393* 394 395 395 395 395 395 395 395 401 418 419 420 bad_starname_sw 000251 automatic bit(1) packed unaligned dcl 56 set ref 240* 264* 296 based_area based area(1024) dcl 49 ref 226 350 404 411 433 434 bottom_index 000305 automatic fixed bin(17,0) dcl 62 set ref 334* 336 338* 372* 374 376* brief_sw 000252 automatic bit(1) packed unaligned dcl 56 set ref 120* 132* 160* 385 call_switches 000246 automatic bit(36) dcl 55 set ref 121* 181* 183* 205 205* 301* 355* 406* 413* chars based char level 2 dcl 2-17 ref 323 323 362 362 461 461 468 468 475 475 475 475 496 496 508 508 chars_len 2 based fixed bin(21,0) level 2 dcl 2-17 ref 323 323 350 362 362 404 411 434 461 461 468 468 475 475 475 475 496 496 508 508 check_star_name_ 000024 constant entry external dcl 79 ref 262 check_star_name_$entry 000026 constant entry external dcl 80 ref 418 cleanup 000324 stack reference condition dcl 98 ref 118 code 000316 automatic fixed bin(35,0) dcl 65 set ref 100* 101 105 108* 111* 127* 139* 140* 141 153* 172* 173* 174 175* 209* 211* 245* 254* 262* 263 265* 282* 301* 302 303 312* 355* 356 356 406* 408 413* 415 418* 419 com_err_ 000030 constant entry external dcl 81 ref 107 111 complain 000320 automatic entry variable dcl 67 set ref 103* 107* 142 175 190 211 265 307 312 419 420 449 cu_$af_return_arg 000032 constant entry external dcl 82 ref 100 cu_$arg_ptr 000034 constant entry external dcl 83 ref 127 139 153 172 245 254 282 393 cv_dec_check_ 000036 constant entry external dcl 84 ref 140 data_only_sw 000253 automatic bit(1) packed unaligned dcl 56 set ref 120* 134* 299 403 410 default_sw 000254 automatic bit(1) packed unaligned dcl 56 set ref 216* 217 234 242 error_table_$bad_conversion 000010 external static fixed bin(35,0) dcl 72 set ref 142* error_table_$badopt 000012 external static fixed bin(35,0) dcl 73 set ref 190* error_table_$nomatch 000014 external static fixed bin(35,0) dcl 74 set ref 303 356 420* error_table_$not_act_fnc 000016 external static fixed bin(35,0) dcl 75 ref 105 error_table_$oldnamerr 000020 external static fixed bin(35,0) dcl 76 set ref 419* exclude_first_sw 000255 automatic bit(1) packed unaligned dcl 56 set ref 120* 150* 221 234 exclude_sw 3 based bit(1) array level 3 packed packed unaligned dcl 2-7 set ref 236* 251* 276* 285* 389* expand_pathname_$add_suffix 000040 constant entry external dcl 85 ref 173 get_system_free_area_ 000042 constant entry external dcl 86 ref 115 hcs_$initiate 000044 constant entry external dcl 87 ref 209 hcs_$terminate_noname 000046 constant entry external dcl 88 ref 436 i 000301 automatic fixed bin(17,0) dcl 61 set ref 125* 127* 137* 137 138 139* 148* 148 149 153* 163* 163 164 170* 170 171 172* 242* 245* 252* 252 254* 281* 281 282* 289* 289* 321* 323 323 323 327 331 341* 344* 344* 344* 360* 362 362 362 366 369 379* 382* 382* 382* 391* 393* 395* 395* index builtin function dcl 96 ref 129 247 394 ioa_ 000050 constant entry external dcl 89 ref 475 508 ioa_$rsnnl 000052 constant entry external dcl 89 ref 503 527 533 j 000302 automatic fixed bin(17,0) dcl 61 set ref 323* 323 323* 327 341 362* 362 362* 366 379 k 000303 automatic fixed bin(17,0) dcl 61 set ref 336* 338* 374* 376* length builtin function dcl 96 ref 460 467 495 502 503 503 527 527 533 533 listed_data_sw 000256 automatic bit(1) packed unaligned dcl 57 set ref 298* 303 352* listed_sw 000257 automatic bit(1) packed unaligned dcl 57 set ref 298* 317* 356 match_arg_sw 000261 automatic bit(1) packed unaligned dcl 57 set ref 120* 152* 165* 195* match_info based structure level 1 dcl 2-7 set ref 226 228* 433 match_info_ptr 000100 automatic pointer dcl 2-3 set ref 116* 226* 228 229 230 231 236 236 237 251 257 258 267 269 276 285 285 286 301* 355* 388 389 401 406* 413* 433 433 match_info_version_1 constant fixed bin(17,0) initial dcl 2-27 ref 229 match_sw 000260 automatic bit(1) packed unaligned dcl 57 set ref 120* 150 151* 165* 195* max builtin function dcl 96 ref 157 max_name_len 2 based fixed bin(21,0) level 2 dcl 2-7 set ref 226* 228 231* 236 236 236 236 237 237 237 251 251 257 257 258 258 258 267 267 269 269 269 276 276 285 285 285 285 286 286 286 389 389 401 401 401 433 message 000100 automatic varying char(32) dcl 522 set ref 524* 526* 527* 527 527 531* 533* 533 533 537 min builtin function dcl 96 ref 332 370 more_count 000306 automatic fixed bin(17,0) dcl 62 set ref 333* 338* 371* 376* name 4 based varying char array level 3 dcl 2-7 set ref 237* 258* 269* 286* 401* name_array 3 based structure array level 2 dcl 2-7 name_count 1 based fixed bin(17,0) level 2 dcl 2-7 set ref 226* 228 230* 388* 433 name_index 000304 automatic fixed bin(17,0) dcl 61 in procedure "vls" set ref 232* 235* 250* 250 251 257 258 267 269 275* 275 276 283* 283 285 285 286 name_index 4 based fixed bin(21,0) array level 3 in structure "value_list_info" dcl 2-17 in procedure "vls" ref 323 323 362 362 461 461 475 475 496 496 508 508 name_len 5 based fixed bin(21,0) array level 3 dcl 2-17 ref 323 323 362 362 461 461 475 475 496 496 508 508 null builtin function dcl 96 ref 116 210 309 404 411 433 434 436 num_str 000242 automatic char(16) packed unaligned dcl 53 set ref 503* 503 503 504 pair_count 1 based fixed bin(17,0) level 2 dcl 2-17 ref 321 323 323 323 350 360 362 362 362 404 411 434 461 461 468 468 475 475 475 475 496 496 508 508 pairs 3 based structure array level 2 dcl 2-17 path_sw 000262 automatic bit(1) packed unaligned dcl 57 set ref 120* 178* 208 pathname_ 000054 constant entry external dcl 90 ref 311 print_count 000307 automatic fixed bin(17,0) dcl 62 set ref 332* 333 334 370* 371 372 push_depth 000310 automatic fixed bin(17,0) dcl 62 set ref 122* 140* 332 370 regexp_sw 3(01) based bit(1) array level 3 packed packed unaligned dcl 2-7 set ref 236* 257* 267* 285* requote_string_ 000056 constant entry external dcl 91 ref 461 468 475 496 return_arg based varying char dcl 44 set ref 460 460* 460 461* 461 467 467* 467 468* 468 495 495* 495 496* 496 502 502* 502 504* 504 return_len 000315 automatic fixed bin(21,0) dcl 64 set ref 100* 460 461 467 468 495 496 502 504 return_ptr 000274 automatic pointer dcl 59 set ref 100* 460 460 460 461 461 467 467 467 468 468 495 495 495 496 496 502 502 502 504 504 rtrim builtin function dcl 96 ref 504 same_count 000311 automatic fixed bin(17,0) dcl 62 set ref 327* 329 332 333 366* 368 370 371 seg_dn 000106 automatic char(168) packed unaligned dcl 51 set ref 173* 209* 211* 211 311* seg_en 000232 automatic char(32) packed unaligned dcl 52 set ref 173* 209* 211* 311* seg_path 000160 automatic char(168) packed unaligned dcl 51 set ref 309* 311* 312* seg_ptr 000276 automatic pointer dcl 59 set ref 116* 209* 210 301* 309 355* 406* 413* 436 436* some_data_sw 000264 automatic bit(1) packed unaligned dcl 57 set ref 402* 415* 417 some_sw 000263 automatic bit(1) packed unaligned dcl 57 set ref 402* 408* 417 starname_type 000313 automatic fixed bin(2,0) dcl 63 set ref 262* substr builtin function dcl 96 set ref 181* 183* 205 205* 255 255 258 323 323 362 362 461 461 468 468 475 475 475 475 496 496 508 508 top_index 000312 automatic fixed bin(17,0) dcl 62 set ref 331* 334 336 338* 369* 372 374 376* type_switches 3 based bit(36) array level 3 dcl 2-17 ref 475 508 unspec builtin function dcl 96 set ref 228* val_sw 000265 automatic bit(1) packed unaligned dcl 57 set ref 120* 185* 200 203* 466 475* 501 508* 508* value_$get_path 000060 constant entry external dcl 92 ref 309 value_$list 000062 constant entry external dcl 93 ref 301 406 value_$list_data_names 000064 constant entry external dcl 94 ref 355 413 value_index 6 based fixed bin(21,0) array level 3 dcl 2-17 ref 468 468 475 475 value_len 7 based fixed bin(21,0) array level 3 dcl 2-17 set ref 468 468 475 475 503* 508* 508 value_list_info based structure level 1 dcl 2-17 set ref 350 404 411 434 value_list_info_ptr 000102 automatic pointer dcl 2-3 set ref 116* 301* 321 323 323 323 323 323 323 323 350 355* 360 362 362 362 362 362 362 362 404 404 406* 411 411 413* 434 434 461 461 461 461 461 461 468 468 468 468 468 468 475 475 475 475 475 475 475 475 475 475 475 475 475 496 496 496 496 496 496 503 508 508 508 508 508 508 508 508 508 var_sw 000266 automatic bit(1) packed unaligned dcl 57 set ref 120* 187* 200 203* 459 475* 494 508* version based fixed bin(17,0) level 2 dcl 2-7 set ref 229* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHECK_STAR_ENTRY_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ALL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_EQUAL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NONASCII internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NULL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PATH_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_REJECT_WILD internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_UNIMPLEMENTED internal static bit(36) initial packed unaligned dcl 1-29 STAR_TYPE_MATCHES_EVERYTHING internal static fixed bin(2,0) initial dcl 1-47 STAR_TYPE_USE_MATCH_PROCEDURE internal static fixed bin(2,0) initial dcl 1-47 STAR_TYPE_USE_PL1_COMPARE internal static fixed bin(2,0) initial dcl 1-47 alloc_chars_len automatic fixed bin(21,0) dcl 2-5 alloc_pair_count automatic fixed bin(17,0) dcl 2-4 check_star based structure level 1 dcl 1-15 value_list_info_version_1 internal static fixed bin(17,0) initial dcl 2-27 NAMES DECLARED BY EXPLICIT CONTEXT. DONE_LISTING 002742 constant label dcl 385 ref 348 ERROR 002265 constant label dcl 303 ref 358 LIST_DATA 002561 constant label dcl 352 ref 299 303 MATCH_NAME 001700 constant label dcl 252 ref 277 NAME 000774 constant label dcl 155 ref 196 NAME_NEXT 000757 constant label dcl 153 ref 166 PLAIN_NAME 002154 constant label dcl 283 ref 247 RETURN 003315 constant label dcl 425 ref 296 314 356 450 clean_up 003323 constant entry internal dcl 430 ref 118 425 give_up 003407 constant entry internal dcl 444 ref 138 149 164 171 200 print_one 003456 constant entry internal dcl 454 ref 338 344 print_one_data 004036 constant entry internal dcl 489 ref 376 382 pushed_message 004401 constant entry internal dcl 519 ref 475 508 value_list 000265 constant entry external dcl 24 vls 000256 constant entry external dcl 24 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5140 5226 4621 5150 Length 5506 4621 66 244 316 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vls 506 external procedure is an external procedure. on unit on line 118 64 on unit clean_up 72 internal procedure is called by several nonquick procedures. give_up 88 internal procedure is called during a stack extension. print_one internal procedure shares stack frame of external procedure vls. print_one_data internal procedure shares stack frame of external procedure vls. pushed_message 104 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pushed_message 000100 message pushed_message vls 000100 match_info_ptr vls 000102 value_list_info_ptr vls 000104 alloc_name_count vls 000105 alloc_max_name_len vls 000106 seg_dn vls 000160 seg_path vls 000232 seg_en vls 000242 num_str vls 000246 call_switches vls 000247 af_sw vls 000250 all_sw vls 000251 bad_starname_sw vls 000252 brief_sw vls 000253 data_only_sw vls 000254 default_sw vls 000255 exclude_first_sw vls 000256 listed_data_sw vls 000257 listed_sw vls 000260 match_sw vls 000261 match_arg_sw vls 000262 path_sw vls 000263 some_sw vls 000264 some_data_sw vls 000265 val_sw vls 000266 var_sw vls 000270 area_ptr vls 000272 arg_ptr vls 000274 return_ptr vls 000276 seg_ptr vls 000300 arg_count vls 000301 i vls 000302 j vls 000303 k vls 000304 name_index vls 000305 bottom_index vls 000306 more_count vls 000307 print_count vls 000310 push_depth vls 000311 same_count vls 000312 top_index vls 000313 starname_type vls 000314 arg_len vls 000315 return_len vls 000316 code vls 000320 complain vls THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp call_ent_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_ check_star_name_$entry com_err_ cu_$af_return_arg cu_$arg_ptr cv_dec_check_ expand_pathname_$add_suffix get_system_free_area_ hcs_$initiate hcs_$terminate_noname ioa_ ioa_$rsnnl pathname_ requote_string_ value_$get_path value_$list value_$list_data_names THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$nomatch error_table_$not_act_fnc error_table_$oldnamerr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000255 100 000272 101 000306 102 000310 103 000312 104 000317 105 000320 106 000323 107 000324 108 000330 109 000331 111 000332 112 000346 115 000347 116 000355 118 000361 120 000403 121 000414 122 000415 123 000417 125 000421 127 000431 129 000446 132 000475 134 000510 136 000517 137 000527 138 000530 139 000560 140 000576 141 000622 142 000624 143 000660 145 000661 147 000662 148 000676 149 000677 150 000727 151 000746 152 000750 153 000757 155 000774 157 000775 158 001002 160 001003 162 001015 163 001025 164 001026 165 001044 166 001047 169 001050 170 001060 171 001061 172 001077 173 001114 174 001152 175 001154 176 001205 178 001206 179 001210 181 001211 183 001224 185 001237 187 001252 190 001265 191 001317 192 001320 195 001321 196 001324 198 001325 200 001327 203 001353 205 001357 208 001364 209 001366 210 001431 211 001435 212 001504 216 001505 217 001510 218 001511 219 001513 220 001515 221 001516 226 001521 228 001537 229 001552 230 001554 231 001556 232 001560 234 001561 235 001565 236 001567 237 001601 240 001611 242 001612 245 001623 247 001640 249 001654 250 001664 251 001665 252 001700 254 001701 255 001716 257 001734 258 001746 259 001764 262 001765 263 002017 264 002021 265 002023 267 002054 269 002066 271 002104 274 002105 275 002111 276 002112 277 002125 280 002126 281 002136 282 002137 283 002154 285 002155 286 002176 287 002210 289 002211 294 002232 296 002234 298 002236 299 002240 301 002242 302 002263 303 002265 306 002275 307 002277 309 002324 311 002346 312 002365 314 002413 317 002414 321 002416 323 002427 326 002474 327 002476 329 002501 331 002503 332 002505 333 002512 334 002515 336 002521 338 002527 339 002531 341 002533 342 002536 344 002537 346 002542 348 002544 350 002546 352 002561 355 002563 356 002604 358 002613 360 002614 362 002625 365 002672 366 002674 368 002677 369 002701 370 002703 371 002710 372 002713 374 002717 376 002725 377 002727 379 002731 380 002734 382 002735 384 002740 385 002742 388 002744 389 002747 391 002751 393 002761 394 002777 395 003013 399 003050 401 003051 402 003062 403 003064 404 003066 406 003105 408 003126 410 003131 411 003135 413 003154 415 003175 417 003200 418 003204 419 003224 420 003261 423 003313 425 003315 428 003321 430 003322 433 003330 434 003346 436 003366 438 003405 444 003406 449 003422 450 003453 454 003456 458 003460 459 003462 460 003465 461 003477 465 003561 466 003562 467 003565 468 003577 472 003662 473 003663 475 003664 487 004034 489 004036 493 004040 494 004042 495 004045 496 004057 500 004141 501 004142 502 004145 503 004157 504 004216 506 004243 508 004244 517 004376 519 004400 524 004406 525 004407 526 004413 527 004423 531 004467 532 004474 533 004475 537 004541 ----------------------------------------------------------- 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