COMPILATION LISTING OF SEGMENT rmdb_rq_ready_db Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/26/88 1248.1 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 /* format: ^inddcls,^indattr,indnoniterend,^indnoniterdo,indend,tree,^case,insnl,comcol61,dclind5,declareind5,delnl */ 10 11 rmdb_rq_ready_db: 12 proc (sci_ptr, info_ptr); 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 17* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 18* added the database creation code. 19* 2) change(88-01-11,Blair), approve(88-02-25,MCR7840), audit(88-03-03,Dupuis), 20* install(88-03-08,MR12.2-1034): 21* Re_arrange some code so that the pathname of the database isn't expanded 22* until after we try to fill in the mrds_pathname_info structure so that we 23* can use search paths to locate the database. Only if the database doesn't 24* exist do we try to create one in the working_dir. 25* 3) change(88-09-20,Dupuis), approve(88-09-20,MCR7995), audit(88-09-20,Blair), 26* install(88-09-26,MR12.2-1119): 27* Changed error_table_bad_arg to error_table_$badopt (phx20666). 28* END HISTORY COMMENTS */ 29 30 31 /* 32* . BEGIN_DESCRIPTION 33* This routines implements that ready_db request within the 34* restructure_mrds_db subsystem. It processes and checks that 35* arguments associated with the request and then calls the 36* rmdb_ready_db routine which actually does the work or ready-ing 37* the db for restructuring. 38* 39* If the database does not exist, the user will be queried to create 40* it. If the answer is yes, the database is created with no existing 41* domains, attribute, or domains, and the database is quiesced. 42* 43* In the event that the readied database is marked inconsistent it 44* will query the user for execution of the undo request. 45* . END_DESCRIPTION 46* 47* Known Bugs: 48* 49* Other Problems: 50* 51* . HISTORY 52* 82-03-29 Davids: Written 53* 54* 82-04-08 Davids: Changed the error messages for "a database is 55* . alreadied readied" and "could not ready the 56* . database" so that they are formated better. 57* 58* 82-04-30 Davids: Added code to check the consistency of the 59* . database and to execute the undo request. 60* 61* 82-05-25 Davids: changed to have rmdb_ctl.db_model_ptr in calling 62* . sequence to rmdb_ready_db. 63* 64* 82-05-26 Davids: changed to call rmdb_execute_undo if the database 65* . is inconsistent. 66* 67* 82-06-07 Davids: changed to check size condition if user inputs a 68* . quiesce_wait_time that is to large. Also to 69* . recognize a negative wait time so as not to 70* . treat it like a control argument. And changed 71* . changed the default wait time to use 72* . mrds_data_$quiesce_wait (= 0) instead of the 73* . constant 10. 74* 75* 82-06-25 Davids: removed call to get_shortest_path_ and 76* . reformated some lines to prevent wrap-around 77* 78* 82-07-01 Roger Lackey : Modified the calls to mu_db_inconsistent to use 79* . mdbm_util_$inconsistent_* for binding. 80* 81* 82-08-20 Davids: modified the call to rmdb_ready_db to include 82* . addr (rmdb_ctl.relmgr_entries). 83* 84* 83-05-24 Davids: Modified the parameter list of rmdb_ready_db to include the 85* saved_res_version_ptr argument. 86* 87* 84-10-23 Benjamin: When returning from rmdb_ready_db, if code is 88* mrds_error_$my_quiesced_db, will not abort, but rather set a flag that says 89* that rmdb did not quiesce the database. 90**/ 91 92 /* PARAMETERS */ 93 94 dcl sci_ptr ptr; /* (input) pointer to the subsystem control infor structure */ 95 /* need to be able to pass it to the ssu entries */ 96 dcl info_ptr ptr; /* (input) pointer the rmdb_ctl structure which is both */ 97 /* read and written */ 98 99 /* EXTERNAL STATIC */ 100 101 dcl error_table_$badopt fixed bin (35) external static; 102 dcl error_table_$bad_conversion fixed bin (35) external static; 103 dcl error_table_$noarg fixed bin (35) external static; 104 dcl mrds_data_$quiesce_wait fixed bin (35) external static; 105 dcl mrds_error_$my_quiesced_db fixed bin (35) ext static; 106 dcl mrds_error_$no_database fixed bin (35) ext static; 107 108 /* ENTRIES */ 109 110 dcl command_query_$yes_no entry () options (variable); 111 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 112 dcl expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)); 113 dcl mdbm_util_$inconsistent_get_info entry (ptr, bit (1), char (*), char (*), char (*)); 114 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 115 dcl rmdb_create_db entry (char (*), char (*), char (*), char (*), ptr, char (*), fixed bin (35)); 116 dcl rmdb_execute_undo entry (ptr, char (32), char (168), ptr, char (32), char (100)); 117 dcl rmdb_ready_db entry (char (168), fixed bin, ptr, char (168), ptr, ptr, char (500), fixed bin (35)); 118 dcl ssu_$abort_line entry options (variable); 119 dcl ssu_$arg_count entry (ptr, fixed bin); 120 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 121 122 /* INTERNAL AUTOMATIC */ 123 124 dcl arg_len fixed bin (21); /* length of an argument */ 125 dcl arg_ptr ptr; /* pointer to an argument */ 126 dcl code fixed bin (35); /* standard error code */ 127 dcl db_dir char (168); /* expanded directory of db */ 128 dcl db_name char (32); /* db name + suffix */ 129 dcl db_path char (168); /* database path supplied as an argument */ 130 dcl error_message char (500); /* error message returned from rmdb_ready_db */ 131 dcl force_sw bit (1); /* true if -force was specified */ 132 dcl i fixed bin; /* loop index */ 133 dcl incon_name char (32); /* name of module that marked db as inconsistent */ 134 dcl incon_value bit (1); /* true ==> db is inconsistent */ 135 dcl nargs fixed bin; /* number of arguments the request was called with */ 136 dcl quiesce_wait_time fixed bin; /* how many seconds the caller is willing to wait to 137* try to quiesce the database */ 138 dcl quiesce_wait_time_supplied bit (1); /* true if a wait time has been supllied as an argument */ 139 dcl relation_type char (32); /* file type command line argument */ 140 dcl relation_modes char (256); /* mode command line argument */ 141 dcl undo_request char (100); /* rmdb request that will make the db consistent again */ 142 dcl unused1 char (200); /* unused output parameter from mdbm_util_$inconsistent_get_info */ 143 144 /* BUILTINS */ 145 146 dcl addr builtin; 147 dcl index builtin; 148 dcl verify builtin; 149 150 /* BASED */ 151 152 dcl arg char (arg_len) based (arg_ptr); /* an argument */ 153 154 /* CONDITIONS */ 155 156 dcl size condition; 157 158 /* CONSTANTS */ 159 160 dcl DATA_MANAGEMENT_FILE char (32) int static options (constant) init ("data_management_file"); 161 dcl OFF bit (1) internal static options (constant) init ("0"b); 162 dcl ON bit (1) internal static options (constant) init ("1"b); 163 dcl VFILE char (32) int static options (constant) init ("vfile"); 164 165 /* INCLUDES */ 166 1 1 /* BEGIN - mrds_rmdb_ctl.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(82-03-26,Davids), approve(), audit(), install(): 1 7* created 1 8* 2) change(82-05-26,Davids), approve(), audit(), install(): 1 9* added db_model_ptr 1 10* 3) change(82-06-09,Harvey), approve(), audit(), install(): 1 11* deleted ssu_ routines ptr storage 1 12* 4) change(82-08-20,Davids), approve(), audit(), install(): 1 13* added the relmgr like reference and included the rmdb_relmgr_entries 1 14* include file 1 15* 5) change(83-05-24,Davids), approve(), audit(), install(): 1 16* added the saved_res_version_ptr element 1 17* 6) change(84-10-23,Benjamin), approve(), audit(), install(): 1 18* added flags (just database_readied_by_rmdb for now). 1 19* 7) change(85-11-08,Spitzer), approve(85-11-08,MCR7311), 1 20* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 1 21* added crossref_file_info. 1 22* END HISTORY COMMENTS */ 1 23 1 24 1 25 dcl 01 rmdb_ctl based (rmdb_ctl_ptr), 1 26 02 version fixed bin, 1 27 02 rmdb_version char (16) varying, 1 28 02 absolute_db_path char (168), 1 29 02 temp_dir_path char (168), 1 30 02 work_area_ptr ptr, 1 31 02 db_model_ptr ptr, 1 32 02 saved_res_version_ptr ptr, 1 33 02 crossref_file_info, 1 34 03 iocb_ptr ptr, 1 35 03 name char (32), 1 36 02 relmgr_entries like rmdb_relmgr_entries, 1 37 02 flags, 1 38 03 database_readied_by_rmdb bit (1) unal, 1 39 03 unused bit (35) unal; 1 40 1 41 dcl RMDB_CTL_VERSION_1 fixed bin init (1) internal static options (constant); 1 42 1 43 dcl rmdb_ctl_ptr ptr; 1 44 1 45 2 1 /* START OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(82-08-20,Davids), approve(), audit(), install(): 2 6* written 2 7* 2) change(86-01-28,Spitzer), approve(86-01-28,MCR7311), 2 8* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 2 9* add get_tuples_by_spec, put_tuple, put_tuples, create_cursor entry points. 2 10* 3) change(86-08-21,Blair), approve(86-08-21,MCR7311), 2 11* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 2 12* Back out the entries get_tuples_by_spec and put_tuples since they aren't 2 13* sufficiently well tested to be reliable. Replace with get_tuple_id and 2 14* get_tuple_by_id. 2 15* END HISTORY COMMENTS */ 2 16 2 17 2 18 dcl 01 rmdb_relmgr_entries based (rmdb_relmgr_entries_ptr), 2 19 02 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, 2 20 bit (36) aligned, fixed bin (35)), 2 21 02 delete_relation entry (char (*), char (*), fixed bin (35)), 2 22 02 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 2 23 02 close entry (bit (36) aligned, fixed bin (35)), 2 24 02 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), 2 25 bit (36) aligned, fixed bin (35)), 2 26 02 delete_index entry (bit (36) aligned, bit (36) aligned, fixed bin (35)), 2 27 02 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 2 28 02 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 2 29 02 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 2 30 02 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)); 2 31 2 32 dcl rmdb_relmgr_entries_ptr ptr; 2 33 2 34 /* END OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* END - mrds_rmdb_ctl.incl.pl1 */ 167 168 169 /* 170* Assign initial values 171**/ 172 173 rmdb_ctl_ptr = info_ptr; 174 175 db_path = ""; 176 relation_type = ""; 177 relation_modes = ""; 178 quiesce_wait_time_supplied = OFF; 179 180 force_sw = OFF; 181 182 /* 183* If the absolute_db_path is not null it indicates that a database 184* is currently in the readied state. The caller cannot request to 185* ready a database while one is still readied. The call to 186* ssu_$abort_line does not return, it causes the rest of the 187* request line to be aborted and returns control to the listener. 188**/ 189 190 if rmdb_ctl.absolute_db_path ^= "" 191 then call ssu_$abort_line (sci_ptr, 0, 192 "^/The database ^a^/^-is already readied, only 1 database may be readied at a time." 193 || "^/^-Type ""free_db"" to free the currently readied database.", rmdb_ctl.absolute_db_path); 194 195 /* 196* The ready_db request takes two control args, -pathname (-pn) and 197* -quiesce_wait_time (-qwt). These arguments may appear in any 198* order and any number of times with the last value being the one 199* used. If the first argument is not a control arg, i.e. does not 200* begin with a "-" it is assumed to be the database path. 201**/ 202 203 call ssu_$arg_count (sci_ptr, nargs); 204 205 i = 1; 206 do while (i <= nargs); 207 call ssu_$arg_ptr (sci_ptr, i, arg_ptr, arg_len); 208 209 if /* case */ index (arg, "-") = 1 210 then if /* case */ arg = "-fc" | arg = "-force" 211 then force_sw = "1"b; 212 else if arg = "-nfc" | arg = "-no_force" 213 then force_sw = "0"b; 214 else if arg = "-pn" | arg = "-pathname" 215 then do; 216 if i = nargs 217 then 218 missing_path: 219 call ssu_$abort_line (sci_ptr, error_table_$noarg, 220 "^/The -pathname (-pn) control arg was given but no pathname was supplied"); 221 call ssu_$arg_ptr (sci_ptr, i + 1, arg_ptr, arg_len); 222 if index (arg, "-") = 1 223 then goto missing_path; 224 db_path = arg; 225 i=i+1; 226 end; 227 else if arg = "-qwt" | arg = "-quiesce_wait_time" 228 then do; 229 if i = nargs 230 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 231 "^/The -quiesce_wait_time (-qwt) control arg was given but no quiesce wait time was supplied."); 232 call ssu_$arg_ptr (sci_ptr, i + 1, arg_ptr, arg_len); 233 if verify (arg, "-0123456789") ^= 0 234 then goto bad_conversion; 235 236 quiesce_wait_time_supplied = ON; 237 on size 238 begin; 239 call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, 240 "^/The size of the quiesce wait time ^a is larger " 241 || "than the maximum of 131071.", arg); 242 end; 243 (size): 244 quiesce_wait_time = cv_dec_check_ (arg, code); 245 revert size; 246 if code ^= 0 247 then 248 bad_conversion: call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, 249 "^/Could not convert ^a into an integer representing the quiesce wait-time.", arg); 250 if quiesce_wait_time < 0 251 then call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, 252 "^/The quiesce wait time ^a is negative, wait times must be >= 0.", arg); 253 i=i+1; 254 end; 255 else if arg = "-rt" | arg = "-relation_type" 256 then do; 257 if i = nargs 258 then 259 missing_type: call ssu_$abort_line (sci_ptr, error_table_$noarg, "^/The -relation_type (-rt) control argument was given but no relation type was supplied."); 260 call ssu_$arg_ptr (sci_ptr, i+1, arg_ptr, arg_len); 261 if index (arg, "-") = 1 262 then goto missing_type; 263 relation_type = arg; 264 i = i+1; 265 if i ^= nargs 266 then do; 267 call ssu_$arg_ptr (sci_ptr, i+1, arg_ptr, arg_len); 268 if index (arg, "-") ^= 1 269 then do; 270 relation_modes = arg; 271 i = i + 1; 272 end; 273 end; 274 end; 275 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "^/Argument ^i (^a) is unrecognized", i, 276 arg); 277 else if db_path = "" 278 then db_path = arg; 279 else call ssu_$abort_line (sci_ptr, 0, "Duplicate argument.^/A database_path has already been given. ^a", 280 arg); 281 i = i + 1; 282 end; /* do while */ 283 284 /* 285* If the database path has not been supplied as an argument its an 286* error 287**/ 288 289 if db_path = "" 290 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 291 "^/The database path is required and has not been supplied"); 292 293 /* 294* If a quiesce_wait_time has not been supplied assume the default 295* value. 296**/ 297 298 if ^quiesce_wait_time_supplied 299 then quiesce_wait_time = mrds_data_$quiesce_wait; 300 301 /* Check validity of the relation type. If no relation type specified, default 302* to vfile types */ 303 304 if relation_type = "" 305 then relation_type = VFILE; 306 else if relation_type = "dmf" 307 then relation_type = DATA_MANAGEMENT_FILE; 308 else if ^(relation_type = VFILE | relation_type = DATA_MANAGEMENT_FILE) 309 then call ssu_$abort_line (sci_ptr, 0, "Invalid relation_type supplied. ^a^/^-Valid types are: ^a, ^a", 310 relation_type, VFILE, DATA_MANAGEMENT_FILE); 311 312 /* 313* Make the call that will prepare the database for restructuring. 314**/ 315 316 rmdb_ctl.flags.database_readied_by_rmdb = ON; 317 318 call rmdb_ready_db (db_path, quiesce_wait_time, addr (rmdb_ctl.relmgr_entries), rmdb_ctl.absolute_db_path, 319 rmdb_ctl.db_model_ptr, rmdb_ctl.saved_res_version_ptr, error_message, code); 320 if code = mrds_error_$my_quiesced_db 321 then rmdb_ctl.flags.database_readied_by_rmdb = OFF; 322 else if code = mrds_error_$no_database 323 then do; 324 call expand_pathname_$add_suffix (db_path, "db", db_dir, db_name, code); 325 if code ^= 0 326 then call ssu_$abort_line (sci_ptr, code, "^a", db_path); 327 db_path = pathname_ (db_dir, db_name); 328 329 if ^force_sw 330 then do; 331 call command_query_$yes_no (force_sw, mrds_error_$no_database, "restructure_mrds_db (ready_db)", 332 "Answering yes will create an empty MRDS database.", "^/Do you wish to create ^a?", 333 db_path); 334 if ^force_sw 335 then call ssu_$abort_line (sci_ptr, 0); 336 end; 337 call rmdb_create_db (db_path, relation_type, relation_modes, rmdb_ctl.absolute_db_path, 338 rmdb_ctl.db_model_ptr, error_message, code); 339 if code ^= 0 340 then call ssu_$abort_line (sci_ptr, code, "^/The database ^a^/could not be created.^/^-^a", db_path, 341 error_message); 342 343 call rmdb_ready_db (db_path, quiesce_wait_time, addr (rmdb_ctl.relmgr_entries), 344 rmdb_ctl.absolute_db_path, rmdb_ctl.db_model_ptr, rmdb_ctl.saved_res_version_ptr, error_message, 345 code); 346 347 end; 348 else if code ^= 0 349 then call ssu_$abort_line (sci_ptr, code, 350 "^/The database ^a^/^-could not be readied for restructuring^/^-^a", db_path, error_message) 351 ; 352 353 /* 354* If the database is inconsistent it must be made consistent before 355* the user can be told that it has been readied. Note at this point 356* the database is really readied. rmdb_execute_undo will query the 357* user about running the undo request. If the user chooses not to 358* run the undo request or the undo request fails the database is 359* freed and then the request line is aborted. If the database can't 360* be freed the subsystem is aborted. 361**/ 362 363 call mdbm_util_$inconsistent_get_info (rmdb_ctl.db_model_ptr, incon_value, incon_name, unused1, undo_request); 364 if incon_value 365 then call rmdb_execute_undo (sci_ptr, "ready_db", rmdb_ctl.absolute_db_path, rmdb_ctl.db_model_ptr, incon_name, 366 undo_request); 367 368 369 return; 370 371 end rmdb_rq_ready_db; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/26/88 1248.2 rmdb_rq_ready_db.pl1 >spec>install>1119>rmdb_rq_ready_db.pl1 167 1 10/17/86 1404.4 mrds_rmdb_ctl.incl.pl1 >ldd>include>mrds_rmdb_ctl.incl.pl1 1-46 2 10/17/86 1404.6 rmdb_relmgr_entries.incl.pl1 >ldd>include>rmdb_relmgr_entries.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DATA_MANAGEMENT_FILE 000010 constant char(32) initial packed unaligned dcl 160 set ref 306 308 308* OFF constant bit(1) initial packed unaligned dcl 161 ref 178 180 320 ON constant bit(1) initial packed unaligned dcl 162 ref 236 316 VFILE 000000 constant char(32) initial packed unaligned dcl 163 set ref 304 308 308* absolute_db_path 6 based char(168) level 2 packed packed unaligned dcl 1-25 set ref 190 190* 318* 337* 343* 364* addr builtin function dcl 146 ref 318 318 343 343 arg based char packed unaligned dcl 152 set ref 209 209 209 212 212 214 214 222 224 227 227 233 239* 243* 246* 250* 255 255 261 263 268 270 275* 277 279* arg_len 000100 automatic fixed bin(21,0) dcl 124 set ref 207* 209 209 209 212 212 214 214 221* 222 224 227 227 232* 233 239 239 243 243 246 246 250 250 255 255 260* 261 263 267* 268 270 275 275 277 279 279 arg_ptr 000102 automatic pointer dcl 125 set ref 207* 209 209 209 212 212 214 214 221* 222 224 227 227 232* 233 239 243 246 250 255 255 260* 261 263 267* 268 270 275 277 279 code 000104 automatic fixed bin(35,0) dcl 126 set ref 243* 246 318* 320 322 324* 325 325* 337* 339 339* 343* 348 348* command_query_$yes_no 000024 constant entry external dcl 110 ref 331 cv_dec_check_ 000026 constant entry external dcl 111 ref 243 database_readied_by_rmdb 222 based bit(1) level 3 packed packed unaligned dcl 1-25 set ref 316* 320* db_dir 000105 automatic char(168) packed unaligned dcl 127 set ref 324* 327* db_model_ptr 134 based pointer level 2 dcl 1-25 set ref 318* 337* 343* 363* 364* db_name 000157 automatic char(32) packed unaligned dcl 128 set ref 324* 327* db_path 000167 automatic char(168) packed unaligned dcl 129 set ref 175* 224* 277 277* 289 318* 324* 325* 327* 331* 337* 339* 343* 348* error_message 000241 automatic char(500) packed unaligned dcl 130 set ref 318* 337* 339* 343* 348* error_table_$bad_conversion 000012 external static fixed bin(35,0) dcl 102 set ref 239* 246* 250* error_table_$badopt 000010 external static fixed bin(35,0) dcl 101 set ref 275* error_table_$noarg 000014 external static fixed bin(35,0) dcl 103 set ref 216* 229* 257* 289* expand_pathname_$add_suffix 000030 constant entry external dcl 112 ref 324 flags 222 based structure level 2 packed packed unaligned dcl 1-25 force_sw 000436 automatic bit(1) packed unaligned dcl 131 set ref 180* 209* 212* 329 331* 334 i 000437 automatic fixed bin(17,0) dcl 132 set ref 205* 206 207* 216 221 225* 225 229 232 253* 253 257 260 264* 264 265 267 271* 271 275* 281* 281 incon_name 000440 automatic char(32) packed unaligned dcl 133 set ref 363* 364* incon_value 000450 automatic bit(1) packed unaligned dcl 134 set ref 363* 364 index builtin function dcl 147 ref 209 222 261 268 info_ptr parameter pointer dcl 96 ref 11 173 mdbm_util_$inconsistent_get_info 000032 constant entry external dcl 113 ref 363 mrds_data_$quiesce_wait 000016 external static fixed bin(35,0) dcl 104 ref 298 mrds_error_$my_quiesced_db 000020 external static fixed bin(35,0) dcl 105 ref 320 mrds_error_$no_database 000022 external static fixed bin(35,0) dcl 106 set ref 322 331* nargs 000451 automatic fixed bin(17,0) dcl 135 set ref 203* 206 216 229 257 265 pathname_ 000034 constant entry external dcl 114 ref 327 quiesce_wait_time 000452 automatic fixed bin(17,0) dcl 136 set ref 243* 250 298* 318* 343* quiesce_wait_time_supplied 000453 automatic bit(1) packed unaligned dcl 138 set ref 178* 236* 298 relation_modes 000464 automatic char(256) packed unaligned dcl 140 set ref 177* 270* 337* relation_type 000454 automatic char(32) packed unaligned dcl 139 set ref 176* 263* 304 304* 306 306* 308 308 308* 337* relmgr_entries 152 based structure level 2 unaligned dcl 1-25 set ref 318 318 343 343 rmdb_create_db 000036 constant entry external dcl 115 ref 337 rmdb_ctl based structure level 1 unaligned dcl 1-25 rmdb_ctl_ptr 000706 automatic pointer dcl 1-43 set ref 173* 190 190 316 318 318 318 318 318 320 337 337 343 343 343 343 343 363 364 364 rmdb_execute_undo 000040 constant entry external dcl 116 ref 364 rmdb_ready_db 000042 constant entry external dcl 117 ref 318 343 rmdb_relmgr_entries based structure level 1 unaligned dcl 2-18 saved_res_version_ptr 136 based pointer level 2 dcl 1-25 set ref 318* 343* sci_ptr parameter pointer dcl 94 set ref 11 190* 203* 207* 216* 221* 229* 232* 239* 246* 250* 257* 260* 267* 275* 279* 289* 308* 325* 334* 339* 348* 364* size 000700 stack reference condition dcl 156 ref 237 245 ssu_$abort_line 000044 constant entry external dcl 118 ref 190 216 229 239 246 250 257 275 279 289 308 325 334 339 348 ssu_$arg_count 000046 constant entry external dcl 119 ref 203 ssu_$arg_ptr 000050 constant entry external dcl 120 ref 207 221 232 260 267 undo_request 000564 automatic char(100) packed unaligned dcl 141 set ref 363* 364* unused1 000615 automatic char(200) packed unaligned dcl 142 set ref 363* verify builtin function dcl 148 ref 233 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RMDB_CTL_VERSION_1 internal static fixed bin(17,0) initial dcl 1-41 rmdb_relmgr_entries_ptr automatic pointer dcl 2-32 NAMES DECLARED BY EXPLICIT CONTEXT. bad_conversion 001213 constant label dcl 246 set ref 233 missing_path 000722 constant label dcl 216 ref 222 missing_type 001322 constant label dcl 257 ref 261 rmdb_rq_ready_db 000527 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3072 3144 2631 3102 Length 3414 2631 52 234 240 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rmdb_rq_ready_db 548 external procedure is an external procedure. on unit on line 237 104 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rmdb_rq_ready_db 000100 arg_len rmdb_rq_ready_db 000102 arg_ptr rmdb_rq_ready_db 000104 code rmdb_rq_ready_db 000105 db_dir rmdb_rq_ready_db 000157 db_name rmdb_rq_ready_db 000167 db_path rmdb_rq_ready_db 000241 error_message rmdb_rq_ready_db 000436 force_sw rmdb_rq_ready_db 000437 i rmdb_rq_ready_db 000440 incon_name rmdb_rq_ready_db 000450 incon_value rmdb_rq_ready_db 000451 nargs rmdb_rq_ready_db 000452 quiesce_wait_time rmdb_rq_ready_db 000453 quiesce_wait_time_supplied rmdb_rq_ready_db 000454 relation_type rmdb_rq_ready_db 000464 relation_modes rmdb_rq_ready_db 000564 undo_request rmdb_rq_ready_db 000615 unused1 rmdb_rq_ready_db 000706 rmdb_ctl_ptr rmdb_rq_ready_db THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry size_check_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_$yes_no cv_dec_check_ expand_pathname_$add_suffix mdbm_util_$inconsistent_get_info pathname_ rmdb_create_db rmdb_execute_undo rmdb_ready_db ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$noarg mrds_data_$quiesce_wait mrds_error_$my_quiesced_db mrds_error_$no_database LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000523 173 000534 175 000540 176 000543 177 000546 178 000551 180 000552 190 000553 203 000607 205 000621 206 000623 207 000627 209 000645 212 000674 214 000707 216 000717 221 000747 222 000770 224 001004 225 001007 226 001010 227 001011 229 001021 232 001051 233 001072 236 001106 237 001110 239 001124 242 001160 243 001161 245 001210 246 001211 250 001247 253 001305 254 001306 255 001307 257 001317 260 001347 261 001370 263 001404 264 001407 265 001410 267 001413 268 001433 270 001447 271 001452 274 001453 275 001454 277 001515 279 001525 281 001562 282 001563 289 001564 298 001615 304 001622 306 001632 308 001642 316 001712 318 001715 320 001744 322 001754 324 001756 325 002007 327 002041 329 002061 331 002064 334 002132 337 002154 339 002215 343 002254 347 002305 348 002306 363 002344 364 002376 369 002427 ----------------------------------------------------------- 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