COMPILATION LISTING OF SEGMENT rmdb_create_db Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/16/86 1334.6 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: ^inddcls,^indattr,indnoniterend,^indnoniterdo,indend,tree,^case,insnl,comcol61,dclind5,declareind5,delnl */ 11 12 /* 13* BEGIN_DESCRIPTION 14* This procedure creates the skeleton of a database, including: 15* db_model (data base model segment) 16* dbc (database control segment) 17* 18* These segments are initialized before returning. 19* If an error occures the data base is not created (it is deleted). 20* 21* END_DESCRIPTION 22**/ 23 24 /****^ HISTORY COMMENTS: 25* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 26* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 27* This routine is really mrds_rst_create_db with some changes in order that 28* we may call it from something else besides the cmdb parser. 29* END HISTORY COMMENTS */ 30 31 rmdb_create_db: 32 proc (Idb_path, Irelation_type, Irelation_modes, Oabsolute_path, Odbm_ptr, Oerror_message, Ocode); 33 34 relation_type = Irelation_type; 35 relation_modes = Irelation_modes; 36 37 db_created_sw = OFF; 38 39 on cleanup call tidy_up; /* Set a cleanup handler */ 40 41 call expand_pathname_$add_suffix (Idb_path, "db", dir, db_ent, code); 42 if code ^= 0 43 then call error (code, Idb_path); 44 absolute_path = pathname_ (dir, db_ent); 45 46 call hcs_$append_branchx (dir, db_ent, 11, RINGS, /* Create the data base directory */ 47 get_group_id_$tag_star (), 1, 0, 0, code); 48 if code ^= 0 49 then call error (code, absolute_path); 50 51 db_created_sw = ON; /* Remember database directory was created */ 52 53 /* create the submodel_dir */ 54 call hcs_$append_branchx (absolute_path, mrds_data_$submodel_dir_name, 11, RINGS, get_group_id_$tag_star (), 1, 55 0, 0, code); 56 if code ^= 0 57 then call error (code, pathname_ (absolute_path, mrds_data_$submodel_dir_name)); 58 59 call hcs_$make_seg (absolute_path, "db_model", "", 10, dbm_ptr, code); 60 /* Create the db_model */ 61 if dbm_ptr = null 62 then call error (code, pathname_ (absolute_path, DB_MODEL_NAME)); 63 else call init_db_model; 64 65 call mdbm_util_$create_control_segment (absolute_path, dbc_ptr, dbc_bit_count, code); 66 if code ^= 0 67 then call error (code, pathname_ (absolute_path, DB_CONTROL_NAME)); 68 69 Oabsolute_path = absolute_path; /* set output parameters */ 70 Odbm_ptr = dbm_ptr; 71 db_created_sw = OFF; /* so cleanup won't delete it */ 72 73 call error (0, ""); 74 75 /* Only exit from this procedure */ 76 exit: 77 return; 78 79 80 error: 81 proc (cd, msg); 82 83 dcl cd fixed bin (35) parameter; 84 dcl msg char (*) parameter; 85 86 call tidy_up; 87 Ocode = cd; /* Set return error code */ 88 if cd = 0 89 then Oerror_message = ""; 90 else Oerror_message = msg; 91 goto exit; 92 93 end error; 94 95 tidy_up: 96 proc; /* Clean up procedure */ 97 98 if db_created_sw /* If database created then delete it */ 99 then do; 100 delete_options.force = ON; 101 delete_options.question = OFF; 102 delete_options.directory = ON; 103 delete_options.segment = ON; 104 delete_options.link = ON; 105 delete_options.chase = ON; 106 delete_options.raw = OFF; 107 delete_options.library = OFF; 108 delete_options.mbz = OFF; 109 110 call delete_$path (dir, db_ent, string (delete_options), MODULE_NAME, (0)); 111 112 end; 113 114 end tidy_up; 115 116 init_db_model: 117 procedure; 118 119 /* This procedure initializes the db_model */ 120 121 db_model_path = rtrim (absolute_path) || DB_MODEL_NAME; 122 123 db_model.version = mdbm_data_$current_version; 124 db_model.dbm_area = empty; 125 db_model.version_ptr = set_version (); 126 db_model.changer_ptr = set_change_time (); 127 db_model.uniq_sw_name = unique_chars_ ("0"b) || ".mrds"; 128 129 if relation_type = "vfile" 130 then do; 131 db_model.db_type_flags.vfile_type = "1"b; 132 db_model.db_type_flags.transactions_needed = "0"b; 133 end; 134 else if relation_type = "data_management_file" 135 then do; 136 db_model.db_type_flags.vfile_type = "0"b; 137 mode_bits.dm_file_type = "1"b; /* default all on */ 138 mode_bits.protection_on = "1"b; 139 mode_bits.concurrency_on = "1"b; 140 mode_bits.rollback_on = "1"b; 141 142 call mrds_rst_proc_ctl_args$parse_mode_string (relation_modes, mode_bits, code, error_message); 143 if code ^= 0 144 then call error (code, "Parsing the mode string """ || rtrim (relation_modes) 145 || """, encountered " || rtrim (error_message)); 146 147 db_model.db_type_flags.concurrency_on = mode_bits.concurrency_on; 148 db_model.db_type_flags.transactions_needed = "1"b; 149 db_model.db_type_flags.rollback_on = mode_bits.rollback_on; 150 end; 151 else call error (error_table_$bad_arg, relation_type); 152 153 db_model.consistant = "1"b; 154 db_model.mdbm_secured = "0"b; 155 db_model.copy_good = "0"b; 156 db_model.reserved = "0"b; 157 db_model.num_rels = 0; 158 db_model.blk_file_id_len = 0; 159 db_model.unblk_file_id_len = 0; 160 db_model.num_blk_files = 0; 161 db_model.num_unblk_files = 0; 162 db_model.num_domains = 0; 163 db_model.num_dyn_links = 0; 164 db_model.max_max_tuples = 0; 165 db_model.pad_1 = 0; 166 db_model.pad_2 = 0; 167 db_model.file_ptr = NULL_OFFSET; 168 db_model.domain_ptr = NULL_OFFSET; 169 db_model.unreferenced_attribute_ptr = NULL_OFFSET; 170 db_model.unused_offsets (*) = NULL_OFFSET; 171 db_model.last_restructuring_history_offset = NULL_OFFSET; 172 db_model.inconsistent_message_offset = NULL_OFFSET; 173 db_model.first_restructuring_history_offset = NULL_OFFSET; 174 175 return; 176 end init_db_model; 177 178 set_version: 179 procedure () returns (bit (18)); 180 181 /* fill in the version structure */ 182 /* this major number was 7 for the MR8 mrds release, 183* it was changed to 8 on 80-11-06, to signify the addition of the submodel_dir to the architecture */ 184 185 allocate version_status in (db_model.dbm_area) set (version_status_ptr); 186 187 /* CMDB/RMDB source code version */ 188 189 version_status.cmdb_rmdb.major = mrds_data_$current_version_status; 190 /* MR8.0 */ 191 version_status.cmdb_rmdb.minor = 0; 192 version_status.cmdb_rmdb.modification = " "; 193 194 /* database model version */ 195 196 version_status.model.major = mrds_data_$current_version_status; 197 version_status.model.minor = 0; 198 version_status.model.modification = " "; 199 200 /* resultant model version */ 201 202 version_status.resultant.major = mrds_data_$current_version_status; 203 version_status.resultant.minor = 0; 204 version_status.resultant.modification = " "; 205 206 return (rel (version_status_ptr)); 207 208 end set_version; 209 210 set_change_time: 211 procedure () returns (bit (18)); 212 213 /* fill in the user_id and time for the database creator */ 214 215 allocate changer in (db_model.dbm_area) set (changer_ptr); 216 217 changer.id = get_group_id_ (); 218 changer.time = clock (); 219 changer.next = NULL_OFFSET; /* creator = last on list */ 220 221 return (rel (changer_ptr)); 222 223 end set_change_time; 224 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 225 226 2 1 /* BEGIN INCLUDE FILE mdbm_dbc.incl.pl1 08/23/78 odf */ 2 2 2 3 /* HISTORY: 2 4* 2 5* Modified by odf for new version data bases in August 1978 2 6* Modified by Al Kepner, March 8, 1979 to add new flags for quiescing 2 7* Modified by M. Pierret, 8 April 1980 to look prettier, add pads 2 8* Modified by M. Pierret, 22 August 1980, grouping like fields (flags, offsets..) 2 9* 2 10* 80-11-19 Jim Gray : modified to change version number from 4 to 5 to allow 2 11* automatic update of dbc structures to new r-s-m-d-u scope codes from r-u. 2 12**/ 2 13 2 14 dcl 1 dbc based (dbc_ptr), /* data base control segment description */ 2 15 2 proper, 2 16 3 version fixed bin, /* version number of this structure */ 2 17 3 dtd_mrds fixed bin (71), /* date time dumped by mrds utility */ 2 18 3 flags, 2 19 4 trouble_switch bit (1) unal, /* ON => ungraceful termination of a user process */ 2 20 4 dead_proc_flag bit (1) unal, /* ON => dead process has access to part of data base */ 2 21 4 quiesce_sw bit (1) unal, /* ON => db is quiesced for a administrative user */ 2 22 4 quiesce_db bit (1) unal, /* ON => The entire data base is being quiesced. */ 2 23 4 quiesce_files bit (1) unal, /* ON => A selected set of files is being quiesced. */ 2 24 4 pad bit (31) unal, /* reserved for future use */ 2 25 3 quiesce_lock bit (36) aligned, /* lock word for quiescing data base */ 2 26 3 wakeup_waiters fixed bin, /* nbr users who have been sent a wakeup signal but have not yet 2 27* received it */ 2 28 3 user_counts, 2 29 4 open_users fixed bin, /* nbr of users with data base open in any mode */ 2 30 4 active_users fixed bin, /* nbr of users currently having a scope set */ 2 31 4 waiting_users fixed bin, /* nbr of users waiting to set scope */ 2 32 3 open_lock bit (36) aligned, /* lock word for opening data base */ 2 33 3 scope_lock bit (36) aligned, /* lock word for setting and deleting scope */ 2 34 3 sa_size fixed bin (35), /* size in words of static area */ 2 35 3 pad2 bit (144), 2 36 3 offsets, 2 37 4 open_users_ofs bit (18) unal, /* bit offset to list of users with data base currently open */ 2 38 4 active_users_ofs bit (18) unal, /* bit offset to list of active users in shared mode */ 2 39 4 waiting_users_ofs bit (18) unal, /* bit offset to list of waiting users in shared mode */ 2 40 4 obsolete bit (36) unal, /* obsolete */ 2 41 3 pad3 bit (144), 2 42 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbc.static_area))) + 1); 2 43 2 44 dcl dbc_ptr ptr init (null ()); 2 45 2 46 dcl VERSION_NBR fixed bin init (5) static internal options (constant); 2 47 2 48 2 49 /* END mdbm_dcb.incl.pl1 */ 2 50 2 51 227 228 3 1 /* START OF: mrds_rst_arg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 /* This structure contains information describing some of the attributes 3 5* of mrds relations. */ 3 6 3 7 dcl 1 db_relation_modes, 3 8 2 dm_file_type bit (1), /* Set if the relation is a dm_file. Not set if a vfile */ 3 9 2 protection_on bit (1), /* Set if protection is enabled for a dm file */ 3 10 2 concurrency_on bit (1), /* Set if concurrency is enabled (protected files only \) */ 3 11 2 rollback_on bit (1); /* Set if before journals are to be kept (protected files only) */ 3 12 3 13 3 14 3 15 /* This structure contains the information determined about 3 16* create_mrds_db control arguments */ 3 17 3 18 dcl 1 arg_info based (ai_ptr), 3 19 2 list bit (1) unal init ("0"b), /* ON => Create a listing segment */ 3 20 2 twd bit (1) unal init ("0"b), /* ON => a temporary working directory path was supplied */ 3 21 2 secure bit (1) unal init ("0"b), /* on => set secured bit in db_model at creation time */ 3 22 2 force bit (1) unal init ("0"b), /* on => delete existing dir of same name as new db */ 3 23 2 relation_mode_flags like db_relation_modes, 3 24 2 unused bit (23) unal init ("0"b), /* reserved for future use */ 3 25 2 source_dir char (168), /* Directory pathname of source (INPUT) segment */ 3 26 2 source_entry char (32), /* Entry name of source segment */ 3 27 2 db_dir_path char (168), /* Pathname of database directory */ 3 28 2 temp_work_dir char (168); /* Pathname of temporary working directory */ 3 29 3 30 dcl ai_ptr ptr; /* Pointer to arg_info structure */ 3 31 3 32 /* END OF: mrds_rst_arg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 229 230 4 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 4 2 4 3 /* control flag bit string passed to delete_$path and delete_$ptr 4 4* 4 5* Jay Pattin 6/6/83 */ 4 6 4 7 declare 1 delete_options, 4 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 4 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 4 10 2 directory bit (1) unaligned, /* ON = delete directories */ 4 11 2 segment bit (1) unaligned, /* ON = delete segments */ 4 12 2 link bit (1) unaligned, /* ON = delete links */ 4 13 2 chase bit (1) unaligned, /* ON = delete through links */ 4 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 4 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 4 16 2 mbz bit (28) unaligned; 4 17 4 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 231 232 233 /* External entries */ 234 235 dcl empty builtin; 236 dcl null builtin; 237 dcl error_message char (500); 238 dcl absolute_path char (168); 239 dcl addr builtin; 240 dcl cleanup condition; 241 dcl clock builtin; 242 dcl code fixed bin (35); /* error code */ 243 dcl DB_CONTROL_NAME char (32) int static options (constant) init ("db.control"); 244 dcl db_created_sw bit (1); /* ON => Db_directory was created */ 245 dcl db_ent char (32); /* Data base directory name */ 246 dcl DB_MODEL_NAME char (32) int static options (constant) init ("db_model"); 247 dcl db_model_path char (168); /* path down to db_model segment */ 248 dcl dbc_bit_count fixed bin (24); 249 dcl delete_$path entry (char (*), char (*), bit (36) aligned, char (*), fixed bin (35)); 250 dcl dir char (168); /* Directory superior to data base */ 251 dcl error_table_$bad_arg fixed bin (35) ext static; 252 dcl expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)); 253 dcl fixed builtin; 254 dcl get_group_id_ entry returns (char (32)); 255 dcl get_group_id_$tag_star entry returns (char (32)); 256 dcl hcs_$append_branchx 257 entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), fixed bin (1), 258 fixed bin (24), fixed bin (35)); 259 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 260 dcl Idb_path char (*) parameter; 261 dcl Irelation_modes char (*) parameter; 262 dcl Irelation_type char (*) parameter; 263 dcl mdbm_data_$current_version ext fixed bin (35); 264 dcl mdbm_util_$create_control_segment entry (char (168), ptr, fixed bin (24), fixed bin (35)); 265 dcl 1 mode_bits like db_relation_modes; 266 dcl MODULE_NAME char (18) int static options (constant) init ("rmdb_create_db"); 267 dcl mrds_data_$current_version_status fixed bin (35) ext; /* display_mrds_dm needs to know about this */ 268 dcl mrds_data_$submodel_dir_name char (16) ext; /* common place to get name of submodel dir */ 269 dcl mrds_rst_proc_ctl_args$parse_mode_string entry (char(*), 1, 2 bit(1) unal, 2 bit(1) unal, 2 bit(1) unal, 270 2 bit(1) unal, fixed bin(35), char(*)); 271 dcl NULL_OFFSET bit (18) unal int static options (constant) init ("111111111111111111"b); 272 dcl Oabsolute_path char (*) parameter; 273 dcl Ocode fixed bin (35) parameter; 274 dcl Odbm_ptr ptr parameter; 275 dcl Oerror_message char (*) parameter; 276 dcl OFF bit (1) int static options (constant) init ("0"b); 277 dcl ON bit (1) int static options (constant) init ("1"b); 278 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 279 dcl rel builtin; 280 dcl relation_modes char (256); 281 dcl relation_type char (32); 282 dcl RINGS (3) fixed bin (3) init static options (constant) init (7, 7, 7); 283 /* Ring brackets */ 284 dcl rtrim builtin; 285 dcl string builtin; 286 dcl sys_info$max_seg_size ext fixed bin (35); 287 dcl unique_chars_ entry (bit (*)) returns (char (15)); /* unique char string routine */ 288 289 end rmdb_create_db; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/86 1144.1 rmdb_create_db.pl1 >special_ldd>install>MR12.0-1187>rmdb_create_db.pl1 225 1 10/16/86 1139.3 mdbm_db_model.incl.pl1 >special_ldd>install>MR12.0-1187>mdbm_db_model.incl.pl1 227 2 10/14/83 1609.0 mdbm_dbc.incl.pl1 >ldd>include>mdbm_dbc.incl.pl1 229 3 10/14/83 1609.1 mrds_rst_arg_info.incl.pl1 >ldd>include>mrds_rst_arg_info.incl.pl1 231 4 10/14/83 1606.7 delete_options.incl.pl1 >ldd>include>delete_options.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DB_CONTROL_NAME 000020 constant char(32) initial unaligned dcl 243 set ref 66* 66* DB_MODEL_NAME 000010 constant char(32) initial unaligned dcl 246 set ref 61* 61* 121 Idb_path parameter char unaligned dcl 260 set ref 31 41* 42* Irelation_modes parameter char unaligned dcl 261 ref 31 35 Irelation_type parameter char unaligned dcl 262 ref 31 34 MODULE_NAME 000003 constant char(18) initial unaligned dcl 266 set ref 110* NULL_OFFSET constant bit(18) initial unaligned dcl 271 ref 167 168 169 170 171 172 173 219 OFF constant bit(1) initial unaligned dcl 276 ref 37 71 101 106 107 108 ON constant bit(1) initial unaligned dcl 277 ref 51 100 102 103 104 105 Oabsolute_path parameter char unaligned dcl 272 set ref 31 69* Ocode parameter fixed bin(35,0) dcl 273 set ref 31 87* Odbm_ptr parameter pointer dcl 274 set ref 31 70* Oerror_message parameter char unaligned dcl 275 set ref 31 88* 90* RINGS 000000 constant fixed bin(3,0) initial array dcl 282 set ref 46* 54* absolute_path 000307 automatic char(168) unaligned dcl 238 set ref 44* 48* 54* 56* 56* 59* 61* 61* 65* 66* 66* 69 121 addr builtin function dcl 239 ref 124 blk_file_id_len 12 based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 158* cd parameter fixed bin(35,0) dcl 83 ref 80 87 88 changer based structure level 1 packed unaligned dcl 1-251 set ref 215 changer_ptr 32(18) based bit(18) level 2 in structure "db_model" packed unaligned dcl 1-72 in procedure "rmdb_create_db" set ref 126* changer_ptr 000104 automatic pointer dcl 1-256 in procedure "rmdb_create_db" set ref 215* 217 218 219 221 chase 0(05) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 105* cleanup 000362 stack reference condition dcl 240 ref 39 clock builtin function dcl 241 ref 218 cmdb_rmdb based structure level 2 packed unaligned dcl 1-232 code 000370 automatic fixed bin(35,0) dcl 242 set ref 41* 42 42* 46* 48 48* 54* 56 56* 59* 61* 65* 66 66* 142* 143 143* concurrency_on 0(33) based bit(1) level 3 in structure "db_model" packed unaligned dcl 1-72 in procedure "rmdb_create_db" set ref 147* concurrency_on 0(02) 000527 automatic bit(1) level 2 in structure "mode_bits" packed unaligned dcl 265 in procedure "rmdb_create_db" set ref 139* 147 consistant 11 based bit(1) level 2 packed unaligned dcl 1-72 set ref 153* copy_good 0(18) based bit(1) level 3 packed unaligned dcl 1-72 set ref 155* db_created_sw 000371 automatic bit(1) unaligned dcl 244 set ref 37* 51* 71* 98 db_ent 000372 automatic char(32) unaligned dcl 245 set ref 41* 44* 46* 110* db_model based structure level 1 dcl 1-72 db_model_path 000402 automatic char(168) unaligned dcl 247 set ref 121* db_relation_modes 000110 automatic structure level 1 packed unaligned dcl 3-7 db_type_flags 0(18) based structure level 2 packed unaligned dcl 1-72 dbc_bit_count 000454 automatic fixed bin(24,0) dcl 248 set ref 65* dbc_ptr 000106 automatic pointer initial dcl 2-44 set ref 65* 2-44* dbm_area 34 based area level 2 dcl 1-72 set ref 124* 124 185 215 dbm_ptr 000100 automatic pointer dcl 1-106 set ref 59* 61 70 123 124 124 125 126 127 131 132 136 147 148 149 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 185 215 delete_$path 000010 constant entry external dcl 249 ref 110 delete_options 000111 automatic structure level 1 packed unaligned dcl 4-7 set ref 110 110 dir 000455 automatic char(168) unaligned dcl 250 set ref 41* 44* 46* 110* directory 0(02) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 102* dm_file_type 000527 automatic bit(1) level 2 packed unaligned dcl 265 set ref 137* domain_ptr 22(18) based bit(18) level 2 packed unaligned dcl 1-72 set ref 168* empty builtin function dcl 235 ref 124 error_message 000112 automatic char(500) unaligned dcl 237 set ref 142* 143 error_table_$bad_arg 000012 external static fixed bin(35,0) dcl 251 set ref 151* expand_pathname_$add_suffix 000014 constant entry external dcl 252 ref 41 file_ptr 22 based bit(18) level 2 packed unaligned dcl 1-72 set ref 167* first_restructuring_history_offset 32 based bit(18) level 2 packed unaligned dcl 1-72 set ref 173* fixed builtin function dcl 253 ref 124 force 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 100* get_group_id_ 000016 constant entry external dcl 254 ref 217 get_group_id_$tag_star 000020 constant entry external dcl 255 ref 46 46 54 54 hcs_$append_branchx 000022 constant entry external dcl 256 ref 46 54 hcs_$make_seg 000024 constant entry external dcl 259 ref 59 id based char(32) level 2 packed unaligned dcl 1-251 set ref 217* inconsistent_message_offset 31(18) based bit(18) level 2 packed unaligned dcl 1-72 set ref 172* last_restructuring_history_offset 31 based bit(18) level 2 packed unaligned dcl 1-72 set ref 171* library 0(06) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 107* link 0(04) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 104* major based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 189* major 2 based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 196* major 4 based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 202* max_max_tuples 15(18) based fixed bin(35,0) level 2 packed unaligned dcl 1-72 set ref 164* mbz 0(08) 000111 automatic bit(28) level 2 packed unaligned dcl 4-7 set ref 108* mdbm_data_$current_version 000026 external static fixed bin(35,0) dcl 263 ref 123 mdbm_secured 11(01) based bit(1) level 2 packed unaligned dcl 1-72 set ref 154* mdbm_util_$create_control_segment 000030 constant entry external dcl 264 ref 65 minor 2(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 197* minor 0(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 191* minor 4(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 203* mode_bits 000527 automatic structure level 1 packed unaligned dcl 265 set ref 142* model 2 based structure level 2 packed unaligned dcl 1-232 modification 3 based char(4) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 198* modification 5 based char(4) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 204* modification 1 based char(4) level 3 in structure "version_status" packed unaligned dcl 1-232 in procedure "rmdb_create_db" set ref 192* mrds_data_$current_version_status 000032 external static fixed bin(35,0) dcl 267 ref 189 196 202 mrds_data_$submodel_dir_name 000034 external static char(16) unaligned dcl 268 set ref 54* 56* 56* mrds_rst_proc_ctl_args$parse_mode_string 000036 constant entry external dcl 269 ref 142 msg parameter char unaligned dcl 84 ref 80 90 next 12 based bit(18) level 2 packed unaligned dcl 1-251 set ref 219* null builtin function dcl 236 ref 61 2-44 num_blk_files 13 based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 160* num_domains 14(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 162* num_dyn_links 15 based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 163* num_rels 14 based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 157* num_unblk_files 13(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 161* pad_1 16(18) based fixed bin(35,0) level 2 packed unaligned dcl 1-72 set ref 165* pad_2 17(18) based fixed bin(35,0) level 2 packed unaligned dcl 1-72 set ref 166* pathname_ 000040 constant entry external dcl 278 ref 44 56 56 61 61 66 66 protection_on 0(01) 000527 automatic bit(1) level 2 packed unaligned dcl 265 set ref 138* question 0(01) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 101* raw 0(07) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 106* rel builtin function dcl 279 ref 124 206 221 relation_modes 000530 automatic char(256) unaligned dcl 280 set ref 35* 142* 143 relation_type 000630 automatic char(32) unaligned dcl 281 set ref 34* 129 134 151* reserved 11(02) based bit(34) level 2 packed unaligned dcl 1-72 set ref 156* resultant 4 based structure level 2 packed unaligned dcl 1-232 rollback_on 0(03) 000527 automatic bit(1) level 2 in structure "mode_bits" packed unaligned dcl 265 in procedure "rmdb_create_db" set ref 140* 149 rollback_on 0(32) based bit(1) level 3 in structure "db_model" packed unaligned dcl 1-72 in procedure "rmdb_create_db" set ref 149* rtrim builtin function dcl 284 ref 121 143 143 segment 0(03) 000111 automatic bit(1) level 2 packed unaligned dcl 4-7 set ref 103* string builtin function dcl 285 ref 110 110 sys_info$max_seg_size 000042 external static fixed bin(35,0) dcl 286 ref 124 time 10 based fixed bin(71,0) level 2 packed unaligned dcl 1-251 set ref 218* transactions_needed 0(34) based bit(1) level 3 packed unaligned dcl 1-72 set ref 132* 148* unblk_file_id_len 12(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 159* uniq_sw_name 1 based char(32) level 2 dcl 1-72 set ref 127* unique_chars_ 000044 constant entry external dcl 287 ref 127 unreferenced_attribute_ptr 23 based bit(18) level 2 packed unaligned dcl 1-72 set ref 169* unused_offsets 23(18) based bit(18) array level 2 packed unaligned dcl 1-72 set ref 170* version based fixed bin(17,0) level 2 packed unaligned dcl 1-72 set ref 123* version_ptr 21 based bit(18) level 2 dcl 1-72 set ref 125* version_status based structure level 1 packed unaligned dcl 1-232 set ref 185 version_status_ptr 000102 automatic pointer dcl 1-246 set ref 185* 189 191 192 196 197 198 202 203 204 206 vfile_type 0(35) based bit(1) level 3 packed unaligned dcl 1-72 set ref 131* 136* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. VERSION_NBR internal static fixed bin(17,0) initial dcl 2-46 ai_ptr automatic pointer dcl 3-30 alloc_length internal static fixed bin(35,0) dcl 1-222 arg_info based structure level 1 packed unaligned dcl 3-18 constant based structure level 1 unaligned dcl 1-216 constant_ptr automatic pointer dcl 1-220 dbc based structure level 1 unaligned dcl 2-14 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 message_str based structure level 1 packed unaligned dcl 1-259 message_str_len automatic fixed bin(17,0) dcl 1-269 message_str_ptr automatic pointer dcl 1-267 path_entry based structure level 1 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 ua_ptr automatic pointer dcl 1-165 unreferenced_attribute based structure level 1 dcl 1-159 NAMES DECLARED BY EXPLICIT CONTEXT. error 000761 constant entry internal dcl 80 ref 42 48 56 61 66 73 143 151 exit 000757 constant label dcl 76 ref 91 init_db_model 001120 constant entry internal dcl 116 ref 63 rmdb_create_db 000127 constant entry external dcl 31 set_change_time 001630 constant entry internal dcl 210 ref 126 set_version 001543 constant entry internal dcl 178 ref 125 tidy_up 001032 constant entry internal dcl 95 ref 39 86 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2156 2224 1702 2166 Length 2522 1702 46 262 253 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rmdb_create_db 604 external procedure is an external procedure. on unit on line 39 64 on unit error 65 internal procedure is called during a stack extension. tidy_up 88 internal procedure is called by several nonquick procedures. init_db_model internal procedure shares stack frame of external procedure rmdb_create_db. set_version internal procedure shares stack frame of external procedure rmdb_create_db. set_change_time internal procedure shares stack frame of external procedure rmdb_create_db. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rmdb_create_db 000100 dbm_ptr rmdb_create_db 000102 version_status_ptr rmdb_create_db 000104 changer_ptr rmdb_create_db 000106 dbc_ptr rmdb_create_db 000110 db_relation_modes rmdb_create_db 000111 delete_options rmdb_create_db 000112 error_message rmdb_create_db 000307 absolute_path rmdb_create_db 000370 code rmdb_create_db 000371 db_created_sw rmdb_create_db 000372 db_ent rmdb_create_db 000402 db_model_path rmdb_create_db 000454 dbc_bit_count rmdb_create_db 000455 dir rmdb_create_db 000527 mode_bits rmdb_create_db 000530 relation_modes rmdb_create_db 000630 relation_type rmdb_create_db THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry_desc int_entry int_entry_desc op_alloc_ op_empty_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. delete_$path expand_pathname_$add_suffix get_group_id_ get_group_id_$tag_star hcs_$append_branchx hcs_$make_seg mdbm_util_$create_control_segment mrds_rst_proc_ctl_args$parse_mode_string pathname_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg mdbm_data_$current_version mrds_data_$current_version_status mrds_data_$submodel_dir_name sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 31 000121 2 44 000166 34 000170 35 000176 37 000203 39 000204 41 000226 42 000263 44 000303 46 000323 48 000410 51 000426 54 000430 56 000515 59 000553 61 000614 63 000655 65 000656 66 000673 69 000731 70 000737 71 000741 73 000742 76 000757 80 000760 86 000774 87 001001 88 001006 90 001016 91 001026 95 001031 98 001037 100 001042 101 001044 102 001046 103 001050 104 001052 105 001054 106 001056 107 001060 108 001062 110 001064 114 001117 116 001120 121 001121 123 001147 124 001155 125 001172 126 001200 127 001210 129 001243 131 001250 132 001252 133 001254 134 001255 136 001261 137 001263 138 001265 139 001267 140 001271 142 001273 143 001320 147 001417 148 001425 149 001427 150 001434 151 001435 153 001452 154 001455 155 001457 156 001461 157 001463 158 001465 159 001466 160 001470 161 001472 162 001474 163 001476 164 001500 165 001503 166 001505 167 001507 168 001511 169 001513 170 001515 171 001534 172 001536 173 001540 175 001542 178 001543 185 001545 189 001553 191 001562 192 001565 196 001570 197 001576 198 001601 202 001604 203 001612 204 001615 206 001620 210 001630 215 001632 217 001640 218 001646 219 001654 221 001657 ----------------------------------------------------------- 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