COMPILATION LISTING OF SEGMENT mu_db_inconsistent Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1124.26_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 mu_db_inconsistent: proc (db_model_ptr, name, message, undo_request); 7 8 /* 9* BEGIN_DESCRIPTION 10* This procedure manipulates the consistancy bit in the db model. 11* This bit is used to indicate that the database is in an 12* inconsistent state due to restructuring operations. Associated 13* with the bit is a message structure that contains space for the 14* name of the operation that set the bit, text for a more 15* detailed explaination and an rmdb request that can be executed to 16* undo the operation that set the bit and cause the database to become 17* consistent. 18* 19* At the moment the message structure is allocated only once for 20* the life of the database. Allocation can not done during data 21* base creation since there are already existing databases out 22* there without the structure. Allocation takes place the first 23* time the message structure is needed, which is when the data base 24* is set to inconsistent. Once the structure exists it is reused. 25* 26* There are three entry points: 27* . inconsistent_set 28* . inconsistent_reset 29* . inconsistent_get_info 30* 31* 32* The set entry point sets the database to inconsistent and loads 33* the message structure, allocating it if need be. 34* END_DESCRIPTION 35* 36* Known Bugs: 37* 38* Other Problems: 39* 40* . HISTORY 41* 82-04-15 Davids: Written 42* 43* 82-04-27 Davids: added the undo_request element to the message structure 44* and changed the interfaces to accept and return the value for it. 45* 46* 82-04-30 R. Lackey : added the set entry point 47* 48* 82-07-01 Roger Lackey : changed entry point names to include inconsistent_ 49* for binding 50* 51* 83-02-24 Davids: explicitly declared variables that were declared by 52* context or implication. Deleted declarations to variables that were 53* never referenced. 54**/ 55 56 /* PARAMETERS */ 57 58 dcl db_model_ptr ptr; /* (input) points to the data model for the data base */ 59 dcl name char (*); /* (input) name of request associated with the message 60* truncated to 32 chars */ 61 dcl message char (*); /* (input) explainatory message, truncated to 200 chars */ 62 dcl undo_request char (*); /* (input) rmdb request that can be used to undo the request that 63* . is setting the database inconsistent, executing it 64* . will cause the database to be consistent again */ 65 dcl O_value bit (1); /* (output) true ==> db is inconsistent */ 66 dcl O_name char (*); /* (output) same as name */ 67 dcl O_message char (*); /* (output) same as message */ 68 dcl O_undo_request char (*); /* (output) same as undo_request */ 69 70 /* CONSTANTS */ 71 72 dcl NULL_OFFSET bit (18) unal init ("111111111111111111"b); 73 74 /* BUILTINS */ 75 76 dcl addr builtin; 77 dcl fixed builtin; 78 dcl length builtin; 79 dcl pointer builtin; 80 dcl rel builtin; 81 82 /* EXTERNAL */ 83 84 dcl sys_info$max_seg_size fixed bin (35) ext static; 85 86 /* INCLUDES */ 87 1 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 1 6* modified to save space occupied by model 1 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 1 8* to add mdbm_secured bit in db_model 1 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 1 10* collapsed the following into an unused_offset array: 1 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 1 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 1 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 1 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 1 15* unused_1 1 16* Also changed the name of unused_2 to restructuring_history_offset 1 17* and changed the comment on the changer structure to indicate 1 18* that it will contain on database creation information. 1 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 1 20* used one of the unused_offsets to point to a message which indicates 1 21* why the db is inconsistent. The offset will be null when the db is created 1 22* and set the first time the message is used. this is so it will be 1 23* consistent with existing data bases. Also added the message structure. 1 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 1 25* added the undo_request element to the message structure 1 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 1 27* changed unused_offset (12) to last_restructruring_history_offset and 1 28* changed restructuring_history_offset to first_restructuring_history_offset 1 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 1 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 1 31* 1 => vfile database and 2 => page_file database. Up to this point all 1 32* database types were equal to 1. 1 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 1 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 1 35* flags. This will allow information about transactions and dm_file 1 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 1 37* change is compatable with all datamodels created by the released version 1 38* of mrds. 1 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 1 40* added the rollback_on flag to the db_type_flags since it appears that you 1 41* can have a dmfile database that requires transactions but does not have any 1 42* journalizing. Also switched the order of the transactions_needed and 1 43* concurrency_on flags - this makes the change compatable with existing 1 44* dmfile databases except when displaying the model since concurrency_on and 1 45* rollback_on will be off in the model even though the dmfile relations had 1 46* them on during creation. 1 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 1 48* Removed ctl_file_path_ptr. 1 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 1 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 1 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 1 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 1 53* in the flag word for rmdb copying. 1 54* END HISTORY COMMENTS */ 1 55 1 56 1 57 /* this include file contains the structures that go into the make up 1 58* of the "db_model" segment in the model for the database. 1 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 1 60* 1 61* the db_model structure goes at the base of the segment, and contains items unique to 1 62* the whole databse. in addition, it has an area of size to fill the 1 63* rest of a segment, that holds the lists of files and domains in the database. 1 64* these lists are singly forward linked lists. all "pointers" in the database model 1 65* are maintained as offsets(bit (18)) from the base of the particular model segment 1 66* since actual pointers are process dependent on segment number. 1 67* the remaining structures are first a path_entry one to save pathnames in, 1 68* and the stack_item and constent structures, used to save a boolean 1 69* expression in polish form, with the stack represented by a linked list. 1 70* the final structure is one for identifying the status of version information */ 1 71 1 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 1 73 2 version unal fixed bin, /* data base version, currently 4 */ 1 74 2 db_type_flags unal, 1 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 1 76 3 unused (13) bit (1) unal, 1 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 1 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 1 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 1 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 1 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 1 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 1 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 1 84 2 reserved bit (34) unal, /* reserved for flags */ 1 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 1 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 1 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 1 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 1 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 1 90 2 num_domains unal fixed bin, /* number of domains defined */ 1 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 1 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 1 93 2 pad_1 unal fixed bin (35), /* for future use */ 1 94 2 pad_2 unal fixed bin (35), /* for future use */ 1 95 2 version_ptr bit (18), /* offset to version structure */ 1 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 1 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 1 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 1 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 1 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 1 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 1 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 1 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 1 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 1 105 1 106 dcl dbm_ptr ptr; 1 107 1 108 /* the files in the database each have a file_info containing 1 109* their name, the file_model for each file is found by initiating the 1 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 1 111* the file_info list is a singly linked list in definition order */ 1 112 1 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 1 114 2 file_name char (30), /* name of file */ 1 115 2 file_id bit (36), /* id number of file */ 1 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 1 117 2 unused unal bit (18); /* for future expansion */ 1 118 1 119 dcl fi_ptr ptr; 1 120 1 121 /* each domain used in the database will have a domain info saved in the db_model 1 122* segment. it describes the domain of the given name, and it's options. 1 123* the domain_info's form a singly linked list in definition order */ 1 124 1 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 1 126 2 name char (32), /* name of domain */ 1 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 1 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 1 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 1 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 1 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 1 132 2 reserved bit (31) unal, 1 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 1 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 1 135 2 ave_len fixed bin (35), /* average length of varying string */ 1 136 2 nck_items unal fixed bin, /* no. items in check stack */ 1 137 2 fwd_thread unal bit (18), /* offset to next in list */ 1 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 1 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 1 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 1 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 1 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 1 143 2 str_err_path_ptr unal bit (18), 1 144 2 str_after_path_ptr unal bit (18), 1 145 2 get_before_path_ptr unal bit (18), 1 146 2 get_err_path_ptr unal bit (18), 1 147 2 get_after_path_ptr unal bit (18), 1 148 2 mod_before_path_ptr unal bit (18), 1 149 2 mod_err_path_ptr unal bit (18), 1 150 2 mod_after_path_ptr unal bit (18), 1 151 2 unused_1 unal bit (18), /* for future expansion */ 1 152 2 unused_2 unal bit (18), 1 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 1 154 1 155 dcl di_ptr ptr; 1 156 1 157 /* information necessary for attributes that are not used in any relation */ 1 158 1 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 1 160 2 name char (32), /* name of attribute */ 1 161 2 domain_ptr bit (18) unal, /* to domain_info */ 1 162 2 fwd_thread bit (18) unal, /* to next in list */ 1 163 2 unused (2) bit (18) unal; 1 164 1 165 dcl ua_ptr ptr; 1 166 1 167 1 168 /* space saving pathname$entryname structure, to be allocated 1 169* only when a path$entry has to be saved, else only a bit(18) 1 170* offset takes up space in the main model structure */ 1 171 1 172 declare 1 path_entry based (path_entry_ptr), 1 173 2 path char (168), /* pathname portion of desired path$entry */ 1 174 2 entry char (32), /* entryname portion of desired path$entry */ 1 175 2 reserved unal bit (36); /* for future use */ 1 176 1 177 declare path_entry_ptr ptr; 1 178 1 179 1 180 1 181 1 182 1 183 /* declarations for model of postfix stack holding the check option boolean expression 1 184* the following encoding values indicate the corresponding type of stack element 1 185* 1 186* 1 = 1 187* 2 ^= 1 188* 3 > 1 189* 4 < 1 190* 5 >= 1 191* 6 <= 1 192* 1 193* 10 and 1 194* 20 or 1 195* 30 not 1 196* 1 197* 40 - (minus) 1 198* 1 199* 50 domain variable(same name as domain) 1 200* 1 201* 60 constant(number, bit string, or character string) 1 202* 1 203**/ 1 204 1 205 1 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 1 207 2 next bit (18), /* link to next in list */ 1 208 2 type fixed binary, /* code for this element type */ 1 209 2 value_ptr bit (18); /* pointer to variable holding value, 1 210* if this is a constant element type */ 1 211 1 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 1 213 1 214 1 215 1 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 1 217 2 length fixed bin (35), /* length allocated to hold value */ 1 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 1 219 1 220 declare constant_ptr ptr; /* pointer to constant's value space */ 1 221 1 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 1 223 1 224 /* version structure, giving status of source for CMDB/RMDB, 1 225* status of model, and status of resultant */ 1 226 1 227 /* version number is in form MM.N.Y 1 228* where MM is the major version number, N is the minor version alteration, 1 229* and Y is the lastest modification to that alteration, 1 230* where M and N represent numbers 0-9, and Y is a letter */ 1 231 1 232 declare 1 version_status unal based (version_status_ptr), 1 233 2 cmdb_rmdb, 1 234 3 major fixed bin, 1 235 3 minor fixed bin, 1 236 3 modification char (4), 1 237 2 model, 1 238 3 major fixed bin, 1 239 3 minor fixed bin, 1 240 3 modification char (4), 1 241 2 resultant, 1 242 3 major fixed bin, 1 243 3 minor fixed bin, 1 244 3 modification char (4); 1 245 1 246 declare version_status_ptr ptr; 1 247 1 248 1 249 /* maintains information only about the db creation */ 1 250 1 251 declare 1 changer unal based (changer_ptr), 1 252 2 id char (32), 1 253 2 time fixed bin (71), 1 254 2 next bit (18); /* to next in the singly linked list */ 1 255 1 256 declare changer_ptr ptr; 1 257 1 258 1 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 1 260 02 len fixed bin, /* length of the message */ 1 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 1 262 02 name char (32), /* name of thing that set the message */ 1 263 02 undo_request char (100), /* rmdb request that will undo the operation 1 264* that caused the database to become inconsistent */ 1 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 1 266 1 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 1 268 1 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 1 270 1 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 1 272 1 273 88 89 90 inconsistent_set: entry (db_model_ptr, name, message, undo_request); 91 92 /* set entry point */ 93 94 if db_model_ptr -> db_model.inconsistent_message_offset = NULL_OFFSET 95 then do; 96 message_str_len = 500; 97 allocate message_str set (message_str_ptr) in (db_model_ptr -> db_model.dbm_area); 98 end; 99 else message_str_ptr = pointer (db_model_ptr, db_model_ptr -> db_model.inconsistent_message_offset); 100 101 message_str.len = length (message); 102 message_str.text = message; 103 message_str.name = name; 104 message_str.undo_request = undo_request; 105 message_str.mbz = "0"b; 106 107 db_model_ptr -> db_model.inconsistent_message_offset = rel (message_str_ptr); 108 db_model_ptr -> db_model.consistant = "0"b; 109 110 return; 111 112 inconsistent_reset: entry (db_model_ptr); 113 114 if db_model_ptr -> db_model.inconsistent_message_offset ^= NULL_OFFSET 115 then do; 116 message_str_ptr = pointer (db_model_ptr, db_model_ptr -> db_model.inconsistent_message_offset); 117 message_str.len = 0; 118 message_str.text = ""; 119 message_str.name = ""; 120 message_str.undo_request = ""; 121 end; 122 123 db_model_ptr -> db_model.consistant = "1"b; 124 return; 125 126 inconsistent_get_info: entry (db_model_ptr, O_value, O_name, O_message, O_undo_request); 127 128 O_value = ^db_model_ptr -> db_model.consistant; 129 130 if db_model_ptr -> db_model.inconsistent_message_offset = NULL_OFFSET 131 then do; 132 O_name = ""; 133 O_message = ""; 134 O_undo_request = ""; 135 end; 136 else do; 137 message_str_ptr = pointer (db_model_ptr, db_model_ptr -> db_model.inconsistent_message_offset); 138 O_name = message_str.name; 139 O_message = message_str.text; 140 O_undo_request = message_str.undo_request; 141 end; 142 143 return; 144 145 end mu_db_inconsistent; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1124.2 mu_db_inconsistent.pl1 >udd>sm>ds>w>ml>mu_db_inconsistent.pl1 88 1 10/17/86 1504.3 mdbm_db_model.incl.pl1 >ldd>incl>mdbm_db_model.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. NULL_OFFSET 000100 automatic bit(18) initial packed unaligned dcl 72 set ref 72* 94 114 130 O_message parameter char packed unaligned dcl 67 set ref 126 133* 139* O_name parameter char packed unaligned dcl 66 set ref 126 132* 138* O_undo_request parameter char packed unaligned dcl 68 set ref 126 134* 140* O_value parameter bit(1) packed unaligned dcl 65 set ref 126 128* consistant 11 based bit(1) level 2 packed packed unaligned dcl 1-72 set ref 108* 123* 128 db_model based structure level 1 dcl 1-72 db_model_ptr parameter pointer dcl 58 ref 6 90 94 97 99 99 107 108 112 114 116 116 123 126 128 130 137 137 dbm_area 34 based area level 2 dcl 1-72 ref 97 inconsistent_message_offset 31(18) based bit(18) level 2 packed packed unaligned dcl 1-72 set ref 94 99 107* 114 116 130 137 len based fixed bin(17,0) level 2 packed packed unaligned dcl 1-259 set ref 97* 101* 102 103 104 105 117* 118 119 120 138 139 140 length builtin function dcl 78 ref 101 mbz based bit(36) level 2 packed packed unaligned dcl 1-259 set ref 105* message parameter char packed unaligned dcl 61 ref 6 90 101 102 message_str based structure level 1 packed packed unaligned dcl 1-259 set ref 97 message_str_len 000104 automatic fixed bin(17,0) dcl 1-269 set ref 96* 97 97 message_str_ptr 000102 automatic pointer dcl 1-267 set ref 97* 99* 101 102 103 104 105 107 116* 117 118 119 120 137* 138 139 140 name parameter char packed unaligned dcl 59 in procedure "mu_db_inconsistent" ref 6 90 103 name based char(32) level 2 in structure "message_str" packed packed unaligned dcl 1-259 in procedure "mu_db_inconsistent" set ref 103* 119* 138 pointer builtin function dcl 79 ref 99 116 137 rel builtin function dcl 80 ref 107 text 0(18) based char level 2 packed packed unaligned dcl 1-259 set ref 102* 118* 139 undo_request parameter char packed unaligned dcl 62 in procedure "mu_db_inconsistent" ref 6 90 104 undo_request based char(100) level 2 in structure "message_str" packed packed unaligned dcl 1-259 in procedure "mu_db_inconsistent" set ref 104* 120* 140 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addr builtin function dcl 76 alloc_length internal static fixed bin(35,0) dcl 1-222 changer based structure level 1 packed packed unaligned dcl 1-251 changer_ptr automatic pointer dcl 1-256 constant based structure level 1 unaligned dcl 1-216 constant_ptr automatic pointer dcl 1-220 dbm_ptr automatic pointer dcl 1-106 di_ptr automatic pointer dcl 1-155 domain_info based structure level 1 dcl 1-125 fi_ptr automatic pointer dcl 1-119 file_info based structure level 1 dcl 1-113 fixed builtin function dcl 77 path_entry based structure level 1 packed packed unaligned dcl 1-172 path_entry_ptr automatic pointer dcl 1-177 stack_item based structure level 1 unaligned dcl 1-206 stack_item_ptr automatic pointer dcl 1-212 sys_info$max_seg_size external static fixed bin(35,0) dcl 84 ua_ptr automatic pointer dcl 1-165 unreferenced_attribute based structure level 1 dcl 1-159 version_status based structure level 1 packed packed unaligned dcl 1-232 version_status_ptr automatic pointer dcl 1-246 NAMES DECLARED BY EXPLICIT CONTEXT. inconsistent_get_info 000260 constant entry external dcl 126 inconsistent_reset 000206 constant entry external dcl 112 inconsistent_set 000046 constant entry external dcl 90 mu_db_inconsistent 000015 constant entry external dcl 6 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 456 466 377 466 Length 654 377 10 151 57 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mu_db_inconsistent 75 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mu_db_inconsistent 000100 NULL_OFFSET mu_db_inconsistent 000102 message_str_ptr mu_db_inconsistent 000104 message_str_len mu_db_inconsistent THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac ext_entry ext_entry_desc op_alloc_ NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 72 000004 6 000010 90 000043 94 000074 96 000104 97 000106 98 000127 99 000130 101 000132 102 000141 103 000154 104 000161 105 000166 107 000173 108 000200 110 000202 112 000203 114 000214 116 000224 117 000227 118 000232 119 000242 120 000245 123 000250 124 000252 126 000253 128 000306 130 000321 132 000326 133 000333 134 000340 135 000345 137 000346 138 000350 139 000362 140 000367 143 000374 ----------------------------------------------------------- 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