COMPILATION LISTING OF SEGMENT bj_mgr_call Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0930.5 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION 8* bj_mgr_call - command/active function interface to selected 9* before_journal_manager_ entrypoints. 10* 11* Usage: 12* bjmc OPERATION {ARGS} 13* where: 14* OPERATION can be create, open, close, opened, closed, 15* set_default_journal, or get_default_journal. 16* 17* ARGS are specific for each operation. 18**/ 19 20 /* HISTORY: 21*Written by M. Pandolf, 12/??/83. 22*Modified: 23*10/22/84 by M.Sharpe: to correct format, to correct calling sequence 24* to any_err_, to pass standard error codes to com_err_. 25*03/19/85 by Lindsey L. Spratt: Added the -transaction_storage_limit (-tsl) 26* option to the create operation. Added the 27* set_transaction_storage_limit operation. 28*03/20/85 by Lindsey L. Spratt: Added a dm_not_available_ handler. 29*03/26/85 by Lindsey Spratt: Fixed the syntax for the stsl keyword so that the 30* transaction storage limit must be specified via 31* -transaction_storage_limit (-tsl). 32*03/27/85 by Lee A. Newcomb: Renamed the set_transaction_storage_limit 33* operation to set_attribute as per the amended MCR7217. 34**/ 35 36 /* format: style2,ind3 */ 37 38 bj_mgr_call: 39 bjmc: 40 procedure () options (variable); 41 42 /* DECLARATIONS */ 43 44 /* Automatic */ 45 46 dcl a_path fixed bin; 47 dcl arg_list_ptr pointer; 48 dcl argl fixed bin (21); 49 dcl argno fixed bin; 50 dcl argp pointer; 51 dcl bj_ci_no fixed bin; 52 dcl bj_ci_size fixed bin; 53 dcl bj_oid bit (36) aligned; 54 dcl code fixed bin (35); 55 dcl creation_looks_reasonable 56 bit (1) aligned; 57 dcl i_am_an_active_function 58 bit (1) aligned; 59 dcl nargs fixed bin; 60 dcl rsp pointer; 61 dcl rsl fixed bin (21); 62 dcl transaction_storage_limit 63 fixed bin (35) init (UNSET_STORAGE_LIMIT); 64 65 /* Based */ 66 67 dcl arg char (argl) based (argp); 68 dcl return_string char (rsl) varying based (rsp); 69 70 /* Builtin */ 71 72 dcl substr builtin; 73 74 /* Entry */ 75 76 dcl active_fnc_err_ entry options (variable); 77 dcl any_err_ entry () variable options (variable); 78 dcl before_journal_manager_$open_bj 79 entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 80 dcl before_journal_manager_$create_bj 81 entry (char (*), char (*), fixed bin, fixed bin, fixed bin (35)); 82 dcl before_journal_manager_$close_bj 83 entry (bit (36) aligned, fixed bin (35)); 84 dcl before_journal_manager_$delete_bj 85 entry (char (*), char (*), fixed bin (35)); 86 dcl before_journal_manager_$get_default_bj 87 entry (bit (36) aligned, fixed bin (35)); 88 dcl before_journal_manager_$set_default_bj 89 entry (bit (36) aligned, fixed bin (35)); 90 dcl before_journal_manager_$get_bj_path_from_oid 91 entry (bit (36) aligned, char (*), char (*), fixed bin (35)); 92 dcl before_journal_manager_$get_bj_oid 93 entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 94 dcl before_journal_manager_$set_transaction_storage_limit 95 entry (char (*), char (*), fixed bin (35), fixed bin (35)); 96 97 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 98 dcl com_err_ entry () options (variable); 99 dcl cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 100 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin (35)); 101 dcl cu_$arg_list_ptr entry (ptr); 102 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 103 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 104 dcl expand_pathname_$add_suffix 105 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 106 dcl ioa_ entry () options (variable); 107 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, 108 bit (1) aligned); 109 dcl ioa_$rsnnl entry () options (variable); 110 dcl nd_handler_ entry (char (*), char (*), char (*), fixed bin (35)); 111 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 112 113 /* External Static */ 114 115 dcl dm_error_$bj_journal_not_opened 116 fixed bin (35) ext static; 117 dcl dm_error_$file_already_exists 118 fixed bin (35) ext static; 119 dcl dm_error_$system_not_initialized 120 fixed bin (35) ext static; 121 dcl error_table_$not_act_fnc 122 fixed bin (35) ext static; 123 dcl error_table_$active_function 124 fixed bin (35) ext static; 125 dcl error_table_$bad_arg fixed bin (35) ext static; 126 dcl error_table_$badcall fixed bin (35) ext static; 127 dcl error_table_$noarg fixed bin (35) ext static; 128 dcl error_table_$nostars fixed bin (35) ext static; 129 dcl error_table_$action_not_performed 130 fixed bin (35) ext static; 131 dcl error_table_$notadir fixed bin (35) ext static; 132 133 /* Condition */ 134 135 dcl dm_not_available_ condition; 136 137 /* Constant */ 138 139 dcl UNSET_STORAGE_LIMIT init (-1) fixed bin (35) internal static options (constant); 140 dcl ME char (32) internal static options (constant) init ("bj_mgr_call"); 141 dcl DEFAULT_BJ_CI_NO fixed bin internal static options (constant) init (64); 142 dcl DEFAULT_BJ_CI_SIZE fixed bin internal static options (constant) init (4096); 143 dcl ( 144 NO_PAD init ("0"b), 145 NO_NL init ("0"b) 146 ) bit (1) aligned internal static options (constant); 147 148 /* END OF DECLARATIONS */ 149 150 /* how were we called? */ 151 152 call cu_$af_return_arg (nargs, rsp, rsl, code); 153 if code = error_table_$not_act_fnc 154 then 155 do; /* COMMAND call */ 156 i_am_an_active_function = "0"b; 157 any_err_ = com_err_; 158 end; 159 else if code ^= 0 160 then 161 do; /* faulty call */ 162 call com_err_ (code, ME); 163 return; 164 end; 165 else 166 do; /* AF call */ 167 i_am_an_active_function = "1"b; 168 any_err_ = active_fnc_err_; 169 end; 170 171 /* is the operation specified? */ 172 173 if nargs = 0 174 then 175 do; 176 call any_err_ (error_table_$noarg, ME, "^/Usage is: bjmc OPERATION {ARGS}."); 177 return; 178 end; 179 180 call cu_$arg_list_ptr (arg_list_ptr); /* needed by the following begin block */ 181 182 /* the following begin block contains the list of before journal pathnames */ 183 184 the_real_work: 185 begin; 186 187 dcl bj_dir dim (nargs) char (168), 188 bj_entry dim (nargs) char (32), 189 path_count fixed bin; 190 191 /* initialize our automatic */ 192 193 bj_dir (*) = ""; 194 bj_entry (*) = ""; 195 path_count = 0; 196 197 on dm_not_available_ call ERROR_RETURN (dm_error_$system_not_initialized); 198 199 200 /* figure out why we're here */ 201 202 call cu_$arg_ptr_rel (1, argp, argl, code, arg_list_ptr); 203 204 if arg = "create" | arg = "cr" 205 then call CREATE (); 206 else if arg = "open" | arg = "o" 207 then call OPEN (); 208 else if arg = "close" | arg = "cl" 209 then call CLOSE (); 210 else if arg = "opened" 211 then call OPENED (); 212 else if arg = "closed" 213 then call CLOSED (); 214 else if arg = "set_default_journal" | arg = "sdp" 215 then call SET_DEFAULT_PATH (); 216 else if arg = "get_default_journal" | arg = "gdp" 217 then call GET_DEFAULT_PATH (); 218 else if arg = "set_attribute" | arg = "sattr" 219 then call SET_ATTRIBUTE (); 220 else call ERROR_RETURN (error_table_$bad_arg, "^a.^/Allowed operations are: create, open, close, opened, closed, 221 set_default_journal, get_default_journal, set_transaction_storage_limit.", arg); 222 MAIN_RETURN: 223 return; 224 225 /* end of begin block's processing. internal support procedures follow */ 226 227 228 /* INTERNAL PROCEDURES */ 229 230 ERROR_RETURN: 231 proc () options (variable); 232 dcl er_p_code_ptr ptr init (null ()); 233 dcl er_p_code based (er_p_code_ptr) fixed bin (35); 234 dcl er_arg_list_ptr ptr init (null); 235 dcl er_code fixed bin (35); 236 dcl er_msg char (1024); 237 dcl er_based_msg char (er_msg_length) based (addr (er_msg)); 238 dcl er_msg_length fixed bin (21) init (0); 239 240 dcl er_nargs fixed bin; 241 242 call cu_$arg_list_ptr (er_arg_list_ptr); 243 call cu_$arg_count_rel (er_nargs, er_arg_list_ptr, (0)); 244 if er_nargs = 0 245 then er_code = 0; 246 else 247 do; 248 call cu_$arg_ptr_rel (1, er_p_code_ptr, (0), (0), er_arg_list_ptr); 249 er_code = er_p_code; 250 end; 251 if er_nargs >= 2 252 then call ioa_$general_rs (er_arg_list_ptr, 2, 3, er_msg, er_msg_length, NO_PAD, NO_NL); 253 254 call any_err_ (er_code, ME, "^a", er_based_msg); 255 goto MAIN_RETURN; 256 257 end ERROR_RETURN; 258 259 CREATE: 260 procedure (); 261 262 if i_am_an_active_function 263 then return_string = "true"; 264 265 if nargs = 1 266 then call ERROR_RETURN (error_table_$noarg, 267 "^/Usage is: bjmc create JOURNAL_PATH {-length NUMBER_OF_CI|-transaction_storage_limit N_BYTES}"); 268 269 /* set defaults */ 270 271 bj_ci_no = DEFAULT_BJ_CI_NO; 272 bj_ci_size = DEFAULT_BJ_CI_SIZE; 273 274 /* process the args */ 275 276 argno = 2; 277 processing_of_create_args: 278 do while (argno <= nargs); 279 280 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 281 282 if argl = 0 283 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 284 285 if arg = "-length" | arg = "-ln" 286 then 287 do; 288 argno = argno + 1; 289 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 290 if code ^= 0 291 then call ERROR_RETURN (code, "^/""-length"" requires a number (of control intervals)."); 292 293 bj_ci_no = cv_dec_check_ (arg, code); 294 295 if code ^= 0 296 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is not numeric.", arg); 297 298 end; 299 else if arg = "-pathname" | arg = "-pn" 300 then 301 do; 302 argno = argno + 1; 303 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 304 if code ^= 0 305 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 306 307 call GET_PATH_FROM_ARG (); 308 end; 309 else if arg = "-transaction_storage_limit" | arg = "-tsl" 310 then 311 do; 312 argno = argno + 1; 313 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 314 if code ^= 0 315 then call ERROR_RETURN (code, 316 "^/""-transaction_storage_limit"" requires an argument specifying the number^/of bytes for the limit." 317 ); 318 319 transaction_storage_limit = cv_dec_check_ (arg, code); 320 if code ^= 0 321 then call ERROR_RETURN (error_table_$bad_arg, 322 "^/Unable to convert ^a to the number of bytes for the^/transaction storage limit.", arg); 323 end; 324 else if substr (arg, 1, 1) = "-" 325 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 326 327 else call GET_PATH_FROM_ARG (); 328 329 argno = argno + 1; 330 end processing_of_create_args; 331 332 /* anything to create? */ 333 334 if path_count = 0 /* nope... */ 335 then call ERROR_RETURN (error_table_$noarg, "^/The name of a journal is required."); 336 337 338 /* create the before journals */ 339 340 creating_the_journals: 341 do a_path = 1 to path_count while (code = 0); 342 creation_looks_reasonable = "1"b; 343 creating_one_journal: 344 do while (creation_looks_reasonable); 345 call before_journal_manager_$create_bj (bj_dir (a_path), bj_entry (a_path), bj_ci_no, bj_ci_size, code); 346 if code = dm_error_$file_already_exists | code = error_table_$notadir 347 then 348 do; 349 call nd_handler_ (ME, bj_dir (a_path), bj_entry (a_path), code); 350 if code ^= 0 351 then creation_looks_reasonable = "0"b; 352 if code = error_table_$action_not_performed 353 then code = 0; 354 end; 355 else creation_looks_reasonable = "0"b; 356 end creating_one_journal; 357 358 if code ^= 0 359 then if i_am_an_active_function 360 then return_string = "false"; 361 else call any_err_ (code, ME, "^/Creating ^a.", pathname_ (bj_dir (a_path), bj_entry (a_path))); 362 else if transaction_storage_limit ^= UNSET_STORAGE_LIMIT 363 then 364 do; 365 call before_journal_manager_$set_transaction_storage_limit (bj_dir (a_path), bj_entry (a_path), 366 transaction_storage_limit, code); 367 if code ^= 0 368 then call any_err_ (code, ME, "^/Unable to set the transaction_storage_limit for ^a.", 369 pathname_ (bj_dir (a_path), bj_entry (a_path))); 370 end; 371 372 end creating_the_journals; 373 374 /* finished with the create operation */ 375 376 return; 377 378 end CREATE; 379 380 OPEN: 381 procedure (); 382 383 if i_am_an_active_function 384 then return_string = "true"; 385 386 if nargs = 1 387 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: bjmc open JOURNAL_PATHS"); 388 389 390 /* process the args */ 391 392 argno = 2; 393 processing_of_open_args: 394 do while (argno <= nargs); 395 396 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 397 398 if argl = 0 399 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 400 401 if arg = "-pathname" | arg = "-pn" 402 then 403 do; 404 argno = argno + 1; 405 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 406 if code ^= 0 407 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 408 409 call GET_PATH_FROM_ARG (); 410 end; 411 else if substr (arg, 1, 1) = "-" 412 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 413 else call GET_PATH_FROM_ARG (); 414 argno = argno + 1; 415 end processing_of_open_args; 416 417 /* anything to open? */ 418 419 if path_count = 0 420 then call ERROR_RETURN (error_table_$noarg, "^/The name of a journal is required."); 421 422 /* open the before journals */ 423 424 opening_the_journals: 425 do a_path = 1 to path_count; 426 call before_journal_manager_$open_bj (bj_dir (a_path), bj_entry (a_path), bj_oid, code); 427 if code ^= 0 428 then if i_am_an_active_function 429 then return_string = "false"; 430 else call any_err_ (code, ME, "^/Attempting to open journal ^a.", 431 pathname_ (bj_dir (a_path), bj_entry (a_path))); 432 end opening_the_journals; 433 434 /* finished with the open operation */ 435 436 return; 437 end OPEN; 438 439 CLOSE: 440 procedure (); 441 442 if i_am_an_active_function 443 then return_string = "true"; 444 445 if nargs = 1 446 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: bjmc close JOURNAL_PATHS"); 447 448 /* process the args */ 449 450 argno = 2; 451 processing_of_close_args: 452 do while (argno <= nargs); 453 454 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 455 456 if argl = 0 457 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 458 459 if arg = "-pathname" | arg = "-pn" 460 then 461 do; 462 argno = argno + 1; 463 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 464 if code ^= 0 465 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 466 467 call GET_PATH_FROM_ARG (); 468 end; 469 else if substr (arg, 1, 1) = "-" 470 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 471 else call GET_PATH_FROM_ARG (); 472 argno = argno + 1; 473 end processing_of_close_args; 474 475 /* anything to close? */ 476 477 if path_count = 0 478 then call ERROR_RETURN (error_table_$noarg, "^/The name of a journal is required."); 479 480 /* close the before journals */ 481 482 closing_the_journals: 483 do a_path = 1 to path_count; 484 call before_journal_manager_$get_bj_oid (bj_dir (a_path), bj_entry (a_path), bj_oid, code); 485 if code ^= 0 486 then call any_err_ (code, ME, "^/Attempting to close journal ^a.", 487 pathname_ (bj_dir (a_path), bj_entry (a_path))); 488 else 489 do; 490 call before_journal_manager_$close_bj (bj_oid, code); 491 if code ^= 0 492 then if i_am_an_active_function 493 then return_string = "false"; 494 else call any_err_ (code, ME, "^/Attempting to close journal ^a.", 495 pathname_ (bj_dir (a_path), bj_entry (a_path))); 496 end; 497 end closing_the_journals; 498 499 /* finished with the close operation */ 500 501 return; 502 503 end CLOSE; 504 505 OPENED: 506 procedure (); 507 508 if nargs = 1 509 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: ^[[^]bjmc opened JOURNAL_PATHS^[]^]", 510 i_am_an_active_function, i_am_an_active_function); 511 512 /* process the args */ 513 514 argno = 2; 515 processing_of_opened_args: 516 do while (argno <= nargs); 517 518 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 519 520 if argl = 0 521 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 522 523 if arg = "-pathname" | arg = "-pn" 524 then 525 do; 526 argno = argno + 1; 527 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 528 if code ^= 0 529 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 530 531 call GET_PATH_FROM_ARG (); 532 end; 533 else if substr (arg, 1, 1) = "-" 534 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 535 else call GET_PATH_FROM_ARG (); 536 argno = argno + 1; 537 end processing_of_opened_args; 538 539 /* allow only one query */ 540 541 if path_count ^= 1 542 then call ERROR_RETURN (error_table_$badcall, "Usage is: ^[[^]bjmc opened JOURNAL_PATH^[]^]", 543 i_am_an_active_function, i_am_an_active_function); 544 545 /* check the before journal */ 546 547 call before_journal_manager_$get_bj_oid (bj_dir (1), bj_entry (1), bj_oid, code); 548 549 if i_am_an_active_function 550 then if code = 0 551 then return_string = "true"; 552 else if code = dm_error_$bj_journal_not_opened 553 then return_string = "false"; 554 else call ERROR_RETURN (code, "^/Referencing ^a.", pathname_ (bj_dir (1), bj_entry (1))); 555 else if code = 0 556 then call ioa_ ("true"); 557 else if code = dm_error_$bj_journal_not_opened 558 then call ioa_ ("false"); 559 else call ERROR_RETURN (code, "^/Referencing ^a.", pathname_ (bj_dir (1), bj_entry (1))); 560 561 562 /* finished with the opened operation */ 563 564 return; 565 566 end OPENED; 567 568 CLOSED: 569 procedure (); 570 571 if nargs = 1 572 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: ^[[^]bjmc closed JOURNAL_PATHS^[]^]", 573 i_am_an_active_function, i_am_an_active_function); 574 575 /* process the args */ 576 577 argno = 2; 578 processing_of_closed_args: 579 do while (argno <= nargs); 580 581 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 582 583 if argl = 0 584 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 585 586 if arg = "-pathname" | arg = "-pn" 587 then 588 do; 589 argno = argno + 1; 590 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 591 if code ^= 0 592 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 593 594 call GET_PATH_FROM_ARG (); 595 end; 596 else if substr (arg, 1, 1) = "-" 597 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 598 else call GET_PATH_FROM_ARG (); 599 argno = argno + 1; 600 end processing_of_closed_args; 601 602 /* allow only one query */ 603 604 if path_count ^= 1 605 then call ERROR_RETURN (error_table_$badcall, "Usage is: ^[[^]bjmc closed JOURNAL_PATH^[]^]", 606 i_am_an_active_function, i_am_an_active_function); 607 608 /* check the before journal */ 609 610 call before_journal_manager_$get_bj_oid (bj_dir (1), bj_entry (1), bj_oid, code); 611 612 if i_am_an_active_function 613 then if code = 0 614 then return_string = "false"; 615 else if code = dm_error_$bj_journal_not_opened 616 then return_string = "true"; 617 else call ERROR_RETURN (code, "^/Referencing ^a.", pathname_ (bj_dir (1), bj_entry (1))); 618 else if code = 0 619 then call ioa_ ("false"); 620 else if code = dm_error_$bj_journal_not_opened 621 then call ioa_ ("true"); 622 else call ERROR_RETURN (code, "^/Referencing ^a.", pathname_ (bj_dir (1), bj_entry (1))); 623 624 625 /* finished with the closed operation */ 626 627 return; 628 629 end CLOSED; 630 631 SET_DEFAULT_PATH: 632 procedure (); 633 634 if i_am_an_active_function 635 then return_string = "true"; 636 637 if nargs = 1 638 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: bjmc set_default_journal JOURNAL_PATH"); 639 640 /* process the args */ 641 642 argno = 2; 643 processing_of_set_default_path_args: 644 do while (argno <= nargs); 645 646 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 647 648 if argl = 0 649 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 650 651 if arg = "-pathname" | arg = "-pn" 652 then 653 do; 654 argno = argno + 1; 655 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 656 if code ^= 0 657 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 658 659 call GET_PATH_FROM_ARG (); 660 end; 661 else if substr (arg, 1, 1) = "-" 662 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 663 else call GET_PATH_FROM_ARG (); 664 argno = argno + 1; 665 end processing_of_set_default_path_args; 666 667 /* allow only one query */ 668 669 if path_count ^= 1 670 then call ERROR_RETURN (error_table_$badcall, "Usage is: bjmc set_default_journal JOURNAL_PATH"); 671 672 /* see that the journal is opened */ 673 674 call before_journal_manager_$get_bj_oid (bj_dir (1), bj_entry (1), bj_oid, code); 675 if code ^= 0 676 then call ERROR_RETURN (code, "^/Unable to set default before journal path to ^a.", 677 pathname_ (bj_dir (1), bj_entry (1))); 678 679 /* set the default path */ 680 681 call before_journal_manager_$set_default_bj (bj_oid, code); 682 if code ^= 0 683 then if i_am_an_active_function 684 then return_string = "false"; 685 else call ERROR_RETURN (code, "^/Unable to set default before journal path to ^a.", 686 pathname_ (bj_dir (1), bj_entry (1))); 687 688 return; 689 690 end SET_DEFAULT_PATH; 691 692 GET_DEFAULT_PATH: 693 procedure (); 694 695 if nargs > 1 696 then call ERROR_RETURN (error_table_$badcall, "Usage is: ^[[^]bjmc get_default_journal^[]^]", 697 i_am_an_active_function, i_am_an_active_function); 698 699 /* get the bj_oid that is the default at this moment */ 700 701 call before_journal_manager_$get_default_bj (bj_oid, code); 702 if code ^= 0 703 then call ERROR_RETURN (code); 704 705 /* the bj_oid does very little for the user... give the pathname */ 706 707 call before_journal_manager_$get_bj_path_from_oid (bj_oid, bj_dir (1), bj_entry (1), code); 708 709 if i_am_an_active_function 710 then if code = 0 711 then call ioa_$rsnnl ("^a", return_string, rsl, pathname_ (bj_dir (1), bj_entry (1))); 712 else call ERROR_RETURN (code); 713 else if code = 0 714 then call ioa_ ("^a", pathname_ (bj_dir (1), bj_entry (1))); 715 else call ERROR_RETURN (code); 716 717 return; 718 719 end GET_DEFAULT_PATH; 720 721 SET_ATTRIBUTE: 722 procedure (); 723 724 if i_am_an_active_function 725 then return_string = "true"; 726 727 if nargs = 1 728 then call ERROR_RETURN (error_table_$noarg, "^/Usage is: bjmc sattr JOURNAL_PATHS -control_arg"); 729 730 /* process the args */ 731 732 argno = 2; 733 processing_of_set_attribute_args: 734 do while (argno <= nargs); 735 736 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 737 738 if argl = 0 739 then call ERROR_RETURN (error_table_$bad_arg, "Null argument found in argument list."); 740 741 if arg = "-pathname" | arg = "-pn" 742 then 743 do; 744 argno = argno + 1; 745 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 746 if code ^= 0 747 then call ERROR_RETURN (code, "^/""-pathname"" requires a path name."); 748 749 call GET_PATH_FROM_ARG (); 750 end; 751 else if arg = "-transaction_storage_limit" | arg = "-tsl" 752 then 753 do; 754 argno = argno + 1; 755 call cu_$arg_ptr_rel (argno, argp, argl, code, arg_list_ptr); 756 if code ^= 0 757 then call ERROR_RETURN (code, "^/""-transaction_storage_limit"" requires an integer argument."); 758 transaction_storage_limit = cv_dec_check_ (arg, code); 759 if code ^= 0 760 then call ERROR_RETURN (error_table_$bad_arg, 761 "^/Unable to convert the transaction storage limit ^a into an integer.", arg); 762 end; 763 else if substr (arg, 1, 1) = "-" 764 then call ERROR_RETURN (error_table_$bad_arg, "^/""^a"" is an unrecognized argument.", arg); 765 else call GET_PATH_FROM_ARG (); 766 767 argno = argno + 1; 768 769 end processing_of_set_attribute_args; 770 771 if transaction_storage_limit = UNSET_STORAGE_LIMIT 772 then call ERROR_RETURN (error_table_$noarg, "^/A transaction storage limit must be specified."); 773 774 /* anything to sattr? */ 775 776 if path_count = 0 777 then call ERROR_RETURN (error_table_$noarg, "^/The name of a journal is required."); 778 779 780 /* set the attriubtes of the journals: curr. only transaction storage */ 781 /* limit is settable. */ 782 setting_the_journals: 783 do a_path = 1 to path_count; 784 call before_journal_manager_$set_transaction_storage_limit (bj_dir (a_path), bj_entry (a_path), 785 transaction_storage_limit, code); 786 if code ^= 0 787 then if i_am_an_active_function 788 then return_string = "false"; 789 else call any_err_ (code, ME, "^/Unable to set the transaction_storage_limit to ^d on journal ^a.", 790 transaction_storage_limit, pathname_ (bj_dir (a_path), bj_entry (a_path))); 791 792 end setting_the_journals; 793 794 /* finished with the sattr operation */ 795 796 return; 797 798 end SET_ATTRIBUTE; 799 800 GET_PATH_FROM_ARG: 801 procedure (); 802 803 dcl dir_name char (168); 804 dcl entry_name char (32); 805 806 call expand_pathname_$add_suffix (arg, "bj", dir_name, entry_name, code); 807 if code ^= 0 808 then call ERROR_RETURN (code, "^/Unable to expand the pathname ""^a"".", arg); 809 810 call check_star_name_$entry (entry_name, code); 811 if code = 1 | code = 2 812 then code = error_table_$nostars; 813 if code ^= 0 814 then call ERROR_RETURN (code, "^/Failed the starname check on the entry name ""^a"".", entry_name); 815 816 path_count = path_count + 1; 817 bj_dir (path_count) = dir_name; 818 bj_entry (path_count) = entry_name; 819 820 return; 821 822 end GET_PATH_FROM_ARG; 823 824 end the_real_work; 825 826 827 end bj_mgr_call; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0824.5 bj_mgr_call.pl1 >spec>on>7192.pbf-04/04/85>bj_mgr_call.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. DEFAULT_BJ_CI_NO constant fixed bin(17,0) initial dcl 141 ref 271 DEFAULT_BJ_CI_SIZE constant fixed bin(17,0) initial dcl 142 ref 272 ME 000000 constant char(32) initial unaligned dcl 140 set ref 162* 176* 254* 349* 361* 367* 430* 485* 494* 789* NO_NL 000062 constant bit(1) initial dcl 143 set ref 251* NO_PAD 000062 constant bit(1) initial dcl 143 set ref 251* UNSET_STORAGE_LIMIT 007272 constant fixed bin(35,0) initial dcl 139 ref 62 362 771 a_path 000100 automatic fixed bin(17,0) dcl 46 set ref 340* 345 345 349 349 361 361 361 361 365 365 367 367 367 367* 424* 426 426 430 430 430 430* 482* 484 484 485 485 485 485 494 494 494 494* 782* 784 784 789 789 789 789* active_fnc_err_ 000010 constant entry external dcl 76 ref 168 any_err_ 000124 automatic entry variable dcl 77 set ref 157* 168* 176 254 361 367 430 485 494 789 arg based char unaligned dcl 67 set ref 204 204 206 206 208 208 210 212 214 214 216 216 218 218 220* 285 285 293* 295* 299 299 309 309 319* 320* 324 324* 401 401 411 411* 459 459 469 469* 523 523 533 533* 586 586 596 596* 651 651 661 661* 741 741 751 751 758* 759* 763 763* 806* 807* arg_list_ptr 000102 automatic pointer dcl 47 set ref 180* 202* 280* 289* 303* 313* 396* 405* 454* 463* 518* 527* 581* 590* 646* 655* 736* 745* 755* argl 000104 automatic fixed bin(21,0) dcl 48 set ref 202* 204 204 206 206 208 208 210 212 214 214 216 216 218 218 220 220 280* 282 285 285 289* 293 293 295 295 299 299 303* 309 309 313* 319 319 320 320 324 324 324 396* 398 401 401 405* 411 411 411 454* 456 459 459 463* 469 469 469 518* 520 523 523 527* 533 533 533 581* 583 586 586 590* 596 596 596 646* 648 651 651 655* 661 661 661 736* 738 741 741 745* 751 751 755* 758 758 759 759 763 763 763 806 806 807 807 argno 000105 automatic fixed bin(17,0) dcl 49 set ref 276* 277 280* 288* 288 289* 302* 302 303* 312* 312 313* 329* 329 392* 393 396* 404* 404 405* 414* 414 450* 451 454* 462* 462 463* 472* 472 514* 515 518* 526* 526 527* 536* 536 577* 578 581* 589* 589 590* 599* 599 642* 643 646* 654* 654 655* 664* 664 732* 733 736* 744* 744 745* 754* 754 755* 767* 767 argp 000106 automatic pointer dcl 50 set ref 202* 204 204 206 206 208 208 210 212 214 214 216 216 218 218 220 280* 285 285 289* 293 295 299 299 303* 309 309 313* 319 320 324 324 396* 401 401 405* 411 411 454* 459 459 463* 469 469 518* 523 523 527* 533 533 581* 586 586 590* 596 596 646* 651 651 655* 661 661 736* 741 741 745* 751 751 755* 758 759 763 763 806 807 before_journal_manager_$close_bj 000016 constant entry external dcl 82 ref 490 before_journal_manager_$create_bj 000014 constant entry external dcl 80 ref 345 before_journal_manager_$get_bj_oid 000026 constant entry external dcl 92 ref 484 547 610 674 before_journal_manager_$get_bj_path_from_oid 000024 constant entry external dcl 90 ref 707 before_journal_manager_$get_default_bj 000020 constant entry external dcl 86 ref 701 before_journal_manager_$open_bj 000012 constant entry external dcl 78 ref 426 before_journal_manager_$set_default_bj 000022 constant entry external dcl 88 ref 681 before_journal_manager_$set_transaction_storage_limit 000030 constant entry external dcl 94 ref 365 784 bj_ci_no 000110 automatic fixed bin(17,0) dcl 51 set ref 271* 293* 345* bj_ci_size 000111 automatic fixed bin(17,0) dcl 52 set ref 272* 345* bj_dir 000100 automatic char(168) array unaligned dcl 187 set ref 193* 345* 349* 361* 361* 365* 367* 367* 426* 430* 430* 484* 485* 485* 494* 494* 547* 554* 554* 559* 559* 610* 617* 617* 622* 622* 674* 675* 675* 685* 685* 707* 709* 709* 713* 713* 784* 789* 789* 817* bj_entry 000100 automatic char(32) array unaligned dcl 187 set ref 194* 345* 349* 361* 361* 365* 367* 367* 426* 430* 430* 484* 485* 485* 494* 494* 547* 554* 554* 559* 559* 610* 617* 617* 622* 622* 674* 675* 675* 685* 685* 707* 709* 709* 713* 713* 784* 789* 789* 818* bj_oid 000112 automatic bit(36) dcl 53 set ref 426* 484* 490* 547* 610* 674* 681* 701* 707* check_star_name_$entry 000032 constant entry external dcl 97 ref 810 code 000113 automatic fixed bin(35,0) dcl 54 set ref 152* 153 159 162* 202* 280* 289* 290 290* 293* 295 303* 304 304* 313* 314 314* 319* 320 340 345* 346 346 349* 350 352 352* 358 361* 365* 367 367* 396* 405* 406 406* 426* 427 430* 454* 463* 464 464* 484* 485 485* 490* 491 494* 518* 527* 528 528* 547* 549 552 554* 555 557 559* 581* 590* 591 591* 610* 612 615 617* 618 620 622* 646* 655* 656 656* 674* 675 675* 681* 682 685* 701* 702 702* 707* 709 712* 713 715* 736* 745* 746 746* 755* 756 756* 758* 759 784* 786 789* 806* 807 807* 810* 811 811 811* 813 813* com_err_ 000034 constant entry external dcl 98 ref 157 162 creation_looks_reasonable 000114 automatic bit(1) dcl 55 set ref 342* 343 350* 355* cu_$af_return_arg 000036 constant entry external dcl 99 ref 152 cu_$arg_count_rel 000040 constant entry external dcl 100 ref 243 cu_$arg_list_ptr 000042 constant entry external dcl 101 ref 180 242 cu_$arg_ptr_rel 000044 constant entry external dcl 102 ref 202 248 280 289 303 313 396 405 454 463 518 527 581 590 646 655 736 745 755 cv_dec_check_ 000046 constant entry external dcl 103 ref 293 319 758 dir_name 000222 automatic char(168) unaligned dcl 803 set ref 806* 817 dm_error_$bj_journal_not_opened 000064 external static fixed bin(35,0) dcl 115 ref 552 557 615 620 dm_error_$file_already_exists 000066 external static fixed bin(35,0) dcl 117 ref 346 dm_error_$system_not_initialized 000070 external static fixed bin(35,0) dcl 119 set ref 197* dm_not_available_ 000000 stack reference condition dcl 135 ref 197 entry_name 000274 automatic char(32) unaligned dcl 804 set ref 806* 810* 813* 818 er_arg_list_ptr 000102 automatic pointer initial dcl 234 set ref 234* 242* 243* 248* 251* er_based_msg based char unaligned dcl 237 set ref 254* er_code 000104 automatic fixed bin(35,0) dcl 235 set ref 244* 249* 254* er_msg 000105 automatic char(1024) unaligned dcl 236 set ref 251* 254 er_msg_length 000505 automatic fixed bin(21,0) initial dcl 238 set ref 238* 251* 254 254 er_nargs 000506 automatic fixed bin(17,0) dcl 240 set ref 243* 244 251 er_p_code based fixed bin(35,0) dcl 233 ref 249 er_p_code_ptr 000100 automatic pointer initial dcl 232 set ref 232* 248* 249 error_table_$action_not_performed 000104 external static fixed bin(35,0) dcl 129 ref 352 error_table_$bad_arg 000074 external static fixed bin(35,0) dcl 125 set ref 220* 282* 295* 320* 324* 398* 411* 456* 469* 520* 533* 583* 596* 648* 661* 738* 759* 763* error_table_$badcall 000076 external static fixed bin(35,0) dcl 126 set ref 541* 604* 669* 695* error_table_$noarg 000100 external static fixed bin(35,0) dcl 127 set ref 176* 265* 334* 386* 419* 445* 477* 508* 571* 637* 727* 771* 776* error_table_$nostars 000102 external static fixed bin(35,0) dcl 128 ref 811 error_table_$not_act_fnc 000072 external static fixed bin(35,0) dcl 121 ref 153 error_table_$notadir 000106 external static fixed bin(35,0) dcl 131 ref 346 expand_pathname_$add_suffix 000050 constant entry external dcl 104 ref 806 i_am_an_active_function 000115 automatic bit(1) dcl 57 set ref 156* 167* 262 358 383 427 442 491 508* 508* 541* 541* 549 571* 571* 604* 604* 612 634 682 695* 695* 709 724 786 ioa_ 000052 constant entry external dcl 106 ref 555 557 618 620 713 ioa_$general_rs 000054 constant entry external dcl 107 ref 251 ioa_$rsnnl 000056 constant entry external dcl 109 ref 709 nargs 000116 automatic fixed bin(17,0) dcl 59 set ref 152* 173 187 187 265 277 386 393 445 451 508 515 571 578 637 643 695 727 733 nd_handler_ 000060 constant entry external dcl 110 ref 349 path_count 000100 automatic fixed bin(17,0) dcl 187 set ref 195* 334 340 419 424 477 482 541 604 669 776 782 816* 816 817 818 pathname_ 000062 constant entry external dcl 111 ref 361 361 367 367 430 430 485 485 494 494 554 554 559 559 617 617 622 622 675 675 685 685 709 709 713 713 789 789 return_string based varying char dcl 68 set ref 262* 358* 383* 427* 442* 491* 549* 552* 612* 615* 634* 682* 709* 724* 786* rsl 000122 automatic fixed bin(21,0) dcl 61 set ref 152* 262 358 383 427 442 491 549 552 612 615 634 682 709 709* 724 786 rsp 000120 automatic pointer dcl 60 set ref 152* 262 358 383 427 442 491 549 552 612 615 634 682 709 724 786 substr builtin function dcl 72 ref 324 411 469 533 596 661 763 transaction_storage_limit 000123 automatic fixed bin(35,0) initial dcl 62 set ref 62* 319* 362 365* 758* 771 784* 789* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. before_journal_manager_$delete_bj 000000 constant entry external dcl 84 error_table_$active_function external static fixed bin(35,0) dcl 123 NAMES DECLARED BY EXPLICIT CONTEXT. CLOSE 003411 constant entry internal dcl 439 ref 208 CLOSED 004637 constant entry internal dcl 568 ref 212 CREATE 001636 constant entry internal dcl 259 ref 204 ERROR_RETURN 001446 constant entry internal dcl 230 ref 197 220 265 282 290 295 304 314 320 324 334 386 398 406 411 419 445 456 464 469 477 508 520 528 533 541 554 559 571 583 591 596 604 617 622 637 648 656 661 669 675 685 695 702 712 715 727 738 746 756 759 763 771 776 807 813 GET_DEFAULT_PATH 006020 constant entry internal dcl 692 ref 216 GET_PATH_FROM_ARG 007101 constant entry internal dcl 800 ref 307 327 409 413 467 471 531 535 594 598 659 663 749 765 MAIN_RETURN 001442 constant label dcl 222 ref 255 OPEN 002765 constant entry internal dcl 380 ref 206 OPENED 004132 constant entry internal dcl 505 ref 210 SET_ATTRIBUTE 006277 constant entry internal dcl 721 ref 218 SET_DEFAULT_PATH 005345 constant entry internal dcl 631 ref 214 bj_mgr_call 001031 constant entry external dcl 38 bjmc 001021 constant entry external dcl 38 closing_the_journals 003665 constant label dcl 482 creating_one_journal 002416 constant label dcl 343 creating_the_journals 002401 constant label dcl 340 opening_the_journals 003241 constant label dcl 424 processing_of_close_args 003455 constant label dcl 451 processing_of_closed_args 004675 constant label dcl 578 processing_of_create_args 001706 constant label dcl 277 processing_of_open_args 003031 constant label dcl 393 processing_of_opened_args 004170 constant label dcl 515 processing_of_set_attribute_args 006343 constant label dcl 733 processing_of_set_default_path_args 005411 constant label dcl 643 setting_the_journals 006727 constant label dcl 782 the_real_work 001147 constant label dcl 184 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 254 null builtin function ref 232 234 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7720 10030 7277 7730 Length 10334 7277 110 267 421 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjmc 116 external procedure is an external procedure. begin block on line 184 1134 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 197 72 on unit ERROR_RETURN 384 internal procedure is declared options(variable). CREATE internal procedure shares stack frame of begin block on line 184. OPEN internal procedure shares stack frame of begin block on line 184. CLOSE internal procedure shares stack frame of begin block on line 184. OPENED internal procedure shares stack frame of begin block on line 184. CLOSED internal procedure shares stack frame of begin block on line 184. SET_DEFAULT_PATH internal procedure shares stack frame of begin block on line 184. GET_DEFAULT_PATH internal procedure shares stack frame of begin block on line 184. SET_ATTRIBUTE internal procedure shares stack frame of begin block on line 184. GET_PATH_FROM_ARG internal procedure shares stack frame of begin block on line 184. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ERROR_RETURN 000100 er_p_code_ptr ERROR_RETURN 000102 er_arg_list_ptr ERROR_RETURN 000104 er_code ERROR_RETURN 000105 er_msg ERROR_RETURN 000505 er_msg_length ERROR_RETURN 000506 er_nargs ERROR_RETURN begin block on line 184 000100 bj_dir begin block on line 184 000100 path_count begin block on line 184 000100 bj_entry begin block on line 184 000222 dir_name GET_PATH_FROM_ARG 000274 entry_name GET_PATH_FROM_ARG bjmc 000100 a_path bjmc 000102 arg_list_ptr bjmc 000104 argl bjmc 000105 argno bjmc 000106 argp bjmc 000110 bj_ci_no bjmc 000111 bj_ci_size bjmc 000112 bj_oid bjmc 000113 code bjmc 000114 creation_looks_reasonable bjmc 000115 i_am_an_active_function bjmc 000116 nargs bjmc 000120 rsp bjmc 000122 rsl bjmc 000123 transaction_storage_limit bjmc 000124 any_err_ bjmc THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. enter_begin call_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc begin_return return tra_ext alloc_auto_adj enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ before_journal_manager_$close_bj before_journal_manager_$create_bj before_journal_manager_$get_bj_oid before_journal_manager_$get_bj_path_from_oid before_journal_manager_$get_default_bj before_journal_manager_$open_bj before_journal_manager_$set_default_bj before_journal_manager_$set_transaction_storage_limit check_star_name_$entry com_err_ cu_$af_return_arg cu_$arg_count_rel cu_$arg_list_ptr cu_$arg_ptr_rel cv_dec_check_ expand_pathname_$add_suffix ioa_ ioa_$general_rs ioa_$rsnnl nd_handler_ pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$bj_journal_not_opened dm_error_$file_already_exists dm_error_$system_not_initialized error_table_$action_not_performed error_table_$bad_arg error_table_$badcall error_table_$noarg error_table_$nostars error_table_$not_act_fnc error_table_$notadir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 62 001014 38 001020 152 001037 153 001054 156 001060 157 001061 158 001065 159 001066 162 001070 163 001104 167 001105 168 001107 173 001113 176 001115 177 001140 180 001141 184 001147 187 001152 345 001167 193 001173 194 001211 195 001227 197 001230 202 001256 204 001300 206 001315 208 001327 210 001341 212 001347 214 001355 216 001367 218 001401 220 001413 222 001442 824 001444 230 001445 232 001453 234 001455 238 001456 242 001457 243 001465 244 001501 248 001505 249 001530 251 001532 254 001600 255 001633 259 001636 262 001637 265 001654 271 001677 272 001702 276 001704 277 001706 280 001712 282 001731 285 001754 288 001767 289 001770 290 002007 293 002031 295 002060 298 002111 299 002112 302 002122 303 002123 304 002142 307 002164 308 002165 309 002166 312 002176 313 002177 314 002216 319 002240 320 002264 323 002316 324 002317 327 002353 329 002354 330 002356 334 002357 340 002401 342 002414 343 002416 345 002421 346 002460 349 002467 350 002522 352 002526 354 002532 355 002533 356 002534 358 002535 361 002554 362 002640 365 002643 367 002676 372 002761 376 002764 380 002765 383 002766 386 003003 392 003026 393 003031 396 003036 398 003055 401 003100 404 003113 405 003114 406 003133 409 003155 410 003156 411 003157 413 003213 414 003214 415 003216 419 003217 424 003241 426 003252 427 003305 430 003325 432 003405 436 003410 439 003411 442 003412 445 003427 450 003452 451 003455 454 003462 456 003501 459 003524 462 003537 463 003540 464 003557 467 003601 468 003602 469 003603 471 003637 472 003640 473 003642 477 003643 482 003665 484 003676 485 003731 490 004015 491 004026 494 004046 497 004126 501 004131 505 004132 508 004133 514 004165 515 004170 518 004174 520 004213 523 004236 526 004251 527 004252 528 004271 531 004313 532 004314 533 004315 535 004351 536 004352 537 004354 541 004355 547 004406 549 004434 552 004454 554 004471 555 004536 557 004554 559 004572 564 004636 568 004637 571 004640 577 004672 578 004675 581 004702 583 004721 586 004744 589 004757 590 004760 591 004777 594 005021 595 005022 596 005023 598 005057 599 005060 600 005062 604 005063 610 005114 612 005142 615 005162 617 005177 618 005244 620 005262 622 005300 627 005344 631 005345 634 005346 637 005363 642 005406 643 005411 646 005416 648 005435 651 005460 654 005473 655 005474 656 005513 659 005535 660 005536 661 005537 663 005573 664 005574 665 005576 669 005577 674 005622 675 005650 681 005720 682 005732 685 005752 688 006017 692 006020 695 006021 701 006053 702 006065 707 006100 709 006126 712 006212 713 006223 715 006266 717 006276 721 006277 724 006300 727 006315 732 006340 733 006343 736 006350 738 006367 741 006412 744 006425 745 006426 746 006445 749 006467 750 006470 751 006471 754 006501 755 006502 756 006521 758 006543 759 006567 762 006621 763 006622 765 006656 767 006657 769 006661 771 006662 776 006705 782 006727 784 006740 786 006772 789 007012 792 007075 796 007100 800 007101 806 007102 807 007141 810 007172 811 007210 813 007221 816 007246 817 007247 818 007256 820 007265 827 007266 ----------------------------------------------------------- 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