COMPILATION LISTING OF SEGMENT create_mrds_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 1340.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 11 /****^ HISTORY COMMENTS: 12* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 13* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 14* This entry is being made to cover the change made on 85-04-19 by Thanh 15* Nguyen. (see mrds #136) 16* 2) change(86-07-21,Blair), approve(86-07-21,MCR7311), 17* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 18* When this module is called from command level with -list the xref file 19* from rmdb will be built and needs to be deleted. 20* END HISTORY COMMENTS */ 21 22 create_mrds_db: cmdb: mrds_rst_cmdb: procedure; /* CMDB procedure point */ 23 24 entry_name = "cmdb"; 25 goto common; 26 27 /* HISTORY 28* 29* Initially written by R. D. Lackey June, 1978 30* 31* Modified by Jim Gray 3/79, to put working storage in it's own 32* directory, using extensible areas 33* 34* Modified by Jim Gray - - Sept. 1979, to add suffix entries for 35* regression test compatibility 36* 37* Modified by Jim Gray - - Jan. 1980, to disallow use of blocked 38* files, foreign keys, and restructuring. 39* 40* Modified by Jim Gray - - Feb. 1980, to remove use of system_free_ 41* 42* Modified by Jim Gray - - Feb. 1980, to add entries to set up for 43* being called as subroutine. 44* 45* Modified by Jim Gray - - April 1980, to correct recursion flag 46* problem. 47* 48* Modified by Jim Gray - - 80-11-06, to add "-secure" option for 49* cmdb, and have mrds_rst_create_db always create a "submodel_dir", 50* under the database directory. The -secure option causes the 51* mdbm_secured bit to be set in the db_model. Also the 52* version_status structure in the db_model had it's major number 53* changed from 7 to 8. The CMDB/RMDB "running" message output at 54* the start of an invocation was altered to include the version 55* number of the model being worked on. 56* 57* Modified by Jim Gray - - 80-11-10, to change delete_$path to 58* hcs_$del_dir_tree and hcs_$delentry_file calls to improve 59* performance. 60* 61* 81-04-28 Jim Gray : added logic for the new -force control 62* argument. 63* 64* 82-05-12 Roger Lackey : changed the way temp_rsc_dir_name was determined to 65* use expand_pathname_ to correct a stringsize condition. 66* 67* 82-06-09 Davids: removed code that was supposed to handle rmdb 68* . and rmdb metering and tracing. rmdb has been 69* . moved to a separate subsystem. 70* 71* 82-06-24 Roger Lackey : change display of model for listing to use 72* . mrds_dm_display 73* 74* 82-07-02 Roger Lackey : changed call to mrds_dm_display to 75* mdbm_util_$mrds_display 76* and mu_quiesce$* to mdbm_util_$ for binding 77* 78* 82-07-06 Roger Lackey : changed mu_define_area to be mdbm_util_$mu_define_area 79* 80* 82-08-19 Davids: added code to set rsc.db_type from arg_info.db_type after the 81* call to mrds_rst_proc_ctl_args. 82* 83* 82-11-23 Davids: added entries set_vfile_db_type and set_page_file_db_type 84* which set the internal static variable default_db_type which was also 85* added and inited to "vf". Modified the parameter list of the module 86* mrds_rst_proc_ctl_args to include default_db_type. 87* 88* 12-02-82 R. Harvey: changed calls to release_area_ to release_temp_segment_ 89* so that the temporary segment really gets freed. 90* 91* 83-01-18 Mike Kubicar: Added transaction processing include files. 92* 93* 83-02-18 Mike Kubicar : Added recognition of mode string for dm files 94* and creation of models that reflect these strings. 95* 96* 83-05-18 Davids: Added the call to dsl_$create_res_copy to create the 97* copy of the model opening resultant. Also moved the position of where the 98* db_model.consistant bit is set to ON from the finish_cmdb internal procedure 99* procedure (if rsc.severity_high = 0) to just before the call to 100* create_res_copy. This was needed so that create_res_copy can open the db. 101* 102* 83-10-04 Benjamin: Replaced call to hcs_$initiate with initiate_file_. 103* 104* 83-10-05 Benjamin: Reverted change of 80-11-10. 105* 106* 84-07-19 Nguyen: Make cleanup handler more reliable and to diagnose non- 107* existent cmdb source segment more quickly. 108**/ 109 110 /* entries for debug and regression test purposes */ 111 112 113 suffix: entry (); /* USE ".db" SUFFIX ON DATABASE PATH */ 114 115 suffix_flag = ON; 116 117 return; 118 119 120 121 no_suffix: entry (); /* DON'T USE ".db" SUFFIX ON DATABASE PATH */ 122 123 suffix_flag = OFF; 124 125 return; 126 127 set_vfile_db_type: 128 vf: entry (); /* Default datatype will be vfile */ 129 130 unspec (default_db_relation_modes) = "0"b; 131 return; 132 133 134 set_dm_file_db_type: 135 dmf: entry (); /* Default datatype will be dm file */ 136 137 dcl set_modes_err_code fixed bin (35); /* Error code, Possibly returned from $parse_mode_string */ 138 dcl set_modes_err_msg char (500); /* Possibly returned from $parse_mode_string */ 139 dcl mrds_rst_proc_ctl_args$parse_mode_string entry (char (*), 1, 2 bit (1) unal, 2 bit (1) unal, 2 bit (1) unal, 140 2 bit (1) unal, fixed bin (35), char (*)); 141 142 143 entry_name = "cmdb$set_dm_file_db_type"; 144 mstxn_txn_id = "0"b; /* Just in case we have to call error */ 145 rsc_ptr = null (); /* Ditto */ 146 default_db_relation_modes.dm_file_type = "1"b; 147 default_db_relation_modes.protection_on = "1"b; 148 default_db_relation_modes.concurrency_on = "1"b; 149 default_db_relation_modes.rollback_on = "1"b; 150 call cu_$arg_count (arg_num, code); 151 if code ^= 0 152 then call error (code, 153 "While trying to determine the argument count."); 154 if arg_num > 1 155 then call error (error_table_$too_many_args, 156 "Usage: create_mrds_db$set_dm_file_db_type {mode_string}"); 157 if arg_num > 0 then do; 158 call cu_$arg_ptr (1, arg_ptr, arg_len, code); 159 if code ^= 0 160 then call error (code, 161 "While getting the first argument."); 162 call mrds_rst_proc_ctl_args$parse_mode_string (arg, default_db_relation_modes, set_modes_err_code, set_modes_err_msg); 163 if set_modes_err_code ^= 0 164 then call error (set_modes_err_code, set_modes_err_msg); 165 end; 166 167 return; 168 169 /* entries for new features allowing/disallowing */ 170 171 new_on: entry (); 172 173 allow_new_features = ON; 174 175 return; 176 177 /* turn off new features */ 178 179 new_off: entry (); 180 181 allow_new_features = OFF; 182 183 return; 184 185 /* entries to set up as a command or being called as subroutine */ 186 187 set_command_level: entry (); 188 189 command_level_call = ON; 190 191 return; 192 193 194 set_subroutine_level: entry (); 195 196 command_level_call = OFF; 197 198 return; 199 200 common: 201 if recurse_flag then do; /* If recursively invoked */ 202 call com_err_ (mrds_error_$no_recursion, entry_name); 203 return; 204 end; 205 else do; 206 207 mstxn_txn_id = "0"b; /* No transaction started yet */ 208 rsc_ptr = null; /* Init restructure control segment pointer */ 209 ai_ptr = null; /* Arg_info str pointer */ 210 wa_ptr = null (); 211 212 on cleanup call tidy_up; /* Establish a cleanup handler */ 213 214 recurse_flag = ON; /* remember we have been invoked */ 215 216 end; 217 218 call mdbm_util_$mu_define_area (wa_ptr, (sys_info$max_seg_size), "MRDS.cmdb", 219 "0"b /* not extensible */, "1"b /* no freeing */, "0"b, "0"b /* no zeroing */, code); 220 if code ^= 0 then call error (code, "defining temp area"); 221 222 mrds_dm_display_info_ptr = null; 223 224 if ^command_level_call then ; 225 else call ioa_$ioa_switch (iox_$user_output, "CMDB Version ^d models.", 226 mdbm_data_$current_version); 227 228 call cu_$arg_list_ptr (arg_list_ptr); /* Get pointer to commandlevel arguments */ 229 230 allocate arg_info in (wk_area); 231 232 call mrds_rst_proc_ctl_args (arg_list_ptr, ai_ptr, suffix_flag, default_db_relation_modes, fatal_sw); 233 if fatal_sw then do; /* Fatal error was encountered during arg processing */ 234 call tidy_up; 235 goto exit; 236 end; 237 238 call initiate_file_ (arg_info.source_dir, arg_info.source_entry, R_ACCESS, 239 temp_seg_ptr, source_seg_bcnt, code); 240 if code ^= 0 then do; 241 temp_msg = "Source segment: " || rtrim (arg_info.source_dir); 242 temp_msg = temp_msg || ">"; 243 temp_msg = temp_msg || arg_info.source_entry; 244 err_msg = temp_msg; 245 call error (code, err_msg); 246 end; 247 248 /* Create rsc (temporary) segment and directory */ 249 call mrds_rst_create_rsc (arg_info.temp_work_dir, rsc_ptr, code); /* Create and init rsc */ 250 if code ^= 0 then call error (code, "Creating rsc segment "); 251 252 rsc.source_seg_ptr = temp_seg_ptr; 253 rsc.db_relation_mode_flags = arg_info.relation_mode_flags; /* Set up relation modes */ 254 rsc.secure = arg_info.secure; /* set up cmdb -secure option */ 255 256 if ^allow_new_features then ; 257 else do; 258 rsc.allow_foreign_keys = ON; 259 rsc.allow_blocked_files = ON; 260 rsc.allow_restructuring = ON; 261 end; 262 263 264 if command_level_call then 265 rsc.command_level = ON; 266 else rsc.command_level = OFF; 267 rsc.dbp = arg_info.db_dir_path; 268 rsc.cmdb_option = ON; 269 270 if arg_info.list then call init_listing_seg; /* Attach open and init listing segent */ 271 272 rsc.temp_dir = rsc.dbp; /* For cmdb these are the same */ 273 db_model_path = rtrim (rsc.temp_dir) || ">db_model"; 274 275 call mrds_rst_create_db (rsc_ptr, dbm_ptr, code); /* Create the database skeleton including db_model */ 276 if code ^= 0 then do; 277 if code ^= error_table_$namedup then 278 call error (code, "Creating data base " || rsc.dbp); 279 else do; 280 if ^arg_info.force then do; 281 call expand_pathname_ (rsc.dbp, db_dir, db_entry, cd); 282 call error (code, " 283 The entry '" || rtrim (db_entry) || "' already exists under the directory " || db_dir); 284 end; 285 else do; /* user gave -force argument */ 286 287 /* check for a database, since we will not delete 288* plain directories, segments, links, or msf's */ 289 290 call dmd_$check_path (rtrim (rsc.dbp), db_dir, db_entry, new_found, code); 291 if code = error_table_$incorrect_access then 292 code = 0; /* ignore access problems to the data model */ 293 if code ^= 0 then 294 call error (code, "Trying to delete existing database: " || rsc.dbp); 295 else do; 296 297 /* force the user to be a DBA, if possible, so we can give all needed access */ 298 299 dir_acl (1).access_name = get_group_id_$tag_star (); /* get person.project.tag */ 300 call hcs_$add_dir_acl_entries (db_dir, db_entry, addr (dir_acl), 1, code); 301 if code ^= 0 then do; 302 if code = error_table_$argerr then 303 code = dir_acl (1).status_code; /* get real error for this acl setting */ 304 call error (code, "Could not set needed access: " || rsc.dbp); 305 end; 306 else do; 307 308 call dmd_$set_needed_access (rtrim (rsc.dbp), code); 309 if code ^= 0 then 310 call error (code, "Unable to give DBA needed access: " || rsc.dbp); 311 else do; 312 313 call delete_directory (); 314 if code ^= 0 then 315 call error (code, "Deleting existing database."); 316 else do; 317 call mrds_rst_create_db (rsc_ptr, dbm_ptr, code); /* try again */ 318 if code ^= 0 then 319 call error (code, "Creating data base after deletion " || rsc.dbp); 320 end; 321 end; 322 end; 323 end; 324 end; 325 end; 326 end; 327 328 rsc.delete_db_sw = ON; /* Set for tidy_up */ 329 330 call mrds_rst_get_seg_ptr (rsc_ptr, rsc.h_n_seg_info_ls_ptr, DB_MODEL_SEG_NAME, /* Add the new db_model to */ 331 INITIATE, dbm_ptr, code); /* seg_info list */ 332 if dbm_ptr = null then call error (code, "DB MODEL"); 333 334 rsc.n_dm_ptr = dbm_ptr; /* For cmdb New is used */ 335 336 rsc.phase = 200; /* going into parse phase */ 337 338 call mrds_rst_parse (rsc_ptr, rsc.source_seg_ptr, source_seg_bcnt / 9); 339 340 if rsc.severity_high >= 3 then ; 341 else call mrds_rst_consistancy_check (rsc_ptr); /* make sure there are no loose ends */ 342 343 344 /* Now we might be ready to create relations, set up for transactions */ 345 346 mstxn_transactions_needed = rsc.db_relation_mode_flags.protection_on; 347 if rsc.db_relation_mode_flags.dm_file_type then do; 348 no_dms_err_code = mrds_error_$no_dms; /* If we're going to get an error, do it now */ 349 on linkage_error 350 call error (no_dms_err_code, 351 "The Data Management System could not be found by the process search rules."); 352 dms_test = transaction_manager_$begin_txn; 353 revert linkage_error; 354 end; 355 356 on cleanup begin; 357 call mstxn_cleanup; 358 call tidy_up; 359 end; 360 361 on any_other call mstxn_any_other; 362 1 1 /* ====== BEGIN INCLUDE FILE mrds_start_transaction.incl.pl1 =========================== */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 1 7* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 1 8* This entry is being made to cover the changes made on 85-05-06 and 1 9* 85-04-19 by Thanh Nguyen. The dependency on dbcb.user_started_transaction 1 10* was removed because not all modules need the dbcb, and the 1 11* user_transaction_id field was added for mrds_dsl_retrieve (mrds error 1 12* list #136). 1 13* END HISTORY COMMENTS */ 1 14 1 15 1 16 /* 1 17* BEGIN_DESCRIPTION 1 18* 1 19* A generalized routine accessed by all MRDS modules (with the temporary 1 20* (perhaps) exception of restructuring modules) that must start transactions 1 21* if none are present. The intent is that it be executed as inline code. 1 22* The variable mstxn_transactions_needed must be set prior to entering this 1 23* code. In most cases a simple assignment from dbcb_data.transactions_needed 1 24* will suffice. Included are procedures called mstxn_cleanup and 1 25* mstxn_any_other. These procedures must be called by cleanup and any_other 1 26* handlers in the program. Such handlers should be established just prior to 1 27* the inclusion of this code and disabled just following the inclusion of 1 28* mrds_finish_transaction. Directly prior to establishing the handlers 1 29* mstxn_txn_id must be set to "0"b. This must be done even though this 1 30* include file does the same, because this code might not have been entered 1 31* yet when the handler is invoked. Directly following this include file the 1 32* contents of mstxn_code should be examined. If zero, then either the 1 33* transaction was successfully started or no transaction was required. If the 1 34* mrds_finish_transaction code is referenced in general error handling 1 35* situations where the possibility exists that the code in this include file 1 36* has not been executed, it is necessary to initialize mstxn_txn_id to "0"b at 1 37* the beginning of the program. 1 38* 1 39* END_DESCRIPTION 1 40* 1 41* Written 82-09-28 by Paul W. Benjamin. 1 42* Modified 82-12-09 by PWB to include mstxn_any_other. 1 43* Modified 83-01-07 by PWB to not reference the dbcb. 1 44* Modified 83-01-10 by PWB to add a call to continue_to_signal_ to the 1 45* any_other handler in situations where the module did 1 46* not start the transaction. 1 47* Modified 83-05-05 by PWB to abandon when abort fails. 1 48* Modified 83-05-18 by PWB to use mstxn_temp_code in calls to abandon and 1 49* and abort. 1 50* Modified 83-05-19 by PWB to handle transaction_deadlock and 1 51* transaction_bj_full conditions. 1 52* Modified 84-02-04 by PWB to add trailing underscores to the 2 conditions 1 53* and to handle transaction_lock_timeout_. 1 54* Modified 85-04-14 by Thanh Nguyen: Added code to set the 1 55* dbcb.user_started_transaction flag. 1 56* Modified 85-04-19 by Thanh Nguyen to add user_started_transaction flag. 1 57* Modified 85-05-06 By Thanh Nguyen to synchronize this include file in the 1 58* directory >ldd>include and >exl>mrd>i 1 59**/ 1 60 1 61 dcl continue_to_signal_ entry (fixed bin(35)); 1 62 dcl dm_error_$no_current_transaction fixed bin (35) ext static; 1 63 dcl error_table_$null_info_ptr fixed bin(35) ext static; 1 64 dcl find_condition_info_ entry (ptr, ptr, fixed bin(35)); 1 65 dcl mstxn_code fixed bin (35); 1 66 dcl mstxn_retries fixed; 1 67 dcl mstxn_temp_code fixed bin (35); 1 68 dcl mstxn_transactions_needed bit (1) aligned; 1 69 dcl user_started_transaction bit (1) aligned; 1 70 dcl mstxn_txn_id bit (36) aligned; 1 71 dcl user_transaction_id bit (36) aligned; 1 72 dcl transaction_manager_$abandon_txn entry (bit (36) aligned, fixed bin (35)); 1 73 dcl transaction_manager_$abort_txn entry (bit (36) aligned, fixed bin (35)); 1 74 dcl transaction_manager_$begin_txn entry (fixed bin, fixed bin (35), bit (36) aligned, fixed bin (35)); 1 75 dcl transaction_manager_$get_current_txn_id entry (bit (36) aligned, fixed bin (35)); 1 76 dcl transaction_manager_$handle_conditions entry (); 1 77 dcl 1 mstxn_condition_info like condition_info; 1 78 2 1 /* START OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 /* HISTORY: 2 4* 2 5*Designed by Matthew C. Pierret, 01/26/82. 2 6*Coded by Jeffrey D. Ives, 04/30/82. 2 7*Modified: 2 8*10/18/82 by Steve Herbst: Names changed. 2 9*01/19/83 by Steve Herbst: Added (LOWEST HIGHEST)_MODE. 2 10**/ 2 11 2 12 dcl (LOWEST_MODE init (1), 2 13 HIGHEST_MODE init (8)) fixed bin int static options (constant); 2 14 2 15 dcl TM_NORMAL_MODE fixed bin static options (constant) init (1); 2 16 dcl TM_STATISTICAL_MODE fixed bin static options (constant) init (2); 2 17 dcl TM_READ_ONLY_MODE fixed bin static options (constant) init (3); 2 18 dcl TM_NEVER_WRITE_MODE fixed bin static options (constant) init (4); 2 19 dcl TM_TEST_NORMAL_MODE fixed bin static options (constant) init (5); 2 20 dcl TM_TEST_STATISTICAL_MODE fixed bin static options (constant) init (6); 2 21 dcl TM_TEST_READ_ONLY_MODE fixed bin static options (constant) init (7); 2 22 dcl TM_TEST_NEVER_WRITE_MODE fixed bin static options (constant) init (8); 2 23 2 24 /* END OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 1 79 1 80 3 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 3 2 3 3 /* Structure for find_condition_info_. 3 4* 3 5* Written 1-Mar-79 by M. N. Davidoff. 3 6**/ 3 7 3 8 /* automatic */ 3 9 3 10 declare condition_info_ptr pointer; 3 11 3 12 /* based */ 3 13 3 14 declare 1 condition_info aligned based (condition_info_ptr), 3 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 3 16 2 version fixed binary, /* Must be 1 */ 3 17 2 condition_name char (32) varying, /* name of condition */ 3 18 2 info_ptr pointer, /* pointer to the condition data structure */ 3 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 3 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 3 21 2 flags unaligned, 3 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 3 23 3 pad1 bit (35), 3 24 2 pad2 bit (36), 3 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 3 26 2 pad3 (4) bit (36); 3 27 3 28 /* internal static */ 3 29 3 30 declare condition_info_version_1 3 31 fixed binary internal static options (constant) initial (1); 3 32 3 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1 81 1 82 1 83 mstxn_code = 0; 1 84 mstxn_txn_id = "0"b; 1 85 1 86 if ^mstxn_transactions_needed /* only need transactions */ 1 87 then goto mstxn_exit; /* for protected page files */ 1 88 mstxn_retries = 0; 1 89 call transaction_manager_$get_current_txn_id (mstxn_txn_id, mstxn_code); 1 90 if mstxn_code ^= dm_error_$no_current_transaction /* and if none already in progress */ 1 91 then do; 1 92 user_started_transaction = "1"b; 1 93 user_transaction_id = mstxn_txn_id; /* better save it for mrds_dsl_retrieve */ 1 94 mstxn_txn_id = "0"b; /* you didn't start it, it's none of your business */ 1 95 goto mstxn_exit; 1 96 end; 1 97 1 98 user_started_transaction = "0"b; 1 99 call transaction_manager_$begin_txn (TM_NORMAL_MODE, 0, mstxn_txn_id, mstxn_code); 1 100 user_transaction_id = mstxn_txn_id; /* better save it for mrds_dsl_retrieve */ 1 101 1 102 mstxn_cleanup: 1 103 proc; 1 104 1 105 /* This procedure MUST be called by a cleanup handler. */ 1 106 1 107 if mstxn_txn_id ^= "0"b 1 108 then do; 1 109 call transaction_manager_$abort_txn (mstxn_txn_id, mstxn_temp_code); 1 110 if mstxn_temp_code ^= 0 1 111 then call transaction_manager_$abandon_txn (mstxn_txn_id, mstxn_temp_code); 1 112 end; 1 113 1 114 end mstxn_cleanup; 1 115 1 116 mstxn_any_other: 1 117 proc; 1 118 1 119 /* This procedure MUST be called by an any_other handler. */ 1 120 1 121 if mstxn_txn_id ^= "0"b 1 122 then do; 1 123 call find_condition_info_ (null (), addr(mstxn_condition_info), mstxn_temp_code); 1 124 if mstxn_condition_info.condition_name = "transaction_deadlock_" 1 125 then do; 1 126 mftxn_code = dm_error_$lock_deadlock; 1 127 goto mftxn_check_code; 1 128 end; 1 129 else if mstxn_condition_info.condition_name = "transaction_bj_full_" 1 130 | mstxn_condition_info.condition_name = "transaction_lock_timeout_" 1 131 then do; 1 132 mftxn_code = dm_error_$bj_journal_full; 1 133 goto mftxn_check_code; 1 134 end; 1 135 else call transaction_manager_$handle_conditions; 1 136 end; 1 137 else call continue_to_signal_ (mstxn_code); /* code returned will always be zero */ 1 138 end mstxn_any_other; 1 139 1 140 mstxn_exit: 1 141 1 142 /* ------ END INCLUDE FILE mrds_start_transaction.incl.pl1 --------------------------- */ 363 364 if mstxn_code ^= 0 365 then call error (mstxn_code, "Starting a transaction"); 366 367 if rsc.severity_high = 0 then do; /* Logical completed OK */ 368 call model_adjust_bit_count; /* Adjust bit count for all models */ 369 370 call format_files; 371 rsc.n_dm_ptr -> db_model.consistant = ON; /* OK to open db */ 372 call dsl_$create_res_copy (rsc.dbp, code); 373 if code ^= 0 374 then do; 375 if rsc.listing_seg_sw 376 then call ioa_$ioa_switch (rsc.listing_iocb_ptr, 377 "2^/Could not create the model resultant copies"); 378 call ioa_$ioa_switch (iox_$error_output, 379 "2^/Could not create the model resultant copies"); 380 rsc.severity_high = 4; 381 rsc.n_dm_ptr -> db_model.consistant = OFF; 382 end; 383 end; 384 385 call finish_cmdb; 386 387 388 exit: 389 if rsc_ptr = null () 390 then mftxn_code = code; /* Nothing happened */ 391 else if rsc.severity_high = 0 & code = 0 /* No errors occurred */ 392 then mftxn_code = 0; /* Everthings cool */ 393 else if code = 0 394 then mftxn_code = error_table_$action_not_performed; /* Rollback! */ 395 else mftxn_code = code; 4 1 /* ====== BEGIN INCLUDE FILE mrds_finish_transaction.incl.pl1 =========================== */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 4 7* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 4 8* This entry is being made to cover the change made on 85-05-06 by Thanh 4 9* Nguyen. The code now checks a local flag. (mrds error list #136). 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* 4 14* BEGIN_DESCRIPTION 4 15* 4 16* A generalized routine accessed by all MRDS modules that begin and commit 4 17* transactions. The intent is that it be executed as inline code. It is 4 18* assumed that mrds_start_transaction was executed previously in the 4 19* procedure. Prior to this include file the program should assign the value 4 20* of its local error code to mftxn_code. The program utilizing this 4 21* include file must supply a function labeled should_rollback that returns 4 22* bit (1). This routine should examine the error code mftxn_code and whether 4 23* the transaction should be aborted or rolled back. "0"b means abort and "1"b 4 24* means rollback. This procedure may choose to simply return "0"b as it 4 25* appears that MRDS will generally NOT rollback transactions. This routine 4 26* does rollback and restart if the before journal is full but only attempts it 4 27* once. A procedure labelled restore_significant_data must also be supplied, 4 28* where any data that was saved prior to the transaction is restored. A 4 29* procedure consisting solely of a return statement can be supplied if 4 30* necessary. After execution of this include file, mftxn_code must be 4 31* examined. If it was 0 before entering the code and is non-zero afterward, 4 32* then the commit has failed. Otherwise it will be unchanged. 4 33* 4 34* END_DESCRIPTION 4 35* 4 36* Written 82-09-30 by Paul W. Benjamin. 4 37* Modified 83-01-13 by PWB to add retry on deadlocks and to return a non-zero 4 38* error code only when the transaction is in an error state. 4 39* Modified 83-02-04 by PWB to reset transaction id to 0 upon completion. 4 40* Modified 83-05-05 by PWB to abort when rollback fails, abandon when abort 4 41* fails, and to abort rather than rollback when bj is full. 4 42* Modified 83-05-18 by PWB to use mftxn_temp_code in calls to abandon, abort 4 43* and rollback. 4 44* Modified 83-05-19 by PWB to add mftxn_check_code label. It is transferred 4 45* to by the mstxn_any_other procedure. 4 46* Modified 85-04-14 by Thanh Nguyen not to commit the transaction in case of 4 47* the user already started his own transaction. 4 48* Modified 85-05-06 by Thanh Nguyen to synchronize this include file between 4 49* the directory >ldd>include and >exl>mrd>i. 4 50**/ 4 51 4 52 dcl dm_error_$bj_journal_full fixed bin(35) ext static; 4 53 dcl dm_error_$lock_deadlock fixed bin(35) ext static; 4 54 dcl mftxn_code fixed bin (35); 4 55 dcl mftxn_temp_code fixed bin (35); 4 56 dcl transaction_manager_$commit_txn entry (bit (36) aligned, fixed bin (35)); 4 57 dcl transaction_manager_$rollback_txn entry (bit (36) aligned, fixed bin (17), fixed bin (35)); 4 58 4 59 4 60 if mstxn_txn_id = "0"b | user_started_transaction = "1"b /* No transaction or we did not started it */ 4 61 then do; 4 62 mftxn_code = 0; 4 63 goto mftxn_exit; 4 64 end; 4 65 mftxn_check_code: 4 66 if mftxn_code = 0 4 67 then do; 4 68 call transaction_manager_$commit_txn (mstxn_txn_id, mftxn_code); 4 69 if mftxn_code ^= 0 4 70 then do; 4 71 call transaction_manager_$abort_txn (mstxn_txn_id, mftxn_temp_code); 4 72 if mftxn_temp_code ^= 0 4 73 then call transaction_manager_$abandon_txn (mstxn_txn_id, mftxn_temp_code); 4 74 end; 4 75 end; 4 76 else do; 4 77 call restore_significant_data; 4 78 if mftxn_code = dm_error_$lock_deadlock /* retry just once if deadlock */ 4 79 & mstxn_retries < 1 4 80 then do; 4 81 mstxn_retries = mstxn_retries + 1; 4 82 call transaction_manager_$rollback_txn (mstxn_txn_id, 0, mftxn_temp_code); 4 83 if mftxn_temp_code ^= 0 4 84 then do; 4 85 call transaction_manager_$abort_txn (mstxn_txn_id, mftxn_temp_code); 4 86 if mftxn_temp_code ^= 0 4 87 then call transaction_manager_$abandon_txn (mstxn_txn_id, mftxn_temp_code); 4 88 end; 4 89 else do; 4 90 mstxn_code = 0; 4 91 goto mstxn_exit; /* go back and try again */ 4 92 end; 4 93 end; 4 94 else if should_rollback () /* let the program decide */ 4 95 then do; 4 96 call transaction_manager_$rollback_txn (mstxn_txn_id, 0, mftxn_temp_code); 4 97 if mftxn_temp_code ^= 0 4 98 then do; 4 99 call transaction_manager_$abort_txn (mstxn_txn_id, mftxn_temp_code); 4 100 if mftxn_temp_code ^= 0 4 101 then call transaction_manager_$abandon_txn (mstxn_txn_id, mftxn_temp_code); 4 102 end; 4 103 else do; 4 104 mstxn_code = 0; 4 105 goto mstxn_exit; /* go back and try again */ 4 106 end; 4 107 end; 4 108 else do; 4 109 call transaction_manager_$abort_txn (mstxn_txn_id, mftxn_temp_code); 4 110 if mftxn_temp_code ^= 0 4 111 then call transaction_manager_$abandon_txn (mstxn_txn_id, mftxn_temp_code); 4 112 end; 4 113 end; 4 114 mstxn_txn_id = "0"b; /* should never be nonzero unless there is a txn */ 4 115 mftxn_exit: 4 116 4 117 /* ------ END INCLUDE FILE mrds_finish_transaction.incl.pl1 --------------------------- */ 396 397 398 if mftxn_code ^= 0 399 then call com_err_ (mftxn_code, entry_name); 400 if entry_name ^= "cmdb$set_dm_file_db_type" 401 then call tidy_up; 402 return; /* This is the only return from this program */ 403 404 model_adjust_bit_count: proc; 405 406 /* This procedure adjusts the bit count on the data model and all file models */ 407 408 success = ON; /* Init loop */ 409 410 if rsc.h_n_seg_info_ls_ptr ^= null then 411 do loop_ptr = rsc.h_n_seg_info_ls_ptr /* Do all segment in new seg_info list */ 412 repeat node_ptr 413 while (success = ON); 414 415 call mrds_rst_tree_successor (rsc.h_n_seg_info_ls_ptr, 416 loop_ptr, node_ptr, dummy_ptr, success); 417 418 if success then do; /* IF entry in list was found */ 419 420 seg_info_ptr = node.data; /* Set pointer to seg_info */ 421 422 call adjust_bit_count_ (seg_info.dir, seg_info.name, "1"b, (seg_info.bcnt), code); 423 if code ^= 0 then call error (code, "model_adjust_bit_count"); 424 425 end; 426 end; 427 428 end model_adjust_bit_count; 429 430 finish_cmdb: proc; 431 432 if rsc.listing_seg_sw then do; 433 if rsc.severity_high > 0 then call ioa_$ioa_switch (rsc.listing_iocb_ptr, 434 "^2/An error of severity ^d occured.^/database not created.^/", rsc.severity_high); 435 436 else call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^/NO ERRORS^/"); 437 end; 438 if rsc.severity_high > 0 & rsc.command_level then 439 call ioa_$ioa_switch (iox_$error_output, 440 "^/cmdb: An error of severity ^d occured.^/^6xData base not created.^/", rsc.severity_high); 441 442 443 if rsc.severity_high = 0 then do; 444 rsc.delete_db_sw = OFF; /* We have a good data base */ 445 if rsc.listing_seg_sw then do; /* display db in listing */ 446 call init_display_info; /* Internal proc */ 447 call mdbm_util_$mrds_dm_display (mrds_dm_display_info_ptr, err_msg, code); 448 if code ^= 0 then call error (code, err_msg); 449 end; 450 end; 451 452 end finish_cmdb; 453 454 format_files: proc; 455 456 /* this procedure walks the global file list and formats the newly created files */ 457 458 dcl error_code fixed bin (35); 459 460 node_ptr = rsc.h_gfile_ptr; 461 462 success = ON; 463 464 do while (success); /* all the files in list */ 465 call mrds_rst_tree_successor (rsc.h_gfile_ptr, node_ptr, successor_ptr, successor_parent_ptr, success); 466 467 if success then do; /* Found a file info */ 468 node_ptr = successor_ptr; 469 gl_ptr = node.data; 470 if ^gl.complete then do; /* To complete it format the file */ 471 call mrds_rst_format_file (rsc_ptr, (gl.name), error_code); 472 if error_code ^= 0 473 then call error (error_code, "Creating relation " || rtrim (gl.name)); 474 gl.complete = ON; /* It is now complete */ 475 end; 476 end; 477 end; 478 479 end format_files; 480 481 error: proc (cd, msg); 482 483 dcl cd fixed bin (35); /* (INPUT) Error code */ 484 dcl msg char (*); /* (INPUT) error message input with code */ 485 486 code = cd; /* Code is a global parameter */ 487 call com_err_ (cd, entry_name, "^/^a", msg); 488 goto exit; 489 490 end error; 491 492 init_listing_seg: proc; /* Initialize listing segment */ 493 494 call cu_$decode_entry_value (create_mrds_db, ref_ptr, dummy_ptr); /* Get pointer to ref procedure */ 495 496 attach_desc = "vfile_ " || rtrim (get_wdir_ ()) || ">" || 497 before (arg_info.source_entry, "." || rtrim (entry_name)) || ".list"; 498 499 call iox_$attach_name (unique_chars_ ("0"b) || rtrim (entry_name) || ".listing", 500 rsc.listing_iocb_ptr, attach_desc, ref_ptr, code); 501 if code = 0 then call iox_$open (rsc.listing_iocb_ptr, STREAM_OUTPUT, "0"b, code); 502 if code ^= 0 then call error (code, "listing segment"); 503 504 value = "CREATE_MRDS_DB"; 505 506 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^-^a LISTING FOR ^a", 507 value, rtrim (arg_info.source_dir) || ">" || arg_info.source_entry); 508 509 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^-Created by:^-^a", 510 get_group_id_ ()); 511 512 call date_time_ (clock (), long_date); 513 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^-Created on:^-^a", long_date); 514 515 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^-Data base path:^-^a", rsc.dbp); 516 517 value = ""; 518 519 if arg_info.list then value = value || " list"; 520 521 if value = "" then value = " None"; 522 523 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^-^7xOptions:^4x^a", value); 524 525 call ioa_$ioa_switch (rsc.listing_iocb_ptr, "^/");/* A couple of spaces */ 526 527 rsc.listing_seg_sw = ON; 528 return; 529 530 end init_listing_seg; 531 532 init_display_info: proc; 533 534 allocate mrds_dm_display_info in (wa) set (mrds_dm_display_info_ptr); 535 536 mrds_dm_display_info.version = MRDS_DM_DISPLAY_INFO_VERSION_1; 537 mrds_dm_display_info.output_iocb_ptr = rsc.listing_iocb_ptr; 538 mrds_dm_display_info.db_path = rsc.dbp; 539 mrds_dm_display_info.temp_dir_path = arg_info.temp_work_dir; 540 mrds_dm_display_info.work_area_ptr = wa_ptr; 541 mrds_dm_display_info.dbm_ptr = dbm_ptr; 542 mrds_dm_display_info.sw.default = "0"b; 543 mrds_dm_display_info.sw.long = "1"b; /* This is what we are after */ 544 mrds_dm_display_info.sw.cmdb = "0"b; 545 mrds_dm_display_info.sw.names_only = "0"b; 546 547 mrds_dm_display_info.sw.attribute = "0"b; 548 mrds_dm_display_info.sw.relation = "1"b; /* This is what we are after */ 549 mrds_dm_display_info.sw.index = "0"b; 550 mrds_dm_display_info.sw.history = "0"b; 551 mrds_dm_display_info.sw.header = "1"b; /* This is what we are after */ 552 mrds_dm_display_info.sw.mbz = "0"b; 553 mrds_dm_display_info.dom_name_list_ptr = null; 554 mrds_dm_display_info.attr_name_list_ptr = null; 555 mrds_dm_display_info.rel_name_list_ptr = null; 556 mrds_dm_display_info.index_name_list_ptr = null; 557 mrds_dm_display_info.xref_iocb_ptr = null; 558 mrds_dm_display_info.xref_name = ""; 559 560 end init_display_info; 561 562 tidy_up: proc; 563 564 if rsc_ptr ^= null then do; 565 566 if rsc.db_quiesced_sw then /* If database has been quiesced then un-quiesce it */ 567 call mdbm_util_$quiesce_free (rsc.dbp, code); 568 569 if mrds_dm_display_info_ptr ^= null 570 then if mrds_dm_display_info.xref_iocb_ptr ^= null 571 then do; 572 call mdbm_util_$xref_destroy (mrds_dm_display_info.xref_iocb_ptr, 573 mrds_dm_display_info.temp_dir_path, (mrds_dm_display_info.xref_name), err_msg, code); 574 if code ^= 0 then call error (code, err_msg); 575 mrds_dm_display_info.xref_iocb_ptr = null; 576 end; 577 578 if rsc.delete_db_sw then /* If the data base had been created but an error */ 579 call delete_directory; /* occured then delete the data base */ 580 581 582 else if rsc.temp_dir_sw then /* Entry point was rmdb and a temp dir was created */ 583 call delete_directory; 584 585 if rsc.listing_seg_sw then do; /* Close and detach the listing segment */ 586 call iox_$close (rsc.listing_iocb_ptr, code); 587 if code = 0 then call iox_$detach_iocb (rsc.listing_iocb_ptr, code); 588 if code = 0 then call iox_$destroy_iocb (rsc.listing_iocb_ptr, code); 589 end; 590 591 call expand_pathname_ (rsc.rsc_dir, dir, temp_rsc_dir_name, code); 592 if code = 0 then do; 593 delete_options.force = ON; 594 delete_options.question = OFF; 595 delete_options.directory = ON; 596 delete_options.segment = ON; 597 delete_options.link = ON; 598 delete_options.chase = ON; 599 delete_options.library = OFF; 600 delete_options.raw = OFF; 601 delete_options.mbz = OFF; 602 603 quit_sw = "0"b; 604 on quit quit_sw = "1"b; 605 /* Because the delete_$path takes a lot of cpu time, so let handle the quit 606* condition and let it finishes then we give the quit. */ 607 call delete_$path (arg_info.temp_work_dir, temp_rsc_dir_name, string (delete_options), MODULE_NAME, code); 608 if code = 0 then do; 609 rsc_ptr = null; 610 end; 611 if quit_sw then do; 612 quit_sw = "0"b; 613 revert quit; 614 signal quit; 615 end; 616 end; 617 if code ^= 0 618 then call com_err_ (code, entry_name, "^a", "deleting rsc_dir"); 619 end; 620 621 if wa_ptr ^= null () then do; 622 call release_temp_segment_ ("MRDS.cmdb", wa_ptr, code); 623 wa_ptr = null (); 624 end; 625 626 recurse_flag = OFF; /* Reset so we can be called again */ 627 return; 628 629 end tidy_up; 630 631 delete_directory: proc; 632 633 temp_dir_name = reverse (before (reverse (before (rsc.temp_dir, BLANK)), ">")); 634 temp_dir_directory = before (rsc.temp_dir, ">" || temp_dir_name); 635 636 delete_options.force = ON; 637 delete_options.question = OFF; 638 delete_options.directory = ON; 639 delete_options.segment = ON; 640 delete_options.link = ON; 641 delete_options.chase = ON; 642 delete_options.library = OFF; 643 delete_options.raw = OFF; 644 delete_options.mbz = OFF; 645 646 call delete_$path (temp_dir_directory, temp_dir_name, string (delete_options), MODULE_NAME, code); 647 648 end delete_directory; 649 650 /* 651** 652** These routines are dummy routines required for the transaction processing 653** include files. They do nothing. 654** 655**/ 656 657 should_rollback: 658 proc returns (bit (1)); 659 return ("0"b); 660 end should_rollback; 661 662 663 restore_significant_data: 664 proc; 665 end restore_significant_data; 666 667 dcl recurse_flag bit (1) internal static init ("0"b); /* On = cmdb/rmdb has been invoked */ 668 669 670 671 672 673 674 dcl adjust_bit_count_ entry (char (168), char (32), bit (1) aligned, fixed bin (35), fixed bin (35)); 675 dcl cleanup condition; 676 dcl quit condition; 677 dcl any_other condition; 678 dcl linkage_error condition; 679 dcl clock builtin; 680 dcl com_err_ entry options (variable); 681 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 682 dcl cu_$arg_list_ptr entry (ptr); 683 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 684 dcl cu_$decode_entry_value entry (entry, ptr, ptr); 685 dcl date_time_ entry (fixed bin (71), char (*)); 686 dcl delete_$path entry (char (*), char (*), bit (36) aligned, char (*), 687 fixed bin (35)); 688 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 689 dcl get_group_id_ entry returns (char (32)); 690 dcl get_group_id_$tag_star entry returns (char (32)); 691 dcl get_wdir_ entry returns (char (168)); 692 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), 693 fixed bin (35)); 694 dcl ioa_$ioa_switch entry options (variable); 695 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 696 dcl iox_$close entry (ptr, fixed bin (35)); 697 dcl iox_$error_output ext ptr; 698 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 699 dcl iox_$user_output ext ptr; 700 dcl unique_chars_ entry (bit (*)) returns (char (15)); 701 dcl unspec builtin; 702 dcl wa_ptr ptr; 703 dcl wk_area area (sys_info$max_seg_size) based (wa_ptr); 704 dcl (iox_$detach_iocb, iox_$destroy_iocb) entry (ptr, fixed bin (35)); 705 dcl mrds_rst_consistancy_check entry (ptr); /* valid model checker */ 706 707 dcl BLANK char (1) int static options (constant) init (" "); 708 dcl DB_MODEL_SEG_NAME char (32) aligned int static options (constant) init ("db_model"); 709 dcl INITIATE bit (1) int static options (constant) init ("0"b); 710 dcl MODULE_NAME char (14) int static options (constant) init ("create_mrds_db"); 711 dcl OFF bit (1) int static options (constant) init ("0"b); 712 dcl ON bit (1) int static options (constant) init ("1"b); 713 dcl quit_sw bit (1) aligned; 714 dcl RINGS (3) fixed bin (3) init static options (constant) init (7, 7, 7); /* Ring brackets */ 715 dcl STREAM_OUTPUT fixed bin internal static options (constant) init (2); 716 717 dcl mdbm_util_$mrds_dm_display entry (ptr, char (*), fixed bin (35)); 718 dcl mdbm_util_$xref_destroy entry (ptr, char (*), char (*), char (*), fixed bin (35)); 719 dcl mrds_rst_create_db entry (ptr, ptr, fixed bin (35)); 720 dcl mrds_rst_create_rsc entry (char (*), ptr, fixed bin (35)); 721 dcl mrds_rst_format_file entry (ptr, char (*), fixed bin (35)); 722 dcl mrds_rst_get_seg_ptr entry (ptr, ptr, char (32) aligned, bit (1), ptr, fixed bin (35)); 723 dcl mdbm_util_$quiesce_free entry (char (168), fixed bin (35)); 724 dcl mrds_rst_parse entry (ptr, ptr, fixed bin (24)); 725 dcl mrds_rst_proc_ctl_args entry (ptr, ptr, bit (1), 1, 2 bit (1) unal, 2 bit (1) unal, 2 bit (1) unal, 726 2 bit (1) unal, bit (1)); 727 declare suffix_flag bit (1) init ("1"b) int static; /* on => use ".db" suffix on db path */ 728 declare allow_new_features bit (1) init ("0"b) int static; /* on => allow foreign keys, blocked files, restructuring */ 729 declare release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 730 declare mdbm_util_$mu_define_area entry (ptr, fixed bin (18), char (11), /* calls mu_define_area_ to get temp seg */ 731 bit (1) aligned, bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 732 declare command_level_call bit (1) internal static init ("1"b); /* on => set up as command, not subroutine */ 733 declare mdbm_data_$current_version fixed bin (35) ext; /* curent model version numberr */ 734 declare error_table_$incorrect_access fixed bin (35) ext; /* no acl to existing data model */ 735 declare new_found bit (1); /* on => new version db arch found */ 736 declare dmd_$check_path entry (char (*), char (168), char (32), bit (1), fixed bin (35)); /* determines if path is to db */ 737 declare dmd_$set_needed_access entry (char (*), fixed bin (35)); /* gives a DBA all acls */ 738 declare dsl_$create_res_copy entry (char (168), fixed bin (35)); 739 declare hcs_$add_dir_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); /* set acl on a dir */ 740 declare 1 dir_acl (1:1) aligned, /* structure for setting sma on db dir */ 741 2 access_name char (32), /* person.project.tag */ 742 2 dir_modes bit (36) init ("111000000000000000000000000000000000"b), /* sma acl */ 743 2 status_code fixed bin (35) init (0); /* error code for this acl setting */ 744 declare error_table_$argerr fixed bin (35) ext;/* from hcs_$add_dir_acl_entries */ 745 746 dcl mrds_rst_tree_successor entry (ptr, ptr, ptr, ptr, bit (1)); 747 dcl sys_info$max_seg_size ext fixed bin (35); 748 749 /* ERROR CODES */ 750 751 dcl error_table_$action_not_performed fixed bin (35) ext static; /* Could not create db */ 752 dcl error_table_$namedup ext fixed bin (35); 753 dcl error_table_$too_many_args fixed bin (35) ext static; 754 dcl mrds_error_$no_recursion ext fixed bin (35); 755 dcl mrds_error_$no_dms ext fixed bin (35); 756 757 dcl arg char (arg_len) based (arg_ptr); 758 /* To get args for set_dm_file_db_type entry point */ 759 dcl arg_len fixed bin (21); /* To get args for set_dm_file_db_type entry point */ 760 dcl arg_list_ptr ptr; /* Pointer to commmand level argument list */ 761 dcl arg_num fixed bin; /* Number of args for set_dm_file_db_type entry point */ 762 dcl arg_ptr ptr; /* To get arguments for set_dm_file_db_type entry point */ 763 dcl source_seg_bcnt fixed bin (24); /* Bit count of source segment */ 764 dcl temp_seg_ptr ptr; 765 dcl err_msg char (256); 766 dcl fatal_sw bit (1); /* ON => Fatal error occured while processing control arguments */ 767 768 dcl (addr, null, fixed, rtrim, before, reverse, string) builtin; 769 770 dcl cd fixed bin (35); 771 dcl db_dir char (168); 772 dcl db_entry char (32); 773 dcl dir char (168); 774 dcl dms_test entry options (variable) variable; /* See if dms software is there */ 775 dcl code fixed bin (35); /* Error code */ 776 dcl (dummy_ptr, loop_ptr) ptr; /* Dummy pointer */ 777 dcl ref_ptr ptr; /* procedure reference pointer */ 778 dcl attach_desc char (200); /* Attach descriptor */ 779 dcl entry_name char (32); 780 dcl db_model_path char (168); /* path name down to db_model */ 781 dcl long_date char (24); 782 dcl no_dms_err_code fixed bin (35); /* To avoid recursive linkage_error conditions */ 783 dcl temp_dir_name char (32); /* Name of temp directory entry */ 784 dcl temp_dir_directory char (168); 785 dcl temp_rsc_dir_name char (32); /* temp for holding rsc dir name */ 786 dcl temp_msg char (256) varying; 787 dcl value char (64) varying; 788 789 dcl 1 default_db_relation_modes int static, /* Relation modes, set by set_(vfile dm_file)_db_type entry points */ 790 2 dm_file_type bit (1) init ("0"b), /* Default vfile */ 791 2 protection_on bit (1) init ("0"b), /* No transactions */ 792 2 concurrency_on bit (1) init ("0"b), /* No concurrency */ 793 2 rollback_on bit (1) init ("0"b); /* No journalling */ 794 5 1 /* BEGIN INCLUDE FILE mrds_rst_struct_types.incl.pl1 - - Jim Gray 2/20/79 */ 5 2 5 3 /* these constants are used to identify structures to be allocated 5 4* to the general purpose allocation routines */ 5 5 5 6 /* HISTORY: 5 7* 82-06-28 Roger Lackey : Removed struct types 52, 53, 54, 55, 56, 57, 58 5 8* Type 25 is no longer used and is handled with special code so bounds of 5 9* array could continue to work */ 5 10 5 11 /* PARSE INFO STRUCTURES */ 5 12 5 13 declare DOMAIN fixed bin internal static options (constant) init (1) ; 5 14 declare ATTRIBUTE_DOMAIN fixed bin internal static options (constant) init (2) ; 5 15 declare RELATION fixed bin internal static options (constant) init (3) ; 5 16 declare ATTRIBUTE fixed bin internal static options (constant) init (4) ; 5 17 declare FILE fixed bin internal static options (constant) init (5) ; 5 18 declare ITEM fixed bin internal static options (constant) init (6) ; 5 19 declare LINK fixed bin internal static options (constant) init (7) ; 5 20 declare FOREIGN_KEY fixed bin internal static options (constant) init (8) ; 5 21 declare CHILDREN fixed bin internal static options (constant) init (9) ; 5 22 declare INDEX fixed bin internal static options (constant) init (10) ; 5 23 declare DELETE_NAME fixed bin internal static options (constant) init (11) ; 5 24 declare DOM_LIST fixed bin internal static options (constant) init (12) ; /* in link handler */ 5 25 5 26 /* SEMANTIC STRUCTURES */ 5 27 5 28 declare DIRECTIVE fixed bin internal static options (constant) init (13) ; 5 29 declare STMT fixed bin internal static options (constant) init (14) ; 5 30 5 31 5 32 /* PARSING STRUCTURES */ 5 33 5 34 declare LEX_STACK fixed bin internal static options (constant) init (15) ; 5 35 declare P_STRUCT fixed bin internal static options (constant) init (16) ; 5 36 declare CUR_LEX_TOP fixed bin internal static options (constant) init (17) ; 5 37 declare FIXUP_TOKEN fixed bin internal static options (constant) init (50) ; /* scanner */ 5 38 declare STRING_SOURCE fixed bin internal static options (constant) init (51) ; /* semantics */ 5 39 declare TOKEN fixed bin internal static options (constant) init (18) ; 5 40 declare OUTPUT_TEXT fixed bin internal static options (constant) init (19) ; 5 41 5 42 5 43 /* DB_MODEL STRUCTURES */ 5 44 5 45 declare DB_MODEL fixed bin internal static options (constant) init (0) ; 5 46 declare FILE_INFO fixed bin internal static options (constant) init (1) ; 5 47 declare DOMAIN_INFO fixed bin internal static options (constant) init (2) ; 5 48 declare PATH_ENTRY fixed bin internal static options (constant) init (3) ; 5 49 declare STACK_ITEM fixed bin internal static options (constant) init (4) ; 5 50 declare CONSTANT fixed bin internal static options (constant) init (30) ; 5 51 declare VERSION_STATUS fixed bin internal static options (constant) init (5) ; 5 52 declare CHANGER fixed bin internal static options (constant) init (6) ; 5 53 5 54 5 55 /* FILE_MODEL STRUCTURES */ 5 56 5 57 declare FILE_MODEL fixed bin internal static options (constant) init (7) ; 5 58 declare REL_INFO fixed bin internal static options (constant) init (8) ; 5 59 declare ATTR_INFO fixed bin internal static options (constant) init (9) ; 5 60 declare PARENT_LINK_INFO fixed bin internal static options (constant) init (10) ; 5 61 declare CHILD_LINK_INFO fixed bin internal static options (constant) init (11) ; 5 62 declare ATTR_LIST fixed bin internal static options (constant) init (12) ; 5 63 declare ATD fixed bin internal static options (constant) init (31) ; 5 64 declare COMP_NO_ARRAY fixed bin internal static options (constant) init (32) ; 5 65 declare SORT_KEY fixed bin internal static options (constant) init (13) ; 5 66 declare DUP_PREV fixed bin internal static options (constant) init (14) ; 5 67 declare SELECT_CHAIN fixed bin internal static options (constant) init (15) ; 5 68 5 69 5 70 /* GLOBAL LIST STRUCTURES */ 5 71 5 72 declare GL fixed bin internal static options (constant) init (20) ; 5 73 declare SL fixed bin internal static options (constant) init (21) ; 5 74 declare SEGINFO fixed bin internal static options (constant) init (22) ; 5 75 declare LIST_OVRLY fixed bin internal static options (constant) init (26) ; 5 76 declare SAVED_CHILD_COUNT fixed bin internal static options (constant) init (24) ; /* in global list build */ 5 77 declare NODE fixed bin internal static options (constant) init (23) ; 5 78 5 79 5 80 /* DISPLAY STRUCTURES */ 5 81 5 82 declare DISPLAY_INFO fixed bin internal static options (constant) init (25) ; 5 83 5 84 /* Remove because nolonger used 82-06-28 5 85* NAME_LIST fixed bin internal static options (constant) init (52) ; 5 86* PAI_ARRAY fixed bin internal static options (constant) init (53) ; 5 87* PAR_LK_ATTR_INFO fixed bin internal static options (constant) init (54) ; 5 88* CAI_ARRAY fixed bin internal static options (constant) init (55) ; 5 89* CHILD_LK_ATTR_INFO fixed bin internal static options (constant) init (56) ; 5 90* NAME_TABLE fixed bin internal static options (constant) init (57) ; 5 91* ATTR_TABLE fixed bin internal static options (constant) init (58) ; 5 92**/ 5 93 5 94 /* END INCULDE FILE mrds_rst_struct_types */ 5 95 795 796 6 1 /* START OF: mrds_rst_arg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 6 2 6 3 6 4 /* This structure contains information describing some of the attributes 6 5* of mrds relations. */ 6 6 6 7 dcl 1 db_relation_modes, 6 8 2 dm_file_type bit (1), /* Set if the relation is a dm_file. Not set if a vfile */ 6 9 2 protection_on bit (1), /* Set if protection is enabled for a dm file */ 6 10 2 concurrency_on bit (1), /* Set if concurrency is enabled (protected files only \) */ 6 11 2 rollback_on bit (1); /* Set if before journals are to be kept (protected files only) */ 6 12 6 13 6 14 6 15 /* This structure contains the information determined about 6 16* create_mrds_db control arguments */ 6 17 6 18 dcl 1 arg_info based (ai_ptr), 6 19 2 list bit (1) unal init ("0"b), /* ON => Create a listing segment */ 6 20 2 twd bit (1) unal init ("0"b), /* ON => a temporary working directory path was supplied */ 6 21 2 secure bit (1) unal init ("0"b), /* on => set secured bit in db_model at creation time */ 6 22 2 force bit (1) unal init ("0"b), /* on => delete existing dir of same name as new db */ 6 23 2 relation_mode_flags like db_relation_modes, 6 24 2 unused bit (23) unal init ("0"b), /* reserved for future use */ 6 25 2 source_dir char (168), /* Directory pathname of source (INPUT) segment */ 6 26 2 source_entry char (32), /* Entry name of source segment */ 6 27 2 db_dir_path char (168), /* Pathname of database directory */ 6 28 2 temp_work_dir char (168); /* Pathname of temporary working directory */ 6 29 6 30 dcl ai_ptr ptr; /* Pointer to arg_info structure */ 6 31 6 32 /* END OF: mrds_rst_arg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 797 798 7 1 /* BEGIN INCLUDE FILE mrds_rst_rsc.incl.pl1 RDL 7/7/78 */ 7 2 7 3 /* Modified 8/21/78 by RDL */ 7 4 7 5 /* Modified 9/11/78 by RDL to add directive and stmt pointers */ 7 6 7 7 /* Modified 11/4/78 by RDL to add debug,trace,meter switches 7 8* 7 9* Modified 3/29/79 by RDL to change s_seg_info_ptr to source_seg_ptr 7 10* 7 11* Modified by Jim Gray - - Jan. 1980, to add flags to disallow blocked files, forieng keys, and restructuring. 7 12* 7 13* Modified by Jim Gray - - Feb. 1980, to add command level flag for cmdb subroutine interface. 7 14* 7 15* Modified by Jim Gray - - 80-11-06, to add bit for cmdb -secure option. 7 16* 7 17* 81-05-18 Jim Gray : added bit for max_attributes error message, so that 7 18* it would only be issued on first occurence. 7 19* 7 20* 82-08-19 Davids: added the db_type field. 7 21* 7 22* 83-02-18 Mike Kubicar : Removed the db_type field and added the 7 23* db_relation_mode_flags substructure to define the modes applicable 7 24* to the database's relations. Also removed assorted unsed fields 7 25* (names that included the word unused). 7 26* 7 27**/ 7 28 7 29 dcl 1 rsc based (rsc_ptr), /* Restructuring control info */ 7 30 2 rsc_dir char (200), /* pathname of directory containing rsc segment */ 7 31 2 dbp char (168), /* Database absolute path */ 7 32 2 temp_dir char (168), /* Path name of temp restrucuring directory */ 7 33 2 temp_dir_sw bit (1) unal, /* On => temp dir has been created */ 7 34 2 db_quiesced_sw bit (1) unal, /* On => database has been quiesced */ 7 35 2 o_db_open_sw bit (1) unal, /* On => old database has been opened */ 7 36 2 n_db_open_sw bit (1) unal, /* On => temp database is open */ 7 37 2 listing_seg_sw bit (1) unal, /* On => listing segment has been created */ 7 38 2 skip_scanner_conversion bit (1) unal, /* Skip conversion in scanner */ 7 39 2 cmdb_option bit (1) unal, /* ON => this is a cmdb source, not restructuring */ 7 40 2 trace_sw bit (1) unal, /* On -> trace mode in affect */ 7 41 2 debug_sw bit (1) unal, /* On = debug mode (NOT IMPLEMENTED) */ 7 42 2 meter_sw bit (1) unal, /* On = procedures call metering procedure */ 7 43 2 delete_db_sw bit (1) unal, /* On = delete data base in cleanup */ 7 44 2 model_consistent_sw bit (1) unal, /* On => Model is consistent */ 7 45 2 physical_started_sw bit (1) unal, /* On => Physical restructuring started */ 7 46 2 physical_complete_sw bit (1) unal, /* On => Physical restructuring completed */ 7 47 2 model_overflow bit (1) unal, /* ON => model segment area condition occurred */ 7 48 2 max_files bit (1) unal, /* ON => maximum number of files reached */ 7 49 2 allow_foreign_keys bit (1) unal, /* on => allow foreign key statment */ 7 50 2 foreign_key_seen bit (1) unal, /* on => foreign key definition in source */ 7 51 2 allow_blocked_files bit (1) unal, /* on => allow file statement with blocked option */ 7 52 2 blocked_file_seen bit (1) unal, /* on => blocked file definition in source */ 7 53 2 allow_restructuring bit (1) unal, /* on => allow RMDB entry point */ 7 54 2 command_level bit (1) unal, /* on => called from command unal, not subroutine level */ 7 55 2 secure bit (1) unal, /* on => -secure option given for cmdb */ 7 56 2 max_attrs bit (1) unal, /* on => max attrs/rel or max indexes/rel exceeded */ 7 57 2 db_relation_mode_flags, 7 58 3 dm_file_type bit (1) unal, /* on => relations are dm files */ 7 59 3 protection_on bit (1) unal, /* on => relations need transactions */ 7 60 3 concurrency_on bit (1) unal, /* on => concurrency control enabled */ 7 61 3 rollback_on bit (1) unal, /* on => before journalling is enabled */ 7 62 2 severity_high fixed bin, /* Highest severity level error encountered */ 7 63 2 phase fixed bin, /* 000 = init 7 64* 100 = global list init 7 65* 200 = parse 7 66* 300 = physical init 7 67* 400 = physical */ 7 68 2 h_o_seg_info_ls_ptr ptr, /* Pointer to head of old db seg_info list */ 7 69 2 h_n_seg_info_ls_ptr ptr, /* Pointer to head of new db seg_info list */ 7 70 2 h_gfile_ptr ptr, /* Pointer to head of global file list */ 7 71 2 h_gdom_ptr ptr, /* Pointer to head of global domain list */ 7 72 2 h_gattr_ptr ptr, /* Pointer to head of global attribute list */ 7 73 2 h_grel_ptr ptr, /* Pointer to head of global relation list */ 7 74 2 h_glink_ptr ptr, /* Pointer to head of global link list */ 7 75 2 o_dm_ptr ptr, /* Pointer to old data model seg (dm_model ) */ 7 76 2 n_dm_ptr ptr, /* Pointer to temp data model seg */ 7 77 2 o_fn_hdr_ptr ptr, /* Pointer to head of original file list (fn structure) */ 7 78 2 source_seg_ptr ptr, /* Pointer to source_seg */ 7 79 2 listing_iocb_ptr ptr, /* Pointer to listing segment iocb */ 7 80 2 directive_ptr ptr, /* Pointer to directive type str in mrds_rst_semactics.incl.pl1 */ 7 81 2 stmt_ptr ptr, /* Pointer to statement str in mrds_rst_sematics.incl.pl1 */ 7 82 2 trace_metering_iocb_ptr ptr, /* Pointer to seg used by trace and metering */ 7 83 2 tree_node_area_ptr ptr, /* pointer to working storage for tree nodes */ 7 84 2 tree_data, 7 85 3 seg_info_area_ptr ptr, /* seg info working storage area */ 7 86 3 gl_area_ptr ptr, /* global list data work storage area */ 7 87 3 sl_area_ptr ptr, /* sublist data work storage area */ 7 88 2 parse_info_area_ptr ptr, /* parse interface work area storage */ 7 89 2 static_info_area_ptr ptr, /* directive, stmt and other static work storage area */ 7 90 2 variable_length_area_ptr ptr, /* varibale allocates work storage area */ 7 91 2 other_area_ptr ptr, /* unspecified work area storage */ 7 92 2 wa area (sys_info$max_seg_size - fixed (rel (addr (rsc.wa))) + 1); /* Work area */ 7 93 7 94 dcl rsc_ptr ptr; /* Pointer to base of rsc segment */ 7 95 7 96 7 97 7 98 /* END INCLUDE FILE mrds_rst_rsc.incl.pl1 */ 7 99 799 800 8 1 /* BEGIN INCLUDE FILE mrds_rst_tree.incl.pl1 jeg 7/19/78 */ 8 2 8 3 /* common declarations for threaded binary tree routines 8 4* 8 5* The tree maintains an inorder list of it's keys. 8 6* this means that for a given node, any key in it's left subtree 8 7* is "less" than the given node's key and that any key in it's 8 8* right subtree is "greater" than the given node's key. 8 9* 8 10* Threads are maintained to allow fast and easy traversal of the tree. 8 11* threads occupy the position of null pointers of an straight binary tree, 8 12* thus they only occur in leaf nodes. 8 13* left threads point to that nodes inorder predecessor. 8 14* right threads point to that nodes inorder successor. 8 15* 8 16* note: root_ptr must be passed by reference 8 17* ( not by value ) so it can be changed . 8 18* Also, each parameter must be a different 8 19* variable. The same variable used for two 8 20* or more arguments when any of the tree 8 21* routines are called will produce errors */ 8 22 8 23 8 24 declare key char (32) aligned ; /* data key directing search */ 8 25 8 26 declare root_ptr ptr ; /* pointer to head of desired list */ 8 27 declare node_ptr ptr ; /* pointer to key node, when success */ 8 28 declare parent_ptr ptr ; /* pointer to direct parent of current node */ 8 29 declare data_ptr ptr ; /* pointer from tree node to data structure headed by node */ 8 30 declare successor_ptr ptr ; /* pointer to inorder successor of current node in tree */ 8 31 declare successor_parent_ptr ptr ; /* pointer to immediate tree parent of inorder successor node */ 8 32 declare predecessor_ptr ptr ; /* pointer to inorder predecessor of current node */ 8 33 declare predecessor_parent_ptr ptr ; /* pointer to direct parent of predecessor */ 8 34 declare area_ptr ptr ; /* pointer to based area for node allocation/freeing */ 8 35 8 36 declare work_area area based (area_ptr) ; /* area of storage for tree */ 8 37 8 38 declare success bit (1) ; /* on if operation successful */ 8 39 declare thread bit (1) aligned ; /* current thread indicator, on = thread, off = pointer */ 8 40 8 41 declare 1 node based (node_ptr) aligned, /* tree element */ 8 42 2 data ptr, /* data field link */ 8 43 2 key char (32), /* data key */ 8 44 2 right, /* right branch link */ 8 45 3 thread bit (1), /* indicates whether link is thread or pointer */ 8 46 3 link ptr, /* pointer to right descendent or thread to successor */ 8 47 2 left, /* left branch link */ 8 48 3 thread bit (1), /* indicates whether link is thread or pointer */ 8 49 3 link ptr, /* pointer to left descendent or thread to predecessor */ 8 50 2 pad bit (34) ; /* reserved for future flags */ 8 51 8 52 /* END INCLUDE FILE mrds_rst_tree.incl.pl1 */ 8 53 8 54 8 55 8 56 801 802 9 1 /* BEGIN INCLUDE FILE mrds_rst_global_lists.incl.pl1 jeg 7/17/78 */ 9 2 9 3 /* note: mrds_rst_list_element$add and delete entries 9 4* makes use of the following structure type correspondence 9 5* 9 6* structure_type = 1 refers to gl (global list element) 9 7* 9 8* structure_type = 2 refers to sl (global sublist element) 9 9* 9 10* structure_type = 3 refers to seg_info(segment information element) 9 11* 9 12**/ 9 13 9 14 9 15 dcl 1 gl aligned based (gl_ptr), /* Template for global list entry */ 9 16 2 type fixed bin, /* structure_type, usefull when overlay used */ 9 17 2 name char (32), /* Item name */ 9 18 2 item_info_ptr ptr, /* Pointer to info structure for this item */ 9 19 2 parse_info_ptr ptr, /* Pointer to info obtained by parsing source */ 9 20 2 other_info_ptr ptr, /* Pointer to additional info str if needed */ 9 21 2 item_sub_list_ptr ptr, /* Pointer to sub list of items if neccessary for this his item */ 9 22 2 file_info_ptr ptr, /* Pointer to file info for this entry */ 9 23 2 file_model_ptr ptr, /* Pointer to file model for this entry */ 9 24 2 affected bit (1) unal, /* ON => affected by some directive */ 9 25 2 cmdb bit (1) unal, /* ON => affected by cmdb directive */ 9 26 2 undefine bit (1) unal, /* ON => affected by undefine directive */ 9 27 2 define bit (1) unal, /* ON => affected by define directive */ 9 28 2 redefine bit (1) unal, /* ON => affected by redefine directive */ 9 29 2 superior_assigned bit (1) unal, /* ON => has parent */ 9 30 2 inferior_assigned bit (1) unal, /* ON => child present */ 9 31 2 complete bit (1) unal, /* ON => all things present */ 9 32 2 consistant bit (1) unal, /* ON => correct model */ 9 33 2 reserved bit (26) unal, /* for future use */ 9 34 2 child_defined bit (1) unal ; /* ON => global element entered by child */ 9 35 9 36 dcl gl_ptr ptr; /* Pointer to gl structure */ 9 37 9 38 9 39 9 40 dcl 1 sl aligned based (sl_ptr), /* Template of sub list entry for global list */ 9 41 2 type fixed bin, /* structure_type, usefull when overlay used */ 9 42 2 name char (32), /* Name of item */ 9 43 2 item_info_ptr ptr, /* Pointer to info structure for this entry */ 9 44 2 parse_info_ptr ptr, /* Pointer to info obtained by parsing source */ 9 45 2 old_other_info_ptr ptr, /* Pointer to old version of other info */ 9 46 2 new_other_info_ptr ptr, /* Pointer to new version of other info */ 9 47 2 global_list_ptr ptr, /* pointer to corresponding global list element */ 9 48 2 reserved bit (36) unal; /* Reserved for future use */ 9 49 9 50 dcl sl_ptr ptr; /* Pointer to sub list structure */ 9 51 9 52 9 53 dcl 1 seg_info based (seg_info_ptr), /* Info about segment initiated */ 9 54 2 name char (32), /* Segment name */ 9 55 2 dir char (168), /* Absolute path of containing directory */ 9 56 2 seg_ptr ptr, /* Pointer to base of segment */ 9 57 2 bcnt fixed bin (24); /* Bit count of segment */ 9 58 9 59 dcl seg_info_ptr ptr; /* Pointer to seg_info str */ 9 60 9 61 9 62 9 63 dcl MAIN_LIST fixed bin internal static options (constant) init (1); 9 64 dcl SUB_LIST fixed bin internal static options (constant) init (2); 9 65 dcl SEG_INFO fixed bin internal static options (constant) init (3); 9 66 9 67 declare 1 list_ovrly aligned based (list_ovrly_ptr), /* overlay for top part of gl and sl list elements */ 9 68 2 type fixed bin, /* structure_type, 1 => gl, 2 => sl */ 9 69 2 name char (32), /* Name of item */ 9 70 2 item_info_ptr ptr, /* pointer to info structure for this entry */ 9 71 2 parse_info_ptr ptr, /* pointer to info obtained by parsing source */ 9 72 2 other_info_ptr ptr ; /* pointer to additional info structure if needed */ 9 73 9 74 declare list_ovrly_ptr ptr ; /* pointer to overlay structure */ 9 75 9 76 9 77 declare saved_child_count fixed bin based (saved_child_count_ptr) ; /* parent link structure child count */ 9 78 declare saved_child_count_ptr ptr ; /* pointer to remembered number of children */ 9 79 9 80 9 81 /* USES AND MEANING OF LIST ELEMENT ENTRIES 9 82* 9 83* DOMAIN GLOBAL LIST -------------------------- 9 84* 9 85* gl.type - - MAIN_LIST 9 86* gl.name - - 32 char domain name 9 87* gl.item_info_ptr - - pointer to domain_info for this domain 9 88* gl.parse_info_ptr - - pointer to parse info structure 9 89* gl.other_info_ptr - - dbm_ptr, pointer to mdbm_db_model 9 90* gl.item_sub_list_ptr - - pointer to sublist of attributes using this domain 9 91* gl.file_info_ptr - - null () 9 92* gl.file_model_ptr - - null () 9 93* gl.superior_assigned - - ON => domain referenced by some relation 9 94* gl.inferior_assigned - - ON => referencing attribute present 9 95* gl.complete - - ON => domain_info present 9 96* gl.consistant - - always ON 9 97* 9 98* DOMAIN GLOBAL LIST "REFERENCING ATTRIBUTES" SUBLIST ---------------- 9 99* 9 100* sl.type - - SUB_LIST 9 101* sl.name - - 32 char attribute name 9 102* sl.item_info_ptr - - pointer to this attribute's attribute_info 9 103* sl.parse_info_ptr - - pointer to parse info structure 9 104* sl.old_other_info_ptr - - null () 9 105* sl.new_other_info_ptr - - pointer to this domain's global list element 9 106* sl.global_list_ptr - - pointer to attribute's global list element 9 107* 9 108* ATTRIBUTE GLOBAL LIST ----------------- 9 109* 9 110* gl.type - - MAIN_LIST 9 111* gl.name - - 32 char attribute name 9 112* gl.item_info_ptr - - pointer to corresponding domain sublist element for this attribute 9 113* gl.parse_info_ptr - - pointer to parse info structure 9 114* gl.other_info_ptr - - domain_info of domain for this attribute 9 115* gl.item_sub_list_ptr - - pointer to sublist of relations that use this attribute 9 116* gl.file_info_ptr - - null (), use pointer(fm_ptr,file_model.fi_ptr) 9 117* gl.file_model_ptr - - null (), use pointer(ai_ptr,0), ai_ptr from corres. rel's attr sublist 9 118* gl.superior_assigned - - ON => relation contains this attribute 9 119* gl.inferior_assigned - - ON => attribute references known domain 9 120* gl.complete - - ON => attr_info present for this attribute 9 121* gl.consistant - - OFF => no domain for this attribute 9 122* 9 123* ATTRIBUTE GLOBAL LIST "USED IN RELATION" SUBLIST ------------------ 9 124* 9 125* sl.type - - SUB_LIST 9 126* sl.name - - 32 char relation name 9 127* sl.item_info_ptr - - pointer to this relation's rel_info 9 128* sl.parse_info_ptr - - pointer to parse info structure 9 129* sl.old_other_info_ptr - - pointer to attribute's attr_info in this relation 9 130* sl.new_other_info_ptr - - pointer to this attribute's global list element 9 131* sl.global_list_ptr - - pointer to relation's global list element 9 132* 9 133* RELATION GLOBAL LIST ------------------- 9 134* 9 135* gl.type - - MAIN_LIST 9 136* gl.name - - 32 char relation name 9 137* gl.item_info_ptr - - pointer to rel_info for this relation 9 138* gl.parse_info_ptr - - pointer to parse info structure 9 139* gl.other_info_ptr - - pointer to global list element of file containing this relation 9 140* gl.item_sub_list_ptr - - pointer to sublist of attributes in this relation 9 141* gl.file_info_ptr - - pointer to file_info of this relation's file 9 142* gl.file_model_ptr - - pointer to file_model of this relation's file 9 143* gl.superior_assigned - - ON => file present to hold this relation 9 144* gl.inferior_assigned - - ON => attribute's present in this relation 9 145* gl.complete - - ON => rel_info assigned to this relation 9 146* gl.consistant - - OFF => no attributes for this relation 9 147* 9 148* RELATION GLOBAL LIST "CONTAINED ATTRIBUTE" SUBLIST ---------------- 9 149* 9 150* sl.type - - SUB_LIST 9 151* sl.name - - 32 char attribute name 9 152* sl.item_info_ptr - - pointer to this attribute's attribute_info 9 153* sl.parse_info_ptr - - pointer to parse info structure 9 154* sl.old_other_info_ptr - - pointer to domain_info for this attribute in old model 9 155* sl.new_other_info_ptr - - pointer to domain_info for this attribute in new model 9 156* sl.global_list_ptr - - pointer to attribute's global list element 9 157* 9 158* FILE GLOBAL LIST ----------------------- 9 159* 9 160* gl.type - - MAIN_LIST 9 161* gl.name - - 30 char file name plus 2 trailing blanks 9 162* gl.item_info_ptr - - pointer to file_info for this file 9 163* gl.parse_info_ptr - - pointer to parse info structure 9 164* gl.other_info_ptr - - null () 9 165* gl.item_sub_list_ptr - - pointer to sublist of relations contained in this file 9 166* gl.file_info_ptr - - pointer to file_info for this file 9 167* gl.file_model_ptr - - pointer to file_model for this file 9 168* gl.superior_assigned - - ON => file_model present for this file 9 169* gl.inferior_assigned - - ON => relation present for this file 9 170* gl.complete - - OFF => not formatted yet 9 171* gl.consistant - - ON => no relations present 9 172* 9 173* FILE GLOBAL LIST "CONTAINED RELATION" SUBLIST ---------------- 9 174* 9 175* sl.type - - SUB_LIST 9 176* sl.name - - 32 char relation name 9 177* sl.item_info_ptr - - relation's rel_info pointer 9 178* sl.parse_info_ptr - - pointer to parse info structure 9 179* sl.old_other_info_ptr - - null () 9 180* sl.new_other_info_ptr - - pointer to file global list element 9 181* sl.global_list_ptr - - pointer to relation's global list element 9 182* 9 183* FOREIGN KEY GLOBAL LIST -------------------- 9 184* 9 185* gl.type - - MAIN_LIST 9 186* gl.name - - 32 char link(foreign key) name, parent_link_info.name 9 187* gl.item_info_ptr - - pointer to parent_link_info for this foreign key 9 188* gl.parse_info_ptr - - pointer to parse info structure 9 189* gl.other_info_ptr - - pointer to parent relation global list element 9 190* gl.item_sub_list_ptr - - pointer to sublist of child relations for this parent 9 191* gl.file_info_ptr - - pointer to file_info for parent relation's file 9 192* gl.file_model_ptr - - pointer to file_model for parent relation's file 9 193* gl.superior_assigned - - ON => parent present 9 194* gl.inferior_assigned - - ON => child present 9 195* gl.complete - - ON => pli_info and cli_info present 9 196* gl.consistant - - ON => rels/attrs found and corres domains match 9 197* gl.child_defined - - ON => not defined by parent, but by one of it's children 9 198* 9 199* FOREIGN KEY GLOBAL LIST CHILDREN SUBLIST 9 200* 9 201* sl.type - - SUB_LIST 9 202* sl.name - - 32 char name of relation representing this child 9 203* sl.item_info_ptr - - pointer to child_link_info for this child 9 204* sl.parse_info_ptr - - pointer to parse info structure 9 205* sl.old_other_info_ptr - - pointer to file_model holding this child relation 9 206* sl.new_other_info_ptr - - pointer to rel_info for this child 9 207* sl.global_list_ptr - - pointer to child relation global list element 9 208* 9 209* NOTE: all pointers are to the new model unless otherwise indicated 9 210* 9 211**/ 9 212 9 213 /* END INCLUDE FILE mrds_rst_global_lists.incl.pl1 */ 9 214 803 804 10 1 /* BEGIN INCLUDE mrds_dm_display_info.incl.pl1 */ 10 2 10 3 10 4 10 5 /****^ HISTORY COMMENTS: 10 6* 1) change(85-12-07,Spitzer), approve(85-12-07,MCR7311), 10 7* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 10 8* Add flag fields for unreferenced objects and crossrefs. 10 9* END HISTORY COMMENTS */ 10 10 10 11 10 12 dcl 1 mrds_dm_display_info aligned based (mrds_dm_display_info_ptr), 10 13 2 version fixed bin, 10 14 2 output_iocb_ptr ptr, /* Output iocb pointer */ 10 15 2 db_path char (168) unal, /* Absolute pathname of the database */ 10 16 2 temp_dir_path char (168) unal, /* Absolute pathname of temp dir */ 10 17 2 work_area_ptr ptr, /* Pointer to freeing area */ 10 18 2 dbm_ptr ptr, /* Pointer to the db_model of the database */ 10 19 2 sw, /* Control switches */ 10 20 3 default bit (1) unal, /* Neither -long or -brief */ 10 21 3 long bit (1) unal, /* On = long mode */ 10 22 3 cmdb bit (1) unal, /* On = cmdb type output */ 10 23 3 names_only bit (1) unal, /* Only the name for either relation, attribute, domain, index 10 24* name_list is pointer to by mrds_dm_display_info.name_list_ptr */ 10 25 3 domains bit (1) unal, /* Domain info only */ 10 26 3 attribute bit (1) unal, /* Attibute info only */ 10 27 3 relation bit (1) unal, /* Relation info only */ 10 28 3 index bit (1) unal, /* Index relation info only */ 10 29 3 history bit (1) unal, /* On = list history */ 10 30 3 header bit (1) unal, /* On = display header */ 10 31 3 unreferenced_domains bit (1) unal, /* On = display only unreferenced domains */ 10 32 3 unreferenced_attributes bit (1) unal, /* On = display only unreferenced attributes */ 10 33 3 domain_xref bit (1) unal, /* On = display a domain crossreference */ 10 34 3 attribute_xref bit (1) unal, /* On = display an attribute crossreference */ 10 35 3 all_xref bit (1) unal, /* On = display a complete crossreference */ 10 36 3 mbz bit (21) unal, /* Unnused must be zeros */ 10 37 /* The following are pointer to name list like 10 38* name_list structure below */ 10 39 10 40 2 dom_name_list_ptr ptr, /* Pointer to domain name list */ 10 41 2 attr_name_list_ptr ptr, /* Pointer to attribute name list */ 10 42 2 rel_name_list_ptr ptr, /* Pointer to relation name list */ 10 43 2 index_name_list_ptr ptr, /* Pointer to index rel name list */ 10 44 10 45 2 xref_iocb_ptr ptr, /* Pointer to database xref */ 10 46 2 xref_name char (32) unaligned; /* Name of xref file created */ 10 47 10 48 dcl 1 name_list aligned based (name_list_ptr), /* General name list */ 10 49 2 num_names fixed bin, /* Number of names in list */ 10 50 2 name (num_names_alloc refer (name_list.num_names)) char (32); 10 51 10 52 dcl mrds_dm_display_info_ptr pointer; 10 53 dcl name_list_ptr pointer; 10 54 dcl MRDS_DM_DISPLAY_INFO_VERSION_1 int static options (constant) init (1); 10 55 dcl num_names_alloc fixed bin; 10 56 10 57 /* END INCLUDE mrds_dm_display_info.incl.pl1 */ 805 806 11 1 /* BEGIN INCLUDE FILE mdbm_db_model.incl.pl1 -- jaw, 10/2/78 */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(79-02-01,Gray), approve(), audit(), install(): 11 6* modified to save space occupied by model 11 7* 2) change(80-11-03,Gray), approve(), audit(), install(): 11 8* to add mdbm_secured bit in db_model 11 9* 3) change(82-04-09,Davids), approve(), audit(), install(): 11 10* collapsed the following into an unused_offset array: 11 11* chng_before_path_ptr chng_err_path_ptr chng_after_path_ptr 11 12* copy_before_path_ptr copy_err_path_ptr copy_after_path_ptr 11 13* dsply_before_path_pt dsply_err_path_pt dsply_after_path_ptr 11 14* accs_before_path_ptr accs_err_path_ptr accs_after_path_ptr 11 15* unused_1 11 16* Also changed the name of unused_2 to restructuring_history_offset 11 17* and changed the comment on the changer structure to indicate 11 18* that it will contain on database creation information. 11 19* 4) change(82-04-14,Davids), approve(), audit(), install(): 11 20* used one of the unused_offsets to point to a message which indicates 11 21* why the db is inconsistent. The offset will be null when the db is created 11 22* and set the first time the message is used. this is so it will be 11 23* consistent with existing data bases. Also added the message structure. 11 24* 5) change(82-04-28,Davids), approve(), audit(), install(): 11 25* added the undo_request element to the message structure 11 26* 6) change(82-05-04,Davids), approve(), audit(), install(): 11 27* changed unused_offset (12) to last_restructruring_history_offset and 11 28* changed restructuring_history_offset to first_restructuring_history_offset 11 29* 7) change(82-08-19,Davids), approve(), audit(), install(): 11 30* changed the meaning of db_type from 1 => relational and 2 => CODASYL to 11 31* 1 => vfile database and 2 => page_file database. Up to this point all 11 32* database types were equal to 1. 11 33* 8) change(83-02-14,Davids), approve(), audit(), install(): 11 34* changed db_type from a fixed bin unal to a substructure of 18 bit (1) unal 11 35* flags. This will allow information about transactions and dm_file 11 36* concurrency to be independent of the db_type, i.e. vfile or dm_file. The 11 37* change is compatable with all datamodels created by the released version 11 38* of mrds. 11 39* 9) change(83-02-15,Davids), approve(), audit(), install(): 11 40* added the rollback_on flag to the db_type_flags since it appears that you 11 41* can have a dmfile database that requires transactions but does not have any 11 42* journalizing. Also switched the order of the transactions_needed and 11 43* concurrency_on flags - this makes the change compatable with existing 11 44* dmfile databases except when displaying the model since concurrency_on and 11 45* rollback_on will be off in the model even though the dmfile relations had 11 46* them on during creation. 11 47* 10) change(83-02-22,Kubicar), approve(), audit(), install(): 11 48* Removed ctl_file_path_ptr. 11 49* 11) change(85-11-08,Spitzer), approve(85-12-03,MCR7311), 11 50* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 11 51* used 1 unused offset for unreferenced attribute linked lists in db_model, 11 52* 1 unused bit flag in domain_info to indicate an unreferenced domain, 1 bit 11 53* in the flag word for rmdb copying. 11 54* END HISTORY COMMENTS */ 11 55 11 56 11 57 /* this include file contains the structures that go into the make up 11 58* of the "db_model" segment in the model for the database. 11 59* in addition there file_model.m segments, 1 for each database file(see mdbm_file_model.incl.pl1) 11 60* 11 61* the db_model structure goes at the base of the segment, and contains items unique to 11 62* the whole databse. in addition, it has an area of size to fill the 11 63* rest of a segment, that holds the lists of files and domains in the database. 11 64* these lists are singly forward linked lists. all "pointers" in the database model 11 65* are maintained as offsets(bit (18)) from the base of the particular model segment 11 66* since actual pointers are process dependent on segment number. 11 67* the remaining structures are first a path_entry one to save pathnames in, 11 68* and the stack_item and constent structures, used to save a boolean 11 69* expression in polish form, with the stack represented by a linked list. 11 70* the final structure is one for identifying the status of version information */ 11 71 11 72 dcl 1 db_model aligned based (dbm_ptr),/* base of db_model segment, allocated once per database */ 11 73 2 version unal fixed bin, /* data base version, currently 4 */ 11 74 2 db_type_flags unal, 11 75 3 copy_good bit (1) unal, /* "1"b => copy of the db_model is the valid copy */ 11 76 3 unused (13) bit (1) unal, 11 77 3 rollback_on bit (1) unal, /* "1"b => before journaling is to be done */ 11 78 3 concurrency_on bit (1) unal, /* "1"b => dm_file concurrency is being used */ 11 79 3 transactions_needed bit (1) unal, /* "1"b => transactions are needed to reference data */ 11 80 3 vfile_type bit (1) unal, /* "1"b => vfile type relations, "0"b => dm_file type relations */ 11 81 2 uniq_sw_name char (32), /* per database unique attach switch name for files */ 11 82 2 consistant bit (1) unal, /* ON => correctly created/restructured database, ok to open */ 11 83 2 mdbm_secured bit (1) unal, /* on => database has been secured */ 11 84 2 reserved bit (34) unal, /* reserved for flags */ 11 85 2 blk_file_id_len unal fixed bin, /* no. bits required for blocked file id. */ 11 86 2 unblk_file_id_len unal fixed bin, /* number of file id bits, unblocked file */ 11 87 2 num_blk_files unal fixed bin, /* number of blocked files defined in db */ 11 88 2 num_unblk_files unal fixed bin, /* number of unblocked files defined in db */ 11 89 2 num_rels unal fixed bin, /* number of relations defined in db. */ 11 90 2 num_domains unal fixed bin, /* number of domains defined */ 11 91 2 num_dyn_links unal fixed bin, /* no. dynamic links defined */ 11 92 2 max_max_tuples unal fixed bin (35), /* maximum max_tuples across all files */ 11 93 2 pad_1 unal fixed bin (35), /* for future use */ 11 94 2 pad_2 unal fixed bin (35), /* for future use */ 11 95 2 version_ptr bit (18), /* offset to version structure */ 11 96 2 file_ptr unal bit (18), /* offset to first in threaded list of file_infos */ 11 97 2 domain_ptr unal bit (18), /* offset to first in list of domain_infos */ 11 98 2 unreferenced_attribute_ptr unal bit (18), /* offset to first in list of unreferenced attr_infos */ 11 99 2 unused_offsets (11) unal bit (18), /* extra offsets if needed */ 11 100 2 last_restructuring_history_offset unal bit (18), /* offset to last restructuring history entry */ 11 101 2 inconsistent_message_offset unal bit (18), /* offset to message indicating why db is inconsistent */ 11 102 2 first_restructuring_history_offset unal bit (18), /* offset to first restructuring history entry */ 11 103 2 changer_ptr unal bit (18), /* offset to information about db creation */ 11 104 2 dbm_area area (sys_info$max_seg_size - fixed (rel (addr (db_model.dbm_area))) - 1); 11 105 11 106 dcl dbm_ptr ptr; 11 107 11 108 /* the files in the database each have a file_info containing 11 109* their name, the file_model for each file is found by initiating the 11 110* segment "file_name.m" (i.e. the file's name with suffix ".m") 11 111* the file_info list is a singly linked list in definition order */ 11 112 11 113 dcl 1 file_info aligned based (fi_ptr), /* list of file names and numbers */ 11 114 2 file_name char (30), /* name of file */ 11 115 2 file_id bit (36), /* id number of file */ 11 116 2 fwd_ptr unal bit (18), /* thread to next in list */ 11 117 2 unused unal bit (18); /* for future expansion */ 11 118 11 119 dcl fi_ptr ptr; 11 120 11 121 /* each domain used in the database will have a domain info saved in the db_model 11 122* segment. it describes the domain of the given name, and it's options. 11 123* the domain_info's form a singly linked list in definition order */ 11 124 11 125 dcl 1 domain_info aligned based (di_ptr), /* one for each domain defined */ 11 126 2 name char (32), /* name of domain */ 11 127 2 db_desc_is_ptr bit (1) unal, /* on if descriptor is pointer to real desc. */ 11 128 2 user_desc_is_ptr bit (1) unal, /* on if user desc is ptr */ 11 129 2 no_conversion bit (1) unal, /* if no conversion allowed */ 11 130 2 procedures_present bit (1) unal, /* on => ids type procedures present */ 11 131 2 unreferenced bit (1) unal, /* on => this domain is not used in any attribute */ 11 132 2 reserved bit (31) unal, 11 133 2 db_desc bit (36), /* desc. for item in db, or ptr to it */ 11 134 2 user_desc bit (36), /* desc. for user-visible attr, or ptr */ 11 135 2 ave_len fixed bin (35), /* average length of varying string */ 11 136 2 nck_items unal fixed bin, /* no. items in check stack */ 11 137 2 fwd_thread unal bit (18), /* offset to next in list */ 11 138 2 check_path_ptr unal bit (18), /* integ. check proc. */ 11 139 2 ck_stack_ptr unal bit (18), /* to check stack */ 11 140 2 encd_path_ptr unal bit (18), /* encode procedure */ 11 141 2 decd_path_ptr unal bit (18), /* decode procedure */ 11 142 2 str_before_path_ptr unal bit (18), /* proc paths and entries */ 11 143 2 str_err_path_ptr unal bit (18), 11 144 2 str_after_path_ptr unal bit (18), 11 145 2 get_before_path_ptr unal bit (18), 11 146 2 get_err_path_ptr unal bit (18), 11 147 2 get_after_path_ptr unal bit (18), 11 148 2 mod_before_path_ptr unal bit (18), 11 149 2 mod_err_path_ptr unal bit (18), 11 150 2 mod_after_path_ptr unal bit (18), 11 151 2 unused_1 unal bit (18), /* for future expansion */ 11 152 2 unused_2 unal bit (18), 11 153 2 changer_ptr unal bit (18); /* pointer to change_id and chane_time structure */ 11 154 11 155 dcl di_ptr ptr; 11 156 11 157 /* information necessary for attributes that are not used in any relation */ 11 158 11 159 dcl 1 unreferenced_attribute aligned based (ua_ptr), 11 160 2 name char (32), /* name of attribute */ 11 161 2 domain_ptr bit (18) unal, /* to domain_info */ 11 162 2 fwd_thread bit (18) unal, /* to next in list */ 11 163 2 unused (2) bit (18) unal; 11 164 11 165 dcl ua_ptr ptr; 11 166 11 167 11 168 /* space saving pathname$entryname structure, to be allocated 11 169* only when a path$entry has to be saved, else only a bit(18) 11 170* offset takes up space in the main model structure */ 11 171 11 172 declare 1 path_entry based (path_entry_ptr), 11 173 2 path char (168), /* pathname portion of desired path$entry */ 11 174 2 entry char (32), /* entryname portion of desired path$entry */ 11 175 2 reserved unal bit (36); /* for future use */ 11 176 11 177 declare path_entry_ptr ptr; 11 178 11 179 11 180 11 181 11 182 11 183 /* declarations for model of postfix stack holding the check option boolean expression 11 184* the following encoding values indicate the corresponding type of stack element 11 185* 11 186* 1 = 11 187* 2 ^= 11 188* 3 > 11 189* 4 < 11 190* 5 >= 11 191* 6 <= 11 192* 11 193* 10 and 11 194* 20 or 11 195* 30 not 11 196* 11 197* 40 - (minus) 11 198* 11 199* 50 domain variable(same name as domain) 11 200* 11 201* 60 constant(number, bit string, or character string) 11 202* 11 203**/ 11 204 11 205 11 206 declare 1 stack_item based (stack_item_ptr), /* element of stack model list */ 11 207 2 next bit (18), /* link to next in list */ 11 208 2 type fixed binary, /* code for this element type */ 11 209 2 value_ptr bit (18); /* pointer to variable holding value, 11 210* if this is a constant element type */ 11 211 11 212 declare stack_item_ptr ptr; /* pointer to a stack element */ 11 213 11 214 11 215 11 216 declare 1 constant based (constant_ptr), /* variable size space for constant's value storage */ 11 217 2 length fixed bin (35), /* length allocated to hold value */ 11 218 2 value bit (alloc_length refer (constant.length)) aligned; /* value for this constant */ 11 219 11 220 declare constant_ptr ptr; /* pointer to constant's value space */ 11 221 11 222 declare alloc_length fixed binary (35) internal static; /* amount of space to allocate for constant's value */ 11 223 11 224 /* version structure, giving status of source for CMDB/RMDB, 11 225* status of model, and status of resultant */ 11 226 11 227 /* version number is in form MM.N.Y 11 228* where MM is the major version number, N is the minor version alteration, 11 229* and Y is the lastest modification to that alteration, 11 230* where M and N represent numbers 0-9, and Y is a letter */ 11 231 11 232 declare 1 version_status unal based (version_status_ptr), 11 233 2 cmdb_rmdb, 11 234 3 major fixed bin, 11 235 3 minor fixed bin, 11 236 3 modification char (4), 11 237 2 model, 11 238 3 major fixed bin, 11 239 3 minor fixed bin, 11 240 3 modification char (4), 11 241 2 resultant, 11 242 3 major fixed bin, 11 243 3 minor fixed bin, 11 244 3 modification char (4); 11 245 11 246 declare version_status_ptr ptr; 11 247 11 248 11 249 /* maintains information only about the db creation */ 11 250 11 251 declare 1 changer unal based (changer_ptr), 11 252 2 id char (32), 11 253 2 time fixed bin (71), 11 254 2 next bit (18); /* to next in the singly linked list */ 11 255 11 256 declare changer_ptr ptr; 11 257 11 258 11 259 dcl 01 message_str unal based (message_str_ptr), /* general purpose structure to hold messages */ 11 260 02 len fixed bin, /* length of the message */ 11 261 02 text char (message_str_len refer (message_str.len)), /* actual message */ 11 262 02 name char (32), /* name of thing that set the message */ 11 263 02 undo_request char (100), /* rmdb request that will undo the operation 11 264* that caused the database to become inconsistent */ 11 265 02 mbz bit (36); /* for possible extensions, like an offset to another message */ 11 266 11 267 dcl message_str_ptr ptr; /* pointer to the message_str structure */ 11 268 11 269 dcl message_str_len fixed bin; /* initail length of the text string in message_str */ 11 270 11 271 /* END INCLUDE FILE mdbm_db_model.incl.pl1 */ 11 272 11 273 807 808 12 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 12 2* 12 3* Values for the "access mode" argument so often used in hardcore 12 4* James R. Davis 26 Jan 81 MCR 4844 12 5* Added constants for SM access 4/28/82 Jay Pattin 12 6* Added text strings 03/19/85 Chris Jones 12 7**/ 12 8 12 9 12 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 12 11 dcl ( 12 12 N_ACCESS init ("000"b), 12 13 R_ACCESS init ("100"b), 12 14 E_ACCESS init ("010"b), 12 15 W_ACCESS init ("001"b), 12 16 RE_ACCESS init ("110"b), 12 17 REW_ACCESS init ("111"b), 12 18 RW_ACCESS init ("101"b), 12 19 S_ACCESS init ("100"b), 12 20 M_ACCESS init ("010"b), 12 21 A_ACCESS init ("001"b), 12 22 SA_ACCESS init ("101"b), 12 23 SM_ACCESS init ("110"b), 12 24 SMA_ACCESS init ("111"b) 12 25 ) bit (3) internal static options (constant); 12 26 12 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 12 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 12 29 12 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 12 31 static options (constant); 12 32 12 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 12 34 static options (constant); 12 35 12 36 dcl ( 12 37 N_ACCESS_BIN init (00000b), 12 38 R_ACCESS_BIN init (01000b), 12 39 E_ACCESS_BIN init (00100b), 12 40 W_ACCESS_BIN init (00010b), 12 41 RW_ACCESS_BIN init (01010b), 12 42 RE_ACCESS_BIN init (01100b), 12 43 REW_ACCESS_BIN init (01110b), 12 44 S_ACCESS_BIN init (01000b), 12 45 M_ACCESS_BIN init (00010b), 12 46 A_ACCESS_BIN init (00001b), 12 47 SA_ACCESS_BIN init (01001b), 12 48 SM_ACCESS_BIN init (01010b), 12 49 SMA_ACCESS_BIN init (01011b) 12 50 ) fixed bin (5) internal static options (constant); 12 51 12 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 809 810 13 1 /* BEGIN INCLUDE FILE: delete_options.incl.pl1 */ 13 2 13 3 /* control flag bit string passed to delete_$path and delete_$ptr 13 4* 13 5* Jay Pattin 6/6/83 */ 13 6 13 7 declare 1 delete_options, 13 8 2 force bit (1) unaligned, /* ON = delete w/o asking is safety switch on */ 13 9 2 question bit (1) unaligned, /* ON = ask user if safety switch on */ 13 10 2 directory bit (1) unaligned, /* ON = delete directories */ 13 11 2 segment bit (1) unaligned, /* ON = delete segments */ 13 12 2 link bit (1) unaligned, /* ON = delete links */ 13 13 2 chase bit (1) unaligned, /* ON = delete through links */ 13 14 2 library bit (1) unaligned, /* ON = use installation_tools_ */ 13 15 2 raw bit (1) unaligned, /* ON = use hcs_, not object_type_ */ 13 16 2 mbz bit (28) unaligned; 13 17 13 18 /* END INCLUDE FILE: delete_options.incl.pl1 */ 811 812 813 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/86 1142.8 create_mrds_db.pl1 >special_ldd>install>MR12.0-1187>create_mrds_db.pl1 363 1 02/05/86 1416.4 mrds_start_transaction.incl.pl1 >ldd>include>mrds_start_transaction.incl.pl1 1-79 2 01/07/85 0900.0 dm_tm_modes.incl.pl1 >ldd>include>dm_tm_modes.incl.pl1 1-81 3 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 396 4 02/05/86 1416.4 mrds_finish_transaction.incl.pl1 >ldd>include>mrds_finish_transaction.incl.pl1 795 5 10/14/83 1609.0 mrds_rst_struct_types.incl.pl1 >ldd>include>mrds_rst_struct_types.incl.pl1 797 6 10/14/83 1609.1 mrds_rst_arg_info.incl.pl1 >ldd>include>mrds_rst_arg_info.incl.pl1 799 7 10/14/83 1609.1 mrds_rst_rsc.incl.pl1 >ldd>include>mrds_rst_rsc.incl.pl1 801 8 10/14/83 1608.6 mrds_rst_tree.incl.pl1 >ldd>include>mrds_rst_tree.incl.pl1 803 9 10/14/83 1608.4 mrds_rst_global_lists.incl.pl1 >ldd>include>mrds_rst_global_lists.incl.pl1 805 10 10/16/86 1140.1 mrds_dm_display_info.incl.pl1 >special_ldd>install>MR12.0-1187>mrds_dm_display_info.incl.pl1 807 11 10/16/86 1139.3 mdbm_db_model.incl.pl1 >special_ldd>install>MR12.0-1187>mdbm_db_model.incl.pl1 809 12 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 811 13 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. BLANK constant char(1) initial unaligned dcl 707 ref 633 DB_MODEL_SEG_NAME 000004 constant char(32) initial dcl 708 set ref 330* INITIATE 000073 constant bit(1) initial unaligned dcl 709 set ref 330* MODULE_NAME 000000 constant char(14) initial unaligned dcl 710 set ref 607* 646* MRDS_DM_DISPLAY_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 10-54 ref 536 OFF constant bit(1) initial unaligned dcl 711 ref 123 181 196 266 381 444 594 599 600 601 626 637 642 643 644 ON constant bit(1) initial unaligned dcl 712 ref 115 173 189 214 258 259 260 264 268 328 371 408 410 462 474 527 593 595 596 597 598 636 638 639 640 641 R_ACCESS 000070 constant bit(3) initial unaligned dcl 12-11 set ref 238* STREAM_OUTPUT 000072 constant fixed bin(17,0) initial dcl 715 set ref 501* TM_NORMAL_MODE 000101 constant fixed bin(17,0) initial dcl 2-15 set ref 1-99* access_name 000370 automatic char(32) array level 2 dcl 740 set ref 299* addr builtin function dcl 768 ref 300 300 1-123 1-123 adjust_bit_count_ 000050 constant entry external dcl 674 ref 422 ai_ptr 001260 automatic pointer dcl 6-30 set ref 209* 230* 232* 238 238 241 243 249 253 254 267 270 280 496 506 506 519 539 607 allow_blocked_files 206(18) based bit(1) level 2 packed unaligned dcl 7-29 set ref 259* allow_foreign_keys 206(16) based bit(1) level 2 packed unaligned dcl 7-29 set ref 258* allow_new_features 000012 internal static bit(1) initial unaligned dcl 728 set ref 173* 181* 256 allow_restructuring 206(20) based bit(1) level 2 packed unaligned dcl 7-29 set ref 260* any_other 000350 stack reference condition dcl 677 ref 361 arg based char unaligned dcl 757 set ref 162* arg_info based structure level 1 packed unaligned dcl 6-18 set ref 230 arg_len 000402 automatic fixed bin(21,0) dcl 759 set ref 158* 162 162 arg_list_ptr 000404 automatic pointer dcl 760 set ref 228* 232* arg_num 000406 automatic fixed bin(17,0) dcl 761 set ref 150* 154 157 arg_ptr 000410 automatic pointer dcl 762 set ref 158* 162 attach_desc 000670 automatic char(200) unaligned dcl 778 set ref 496* 499* attr_name_list_ptr 140 based pointer level 2 dcl 10-12 set ref 554* attribute 134(05) based bit(1) level 3 packed unaligned dcl 10-12 set ref 547* bcnt 64 based fixed bin(24,0) level 2 dcl 9-53 ref 422 before builtin function dcl 768 ref 496 633 633 634 cd parameter fixed bin(35,0) dcl 483 in procedure "error" set ref 481 486 487* cd 000517 automatic fixed bin(35,0) dcl 770 in procedure "mrds_rst_cmdb" set ref 281* chase 0(05) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 598* 641* cleanup 000342 stack reference condition dcl 675 ref 212 356 clock builtin function dcl 679 ref 512 512 cmdb 134(02) based bit(1) level 3 packed unaligned dcl 10-12 set ref 544* cmdb_option 206(06) based bit(1) level 2 packed unaligned dcl 7-29 set ref 268* code 000660 automatic fixed bin(35,0) dcl 775 set ref 150* 151 151* 158* 159 159* 218* 220 220* 238* 240 245* 249* 250 250* 275* 276 277 277* 282* 290* 291 291* 293 293* 300* 301 302 302* 304* 308* 309 309* 314 314* 317* 318 318* 330* 332* 372* 373 388 391 393 395 422* 423 423* 447* 448 448* 486* 499* 501 501* 502 502* 566* 572* 574 574* 586* 587 587* 588 588* 591* 592 607* 608 617 617* 622* 646* com_err_ 000052 constant entry external dcl 680 ref 202 4-115 487 617 command_level 206(21) based bit(1) level 2 packed unaligned dcl 7-29 set ref 264* 266* 438 command_level_call 000013 internal static bit(1) initial unaligned dcl 732 set ref 189* 196* 224 264 complete 26(07) based bit(1) level 2 packed unaligned dcl 9-15 set ref 470 474* concurrency_on 0(02) 000014 internal static bit(1) initial level 2 packed unaligned dcl 789 set ref 148* condition_info based structure level 1 dcl 3-14 condition_name 3 000306 automatic varying char(32) level 2 dcl 1-77 set ref 1-124 1-129 1-129 consistant 11 based bit(1) level 2 packed unaligned dcl 11-72 set ref 371* 381* continue_to_signal_ 000020 constant entry external dcl 1-61 ref 1-137 cu_$arg_count 000054 constant entry external dcl 681 ref 150 cu_$arg_list_ptr 000056 constant entry external dcl 682 ref 228 cu_$arg_ptr 000060 constant entry external dcl 683 ref 158 cu_$decode_entry_value 000062 constant entry external dcl 684 ref 494 data based pointer level 2 dcl 8-41 ref 420 469 date_time_ 000064 constant entry external dcl 685 ref 512 db_dir 000520 automatic char(168) unaligned dcl 771 set ref 281* 282 290* 300* db_dir_path 63 based char(168) level 2 packed unaligned dcl 6-18 ref 267 db_entry 000572 automatic char(32) unaligned dcl 772 set ref 281* 282 290* 300* db_model based structure level 1 dcl 11-72 db_model_path 000762 automatic char(168) unaligned dcl 780 set ref 273* db_path 4 based char(168) level 2 packed unaligned dcl 10-12 set ref 538* db_quiesced_sw 206(01) based bit(1) level 2 packed unaligned dcl 7-29 ref 566 db_relation_mode_flags 206(24) based structure level 2 packed unaligned dcl 7-29 set ref 253* db_relation_modes 001257 automatic structure level 1 packed unaligned dcl 6-7 dbm_ptr 001302 automatic pointer dcl 11-106 in procedure "mrds_rst_cmdb" set ref 275* 317* 330* 332 334 541 dbm_ptr 132 based pointer level 2 in structure "mrds_dm_display_info" dcl 10-12 in procedure "mrds_rst_cmdb" set ref 541* dbp 62 based char(168) level 2 packed unaligned dcl 7-29 set ref 267* 272 277 281* 290 290 293 304 308 308 309 318 372* 515* 538 566* default 134 based bit(1) level 3 packed unaligned dcl 10-12 set ref 542* default_db_relation_modes 000014 internal static structure level 1 packed unaligned dcl 789 set ref 130* 162* 232* delete_$path 000066 constant entry external dcl 686 ref 607 646 delete_db_sw 206(10) based bit(1) level 2 packed unaligned dcl 7-29 set ref 328* 444* 578 delete_options 001304 automatic structure level 1 packed unaligned dcl 13-7 set ref 607 607 646 646 dir 10 based char(168) level 2 in structure "seg_info" packed unaligned dcl 9-53 in procedure "mrds_rst_cmdb" set ref 422* dir 000602 automatic char(168) unaligned dcl 773 in procedure "mrds_rst_cmdb" set ref 591* dir_acl 000370 automatic structure array level 1 dcl 740 set ref 300 300 dir_modes 10 000370 automatic bit(36) initial array level 2 dcl 740 set ref 740* directory 0(02) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 595* 638* dm_error_$bj_journal_full 000040 external static fixed bin(35,0) dcl 4-52 ref 1-132 dm_error_$lock_deadlock 000042 external static fixed bin(35,0) dcl 4-53 ref 4-78 1-126 dm_error_$no_current_transaction 000022 external static fixed bin(35,0) dcl 1-62 ref 1-90 dm_file_type 206(24) based bit(1) level 3 in structure "rsc" packed unaligned dcl 7-29 in procedure "mrds_rst_cmdb" set ref 347 dm_file_type 000014 internal static bit(1) initial level 2 in structure "default_db_relation_modes" packed unaligned dcl 789 in procedure "mrds_rst_cmdb" set ref 146* dmd_$check_path 000160 constant entry external dcl 736 ref 290 dmd_$set_needed_access 000162 constant entry external dcl 737 ref 308 dms_test 000654 automatic entry variable dcl 774 set ref 352* dom_name_list_ptr 136 based pointer level 2 dcl 10-12 set ref 553* dsl_$create_res_copy 000164 constant entry external dcl 738 ref 372 dummy_ptr 000662 automatic pointer dcl 776 set ref 415* 494* entry_name 000752 automatic char(32) unaligned dcl 779 set ref 24* 143* 202* 4-115* 400 487* 496 499 617* err_msg 000416 automatic char(256) unaligned dcl 765 set ref 244* 245* 447* 448* 572* 574* error_code 001332 automatic fixed bin(35,0) dcl 458 set ref 471* 472 472* error_table_$action_not_performed 000176 external static fixed bin(35,0) dcl 751 ref 393 error_table_$argerr 000170 external static fixed bin(35,0) dcl 744 ref 302 error_table_$incorrect_access 000156 external static fixed bin(35,0) dcl 734 ref 291 error_table_$namedup 000200 external static fixed bin(35,0) dcl 752 ref 277 error_table_$too_many_args 000202 external static fixed bin(35,0) dcl 753 set ref 154* expand_pathname_ 000070 constant entry external dcl 688 ref 281 591 fatal_sw 000516 automatic bit(1) unaligned dcl 766 set ref 232* 233 find_condition_info_ 000024 constant entry external dcl 1-64 ref 1-123 force 0(03) based bit(1) initial level 2 in structure "arg_info" packed unaligned dcl 6-18 in procedure "mrds_rst_cmdb" set ref 230* 280 force 001304 automatic bit(1) level 2 in structure "delete_options" packed unaligned dcl 13-7 in procedure "mrds_rst_cmdb" set ref 593* 636* get_group_id_ 000072 constant entry external dcl 689 ref 509 509 get_group_id_$tag_star 000074 constant entry external dcl 690 ref 299 get_wdir_ 000076 constant entry external dcl 691 ref 496 gl based structure level 1 dcl 9-15 gl_ptr 001274 automatic pointer dcl 9-36 set ref 469* 470 471 472 474 h_gfile_ptr 216 based pointer level 2 dcl 7-29 set ref 460 465* h_n_seg_info_ls_ptr 214 based pointer level 2 dcl 7-29 set ref 330* 410 410 415* hcs_$add_dir_acl_entries 000166 constant entry external dcl 739 ref 300 header 134(09) based bit(1) level 3 packed unaligned dcl 10-12 set ref 551* history 134(08) based bit(1) level 3 packed unaligned dcl 10-12 set ref 550* index 134(07) based bit(1) level 3 packed unaligned dcl 10-12 set ref 549* index_name_list_ptr 144 based pointer level 2 dcl 10-12 set ref 556* initiate_file_ 000100 constant entry external dcl 692 ref 238 ioa_$ioa_switch 000102 constant entry external dcl 694 ref 225 375 378 433 436 438 506 509 513 515 523 525 iox_$attach_name 000104 constant entry external dcl 695 ref 499 iox_$close 000106 constant entry external dcl 696 ref 586 iox_$destroy_iocb 000122 constant entry external dcl 704 ref 588 iox_$detach_iocb 000120 constant entry external dcl 704 ref 587 iox_$error_output 000110 external static pointer dcl 697 set ref 378* 438* iox_$open 000112 constant entry external dcl 698 ref 501 iox_$user_output 000114 external static pointer dcl 699 set ref 225* library 0(06) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 599* 642* link 0(04) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 597* 640* linkage_error 000356 stack reference condition dcl 678 ref 349 353 list based bit(1) initial level 2 packed unaligned dcl 6-18 set ref 230* 270 519 listing_iocb_ptr 240 based pointer level 2 dcl 7-29 set ref 375* 433* 436* 499* 501* 506* 509* 513* 515* 523* 525* 537 586* 587* 588* listing_seg_sw 206(04) based bit(1) level 2 packed unaligned dcl 7-29 set ref 375 432 445 527* 585 long 134(01) based bit(1) level 3 packed unaligned dcl 10-12 set ref 543* long_date 001034 automatic char(24) unaligned dcl 781 set ref 512* 513* loop_ptr 000664 automatic pointer dcl 776 set ref 410* 415* mbz 0(08) 001304 automatic bit(28) level 2 in structure "delete_options" packed unaligned dcl 13-7 in procedure "mrds_rst_cmdb" set ref 601* 644* mbz 134(15) based bit(21) level 3 in structure "mrds_dm_display_info" packed unaligned dcl 10-12 in procedure "mrds_rst_cmdb" set ref 552* mdbm_data_$current_version 000154 external static fixed bin(35,0) dcl 733 set ref 225* mdbm_util_$mrds_dm_display 000126 constant entry external dcl 717 ref 447 mdbm_util_$mu_define_area 000152 constant entry external dcl 730 ref 218 mdbm_util_$quiesce_free 000142 constant entry external dcl 723 ref 566 mdbm_util_$xref_destroy 000130 constant entry external dcl 718 ref 572 mftxn_code 000340 automatic fixed bin(35,0) dcl 4-54 set ref 388* 391* 393* 395* 4-62* 4-65 4-68* 4-69 4-78 4-115 4-115* 1-126* 1-132* mftxn_temp_code 000341 automatic fixed bin(35,0) dcl 4-55 set ref 4-71* 4-72 4-72* 4-82* 4-83 4-85* 4-86 4-86* 4-96* 4-97 4-99* 4-100 4-100* 4-109* 4-110 4-110* mrds_dm_display_info based structure level 1 dcl 10-12 set ref 534 mrds_dm_display_info_ptr 001300 automatic pointer dcl 10-52 set ref 222* 447* 534* 536 537 538 539 540 541 542 543 544 545 547 548 549 550 551 552 553 554 555 556 557 558 569 569 572 572 572 575 mrds_error_$no_dms 000206 external static fixed bin(35,0) dcl 755 ref 348 mrds_error_$no_recursion 000204 external static fixed bin(35,0) dcl 754 set ref 202* mrds_rst_consistancy_check 000124 constant entry external dcl 705 ref 341 mrds_rst_create_db 000132 constant entry external dcl 719 ref 275 317 mrds_rst_create_rsc 000134 constant entry external dcl 720 ref 249 mrds_rst_format_file 000136 constant entry external dcl 721 ref 471 mrds_rst_get_seg_ptr 000140 constant entry external dcl 722 ref 330 mrds_rst_parse 000144 constant entry external dcl 724 ref 338 mrds_rst_proc_ctl_args 000146 constant entry external dcl 725 ref 232 mrds_rst_proc_ctl_args$parse_mode_string 000016 constant entry external dcl 139 ref 162 mrds_rst_tree_successor 000172 constant entry external dcl 746 ref 415 465 msg parameter char unaligned dcl 484 set ref 481 487* mstxn_code 000276 automatic fixed bin(35,0) dcl 1-65 set ref 1-83* 1-89* 1-90 1-99* 1-140 1-140* 4-90* 4-104* 1-137* mstxn_condition_info 000306 automatic structure level 1 unaligned dcl 1-77 set ref 1-123 1-123 mstxn_retries 000277 automatic fixed bin(17,0) dcl 1-66 set ref 1-88* 4-78 4-81* 4-81 mstxn_temp_code 000300 automatic fixed bin(35,0) dcl 1-67 set ref 1-109* 1-110 1-110* 1-123* mstxn_transactions_needed 000301 automatic bit(1) dcl 1-68 set ref 346* 1-86 mstxn_txn_id 000303 automatic bit(36) dcl 1-70 set ref 144* 207* 1-84* 1-89* 1-93 1-94* 1-99* 1-100 4-60 4-68* 4-71* 4-72* 4-82* 4-85* 4-86* 4-96* 4-99* 4-100* 4-109* 4-110* 4-114* 1-107 1-109* 1-110* 1-121 n_dm_ptr 232 based pointer level 2 dcl 7-29 set ref 334* 371 381 name based char(32) level 2 in structure "seg_info" packed unaligned dcl 9-53 in procedure "mrds_rst_cmdb" set ref 422* name 1 based char(32) level 2 in structure "gl" dcl 9-15 in procedure "mrds_rst_cmdb" ref 471 472 names_only 134(03) based bit(1) level 3 packed unaligned dcl 10-12 set ref 545* new_found 000367 automatic bit(1) unaligned dcl 735 set ref 290* no_dms_err_code 001042 automatic fixed bin(35,0) dcl 782 set ref 348* 349* node based structure level 1 dcl 8-41 node_ptr 001264 automatic pointer dcl 8-27 set ref 415* 420 426 460* 465* 468* 469 null builtin function dcl 768 ref 145 208 209 210 222 332 388 1-123 1-123 410 553 554 555 556 557 564 569 569 575 609 621 623 output_iocb_ptr 2 based pointer level 2 dcl 10-12 set ref 537* phase 210 based fixed bin(17,0) level 2 dcl 7-29 set ref 336* protection_on 0(01) 000014 internal static bit(1) initial level 2 in structure "default_db_relation_modes" packed unaligned dcl 789 in procedure "mrds_rst_cmdb" set ref 147* protection_on 206(25) based bit(1) level 3 in structure "rsc" packed unaligned dcl 7-29 in procedure "mrds_rst_cmdb" set ref 346 question 0(01) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 594* 637* quit 000000 stack reference condition dcl 676 ref 604 613 614 quit_sw 000366 automatic bit(1) dcl 713 set ref 603* 604* 611 612* raw 0(07) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 600* 643* recurse_flag 000010 internal static bit(1) initial unaligned dcl 667 set ref 200 214* 626* ref_ptr 000666 automatic pointer dcl 777 set ref 494* 499* rel_name_list_ptr 142 based pointer level 2 dcl 10-12 set ref 555* relation 134(06) based bit(1) level 3 packed unaligned dcl 10-12 set ref 548* relation_mode_flags 0(04) based structure level 2 packed unaligned dcl 6-18 ref 253 release_temp_segment_ 000150 constant entry external dcl 729 ref 622 reverse builtin function dcl 768 ref 633 633 rollback_on 0(03) 000014 internal static bit(1) initial level 2 packed unaligned dcl 789 set ref 149* rsc based structure level 1 unaligned dcl 7-29 rsc_dir based char(200) level 2 packed unaligned dcl 7-29 set ref 591* rsc_ptr 001262 automatic pointer dcl 7-94 set ref 145* 208* 249* 252 253 254 258 259 260 264 266 267 268 272 272 273 275* 277 281 290 290 293 304 308 308 309 317* 318 328 330* 330 334 336 338* 338 340 341* 346 347 367 371 372 375 375 380 381 388 391 410 410 415 432 433 433 433 436 438 438 438 443 444 445 460 465 471* 499 501 506 509 513 515 515 523 525 527 534 537 538 564 566 566 578 582 585 586 587 588 591 609* 633 634 rtrim builtin function dcl 768 ref 241 273 282 290 290 308 308 472 496 496 499 506 secure 206(22) based bit(1) level 2 in structure "rsc" packed unaligned dcl 7-29 in procedure "mrds_rst_cmdb" set ref 254* secure 0(02) based bit(1) initial level 2 in structure "arg_info" packed unaligned dcl 6-18 in procedure "mrds_rst_cmdb" set ref 230* 254 seg_info based structure level 1 unaligned dcl 9-53 seg_info_ptr 001276 automatic pointer dcl 9-59 set ref 420* 422 422 422 segment 0(03) 001304 automatic bit(1) level 2 packed unaligned dcl 13-7 set ref 596* 639* set_modes_err_code 000100 automatic fixed bin(35,0) dcl 137 set ref 162* 163 163* set_modes_err_msg 000101 automatic char(500) unaligned dcl 138 set ref 162* 163* severity_high 207 based fixed bin(17,0) level 2 dcl 7-29 set ref 340 367 380* 391 433 433* 438 438* 443 source_dir 1 based char(168) level 2 packed unaligned dcl 6-18 set ref 238* 241 506 source_entry 53 based char(32) level 2 packed unaligned dcl 6-18 set ref 238* 243 496 506 source_seg_bcnt 000412 automatic fixed bin(24,0) dcl 763 set ref 238* 338 source_seg_ptr 236 based pointer level 2 dcl 7-29 set ref 252* 338* status_code 11 000370 automatic fixed bin(35,0) initial array level 2 dcl 740 set ref 302 740* string builtin function dcl 768 ref 607 607 646 646 success 001272 automatic bit(1) unaligned dcl 8-38 set ref 408* 410 415* 418 462* 464 465* 467 successor_parent_ptr 001270 automatic pointer dcl 8-31 set ref 465* successor_ptr 001266 automatic pointer dcl 8-30 set ref 465* 468 suffix_flag 000011 internal static bit(1) initial unaligned dcl 727 set ref 115* 123* 232* sw 134 based structure level 2 dcl 10-12 sys_info$max_seg_size 000174 external static fixed bin(35,0) dcl 747 ref 218 temp_dir 134 based char(168) level 2 packed unaligned dcl 7-29 set ref 272* 273 633 634 temp_dir_directory 001053 automatic char(168) unaligned dcl 784 set ref 634* 646* temp_dir_name 001043 automatic char(32) unaligned dcl 783 set ref 633* 634 646* temp_dir_path 56 based char(168) level 2 packed unaligned dcl 10-12 set ref 539* 572* temp_dir_sw 206 based bit(1) level 2 packed unaligned dcl 7-29 ref 582 temp_msg 001135 automatic varying char(256) dcl 786 set ref 241* 242* 242 243* 243 244 temp_rsc_dir_name 001125 automatic char(32) unaligned dcl 785 set ref 591* 607* temp_seg_ptr 000414 automatic pointer dcl 764 set ref 238* 252 temp_work_dir 135 based char(168) level 2 packed unaligned dcl 6-18 set ref 249* 539 607* transaction_manager_$abandon_txn 000026 constant entry external dcl 1-72 ref 4-72 4-86 4-100 4-110 1-110 transaction_manager_$abort_txn 000030 constant entry external dcl 1-73 ref 4-71 4-85 4-99 4-109 1-109 transaction_manager_$begin_txn 000032 constant entry external dcl 1-74 ref 352 1-99 transaction_manager_$commit_txn 000044 constant entry external dcl 4-56 ref 4-68 transaction_manager_$get_current_txn_id 000034 constant entry external dcl 1-75 ref 1-89 transaction_manager_$handle_conditions 000036 constant entry external dcl 1-76 ref 1-135 transaction_manager_$rollback_txn 000046 constant entry external dcl 4-57 ref 4-82 4-96 twd 0(01) based bit(1) initial level 2 packed unaligned dcl 6-18 set ref 230* unique_chars_ 000116 constant entry external dcl 700 ref 499 unspec builtin function dcl 701 set ref 130* unused 0(08) based bit(23) initial level 2 packed unaligned dcl 6-18 set ref 230* user_started_transaction 000302 automatic bit(1) dcl 1-69 set ref 1-92* 1-98* 4-60 user_transaction_id 000304 automatic bit(36) dcl 1-71 set ref 1-93* 1-100* value 001236 automatic varying char(64) dcl 787 set ref 504* 506* 517* 519* 519 521 521* 523* version based fixed bin(17,0) level 2 dcl 10-12 set ref 536* wa 270 based area level 2 dcl 7-29 ref 534 wa_ptr 000364 automatic pointer dcl 702 set ref 210* 218* 230 540 621 622* 623* wk_area based area dcl 703 ref 230 work_area_ptr 130 based pointer level 2 dcl 10-12 set ref 540* xref_iocb_ptr 146 based pointer level 2 dcl 10-12 set ref 557* 569 572* 575* xref_name 150 based char(32) level 2 packed unaligned dcl 10-12 set ref 558* 572 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ATD internal static fixed bin(17,0) initial dcl 5-63 ATTRIBUTE internal static fixed bin(17,0) initial dcl 5-16 ATTRIBUTE_DOMAIN internal static fixed bin(17,0) initial dcl 5-14 ATTR_INFO internal static fixed bin(17,0) initial dcl 5-59 ATTR_LIST internal static fixed bin(17,0) initial dcl 5-62 A_ACCESS internal static bit(3) initial unaligned dcl 12-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 CHANGER internal static fixed bin(17,0) initial dcl 5-52 CHILDREN internal static fixed bin(17,0) initial dcl 5-21 CHILD_LINK_INFO internal static fixed bin(17,0) initial dcl 5-61 COMP_NO_ARRAY internal static fixed bin(17,0) initial dcl 5-64 CONSTANT internal static fixed bin(17,0) initial dcl 5-50 CUR_LEX_TOP internal static fixed bin(17,0) initial dcl 5-36 DB_MODEL internal static fixed bin(17,0) initial dcl 5-45 DELETE_NAME internal static fixed bin(17,0) initial dcl 5-23 DIRECTIVE internal static fixed bin(17,0) initial dcl 5-28 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 12-33 DISPLAY_INFO internal static fixed bin(17,0) initial dcl 5-82 DOMAIN internal static fixed bin(17,0) initial dcl 5-13 DOMAIN_INFO internal static fixed bin(17,0) initial dcl 5-47 DOM_LIST internal static fixed bin(17,0) initial dcl 5-24 DUP_PREV internal static fixed bin(17,0) initial dcl 5-66 E_ACCESS internal static bit(3) initial unaligned dcl 12-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 FILE internal static fixed bin(17,0) initial dcl 5-17 FILE_INFO internal static fixed bin(17,0) initial dcl 5-46 FILE_MODEL internal static fixed bin(17,0) initial dcl 5-57 FIXUP_TOKEN internal static fixed bin(17,0) initial dcl 5-37 FOREIGN_KEY internal static fixed bin(17,0) initial dcl 5-20 GL internal static fixed bin(17,0) initial dcl 5-72 HIGHEST_MODE internal static fixed bin(17,0) initial dcl 2-12 INDEX internal static fixed bin(17,0) initial dcl 5-22 ITEM internal static fixed bin(17,0) initial dcl 5-18 LEX_STACK internal static fixed bin(17,0) initial dcl 5-34 LINK internal static fixed bin(17,0) initial dcl 5-19 LIST_OVRLY internal static fixed bin(17,0) initial dcl 5-75 LOWEST_MODE internal static fixed bin(17,0) initial dcl 2-12 MAIN_LIST internal static fixed bin(17,0) initial dcl 9-63 M_ACCESS internal static bit(3) initial unaligned dcl 12-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 NODE internal static fixed bin(17,0) initial dcl 5-77 N_ACCESS internal static bit(3) initial unaligned dcl 12-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 OUTPUT_TEXT internal static fixed bin(17,0) initial dcl 5-40 PARENT_LINK_INFO internal static fixed bin(17,0) initial dcl 5-60 PATH_ENTRY internal static fixed bin(17,0) initial dcl 5-48 P_STRUCT internal static fixed bin(17,0) initial dcl 5-35 RELATION internal static fixed bin(17,0) initial dcl 5-15 REL_INFO internal static fixed bin(17,0) initial dcl 5-58 REW_ACCESS internal static bit(3) initial unaligned dcl 12-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RE_ACCESS internal static bit(3) initial unaligned dcl 12-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 RINGS internal static fixed bin(3,0) initial array dcl 714 RW_ACCESS internal static bit(3) initial unaligned dcl 12-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SAVED_CHILD_COUNT internal static fixed bin(17,0) initial dcl 5-76 SA_ACCESS internal static bit(3) initial unaligned dcl 12-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SEGINFO internal static fixed bin(17,0) initial dcl 5-74 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 12-30 SEG_INFO internal static fixed bin(17,0) initial dcl 9-65 SELECT_CHAIN internal static fixed bin(17,0) initial dcl 5-67 SL internal static fixed bin(17,0) initial dcl 5-73 SMA_ACCESS internal static bit(3) initial unaligned dcl 12-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SM_ACCESS internal static bit(3) initial unaligned dcl 12-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 SORT_KEY internal static fixed bin(17,0) initial dcl 5-65 STACK_ITEM internal static fixed bin(17,0) initial dcl 5-49 STMT internal static fixed bin(17,0) initial dcl 5-29 STRING_SOURCE internal static fixed bin(17,0) initial dcl 5-38 SUB_LIST internal static fixed bin(17,0) initial dcl 9-64 S_ACCESS internal static bit(3) initial unaligned dcl 12-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 TM_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 2-18 TM_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 2-17 TM_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 2-16 TM_TEST_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 2-22 TM_TEST_NORMAL_MODE internal static fixed bin(17,0) initial dcl 2-19 TM_TEST_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 2-21 TM_TEST_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 2-20 TOKEN internal static fixed bin(17,0) initial dcl 5-39 VERSION_STATUS internal static fixed bin(17,0) initial dcl 5-51 W_ACCESS internal static bit(3) initial unaligned dcl 12-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 12-36 alloc_length internal static fixed bin(35,0) dcl 11-222 area_ptr automatic pointer dcl 8-34 changer based structure level 1 packed unaligned dcl 11-251 changer_ptr automatic pointer dcl 11-256 condition_info_ptr automatic pointer dcl 3-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 3-30 constant based structure level 1 unaligned dcl 11-216 constant_ptr automatic pointer dcl 11-220 data_ptr automatic pointer dcl 8-29 di_ptr automatic pointer dcl 11-155 domain_info based structure level 1 dcl 11-125 error_table_$null_info_ptr external static fixed bin(35,0) dcl 1-63 fi_ptr automatic pointer dcl 11-119 file_info based structure level 1 dcl 11-113 fixed builtin function dcl 768 key automatic char(32) dcl 8-24 list_ovrly based structure level 1 dcl 9-67 list_ovrly_ptr automatic pointer dcl 9-74 message_str based structure level 1 packed unaligned dcl 11-259 message_str_len automatic fixed bin(17,0) dcl 11-269 message_str_ptr automatic pointer dcl 11-267 name_list based structure level 1 dcl 10-48 name_list_ptr automatic pointer dcl 10-53 num_names_alloc automatic fixed bin(17,0) dcl 10-55 parent_ptr automatic pointer dcl 8-28 path_entry based structure level 1 packed unaligned dcl 11-172 path_entry_ptr automatic pointer dcl 11-177 predecessor_parent_ptr automatic pointer dcl 8-33 predecessor_ptr automatic pointer dcl 8-32 root_ptr automatic pointer dcl 8-26 saved_child_count based fixed bin(17,0) dcl 9-77 saved_child_count_ptr automatic pointer dcl 9-78 sl based structure level 1 dcl 9-40 sl_ptr automatic pointer dcl 9-50 stack_item based structure level 1 unaligned dcl 11-206 stack_item_ptr automatic pointer dcl 11-212 thread automatic bit(1) dcl 8-39 ua_ptr automatic pointer dcl 11-165 unreferenced_attribute based structure level 1 dcl 11-159 version_status based structure level 1 packed unaligned dcl 11-232 version_status_ptr automatic pointer dcl 11-246 work_area based area(1024) dcl 8-36 NAMES DECLARED BY EXPLICIT CONTEXT. cmdb 000604 constant entry external dcl 22 common 001174 constant label dcl 200 ref 25 create_mrds_db 000614 constant entry external dcl 22 ref 494 494 delete_directory 005736 constant entry internal dcl 631 ref 313 578 582 dmf 000700 constant entry external dcl 134 error 004226 constant entry internal dcl 481 ref 151 154 159 163 220 245 250 277 282 293 304 309 314 318 332 1-140 349 423 448 472 502 574 exit 003131 constant label dcl 388 ref 235 488 finish_cmdb 003700 constant entry internal dcl 430 ref 385 format_files 004062 constant entry internal dcl 454 ref 370 init_display_info 005155 constant entry internal dcl 532 ref 446 init_listing_seg 004276 constant entry internal dcl 492 ref 270 mftxn_check_code 003165 constant label dcl 4-65 ref 1-127 1-133 mftxn_exit 003405 constant label dcl 4-115 ref 4-63 model_adjust_bit_count 003564 constant entry internal dcl 404 ref 368 mrds_rst_cmdb 000574 constant entry external dcl 22 mstxn_any_other 003467 constant entry internal dcl 1-116 ref 361 mstxn_cleanup 003435 constant entry internal dcl 1-102 ref 357 mstxn_exit 003011 constant label dcl 1-140 ref 1-86 1-95 4-91 4-105 new_off 001136 constant entry external dcl 179 new_on 001123 constant entry external dcl 171 no_suffix 000642 constant entry external dcl 121 restore_significant_data 006101 constant entry internal dcl 663 ref 4-77 set_command_level 001150 constant entry external dcl 187 set_dm_file_db_type 000710 constant entry external dcl 134 set_subroutine_level 001163 constant entry external dcl 194 set_vfile_db_type 000665 constant entry external dcl 127 should_rollback 006072 constant entry internal dcl 657 ref 4-94 suffix 000627 constant entry external dcl 113 tidy_up 005254 constant entry internal dcl 562 ref 212 234 358 400 vf 000655 constant entry external dcl 127 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7274 7504 6130 7304 Length 10374 6130 210 654 1143 6 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_rst_cmdb 1136 external procedure is an external procedure. on unit on line 212 64 on unit on unit on line 349 96 on unit on unit on line 356 76 on unit on unit on line 361 82 on unit mstxn_cleanup internal procedure shares stack frame of on unit on line 356. mstxn_any_other internal procedure shares stack frame of on unit on line 361. model_adjust_bit_count internal procedure shares stack frame of external procedure mrds_rst_cmdb. finish_cmdb internal procedure shares stack frame of external procedure mrds_rst_cmdb. format_files internal procedure shares stack frame of external procedure mrds_rst_cmdb. error 84 internal procedure is called during a stack extension. init_listing_seg internal procedure shares stack frame of external procedure mrds_rst_cmdb. init_display_info internal procedure shares stack frame of external procedure mrds_rst_cmdb. tidy_up 107 internal procedure enables or reverts conditions. on unit on line 604 64 on unit delete_directory 100 internal procedure is called by several nonquick procedures. should_rollback internal procedure shares stack frame of external procedure mrds_rst_cmdb. restore_significant_data internal procedure shares stack frame of external procedure mrds_rst_cmdb. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 recurse_flag mrds_rst_cmdb 000011 suffix_flag mrds_rst_cmdb 000012 allow_new_features mrds_rst_cmdb 000013 command_level_call mrds_rst_cmdb 000014 default_db_relation_modes mrds_rst_cmdb STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_rst_cmdb 000100 set_modes_err_code mrds_rst_cmdb 000101 set_modes_err_msg mrds_rst_cmdb 000276 mstxn_code mrds_rst_cmdb 000277 mstxn_retries mrds_rst_cmdb 000300 mstxn_temp_code mrds_rst_cmdb 000301 mstxn_transactions_needed mrds_rst_cmdb 000302 user_started_transaction mrds_rst_cmdb 000303 mstxn_txn_id mrds_rst_cmdb 000304 user_transaction_id mrds_rst_cmdb 000306 mstxn_condition_info mrds_rst_cmdb 000340 mftxn_code mrds_rst_cmdb 000341 mftxn_temp_code mrds_rst_cmdb 000364 wa_ptr mrds_rst_cmdb 000366 quit_sw mrds_rst_cmdb 000367 new_found mrds_rst_cmdb 000370 dir_acl mrds_rst_cmdb 000402 arg_len mrds_rst_cmdb 000404 arg_list_ptr mrds_rst_cmdb 000406 arg_num mrds_rst_cmdb 000410 arg_ptr mrds_rst_cmdb 000412 source_seg_bcnt mrds_rst_cmdb 000414 temp_seg_ptr mrds_rst_cmdb 000416 err_msg mrds_rst_cmdb 000516 fatal_sw mrds_rst_cmdb 000517 cd mrds_rst_cmdb 000520 db_dir mrds_rst_cmdb 000572 db_entry mrds_rst_cmdb 000602 dir mrds_rst_cmdb 000654 dms_test mrds_rst_cmdb 000660 code mrds_rst_cmdb 000662 dummy_ptr mrds_rst_cmdb 000664 loop_ptr mrds_rst_cmdb 000666 ref_ptr mrds_rst_cmdb 000670 attach_desc mrds_rst_cmdb 000752 entry_name mrds_rst_cmdb 000762 db_model_path mrds_rst_cmdb 001034 long_date mrds_rst_cmdb 001042 no_dms_err_code mrds_rst_cmdb 001043 temp_dir_name mrds_rst_cmdb 001053 temp_dir_directory mrds_rst_cmdb 001125 temp_rsc_dir_name mrds_rst_cmdb 001135 temp_msg mrds_rst_cmdb 001236 value mrds_rst_cmdb 001257 db_relation_modes mrds_rst_cmdb 001260 ai_ptr mrds_rst_cmdb 001262 rsc_ptr mrds_rst_cmdb 001264 node_ptr mrds_rst_cmdb 001266 successor_ptr mrds_rst_cmdb 001270 successor_parent_ptr mrds_rst_cmdb 001272 success mrds_rst_cmdb 001274 gl_ptr mrds_rst_cmdb 001276 seg_info_ptr mrds_rst_cmdb 001300 mrds_dm_display_info_ptr mrds_rst_cmdb 001302 dbm_ptr mrds_rst_cmdb 001304 delete_options mrds_rst_cmdb 001332 error_code format_files 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_this call_int_other_desc call_int_other return_mac tra_ext_1 signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc trunc_fx2 reverse_cs set_chars_eis divide_fx1 op_alloc_ index_before_cs clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_bit_count_ com_err_ continue_to_signal_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$decode_entry_value date_time_ delete_$path dmd_$check_path dmd_$set_needed_access dsl_$create_res_copy expand_pathname_ find_condition_info_ get_group_id_ get_group_id_$tag_star get_wdir_ hcs_$add_dir_acl_entries initiate_file_ ioa_$ioa_switch iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open mdbm_util_$mrds_dm_display mdbm_util_$mu_define_area mdbm_util_$quiesce_free mdbm_util_$xref_destroy mrds_rst_consistancy_check mrds_rst_create_db mrds_rst_create_rsc mrds_rst_format_file mrds_rst_get_seg_ptr mrds_rst_parse mrds_rst_proc_ctl_args mrds_rst_proc_ctl_args$parse_mode_string mrds_rst_tree_successor release_temp_segment_ transaction_manager_$abandon_txn transaction_manager_$abort_txn transaction_manager_$begin_txn transaction_manager_$commit_txn transaction_manager_$get_current_txn_id transaction_manager_$handle_conditions transaction_manager_$rollback_txn unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$bj_journal_full dm_error_$lock_deadlock dm_error_$no_current_transaction error_table_$action_not_performed error_table_$argerr error_table_$incorrect_access error_table_$namedup error_table_$too_many_args iox_$error_output iox_$user_output mdbm_data_$current_version mrds_error_$no_dms mrds_error_$no_recursion sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 740 000556 22 000573 24 000622 25 000625 113 000626 115 000635 117 000640 121 000641 123 000650 125 000653 127 000654 130 000673 131 000676 134 000677 143 000716 144 000721 145 000722 146 000724 147 000727 148 000731 149 000733 150 000735 151 000745 154 000766 157 001011 158 001013 159 001032 162 001053 163 001103 167 001121 171 001122 173 001131 175 001134 179 001135 181 001144 183 001146 187 001147 189 001156 191 001161 194 001162 196 001171 198 001173 200 001174 202 001177 203 001213 207 001214 208 001215 209 001217 210 001220 212 001221 214 001243 218 001246 220 001306 222 001327 224 001331 225 001335 228 001360 230 001367 232 001413 233 001432 234 001435 235 001441 238 001442 240 001500 241 001502 242 001535 243 001545 244 001557 245 001563 249 001577 250 001621 252 001642 253 001645 254 001655 256 001660 258 001664 259 001666 260 001670 264 001672 266 001677 267 001701 268 001704 270 001706 272 001713 273 001717 275 001745 276 001761 277 001763 280 002012 281 002017 282 002043 284 002125 290 002127 291 002200 293 002206 299 002234 300 002245 301 002302 302 002304 304 002311 305 002334 308 002335 309 002373 313 002422 314 002426 317 002450 318 002463 328 002510 330 002513 332 002534 334 002556 336 002561 338 002563 340 002605 341 002612 346 002621 347 002626 348 002631 349 002634 352 002672 353 002677 356 002700 357 002714 358 002715 359 002722 361 002723 1 83 002741 1 84 002742 1 86 002743 1 88 002745 1 89 002746 1 90 002757 1 92 002763 1 93 002765 1 94 002767 1 95 002770 1 98 002771 1 99 002772 1 100 003007 1 140 003011 367 003032 368 003035 370 003036 371 003037 372 003043 373 003054 375 003056 378 003102 380 003122 381 003125 385 003130 388 003131 391 003140 393 003147 395 003155 4 60 003156 4 62 003163 4 63 003164 4 65 003165 4 68 003167 4 69 003200 4 71 003202 4 72 003213 4 75 003226 4 77 003227 4 78 003230 4 81 003237 4 82 003240 4 83 003253 4 85 003255 4 86 003266 4 88 003301 4 90 003302 4 91 003303 4 93 003304 4 94 003305 4 96 003312 4 97 003326 4 99 003330 4 100 003341 4 102 003354 4 104 003355 4 105 003356 4 107 003357 4 109 003360 4 110 003371 4 114 003404 4 115 003405 400 003424 402 003434 1 102 003435 1 107 003436 1 109 003441 1 110 003452 1 114 003466 1 116 003467 1 121 003470 1 123 003473 1 124 003512 1 126 003520 1 127 003523 1 129 003526 1 132 003540 1 133 003543 1 135 003546 1 136 003553 1 137 003554 1 138 003563 404 003564 408 003565 410 003567 415 003602 418 003622 420 003625 422 003630 423 003653 426 003674 428 003677 430 003700 432 003701 433 003705 436 003734 438 003757 443 004011 444 004014 445 004016 446 004021 447 004022 448 004043 452 004061 454 004062 460 004063 462 004066 464 004070 465 004073 467 004113 468 004116 469 004120 470 004123 471 004126 472 004152 474 004217 477 004223 479 004224 481 004225 486 004241 487 004245 488 004273 492 004276 494 004277 496 004316 499 004443 501 004552 502 004575 504 004621 506 004626 509 004721 512 004756 513 004775 515 005025 517 005052 519 005053 521 005072 523 005104 525 005131 527 005151 528 005154 532 005155 534 005156 536 005164 537 005166 538 005171 539 005176 540 005202 541 005204 542 005207 543 005212 544 005214 545 005216 547 005220 548 005222 549 005224 550 005226 551 005230 552 005232 553 005234 554 005236 555 005240 556 005242 557 005244 558 005246 560 005252 562 005253 564 005261 566 005266 569 005302 572 005314 574 005350 575 005370 578 005374 582 005406 585 005416 586 005423 587 005434 588 005451 591 005466 592 005514 593 005517 594 005521 595 005523 596 005525 597 005527 598 005531 599 005533 600 005535 601 005537 603 005541 604 005542 607 005563 608 005620 609 005623 611 005625 612 005627 613 005630 614 005631 617 005634 621 005674 622 005701 623 005727 626 005732 627 005734 631 005735 633 005743 634 005775 636 006015 637 006017 638 006021 639 006023 640 006025 641 006027 642 006031 643 006033 644 006035 646 006037 648 006071 657 006072 659 006074 663 006101 665 006102 ----------------------------------------------------------- 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