COMPILATION LISTING OF SEGMENT gtss_attributes_mgr_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1222.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 gtss_attributes_mgr_: proc; 10 11 /** Procedure to obtain and set the attribute values on 12* a (Multics) GCOS file. 13* 14* The values are stored in names added to the file name. 15* 16* Given a Multics GCOS file with added names of the form: 17* E.N.V 18* 19* where: E => single element entry name on the file. 20* N => attribute name (4 character, see attr_name array). 21* V => current value of that attribute. 22* 23* Values are provided by the caller in the structure 24* gtss_file_values (See gtss_file_values.incl.pl1). 25* 26* The 4 variables: version, dname, ename and new_ename 27* (in the gtss_file_values) are filled in by the caller 28* and the get entry called to obtain the current 29* attributes for the designated file (returned 30* in the gtss_file_values structure. set_switch 31* values are not returned). 32* 33* The set entry requires the same 4 variables as for 34* get. In addition bits are set "1"b in set_switch 35* variables to indicate an attribute to set and the 36* corresponding (non set_switch) variable set to the 37* new value desired. Note the use of ename and 38* new_ename combinations to provide for setting 39* initial attributes and renaming as well as 40* resetting values. 41* 42* Authors: Robert J. Grimes Created 43* - Albert N. Kepner 1978 44* - Robert M. May 45* - David B. Ward 46* Change: Dave Ward 08/14/79 db_attributes_mgr installation. 47* Change: Dave Ward 08/25/79 Revised noal setting. 48* Change: Ron Barstad 83-08-17 replaced hcs_$(initiate chname_seg) with chname_file 49***/ 50 51 call com_err_ (0, "gtss_attributes_mgr_", "Entries are $get and $set."); 52 return; 53 54 get: entry (vp, rc); 55 56 /** Obtain file attribute values. 57***/ 58 dcl rc fixed bin(35)parm; 59 dcl set_entry bit(1); 60 dcl vp ptr parm; 61 62 fvp = vp; /* Obtain values in caller's structure. */ 63 set_entry = "0"b; 64 goto continue; 65 66 67 set: entry (vp, rc); 68 69 /** Set file attribute values. **/ 70 71 fvp = addr (gtss_file_values); /* Obtain values for set. */ 72 set_entry = "1"b; 73 74 continue: ; 75 /* Verify caller's vp usable. */ 76 if (vp = null ()) | 77 ((addr (vp) -> bit72&get_ptr_bits) ^= ptr_constant) then do; 78 rc = error_table_$bad_ptr; 79 goto exit; 80 end; 81 82 83 if set_entry then do; /* Obtain version and file name. */ 84 gtss_file_values.version = vp -> fv.version; 85 gtss_file_values.dname = vp -> fv.dname; 86 gtss_file_values.ename = vp -> fv.ename; 87 gtss_file_values.new_ename = vp -> fv.new_ename; 88 end; 89 90 fv.info_ptr = null (); 91 92 if fv.version ^= 1 then do; /* Current version must be 1. */ 93 rc = error_table_$unimplemented_version; 94 goto exit; 95 end; 96 97 en = fv.ename; 98 99 c = fixed ((fv.ename ^= " ") || (fv.new_ename ^= " "), 2); 100 goto name_case (c); 101 102 name_case(0):; /** Neither old nor new name given. */ 103 rc = error_table_$badpath; 104 goto exit; 105 106 name_case(1):; /** New name only. **/ 107 if set_entry then goto do_set; 108 rc = error_table_$bad_entry_point_name; 109 goto exit; 110 111 name_case(2):; /** Old name only. **/ 112 name_case(3):; /** Both old and new names. **/ 113 114 call hcs_$status_long ( 115 fv.dname 116 , fv.ename 117 , 1b /* Chase link. */ 118 , addr (si) 119 , addr (names_area) 120 , code 121 ); 122 if code ^= 0 then do; 123 rc = code; 124 goto exit; 125 end; 126 127 fv.info_ptr = addr (si); 128 129 if (si.type = "10"b) & (si.bit_count = "0"b) then do; /* Multics directory. */ 130 fv.catalog = "1"b; /* File is a catalog. */ 131 fv.data_flags.mode_random = "1"b; 132 fv.data_flags.busy 133 , fv.data_flags.null_file 134 , fv.attributes.attr 135 = "0"b; 136 fv.data_fields.maxll 137 , fv.data_fields.curll = divide (fixed (si.records_used, 24)*1024, 320, 24); 138 fv.data_fields.number_allocations = 1; 139 fv.creation_date = dt (si.dtbm); 140 141 if set_entry then 142 rc = error_table_$not_seg_type; 143 else 144 rc = 0; 145 goto exit; 146 end; 147 148 fv.catalog = "0"b; /* File is not a catalog. */ 149 150 nn = fixed (si.nnames, 17); /* Number of names on the file. */ 151 anp = pointer (addr (names_area), si.names_relp); 152 string (have_attr) = "0"b; 153 do i = 1 to nn; 154 155 /* Partition the i-th name into E, N, V fields. */ 156 namei = file_name (i); 157 k = search (reverse (namei), "."); 158 if k = 0 then goto next; /* No periods in i-th name. */ 159 160 /* Set initial lengths of name fields. */ 161 Nl = length (namei)-k; 162 Vl = k-1; 163 164 /* Set final lengths of name fields. */ 165 k = search (reverse (name2.EN), "."); 166 if k = 0 then goto next; /* Not 2 periods in name. */ 167 El = Nl-k; 168 Nl = k-1; 169 170 /* Adjust value length to exclude 171* trailing spaces. */ 172 Vl = length (rtrim (name.V)); 173 174 /* Prefix before attribute name must 175* be the same as the file entry name. 176**/ 177 if fv.ename ^= name.E then goto next; 178 179 /* Establish which attribute this name specifies. */ 180 k = index (string (attr_name), name.N); 181 if k = 0 then goto next; /* Not one of attribute names. */ 182 if mod (k-1, length (attr_name (0)))>0 then goto next; /* Not an attribute. */ 183 k = divide (k-1, length (attr_name (0)), 17); /* k => which attribute. */ 184 if set_entry then name_index (k) = i; /* Record that i-th name is to be 185* used to replace the k-th attribute. */ 186 goto set_mode (k); 187 188 set_mode(0):; /** (mode) Random or sequential. **/ 189 if name.V = "r" then do; 190 fv.data_flags.mode_random = "1"b; 191 have_attr (k) = "1"b; /* Mark mode random. */ 192 end; 193 else 194 if name.V = "s" then do; 195 fv.data_flags.mode_random = "0"b; 196 have_attr (k) = "1"b; /* Mark mode sequential. */ 197 end; 198 goto next; 199 200 set_mode(1):; /** (maxl) Maximum length of file. **/ 201 fv.data_fields.maxll = get_dec_value (k); 202 goto next; 203 204 set_mode(2):; /** (curl) Current length of file. **/ 205 fv.data_fields.curll = get_dec_value (k); 206 goto next; 207 208 set_mode(3):; /** (busy) File in use. */ 209 fv.data_flags.busy = yes_or_no (k); 210 goto next; 211 212 set_mode(4):; /** (attr) User specified file attributes. **/ 213 fv.attributes.attr = get_oct_value (k); 214 goto next; 215 216 set_mode(5):; /** (null) File has never been written to. **/ 217 fv.data_flags.null_file = yes_or_no (k); 218 goto next; 219 220 set_mode(6):; /** (noal) Number of allocations, i.e., simulator accesses. **/ 221 if set_entry then do; 222 if vp -> fv.set_switch.number_allocations then do; /* Obtain for increment. */ 223 if vp -> fv.data_fields.number_allocations>0 then /* But only if not initial value. */ 224 current_number_allocations = get_dec_value (k); 225 end; 226 else 227 fv.data_fields.number_allocations = get_dec_value (k); 228 have_attr (k) = "1"b; 229 end; 230 else /* Obtain for caller. */ 231 fv.data_fields.number_allocations = get_dec_value (k); 232 goto next; 233 234 set_mode(7):; /** (crdt) File creation date. **/ 235 fv.creation_date = name.V; 236 have_attr (k) = "1"b; 237 goto next; 238 239 next: ; 240 241 end; 242 243 if (^string (have_attr) ^= "0"b) then do; /* Not all values obtained. */ 244 rc = error_table_$action_not_performed; 245 goto exit; 246 end; 247 248 if ^set_entry then do; /* Conclude return. */ 249 rc = 0; 250 goto exit; 251 end; 252 253 /* Reset added names => set entry called. */ 254 do_set: ; 255 lvp = vp; /* Local vp. */ 256 if c = 2 then /* New name same as ename. */ 257 new = rtrim (fv.ename); 258 else do; /* Use new ename. */ 259 new = rtrim (fv.new_ename); 260 if c = 1 then /* Only new name specified. */ 261 en = new; 262 else /* ename and new_ename specified. */ 263 if string (set_sw) = "0"b then do; 264 /* Nothing to set => just remaning old values. */ 265 set_sw = "1"b; /* Reset all values. */ 266 lvp -> fv.data_flags = fv.data_flags; 267 lvp -> fv.data_fields = fv.data_fields; 268 lvp -> fv.attributes.attr = fv.attributes.attr; 269 lvp -> fv.data_fields.number_allocations = fv.data_fields.number_allocations; 270 lvp -> fv.creation_date = fv.creation_date; 271 end; 272 end; 273 274 if lvp -> fv.change_name then do; /* Rename the entry. */ 275 call hcs_$chname_file ( 276 (gtss_file_values.dname) 277 , en 278 , en /* Old name. */ 279 , (lvp -> fv.new_ename) /* New name. */ 280 , code 281 ); 282 if code ^= 0 then do; 283 rc = code; 284 goto exit; 285 end; 286 287 /* File entry is now the new name. */ 288 en = lvp -> fv.new_ename; 289 290 /* Assure all values provided. */ 291 if ^lvp -> fv.set_switch.mode_random then 292 lvp -> fv.data_flags.mode_random = fv.data_flags.mode_random; 293 if ^lvp -> fv.set_switch.maxll then 294 lvp -> fv.data_fields.maxll = fv.data_fields.maxll; 295 if ^lvp -> fv.set_switch.curll then 296 lvp -> fv.data_fields.curll = fv.data_fields.curll; 297 if ^lvp -> fv.set_switch.busy then 298 lvp -> fv.data_flags.busy = fv.data_flags.busy; 299 if ^lvp -> fv.set_switch.attr then 300 lvp -> fv.attributes.attr = fv.attributes.attr; 301 if ^lvp -> fv.set_switch.null_file then 302 lvp -> fv.data_flags.null_file = fv.data_flags.null_file; 303 if ^lvp -> fv.set_switch.number_allocations then 304 lvp -> fv.data_fields.number_allocations = fv.data_fields.number_allocations; 305 if ^lvp -> fv.set_switch.creation_date then 306 lvp -> fv.creation_date = fv.creation_date; 307 set_sw = "1"b; 308 end; 309 310 new = new||"."; 311 n = " "; 312 313 do i = lbound (name_index, 1) to hbound (name_index, 1); 314 if ^set_sw (i) then goto next_change; 315 if c>1 then 316 n = file_name (name_index (i)); /* The name to change. */ 317 /* Form change name up to suffix. */ 318 cn = new; 319 cn = cn||attr_name (i); 320 cn = cn||"."; 321 goto set_change (i); 322 323 set_change(0):; /** (mode) Random or sequential. **/ 324 if lvp -> fv.data_flags.mode_random then cn = cn||"r"; 325 else cn = cn||"s"; 326 goto make_change; 327 328 set_change(1):; /** (maxl) Maximum length of file. **/ 329 pic12 = lvp -> fv.data_fields.maxll; 330 cn = cn||tlz (pic12c); 331 goto make_change; 332 333 set_change(2):; /** (curl) Current length of file. **/ 334 pic12 = lvp -> fv.data_fields.curll; 335 cn = cn||tlz (pic12c); 336 goto make_change; 337 338 set_change(3):; /** (busy) File in use. */ 339 if lvp -> fv.data_flags.busy then cn = cn||"yes"; 340 else cn = cn||"no"; 341 goto make_change; 342 343 set_change(4):; /** (attr) User specified file attributes. **/ 344 v.r = lvp -> fv.attributes.attr; 345 v.f = "0"b; 346 do k = 1 to 12; 347 cn = cn||substr ("01234567", fixed (va (k), 17)+1, 1); 348 end; 349 goto make_change; 350 351 set_change(5):; /** (null) File has never been written to. **/ 352 if lvp -> fv.data_flags.null_file then cn = cn||"yes"; 353 else cn = cn||"no"; 354 goto make_change; 355 356 set_change(6):; /** (noal) Number of allocations by GCOS simulator. */ 357 pic12 = mod (current_number_allocations+lvp -> fv.data_fields.number_allocations, 262144); 358 cn = cn||tlz (pic12c); 359 goto make_change; 360 361 set_change(7):; /** (crdt) Creation date MMDDYY **/ 362 cn = cn||lvp -> fv.creation_date; 363 goto make_change; 364 365 366 make_change: ; 367 368 call hcs_$chname_file ( 369 (gtss_file_values.dname) 370 , en 371 , rtrim (n) /* Old name. */ 372 , (cn) /* New name. */ 373 , code 374 ); 375 if code ^= 0 then 376 if code ^= error_table_$segnamedup then do; 377 if db_attributes_mgr then 378 call com_err_ ( 379 code 380 , "gtss_attributes_mgr_" 381 , "File attribute, added name, ""^a"" already exists." 382 , cn 383 ); 384 rc = code; 385 goto exit; 386 end; 387 388 next_change: ; 389 390 end; 391 392 rc = 0; /* All values have be obtained and reset. */ 393 394 exit: ; 395 if db_attributes_mgr then call pr_vals (vp); 396 return; 397 398 dt: proc (d)returns (char (6)); 399 400 /* Map Multics (36 bit) date d to gcos MMDDYY. */ 401 dcl d bit(36)parm; 402 call date_time_$fstime (d, r); 403 return (mm||dd||yy); 404 405 dcl date_time_$fstime entry(bit(36),char(*)); 406 dcl r char(24); 407 dcl 1 r1 aligned based(addr(r)) 408 , 2 mm char(2)unal 409 , 2 s1 char(1)unal 410 , 2 dd char(2)unal 411 , 2 s2 char(1)unal 412 , 2 yy char(2)unal 413 ; 414 end dt ; 415 416 get_dec_value: proc (k)returns (fixed bin); 417 418 /** Return the numeric string that is the suffix on the 419* entry name (n) converted to binary and set k-th 420* attribute processed. 421***/ 422 dcl k fixed bin parm; 423 if verify (name.V, "0123456789")>0 then return (0); /* Not all numeric (fail). */ 424 have_attr (k) = "1"b; 425 return (fixed (name.V, 17)); 426 427 end get_dec_value ; 428 429 get_oct_value: proc (k)returns (bit (35)); 430 431 /** Return the suffix of the entry name (n) treated as 432* a 12 digit octal value (the left 35 bits). 433* Mark k-th attribute processed. 434***/ 435 dcl k fixed bin parm; 436 437 v.r = "0"b; 438 do j = 1 to length (name.V); 439 i = search ("01234567", substr (name.V, j, 1))-1; 440 if i = -1 then return ((35)"0"b); 441 va (j) = i3; 442 end; 443 have_attr (k) = "1"b; 444 return (v.r); 445 446 dcl i fixed bin(35); 447 dcl j fixed bin; 448 449 dcl 1 i_ovl aligned based(addr(i)), 450 2 left33 bit(33)unal, 451 2 i3 bit( 3)unal; 452 end get_oct_value ; 453 454 pr_vals: proc (p); 455 456 /* Print a gtss_file_values. */ 457 dcl p ptr parm; 458 if set_entry then do; 459 ssp = addr (p -> fv.set_switch); 460 call com_err_ (rc, "gtss_attributes_mgr_$set"); 461 end; 462 else do; 463 ssp = addr (ones); 464 call com_err_ (rc, "gtss_attributes_mgr_$get"); 465 end; 466 call ioa_ ("version^-^i", p -> fv.version); 467 call ioa_ ("dname^-""^a""", p -> fv.dname); 468 call ioa_ ("ename^-""^a""", p -> fv.ename); 469 call ioa_ ("new_ename^-""^a""", p -> fv.new_ename); 470 call ioa_ ("change_name^-^a", no_yes (fixed (p -> fv.change_name, 1))); 471 call ioa_ ("catalog^-^a", no_yes (fixed (p -> fv.catalog, 1))); 472 call ioa_ ("info_ptr^-^p", p); 473 a = 0; 474 a35 = p -> fv.attributes.attr; 475 if ss (0) then call ioa_ ("0. ^a mode_random^-""^1b""b", attr_name (0), p -> fv.data_flags.mode_random); 476 if ss (1) then call ioa_ ("1. ^a maxll^-^i", attr_name (1), p -> fv.data_fields.maxll); 477 if ss (2) then call ioa_ ("2. ^a curll^-^i", attr_name (2), p -> fv.data_fields.curll); 478 if ss (3) then call ioa_ ("3. ^a busy^-""^1b""b", attr_name (3), p -> fv.data_flags.busy); 479 if ss (4) then call ioa_ ("4. ^a attr^-^w", attr_name (4), a); 480 if ss (5) then call ioa_ ("5. ^a null_file^-""^1b""b", attr_name (5), p -> fv.data_flags.null_file); 481 if ss (6) then call ioa_ ("6. ^a number_allocations^-^i", attr_name (6), p -> fv.data_fields.number_allocations); 482 if ss (7) then call ioa_ ("7. ^a creation_date^-^a", attr_name (7), p -> fv.creation_date); 483 return; 484 485 dcl a fixed bin(35); 486 dcl 1 ao aligned based(addr(a)), 487 2 a35 bit(35)unal, 488 2 a01 bit(01)unal; 489 dcl ioa_ entry options(variable); 490 dcl no_yes (0:1)char(3)static int options(constant)init("no","yes"); 491 dcl ones bit(36)init((36)"1"b); 492 dcl ss (0:36)bit(1)unal based(ssp); 493 dcl ssp ptr; 494 end pr_vals ; 495 496 tlz: proc (c12)returns (char (12)var); 497 498 /* Trim left zeroes from c12, but retain 499* one zero if all zeroes. 500**/ 501 dcl c12 char(12)parm; 502 r = ltrim (c12, "0"); 503 if r = "" then return ("0"); 504 return (r); 505 506 dcl r char(12)var; 507 end tlz ; 508 509 yes_or_no: proc (k)returns (bit (1)); 510 511 /** Return "1"b if suffix is "yes" and "0"b if it is "no". 512* Set attribute processed. 513***/ 514 dcl k fixed bin parm; 515 if name.V = "yes" then do; 516 have_attr (k) = "1"b; 517 return ("1"b); 518 end; 519 if name.V = "no" then 520 have_attr (k) = "1"b; 521 return ("0"b); 522 end yes_or_no ; 523 524 /* Variables for gtss_attributes_mgr_: */ 525 /* IDENTIFIER ATTRIBUTES */ 526 dcl anp ptr init(null()); 527 dcl c fixed bin(2); 528 dcl cn char(32)var; 529 dcl code fixed bin(35); 530 dcl com_err_ entry options(variable); 531 dcl current_number_allocations fixed bin(35)init(0); 532 dcl El fixed bin(24); 533 dcl empty builtin; 534 dcl en char(32); 535 dcl error_table_$action_not_performed fixed bin(35)ext; 536 dcl error_table_$badpath fixed bin(35)ext; 537 dcl error_table_$bad_entry_point_name fixed bin(35)ext; 538 dcl error_table_$bad_ptr fixed bin(35)ext; 539 dcl error_table_$duplicate_file_id fixed bin(35)ext; 540 dcl error_table_$not_seg_type fixed bin(35)ext; 541 dcl error_table_$segnamedup fixed bin(35)ext; 542 dcl error_table_$unimplemented_version fixed bin(35)ext; 543 dcl file_name (nn)char(32)aligned based(anp); 544 dcl file_ptr ptr; 545 dcl fvp ptr init(null()); 546 dcl have_attr (0:7)bit(1); 547 dcl hcs_$chname_file entry (char(*), char(*), char(*), char(*), fixed bin(35)); 548 dcl hcs_$initiate entry (char(*), char(*), char(*), fixed bin(1), fixed bin(2), ptr, fixed bin(35)); 549 dcl hcs_$status_long entry(char(*),char(*),fixed bin(1),ptr,ptr,fixed bin(35)); 550 dcl i fixed bin; 551 dcl index builtin; 552 dcl k fixed bin; 553 dcl length builtin; 554 dcl lvp ptr init(null()); 555 dcl n char(32)aligned; 556 dcl namei char(32)aligned; 557 dcl names_area area(1000)init(empty()); 558 dcl name_index (0:7)fixed bin; 559 dcl new char(32)var; 560 dcl Nl fixed bin(24); 561 dcl nn fixed bin; 562 dcl pic12 pic "(12)9"; 563 dcl pic12c char(12)based(addr(pic12)); 564 dcl reverse builtin; 565 dcl rtrim builtin; 566 dcl search builtin; 567 dcl set_sw (0:7)bit(1)based(addr(lvp->fv.set_switch)); 568 dcl substr builtin; 569 dcl va (12)bit(3)based(addr(v)); 570 dcl verify builtin; 571 dcl Vl fixed bin(24); 572 573 dcl 1 name aligned based(addr(namei)) 574 , 2 E char(El)unal 575 , 2 p1 char( 1)unal 576 , 2 N char(Nl)unal 577 , 2 p2 char( 1)unal 578 , 2 V char(Vl)unal 579 ; 580 581 dcl 1 name2 aligned based(addr(namei)) 582 , 2 EN char(Nl)unal 583 , 2 p2 char( 1)unal 584 , 2 V char(Vl)unal 585 ; 586 587 dcl 1 fv aligned based(fvp) like gtss_file_values; 588 589 dcl 1 v, 590 2 r bit(35), 591 2 f bit( 1); 592 593 594 dcl 1 si aligned static int like branch /* (Must be static, caller gets info_ptr to it). */; 595 1 1 /* BEGIN INCLUDE FILE gtss_ptr_check.incl.pl1 */ 1 2 /* 1 3* Created: (Wardd Multics) 07/14/78 1907.0 mst Fri 1 4**/ 1 5 1 6 /** The following used to (attempt) to guard 1 7* against improper pointer values, i.e., 1 8* 1 9* if (addr(ptr_var)->bit72&get_ptr_bits)=ptr_constant then 1 10* ptr_var may be OK; 1 11* else 1 12* ptr_var NOT OK; 1 13* **/ 1 14 dcl bit72 bit(72)aligned based; 1 15 dcl get_ptr_bits bit(72)aligned static int options(constant)init("000000000077000000600077"b3); 1 16 dcl ptr_constant bit(72)aligned static int options(constant)init("000000000043"b3); 1 17 1 18 /* END INCLUDE FILE gtss_ptr_check.incl.pl1 */ 596 597 2 1 /* BEGIN INCLUDE FILE gtss_file_values.incl.pl1 */ 2 2 /* 2 3* Created: (Wardd Multics) 09/01/78 1447.1 mst Fri 2 4**/ 2 5 2 6 /** The gtss_file_values structure provides parameters to the 2 7* gtss_attributes_mgr_ subroutine. 2 8* 2 9* The caller must provide space for this structure, fill in 2 10* the version with 1, the dname and ename with the file directory 2 11* and entry name, and for calls to gtss_attributes_mgr_$set, 2 12* fill in values to be reset and set the corresponding set_switch 2 13* to "1"b. 2 14* 2 15* If the (Multics) file located is a directory 2 16* a GCOS catalog is implied. 2 17* 2 18* If both ename and new_ename are set but no set_switch 2 19* is "1"b (and the set entry is called) this implies 2 20* that the existing attribute values are being renamed 2 21* to the new entry. 2 22* 2 23* Then: call gtss_attributes_mgr_$set(addr(gtss_file_values),code); 2 24* 2 25* Use of ename/new_ename combinations 2 26* for set entry. 2 27* 2 28* -|-----------|-----------|-|-----------------| 2 29* | ename |new_ename || meaning | 2 30* =|===========|===========|=|=================| 2 31* | blanks | blanks || illegal | 2 32* -|-----------|-----------|-|-----------------| 2 33* | blanks |not blanks|| initial | 2 34* | | || setting | 2 35* -|-----------|-----------|-|-----------------| 2 36* |not blanks| blanks || check enames's | 2 37* | | ||attribute values| 2 38* | | || and reset. | 2 39* -|-----------|-----------|-|-----------------| 2 40* |not blanks|not blanks|| delete ename's | 2 41* | | || values and put | 2 42* | | || on values for | 2 43* | | || new_ename's | 2 44* -|-----------|-----------|-|-----------------| 2 45***/ 2 46 dcl attr_name (0:7)char(4)static int options(constant)init( 2 47 /* 0 */ "mode" 2 48 , /* 1 */ "maxl" 2 49 , /* 2 */ "curl" 2 50 , /* 3 */ "busy" 2 51 , /* 4 */ "attr" 2 52 , /* 5 */ "null" 2 53 , /* 6 */ "noal" 2 54 , /* 7 */ "crdt" 2 55 ); 2 56 dcl 1 gtss_file_values aligned automatic 2 57 , 3 version fixed bin(17) /* Current version is 1. (OUT) */ 2 58 , 3 dname char(168)unal /* Directory name. (IN) */ 2 59 , 3 ename char(032)unal /* Entry name. (IN) */ 2 60 , 3 new_ename char(032)unal /* New entry name. (IN) */ 2 61 , 3 change_name bit(1) /* "1"b => Change segment name. (IN) */ 2 62 , 3 catalog bit(1) /* "1"b => File is a catalog (Multics directory). (OUT) */ 2 63 , 3 info_ptr ptr /* hcs_$status_long (4. entry_ptr) info structure address. (OUT) */ 2 64 , 3 set_switch /* "1"b => Set corresponding value. (IN) */ 2 65 , 4 mode_random bit(01)unal /* 0. Set the random/sequential(linked) field. */ 2 66 , 4 maxll bit(01)unal /* 1. Set max size value. */ 2 67 , 4 curll bit(01)unal /* 2. Set current size value. */ 2 68 , 4 busy bit(01)unal /* 3. Set file as busy. */ 2 69 , 4 attr bit(01)unal /* 4. Set user attributes value. */ 2 70 , 4 null_file bit(01)unal /* 5. Set null file value. */ 2 71 , 4 number_allocations bit(01)unal /* 6. Set or increment number of uses. */ 2 72 , 4 creation_date bit(01)unal /* 7. Set file creation date. */ 2 73 , 4 not_in_use bit(28)unal 2 74 /* The above set_ variables should be declared in an order 2 75* corresponding to the value in the attr_name array. */ 2 76 , 3 data_flags /* (OUT|IN) */ 2 77 , 4 mode_random bit(01)unal /* "1"b => random. */ 2 78 , 4 busy bit(01)unal /* "1"b => file is busy. */ 2 79 , 4 null_file bit(01)unal /* "1"b => file is null. */ 2 80 , 4 not_in_use2 bit(33)unal 2 81 , 3 data_fields /* (OUT|IN) */ 2 82 , 4 curll fixed bin(35) /* Current length in llinks (>=0). */ 2 83 , 4 maxll fixed bin(35) /* Maximum length in llinks (>=0). */ 2 84 , 4 number_allocations fixed bin(35) /* 0 => set | >0 => increment modulo 262144. */ 2 85 , 3 attributes /* (OUT|IN) */ 2 86 , 4 not_in_use3 bit(01)unal 2 87 , 4 attr bit(35)unal /* User specified file attribute value. */ 2 88 , 3 creation_date char(06) /* MMDDYY of creation. */ 2 89 ; 2 90 2 91 2 92 /* END INCLUDE FILE gtss_file_values.incl.pl1 */ 598 599 3 1 3 2 declare /* Information returned by hcs_$status_ and hcs_$status_long */ 3 3 3 4 3 5 1 branch aligned based (info_ptr), /* information about this particular branch */ 3 6 2 type bit (2) unal, /* "00"b = link, "01"b = segment, "10"b = directory */ 3 7 2 nnames bit (16) unal, /* number of names this entry has */ 3 8 2 names_relp bit (18) unal, /* pointer, relative to base of segment, to names */ 3 9 2 dtm bit (36) unal, /* date-time the segment was last modified */ 3 10 2 dtu bit (36) unal, /* date-time the segment was last used */ 3 11 2 mode bit (5) unal, /* the user's access modes to the entry */ 3 12 2 padding bit (13) unal, /* yawn */ 3 13 2 records_used bit (18) unal, /* number of blocks actually occupied by entry */ 3 14 3 15 /* limit of information returned by status_ */ 3 16 3 17 2 dtd bit (36) unal, /* date-time the segment was last dumped */ 3 18 2 dtbm bit (36) unal, /* date-time the branch for the entry was modified */ 3 19 2 account bit (36) unal, /* account to which storage is charged */ 3 20 2 current_length bit (12) unal, /* maximum length in blocks */ 3 21 2 bit_count bit (24) unal, /* length of entry in bits */ 3 22 2 device_id bit (4) unal, /* device on which segment currently resides */ 3 23 2 mdid bit (4) unal, /* device to which it is currently being moved */ 3 24 2 copy_switch bit (1) unal, /* segment copy switch */ 3 25 2 tpd bit (1) unal, /* transparent paging device switch */ 3 26 2 more_padding bit (8) unal, /* yawn, yawn */ 3 27 2 ring_brackets (0:2) bit (6) unal, /* ring brackets for entry */ 3 28 2 uid bit (36) unal, /* unique identifier */ 3 29 3 30 3 31 1 link aligned based (info_ptr), /* information about link entries */ 3 32 2 type bit (2) unal, /* as above */ 3 33 2 nnames bit (16) unal, /* number of names for this link */ 3 34 2 names_relp bit (18) unal, /* as above */ 3 35 2 dtbm bit (36) unal, /* date-time, entry for link was last modified */ 3 36 2 dtd bit (36) unal, /* date-time dumped */ 3 37 2 pathname_length bit (18) unal, /* length of link pathname */ 3 38 2 pathname_relp bit (18) unal, /* pointer, relative to based of segment, to name */ 3 39 3 40 entry_names (1) character (32) aligned based (pointer (area_pointer, branch.names_relp)), 3 41 /* array of names returned */ 3 42 pathname character (fixed (link.pathname_length)) aligned based (pointer (area_pointer, link.pathname_relp)), 3 43 /* pathname a link points to */ 3 44 3 45 area_pointer pointer, /* to area in which to allocate names */ 3 46 info_ptr pointer; /* to structure returned */ 3 47 3 48 600 601 4 1 /* BEGIN INCLUDE FILE gtss_db_names.incl.pl1 */ 4 2 /* 4 3* Created: (Wardd Multics) 03/29/79 1909.1 mst Thu 4 4**/ 4 5 4 6 /* To provide a new debugging switch: 4 7* 4 8* 1) Locate the comment "Insert next entry above this comment". 4 9* 4 10* 2) Place a new declaration for a db_ variable just 4 11* above this comment, in the same manner as the 4 12* current declaration just above the comment, using 4 13* the next integer gtss_ext_$db index. 4 14* 4 15* 3) Execute the gtss|db_names ted macro (this updates 4 16* the sorted name table). 4 17* 4 18* 4) Example use: 4 19* 4 20* if db_drl_grow then do; 4 21* . 4 22* . 4 23* . 4 24* debug i/o statements using com_err_ or ioa_ 4 25* . 4 26* . 4 27* . 4 28* end; 4 29* 4 30**/ 4 31 4 32 dcl ( 4 33 db_ bit(1) defined(gtss_ext_$db(01)) 4 34 ,db_CFP_input bit(1) defined(gtss_ext_$db(02)) 4 35 ,db_drl_addmem bit(1) defined(gtss_ext_$db(03)) 4 36 ,db_drl_defil bit(1) defined(gtss_ext_$db(04)) 4 37 ,db_drl_filact bit(1) defined(gtss_ext_$db(05)) 4 38 ,db_drl_filsp bit(1) defined(gtss_ext_$db(06)) 4 39 ,db_drl_grow bit(1) defined(gtss_ext_$db(07)) 4 40 ,db_drl_rew bit(1) defined(gtss_ext_$db(08)) 4 41 ,db_filact_funct02 bit(1) defined(gtss_ext_$db(09)) 4 42 ,db_filact_funct03 bit(1) defined(gtss_ext_$db(10)) 4 43 ,db_filact_funct04 bit(1) defined(gtss_ext_$db(11)) 4 44 ,db_filact_funct05 bit(1) defined(gtss_ext_$db(12)) 4 45 ,db_filact_funct10 bit(1) defined(gtss_ext_$db(13)) 4 46 ,db_filact_funct11 bit(1) defined(gtss_ext_$db(14)) 4 47 ,db_filact_funct14 bit(1) defined(gtss_ext_$db(15)) 4 48 ,db_filact_funct18 bit(1) defined(gtss_ext_$db(16)) 4 49 ,db_filact_funct19 bit(1) defined(gtss_ext_$db(17)) 4 50 ,db_filact_funct21 bit(1) defined(gtss_ext_$db(18)) 4 51 ,db_filact_funct22 bit(1) defined(gtss_ext_$db(19)) 4 52 ,db_interp_prim bit(1) defined(gtss_ext_$db(20)) 4 53 ,db_ios bit(1) defined(gtss_ext_$db(21)) 4 54 ,db_run_subsystem bit(1) defined(gtss_ext_$db(22)) 4 55 ,db_drl_t_cfio bit(1) defined(gtss_ext_$db(23)) 4 56 ,db_drl_switch bit(1) defined(gtss_ext_$db(24)) 4 57 ,db_drl_dio bit(1) defined(gtss_ext_$db(25)) 4 58 ,db_drl_retfil bit(1) defined(gtss_ext_$db(26)) 4 59 ,db_drl_msub bit(1) defined(gtss_ext_$db(27)) 4 60 ,db_drl_callss bit(1) defined(gtss_ext_$db(28)) 4 61 ,db_drl_rstswh bit(1) defined(gtss_ext_$db(29)) 4 62 ,db_drl_setswh bit(1) defined(gtss_ext_$db(30)) 4 63 ,db_mcfc bit(1) defined(gtss_ext_$db(31)) 4 64 ,db_dq bit(1) defined(gtss_ext_$db(32)) 4 65 ,db_abs bit(1) defined(gtss_ext_$db(33)) 4 66 ,db_attributes_mgr bit(1) defined(gtss_ext_$db(34)) 4 67 ,db_expand_pathname bit(1) defined(gtss_ext_$db(35)) 4 68 ,db_drl_part bit(1) defined(gtss_ext_$db(36)) 4 69 ,db_drl_morlnk bit(1) defined(gtss_ext_$db(37)) 4 70 ,db_drl_kin bit(1) defined(gtss_ext_$db(38)) 4 71 /* Insert next entry above this comment. */ 4 72 ); 4 73 4 74 /* Table of sorted names. */ 4 75 dcl 1 debug_bit_names (38) static int options(constant) 4 76 , 2 name char(18)var init( 4 77 "" ,"CFP_input" ,"abs" ,"attributes_mgr" ,"dq" ,"drl_addmem" 4 78 ,"drl_callss" ,"drl_defil" ,"drl_dio" ,"drl_filact" ,"drl_filsp" 4 79 ,"drl_grow" ,"drl_kin" ,"drl_morlnk" ,"drl_msub" ,"drl_part" 4 80 ,"drl_retfil" ,"drl_rew" ,"drl_rstswh" ,"drl_setswh" ,"drl_switch" 4 81 ,"drl_t_cfio" ,"expand_pathname" ,"filact_funct02" ,"filact_funct03" 4 82 ,"filact_funct04" ,"filact_funct05" ,"filact_funct10" ,"filact_funct11" 4 83 ,"filact_funct14" ,"filact_funct18" ,"filact_funct19" ,"filact_funct21" 4 84 ,"filact_funct22" ,"interp_prim" ,"ios" ,"mcfc" ,"run_subsystem" 4 85 ) 4 86 , 2 value fixed bin init( 4 87 01 ,02 ,33 ,34 ,32 ,03 ,28 ,04 ,25 ,05 ,06 ,07 ,38 ,37 ,27 ,36 ,26 ,08 4 88 ,29 ,30 ,24 ,23 ,35 ,09 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 4 89 ,31 ,22 4 90 ); 4 91 /* End of table. */ 4 92 /* END INCLUDE FILE gtss_db_names.incl.pl1 */ 602 603 5 1 /* BEGIN INCLUDE FILE gtss_ext_.incl.pl1 */ 5 2 /* 5 3* Created: (Wardd Multics) 05/20/78 1307.6 mst Sat 5 4* Modified: Ward 1981 add suspended_process dcl 5 5* Modified: Ron Barstad 83-07-21 Fixed level number on mcfc to 3 5 6* Modified: Ron Barstad 83-07-25 Fixed derail range in statistics to 4js3 number 5 7**/ 5 8 dcl gtss_ext_$aem fixed bin static ext /* >0 Print "additional" error information. */; 5 9 dcl gtss_ext_$bad_drl_rtrn static ext label /* Default for drl_rtrn. */; 5 10 dcl gtss_ext_$db (72)bit(1)unal static ext; 5 11 dcl gtss_ext_$deferred_catalogs_ptr ptr ext; 5 12 dcl gtss_ext_$dispose_of_drl static ext label /* quit handlers for some derails use this label to abort */; 5 13 dcl gtss_ext_$drl_rtrn (4)static ext label /* where to return at subsystem end */; 5 14 dcl gtss_ext_$drm_path char(168)static ext /* gtss_expand_pathname_stores drm_path */; 5 15 dcl gtss_ext_$drun_jid char (5) static ext /* valid only for DRUN executing under absentee */; 5 16 dcl gtss_ext_$event_channel fixed bin (71) static ext /* used for DABT signals */; 5 17 dcl gtss_ext_$finished static ext label /* Return to gtss for normal conclusion. */; 5 18 dcl gtss_ext_$gdb_name char(8)ext /* Name H* module to debug. */; 5 19 dcl gtss_ext_$get_line entry(ptr,ptr,fixed bin(21),fixed bin(21),fixed bin(35))variable ext /* Build mode input procedure. */; 5 20 dcl gtss_ext_$gtss_slave_area_seg (4) ext static ptr /* pointer to gtss slave area segment */; 5 21 dcl gtss_ext_$hcs_work_area_ptr ptr ext static /* Temp seg for acl lists. */; 5 22 dcl gtss_ext_$homedir char (64) static ext /* user's home dir */; 5 23 dcl gtss_ext_$last_k_was_out bit (1)aligned ext static /* "1"b => last tty output was output. */; 5 24 dcl gtss_ext_$pdir char (168) varying ext static /* pathname of process directory */; 5 25 dcl gtss_ext_$popup_from_pi static ext label /* transfer to this label after pi simulates popup primitive */; 5 26 dcl gtss_ext_$process_type fixed bin (17) static ext; 5 27 dcl gtss_ext_$put_chars entry(ptr,ptr,fixed bin(24),fixed bin(35)) variable ext /* Terminal output procedure. */; 5 28 dcl gtss_ext_$restart_from_pi static ext label /* transfer to this label after pi restores machine conditions */; 5 29 dcl gtss_ext_$restart_seg_ptr ptr static ext /* points to DRUN restart file when exec under absentee */; 5 30 dcl gtss_ext_$sig_ptr ext static ptr /* saved ptr to signal_ */; 5 31 dcl gtss_ext_$stack_level_ fixed bin ext static; 5 32 dcl gtss_ext_$suspended_process bit(1) ext static; 5 33 dcl gtss_ext_$SYstarstar_file_no fixed bin (24) static ext; 5 34 dcl gtss_ext_$user_id char (26)var ext; 5 35 dcl gtss_ext_$work_area_ptr ptr ext; 5 36 5 37 dcl 1 gtss_ext_$CFP_bits aligned static external 5 38 , 3 no_input_yet bit (1) unaligned /* used in gtss_CFP_input_, gtss_read_starCFP_ */ 5 39 , 3 rtn_bits bit (4) unaligned /* used in gtss_CFP_input_, gtss_CFP_output_ */ 5 40 , 3 cpos_called bit (1) unaligned /* used in gtss_CFP_input_, gtss_drl_t_cfio_, gtss_abandon_CFP_ */ 5 41 , 3 cout_called bit (1) unaligned /* used in gtss_read_starCFP_, gtss_abandon_CFP_ */ 5 42 , 3 build_mode bit (1) unaligned /* used in gtss_build_, gtss_dsd_process_ */ 5 43 ; 5 44 5 45 dcl 1 gtss_ext_$com_reg aligned static ext, 5 46 3 tsdmx, 5 47 4 dst fixed bin (18) unsigned unaligned, 5 48 4 dit fixed bin (18) unsigned unaligned, 5 49 3 tsdpt fixed bin (36) unsigned unaligned, 5 50 3 tsddt fixed bin (36) unsigned unaligned, 5 51 3 tsdid bit (72) unaligned, 5 52 3 tsdsd bit (36) unaligned, 5 53 3 tsdst fixed bin (36) unsigned unaligned, 5 54 3 tsdjb fixed bin (35) unaligned, 5 55 3 tsdgt, 5 56 4 ust_loc fixed bin (18) unsigned unaligned, 5 57 4 gating_ctl fixed bin (18) unsigned unaligned, 5 58 3 tcdfr bit (36) unaligned; 5 59 5 60 dcl 1 gtss_ext_$flags aligned static ext 5 61 , 3 dispose_of_drl_on_pi bit (01) unal /* 1 => drl that should be aborted after quit-pi sequence */ 5 62 , 3 drl_in_progress bit (01) unal /* 1 => drl handler executing; 0 => gcos code executing */ 5 63 , 3 popup_from_pi bit (01) unal /* 1 => derail processor will simulate Gcos break instead of returning */ 5 64 , 3 unfinished_drl bit (01) unal /* 1 => subsystem is handling breaks and quit was raised during a drl */ 5 65 , 3 ss_time_limit_set bit (01) unal /* 1 => exec time limit set for subsystem */ 5 66 , 3 timer_ranout bit (01) unal /* 1 => user is executing timer runout code */ 5 67 , 3 gtss_com_err_sw bit (01) unal /* 1 => stop com_err_ string from going to terminal */ 5 68 , 3 available bit (65) unal 5 69 ; 5 70 5 71 5 72 dcl 1 gtss_ext_$statistics aligned static ext, /* Derail usage statistics */ 5 73 3 total_time (-10:71)fixed bin (71), 5 74 3 count (-10:71)fixed bin (17); 5 75 5 76 /* Declaration of Available File Table 5 77* */ 5 78 dcl 1 gtss_ext_$aft aligned ext, /* aft structure */ 5 79 5 80 3 start_list (0:102) fixed bin (24), /* >0 => 1st aft_entry row to start of next entry chain. */ 5 81 5 82 3 aft_entry (20), 5 83 4 altname char (8), /* altname name for attaching this file */ 5 84 4 next_entry fixed bin (24), /* Next aft_entry in hash chain. */ 5 85 4 previous_add fixed bin (24), /* Previously added entry. */ 5 86 4 next_add fixed bin (24), /* Entry added after this one. */ 5 87 4 used bit (1) unal, /* "1"b => aft_entry contains AFT value. */ 5 88 4 forced bit(1) unal, /* "1"b => gtss_verify_access_ forced access on this file. */ 5 89 5 90 3 free_space fixed bin (24), /* Index of start of free space list for aft entries. */ 5 91 3 first_added fixed bin (24), /* >0 => start of chain in add order. */ 5 92 3 last_added fixed bin (24) /* >0 => end of chain in added order. */; 5 93 5 94 dcl gtss_ext_$ppt ptr ext /* switch name for tapein drl */; 5 95 /** Data structure to provide access to installed 5 96* subsystems fast library load. 5 97* **/ 5 98 dcl 1 gtss_ext_$fast_lib aligned ext 5 99 , 3 fast_lib_fcb ptr /* Pointer to msf fcb. */ 5 100 , 3 fast_lib_ncp fixed bin (24) /* Number of components. */ 5 101 , 3 comp_ptr (0:9)ptr /* Pointer to component. */ 5 102 , 3 comp_wds (0:9)fixed bin (24) /* Component length (words). */ 5 103 ; 5 104 5 105 /* Pointers to segments to regulate multipler 5 106* callers to files. Same segments are used to regulate 5 107* all simulator callers. 5 108**/ 5 109 dcl 1 gtss_ext_$mcfc aligned ext, 5 110 3 multics_lock_id bit(36), 5 111 3 wait_time fixed bin, 5 112 3 files_ptr ptr, 5 113 3 names_ptr ptr, 5 114 3 callers_ptr (0:3)ptr 5 115 ; 5 116 5 117 /* END INCLUDE FILE gtss_ext_.incl.pl1 */ 604 605 end gtss_attributes_mgr_ ; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1042.8 gtss_attributes_mgr_.pl1 >spec>on>7105>gtss_attributes_mgr_.pl1 596 1 09/09/83 1713.3 gtss_ptr_check.incl.pl1 >ldd>include>gtss_ptr_check.incl.pl1 598 2 09/09/83 1714.0 gtss_file_values.incl.pl1 >ldd>include>gtss_file_values.incl.pl1 600 3 04/29/76 1139.2 status_info.incl.pl1 >ldd>include>status_info.incl.pl1 602 4 09/09/83 1713.6 gtss_db_names.incl.pl1 >ldd>include>gtss_db_names.incl.pl1 604 5 09/09/83 1713.8 gtss_ext_.incl.pl1 >ldd>include>gtss_ext_.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. E based char level 2 packed unaligned dcl 573 ref 177 EN based char level 2 packed unaligned dcl 581 ref 165 El 000120 automatic fixed bin(24,0) dcl 532 set ref 167* 172 177 180 189 193 235 423 425 438 439 515 519 N based char level 2 packed unaligned dcl 573 ref 180 Nl 002153 automatic fixed bin(24,0) dcl 560 set ref 161* 165 167 168* 172 180 189 193 235 423 425 438 439 515 519 V based char level 2 packed unaligned dcl 573 ref 172 189 193 235 423 425 438 439 515 519 Vl 002160 automatic fixed bin(24,0) dcl 571 set ref 162* 172* 172 189 193 235 423 425 438 439 515 519 a 002336 automatic fixed bin(35,0) dcl 485 set ref 473* 474 479* a35 based bit(35) level 2 packed unaligned dcl 486 set ref 474* anp 000102 automatic pointer initial dcl 526 set ref 151* 156 315 526* ao based structure level 1 dcl 486 attr 105(01) based bit(35) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 132* 213* 268* 268 299* 299 344 474 attr 100(04) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 299 attr_name 000026 constant char(4) initial array unaligned dcl 2-46 set ref 180 182 183 319 475* 476* 477* 478* 479* 480* 481* 482* attributes 105 based structure level 2 dcl 587 bit72 based bit(72) dcl 1-14 ref 76 bit_count 7(12) 000010 internal static bit(24) level 2 packed unaligned dcl 594 set ref 129 branch based structure level 1 dcl 3-2 busy 100(03) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 297 busy 101(01) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 132* 209* 297* 297 339 478* c 000104 automatic fixed bin(2,0) dcl 527 set ref 99* 100 256 260 315 c12 parameter char(12) unaligned dcl 501 ref 496 502 catalog 74 based bit(1) level 2 dcl 587 set ref 130* 148* 471 change_name 73 based bit(1) level 2 dcl 587 ref 274 470 cn 000105 automatic varying char(32) dcl 528 set ref 318* 319* 319 320* 320 324* 324 325* 325 330* 330 335* 335 339* 339 340* 340 347* 347 352* 352 353* 353 358* 358 362* 362 368 377* code 000116 automatic fixed bin(35,0) dcl 529 set ref 114* 122 123 275* 282 283 368* 375 375 377* 384 com_err_ 000022 constant entry external dcl 530 ref 51 377 460 464 creation_date 106 based char(6) level 2 in structure "fv" dcl 587 in procedure "gtss_attributes_mgr_" set ref 139* 235* 270* 270 305* 305 362 482* creation_date 100(07) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 305 curll 102 based fixed bin(35,0) level 3 in structure "fv" dcl 587 in procedure "gtss_attributes_mgr_" set ref 136* 205* 295* 295 334 477* curll 100(02) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 295 current_number_allocations 000117 automatic fixed bin(35,0) initial dcl 531 set ref 223* 357 531* d parameter bit(36) unaligned dcl 401 set ref 398 402* data_fields 102 based structure level 2 dcl 587 set ref 267* 267 data_flags 101 based structure level 2 dcl 587 set ref 266* 266 date_time_$fstime 000050 constant entry external dcl 405 ref 402 db_attributes_mgr defined bit(1) unaligned dcl 4-32 ref 377 395 dd 0(27) based char(2) level 2 packed unaligned dcl 407 ref 403 dname 1 002162 automatic char(168) level 2 in structure "gtss_file_values" packed unaligned dcl 2-56 in procedure "gtss_attributes_mgr_" set ref 85* 275 368 dname 1 based char(168) level 2 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 85 114* 467* dtbm 5 000010 internal static bit(36) level 2 packed unaligned dcl 594 set ref 139* empty builtin function dcl 533 ref 557 en 000121 automatic char(32) unaligned dcl 534 set ref 97* 260* 275* 275* 288* 368* ename 53 based char(32) level 2 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 86 97 99 114* 177 256 468* ename 53 002162 automatic char(32) level 2 in structure "gtss_file_values" packed unaligned dcl 2-56 in procedure "gtss_attributes_mgr_" set ref 86* error_table_$action_not_performed 000024 external static fixed bin(35,0) dcl 535 ref 244 error_table_$bad_entry_point_name 000030 external static fixed bin(35,0) dcl 537 ref 108 error_table_$bad_ptr 000032 external static fixed bin(35,0) dcl 538 ref 78 error_table_$badpath 000026 external static fixed bin(35,0) dcl 536 ref 103 error_table_$not_seg_type 000034 external static fixed bin(35,0) dcl 540 ref 141 error_table_$segnamedup 000036 external static fixed bin(35,0) dcl 541 ref 375 error_table_$unimplemented_version 000040 external static fixed bin(35,0) dcl 542 ref 93 f 0(35) 002161 automatic bit(1) level 2 packed unaligned dcl 589 set ref 345* file_name based char(32) array dcl 543 ref 156 315 fv based structure level 1 dcl 587 fvp 000132 automatic pointer initial dcl 545 set ref 62* 71* 90 92 97 99 99 114 114 127 130 131 132 132 132 136 136 138 139 148 177 190 195 201 205 209 213 217 226 230 235 256 259 266 267 268 269 270 291 293 295 297 299 301 303 305 545* get_ptr_bits 000040 constant bit(72) initial dcl 1-15 ref 76 gtss_ext_$db 000046 external static bit(1) array unaligned dcl 5-10 ref 377 377 395 395 gtss_file_values 002162 automatic structure level 1 dcl 2-56 set ref 71 have_attr 000134 automatic bit(1) array unaligned dcl 546 set ref 152* 191* 196* 228* 236* 243 424* 443* 516* 519* hcs_$chname_file 000042 constant entry external dcl 547 ref 275 368 hcs_$status_long 000044 constant entry external dcl 549 ref 114 i 000135 automatic fixed bin(17,0) dcl 550 in procedure "gtss_attributes_mgr_" set ref 153* 156 184* 313* 314 315 319 321* i 002324 automatic fixed bin(35,0) dcl 446 in procedure "get_oct_value" set ref 439* 440 441 i3 0(33) based bit(3) level 2 packed unaligned dcl 449 ref 441 i_ovl based structure level 1 dcl 449 index builtin function dcl 551 ref 180 info_ptr 76 based pointer level 2 dcl 587 set ref 90* 127* ioa_ 000052 constant entry external dcl 489 ref 466 467 468 469 470 471 472 475 476 477 478 479 480 481 482 j 002325 automatic fixed bin(17,0) dcl 447 set ref 438* 439 441* k parameter fixed bin(17,0) dcl 514 in procedure "yes_or_no" ref 509 516 519 k parameter fixed bin(17,0) dcl 422 in procedure "get_dec_value" ref 416 424 k 000136 automatic fixed bin(17,0) dcl 552 in procedure "gtss_attributes_mgr_" set ref 157* 158 161 162 165* 166 167 168 180* 181 182 183* 183 184 186 191 196 201* 205* 209* 213* 217* 223* 226* 228 230* 236 346* 347* k parameter fixed bin(17,0) dcl 435 in procedure "get_oct_value" ref 429 443 length builtin function dcl 553 ref 161 172 182 183 438 lvp 000140 automatic pointer initial dcl 554 set ref 255* 262 265 266 267 268 269 270 274 275 288 291 291 293 293 295 295 297 297 299 299 301 301 303 303 305 305 307 314 324 329 334 339 344 352 357 362 554* maxll 100(01) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 293 maxll 103 based fixed bin(35,0) level 3 in structure "fv" dcl 587 in procedure "gtss_attributes_mgr_" set ref 136* 201* 293* 293 329 476* mm based char(2) level 2 packed unaligned dcl 407 ref 403 mode_random 100 based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 291 mode_random 101 based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 131* 190* 195* 291* 291 324 475* n 000142 automatic char(32) dcl 555 set ref 311* 315* 368 368 name based structure level 1 dcl 573 name2 based structure level 1 dcl 581 name_index 002132 automatic fixed bin(17,0) array dcl 558 set ref 184* 313 313 315 namei 000152 automatic char(32) dcl 556 set ref 156* 157 161 165 172 177 180 189 193 235 423 425 438 439 515 519 names_area 000162 automatic area(1000) initial dcl 557 set ref 114 114 151 557* names_relp 0(18) 000010 internal static bit(18) level 2 packed unaligned dcl 594 set ref 151 new 002142 automatic varying char(32) dcl 559 set ref 256* 259* 260 310* 310 318 new_ename 63 002162 automatic char(32) level 2 in structure "gtss_file_values" packed unaligned dcl 2-56 in procedure "gtss_attributes_mgr_" set ref 87* new_ename 63 based char(32) level 2 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 87 99 259 275 288 469* nn 002154 automatic fixed bin(17,0) dcl 561 set ref 150* 153 nnames 0(02) 000010 internal static bit(16) level 2 packed unaligned dcl 594 set ref 150 no_yes 000024 constant char(3) initial array unaligned dcl 490 set ref 470* 471* null_file 101(02) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 132* 217* 301* 301 352 480* null_file 100(05) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 301 number_allocations 100(06) based bit(1) level 3 in structure "fv" packed unaligned dcl 587 in procedure "gtss_attributes_mgr_" set ref 222 303 number_allocations 104 based fixed bin(35,0) level 3 in structure "fv" dcl 587 in procedure "gtss_attributes_mgr_" set ref 138* 223 226* 230* 269* 269 303* 303 357 481* ones 002337 automatic bit(36) initial unaligned dcl 491 set ref 463 491* p parameter pointer dcl 457 set ref 454 459 466 467 468 469 470 471 472* 474 475 476 477 478 480 481 482 pic12 002155 automatic picture(12) unaligned dcl 562 set ref 329* 330 334* 335 357* 358 pic12c based char(12) unaligned dcl 563 set ref 330* 335* 358* ptr_constant 000036 constant bit(72) initial dcl 1-16 ref 76 r 002350 automatic varying char(12) dcl 506 in procedure "tlz" set ref 502* 503 504 r 002302 automatic char(24) unaligned dcl 406 in procedure "dt" set ref 402* 403 403 403 r 002161 automatic bit(35) level 2 in structure "v" packed unaligned dcl 589 in procedure "gtss_attributes_mgr_" set ref 344* 437* 444 r1 based structure level 1 dcl 407 rc parameter fixed bin(35,0) dcl 58 set ref 54 67 78* 93* 103* 108* 123* 141* 143* 244* 249* 283* 384* 392* 460* 464* records_used 3(18) 000010 internal static bit(18) level 2 packed unaligned dcl 594 set ref 136 reverse builtin function dcl 564 ref 157 165 rtrim builtin function dcl 565 ref 172 256 259 368 368 search builtin function dcl 566 ref 157 165 439 set_entry 000100 automatic bit(1) unaligned dcl 59 set ref 63* 72* 83 107 141 184 221 248 458 set_sw based bit(1) array unaligned dcl 567 set ref 262 265* 307* 314 set_switch 100 based structure level 2 dcl 587 set ref 262 265 307 314 459 si 000010 internal static structure level 1 dcl 594 set ref 114 114 127 ss based bit(1) array unaligned dcl 492 ref 475 476 477 478 479 480 481 482 ssp 002340 automatic pointer dcl 493 set ref 459* 463* 475 476 477 478 479 480 481 482 substr builtin function dcl 568 ref 347 439 type 000010 internal static bit(2) level 2 packed unaligned dcl 594 set ref 129 v 002161 automatic structure level 1 packed unaligned dcl 589 set ref 347 441 va based bit(3) array unaligned dcl 569 set ref 347 441* verify builtin function dcl 570 ref 423 version based fixed bin(17,0) level 2 in structure "fv" dcl 587 in procedure "gtss_attributes_mgr_" set ref 84 92 466* version 002162 automatic fixed bin(17,0) level 2 in structure "gtss_file_values" dcl 2-56 in procedure "gtss_attributes_mgr_" set ref 84* vp parameter pointer dcl 60 set ref 54 62 67 76 76 84 85 86 87 222 223 255 395* yy 1(18) based char(2) level 2 packed unaligned dcl 407 ref 403 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. area_pointer automatic pointer dcl 3-2 db_ defined bit(1) unaligned dcl 4-32 db_CFP_input defined bit(1) unaligned dcl 4-32 db_abs defined bit(1) unaligned dcl 4-32 db_dq defined bit(1) unaligned dcl 4-32 db_drl_addmem defined bit(1) unaligned dcl 4-32 db_drl_callss defined bit(1) unaligned dcl 4-32 db_drl_defil defined bit(1) unaligned dcl 4-32 db_drl_dio defined bit(1) unaligned dcl 4-32 db_drl_filact defined bit(1) unaligned dcl 4-32 db_drl_filsp defined bit(1) unaligned dcl 4-32 db_drl_grow defined bit(1) unaligned dcl 4-32 db_drl_kin defined bit(1) unaligned dcl 4-32 db_drl_morlnk defined bit(1) unaligned dcl 4-32 db_drl_msub defined bit(1) unaligned dcl 4-32 db_drl_part defined bit(1) unaligned dcl 4-32 db_drl_retfil defined bit(1) unaligned dcl 4-32 db_drl_rew defined bit(1) unaligned dcl 4-32 db_drl_rstswh defined bit(1) unaligned dcl 4-32 db_drl_setswh defined bit(1) unaligned dcl 4-32 db_drl_switch defined bit(1) unaligned dcl 4-32 db_drl_t_cfio defined bit(1) unaligned dcl 4-32 db_expand_pathname defined bit(1) unaligned dcl 4-32 db_filact_funct02 defined bit(1) unaligned dcl 4-32 db_filact_funct03 defined bit(1) unaligned dcl 4-32 db_filact_funct04 defined bit(1) unaligned dcl 4-32 db_filact_funct05 defined bit(1) unaligned dcl 4-32 db_filact_funct10 defined bit(1) unaligned dcl 4-32 db_filact_funct11 defined bit(1) unaligned dcl 4-32 db_filact_funct14 defined bit(1) unaligned dcl 4-32 db_filact_funct18 defined bit(1) unaligned dcl 4-32 db_filact_funct19 defined bit(1) unaligned dcl 4-32 db_filact_funct21 defined bit(1) unaligned dcl 4-32 db_filact_funct22 defined bit(1) unaligned dcl 4-32 db_interp_prim defined bit(1) unaligned dcl 4-32 db_ios defined bit(1) unaligned dcl 4-32 db_mcfc defined bit(1) unaligned dcl 4-32 db_run_subsystem defined bit(1) unaligned dcl 4-32 debug_bit_names internal static structure array level 1 unaligned dcl 4-75 entry_names based char(32) array dcl 3-2 error_table_$duplicate_file_id external static fixed bin(35,0) dcl 539 file_ptr automatic pointer dcl 544 gtss_ext_$CFP_bits external static structure level 1 dcl 5-37 gtss_ext_$SYstarstar_file_no external static fixed bin(24,0) dcl 5-33 gtss_ext_$aem external static fixed bin(17,0) dcl 5-8 gtss_ext_$aft external static structure level 1 dcl 5-78 gtss_ext_$bad_drl_rtrn external static label variable dcl 5-9 gtss_ext_$com_reg external static structure level 1 dcl 5-45 gtss_ext_$deferred_catalogs_ptr external static pointer dcl 5-11 gtss_ext_$dispose_of_drl external static label variable dcl 5-12 gtss_ext_$drl_rtrn external static label variable array dcl 5-13 gtss_ext_$drm_path external static char(168) unaligned dcl 5-14 gtss_ext_$drun_jid external static char(5) unaligned dcl 5-15 gtss_ext_$event_channel external static fixed bin(71,0) dcl 5-16 gtss_ext_$fast_lib external static structure level 1 dcl 5-98 gtss_ext_$finished external static label variable dcl 5-17 gtss_ext_$flags external static structure level 1 dcl 5-60 gtss_ext_$gdb_name external static char(8) unaligned dcl 5-18 gtss_ext_$get_line external static entry variable dcl 5-19 gtss_ext_$gtss_slave_area_seg external static pointer array dcl 5-20 gtss_ext_$hcs_work_area_ptr external static pointer dcl 5-21 gtss_ext_$homedir external static char(64) unaligned dcl 5-22 gtss_ext_$last_k_was_out external static bit(1) dcl 5-23 gtss_ext_$mcfc external static structure level 1 dcl 5-109 gtss_ext_$pdir external static varying char(168) dcl 5-24 gtss_ext_$popup_from_pi external static label variable dcl 5-25 gtss_ext_$ppt external static pointer dcl 5-94 gtss_ext_$process_type external static fixed bin(17,0) dcl 5-26 gtss_ext_$put_chars external static entry variable dcl 5-27 gtss_ext_$restart_from_pi external static label variable dcl 5-28 gtss_ext_$restart_seg_ptr external static pointer dcl 5-29 gtss_ext_$sig_ptr external static pointer dcl 5-30 gtss_ext_$stack_level_ external static fixed bin(17,0) dcl 5-31 gtss_ext_$statistics external static structure level 1 dcl 5-72 gtss_ext_$suspended_process external static bit(1) unaligned dcl 5-32 gtss_ext_$user_id external static varying char(26) dcl 5-34 gtss_ext_$work_area_ptr external static pointer dcl 5-35 hcs_$initiate 000000 constant entry external dcl 548 info_ptr automatic pointer dcl 3-2 link based structure level 1 dcl 3-2 pathname based char dcl 3-2 NAMES DECLARED BY EXPLICIT CONTEXT. continue 000370 constant label dcl 74 set ref 64 do_set 001220 constant label dcl 254 set ref 107 dt 002303 constant entry internal dcl 398 ref 139 exit 002266 constant label dcl 394 ref 79 94 104 109 124 145 245 250 284 385 get 000340 constant entry external dcl 54 get_dec_value 002346 constant entry internal dcl 416 ref 201 205 223 226 230 get_oct_value 002416 constant entry internal dcl 429 ref 213 gtss_attributes_mgr_ 000275 constant entry external dcl 9 make_change 002125 constant label dcl 366 ref 326 331 336 341 349 354 359 363 name_case 000000 constant label array(0:3) dcl 102 ref 100 next 001177 constant label dcl 239 ref 158 166 177 181 182 198 202 206 210 214 218 232 237 next_change 002261 constant label dcl 388 ref 314 pr_vals 002503 constant entry internal dcl 454 ref 395 set 000356 constant entry external dcl 67 set_change 000014 constant label array(0:7) dcl 323 ref 321 set_mode 000004 constant label array(0:7) dcl 188 ref 186 tlz 003377 constant entry internal dcl 496 ref 330 335 358 yes_or_no 003445 constant entry internal dcl 509 ref 209 217 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 71 76 114 114 114 114 127 151 165 172 177 180 189 193 235 262 265 307 314 330 335 347 358 403 403 403 423 425 438 439 441 441 459 463 474 515 519 divide builtin function ref 136 183 fixed builtin function ref 99 136 150 347 425 470 471 hbound builtin function ref 313 lbound builtin function ref 313 ltrim builtin function ref 502 mod builtin function ref 182 357 null builtin function ref 76 90 526 545 554 pointer builtin function ref 151 string builtin function ref 152 180 243 262 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4332 4406 4134 4342 Length 4722 4134 54 300 175 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gtss_attributes_mgr_ 1586 external procedure is an external procedure. dt internal procedure shares stack frame of external procedure gtss_attributes_mgr_. get_dec_value internal procedure shares stack frame of external procedure gtss_attributes_mgr_. get_oct_value internal procedure shares stack frame of external procedure gtss_attributes_mgr_. pr_vals internal procedure shares stack frame of external procedure gtss_attributes_mgr_. tlz internal procedure shares stack frame of external procedure gtss_attributes_mgr_. yes_or_no internal procedure shares stack frame of external procedure gtss_attributes_mgr_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 si gtss_attributes_mgr_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gtss_attributes_mgr_ 000100 set_entry gtss_attributes_mgr_ 000102 anp gtss_attributes_mgr_ 000104 c gtss_attributes_mgr_ 000105 cn gtss_attributes_mgr_ 000116 code gtss_attributes_mgr_ 000117 current_number_allocations gtss_attributes_mgr_ 000120 El gtss_attributes_mgr_ 000121 en gtss_attributes_mgr_ 000132 fvp gtss_attributes_mgr_ 000134 have_attr gtss_attributes_mgr_ 000135 i gtss_attributes_mgr_ 000136 k gtss_attributes_mgr_ 000140 lvp gtss_attributes_mgr_ 000142 n gtss_attributes_mgr_ 000152 namei gtss_attributes_mgr_ 000162 names_area gtss_attributes_mgr_ 002132 name_index gtss_attributes_mgr_ 002142 new gtss_attributes_mgr_ 002153 Nl gtss_attributes_mgr_ 002154 nn gtss_attributes_mgr_ 002155 pic12 gtss_attributes_mgr_ 002160 Vl gtss_attributes_mgr_ 002161 v gtss_attributes_mgr_ 002162 gtss_file_values gtss_attributes_mgr_ 002302 r dt 002324 i get_oct_value 002325 j get_oct_value 002336 a pr_vals 002337 ones pr_vals 002340 ssp pr_vals 002350 r tlz THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_cs call_ext_out_desc return mod_fx1 mod_fx3 shorten_stack ext_entry set_cs_eis index_cs_eis search_eis any_to_any_tr divide_fx3 empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ date_time_$fstime hcs_$chname_file hcs_$status_long ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_entry_point_name error_table_$bad_ptr error_table_$badpath error_table_$not_seg_type error_table_$segnamedup error_table_$unimplemented_version gtss_ext_$db LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 526 000262 531 000264 545 000265 554 000266 557 000267 9 000274 51 000303 52 000333 54 000334 62 000346 63 000352 64 000353 67 000354 71 000364 72 000366 74 000370 76 000371 78 000404 79 000407 83 000410 84 000412 85 000415 86 000421 87 000424 90 000427 92 000432 93 000435 94 000440 97 000441 99 000444 100 000461 102 000462 103 000463 104 000466 106 000467 107 000470 108 000472 109 000475 111 000476 112 000477 114 000500 122 000542 123 000544 124 000546 127 000547 129 000553 130 000562 131 000564 132 000566 136 000574 138 000604 139 000606 141 000623 143 000632 145 000634 148 000635 150 000636 151 000642 152 000650 153 000652 156 000662 157 000670 158 000702 161 000703 162 000706 165 000711 166 000724 167 000725 168 000730 172 000733 177 000751 180 000757 181 000771 182 000772 183 000777 184 001002 186 001011 188 001013 189 001014 190 001022 191 001024 192 001027 193 001030 195 001034 196 001036 198 001041 200 001042 201 001043 202 001050 204 001051 205 001052 206 001057 208 001060 209 001061 210 001073 212 001074 213 001075 214 001107 216 001110 217 001111 218 001123 220 001124 221 001125 222 001127 223 001135 225 001143 226 001144 228 001151 229 001155 230 001156 232 001163 234 001164 235 001165 236 001173 237 001176 239 001177 241 001200 243 001202 244 001206 245 001212 248 001213 249 001215 250 001217 254 001220 255 001221 256 001225 259 001252 260 001273 262 001303 265 001306 266 001321 267 001324 268 001332 269 001336 270 001340 274 001345 275 001350 282 001405 283 001407 284 001411 288 001412 291 001416 293 001426 295 001434 297 001442 299 001452 301 001462 303 001472 305 001500 307 001511 310 001525 311 001534 313 001537 314 001543 315 001550 318 001563 319 001570 320 001604 321 001613 323 001614 324 001615 325 001630 326 001637 328 001640 329 001641 330 001650 331 001672 333 001673 334 001674 335 001703 336 001725 338 001726 339 001727 340 001745 341 001757 343 001760 344 001761 345 001766 346 001770 347 001775 348 002013 349 002015 351 002016 352 002017 353 002035 354 002047 356 002050 357 002051 358 002066 359 002110 361 002111 362 002112 363 002124 366 002125 368 002126 375 002212 377 002220 384 002255 385 002260 388 002261 390 002262 392 002264 394 002266 395 002267 396 002302 398 002303 402 002305 403 002322 416 002346 423 002350 424 002371 425 002375 429 002416 437 002420 438 002422 439 002431 440 002452 441 002462 442 002467 443 002471 444 002476 454 002503 491 002505 458 002507 459 002511 460 002515 461 002541 463 002542 464 002544 466 002570 467 002613 468 002640 469 002664 470 002710 471 002740 472 002771 473 003013 474 003014 475 003024 476 003055 477 003112 478 003147 479 003210 480 003242 481 003303 482 003337 483 003376 496 003377 502 003401 503 003423 504 003436 509 003445 515 003447 516 003460 517 003464 519 003471 521 003501 ----------------------------------------------------------- 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