COMPILATION LISTING OF SEGMENT rename Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/30/88 1301.8 mst Fri Options: optimize map 1 /****^ ************************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* * Copyright, (C) Massachusetts Institute of Technology, 1983 * 8* * * 9* ************************************************************** */ 10 11 12 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(88-09-20,TLNguyen), approve(88-09-20,MCR7976), 18* audit(88-09-28,Parisek), install(88-09-30,MR12.2-1123): 19* The rename command will print an appropriate error message when it 20* finds that 21* 1. The new name of a specified storage system entry is improperly 22* constructed without specifying the -name control argument. 23* 2. The returned code from XXX_$chname_file is non zero in value, 24* where XXX can be either installation_tool_, hcs_, or fs_util_ 25* END HISTORY COMMENTS */ 26 27 28 /* format: style4,ifthenstmt,ifthen,^indcomtxt,^indproc,initcol1,declareind8,dclind4,struclvlind1 */ 29 rename: 30 rn: 31 procedure () options (variable); 32 33 /* This module implements the rename, add_name and delete_name commands. 34* 35* Usage: 36* rename {-name} path1 {-name} name1 ... {-name} pathj {-name} namej 37* 38* where -name causes the following pathi or namei as a literal name 39* (for pathi, in the working directory) without applying the star or 40* equal conventions. 41* 42* add_name {-name} path {-name} name1 ... {-name} namej 43* 44* delete_name {-name} path1 ... {-name} pathj 45* 46* Written by Steve Herbst 12/09/76 */ 47 /* Cleanup handling and control arg processing fixed 10/25/79 S. Herbst */ 48 /* Made to work on mailboxes and queues 03/28/80 S. Herbst */ 49 /* Bug fixes on 06/30/80 by G. Palter */ 50 /* Fixed to not try to add the same name twice to the same seg 12/09/82 S. Herbst */ 51 /* modified for object_type_ convention 1/26/83 Jay Pattin */ 52 /* fixed -name, added l_rename and friends 2/27/83 Jay Pattin */ 53 /* 830924 object_type_ --> fs_util_ BIM */ 54 /* Modified 2/10/84 by C Spitzer. allow $, disallow ? in added or renamed names */ 55 /* Changed to allow -name before all args of all commands 03/27/84 S. Herbst */ 56 /* Modified 1984.08.27 by M. Pandolf to use pathname_ and report pathname when starname doesn't match */ 57 /* 850206 MSharpe to replace -fcnt with -inase/inaee */ 58 /* Fixed cleanup bug causing null ptr fault for "rn a b x.* y.=" 04/05/85 Steve Herbst */ 59 60 61 dcl 1 entries (ecount) aligned based (eptr), /* entry info from hcs_$star_ */ 62 2 type bit (2) unaligned, 63 2 nnames fixed bin (15) unaligned, 64 2 nindex fixed bin (17) unaligned; 65 66 dcl names (99) char (32) aligned based (nptr); /* names from hcs_$star_ */ 67 68 dcl 1 added_names aligned based (added_names_ptr), 69 2 (count, bound) fixed bin, 70 2 array (added_names_bound refer (added_names.bound)), 71 3 dn char (168), 72 3 match fixed bin, /* the number of the starname match from hcs_$star_ */ 73 3 name char (32); 74 75 dcl arg char (arg_len) based (arg_ptr); 76 dcl dn char (168); 77 dcl (command, en, name) char (32); 78 79 dcl (brief_sw, force_no_type, library_sw, literal_source, literal_target, stars) bit (1); 80 81 dcl area area based (area_ptr); 82 83 dcl area_ptr ptr int static init (null); 84 dcl (added_names_ptr, eptr, nptr) ptr init (null); 85 dcl arg_ptr ptr; 86 87 dcl (added_names_bound, arg_count, arg_len, ecount, i, k, match_index) fixed bin; 88 dcl code fixed bin (35); 89 90 dcl error_table_$bad_equal_name fixed bin (35) ext; 91 dcl error_table_$bad_file_name fixed bin (35) ext; 92 dcl error_table_$badopt fixed bin (35) ext; 93 dcl error_table_$entlong fixed bin (35) ext; 94 dcl error_table_$namedup fixed bin (35) ext; 95 dcl error_table_$noarg fixed binary (35) ext; 96 dcl error_table_$nomatch fixed binary (35) ext; 97 dcl error_table_$noentry fixed bin (35) ext; 98 dcl error_table_$nostars fixed bin (35) ext; 99 dcl error_table_$segnamedup fixed bin (35) ext; 100 101 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 102 dcl ( 103 active_fnc_err_, 104 com_err_, 105 com_err_$suppress_name 106 ) entry options (variable); 107 dcl cu_$af_return_arg entry (fixed bin, pointer, fixed bin (21), fixed bin (35)); 108 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 109 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 110 dcl get_equal_name_ entry (char (*), char (*), char (32), fixed bin (35)); 111 dcl get_system_free_area_ entry returns (ptr); 112 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 113 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 114 dcl installation_tools_$chname_file 115 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 116 dcl nd_handler_$switches entry (char (*), char (*), char (*), bit (36) aligned, fixed bin (35)); 117 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 118 dcl fs_util_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 119 120 dcl (index, length, null, string) builtin; 121 122 dcl (cleanup, linkage_error) condition; 123 124 command = "rename"; 125 library_sw = "0"b; 126 goto RENAME_COMMON; 127 128 l_rename: 129 lrename: 130 lren: 131 entry; 132 133 library_sw = "1"b; 134 command = "l_rename"; 135 136 RENAME_COMMON: 137 call cu_$af_return_arg (arg_count, (null ()), (0), code); 138 if code = 0 then do; 139 NOT_ACT_FNC: 140 call active_fnc_err_ (0, command, "This command cannot be invoked as an active function."); 141 return; 142 end; 143 144 if arg_count < 2 then do; 145 call com_err_$suppress_name (0, "rename", "Usage: ^a path1 name1 ... pathj namej {-control_args}", 146 command); 147 RETURN: 148 return; 149 end; 150 151 force_no_type = "0"b; 152 do i = 1 to arg_count; /* prescan for bad control arguments */ 153 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 154 if index (arg, "-") = 1 then 155 if (arg = "-name") | (arg = "-nm") then do; 156 i = i + 1; 157 if i > arg_count then do; 158 NO_NAME_VALUE: 159 call com_err_ (error_table_$noarg, command, "Value for -name"); 160 return; 161 end; 162 end; 163 else if ^library_sw & (arg = "-interpret_as_standard_entry" | arg = "-inase") 164 then force_no_type = "1"b; 165 166 else if (arg = "-interpret_as_extended_entry" | arg = "-inaee") 167 then force_no_type = "0"b; 168 169 else do; 170 call com_err_ (error_table_$badopt, command, """^a""", arg); 171 return; 172 end; 173 end; 174 175 on cleanup call clean_up; 176 177 call allocate_added_names; 178 179 do i = 1 by 2 to arg_count; 180 181 NEXT_ARG: 182 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 183 if arg = "-interpret_as_standard_entry" | arg = "-inase" 184 | arg = "-interpret_as_extended_entry" | arg = "-inaee" 185 then do; 186 i = i + 1; 187 if i > arg_count then return; 188 goto NEXT_ARG; 189 end; 190 if arg = "-name" | arg = "-nm" then do; 191 literal_source = "1"b; 192 i = i + 1; 193 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 194 end; 195 else literal_source = "0"b; 196 197 call get_path; 198 199 if code ^= 0 200 then if code = error_table_$nomatch 201 then call com_err_ (code, command, "For ^a.", pathname_ (dn, en)); 202 else call com_err_ (code, command, "^a", arg); 203 else do; 204 if (i + 1) > arg_count then do; 205 call com_err_ (error_table_$noarg, command, "New name for ^a.", pathname_ (dn, en)); 206 return; 207 end; 208 call cu_$arg_ptr (i + 1, arg_ptr, arg_len, (0)); 209 210 if arg = "-name" | arg = "-nm" then do; 211 literal_target = "1"b; 212 i = i + 1; 213 call cu_$arg_ptr (i + 1, arg_ptr, arg_len, (0)); 214 end; 215 else literal_target = "0"b; 216 217 call get_name; 218 219 if code ^= 0 then call com_err_ (code, command, "^a", arg); 220 221 else call change_names (en, name); 222 end; 223 224 call clean_up_stars (); 225 end; 226 227 return; 228 229 add_name: 230 addname: 231 an: 232 entry () options (variable); 233 234 command = "add_name"; 235 library_sw = "0"b; 236 goto ADDNAME_COMMON; 237 238 l_add_name: 239 laddname: 240 lan: 241 entry; 242 243 command = "l_add_name"; 244 library_sw = "1"b; 245 246 ADDNAME_COMMON: 247 call cu_$af_return_arg (arg_count, (null ()), (0), code); 248 if code = 0 then go to NOT_ACT_FNC; 249 250 if arg_count < 2 then do; 251 ADD_NAME_USAGE: 252 call com_err_$suppress_name (0, "", "Usage: ^a path names {-control_args}", command); 253 return; 254 end; 255 256 brief_sw, force_no_type = "0"b; 257 do i = 1 to arg_count; /* prescan for control arguments */ 258 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 259 if index (arg, "-") = 1 then do; 260 if arg = "-brief" | arg = "-bf" then brief_sw = "1"b; 261 else if arg = "-long" | arg = "-lg" then brief_sw = "0"b; 262 else if arg = "-name" | arg = "-nm" then do; 263 i = i + 1; 264 if i > arg_count then go to NO_NAME_VALUE; 265 end; 266 else if ^library_sw 267 & (arg = "-interpret_as_standard_entry" | arg = "-inase") 268 then force_no_type = "1"b; 269 else if arg = "-interpret_as_extended_entry" | arg = "-inaee" 270 then force_no_type = "0"b; 271 else do; 272 call com_err_ (error_table_$badopt, command, "^a", arg); 273 return; 274 end; 275 end; 276 end; 277 278 do i = 1 to arg_count; 279 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 280 if index (arg, "-") ^= 1 then do; 281 literal_source = "0"b; 282 go to FOUND_NAME; 283 end; 284 else if arg = "-name" | arg = "-nm" then do; 285 literal_source = "1"b; 286 i = i + 1; 287 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 288 go to FOUND_NAME; 289 end; 290 end; 291 go to ADD_NAME_USAGE; 292 293 FOUND_NAME: 294 on cleanup call clean_up; 295 296 call get_path; 297 298 if code ^= 0 then do; 299 call com_err_ (code, command, "^a", arg); 300 return; 301 end; 302 303 if i = arg_count then go to ADD_NAME_USAGE; /* no names to be added */ 304 305 call allocate_added_names; 306 307 do i = i + 1 to arg_count; 308 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 309 if index (arg, "-") ^= 1 then do; 310 literal_target = "0"b; 311 ADD_THE_NAME: 312 call get_name; 313 314 if code ^= 0 then call com_err_ (code, command, "^a", arg); 315 316 else call change_names ("", name); 317 end; 318 else if arg = "-name" | arg = "-nm" then do; 319 literal_target = "1"b; 320 i = i + 1; 321 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 322 go to ADD_THE_NAME; 323 end; 324 end; 325 326 call clean_up; 327 328 return; 329 330 delete_name: 331 deletename: 332 dn: 333 entry () options (variable); 334 335 command = "delete_name"; 336 library_sw = "0"b; 337 goto DELETE_NAME_COMMON; 338 339 l_delete_name: 340 ldeletename: 341 ldn: 342 entry; 343 344 command = "l_delete_name"; 345 library_sw = "1"b; 346 347 DELETE_NAME_COMMON: 348 call cu_$af_return_arg (arg_count, (null ()), (0), code); 349 if code = 0 then go to NOT_ACT_FNC; 350 351 if arg_count = 0 then do; 352 call com_err_$suppress_name (0, "", "Usage: ^a paths {-control_args}", command); 353 return; 354 end; 355 356 brief_sw, force_no_type = "0"b; 357 358 do i = 1 to arg_count; 359 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 360 if index (arg, "-") = 1 then do; 361 if arg = "-name" | arg = "-nm" then do; 362 i = i + 1; /* skip arg following -name */ 363 if i > arg_count then go to NO_NAME_VALUE; 364 end; 365 else if arg = "-brief" | arg = "-bf" then brief_sw = "1"b; 366 else if arg = "-long" | arg = "-lg" then brief_sw = "0"b; 367 else if ^library_sw 368 & (arg = "-interpret_as_standard_entry" | arg = "-inase") 369 then force_no_type = "1"b; 370 else if arg = "-interpret_as_extended_entry" | arg = "-inaee" 371 then force_no_type = "0"b; 372 373 else do; 374 call com_err_ (error_table_$badopt, command, "^a", arg); 375 return; 376 end; 377 end; 378 end; 379 380 on cleanup call clean_up; 381 382 do i = 1 to arg_count; 383 384 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 385 386 if index (arg, "-") ^= 1 then do; 387 literal_source = "0"b; 388 DELETE_THE_NAME: 389 call get_path; 390 391 if code ^= 0 then do; 392 if ^brief_sw | code ^= error_table_$nomatch then 393 call com_err_ (code, command, "^a", arg); 394 end; 395 396 else call change_names (en, ""); 397 398 call clean_up_stars (); 399 end; 400 else if arg = "-name" | arg = "-nm" then do; 401 literal_source = "1"b; 402 i = i + 1; 403 call cu_$arg_ptr (i, arg_ptr, arg_len, (0)); 404 go to DELETE_THE_NAME; 405 end; 406 end; 407 408 return; 409 410 get_path: 411 procedure (); 412 413 /* This internal procedure expands a pathname argument and applies the star convention. */ 414 415 code = 0; 416 417 if index (arg, "-") = 1 & ^literal_source then do; 418 call com_err_ (error_table_$badopt, command, "^a", arg); 419 go to RETURN; 420 end; 421 422 call expand_pathname_ (arg, dn, en, code); 423 if code ^= 0 then return; 424 425 if literal_source then do; 426 stars = "0"b; 427 return; 428 end; 429 430 if en ^= "" then call check_star_name_$entry (en, code); 431 if code = 0 then stars = "0"b; 432 else if code < 3 then do; /* star convention */ 433 stars = "1"b; 434 if area_ptr = null then area_ptr = get_system_free_area_ (); 435 436 call hcs_$star_ (dn, en, 3, area_ptr, ecount, eptr, nptr, code); 437 end; 438 439 end get_path; 440 441 get_name: 442 procedure (); 443 444 /* This internal procedure checks for a valid entryname and applies the equal convention. */ 445 446 dcl type fixed bin (2); 447 448 dcl check_star_name_ entry (char (*), bit (36) aligned, fixed bin (2), fixed bin (35)); 449 450 code = 0; 451 type = 0; 452 453 if arg_len > length (name) then do; 454 code = error_table_$entlong; 455 return; 456 end; 457 458 name = arg; 459 460 if literal_target then return; 461 462 if index (arg, "-") = 1 then do; 463 call com_err_ (error_table_$badopt, command, "^a", arg); 464 go to RETURN; 465 end; 466 467 call check_star_name_ (arg, (CHECK_STAR_IGNORE_EQUAL), type, code); 468 if code ^= 0 then do; 469 call com_err_ (code, command, "^a", arg); 470 goto RETURN; 471 end; 472 473 if type ^= 0 then do; 474 call com_err_ (error_table_$nostars, command, "^a", arg); 475 goto RETURN; 476 end; 477 478 479 call get_equal_name_ ("a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a", arg, "", code); 480 /* see if valid equal name */ 481 if code ^= error_table_$bad_equal_name then code = 0; /* might be valid */ 482 483 /* This call tests for syntax errors in the equal name, for example "a.===.b". 484* It is a preliminary test before we know which entry names match the starname en. 485* Therefore, the equal name is applied to a dummy containing the maximum number of 486* components (16) rather than the starname, which can have too few components 487* even though some matching entry names have enough components. */ 488 489 end get_name; 490 491 change_names: 492 procedure (P_old_name, P_equal_name); 493 494 /* This internal procedure calls its internal procedure change_name for each starname match. */ 495 496 dcl (P_old_name, P_equal_name) char (*); 497 dcl new_name char (32); 498 499 if ^stars then call change_name; 500 501 else do match_index = 1 to ecount; 502 503 do k = entries (match_index).nindex 504 to entries (match_index).nindex + entries (match_index).nnames - 1; 505 506 en = names (k); 507 508 call change_name; 509 end; 510 NEXT_STAR: 511 end; 512 513 change_name: 514 procedure (); 515 516 /* This internal procedure performs the name change for all three commands. */ 517 518 dcl i fixed bin; 519 520 if command = "delete_name" | command = "l_delete_name" then new_name = ""; 521 else do; 522 if literal_target then new_name = P_equal_name; /* if -name given, don't apply equals convention */ 523 else do; 524 call get_equal_name_ (en, P_equal_name, new_name, code); 525 if code ^= 0 then do; 526 call com_err_ (code, command, "^a for ^a", P_equal_name, en); 527 return; 528 end; 529 end; 530 if stars then do; 531 do i = added_names.count by -1 to 1 532 while (dn ^= added_names.dn (i) | match_index ^= added_names.match (i) 533 | new_name ^= added_names.name (i)); 534 end; 535 if i > 0 then /* already added this name to this segment */ 536 if command = "add_name" | command = "l_add_name" then return; 537 else new_name = ""; /* rename: just delete the name to rename */ 538 539 added_names.count = added_names.count + 1; 540 if added_names.count > added_names.bound then call grow_added_names; 541 added_names.dn (added_names.count) = dn; 542 added_names.match (added_names.count) = match_index; 543 added_names.name (added_names.count) = new_name; 544 end; 545 end; 546 547 TRY: 548 if library_sw then do; 549 on linkage_error begin; 550 call com_err_ (0, command, "The user lacks access to installation_tools_."); 551 goto RETURN; 552 end; 553 554 call installation_tools_$chname_file (dn, en, P_old_name, new_name, code); 555 revert linkage_error; 556 end; 557 else if force_no_type then call hcs_$chname_file (dn, en, P_old_name, new_name, code); 558 else call fs_util_$chname_file (dn, en, P_old_name, new_name, code); 559 560 if code ^= 0 then do; 561 if code = error_table_$namedup then do; 562 string (nd_handler_options) = ""b; 563 nd_handler_options.raw = force_no_type; 564 nd_handler_options.library = library_sw; 565 call nd_handler_$switches (command, dn, new_name, string (nd_handler_options), code); 566 if code = 0 then go to TRY; 567 end; 568 else if code = error_table_$segnamedup then 569 if brief_sw & command = "add_name" then; /* "an -bf" suppresses this message */ 570 else call com_err_ (code, command, "^a on ^a.", new_name, pathname_ (dn, en)); 571 else if code = error_table_$noentry & (command = "delete_name" | command = "l_delete_name") & 572 brief_sw then return; 573 else if code = error_table_$bad_file_name then 574 call com_err_ (code, command, "^a", new_name); 575 else do; 576 call com_err_ (code, command, "^a", pathname_ (dn, en)); 577 if command = "add_name" | command = "l_add_name" then 578 if stars then go to NEXT_STAR; 579 else go to RETURN; 580 end; 581 end; 582 583 end change_name; 584 585 end change_names; 586 587 allocate_added_names: 588 proc; 589 590 area_ptr = get_system_free_area_ (); 591 added_names_bound = 50; 592 593 allocate added_names in (area) set (added_names_ptr); 594 595 added_names.count = 0; 596 597 end allocate_added_names; 598 599 grow_added_names: 600 proc; 601 602 dcl old_ptr ptr; 603 dcl i fixed bin; 604 605 old_ptr = added_names_ptr; 606 added_names_bound = 2 * added_names_bound; 607 608 allocate added_names in (area) set (added_names_ptr); 609 610 added_names.count = old_ptr -> added_names.count; 611 do i = 1 to added_names.count; 612 added_names.array (i) = old_ptr -> added_names.array (i); 613 end; 614 615 free old_ptr -> added_names in (area); 616 617 end grow_added_names; 618 619 clean_up: 620 proc; 621 622 if eptr ^= null then free entries in (area); 623 if nptr ^= null then free names in (area); 624 if added_names_ptr ^= null then free added_names in (area); 625 626 end clean_up; 627 628 clean_up_stars: 629 proc; 630 631 if eptr ^= null then free entries in (area); 632 if nptr ^= null then free names in (area); 633 634 end clean_up_stars; 635 1 1 /* BEGIN: check_star_name.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-14,JSLove), approve(86-08-14,MCR7518), 1 5* audit(86-08-14,FCSmith), install(86-10-02,MR12.0-1174): 1 6* Created, to support check_star_name_ entrypoint. 1 7* 2) change(87-06-01,GDixon), approve(87-07-13,MCR7740), 1 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 9* Change structures and bit structures to be unaligned, to match the 1 10* check_star_name_ parameters to which such strings are passed. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* format: style3,comcol71,ifthenstmt,indcomtxt,indproc,idind30 */ 1 14 1 15 declare 1 check_star aligned based, 1 16 2 reject_wild bit (1) unaligned, 1 17 2 ignore_archive bit (1) unaligned, 1 18 2 process_archive bit (1) unaligned, 1 19 2 ignore_entrypoint bit (1) unaligned, 1 20 2 process_entrypoint bit (1) unaligned, 1 21 2 ignore_path bit (1) unaligned, 1 22 2 process_path bit (1) unaligned, 1 23 2 ignore_equal bit (1) unaligned, 1 24 2 ignore_length bit (1) unaligned, 1 25 2 ignore_nonascii bit (1) unaligned, 1 26 2 ignore_null bit (1) unaligned, 1 27 2 unimplemented bit (25) unaligned; 1 28 1 29 declare ( 1 30 CHECK_STAR_ENTRY_DEFAULT initial ("00010001000"b), /* Behavior of check_star_name_$entry (obsolete). */ 1 31 CHECK_STAR_IGNORE_ALL initial ("01010101111"b), /* Check for *** and classify only. */ 1 32 CHECK_STAR_IGNORE_ARCHIVE initial ("01000000000"b), /* Do not reject archive convention "::". */ 1 33 CHECK_STAR_IGNORE_ENTRYPOINT initial ("00010000000"b), /* Do not reject "$" or "|" characters. */ 1 34 CHECK_STAR_IGNORE_EQUAL initial ("00000001000"b), /* Do not reject "=" or "%" characters. */ 1 35 CHECK_STAR_IGNORE_LENGTH initial ("00000000100"b), /* Do not reject star names longer than 32 chars. */ 1 36 CHECK_STAR_IGNORE_NONASCII initial ("00000000010"b), /* No not reject star names with nonASCII chars. */ 1 37 CHECK_STAR_IGNORE_NULL initial ("00000000001"b), /* Do not reject names with null components. */ 1 38 CHECK_STAR_IGNORE_PATH initial ("00000100000"b), /* Do not reject "<" or ">" characters. */ 1 39 CHECK_STAR_PATH_DEFAULT initial ("00110011100"b), /* Behavior of check_star_name_$path (obsolete). */ 1 40 CHECK_STAR_PROCESS_ARCHIVE initial ("00100000000"b), /* Process "::" as archive delimiter. */ 1 41 CHECK_STAR_PROCESS_ENTRYPOINT initial ("00001000000"b), /* Ignore trailing entrypoint if present. */ 1 42 CHECK_STAR_PROCESS_PATH initial ("00000010000"b), /* Ignore leading directory path if present. */ 1 43 CHECK_STAR_REJECT_WILD initial ("10000000000"b), /* Return error_table_$nostars if type not zero. */ 1 44 CHECK_STAR_UNIMPLEMENTED initial ("001FFFFFF"b4) /* Nonexistent test flags. Reject them. */ 1 45 ) bit (36) static options (constant); 1 46 1 47 declare ( 1 48 STAR_TYPE_MATCHES_EVERYTHING initial (2), 1 49 STAR_TYPE_USE_MATCH_PROCEDURE initial (1), 1 50 STAR_TYPE_USE_PL1_COMPARE initial (0) 1 51 ) fixed bin (2) static options (constant); 1 52 1 53 /* END OF: check_star_name.incl.pl1 * * * * * */ 636 637 2 1 /* BEGIN INCLUDE FILE: nd_handler_options.incl.pl1 */ 2 2 2 3 /* This structure is used as the switches argument to nd_handler_$switches 2 4* 2 5* Jay Pattin 2/27/83 */ 2 6 2 7 declare 1 nd_handler_options, 2 8 2 force bit (1) unaligned, /* ON = delete without query if removing last name */ 2 9 2 delete bit (1) unaligned, /* ON = query to delete regardless of number of names */ 2 10 2 delete_force bit (1) unaligned, /* ON = always delete without query */ 2 11 2 raw bit (1) unaligned, /* ON = call hcs_, not object_type_ */ 2 12 2 library bit (1) unaligned, /* ON = call installation_tools_ for chname */ 2 13 2 mbz bit (31) unaligned; 2 14 2 15 /* END INCLUDE FILE: nd_handler_options.incl.pl1 */ 638 639 640 641 end rename; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/30/88 1301.8 rename.pl1 >spec>install>1123>rename.pl1 636 1 08/06/87 0913.4 check_star_name.incl.pl1 >ldd>include>check_star_name.incl.pl1 638 2 10/14/83 1606.7 nd_handler_options.incl.pl1 >ldd>include>nd_handler_options.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. CHECK_STAR_IGNORE_EQUAL constant bit(36) initial packed unaligned dcl 1-29 ref 467 P_equal_name parameter char packed unaligned dcl 496 set ref 491 522 524* 526* P_old_name parameter char packed unaligned dcl 496 set ref 491 554* 557* 558* active_fnc_err_ 000040 constant entry external dcl 102 ref 139 added_names based structure level 1 dcl 68 set ref 593 608 615 624 added_names_bound 000220 automatic fixed bin(17,0) dcl 87 set ref 591* 593 593 606* 606 608 608 added_names_ptr 000210 automatic pointer initial dcl 84 set ref 84* 531 531 531 531 539 539 540 540 541 541 542 542 543 543 593* 595 605 608* 610 611 612 624 624 area based area(1024) dcl 81 ref 593 608 615 622 623 624 631 632 area_ptr 000010 internal static pointer initial dcl 83 set ref 434 434* 436* 590* 593 608 615 622 623 624 631 632 arg based char packed unaligned dcl 75 set ref 154 154 154 163 163 166 166 170* 183 183 183 183 190 190 202* 210 210 219* 259 260 260 261 261 262 262 266 266 269 269 272* 280 284 284 299* 309 314* 318 318 360 361 361 365 365 366 366 367 367 370 370 374* 386 392* 400 400 417 418* 422* 458 462 463* 467* 469* 474* 479* arg_count 000221 automatic fixed bin(17,0) dcl 87 set ref 136* 144 152 157 179 187 204 246* 250 257 264 278 303 307 347* 351 358 363 382 arg_len 000222 automatic fixed bin(17,0) dcl 87 set ref 153* 154 154 154 163 163 166 166 170 170 181* 183 183 183 183 190 190 193* 202 202 208* 210 210 213* 219 219 258* 259 260 260 261 261 262 262 266 266 269 269 272 272 279* 280 284 284 287* 299 299 308* 309 314 314 318 318 321* 359* 360 361 361 365 365 366 366 367 367 370 370 374 374 384* 386 392 392 400 400 403* 417 418 418 422 422 453 458 462 463 463 467 467 469 469 474 474 479 479 arg_ptr 000216 automatic pointer dcl 85 set ref 153* 154 154 154 163 163 166 166 170 181* 183 183 183 183 190 190 193* 202 208* 210 210 213* 219 258* 259 260 260 261 261 262 262 266 266 269 269 272 279* 280 284 284 287* 299 308* 309 314 318 318 321* 359* 360 361 361 365 365 366 366 367 367 370 370 374 384* 386 392 400 400 403* 417 418 422 458 462 463 467 469 474 479 array 2 based structure array level 2 dcl 68 set ref 612* 612 bound 1 based fixed bin(17,0) level 2 dcl 68 set ref 540 593* 608* 615 624 brief_sw 000202 automatic bit(1) packed unaligned dcl 79 set ref 256* 260* 261* 356* 365* 366* 392 568 571 check_star_name_ 000074 constant entry external dcl 448 ref 467 check_star_name_$entry 000036 constant entry external dcl 101 ref 430 cleanup 000230 stack reference condition dcl 122 ref 175 293 380 code 000227 automatic fixed bin(35,0) dcl 88 set ref 136* 138 199 199 199* 202* 219 219* 246* 248 298 299* 314 314* 347* 349 391 392 392* 415* 422* 423 430* 431 432 436* 450* 454* 467* 468 469* 479* 481 481* 524* 525 526* 554* 557* 558* 560 561 565* 566 568 570* 571 573 573* 576* com_err_ 000042 constant entry external dcl 102 ref 158 170 199 202 205 219 272 299 314 374 392 418 463 469 474 526 550 570 573 576 com_err_$suppress_name 000044 constant entry external dcl 102 ref 145 251 352 command 000152 automatic char(32) packed unaligned dcl 77 set ref 124* 134* 139* 145* 158* 170* 199* 202* 205* 219* 234* 243* 251* 272* 299* 314* 335* 344* 352* 374* 392* 418* 463* 469* 474* 520 520 526* 535 535 550* 565* 568 570* 571 571 573* 576* 577 577 count based fixed bin(17,0) level 2 dcl 68 set ref 531 539* 539 540 541 542 543 595* 610* 610 611 cu_$af_return_arg 000046 constant entry external dcl 107 ref 136 246 347 cu_$arg_ptr 000050 constant entry external dcl 108 ref 153 181 193 208 213 258 279 287 308 321 359 384 403 dn 2 based char(168) array level 3 in structure "added_names" dcl 68 in procedure "rn" set ref 531 541* dn 000100 automatic char(168) packed unaligned dcl 76 in procedure "rn" set ref 199* 199* 205* 205* 422* 436* 531 541 554* 557* 558* 565* 570* 570* 576* 576* ecount 000223 automatic fixed bin(17,0) dcl 87 set ref 436* 501 622 631 en 000162 automatic char(32) packed unaligned dcl 77 set ref 199* 199* 205* 205* 221* 396* 422* 430 430* 436* 506* 524* 526* 554* 557* 558* 570* 570* 576* 576* entries based structure array level 1 dcl 61 ref 622 631 eptr 000212 automatic pointer initial dcl 84 set ref 84* 436* 503 503 503 622 622 631 631 error_table_$bad_equal_name 000012 external static fixed bin(35,0) dcl 90 ref 481 error_table_$bad_file_name 000014 external static fixed bin(35,0) dcl 91 ref 573 error_table_$badopt 000016 external static fixed bin(35,0) dcl 92 set ref 170* 272* 374* 418* 463* error_table_$entlong 000020 external static fixed bin(35,0) dcl 93 ref 454 error_table_$namedup 000022 external static fixed bin(35,0) dcl 94 ref 561 error_table_$noarg 000024 external static fixed bin(35,0) dcl 95 set ref 158* 205* error_table_$noentry 000030 external static fixed bin(35,0) dcl 97 ref 571 error_table_$nomatch 000026 external static fixed bin(35,0) dcl 96 ref 199 392 error_table_$nostars 000032 external static fixed bin(35,0) dcl 98 set ref 474* error_table_$segnamedup 000034 external static fixed bin(35,0) dcl 99 ref 568 expand_pathname_ 000052 constant entry external dcl 109 ref 422 force_no_type 000203 automatic bit(1) packed unaligned dcl 79 set ref 151* 163* 166* 256* 266* 269* 356* 367* 370* 557 563 fs_util_$chname_file 000072 constant entry external dcl 118 ref 558 get_equal_name_ 000054 constant entry external dcl 110 ref 479 524 get_system_free_area_ 000056 constant entry external dcl 111 ref 434 590 hcs_$chname_file 000060 constant entry external dcl 112 ref 557 hcs_$star_ 000062 constant entry external dcl 113 ref 436 i 000224 automatic fixed bin(17,0) dcl 87 in procedure "rn" set ref 152* 153* 156* 156 157* 179* 181* 186* 186 187 192* 192 193* 204 208 212* 212 213* 257* 258* 263* 263 264* 278* 279* 286* 286 287* 303 307* 307* 308* 320* 320 321* 358* 359* 362* 362 363* 382* 384* 402* 402 403* i 000100 automatic fixed bin(17,0) dcl 518 in procedure "change_name" set ref 531* 531 531 531* 535 i 000120 automatic fixed bin(17,0) dcl 603 in procedure "grow_added_names" set ref 611* 612 612* index builtin function dcl 120 ref 154 259 280 309 360 386 417 462 installation_tools_$chname_file 000064 constant entry external dcl 114 ref 554 k 000225 automatic fixed bin(17,0) dcl 87 set ref 503* 506* length builtin function dcl 120 ref 453 library 0(04) 000236 automatic bit(1) level 2 packed packed unaligned dcl 2-7 set ref 564* library_sw 000204 automatic bit(1) packed unaligned dcl 79 set ref 125* 133* 163 235* 244* 266 336* 345* 367 547 564 linkage_error 000000 stack reference condition dcl 122 ref 549 555 literal_source 000205 automatic bit(1) packed unaligned dcl 79 set ref 191* 195* 281* 285* 387* 401* 417 425 literal_target 000206 automatic bit(1) packed unaligned dcl 79 set ref 211* 215* 310* 319* 460 522 match 54 based fixed bin(17,0) array level 3 dcl 68 set ref 531 542* match_index 000226 automatic fixed bin(17,0) dcl 87 set ref 501* 503 503 503* 531 542 name 000172 automatic char(32) packed unaligned dcl 77 in procedure "rn" set ref 221* 316* 453 458* name 55 based char(32) array level 3 in structure "added_names" dcl 68 in procedure "rn" set ref 531 543* names based char(32) array dcl 66 ref 506 623 632 nd_handler_$switches 000066 constant entry external dcl 116 ref 565 nd_handler_options 000236 automatic structure level 1 packed packed unaligned dcl 2-7 set ref 562* 565 565 new_name 000272 automatic char(32) packed unaligned dcl 497 set ref 520* 522* 524* 531 537* 543 554* 557* 558* 565* 570* 573* nindex 0(18) based fixed bin(17,0) array level 2 packed packed unaligned dcl 61 ref 503 503 nnames 0(02) based fixed bin(15,0) array level 2 packed packed unaligned dcl 61 ref 503 nptr 000214 automatic pointer initial dcl 84 set ref 84* 436* 506 623 623 632 632 null builtin function dcl 120 ref 84 84 84 136 246 347 434 622 623 624 631 632 old_ptr 000116 automatic pointer dcl 602 set ref 605* 610 612 615 pathname_ 000070 constant entry external dcl 117 ref 199 199 205 205 570 570 576 576 raw 0(03) 000236 automatic bit(1) level 2 packed packed unaligned dcl 2-7 set ref 563* stars 000207 automatic bit(1) packed unaligned dcl 79 set ref 426* 431* 433* 499 530 577 string builtin function dcl 120 set ref 562* 565 565 type 000262 automatic fixed bin(2,0) dcl 446 set ref 451* 467* 473 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHECK_STAR_ENTRY_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ALL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_LENGTH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NONASCII internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_NULL internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_IGNORE_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PATH_DEFAULT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ARCHIVE internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_ENTRYPOINT internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_PROCESS_PATH internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_REJECT_WILD internal static bit(36) initial packed unaligned dcl 1-29 CHECK_STAR_UNIMPLEMENTED internal static bit(36) initial packed unaligned dcl 1-29 STAR_TYPE_MATCHES_EVERYTHING internal static fixed bin(2,0) initial dcl 1-47 STAR_TYPE_USE_MATCH_PROCEDURE internal static fixed bin(2,0) initial dcl 1-47 STAR_TYPE_USE_PL1_COMPARE internal static fixed bin(2,0) initial dcl 1-47 check_star based structure level 1 dcl 1-15 NAMES DECLARED BY EXPLICIT CONTEXT. ADDNAME_COMMON 001375 constant label dcl 246 ref 236 ADD_NAME_USAGE 001422 constant label dcl 251 ref 291 303 ADD_THE_NAME 002074 constant label dcl 311 ref 322 DELETE_NAME_COMMON 002300 constant label dcl 347 ref 337 DELETE_THE_NAME 002634 constant label dcl 388 ref 404 FOUND_NAME 001746 constant label dcl 293 ref 282 288 NEXT_ARG 000661 constant label dcl 181 ref 188 NEXT_STAR 003547 constant label dcl 510 ref 577 NOT_ACT_FNC 000351 constant label dcl 139 ref 248 349 NO_NAME_VALUE 000513 constant label dcl 158 ref 264 363 RENAME_COMMON 000327 constant label dcl 136 ref 126 RETURN 000435 constant label dcl 147 ref 419 464 470 475 551 579 TRY 004002 constant label dcl 547 ref 566 add_name 001326 constant entry external dcl 229 addname 001316 constant entry external dcl 229 allocate_added_names 004477 constant entry internal dcl 587 ref 177 305 an 001306 constant entry external dcl 229 change_name 003553 constant entry internal dcl 513 ref 499 508 change_names 003454 constant entry internal dcl 491 ref 221 316 396 clean_up 004604 constant entry internal dcl 619 ref 175 293 326 380 clean_up_stars 004643 constant entry internal dcl 628 ref 224 398 delete_name 002231 constant entry external dcl 330 deletename 002221 constant entry external dcl 330 dn 002211 constant entry external dcl 330 get_name 003176 constant entry internal dcl 441 ref 217 311 get_path 002752 constant entry internal dcl 410 ref 197 296 388 grow_added_names 004525 constant entry internal dcl 599 ref 540 l_add_name 001362 constant entry external dcl 238 l_delete_name 002265 constant entry external dcl 339 l_rename 000314 constant entry external dcl 128 laddname 001352 constant entry external dcl 238 lan 001342 constant entry external dcl 238 ldeletename 002255 constant entry external dcl 339 ldn 002245 constant entry external dcl 339 lren 000274 constant entry external dcl 128 lrename 000304 constant entry external dcl 128 rename 000260 constant entry external dcl 29 rn 000250 constant entry external dcl 29 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5350 5446 4661 5360 Length 6002 4661 76 320 467 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rn 420 external procedure is an external procedure. on unit on line 175 64 on unit on unit on line 293 64 on unit on unit on line 380 64 on unit get_path internal procedure shares stack frame of external procedure rn. get_name internal procedure shares stack frame of external procedure rn. change_names internal procedure shares stack frame of external procedure rn. change_name 166 internal procedure enables or reverts conditions. on unit on line 549 92 on unit allocate_added_names internal procedure shares stack frame of external procedure rn. grow_added_names internal procedure shares stack frame of internal procedure change_name. clean_up 64 internal procedure is called by several nonquick procedures. clean_up_stars internal procedure shares stack frame of external procedure rn. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 area_ptr rn STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME change_name 000100 i change_name 000116 old_ptr grow_added_names 000120 i grow_added_names rn 000100 dn rn 000152 command rn 000162 en rn 000172 name rn 000202 brief_sw rn 000203 force_no_type rn 000204 library_sw rn 000205 literal_source rn 000206 literal_target rn 000207 stars rn 000210 added_names_ptr rn 000212 eptr rn 000214 nptr rn 000216 arg_ptr rn 000220 added_names_bound rn 000221 arg_count rn 000222 arg_len rn 000223 ecount rn 000224 i rn 000225 k rn 000226 match_index rn 000227 code rn 000236 nd_handler_options rn 000262 type get_name 000272 new_name change_names THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op ext_entry int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_ check_star_name_$entry com_err_ com_err_$suppress_name cu_$af_return_arg cu_$arg_ptr expand_pathname_ fs_util_$chname_file get_equal_name_ get_system_free_area_ hcs_$chname_file hcs_$star_ installation_tools_$chname_file nd_handler_$switches pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_equal_name error_table_$bad_file_name error_table_$badopt error_table_$entlong error_table_$namedup error_table_$noarg error_table_$noentry error_table_$nomatch error_table_$nostars error_table_$segnamedup LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 84 000241 29 000247 124 000266 125 000271 126 000272 128 000273 133 000322 134 000324 136 000327 138 000347 139 000351 141 000376 144 000377 145 000402 147 000435 151 000436 152 000437 153 000445 154 000463 156 000507 157 000510 158 000513 160 000540 162 000541 163 000542 166 000557 170 000571 171 000623 173 000624 175 000626 177 000650 179 000651 181 000661 183 000677 186 000721 187 000722 188 000725 190 000726 191 000736 192 000740 193 000741 194 000757 195 000760 197 000761 199 000762 202 001036 204 001070 205 001074 206 001145 208 001146 210 001167 211 001201 212 001203 213 001204 214 001225 215 001226 217 001227 219 001230 221 001265 224 001300 225 001301 227 001304 229 001305 234 001334 235 001337 236 001340 238 001341 243 001370 244 001373 246 001375 248 001415 250 001417 251 001422 253 001453 256 001454 257 001456 258 001465 259 001503 260 001517 261 001532 262 001544 263 001554 264 001555 265 001560 266 001561 269 001576 272 001610 273 001642 276 001643 278 001645 279 001655 280 001673 281 001707 282 001710 284 001711 285 001721 286 001723 287 001724 288 001742 290 001743 291 001745 293 001746 296 001770 298 001771 299 001773 300 002025 303 002026 305 002031 307 002032 308 002041 309 002057 310 002073 311 002074 314 002075 316 002132 317 002146 318 002147 319 002157 320 002161 321 002162 322 002200 324 002201 326 002203 328 002207 330 002210 335 002237 336 002242 337 002243 339 002244 344 002273 345 002276 347 002300 349 002320 351 002322 352 002324 353 002355 356 002356 358 002360 359 002367 360 002405 361 002421 362 002431 363 002432 364 002435 365 002436 366 002451 367 002463 370 002500 374 002512 375 002544 378 002545 380 002547 382 002571 384 002601 386 002617 387 002633 388 002634 391 002635 392 002637 394 002676 396 002677 398 002713 399 002714 400 002715 401 002725 402 002727 403 002730 404 002746 406 002747 408 002751 410 002752 415 002753 417 002754 418 002772 419 003024 422 003025 423 003055 425 003060 426 003062 427 003063 430 003064 431 003105 432 003111 433 003113 434 003115 436 003130 439 003175 441 003176 450 003177 451 003200 453 003201 454 003204 455 003207 458 003210 460 003214 462 003217 463 003231 464 003263 467 003264 468 003316 469 003320 470 003352 473 003353 474 003355 475 003407 479 003410 481 003446 489 003453 491 003454 499 003472 501 003501 503 003511 506 003533 508 003541 509 003545 510 003547 585 003551 513 003552 520 003560 522 003575 524 003606 525 003633 526 003636 527 003675 530 003676 531 003700 534 003730 535 003733 537 003746 539 003751 540 003753 541 003760 542 003770 543 003774 547 004002 549 004005 550 004021 551 004047 554 004052 555 004105 556 004106 557 004107 558 004144 560 004176 561 004201 562 004204 563 004205 564 004212 565 004217 566 004250 567 004253 568 004254 570 004265 571 004342 573 004356 576 004406 577 004455 579 004473 583 004476 587 004477 590 004500 591 004507 593 004511 595 004523 597 004524 599 004525 605 004526 606 004531 608 004535 610 004551 611 004553 612 004561 613 004572 615 004574 617 004602 619 004603 622 004611 623 004620 624 004627 626 004642 628 004643 631 004644 632 004652 634 004660 ----------------------------------------------------------- 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