COMPILATION LISTING OF SEGMENT rmdb_rq_rename Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/09/86 1235.4 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* format: ^inddcls,^indattr,indnoniterend,^indnoniterdo,indend,tree,^case,insnl,comcol61,dclind5,declareind5,delnl */ 8 9 /*DESCRIPTION 10* This set of routines parses the command line for the rename_(attribute 11* domain relation) requests of the restructure_mrds_db subsystem. 12**/ 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 17* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 18* written. 19* 2) change(86-12-05,Blair), approve(86-12-05,PBF7311), audit(86-12-05,Dupuis), 20* install(86-12-09,MR12.0-1237): 21* Null out the request info_structure ptr so that tidy_up works properly. 22* END HISTORY COMMENTS */ 23 24 rmdb_rq_rename: 25 proc; 26 27 return; 28 29 rmdb_rq_rename$attribute: 30 entry (Isci_ptr, Iinfo_ptr); 31 32 type = RENAME_ATTRIBUTE; 33 goto START; 34 35 rmdb_rq_rename$domain: 36 entry (Isci_ptr, Iinfo_ptr); 37 38 type = RENAME_DOMAIN; 39 goto START; 40 41 rmdb_rq_rename$relation: 42 entry (Isci_ptr, Iinfo_ptr); 43 44 type = RENAME_RELATION; 45 goto START; 46 47 START: 48 sci_ptr = Isci_ptr; 49 rmdb_ctl_ptr = Iinfo_ptr; 50 rename_object_info_ptr = null; 51 52 on cleanup call tidy_up; 53 /* Get number of arguments, must be an even number. */ 54 call ssu_$arg_count (sci_ptr, nargs); 55 if nargs = 0 | (mod (nargs, 2) = 1) 56 then 57 USAGE: 58 call error (error_table_$wrong_no_of_args, "^/Usage: " || myname (type) || " from1 to1 {...fromN toN}"); 59 60 rename_object_info_count = divide (nargs, 2, 17, 0); 61 allocate rename_object_info in (my_area) set (rename_object_info_ptr); 62 rename_object_info.version = rename_object_info_version_1; 63 rename_object_info.type = type; 64 65 idx = 1; 66 do loop = 1 to nargs; 67 call ssu_$arg_ptr (sci_ptr, loop, argp, argl); 68 69 if argl = 0 70 then goto USAGE; 71 72 if argl > 30 & type = RENAME_RELATION 73 then call error (mrds_error_$rel_name_too_long, arg); 74 if argl > 32 75 then call error (mrds_error_$long_ident, arg); 76 77 if verify (arg, mrds_data_$valid_rel_and_attr_name_chars) ^= 0 78 then do; 79 if type = RENAME_RELATION 80 then code = mrds_error_$bad_rel_name; 81 else if type = RENAME_ATTRIBUTE 82 then code = mrds_error_$bad_attr_name; 83 else code = mrds_error_$bad_ident; 84 call error (code, arg); 85 end; 86 if search (substr (arg, 1, 1), "-_") ^= 0 87 then do; 88 if type = RENAME_RELATION 89 then code = mrds_error_$inv_rel_name_first_char; 90 else if type = RENAME_ATTRIBUTE 91 then code = mrds_error_$inv_attr_name_first_char; 92 else code = mrds_error_$inv_domain_name_first_char; 93 call error (code, arg); 94 end; 95 96 if mod (loop, 2) = 1 97 then rename_object_info.from (idx) = arg; 98 else do; 99 rename_object_info.to (idx) = arg; 100 idx = idx + 1; 101 end; 102 103 end; /* do loop */ 104 105 /* Make sure we have an open database. */ 106 if rmdb_ctl.absolute_db_path = "" 107 then call error (error_table_$action_not_performed, 108 "^/There is no currently readied database."); 109 110 /* Determine whether or not we need to clean up from a previous operation. */ 111 call mdbm_util_$inconsistent_get_info (rmdb_ctl.db_model_ptr, incon_value, incon_name, unused2, undo_request); 112 if incon_value 113 then call rmdb_execute_undo (sci_ptr, "create_attribute", rmdb_ctl.absolute_db_path, rmdb_ctl.db_model_ptr, 114 incon_name, undo_request); 115 116 call rmdb_rename (rmdb_ctl_ptr, rename_object_info_ptr, error_message, code); 117 if code ^= 0 118 then call error (code, error_message); 119 120 return; 121 122 /* * * * * * * * * * * * * error * * * * * * * * * * * * * */ 123 124 error: proc (err_code, err_message); /* Error procedure for rmdb_rename.pl1 */ 125 126 dcl err_code fixed bin (35) parameter; 127 dcl err_message char (*) parameter; 128 dcl ssu_$abort_line entry () options (variable); 129 130 call tidy_up; 131 132 call ssu_$abort_line (sci_ptr, err_code, err_message); 133 134 end error; 135 136 /* * * * * * * * * * * * * tidy_up * * * * * * * * * * * * * */ 137 138 tidy_up: proc; 139 140 if rename_object_info_ptr ^= null then 141 free rename_object_info; 142 143 end tidy_up; 144 1 1 /* BEGIN - mrds_rmdb_ctl.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(82-03-26,Davids), approve(), audit(), install(): 1 7* created 1 8* 2) change(82-05-26,Davids), approve(), audit(), install(): 1 9* added db_model_ptr 1 10* 3) change(82-06-09,Harvey), approve(), audit(), install(): 1 11* deleted ssu_ routines ptr storage 1 12* 4) change(82-08-20,Davids), approve(), audit(), install(): 1 13* added the relmgr like reference and included the rmdb_relmgr_entries 1 14* include file 1 15* 5) change(83-05-24,Davids), approve(), audit(), install(): 1 16* added the saved_res_version_ptr element 1 17* 6) change(84-10-23,Benjamin), approve(), audit(), install(): 1 18* added flags (just database_readied_by_rmdb for now). 1 19* 7) change(85-11-08,Spitzer), approve(85-11-08,MCR7311), 1 20* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 1 21* added crossref_file_info. 1 22* END HISTORY COMMENTS */ 1 23 1 24 1 25 dcl 01 rmdb_ctl based (rmdb_ctl_ptr), 1 26 02 version fixed bin, 1 27 02 rmdb_version char (16) varying, 1 28 02 absolute_db_path char (168), 1 29 02 temp_dir_path char (168), 1 30 02 work_area_ptr ptr, 1 31 02 db_model_ptr ptr, 1 32 02 saved_res_version_ptr ptr, 1 33 02 crossref_file_info, 1 34 03 iocb_ptr ptr, 1 35 03 name char (32), 1 36 02 relmgr_entries like rmdb_relmgr_entries, 1 37 02 flags, 1 38 03 database_readied_by_rmdb bit (1) unal, 1 39 03 unused bit (35) unal; 1 40 1 41 dcl RMDB_CTL_VERSION_1 fixed bin init (1) internal static options (constant); 1 42 1 43 dcl rmdb_ctl_ptr ptr; 1 44 1 45 2 1 /* START OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(82-08-20,Davids), approve(), audit(), install(): 2 6* written 2 7* 2) change(86-01-28,Spitzer), approve(86-01-28,MCR7311), 2 8* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 2 9* add get_tuples_by_spec, put_tuple, put_tuples, create_cursor entry points. 2 10* 3) change(86-08-21,Blair), approve(86-08-21,MCR7311), 2 11* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 2 12* Back out the entries get_tuples_by_spec and put_tuples since they aren't 2 13* sufficiently well tested to be reliable. Replace with get_tuple_id and 2 14* get_tuple_by_id. 2 15* END HISTORY COMMENTS */ 2 16 2 17 2 18 dcl 01 rmdb_relmgr_entries based (rmdb_relmgr_entries_ptr), 2 19 02 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, 2 20 bit (36) aligned, fixed bin (35)), 2 21 02 delete_relation entry (char (*), char (*), fixed bin (35)), 2 22 02 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 2 23 02 close entry (bit (36) aligned, fixed bin (35)), 2 24 02 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), 2 25 bit (36) aligned, fixed bin (35)), 2 26 02 delete_index entry (bit (36) aligned, bit (36) aligned, fixed bin (35)), 2 27 02 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 2 28 02 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 2 29 02 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 2 30 02 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)); 2 31 2 32 dcl rmdb_relmgr_entries_ptr ptr; 2 33 2 34 /* END OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* END - mrds_rmdb_ctl.incl.pl1 */ 145 3 1 /* START OF: rmdb_rename_object_info.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 3 6* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 3 7* Contains a list of attribute, domains or relations to rename 3 8* END HISTORY COMMENTS */ 3 9 3 10 dcl rename_object_info_count fixed bin (17); 3 11 dcl rename_object_info_ptr ptr; 3 12 dcl rename_object_info_version_1 char (8) int static options (constant) init ("roi 1.0"); 3 13 3 14 dcl 1 rename_object_info based (rename_object_info_ptr), 3 15 2 version char (8), 3 16 2 type fixed bin (17) unal, 3 17 2 count fixed bin (17), 3 18 2 names (rename_object_info_count refer (rename_object_info.count)), 3 19 3 from char (32), 3 20 3 to char (32); 3 21 3 22 dcl (RENAME_ATTRIBUTE init (1), 3 23 RENAME_DOMAIN init (2), 3 24 RENAME_RELATION init (3)) fixed bin (17) int static options (constant); 3 25 3 26 /* END OF: rmdb_rename_object_info.incl.pl1 * * * * * * * * * * * * * * * * */ 146 147 148 dcl arg char (argl) based (argp); 149 dcl argl fixed bin (21); 150 dcl argp ptr; 151 dcl code fixed bin (35); 152 dcl cleanup condition; 153 dcl divide builtin; 154 dcl empty builtin; 155 dcl error_message char (500); 156 dcl error_table_$action_not_performed fixed bin(35) ext static; 157 dcl error_table_$wrong_no_of_args fixed bin (35) ext static; 158 dcl idx fixed bin; 159 dcl Iinfo_ptr ptr parameter; 160 dcl Isci_ptr ptr parameter; 161 dcl incon_name char (32); /* name of the request that caused the db to become inconsistent */ 162 dcl incon_value bit (1); /* true ::= the db is inconsistent */ 163 dcl loop fixed bin; 164 dcl mdbm_util_$inconsistent_get_info entry options(variable); 165 dcl mod builtin; 166 dcl mrds_data_$valid_rel_and_attr_name_chars char (128) varying ext static; 167 dcl mrds_error_$bad_attr_name fixed bin (35) ext static; 168 dcl mrds_error_$bad_ident fixed bin (35) ext static; 169 dcl mrds_error_$bad_rel_name fixed bin (35) ext static; 170 dcl mrds_error_$inv_attr_name_first_char fixed bin (35) ext static; 171 dcl mrds_error_$inv_domain_name_first_char fixed bin (35) ext static; 172 dcl mrds_error_$inv_rel_name_first_char fixed bin (35) ext static; 173 dcl mrds_error_$long_ident fixed bin (35) ext static; 174 dcl mrds_error_$rel_name_too_long fixed bin (35) ext static; 175 dcl my_area area; 176 dcl myname (3) char (32) int static options (constant) init ("rename_attribute", "rename_domain", "rename_relation"); 177 dcl nargs fixed bin; 178 dcl null builtin; 179 dcl rmdb_execute_undo entry (ptr, char(32), char(168), ptr, char(32), char(100)); 180 dcl rmdb_rename entry (ptr, ptr, char (*), fixed bin (35)); 181 dcl sci_ptr ptr; 182 dcl search builtin; 183 dcl ssu_$abort_line entry () options (variable); 184 dcl ssu_$arg_count entry (ptr, fixed bin); 185 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 186 dcl substr builtin; 187 dcl type fixed bin (17); 188 dcl undo_request char (100); /* rmdb request that will cause the db to become consistent */ 189 dcl unused2 char (200); /* output from mdbm_util_$inconsistent_get_info */ 190 dcl verify builtin; 191 192 end rmdb_rq_rename; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/09/86 1235.4 rmdb_rq_rename.pl1 >spec>install>1237>rmdb_rq_rename.pl1 145 1 10/17/86 1404.4 mrds_rmdb_ctl.incl.pl1 >ldd>include>mrds_rmdb_ctl.incl.pl1 1-46 2 10/17/86 1404.6 rmdb_relmgr_entries.incl.pl1 >ldd>include>rmdb_relmgr_entries.incl.pl1 146 3 10/17/86 1404.4 rmdb_rename_object_info.incl.pl1 >ldd>include>rmdb_rename_object_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Iinfo_ptr parameter pointer dcl 159 ref 29 35 41 49 Isci_ptr parameter pointer dcl 160 ref 29 35 41 47 RENAME_ATTRIBUTE constant fixed bin(17,0) initial dcl 3-22 ref 32 81 90 RENAME_DOMAIN constant fixed bin(17,0) initial dcl 3-22 ref 38 RENAME_RELATION constant fixed bin(17,0) initial dcl 3-22 ref 44 72 79 88 absolute_db_path 6 based char(168) level 2 packed unaligned dcl 1-25 set ref 106 112* arg based char unaligned dcl 148 set ref 72* 74* 77 84* 86 93* 96 99 argl 000106 automatic fixed bin(21,0) dcl 149 set ref 67* 69 72 72 72 74 74 74 77 84 84 86 93 93 96 99 argp 000110 automatic pointer dcl 150 set ref 67* 72 74 77 84 86 93 96 99 cleanup 000114 stack reference condition dcl 152 ref 52 code 000112 automatic fixed bin(35,0) dcl 151 set ref 79* 81* 83* 84* 88* 90* 92* 93* 116* 117 117* count 3 based fixed bin(17,0) level 2 dcl 3-14 set ref 61* 140 db_model_ptr 134 based pointer level 2 dcl 1-25 set ref 111* 112* divide builtin function dcl 153 ref 60 empty builtin function dcl 154 ref 175 err_code parameter fixed bin(35,0) dcl 126 set ref 124 132* err_message parameter char unaligned dcl 127 set ref 124 132* error_message 000122 automatic char(500) unaligned dcl 155 set ref 116* 117* error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 156 set ref 106* error_table_$wrong_no_of_args 000012 external static fixed bin(35,0) dcl 157 set ref 55* from 4 based char(32) array level 3 packed unaligned dcl 3-14 set ref 96* idx 000317 automatic fixed bin(17,0) dcl 158 set ref 65* 96 99 100* 100 incon_name 000320 automatic char(32) unaligned dcl 161 set ref 111* 112* incon_value 000330 automatic bit(1) unaligned dcl 162 set ref 111* 112 loop 000331 automatic fixed bin(17,0) dcl 163 set ref 66* 67* 96* mdbm_util_$inconsistent_get_info 000014 constant entry external dcl 164 ref 111 mod builtin function dcl 165 ref 55 96 mrds_data_$valid_rel_and_attr_name_chars 000016 external static varying char(128) dcl 166 ref 77 mrds_error_$bad_attr_name 000020 external static fixed bin(35,0) dcl 167 ref 81 mrds_error_$bad_ident 000022 external static fixed bin(35,0) dcl 168 ref 83 mrds_error_$bad_rel_name 000024 external static fixed bin(35,0) dcl 169 ref 79 mrds_error_$inv_attr_name_first_char 000026 external static fixed bin(35,0) dcl 170 ref 90 mrds_error_$inv_domain_name_first_char 000030 external static fixed bin(35,0) dcl 171 ref 92 mrds_error_$inv_rel_name_first_char 000032 external static fixed bin(35,0) dcl 172 ref 88 mrds_error_$long_ident 000034 external static fixed bin(35,0) dcl 173 set ref 74* mrds_error_$rel_name_too_long 000036 external static fixed bin(35,0) dcl 174 set ref 72* my_area 000332 automatic area(1024) dcl 175 set ref 61 175* myname 000000 constant char(32) initial array unaligned dcl 176 ref 55 names 4 based structure array level 2 packed unaligned dcl 3-14 nargs 002332 automatic fixed bin(17,0) dcl 177 set ref 54* 55 55 60 66 null builtin function dcl 178 ref 50 140 rename_object_info based structure level 1 unaligned dcl 3-14 set ref 61 140 rename_object_info_count 000102 automatic fixed bin(17,0) dcl 3-10 set ref 60* 61 61 rename_object_info_ptr 000104 automatic pointer dcl 3-11 set ref 50* 61* 62 63 96 99 116* 140 140 rename_object_info_version_1 000030 constant char(8) initial unaligned dcl 3-12 ref 62 rmdb_ctl based structure level 1 unaligned dcl 1-25 rmdb_ctl_ptr 000100 automatic pointer dcl 1-43 set ref 49* 106 111 112 112 116* rmdb_execute_undo 000040 constant entry external dcl 179 ref 112 rmdb_relmgr_entries based structure level 1 unaligned dcl 2-18 rmdb_rename 000042 constant entry external dcl 180 ref 116 sci_ptr 002334 automatic pointer dcl 181 set ref 47* 54* 67* 112* 132* search builtin function dcl 182 ref 86 ssu_$abort_line 000050 constant entry external dcl 128 ref 132 ssu_$arg_count 000044 constant entry external dcl 184 ref 54 ssu_$arg_ptr 000046 constant entry external dcl 185 ref 67 substr builtin function dcl 186 ref 86 to 14 based char(32) array level 3 packed unaligned dcl 3-14 set ref 99* type 002336 automatic fixed bin(17,0) dcl 187 in procedure "rmdb_rq_rename" set ref 32* 38* 44* 55 63 72 79 81 88 90 type 2 based fixed bin(17,0) level 2 in structure "rename_object_info" packed unaligned dcl 3-14 in procedure "rmdb_rq_rename" set ref 63* undo_request 002337 automatic char(100) unaligned dcl 188 set ref 111* 112* unused2 002370 automatic char(200) unaligned dcl 189 set ref 111* verify builtin function dcl 190 ref 77 version based char(8) level 2 packed unaligned dcl 3-14 set ref 62* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RMDB_CTL_VERSION_1 internal static fixed bin(17,0) initial dcl 1-41 rmdb_relmgr_entries_ptr automatic pointer dcl 2-32 ssu_$abort_line 000000 constant entry external dcl 183 NAMES DECLARED BY EXPLICIT CONTEXT. START 000164 constant label dcl 47 set ref 33 39 45 USAGE 000236 constant label dcl 55 ref 69 error 000727 constant entry internal dcl 124 ref 55 72 74 84 93 106 117 rmdb_rq_rename 000112 constant entry external dcl 24 rmdb_rq_rename$attribute 000125 constant entry external dcl 29 rmdb_rq_rename$domain 000140 constant entry external dcl 35 rmdb_rq_rename$relation 000153 constant entry external dcl 41 tidy_up 000771 constant entry internal dcl 138 ref 52 130 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1366 1440 1026 1376 Length 1726 1026 52 251 337 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rmdb_rq_rename 1406 external procedure is an external procedure. on unit on line 52 64 on unit error internal procedure shares stack frame of external procedure rmdb_rq_rename. tidy_up 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rmdb_rq_rename 000100 rmdb_ctl_ptr rmdb_rq_rename 000102 rename_object_info_count rmdb_rq_rename 000104 rename_object_info_ptr rmdb_rq_rename 000106 argl rmdb_rq_rename 000110 argp rmdb_rq_rename 000112 code rmdb_rq_rename 000122 error_message rmdb_rq_rename 000317 idx rmdb_rq_rename 000320 incon_name rmdb_rq_rename 000330 incon_value rmdb_rq_rename 000331 loop rmdb_rq_rename 000332 my_area rmdb_rq_rename 002332 nargs rmdb_rq_rename 002334 sci_ptr rmdb_rq_rename 002336 type rmdb_rq_rename 002337 undo_request rmdb_rq_rename 002370 unused2 rmdb_rq_rename THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mdfx1 enable_op shorten_stack ext_entry int_entry verify_eis op_alloc_ op_freen_ op_empty_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mdbm_util_$inconsistent_get_info rmdb_execute_undo rmdb_rename ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$wrong_no_of_args mrds_data_$valid_rel_and_attr_name_chars mrds_error_$bad_attr_name mrds_error_$bad_ident mrds_error_$bad_rel_name mrds_error_$inv_attr_name_first_char mrds_error_$inv_domain_name_first_char mrds_error_$inv_rel_name_first_char mrds_error_$long_ident mrds_error_$rel_name_too_long LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 175 000104 24 000111 27 000120 29 000121 32 000133 33 000135 35 000136 38 000146 39 000150 41 000151 44 000161 45 000163 47 000164 49 000170 50 000173 52 000175 54 000217 55 000230 60 000275 61 000301 62 000312 63 000315 65 000320 66 000322 67 000331 69 000346 72 000350 74 000375 77 000417 79 000427 81 000435 83 000442 84 000444 86 000463 88 000474 90 000503 92 000511 93 000514 96 000533 99 000552 100 000563 103 000564 106 000566 111 000613 112 000645 116 000675 117 000721 120 000726 124 000727 130 000740 132 000744 134 000767 138 000770 140 000776 143 001011 ----------------------------------------------------------- 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