COMPILATION LISTING OF SEGMENT value_set Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/18/84 0852.8 mst Thu 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 value_set: vs: proc; 12 13 /* Written 11/17/80 by S. Herbst */ 14 /* Fixed vs -add to correctly return the value set 05/13/82 S. Herbst */ 15 /* Fixed vs -pn not to query if error other than $noentry 02/07/84 S. Herbst */ 16 1 1 /* BEGIN value_structures.incl.pl1 */ 1 2 1 3 dcl (match_info_ptr, value_list_info_ptr) ptr; 1 4 dcl (alloc_name_count, alloc_pair_count) fixed bin; 1 5 dcl (alloc_max_name_len, alloc_chars_len) fixed bin (21); 1 6 1 7 dcl 1 match_info aligned based (match_info_ptr), 1 8 2 version fixed bin, /* = 1 */ 1 9 2 name_count fixed bin, 1 10 2 max_name_len fixed bin (21), 1 11 2 name_array (alloc_name_count refer (match_info.name_count)), 1 12 3 exclude_sw bit (1) unaligned, /* ON for -exclude, OFF for -match */ 1 13 3 regexp_sw bit (1) unaligned, /* ON for regular exp. without the //, OFF for starname */ 1 14 3 pad bit (34) unaligned, 1 15 3 name char (alloc_max_name_len refer (match_info.max_name_len)) varying; 1 16 1 17 dcl 1 value_list_info aligned based (value_list_info_ptr), 1 18 2 version fixed bin, /* = 1 */ 1 19 2 pair_count fixed bin, 1 20 2 chars_len fixed bin (21), 1 21 2 pairs (alloc_pair_count refer (value_list_info.pair_count)), 1 22 3 type_switches bit (36), /* correspond to the selection switches arg */ 1 23 3 (name_index, name_len) fixed bin (21), 1 24 3 (value_index, value_len) fixed bin (21), 1 25 2 chars char (alloc_chars_len refer (value_list_info.chars_len)); 1 26 1 27 dcl (match_info_version_1, value_list_info_version_1) fixed bin int static options (constant) init (1); 1 28 1 29 /* END OF value_structures.incl.pl1 */ 17 2 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 2 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 2 3 /* version number changed to 4, 08/10/78 WOS */ 2 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 2 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 2 6 2 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 2 8 2 version fixed bin, /* version of this structure - must be set, see below */ 2 9 2 switches aligned, /* various bit switch values */ 2 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 2 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 2 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 2 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 2 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 2 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 2 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 2 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 2 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 2 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 2 20 2 21 /* Limit of data defined for version 2 */ 2 22 2 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 2 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 2 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 2 26 /* minimum of 30 seconds required for repeat */ 2 27 /* otherwise, no repeat will occur */ 2 28 /* Limit of data defined for version 4 */ 2 29 2 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 2 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 2 32 2 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 2 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 2 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 2 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 2 37 2 38 /* END INCLUDE FILE query_info.incl.pl1 */ 18 19 20 dcl ME char (32) int static options (constant) init ("value_set"); 21 dcl PERMANENT fixed int static options (constant) init (0); 22 23 dcl arg char (arg_len) based (arg_ptr); 24 dcl return_arg char (return_len) varying based (return_ptr); 25 dcl temp_str char (262114 /* max segment length */) varying based (temp_ptr); 26 27 dcl if_value char (if_value_len) based (if_value_ptr); 28 dcl name char (name_len) based (name_ptr); 29 dcl value char (value_len) based (value_ptr); 30 31 dcl based_area area based (area_ptr); 32 33 dcl (seg_dn, seg_path) char (168); 34 dcl (old_value_num_str, seg_en, value_num_str) char (32); 35 36 dcl call_switches bit (36) aligned; 37 dcl (add_sw, af_sw, explicit_value_sw, got_name_sw, got_value_sw) bit (1); 38 dcl (if_sw, match_sw, match_arg_sw, path_sw, pop_sw, push_sw, update_sw) bit (1); 39 40 dcl temp_ptr ptr; 41 dcl (area_ptr, arg_ptr, if_value_ptr, name_ptr, return_ptr, seg_ptr, value_ptr) ptr; 42 43 dcl add_num fixed (35); 44 dcl (arg_len, if_value_len, name_len, return_len, value_len) fixed (21); 45 dcl (arg_count, i, name_index) fixed; 46 dcl code fixed (35); 47 48 dcl error_table_$badopt fixed (35) ext; 49 dcl error_table_$bad_conversion fixed (35) ext; 50 dcl error_table_$noentry fixed (35) ext; 51 dcl error_table_$nomatch fixed (35) ext; 52 dcl error_table_$not_act_fnc fixed (35) ext; 53 54 dcl complain entry variable options (variable); 55 56 dcl (active_fnc_err_, active_fnc_err_$suppress_name) entry options (variable); 57 dcl (com_err_, com_err_$suppress_name) entry options (variable); 58 dcl command_query_ entry options (variable); 59 dcl cu_$af_return_arg entry (fixed, ptr, fixed (21), fixed (35)); 60 dcl cu_$arg_ptr entry (fixed, ptr, fixed (21), fixed (35)); 61 dcl cv_dec_check_ entry (char (*), fixed (35)) returns (fixed (21)); 62 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed (35)); 63 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed (35)); 64 dcl get_system_free_area_ entry returns (ptr); 65 dcl get_temp_segment_ entry (char (*), ptr, fixed (35)); 66 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed (1), fixed (2), ptr, fixed (35)); 67 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed (5), ptr, fixed (35)); 68 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 69 dcl ioa_$rsnnl entry options (variable); 70 dcl release_temp_segment_ entry (char (*), ptr, fixed (35)); 71 dcl value_$get entry options (variable); 72 dcl value_$get_path entry (char (*), fixed (35)); 73 dcl value_$init_seg entry (ptr, fixed, ptr, fixed (19), fixed (35)); 74 dcl value_$list entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed (35)); 75 dcl value_$pop entry options (variable); 76 dcl value_$push entry options (variable); 77 dcl value_$set entry options (variable); 78 dcl value_$test_and_set entry options (variable); 79 80 dcl (addr, index, length, ltrim, max, null, rtrim, substr, unspec) builtin; 81 82 dcl cleanup condition; 83 84 call cu_$af_return_arg (arg_count, return_ptr, return_len, code); 85 if code = 0 then do; 86 af_sw = "1"b; 87 complain = active_fnc_err_; 88 end; 89 else if code = error_table_$not_act_fnc then do; 90 af_sw = "0"b; 91 complain = com_err_; 92 code = 0; 93 end; 94 else do; 95 call com_err_ (code, ME); 96 return; 97 end; 98 99 add_sw, explicit_value_sw, got_name_sw, got_value_sw, if_sw, match_sw, match_arg_sw, path_sw, update_sw = "0"b; 100 pop_sw, push_sw = "0"b; 101 call_switches = "0"b; 102 alloc_name_count, alloc_max_name_len = 0; 103 104 do i = 1 to arg_count; /* if -match etc. given, don't look for name arg */ 105 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 106 if arg = "-match" | arg = "-exclude" | arg = "-ex" then got_name_sw = "1"b; 107 end; 108 109 do i = 1 to arg_count; 110 111 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 112 113 if index (arg, "-") = 1 then 114 if arg = "-add" then do; 115 i = i + 1; 116 if i > arg_count then do; 117 NO_CONTROL_VALUE: 118 call complain (0, ME, "No value specified for ^a", arg); 119 return; 120 end; 121 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 122 add_num = cv_dec_check_ (arg, code); 123 if code ^= 0 then do; 124 call complain (code, ME, "^a", arg); 125 return; 126 end; 127 add_sw, got_value_sw = "1"b; 128 value_ptr = arg_ptr; 129 value_len = arg_len; 130 end; 131 132 else if arg = "-exclude" | arg = "-ex" | arg = "-match" then do; 133 i = i + 1; 134 if i > arg_count then go to NO_CONTROL_VALUE; 135 match_sw = "1"b; 136 match_arg_sw = (arg = "-match"); 137 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 138 alloc_name_count = alloc_name_count + 1; 139 alloc_max_name_len = max (alloc_max_name_len, arg_len); 140 end; 141 142 else if arg = "-if" then do; 143 i = i + 1; 144 if i > arg_count then go to NO_CONTROL_VALUE; 145 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 146 if_sw = "1"b; 147 if_value_ptr = arg_ptr; 148 if_value_len = arg_len; 149 end; 150 151 else if arg = "-name" | arg = "-nm" then do; 152 i = i + 1; 153 if i > arg_count then go to NO_CONTROL_VALUE; 154 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 155 if got_value_sw & got_name_sw then go to USAGE; 156 else if got_name_sw then do; 157 explicit_value_sw, got_value_sw = "1"b; 158 value_ptr = arg_ptr; 159 value_len = arg_len; 160 end; 161 else do; 162 got_name_sw = "1"b; 163 name_ptr = arg_ptr; 164 name_len = arg_len; 165 end; 166 end; 167 168 else if arg = "-pathname" | arg = "-pn" then do; 169 i = i + 1; 170 if i > arg_count then go to NO_CONTROL_VALUE; 171 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 172 call expand_pathname_$add_suffix (arg, "value", seg_dn, seg_en, code); 173 if code ^= 0 then do; 174 call complain (code, ME, "-pathname arg ^a", arg); 175 return; 176 end; 177 path_sw = "1"b; 178 end; 179 180 else if arg = "-perprocess" | arg = "-pp" then substr (call_switches, 1, 1) = "1"b; 181 182 else if arg = "-permanent" | arg = "-perm" then substr (call_switches, 2, 1) = "1"b; 183 184 else if arg = "-pop" then pop_sw = "1"b; 185 else if arg = "-push" then push_sw = "1"b; 186 187 else if arg = "-update" | arg = "-ud" then update_sw = "1"b; 188 else if arg = "-no_update" | arg = "-nud" then update_sw = "0"b; 189 190 else if arg = "-value" | arg = "-val" then do; 191 i = i + 1; 192 if i > arg_count then go to NO_CONTROL_VALUE; 193 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 194 explicit_value_sw, got_value_sw = "1"b; 195 value_ptr = arg_ptr; 196 value_len = arg_len; 197 end; 198 199 else do; 200 call complain (error_table_$badopt, ME, "^a", arg); 201 return; 202 end; 203 204 else if got_value_sw & got_name_sw then do; 205 USAGE: 206 if af_sw then 207 call active_fnc_err_$suppress_name (0, ME, "Usage: [value_set {name} {value} {-control_args}]"); 208 else call com_err_$suppress_name (0, ME, "Usage: value_set {name} {value} {-control_args}"); 209 return; 210 end; 211 212 else if got_name_sw then do; 213 explicit_value_sw, got_value_sw = "1"b; 214 value_ptr = arg_ptr; 215 value_len = arg_len; 216 end; 217 218 else do; 219 got_name_sw = "1"b; 220 name_ptr = arg_ptr; 221 name_len = arg_len; 222 end; 223 end; 224 225 if ^got_name_sw then go to USAGE; 226 227 if pop_sw & got_value_sw then do; 228 call complain (0, ME, "-pop is incompatible with specifying a value."); 229 return; 230 end; 231 else if pop_sw then do; /* set up a dummy for calling value_set_push_pop */ 232 value_ptr = name_ptr; 233 value_len = name_len; 234 end; 235 else if ^got_value_sw then go to USAGE; 236 237 if if_sw & (pop_sw | push_sw) then do; 238 call complain (0, ME, "-if is incompatible with -push or -pop"); 239 return; 240 end; 241 242 if pop_sw & push_sw then do; 243 call complain (0, ME, "-push is incompatible with -pop"); 244 return; 245 end; 246 247 if add_sw & explicit_value_sw then do; 248 call complain (0, ME, "-add incompatible with specifying a value."); 249 return; 250 end; 251 252 if substr (call_switches, 1, 2) = "00"b then substr (call_switches, 1, 2) = "11"b; 253 /* default is both */ 254 255 match_info_ptr, seg_ptr, temp_ptr, value_list_info_ptr = null (); 256 257 on cleanup 258 begin; 259 if temp_ptr ^= null () then call release_temp_segment_ ("value_set", temp_ptr, code); 260 if match_info_ptr ^= null () then free match_info in (based_area); 261 if value_list_info_ptr ^= null () then free value_list_info in (based_area); 262 if seg_ptr ^= null () then call hcs_$terminate_noname (seg_ptr, 0); 263 end; 264 265 if path_sw then do; /* user_specified value segment */ 266 call hcs_$initiate (seg_dn, seg_en, "", 0, 0, seg_ptr, code); 267 if seg_ptr = null then do; 268 if code = error_table_$noentry then do; 269 if query_create (seg_dn, seg_en, seg_ptr) then go to SEG_OK; 270 end; 271 else call complain (code, ME, "Value segment ^a^[>^]^a", seg_dn, seg_dn ^= ">", seg_en); 272 return; 273 end; 274 end; 275 276 if af_sw & match_sw then do; /* more than one return value to concatenate */ 277 call get_temp_segment_ ("value_set", temp_ptr, code); 278 end; 279 280 /* Do the work */ 281 282 SEG_OK: 283 if ^match_sw then 284 call set_value (name, ""); 285 286 else do; /* -match or -exclude specified */ 287 288 /* if only -exclude's specified, start by matching "**" */ 289 if ^match_arg_sw then alloc_name_count = alloc_name_count + 1; 290 291 /* Allocate and fill the match structure */ 292 293 area_ptr = get_system_free_area_ (); 294 295 allocate match_info in (based_area) set (match_info_ptr); 296 297 unspec (match_info) = "0"b; 298 match_info.version = match_info_version_1; 299 match_info.name_count = alloc_name_count; 300 match_info.max_name_len = alloc_max_name_len; 301 name_index = 0; 302 303 if ^match_arg_sw then do; 304 name_index = 1; 305 match_info.exclude_sw (1), match_info.regexp_sw (1) = "0"b; 306 match_info.name (1) = "**"; 307 end; 308 309 do i = 1 to arg_count; 310 311 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 312 313 if arg = "-exclude" | arg = "-ex" then do; 314 name_index = name_index + 1; 315 match_info.exclude_sw (name_index) = "1"b; 316 MATCH_NAME: 317 i = i + 1; 318 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 319 if substr (arg, 1, 1) = "/" & substr (arg, arg_len, 1) = "/" then do; 320 match_info.regexp_sw (name_index) = "1"b; 321 match_info.name (name_index) = substr (arg, 2, arg_len - 2); 322 end; 323 else do; 324 match_info.regexp_sw (name_index) = "0"b; 325 /* starname */ 326 match_info.name (name_index) = arg; 327 end; 328 end; 329 330 else if arg = "-match" then do; 331 name_index = name_index + 1; 332 match_info.exclude_sw (name_index) = "0"b; 333 go to MATCH_NAME; 334 end; 335 end; 336 337 call value_$list (seg_ptr, call_switches, match_info_ptr, area_ptr, value_list_info_ptr, code); 338 if code ^= 0 then do; 339 if code = error_table_$nomatch then 340 call complain (0, ME, "No matching names."); 341 else do; 342 if seg_ptr = null then call value_$get_path (seg_path, (0)); 343 else if seg_dn = ">" then seg_path = ">" || seg_en; 344 else seg_path = rtrim (seg_dn) || ">" || seg_en; 345 call complain (code, ME, "^a", seg_path); 346 end; 347 return; 348 end; 349 350 do i = 1 to value_list_info.pair_count; 351 352 call set_value ( 353 substr (value_list_info.chars, value_list_info.name_index (i), value_list_info.name_len (i)), 354 substr (value_list_info.chars, value_list_info.value_index (i), value_list_info.value_len (i))); 355 end; 356 end; 357 358 RETURN: 359 if temp_ptr ^= null () then call release_temp_segment_ ("value_set", temp_ptr, code); 360 if match_info_ptr ^= null () then free match_info in (based_area); 361 if value_list_info_ptr ^= null () then free value_list_info in (based_area); 362 if seg_ptr ^= null () then call hcs_$terminate_noname (seg_ptr, 0); 363 364 query_create: 365 proc (A_dn, A_en, A_seg_ptr) returns (bit (1)); 366 367 dcl (A_dn, A_en) char (*); 368 dcl A_seg_ptr ptr; 369 dcl 1 qi aligned like query_info; 370 dcl answer char (32) varying; 371 dcl code fixed (35); 372 373 unspec (qi) = "0"b; 374 qi.version = query_info_version_5; 375 qi.yes_or_no_sw = "1"b; 376 qi.question_iocbp, qi.answer_iocbp = null; 377 378 call command_query_ (addr (qi), answer, ME, "Do you want to create the value segment ^a^[>^]^a ?", A_dn, 379 A_dn ^= ">", A_en); 380 381 if answer = "no" then go to RETURN; 382 383 call hcs_$make_seg (A_dn, A_en, "", 01010b, A_seg_ptr, code); 384 if code ^= 0 then do; 385 ERR: 386 call complain (code, ME, "^a^[>^]^a", A_dn, A_dn ^= ">", A_en); 387 go to RETURN; 388 end; 389 390 call value_$init_seg (A_seg_ptr, PERMANENT, null, 0, code); 391 if code ^= 0 then go to ERR; 392 393 return ("1"b); 394 395 end query_create; 396 397 set_value: 398 proc (P_name, P_old_value); 399 400 /* Sets a single value, modified by the control argument options. */ 401 402 dcl (P_name, P_old_value) char (*); 403 dcl old_value_num fixed (35); 404 405 RETRY: 406 if add_sw then do; 407 if match_sw then 408 old_value_num_str = P_old_value; 409 else do; 410 call value_$get (seg_ptr, call_switches, name, old_value_num_str, code); 411 if code ^= 0 then do; 412 BAD_OLD: 413 call complain (code, ME, "^a", P_name); 414 return; 415 end; 416 end; 417 418 if update_sw & af_sw then return_arg = rtrim (old_value_num_str); 419 420 old_value_num = cv_dec_check_ (old_value_num_str, code); 421 if code ^= 0 then do; 422 code = error_table_$bad_conversion; 423 go to BAD_OLD; 424 end; 425 call ioa_$rsnnl ("^d", value_num_str, length (value_num_str), old_value_num + add_num); 426 call value_$test_and_set (seg_ptr, call_switches, name, rtrim (value_num_str), rtrim (old_value_num_str), 427 code); 428 value_ptr = addr (value_num_str); 429 value_len = length (rtrim (value_num_str)); 430 go to TEST_CODE; 431 end; 432 433 if if_sw then 434 if match_sw then do; 435 if if_value ^= P_old_value then return; 436 end; 437 else do; 438 call value_$test_and_set (seg_ptr, call_switches, name, value, if_value, code); 439 go to TEST_CODE; 440 end; 441 442 if update_sw & af_sw then 443 if match_sw then do; 444 call value_set_push_pop (seg_ptr, call_switches, P_name, value, temp_str, code); 445 return_arg = ltrim (return_arg || " " || temp_str); 446 end; 447 else call value_set_push_pop (seg_ptr, call_switches, P_name, value, return_arg, code); 448 449 else call value_set_push_pop (seg_ptr, call_switches, P_name, value, "", code); 450 TEST_CODE: 451 if code ^= 0 then do; 452 if ^path_sw then do; 453 call value_$get_path (seg_path, (0)); 454 call expand_pathname_ (seg_path, seg_dn, seg_en, (0)); 455 end; 456 if code = error_table_$noentry then do; 457 458 if query_create (seg_dn, seg_en, seg_ptr) then go to RETRY; 459 end; 460 else call complain (code, ME, "^a^[>^]^a", seg_dn, seg_dn ^= ">", seg_en); 461 return; 462 end; 463 464 if af_sw & ^update_sw then 465 if match_sw then 466 return_arg = ltrim (return_arg || " " || value); 467 else return_arg = value; 468 469 return; 470 471 value_set_push_pop: 472 proc (P_seg_ptr, P_switches, P_name, P_value, P_old_value, P_code); 473 474 dcl P_seg_ptr ptr; 475 dcl P_switches bit (36) aligned; 476 dcl (P_name, P_value) char (*); 477 dcl P_old_value char (*) varying; 478 dcl P_code fixed (35); 479 480 if pop_sw then call value_$pop (P_seg_ptr, P_switches, P_name, P_old_value, P_code); 481 482 else if push_sw then call value_$push (P_seg_ptr, P_switches, P_name, P_value, P_old_value, P_code); 483 484 else call value_$set (P_seg_ptr, P_switches, P_name, P_value, P_old_value, P_code); 485 486 end value_set_push_pop; 487 488 end set_value; 489 490 end value_set; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/18/84 0838.1 value_set.pl1 >spec>on>6678-10/18/84>value_set.pl1 17 1 06/24/81 1743.9 value_structures.incl.pl1 >ldd>include>value_structures.incl.pl1 18 2 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.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. A_dn parameter char unaligned dcl 367 set ref 364 378* 378 383* 385* 385 A_en parameter char unaligned dcl 367 set ref 364 378* 383* 385* A_seg_ptr parameter pointer dcl 368 set ref 364 383* 390* ME 000000 constant char(32) initial unaligned dcl 20 set ref 95* 117* 124* 174* 200* 205* 208* 228* 238* 243* 248* 271* 339* 345* 378* 385* 412* 460* PERMANENT 000060 constant fixed bin(17,0) initial dcl 21 set ref 390* P_code parameter fixed bin(35,0) dcl 478 set ref 471 480* 482* 484* P_name parameter char unaligned dcl 476 in procedure "value_set_push_pop" set ref 471 480* 482* 484* P_name parameter char unaligned dcl 402 in procedure "set_value" set ref 397 412* 444* 447* 449* P_old_value parameter varying char dcl 477 in procedure "value_set_push_pop" set ref 471 480* 482* 484* P_old_value parameter char unaligned dcl 402 in procedure "set_value" ref 397 407 435 P_seg_ptr parameter pointer dcl 474 set ref 471 480* 482* 484* P_switches parameter bit(36) dcl 475 set ref 471 480* 482* 484* P_value parameter char unaligned dcl 476 set ref 471 482* 484* active_fnc_err_ 000022 constant entry external dcl 56 ref 87 active_fnc_err_$suppress_name 000024 constant entry external dcl 56 ref 205 add_num 000334 automatic fixed bin(35,0) dcl 43 set ref 122* 425 add_sw 000300 automatic bit(1) unaligned dcl 37 set ref 99* 127* 247 405 addr builtin function dcl 80 ref 378 378 428 af_sw 000301 automatic bit(1) unaligned dcl 37 set ref 86* 90* 205 276 418 442 464 alloc_max_name_len 000105 automatic fixed bin(21,0) dcl 1-5 set ref 102* 139* 139 295 295 300 alloc_name_count 000104 automatic fixed bin(17,0) dcl 1-4 set ref 102* 138* 138 289* 289 295 295 299 answer 000115 automatic varying char(32) dcl 370 set ref 378* 381 answer_iocbp 6 000106 automatic pointer initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* answer_iocbp 6 000100 automatic pointer initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* 376* area_ptr 000316 automatic pointer dcl 41 set ref 260 261 293* 295 337* 360 361 arg based char unaligned dcl 23 set ref 106 106 106 113 113 117* 122* 124* 132 132 132 136 142 151 151 168 168 172* 174* 180 180 182 182 184 185 187 187 188 188 190 190 200* 313 313 319 319 321 326 330 arg_count 000342 automatic fixed bin(17,0) dcl 45 set ref 84* 104 109 116 134 144 153 170 192 309 arg_len 000335 automatic fixed bin(21,0) dcl 44 set ref 105* 106 106 106 111* 113 113 117 117 121* 122 122 124 124 129 132 132 132 136 137* 139 142 145* 148 151 151 154* 159 164 168 168 171* 172 172 174 174 180 180 182 182 184 185 187 187 188 188 190 190 193* 196 200 200 215 221 311* 313 313 318* 319 319 319 321 321 326 330 arg_ptr 000320 automatic pointer dcl 41 set ref 105* 106 106 106 111* 113 113 117 121* 122 124 128 132 132 132 136 137* 142 145* 147 151 151 154* 158 163 168 168 171* 172 174 180 180 182 182 184 185 187 187 188 188 190 190 193* 195 200 214 220 311* 313 313 318* 319 319 321 326 330 based_area based area(1024) dcl 31 ref 260 261 295 360 361 call_switches 000277 automatic bit(36) dcl 36 set ref 101* 180* 182* 252 252* 337* 410* 426* 438* 444* 447* 449* chars based char level 2 dcl 1-17 ref 352 352 352 352 chars_len 2 based fixed bin(21,0) level 2 dcl 1-17 ref 261 352 352 352 352 361 cleanup 000352 stack reference condition dcl 82 ref 257 code 000126 automatic fixed bin(35,0) dcl 371 in procedure "query_create" set ref 383* 384 385* 390* 391 code 000345 automatic fixed bin(35,0) dcl 46 in procedure "vs" set ref 84* 85 89 92* 95* 105* 111* 121* 122* 123 124* 137* 145* 154* 171* 172* 173 174* 193* 259* 266* 268 271* 277* 311* 318* 337* 338 339 345* 358* 410* 411 412* 420* 421 422* 426* 438* 444* 447* 449* 450 456 460* com_err_ 000026 constant entry external dcl 57 ref 91 95 com_err_$suppress_name 000030 constant entry external dcl 57 ref 208 command_query_ 000032 constant entry external dcl 58 ref 378 complain 000346 automatic entry variable dcl 54 set ref 87* 91* 117 124 174 200 228 238 243 248 271 339 345 385 412 460 cp_escape_control 1(02) 000106 automatic bit(2) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* cp_escape_control 1(02) 000100 automatic bit(2) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* cu_$af_return_arg 000034 constant entry external dcl 59 ref 84 cu_$arg_ptr 000036 constant entry external dcl 60 ref 105 111 121 137 145 154 171 193 311 318 cv_dec_check_ 000040 constant entry external dcl 61 ref 122 420 error_table_$bad_conversion 000012 external static fixed bin(35,0) dcl 49 ref 422 error_table_$badopt 000010 external static fixed bin(35,0) dcl 48 set ref 200* error_table_$noentry 000014 external static fixed bin(35,0) dcl 50 ref 268 456 error_table_$nomatch 000016 external static fixed bin(35,0) dcl 51 ref 339 error_table_$not_act_fnc 000020 external static fixed bin(35,0) dcl 52 ref 89 exclude_sw 3 based bit(1) array level 3 packed unaligned dcl 1-7 set ref 305* 315* 332* expand_pathname_ 000042 constant entry external dcl 62 ref 454 expand_pathname_$add_suffix 000044 constant entry external dcl 63 ref 172 explanation_len 14 000100 automatic fixed bin(21,0) initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* explanation_len 14 000106 automatic fixed bin(21,0) initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* explanation_ptr 12 000100 automatic pointer initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* explanation_ptr 12 000106 automatic pointer initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* explicit_value_sw 000302 automatic bit(1) unaligned dcl 37 set ref 99* 157* 194* 213* 247 get_system_free_area_ 000046 constant entry external dcl 64 ref 293 get_temp_segment_ 000050 constant entry external dcl 65 ref 277 got_name_sw 000303 automatic bit(1) unaligned dcl 37 set ref 99* 106* 155 156 162* 204 212 219* 225 got_value_sw 000304 automatic bit(1) unaligned dcl 37 set ref 99* 127* 155 157* 194* 204 213* 227 235 hcs_$initiate 000052 constant entry external dcl 66 ref 266 hcs_$make_seg 000054 constant entry external dcl 67 ref 383 hcs_$terminate_noname 000056 constant entry external dcl 68 ref 262 362 i 000343 automatic fixed bin(17,0) dcl 45 set ref 104* 105* 109* 111* 115* 115 116 121* 133* 133 134 137* 143* 143 144 145* 152* 152 153 154* 169* 169 170 171* 191* 191 192 193* 309* 311* 316* 316 318* 350* 352 352 352 352 352 352 352 352* if_sw 000305 automatic bit(1) unaligned dcl 38 set ref 99* 146* 237 433 if_value based char unaligned dcl 27 set ref 435 438* if_value_len 000336 automatic fixed bin(21,0) dcl 44 set ref 148* 435 438 438 if_value_ptr 000322 automatic pointer dcl 41 set ref 147* 435 438 index builtin function dcl 80 ref 113 ioa_$rsnnl 000060 constant entry external dcl 69 ref 425 length builtin function dcl 80 ref 425 425 429 literal_sw 1(05) 000106 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* literal_sw 1(05) 000100 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* ltrim builtin function dcl 80 ref 445 464 match_arg_sw 000307 automatic bit(1) unaligned dcl 38 set ref 99* 136* 289 303 match_info based structure level 1 dcl 1-7 set ref 260 295 297* 360 match_info_ptr 000100 automatic pointer dcl 1-3 set ref 255* 260 260 295* 297 298 299 300 305 305 306 315 320 321 324 326 332 337* 360 360 match_info_version_1 constant fixed bin(17,0) initial dcl 1-27 ref 298 match_sw 000306 automatic bit(1) unaligned dcl 38 set ref 99* 135* 276 282 407 433 442 464 max builtin function dcl 80 ref 139 max_name_len 2 based fixed bin(21,0) level 2 dcl 1-7 set ref 260 295* 297 300* 305 305 305 305 306 306 306 315 315 320 320 321 321 321 324 324 326 326 326 332 332 360 name 4 based varying char array level 3 in structure "match_info" dcl 1-7 in procedure "vs" set ref 306* 321* 326* name based char unaligned dcl 28 in procedure "vs" set ref 282* 410* 426* 438* name_array 3 based structure array level 2 dcl 1-7 name_count 1 based fixed bin(17,0) level 2 dcl 1-7 set ref 260 295* 297 299* 360 name_index 4 based fixed bin(21,0) array level 3 in structure "value_list_info" dcl 1-17 in procedure "vs" ref 352 352 name_index 000344 automatic fixed bin(17,0) dcl 45 in procedure "vs" set ref 301* 304* 314* 314 315 320 321 324 326 331* 331 332 name_len 000337 automatic fixed bin(21,0) dcl 44 in procedure "vs" set ref 164* 221* 233 282 282 410 410 426 426 438 438 name_len 5 based fixed bin(21,0) array level 3 in structure "value_list_info" dcl 1-17 in procedure "vs" ref 352 352 name_ptr 000324 automatic pointer dcl 41 set ref 163* 220* 232 282 410 426 438 null builtin function dcl 80 ref 255 267 342 358 360 361 362 2-7 2-7 2-7 259 260 261 262 369 369 369 376 390 390 old_value_num 000100 automatic fixed bin(35,0) dcl 403 set ref 420* 425 old_value_num_str 000247 automatic char(32) unaligned dcl 34 set ref 407* 410* 418 420* 426 426 padding 1(07) 000106 automatic bit(29) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* padding 1(07) 000100 automatic bit(29) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* pair_count 1 based fixed bin(17,0) level 2 dcl 1-17 ref 261 350 352 352 352 352 361 pairs 3 based structure array level 2 dcl 1-17 path_sw 000310 automatic bit(1) unaligned dcl 38 set ref 99* 177* 265 452 pop_sw 000311 automatic bit(1) unaligned dcl 38 set ref 100* 184* 227 231 237 242 480 prompt_after_explanation 1(06) 000100 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* prompt_after_explanation 1(06) 000106 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* push_sw 000312 automatic bit(1) unaligned dcl 38 set ref 100* 185* 237 242 482 qi 000100 automatic structure level 1 dcl 369 set ref 373* 378 378 query_code 3 000100 automatic fixed bin(35,0) initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* query_code 3 000106 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* query_info 000106 automatic structure level 1 dcl 2-7 query_info_version_5 constant fixed bin(17,0) initial dcl 2-35 ref 374 question_iocbp 4 000106 automatic pointer initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* question_iocbp 4 000100 automatic pointer initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* 376* regexp_sw 3(01) based bit(1) array level 3 packed unaligned dcl 1-7 set ref 305* 320* 324* release_temp_segment_ 000062 constant entry external dcl 70 ref 259 358 repeat_time 10 000100 automatic fixed bin(71,0) initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* repeat_time 10 000106 automatic fixed bin(71,0) initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* return_arg based varying char dcl 24 set ref 418* 445* 445 447* 464* 464 467* return_len 000340 automatic fixed bin(21,0) dcl 44 set ref 84* 418 445 447 464 467 return_ptr 000326 automatic pointer dcl 41 set ref 84* 418 445 445 447 464 464 467 rtrim builtin function dcl 80 ref 344 418 426 426 426 426 429 seg_dn 000123 automatic char(168) unaligned dcl 33 set ref 172* 266* 269* 271* 271 343 344 454* 458* 460* 460 seg_en 000257 automatic char(32) unaligned dcl 34 set ref 172* 266* 269* 271* 343 344 454* 458* 460* seg_path 000175 automatic char(168) unaligned dcl 33 set ref 342* 343* 344* 345* 453* 454* seg_ptr 000330 automatic pointer dcl 41 set ref 255* 262 262* 266* 267 269* 337* 342 362 362* 410* 426* 438* 444* 447* 449* 458* status_code 2 000106 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 2-7 in procedure "vs" set ref 2-7* status_code 2 000100 automatic fixed bin(35,0) initial level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 369* substr builtin function dcl 80 set ref 180* 182* 252 252* 319 319 321 352 352 352 352 suppress_name_sw 1(01) 000106 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* suppress_name_sw 1(01) 000100 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* suppress_spacing 1(04) 000100 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* suppress_spacing 1(04) 000106 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* switches 1 000106 automatic structure level 2 in structure "query_info" dcl 2-7 in procedure "vs" switches 1 000100 automatic structure level 2 in structure "qi" dcl 369 in procedure "query_create" temp_ptr 000314 automatic pointer dcl 40 set ref 255* 259 259* 277* 358 358* 444 445 temp_str based varying char(262114) dcl 25 set ref 444* 445 unspec builtin function dcl 80 set ref 297* 373* update_sw 000313 automatic bit(1) unaligned dcl 38 set ref 99* 187* 188* 418 442 464 value based char unaligned dcl 29 set ref 438* 444* 447* 449* 464 467 value_$get 000064 constant entry external dcl 71 ref 410 value_$get_path 000066 constant entry external dcl 72 ref 342 453 value_$init_seg 000070 constant entry external dcl 73 ref 390 value_$list 000072 constant entry external dcl 74 ref 337 value_$pop 000074 constant entry external dcl 75 ref 480 value_$push 000076 constant entry external dcl 76 ref 482 value_$set 000100 constant entry external dcl 77 ref 484 value_$test_and_set 000102 constant entry external dcl 78 ref 426 438 value_index 6 based fixed bin(21,0) array level 3 dcl 1-17 ref 352 352 value_len 7 based fixed bin(21,0) array level 3 in structure "value_list_info" dcl 1-17 in procedure "vs" ref 352 352 value_len 000341 automatic fixed bin(21,0) dcl 44 in procedure "vs" set ref 129* 159* 196* 215* 233* 429* 438 438 444 444 447 447 449 449 464 467 value_list_info based structure level 1 dcl 1-17 ref 261 361 value_list_info_ptr 000102 automatic pointer dcl 1-3 set ref 255* 261 261 337* 350 352 352 352 352 352 352 352 352 352 352 352 352 361 361 value_num_str 000267 automatic char(32) unaligned dcl 34 set ref 425* 425 425 426 426 428 429 value_ptr 000332 automatic pointer dcl 41 set ref 128* 158* 195* 214* 232* 428* 438 444 447 449 464 467 version 000100 automatic fixed bin(17,0) level 2 in structure "qi" dcl 369 in procedure "query_create" set ref 374* version based fixed bin(17,0) level 2 in structure "match_info" dcl 1-7 in procedure "vs" set ref 298* yes_or_no_sw 1 000100 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 369 in procedure "query_create" set ref 369* 375* yes_or_no_sw 1 000106 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 2-7 in procedure "vs" set ref 2-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. alloc_chars_len automatic fixed bin(21,0) dcl 1-5 alloc_pair_count automatic fixed bin(17,0) dcl 1-4 query_info_version_3 internal static fixed bin(17,0) initial dcl 2-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 2-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 2-36 value_list_info_version_1 internal static fixed bin(17,0) initial dcl 1-27 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_OLD 003640 constant label dcl 412 ref 423 ERR 003434 constant label dcl 385 ref 391 MATCH_NAME 002456 constant label dcl 316 ref 333 NO_CONTROL_VALUE 000566 constant label dcl 117 ref 134 144 153 170 192 RETRY 003565 constant label dcl 405 ref 458 RETURN 003113 constant label dcl 358 ref 381 387 SEG_OK 002261 constant label dcl 282 ref 269 TEST_CODE 004450 constant label dcl 450 ref 430 439 USAGE 001441 constant label dcl 205 ref 155 225 235 query_create 003221 constant entry internal dcl 364 ref 269 458 set_value 003545 constant entry internal dcl 397 ref 282 352 value_set 000345 constant entry external dcl 11 value_set_push_pop 004720 constant entry internal dcl 471 ref 444 447 449 vs 000335 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5476 5602 5121 5506 Length 6070 5121 104 252 355 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vs 336 external procedure is an external procedure. on unit on line 257 82 on unit query_create 136 internal procedure is called by several nonquick procedures. set_value 212 internal procedure is called during a stack extension. value_set_push_pop internal procedure shares stack frame of internal procedure set_value. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME query_create 000100 qi query_create 000115 answer query_create 000126 code query_create set_value 000100 old_value_num set_value vs 000100 match_info_ptr vs 000102 value_list_info_ptr vs 000104 alloc_name_count vs 000105 alloc_max_name_len vs 000106 query_info vs 000123 seg_dn vs 000175 seg_path vs 000247 old_value_num_str vs 000257 seg_en vs 000267 value_num_str vs 000277 call_switches vs 000300 add_sw vs 000301 af_sw vs 000302 explicit_value_sw vs 000303 got_name_sw vs 000304 got_value_sw vs 000305 if_sw vs 000306 match_sw vs 000307 match_arg_sw vs 000310 path_sw vs 000311 pop_sw vs 000312 push_sw vs 000313 update_sw vs 000314 temp_ptr vs 000316 area_ptr vs 000320 arg_ptr vs 000322 if_value_ptr vs 000324 name_ptr vs 000326 return_ptr vs 000330 seg_ptr vs 000332 value_ptr vs 000334 add_num vs 000335 arg_len vs 000336 if_value_len vs 000337 name_len vs 000340 return_len vs 000341 value_len vs 000342 arg_count vs 000343 i vs 000344 name_index vs 000345 code vs 000346 complain vs THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_cs cat_realloc_cs call_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return tra_ext enable shorten_stack ext_entry int_entry int_entry_desc alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ active_fnc_err_$suppress_name com_err_ com_err_$suppress_name command_query_ cu_$af_return_arg cu_$arg_ptr cv_dec_check_ expand_pathname_ expand_pathname_$add_suffix get_system_free_area_ get_temp_segment_ hcs_$initiate hcs_$make_seg hcs_$terminate_noname ioa_$rsnnl release_temp_segment_ value_$get value_$get_path value_$init_seg value_$list value_$pop value_$push value_$set value_$test_and_set THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$noentry error_table_$nomatch error_table_$not_act_fnc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 7 000302 11 000334 84 000353 85 000370 86 000372 87 000374 88 000401 89 000402 90 000405 91 000406 92 000412 93 000413 95 000414 96 000430 99 000431 100 000442 101 000444 102 000445 104 000447 105 000457 106 000474 107 000514 109 000516 111 000525 113 000542 115 000562 116 000563 117 000566 119 000621 121 000622 122 000637 123 000665 124 000667 125 000720 127 000721 128 000724 129 000726 130 000730 132 000731 133 000745 134 000746 135 000751 136 000753 137 000761 138 000776 139 000777 140 001004 142 001005 143 001011 144 001012 145 001015 146 001032 147 001034 148 001036 149 001040 151 001041 152 001051 153 001052 154 001055 155 001072 156 001076 157 001100 158 001103 159 001105 160 001107 162 001110 163 001112 164 001114 166 001116 168 001117 169 001127 170 001130 171 001133 172 001150 173 001206 174 001210 175 001243 177 001244 178 001246 180 001247 182 001262 184 001275 185 001304 187 001313 188 001326 190 001340 191 001350 192 001351 193 001354 194 001371 195 001374 196 001376 197 001400 200 001401 201 001433 202 001434 204 001435 205 001441 208 001471 209 001516 212 001517 213 001521 214 001524 215 001525 216 001527 219 001530 220 001532 221 001533 223 001535 225 001537 227 001541 228 001545 229 001571 231 001572 232 001574 233 001576 234 001600 235 001601 237 001603 238 001611 239 001635 242 001636 243 001642 244 001666 247 001667 248 001673 249 001717 252 001720 255 001725 257 001732 259 001746 260 002000 261 002016 262 002036 263 002055 265 002056 266 002060 267 002123 268 002127 269 002133 270 002162 271 002163 272 002226 276 002227 277 002233 282 002261 289 002303 293 002306 295 002315 297 002333 298 002346 299 002350 300 002352 301 002354 303 002355 304 002357 305 002361 306 002373 309 002403 311 002413 313 002430 314 002442 315 002443 316 002456 318 002457 319 002474 320 002506 321 002520 322 002536 324 002537 326 002551 328 002566 330 002567 331 002573 332 002574 333 002607 335 002610 337 002612 338 002633 339 002635 342 002670 343 002712 344 002732 345 002772 347 003021 350 003022 352 003033 355 003110 358 003113 360 003145 361 003162 362 003201 490 003217 364 003220 369 003241 373 003271 374 003274 375 003276 376 003300 378 003303 381 003361 383 003371 384 003432 385 003434 387 003506 390 003511 391 003534 393 003536 397 003544 405 003565 407 003570 410 003601 411 003635 412 003640 414 003671 418 003672 420 003717 421 003742 422 003745 423 003750 425 003751 426 004006 428 004107 429 004114 430 004126 433 004127 435 004133 436 004144 438 004145 439 004213 442 004214 444 004222 445 004264 446 004336 447 004340 449 004406 450 004450 452 004453 453 004455 454 004473 456 004521 458 004526 459 004556 460 004557 461 004623 464 004624 467 004704 469 004717 471 004720 480 004743 482 005002 484 005044 486 005103 ----------------------------------------------------------- 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