COMPILATION LISTING OF SEGMENT mrds_rst_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.3 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 mrds_rst_create_db: proc (rsc_ptr, dbm_ptr, code); 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 15* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 16* initialize unreferenced_attribute_ptr offset. 17* END HISTORY COMMENTS */ 18 19 20 /* 21* BEGIN_DESCRIPTION 22* This procedure creates the skeleton of a database, including: 23* db_model (data base model segment) 24* dbc (database control segment) 25* 26* These segments are initialized before returning. 27* If an error occures the data base is not created (it is deleted). 28* END_DESCRIPTION 29**/ 30 31 32 /* HISTORY 33* 34* Written by Roger D. Lackey December 1978 35* 36* Modified by Jim Gray - 3/20/79 - - to handle new versions of model and working storage (rsc) 37* 38* Modified by Jim Gray - - 80-11-06, to 39* 1) add initialization of mdbm_secured bit in db_model 40* 2) always create a submodel_dir under the database dir 41* 3) change the version_status major number from 7 to 8 42* 4) put the version_status number in a mrds_data_ entry 43* 44* Modified by Jim Gray - - 80-11-07, to put the name of the submodel dir 45* in a standard mrds_data_ entry fors users and mrds to refer to. 46* 47* Modified by Jim Gray - - 80-11-10, to change delete_$path to calls to hcs_$delentry_file 48* and hcs_$del_dir_tree for performance purposes. 49* 50* 80-12-09 Jim Gray : mdbm_util_$init_dbc changed to call to mdbm_util_$create_control_segment 51* as part of r-u to r-s-m-d scope mode and dbc version change. 52* CMDB now always creates version 5 dbc structures in a segment "db.control". 53* 54* 82-04-09 Davids: modified the init_db_model procedure so that it uses 55* . the new names for elements in the db_model, specifically 56* . unused_offsets and restructuring_history_offset. 57* 58* 82-04-15 Davids: changed unused_offset (13) to inconsistent_message_offset 59* 60* 82-05-04 Davids: changed unused_offset (12) to last_restructuring_history_offset 61* . and added the prefix first_ to restructuring_history_offset 62* 63* 82-08-19 Davids: changed code to set the value of db_model.db_type to either 64* 1 (vfile db) or 2 (page_file db) based on the value of 65* rsc.db_type instead of just always setting it to 1. 66* 67* 83-02-14 Davids: modified to use the new db_type_flags in the db_model 68* structure instead of the old numeric db_type. 69* 70* 83-10-04 Benjamin: reverted change of 80-11-10. 71**/ 72 73 /* PARAMETERS 74* 75* rsc_ptr (INPUT) pointer to control segment (contains rsc.temp_dir (database path)) 76* dbm_ptr (OUTPUT) pointer to db_model 77* code (OUTPUT) error code 78* 79* */ 80 81 db_created_sw = OFF; 82 83 on cleanup call tidy_up; /* Set a cleanup handler */ 84 85 if rsc.meter_sw | rsc.trace_sw then 86 call mrds_rst_meter (rsc_ptr, MODULE_NAME, ON, ""); 87 88 call expand_pathname_ (rsc.temp_dir, dir, db_ent, code); 89 if code ^= 0 then call error (code); 90 91 call hcs_$append_branchx (dir, db_ent, 11, RINGS, /* Create the data base directory */ 92 get_group_id_$tag_star (), 1, 0, 0, code); 93 if code ^= 0 then call error (code); 94 95 db_created_sw = ON; /* Remember database directory was created */ 96 97 call hcs_$append_branchx (rtrim (dir) || ">" || rtrim (db_ent), /* create the submodel_dir */ 98 mrds_data_$submodel_dir_name, 11, RINGS, get_group_id_$tag_star (), 1, 0, 0, code); 99 if code ^= 0 then call error (code); 100 101 call hcs_$make_seg (rsc.temp_dir, "db_model", "", 10, dbm_ptr, code); /* Create the db_model */ 102 if dbm_ptr = null then call error (code); 103 104 else call init_db_model; 105 106 call mdbm_util_$create_control_segment (rsc.temp_dir, dbc_ptr, dbc_bit_count, code); 107 if code ^= 0 then call error (code); 108 109 110 exit: if rsc.meter_sw | rsc.trace_sw then 111 call mrds_rst_meter (rsc_ptr, MODULE_NAME, OFF, ""); 112 113 return; /* Only exit from this procedure */ 114 115 error: proc (cd); 116 117 dcl cd fixed bin (35); 118 119 call tidy_up; 120 code = cd; /* Set return error code */ 121 goto exit; 122 123 end error; 124 125 126 127 128 129 tidy_up: proc; /* Clean up procedure */ 130 131 if db_created_sw /* If database created then delete it */ 132 then do; 133 delete_options.force = ON; 134 delete_options.question = OFF; 135 delete_options.directory = ON; 136 delete_options.segment = ON; 137 delete_options.link = ON; 138 delete_options.chase = ON; 139 delete_options.raw = OFF; 140 delete_options.library = OFF; 141 delete_options.mbz = OFF; 142 143 call delete_$path (dir, db_ent, string (delete_options), MODULE_NAME, code); 144 145 end; 146 147 end tidy_up; 148 149 init_db_model: procedure; 150 151 /* This procedure initializes the db_model */ 152 153 db_model_path = rtrim (rsc.temp_dir) || ">db_model"; 154 155 db_model.version = mdbm_data_$current_version; 156 db_model.dbm_area = empty; 157 db_model.version_ptr = set_version (); 158 db_model.changer_ptr = set_change_time (); 159 db_model.uniq_sw_name = unique_chars_ ("0"b) || ".mrds" || copy (" ", 32 - 15 - 5); /* unique switch name */ 160 db_model.db_type_flags.vfile_type = 161 ^rsc.db_relation_mode_flags.dm_file_type; 162 db_model.db_type_flags.concurrency_on = 163 rsc.db_relation_mode_flags.concurrency_on; 164 db_model.db_type_flags.transactions_needed = 165 rsc.db_relation_mode_flags.protection_on; 166 db_model.db_type_flags.rollback_on = 167 rsc.db_relation_mode_flags.rollback_on; 168 db_model.consistant = "0"b; 169 db_model.mdbm_secured = rsc.secure; /* on if cmdb -secure option */ 170 db_model.copy_good = "0"b; 171 db_model.reserved = "0"b; 172 db_model.num_rels = 0; 173 db_model.blk_file_id_len = 0; 174 db_model.unblk_file_id_len = 0; 175 db_model.num_blk_files = 0; 176 db_model.num_unblk_files = 0; 177 db_model.num_domains = 0; 178 db_model.num_dyn_links = 0; 179 db_model.max_max_tuples = 0; 180 db_model.pad_1 = 0; 181 db_model.pad_2 = 0; 182 db_model.file_ptr = NULL_OFFSET; 183 db_model.domain_ptr = NULL_OFFSET; 184 db_model.unreferenced_attribute_ptr = NULL_OFFSET; 185 db_model.unused_offsets (*) = NULL_OFFSET; 186 db_model.last_restructuring_history_offset = NULL_OFFSET; 187 db_model.inconsistent_message_offset = NULL_OFFSET; 188 db_model.first_restructuring_history_offset = NULL_OFFSET; 189 190 return; 191 end init_db_model; 192 193 set_version: procedure () returns (bit (18)); 194 195 /* fill in the version structure */ 196 /* this major number was 7 for the MR8 mrds release, 197* it was changed to 8 on 80-11-06, to signify the addition of the submodel_dir to the architecture */ 198 199 call mrds_rst_model_alloc (rsc_ptr, db_model_path, VERSION_STATUS, version_status_ptr); 200 201 if version_status_ptr = null () then 202 call model_overflow ("version_status"); 203 else do; 204 205 206 /* CMDB/RMDB source code version */ 207 208 version_status.cmdb_rmdb.major = mrds_data_$current_version_status; /* MR8.0 */ 209 version_status.cmdb_rmdb.minor = 0; 210 version_status.cmdb_rmdb.modification = " "; 211 212 /* database model version */ 213 214 version_status.model.major = mrds_data_$current_version_status; 215 version_status.model.minor = 0; 216 version_status.model.modification = " "; 217 218 /* resultant model version */ 219 220 version_status.resultant.major = mrds_data_$current_version_status; 221 version_status.resultant.minor = 0; 222 version_status.resultant.modification = " "; 223 224 end; 225 226 227 return (rel (version_status_ptr)); 228 229 end; 230 231 set_change_time: procedure () returns (bit (18)); 232 233 /* fill in the user_id and time for the database creator */ 234 235 call mrds_rst_model_alloc (rsc_ptr, db_model_path, CHANGER, changer_ptr); 236 237 if changer_ptr = null () then 238 call model_overflow ("changer"); 239 240 else do; 241 242 changer.id = get_group_id_ (); 243 changer.time = clock (); 244 changer.next = NULL_OFFSET; /* creator = last on list */ 245 246 end; 247 248 return (rel (changer_ptr)); 249 250 end; 251 252 model_overflow: procedure (struct_cause); 253 254 /* report mdb_model overflow, first time only */ 255 256 if rsc.model_overflow then ; 257 else do; 258 rsc.model_overflow = ON; 259 260 call ioa_$rs ("^a^a^a^a", message, message_length, 261 "LOGIC ERROR in mrds_rst_create_db, the db_model area overflowed", 262 "while processing the structure """, struct_cause, """."); 263 264 call mrds_rst_error (rsc_ptr, 4 /* severity */, mrds_error_$rst_logic_error, (message)); 265 266 end; 267 268 269 270 declare struct_cause char (*); /* either "changer", or "version_status" */ 271 272 end; 273 274 /* External entries */ 275 276 declare ioa_$rs entry options (variable); /* string manipulator */ 277 declare mrds_error_$rst_logic_error fixed bin (35) ext; /* program error */ 278 declare mrds_rst_error entry (ptr, fixed bin, fixed bin (35), char (*)); /* general error routine */ 279 declare mrds_rst_model_alloc entry (ptr, char (*), fixed bin, ptr); /* model allocation routine */ 280 declare unique_chars_ entry (bit (*)) returns (char (15)); /* unique char string routine */ 281 dcl mdbm_util_$create_control_segment entry (char (168), ptr, fixed bin (24), fixed bin (35)); 282 declare dbc_bit_count fixed bin (24); 283 dcl mdbm_data_$current_version ext fixed bin (35); 284 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 285 dcl get_group_id_$tag_star entry returns (char (32)); 286 dcl get_group_id_ entry returns (char (32)); 287 dcl clock builtin; 288 dcl addr builtin; 289 dcl copy builtin; 290 dcl fixed builtin; 291 dcl rel builtin; 292 dcl rtrim builtin; 293 dcl string builtin; 294 dcl delete_$path entry (char (*), char (*), bit (36) aligned, char (*), 295 fixed bin (35)); 296 dcl hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), fixed bin (1), 297 fixed bin (24), fixed bin (35)); 298 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 299 dcl mrds_rst_meter entry (ptr, char (*), bit (1), char (*)); 300 dcl MODULE_NAME char (18) int static options (constant) init ("mrds_rst_create_db"); 301 dcl OFF bit (1) int static options (constant) init ("0"b); 302 dcl ON bit (1) int static options (constant) init ("1"b); 303 dcl RINGS (3) fixed bin (3) init static options (constant) init (7, 7, 7); /* Ring brackets */ 304 305 306 declare message char (120) varying;/* specifics of error message */ 307 declare message_length fixed bin (21); /* length of specifics string */ 308 dcl dir char (168); /* Directory superior to data base */ 309 declare db_model_path char (168); /* path down to db_model segment */ 310 declare mrds_data_$current_version_status fixed bin (35) ext; /* display_mrds_dm needs to know about this */ 311 declare mrds_data_$submodel_dir_name char (16) ext; /* common place to get name of submodel dir */ 312 dcl db_ent char (32); /* Data base directory name */ 313 dcl code fixed bin (35); /* error code */ 314 dcl db_created_sw bit (1); /* ON => Db_directory was created */ 315 dcl (empty, null) builtin; 316 dcl NULL_OFFSET bit (18) unal int static options (constant) init ("111111111111111111"b); 317 dcl cleanup condition; 318 dcl sys_info$max_seg_size ext fixed bin (35); 319 1 1 /* BEGIN INCLUDE FILE mrds_rst_struct_types.incl.pl1 - - Jim Gray 2/20/79 */ 1 2 1 3 /* these constants are used to identify structures to be allocated 1 4* to the general purpose allocation routines */ 1 5 1 6 /* HISTORY: 1 7* 82-06-28 Roger Lackey : Removed struct types 52, 53, 54, 55, 56, 57, 58 1 8* Type 25 is no longer used and is handled with special code so bounds of 1 9* array could continue to work */ 1 10 1 11 /* PARSE INFO STRUCTURES */ 1 12 1 13 declare DOMAIN fixed bin internal static options (constant) init (1) ; 1 14 declare ATTRIBUTE_DOMAIN fixed bin internal static options (constant) init (2) ; 1 15 declare RELATION fixed bin internal static options (constant) init (3) ; 1 16 declare ATTRIBUTE fixed bin internal static options (constant) init (4) ; 1 17 declare FILE fixed bin internal static options (constant) init (5) ; 1 18 declare ITEM fixed bin internal static options (constant) init (6) ; 1 19 declare LINK fixed bin internal static options (constant) init (7) ; 1 20 declare FOREIGN_KEY fixed bin internal static options (constant) init (8) ; 1 21 declare CHILDREN fixed bin internal static options (constant) init (9) ; 1 22 declare INDEX fixed bin internal static options (constant) init (10) ; 1 23 declare DELETE_NAME fixed bin internal static options (constant) init (11) ; 1 24 declare DOM_LIST fixed bin internal static options (constant) init (12) ; /* in link handler */ 1 25 1 26 /* SEMANTIC STRUCTURES */ 1 27 1 28 declare DIRECTIVE fixed bin internal static options (constant) init (13) ; 1 29 declare STMT fixed bin internal static options (constant) init (14) ; 1 30 1 31 1 32 /* PARSING STRUCTURES */ 1 33 1 34 declare LEX_STACK fixed bin internal static options (constant) init (15) ; 1 35 declare P_STRUCT fixed bin internal static options (constant) init (16) ; 1 36 declare CUR_LEX_TOP fixed bin internal static options (constant) init (17) ; 1 37 declare FIXUP_TOKEN fixed bin internal static options (constant) init (50) ; /* scanner */ 1 38 declare STRING_SOURCE fixed bin internal static options (constant) init (51) ; /* semantics */ 1 39 declare TOKEN fixed bin internal static options (constant) init (18) ; 1 40 declare OUTPUT_TEXT fixed bin internal static options (constant) init (19) ; 1 41 1 42 1 43 /* DB_MODEL STRUCTURES */ 1 44 1 45 declare DB_MODEL fixed bin internal static options (constant) init (0) ; 1 46 declare FILE_INFO fixed bin internal static options (constant) init (1) ; 1 47 declare DOMAIN_INFO fixed bin internal static options (constant) init (2) ; 1 48 declare PATH_ENTRY fixed bin internal static options (constant) init (3) ; 1 49 declare STACK_ITEM fixed bin internal static options (constant) init (4) ; 1 50 declare CONSTANT fixed bin internal static options (constant) init (30) ; 1 51 declare VERSION_STATUS fixed bin internal static options (constant) init (5) ; 1 52 declare CHANGER fixed bin internal static options (constant) init (6) ; 1 53 1 54 1 55 /* FILE_MODEL STRUCTURES */ 1 56 1 57 declare FILE_MODEL fixed bin internal static options (constant) init (7) ; 1 58 declare REL_INFO fixed bin internal static options (constant) init (8) ; 1 59 declare ATTR_INFO fixed bin internal static options (constant) init (9) ; 1 60 declare PARENT_LINK_INFO fixed bin internal static options (constant) init (10) ; 1 61 declare CHILD_LINK_INFO fixed bin internal static options (constant) init (11) ; 1 62 declare ATTR_LIST fixed bin internal static options (constant) init (12) ; 1 63 declare ATD fixed bin internal static options (constant) init (31) ; 1 64 declare COMP_NO_ARRAY fixed bin internal static options (constant) init (32) ; 1 65 declare SORT_KEY fixed bin internal static options (constant) init (13) ; 1 66 declare DUP_PREV fixed bin internal static options (constant) init (14) ; 1 67 declare SELECT_CHAIN fixed bin internal static options (constant) init (15) ; 1 68 1 69 1 70 /* GLOBAL LIST STRUCTURES */ 1 71 1 72 declare GL fixed bin internal static options (constant) init (20) ; 1 73 declare SL fixed bin internal static options (constant) init (21) ; 1 74 declare SEGINFO fixed bin internal static options (constant) init (22) ; 1 75 declare LIST_OVRLY fixed bin internal static options (constant) init (26) ; 1 76 declare SAVED_CHILD_COUNT fixed bin internal static options (constant) init (24) ; /* in global list build */ 1 77 declare NODE fixed bin internal static options (constant) init (23) ; 1 78 1 79 1 80 /* DISPLAY STRUCTURES */ 1 81 1 82 declare DISPLAY_INFO fixed bin internal static options (constant) init (25) ; 1 83 1 84 /* Remove because nolonger used 82-06-28 1 85* NAME_LIST fixed bin internal static options (constant) init (52) ; 1 86* PAI_ARRAY fixed bin internal static options (constant) init (53) ; 1 87* PAR_LK_ATTR_INFO fixed bin internal static options (constant) init (54) ; 1 88* CAI_ARRAY fixed bin internal static options (constant) init (55) ; 1 89* CHILD_LK_ATTR_INFO fixed bin internal static options (constant) init (56) ; 1 90* NAME_TABLE fixed bin internal static options (constant) init (57) ; 1 91* ATTR_TABLE fixed bin internal static options (constant) init (58) ; 1 92**/ 1 93 1 94 /* END INCULDE FILE mrds_rst_struct_types */ 1 95 320 321 2 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 2 6* modified to save space occupied by model 2 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 2 8* to add mdbm_secured bit in db_model 2 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 2 10* collapsed the following into an unused_offset array: 2 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 2 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 2 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 2 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 2 15* unused_1 2 16* Also changed the name of unused_2 to restructuring_history_offset 2 17* and changed the comment on the changer structure to indicate 2 18* that it will contain on database creation information. 2 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 2 20* used one of the unused_offsets to point to a message which indicates 2 21* why the db is inconsistent. The offset will be null when the db is created 2 22* and set the first time the message is used. this is so it will be 2 23* consistent with existing data bases. Also added the message structure. 2 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 2 25* added the undo_request element to the message structure 2 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 2 27* changed unused_offset (12) to last_restructruring_history_offset and 2 28* changed restructuring_history_offset to first_restructuring_history_offset 2 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 2 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 2 31* 1 => vfile database and 2 => page_file database. Up to this point all 2 32* database types were equal to 1. 2 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 2 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 2 35* flags. This will allow information about transactions and dm_file 2 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 2 37* change is compatable with all datamodels created by the released version 2 38* of mrds. 2 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 2 40* added the rollback_on flag to the db_type_flags since it appears that you 2 41* can have a dmfile database that requires transactions but does not have any 2 42* journalizing. Also switched the order of the transactions_needed and 2 43* concurrency_on flags - this makes the change compatable with existing 2 44* dmfile databases except when displaying the model since concurrency_on and 2 45* rollback_on will be off in the model even though the dmfile relations had 2 46* them on during creation. 2 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 2 48* Removed ctl_file_path_ptr. 2 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 2 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 2 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 2 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 2 53* in the flag word for rmdb copying. 2 54* END HISTORY COMMENTS */ 2 55 2 56 2 57 /* this include file contains the structures that go into the make up 2 58* of the "db_model" segment in the model for the database. 2 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 2 60* 2 61* the db_model structure goes at the base of the segment, and contains items unique to 2 62* the whole databse. in addition, it has an area of size to fill the 2 63* rest of a segment, that holds the lists of files and domains in the database. 2 64* these lists are singly forward linked lists. all "pointers" in the database model 2 65* are maintained as offsets(bit (18)) from the base of the particular model segment 2 66* since actual pointers are process dependent on segment number. 2 67* the remaining structures are first a path_entry one to save pathnames in, 2 68* and the stack_item and constent structures, used to save a boolean 2 69* expression in polish form, with the stack represented by a linked list. 2 70* the final structure is one for identifying the status of version information */ 2 71 2 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 2 73 2 version unal fixed bin, /* data base version, currently 4 */ 2 74 2 db_type_flags unal, 2 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 2 76 3 unused (13) bit (1) unal, 2 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 2 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 2 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 2 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 2 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 2 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 2 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 2 84 2 reserved bit (34) unal, /* reserved for flags */ 2 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 2 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 2 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 2 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 2 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 2 90 2 num_domains unal fixed bin, /* number of domains defined */ 2 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 2 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 2 93 2 pad_1 unal fixed bin (35), /* for future use */ 2 94 2 pad_2 unal fixed bin (35), /* for future use */ 2 95 2 version_ptr bit (18), /* offset to version structure */ 2 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 2 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 2 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 2 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 2 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 2 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 2 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 2 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 2 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 2 105 2 106 dcl dbm_ptr ptr; 2 107 2 108 /* the files in the database each have a file_info containing 2 109* their name, the file_model for each file is found by initiating the 2 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 2 111* the file_info list is a singly linked list in definition order */ 2 112 2 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 2 114 2 file_name char (30), /* name of file */ 2 115 2 file_id bit (36), /* id number of file */ 2 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 2 117 2 unused unal bit (18); /* for future expansion */ 2 118 2 119 dcl fi_ptr ptr; 2 120 2 121 /* each domain used in the database will have a domain info saved in the db_model 2 122* segment. it describes the domain of the given name, and it's options. 2 123* the domain_info's form a singly linked list in definition order */ 2 124 2 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 2 126 2 name char (32), /* name of domain */ 2 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 2 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 2 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 2 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 2 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 2 132 2 reserved bit (31) unal, 2 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 2 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 2 135 2 ave_len fixed bin (35), /* average length of varying string */ 2 136 2 nck_items unal fixed bin, /* no. items in check stack */ 2 137 2 fwd_thread unal bit (18), /* offset to next in list */ 2 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 2 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 2 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 2 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 2 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 2 143 2 str_err_path_ptr unal bit (18), 2 144 2 str_after_path_ptr unal bit (18), 2 145 2 get_before_path_ptr unal bit (18), 2 146 2 get_err_path_ptr unal bit (18), 2 147 2 get_after_path_ptr unal bit (18), 2 148 2 mod_before_path_ptr unal bit (18), 2 149 2 mod_err_path_ptr unal bit (18), 2 150 2 mod_after_path_ptr unal bit (18), 2 151 2 unused_1 unal bit (18), /* for future expansion */ 2 152 2 unused_2 unal bit (18), 2 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 2 154 2 155 dcl di_ptr ptr; 2 156 2 157 /* information necessary for attributes that are not used in any relation */ 2 158 2 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 2 160 2 name char (32), /* name of attribute */ 2 161 2 domain_ptr bit (18) unal, /* to domain_info */ 2 162 2 fwd_thread bit (18) unal, /* to next in list */ 2 163 2 unused (2) bit (18) unal; 2 164 2 165 dcl ua_ptr ptr; 2 166 2 167 2 168 /* space saving pathname$entryname structure, to be allocated 2 169* only when a path$entry has to be saved, else only a bit(18) 2 170* offset takes up space in the main model structure */ 2 171 2 172 declare 1 path_entry based (path_entry_ptr), 2 173 2 path char (168), /* pathname portion of desired path$entry */ 2 174 2 entry char (32), /* entryname portion of desired path$entry */ 2 175 2 reserved unal bit (36); /* for future use */ 2 176 2 177 declare path_entry_ptr ptr; 2 178 2 179 2 180 2 181 2 182 2 183 /* declarations for model of postfix stack holding the check option boolean expression 2 184* the following encoding values indicate the corresponding type of stack element 2 185* 2 186* 1 = 2 187* 2 ^= 2 188* 3 > 2 189* 4 < 2 190* 5 >= 2 191* 6 <= 2 192* 2 193* 10 and 2 194* 20 or 2 195* 30 not 2 196* 2 197* 40 - (minus) 2 198* 2 199* 50 domain variable(same name as domain) 2 200* 2 201* 60 constant(number, bit string, or character string) 2 202* 2 203**/ 2 204 2 205 2 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 2 207 2 next bit (18), /* link to next in list */ 2 208 2 type fixed binary, /* code for this element type */ 2 209 2 value_ptr bit (18); /* pointer to variable holding value, 2 210* if this is a constant element type */ 2 211 2 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 2 213 2 214 2 215 2 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 2 217 2 length fixed bin (35), /* length allocated to hold value */ 2 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 2 219 2 220 declare constant_ptr ptr; /* pointer to constant's value space */ 2 221 2 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 2 223 2 224 /* version structure, giving status of source for CMDB/RMDB, 2 225* status of model, and status of resultant */ 2 226 2 227 /* version number is in form MM.N.Y 2 228* where MM is the major version number, N is the minor version alteration, 2 229* and Y is the lastest modification to that alteration, 2 230* where M and N represent numbers 0-9, and Y is a letter */ 2 231 2 232 declare 1 version_status unal based (version_status_ptr), 2 233 2 cmdb_rmdb, 2 234 3 major fixed bin, 2 235 3 minor fixed bin, 2 236 3 modification char (4), 2 237 2 model, 2 238 3 major fixed bin, 2 239 3 minor fixed bin, 2 240 3 modification char (4), 2 241 2 resultant, 2 242 3 major fixed bin, 2 243 3 minor fixed bin, 2 244 3 modification char (4); 2 245 2 246 declare version_status_ptr ptr; 2 247 2 248 2 249 /* maintains information only about the db creation */ 2 250 2 251 declare 1 changer unal based (changer_ptr), 2 252 2 id char (32), 2 253 2 time fixed bin (71), 2 254 2 next bit (18); /* to next in the singly linked list */ 2 255 2 256 declare changer_ptr ptr; 2 257 2 258 2 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 2 260 02 len fixed bin, /* length of the message */ 2 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 2 262 02 name char (32), /* name of thing that set the message */ 2 263 02 undo_request char (100), /* rmdb request that will undo the operation 2 264* that caused the database to become inconsistent */ 2 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 2 266 2 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 2 268 2 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 2 270 2 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 2 272 2 273 322 323 3 1 /* BEGIN INCLUDE FILE mdbm_dbc.incl.pl1 08/23/78 odf */ 3 2 3 3 /* HISTORY: 3 4* 3 5* Modified by odf for new version data bases in August 1978 3 6* Modified by Al Kepner, March 8, 1979 to add new flags for quiescing 3 7* Modified by M. Pierret, 8 April 1980 to look prettier, add pads 3 8* Modified by M. Pierret, 22 August 1980, grouping like fields (flags, offsets..) 3 9* 3 10* 80-11-19 Jim Gray : modified to change version number from 4 to 5 to allow 3 11* automatic update of dbc structures to new r-s-m-d-u scope codes from r-u. 3 12**/ 3 13 3 14 dcl 1 dbc based (dbc_ptr), /* data base control segment description */ 3 15 2 proper, 3 16 3 version fixed bin, /* version number of this structure */ 3 17 3 dtd_mrds fixed bin (71), /* date time dumped by mrds utility */ 3 18 3 flags, 3 19 4 trouble_switch bit (1) unal, /* ON => ungraceful termination of a user process */ 3 20 4 dead_proc_flag bit (1) unal, /* ON => dead process has access to part of data base */ 3 21 4 quiesce_sw bit (1) unal, /* ON => db is quiesced for a administrative user */ 3 22 4 quiesce_db bit (1) unal, /* ON => The entire data base is being quiesced. */ 3 23 4 quiesce_files bit (1) unal, /* ON => A selected set of files is being quiesced. */ 3 24 4 pad bit (31) unal, /* reserved for future use */ 3 25 3 quiesce_lock bit (36) aligned, /* lock word for quiescing data base */ 3 26 3 wakeup_waiters fixed bin, /* nbr users who have been sent a wakeup signal but have not yet 3 27* received it */ 3 28 3 user_counts, 3 29 4 open_users fixed bin, /* nbr of users with data base open in any mode */ 3 30 4 active_users fixed bin, /* nbr of users currently having a scope set */ 3 31 4 waiting_users fixed bin, /* nbr of users waiting to set scope */ 3 32 3 open_lock bit (36) aligned, /* lock word for opening data base */ 3 33 3 scope_lock bit (36) aligned, /* lock word for setting and deleting scope */ 3 34 3 sa_size fixed bin (35), /* size in words of static area */ 3 35 3 pad2 bit (144), 3 36 3 offsets, 3 37 4 open_users_ofs bit (18) unal, /* bit offset to list of users with data base currently open */ 3 38 4 active_users_ofs bit (18) unal, /* bit offset to list of active users in shared mode */ 3 39 4 waiting_users_ofs bit (18) unal, /* bit offset to list of waiting users in shared mode */ 3 40 4 obsolete bit (36) unal, /* obsolete */ 3 41 3 pad3 bit (144), 3 42 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbc.static_area))) + 1); 3 43 3 44 dcl dbc_ptr ptr init (null ()); 3 45 3 46 dcl VERSION_NBR fixed bin init (5) static internal options (constant); 3 47 3 48 3 49 /* END mdbm_dcb.incl.pl1 */ 3 50 3 51 324 325 4 1 /* BEGIN INCLUDE FILE mrds_rst_rsc.incl.pl1 RDL 7/7/78 */ 4 2 4 3 /* Modified 8/21/78 by RDL */ 4 4 4 5 /* Modified 9/11/78 by RDL to add directive and stmt pointers */ 4 6 4 7 /* Modified 11/4/78 by RDL to add debug,trace,meter switches 4 8* 4 9* Modified 3/29/79 by RDL to change s_seg_info_ptr to source_seg_ptr 4 10* 4 11* Modified by Jim Gray - - Jan. 1980, to add flags to disallow blocked files, forieng keys, and restructuring. 4 12* 4 13* Modified by Jim Gray - - Feb. 1980, to add command level flag for cmdb subroutine interface. 4 14* 4 15* Modified by Jim Gray - - 80-11-06, to add bit for cmdb -secure option. 4 16* 4 17* 81-05-18 Jim Gray : added bit for max_attributes error message, so that 4 18* it would only be issued on first occurence. 4 19* 4 20* 82-08-19 Davids: added the db_type field. 4 21* 4 22* 83-02-18 Mike Kubicar : Removed the db_type field and added the 4 23* db_relation_mode_flags substructure to define the modes applicable 4 24* to the database's relations. Also removed assorted unsed fields 4 25* (names that included the word unused). 4 26* 4 27**/ 4 28 4 29 dcl 1 rsc based (rsc_ptr), /* Restructuring control info */ 4 30 2 rsc_dir char (200), /* pathname of directory containing rsc segment */ 4 31 2 dbp char (168), /* Database absolute path */ 4 32 2 temp_dir char (168), /* Path name of temp restrucuring directory */ 4 33 2 temp_dir_sw bit (1) unal, /* On => temp dir has been created */ 4 34 2 db_quiesced_sw bit (1) unal, /* On => database has been quiesced */ 4 35 2 o_db_open_sw bit (1) unal, /* On => old database has been opened */ 4 36 2 n_db_open_sw bit (1) unal, /* On => temp database is open */ 4 37 2 listing_seg_sw bit (1) unal, /* On => listing segment has been created */ 4 38 2 skip_scanner_conversion bit (1) unal, /* Skip conversion in scanner */ 4 39 2 cmdb_option bit (1) unal, /* ON => this is a cmdb source, not restructuring */ 4 40 2 trace_sw bit (1) unal, /* On -> trace mode in affect */ 4 41 2 debug_sw bit (1) unal, /* On = debug mode (NOT IMPLEMENTED) */ 4 42 2 meter_sw bit (1) unal, /* On = procedures call metering procedure */ 4 43 2 delete_db_sw bit (1) unal, /* On = delete data base in cleanup */ 4 44 2 model_consistent_sw bit (1) unal, /* On => Model is consistent */ 4 45 2 physical_started_sw bit (1) unal, /* On => Physical restructuring started */ 4 46 2 physical_complete_sw bit (1) unal, /* On => Physical restructuring completed */ 4 47 2 model_overflow bit (1) unal, /* ON => model segment area condition occurred */ 4 48 2 max_files bit (1) unal, /* ON => maximum number of files reached */ 4 49 2 allow_foreign_keys bit (1) unal, /* on => allow foreign key statment */ 4 50 2 foreign_key_seen bit (1) unal, /* on => foreign key definition in source */ 4 51 2 allow_blocked_files bit (1) unal, /* on => allow file statement with blocked option */ 4 52 2 blocked_file_seen bit (1) unal, /* on => blocked file definition in source */ 4 53 2 allow_restructuring bit (1) unal, /* on => allow RMDB entry point */ 4 54 2 command_level bit (1) unal, /* on => called from command unal, not subroutine level */ 4 55 2 secure bit (1) unal, /* on => -secure option given for cmdb */ 4 56 2 max_attrs bit (1) unal, /* on => max attrs/rel or max indexes/rel exceeded */ 4 57 2 db_relation_mode_flags, 4 58 3 dm_file_type bit (1) unal, /* on => relations are dm files */ 4 59 3 protection_on bit (1) unal, /* on => relations need transactions */ 4 60 3 concurrency_on bit (1) unal, /* on => concurrency control enabled */ 4 61 3 rollback_on bit (1) unal, /* on => before journalling is enabled */ 4 62 2 severity_high fixed bin, /* Highest severity level error encountered */ 4 63 2 phase fixed bin, /* 000 = init 4 64* 100 = global list init 4 65* 200 = parse 4 66* 300 = physical init 4 67* 400 = physical */ 4 68 2 h_o_seg_info_ls_ptr ptr, /* Pointer to head of old db seg_info list */ 4 69 2 h_n_seg_info_ls_ptr ptr, /* Pointer to head of new db seg_info list */ 4 70 2 h_gfile_ptr ptr, /* Pointer to head of global file list */ 4 71 2 h_gdom_ptr ptr, /* Pointer to head of global domain list */ 4 72 2 h_gattr_ptr ptr, /* Pointer to head of global attribute list */ 4 73 2 h_grel_ptr ptr, /* Pointer to head of global relation list */ 4 74 2 h_glink_ptr ptr, /* Pointer to head of global link list */ 4 75 2 o_dm_ptr ptr, /* Pointer to old data model seg (dm_model ) */ 4 76 2 n_dm_ptr ptr, /* Pointer to temp data model seg */ 4 77 2 o_fn_hdr_ptr ptr, /* Pointer to head of original file list (fn structure) */ 4 78 2 source_seg_ptr ptr, /* Pointer to source_seg */ 4 79 2 listing_iocb_ptr ptr, /* Pointer to listing segment iocb */ 4 80 2 directive_ptr ptr, /* Pointer to directive type str in mrds_rst_semactics.incl.pl1 */ 4 81 2 stmt_ptr ptr, /* Pointer to statement str in mrds_rst_sematics.incl.pl1 */ 4 82 2 trace_metering_iocb_ptr ptr, /* Pointer to seg used by trace and metering */ 4 83 2 tree_node_area_ptr ptr, /* pointer to working storage for tree nodes */ 4 84 2 tree_data, 4 85 3 seg_info_area_ptr ptr, /* seg info working storage area */ 4 86 3 gl_area_ptr ptr, /* global list data work storage area */ 4 87 3 sl_area_ptr ptr, /* sublist data work storage area */ 4 88 2 parse_info_area_ptr ptr, /* parse interface work area storage */ 4 89 2 static_info_area_ptr ptr, /* directive, stmt and other static work storage area */ 4 90 2 variable_length_area_ptr ptr, /* varibale allocates work storage area */ 4 91 2 other_area_ptr ptr, /* unspecified work area storage */ 4 92 2 wa area (sys_info$max_seg_size - fixed (rel (addr (rsc.wa))) + 1); /* Work area */ 4 93 4 94 dcl rsc_ptr ptr; /* Pointer to base of rsc segment */ 4 95 4 96 4 97 4 98 /* END INCLUDE FILE mrds_rst_rsc.incl.pl1 */ 4 99 326 327 5 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 5 2 5 3 /* control flag bit string passed to delete_$path and delete_$ptr 5 4* 5 5* Jay Pattin 6/6/83 */ 5 6 5 7 declare 1 delete_options, 5 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 5 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 5 10 2 directory bit (1) unaligned, /* ON = delete directories */ 5 11 2 segment bit (1) unaligned, /* ON = delete segments */ 5 12 2 link bit (1) unaligned, /* ON = delete links */ 5 13 2 chase bit (1) unaligned, /* ON = delete through links */ 5 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 5 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 5 16 2 mbz bit (28) unaligned; 5 17 5 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 328 329 330 end mrds_rst_create_db; 331 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/86 1142.8 mrds_rst_create_db.pl1 >special_ldd>install>MR12.0-1187>mrds_rst_create_db.pl1 320 1 10/14/83 1609.0 mrds_rst_struct_types.incl.pl1 >ldd>include>mrds_rst_struct_types.incl.pl1 322 2 10/16/86 1139.3 mdbm_db_model.incl.pl1 >special_ldd>install>MR12.0-1187>mdbm_db_model.incl.pl1 324 3 10/14/83 1609.0 mdbm_dbc.incl.pl1 >ldd>include>mdbm_dbc.incl.pl1 326 4 10/14/83 1609.1 mrds_rst_rsc.incl.pl1 >ldd>include>mrds_rst_rsc.incl.pl1 328 5 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. CHANGER 000000 constant fixed bin(17,0) initial dcl 1-52 set ref 235* MODULE_NAME 000006 constant char(18) initial unaligned dcl 300 set ref 85* 110* 143* NULL_OFFSET constant bit(18) initial unaligned dcl 316 ref 182 183 184 185 186 187 188 244 OFF 000034 constant bit(1) initial unaligned dcl 301 set ref 81 110* 134 139 140 141 ON 000005 constant bit(1) initial unaligned dcl 302 set ref 85* 95 133 135 136 137 138 258 RINGS 000002 constant fixed bin(3,0) initial array dcl 303 set ref 91* 97* VERSION_STATUS 000001 constant fixed bin(17,0) initial dcl 1-51 set ref 199* addr builtin function dcl 288 ref 156 blk_file_id_len 12 based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 173* cd parameter fixed bin(35,0) dcl 117 ref 115 120 changer based structure level 1 packed unaligned dcl 2-251 changer_ptr 000306 automatic pointer dcl 2-256 in procedure "mrds_rst_create_db" set ref 235* 237 242 243 244 248 changer_ptr 32(18) based bit(18) level 2 in structure "db_model" packed unaligned dcl 2-72 in procedure "mrds_rst_create_db" set ref 158* chase 0(05) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 138* cleanup 000276 stack reference condition dcl 317 ref 83 clock builtin function dcl 287 ref 243 cmdb_rmdb based structure level 2 packed unaligned dcl 2-232 code parameter fixed bin(35,0) dcl 313 set ref 10 88* 89 89* 91* 93 93* 97* 99 99* 101* 102* 106* 107 107* 120* 143* concurrency_on 206(26) based bit(1) level 3 in structure "rsc" packed unaligned dcl 4-29 in procedure "mrds_rst_create_db" ref 162 concurrency_on 0(33) based bit(1) level 3 in structure "db_model" packed unaligned dcl 2-72 in procedure "mrds_rst_create_db" set ref 162* consistant 11 based bit(1) level 2 packed unaligned dcl 2-72 set ref 168* copy builtin function dcl 289 ref 159 copy_good 0(18) based bit(1) level 3 packed unaligned dcl 2-72 set ref 170* db_created_sw 000275 automatic bit(1) unaligned dcl 314 set ref 81* 95* 131 db_ent 000265 automatic char(32) unaligned dcl 312 set ref 88* 91* 97 143* db_model based structure level 1 dcl 2-72 db_model_path 000213 automatic char(168) unaligned dcl 309 set ref 153* 199* 235* db_relation_mode_flags 206(24) based structure level 2 packed unaligned dcl 4-29 db_type_flags 0(18) based structure level 2 packed unaligned dcl 2-72 dbc_bit_count 000100 automatic fixed bin(24,0) dcl 282 set ref 106* dbc_ptr 000310 automatic pointer initial dcl 3-44 set ref 106* 3-44* dbm_area 34 based area level 2 dcl 2-72 set ref 156* 156 dbm_ptr parameter pointer dcl 2-106 set ref 10 101* 102 155 156 156 157 158 159 160 162 164 166 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 delete_$path 000034 constant entry external dcl 294 ref 143 delete_options 000312 automatic structure level 1 packed unaligned dcl 5-7 set ref 143 143 dir 000141 automatic char(168) unaligned dcl 308 set ref 88* 91* 97 143* directory 0(02) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 135* dm_file_type 206(24) based bit(1) level 3 packed unaligned dcl 4-29 ref 160 domain_ptr 22(18) based bit(18) level 2 packed unaligned dcl 2-72 set ref 183* empty builtin function dcl 315 ref 156 expand_pathname_ 000026 constant entry external dcl 284 ref 88 file_ptr 22 based bit(18) level 2 packed unaligned dcl 2-72 set ref 182* first_restructuring_history_offset 32 based bit(18) level 2 packed unaligned dcl 2-72 set ref 188* fixed builtin function dcl 290 ref 156 force 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 133* get_group_id_ 000032 constant entry external dcl 286 ref 242 get_group_id_$tag_star 000030 constant entry external dcl 285 ref 91 91 97 97 hcs_$append_branchx 000036 constant entry external dcl 296 ref 91 97 hcs_$make_seg 000040 constant entry external dcl 298 ref 101 id based char(32) level 2 packed unaligned dcl 2-251 set ref 242* inconsistent_message_offset 31(18) based bit(18) level 2 packed unaligned dcl 2-72 set ref 187* ioa_$rs 000010 constant entry external dcl 276 ref 260 last_restructuring_history_offset 31 based bit(18) level 2 packed unaligned dcl 2-72 set ref 186* library 0(06) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 140* link 0(04) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 137* major based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 208* major 4 based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 220* major 2 based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 214* max_max_tuples 15(18) based fixed bin(35,0) level 2 packed unaligned dcl 2-72 set ref 179* mbz 0(08) 000312 automatic bit(28) level 2 packed unaligned dcl 5-7 set ref 141* mdbm_data_$current_version 000024 external static fixed bin(35,0) dcl 283 ref 155 mdbm_secured 11(01) based bit(1) level 2 packed unaligned dcl 2-72 set ref 169* mdbm_util_$create_control_segment 000022 constant entry external dcl 281 ref 106 message 000101 automatic varying char(120) dcl 306 set ref 260* 264 message_length 000140 automatic fixed bin(21,0) dcl 307 set ref 260* meter_sw 206(09) based bit(1) level 2 packed unaligned dcl 4-29 ref 85 110 minor 4(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 221* minor 0(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 209* minor 2(18) based fixed bin(17,0) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 215* model 2 based structure level 2 packed unaligned dcl 2-232 model_overflow 206(14) based bit(1) level 2 packed unaligned dcl 4-29 set ref 256 258* modification 5 based char(4) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 222* modification 1 based char(4) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 210* modification 3 based char(4) level 3 in structure "version_status" packed unaligned dcl 2-232 in procedure "mrds_rst_create_db" set ref 216* mrds_data_$current_version_status 000044 external static fixed bin(35,0) dcl 310 ref 208 214 220 mrds_data_$submodel_dir_name 000046 external static char(16) unaligned dcl 311 set ref 97* mrds_error_$rst_logic_error 000012 external static fixed bin(35,0) dcl 277 set ref 264* mrds_rst_error 000014 constant entry external dcl 278 ref 264 mrds_rst_meter 000042 constant entry external dcl 299 ref 85 110 mrds_rst_model_alloc 000016 constant entry external dcl 279 ref 199 235 next 12 based bit(18) level 2 packed unaligned dcl 2-251 set ref 244* null builtin function dcl 315 ref 102 3-44 201 237 num_blk_files 13 based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 175* num_domains 14(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 177* num_dyn_links 15 based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 178* num_rels 14 based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 172* num_unblk_files 13(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 176* pad_1 16(18) based fixed bin(35,0) level 2 packed unaligned dcl 2-72 set ref 180* pad_2 17(18) based fixed bin(35,0) level 2 packed unaligned dcl 2-72 set ref 181* protection_on 206(25) based bit(1) level 3 packed unaligned dcl 4-29 ref 164 question 0(01) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 134* raw 0(07) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 139* rel builtin function dcl 291 ref 156 227 248 reserved 11(02) based bit(34) level 2 packed unaligned dcl 2-72 set ref 171* resultant 4 based structure level 2 packed unaligned dcl 2-232 rollback_on 206(27) based bit(1) level 3 in structure "rsc" packed unaligned dcl 4-29 in procedure "mrds_rst_create_db" ref 166 rollback_on 0(32) based bit(1) level 3 in structure "db_model" packed unaligned dcl 2-72 in procedure "mrds_rst_create_db" set ref 166* rsc based structure level 1 unaligned dcl 4-29 rsc_ptr parameter pointer dcl 4-94 set ref 10 85 85 85* 88 101 106 110 110 110* 153 160 162 164 166 169 199* 235* 256 258 264* rtrim builtin function dcl 292 ref 97 97 153 secure 206(22) based bit(1) level 2 packed unaligned dcl 4-29 ref 169 segment 0(03) 000312 automatic bit(1) level 2 packed unaligned dcl 5-7 set ref 136* string builtin function dcl 293 ref 143 143 struct_cause parameter char unaligned dcl 270 set ref 252 260* sys_info$max_seg_size 000050 external static fixed bin(35,0) dcl 318 ref 156 temp_dir 134 based char(168) level 2 packed unaligned dcl 4-29 set ref 88* 101* 106* 153 time 10 based fixed bin(71,0) level 2 packed unaligned dcl 2-251 set ref 243* trace_sw 206(07) based bit(1) level 2 packed unaligned dcl 4-29 ref 85 110 transactions_needed 0(34) based bit(1) level 3 packed unaligned dcl 2-72 set ref 164* unblk_file_id_len 12(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 174* uniq_sw_name 1 based char(32) level 2 dcl 2-72 set ref 159* unique_chars_ 000020 constant entry external dcl 280 ref 159 unreferenced_attribute_ptr 23 based bit(18) level 2 packed unaligned dcl 2-72 set ref 184* unused_offsets 23(18) based bit(18) array level 2 packed unaligned dcl 2-72 set ref 185* version based fixed bin(17,0) level 2 packed unaligned dcl 2-72 set ref 155* version_ptr 21 based bit(18) level 2 dcl 2-72 set ref 157* version_status based structure level 1 packed unaligned dcl 2-232 version_status_ptr 000304 automatic pointer dcl 2-246 set ref 199* 201 208 209 210 214 215 216 220 221 222 227 vfile_type 0(35) based bit(1) level 3 packed unaligned dcl 2-72 set ref 160* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ATD internal static fixed bin(17,0) initial dcl 1-63 ATTRIBUTE internal static fixed bin(17,0) initial dcl 1-16 ATTRIBUTE_DOMAIN internal static fixed bin(17,0) initial dcl 1-14 ATTR_INFO internal static fixed bin(17,0) initial dcl 1-59 ATTR_LIST internal static fixed bin(17,0) initial dcl 1-62 CHILDREN internal static fixed bin(17,0) initial dcl 1-21 CHILD_LINK_INFO internal static fixed bin(17,0) initial dcl 1-61 COMP_NO_ARRAY internal static fixed bin(17,0) initial dcl 1-64 CONSTANT internal static fixed bin(17,0) initial dcl 1-50 CUR_LEX_TOP internal static fixed bin(17,0) initial dcl 1-36 DB_MODEL internal static fixed bin(17,0) initial dcl 1-45 DELETE_NAME internal static fixed bin(17,0) initial dcl 1-23 DIRECTIVE internal static fixed bin(17,0) initial dcl 1-28 DISPLAY_INFO internal static fixed bin(17,0) initial dcl 1-82 DOMAIN internal static fixed bin(17,0) initial dcl 1-13 DOMAIN_INFO internal static fixed bin(17,0) initial dcl 1-47 DOM_LIST internal static fixed bin(17,0) initial dcl 1-24 DUP_PREV internal static fixed bin(17,0) initial dcl 1-66 FILE internal static fixed bin(17,0) initial dcl 1-17 FILE_INFO internal static fixed bin(17,0) initial dcl 1-46 FILE_MODEL internal static fixed bin(17,0) initial dcl 1-57 FIXUP_TOKEN internal static fixed bin(17,0) initial dcl 1-37 FOREIGN_KEY internal static fixed bin(17,0) initial dcl 1-20 GL internal static fixed bin(17,0) initial dcl 1-72 INDEX internal static fixed bin(17,0) initial dcl 1-22 ITEM internal static fixed bin(17,0) initial dcl 1-18 LEX_STACK internal static fixed bin(17,0) initial dcl 1-34 LINK internal static fixed bin(17,0) initial dcl 1-19 LIST_OVRLY internal static fixed bin(17,0) initial dcl 1-75 NODE internal static fixed bin(17,0) initial dcl 1-77 OUTPUT_TEXT internal static fixed bin(17,0) initial dcl 1-40 PARENT_LINK_INFO internal static fixed bin(17,0) initial dcl 1-60 PATH_ENTRY internal static fixed bin(17,0) initial dcl 1-48 P_STRUCT internal static fixed bin(17,0) initial dcl 1-35 RELATION internal static fixed bin(17,0) initial dcl 1-15 REL_INFO internal static fixed bin(17,0) initial dcl 1-58 SAVED_CHILD_COUNT internal static fixed bin(17,0) initial dcl 1-76 SEGINFO internal static fixed bin(17,0) initial dcl 1-74 SELECT_CHAIN internal static fixed bin(17,0) initial dcl 1-67 SL internal static fixed bin(17,0) initial dcl 1-73 SORT_KEY internal static fixed bin(17,0) initial dcl 1-65 STACK_ITEM internal static fixed bin(17,0) initial dcl 1-49 STMT internal static fixed bin(17,0) initial dcl 1-29 STRING_SOURCE internal static fixed bin(17,0) initial dcl 1-38 TOKEN internal static fixed bin(17,0) initial dcl 1-39 VERSION_NBR internal static fixed bin(17,0) initial dcl 3-46 alloc_length internal static fixed bin(35,0) dcl 2-222 constant based structure level 1 unaligned dcl 2-216 constant_ptr automatic pointer dcl 2-220 dbc based structure level 1 unaligned dcl 3-14 di_ptr automatic pointer dcl 2-155 domain_info based structure level 1 dcl 2-125 fi_ptr automatic pointer dcl 2-119 file_info based structure level 1 dcl 2-113 message_str based structure level 1 packed unaligned dcl 2-259 message_str_len automatic fixed bin(17,0) dcl 2-269 message_str_ptr automatic pointer dcl 2-267 path_entry based structure level 1 packed unaligned dcl 2-172 path_entry_ptr automatic pointer dcl 2-177 stack_item based structure level 1 unaligned dcl 2-206 stack_item_ptr automatic pointer dcl 2-212 ua_ptr automatic pointer dcl 2-165 unreferenced_attribute based structure level 1 dcl 2-159 NAMES DECLARED BY EXPLICIT CONTEXT. error 000700 constant entry internal dcl 115 ref 89 93 99 102 107 exit 000644 constant label dcl 110 ref 121 init_db_model 001002 constant entry internal dcl 149 ref 104 model_overflow 001507 constant entry internal dcl 252 ref 201 237 mrds_rst_create_db 000131 constant entry external dcl 10 set_change_time 001416 constant entry internal dcl 231 ref 158 set_version 001273 constant entry internal dcl 193 ref 157 tidy_up 000714 constant entry internal dcl 129 ref 83 119 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2154 2226 1676 2164 Length 2546 1676 52 303 256 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_rst_create_db 427 external procedure is an external procedure. on unit on line 83 64 on unit error internal procedure shares stack frame of external procedure mrds_rst_create_db. tidy_up 88 internal procedure is called by several nonquick procedures. init_db_model internal procedure shares stack frame of external procedure mrds_rst_create_db. set_version internal procedure shares stack frame of external procedure mrds_rst_create_db. set_change_time internal procedure shares stack frame of external procedure mrds_rst_create_db. model_overflow internal procedure shares stack frame of external procedure mrds_rst_create_db. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_rst_create_db 000100 dbc_bit_count mrds_rst_create_db 000101 message mrds_rst_create_db 000140 message_length mrds_rst_create_db 000141 dir mrds_rst_create_db 000213 db_model_path mrds_rst_create_db 000265 db_ent mrds_rst_create_db 000275 db_created_sw mrds_rst_create_db 000304 version_status_ptr mrds_rst_create_db 000306 changer_ptr mrds_rst_create_db 000310 dbc_ptr mrds_rst_create_db 000312 delete_options mrds_rst_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 call_int_other return_mac enable_op shorten_stack ext_entry int_entry op_empty_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. delete_$path expand_pathname_ get_group_id_ get_group_id_$tag_star hcs_$append_branchx hcs_$make_seg ioa_$rs mdbm_util_$create_control_segment mrds_rst_error mrds_rst_meter mrds_rst_model_alloc unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mdbm_data_$current_version mrds_data_$current_version_status mrds_data_$submodel_dir_name mrds_error_$rst_logic_error sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000125 3 44 000136 81 000140 83 000141 85 000163 88 000216 89 000245 91 000256 93 000344 95 000355 97 000357 99 000520 101 000532 102 000576 104 000612 106 000613 107 000633 110 000644 113 000677 115 000700 119 000702 120 000706 121 000712 129 000713 131 000721 133 000724 134 000726 135 000730 136 000732 137 000734 138 000736 139 000740 140 000742 141 000744 143 000746 147 001001 149 001002 153 001003 155 001034 156 001043 157 001057 158 001067 159 001077 160 001142 162 001155 164 001162 166 001167 168 001174 169 001176 170 001203 171 001205 172 001207 173 001211 174 001212 175 001214 176 001216 177 001220 178 001222 179 001224 180 001227 181 001231 182 001233 183 001235 184 001237 185 001241 186 001262 187 001266 188 001270 190 001272 193 001273 199 001275 201 001322 208 001340 209 001350 210 001353 214 001356 215 001364 216 001367 220 001372 221 001400 222 001403 227 001406 231 001416 235 001420 237 001445 242 001457 243 001466 244 001474 248 001477 252 001507 256 001520 258 001527 260 001531 264 001606 266 001646 272 001647 ----------------------------------------------------------- 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