COMPILATION LISTING OF SEGMENT display_mrds_dm Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/23/86 1011.6 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 display_mrds_dm: dmdm: proc; 8 9 10 /* . BEGIN_DESCRIPTION 11* 12* This procedure has two entry points: 13* 1) dmdm the display_mrds_dm command 14* 2) rmdb_rq_dmdm entry point called from rmdb (restructure_mrds_db) ssu_ 15* 16* They both display of the data base model info and support the same control 17* arguments. The dmdm command can be used on pre version 4 type database 18* where as the rmdb_rq_dmdm only works on version 4 databases. 19* 20* The dmdm command errors are displayed using com_err_ and the rmdb_rq_dmdm 21* errors use ssu_$abort_line. 22* 23* Its purpose is to process the control arguments 24* and to then calls the mrds_dm_display routine to do the display work. 25* 26* . END_DESCRIPTION 27**/ 28 29 30 31 /****^ HISTORY COMMENTS: 32* 1) change(85-12-03,Spitzer), approve(85-12-03,MCR7311), 33* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 34* add new control arguments for unreferenced objects and crossreferences. 35* 2) change(86-08-21,Blair), approve(86-08-21,MCR7311), 36* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 37* Put in calls to check whether or not the model is inconsistent and require 38* the user to make the database consistent before he can look at the model. 39* This is necessary because restructuring may have left the database 40* inconsistent. 41* 3) change(86-10-21,Blair), approve(86-10-21,PBF7311), audit(86-10-23,Dupuis), 42* install(86-10-23,MR12.0-1199): 43* Make the clean up on inconsistent database call mrds_rst_$execute_undo 44* instead of rmdb_execute_undo so as to not violate the libraries rule. 45* END HISTORY COMMENTS */ 46 47 48 /* HISTORY 49* 82-05-15 Written by Roger Lackey 50* 83-01-10 Roger Lackey : Modified to call mdbm_util_$get_user_class to not allow non-DBA 51* from displaying a secured database. 52* 53* 83-01-11 Roger Lackey : Added a call to dmd_$get_secured_state to determine 54* if datbase was secured. 55* 56* 83-06-21 Davids: Removed check for old version database and the call 57* to v1 code if it was an old version db (old version dbs can no longer 58* be opened) 59**/ 60 61 /* display_mrds_dm or dmdm command */ 62 63 ep = COMMAND; /* Multics command interface */ 64 65 call init; /* Internal routine */ 66 delete_xref_file_flag = "1"b; 67 68 on cleanup call tidy_up; /* Establish a cleanup handler */ 69 70 rmdb_ctl_ptr = null; 71 72 call cu_$arg_count (nargs); /* Get the number of arguments supplied */ 73 if nargs < 1 then do; /* Must have at least the db path */ 74 call com_err_ (0, my_name, 75 "^/Usage: display_mrds_dm database_path {-control args}"); 76 77 call tidy_up (); 78 return; 79 end; 80 81 call cu_$arg_ptr (1, arg_ptr, arg_len, code); /* Get db path */ 82 if code ^= 0 then call error (code, arg); 83 84 if index (arg, "-") = 1 then call error (error_table_$noarg, 85 "^/First argument must be the data base pathname."); 86 87 /* Determine which version we have */ 88 89 call get_temp_segment_ (my_name, temp_seg_ptr, code); 90 if code ^= 0 then call error (code, "Getting temp segment."); 91 92 work_area_ptr = temp_seg_ptr; 93 wa = empty (); /* Make it an area */ 94 95 call mrds_dsl_get_version$get_path_info (arg, work_area_ptr, 96 mrds_path_info_structure_version, mrds_path_info_ptr, code); 97 98 if mrds_path_info_ptr = null () then 99 dbp = arg; 100 else dbp = mrds_path_info.absolute_path; 101 absolute_database_path = dbp; 102 103 if code ^= 0 then do; 104 if code = mrds_error_$no_model_submodel then /* not db found */ 105 code = mrds_error_$no_database; 106 107 call error (code, "^/" || absolute_database_path); 108 end; 109 110 if mrds_path_info.type.submodel then do; /* not usable via submodels */ 111 call com_err_ (error_table_$badcall, my_name, 112 "^/Data submodels are not supported by this command. ^a", dbp); 113 call tidy_up (); 114 goto exit; 115 end; 116 117 else do; 118 call mdbm_util_$get_user_class ((mrds_path_info.absolute_path), work_area_ptr, 119 mrds_authorization_structure_version, mrds_authorization_ptr, code); 120 if code ^= 0 121 then do; 122 call ioa_$rs ("Unable to determine if you are a DBA for ^a", err_msg, 123 length (err_msg), mrds_path_info.absolute_path); 124 call error (code, err_msg); 125 end; 126 127 if ^mrds_authorization.administrator 128 then do; 129 structure_version = 1; 130 call dmd_$get_secured_state ((mrds_path_info.absolute_path), 131 work_area_ptr, structure_version, database_state_ptr, code); 132 if code ^= 0 then do; 133 err_msg = "Unable to determine data base secured state."; 134 call error (code, err_msg); 135 end; 136 else if database_state.secured then do; 137 138 code = error_table_$insufficient_access; 139 err_msg = "^/The user must be a database administrator to perform this operation on a secured database."; 140 call error (code, err_msg); 141 end; 142 end; 143 144 end; 145 146 call initiate_file_ (dbp, "db_model", R_ACCESS, dbm_ptr, (0), code); /* Assume it is a version 4 or later */ 147 if code = error_table_$moderr then do; 148 call mrds_dm_authorization$set_needed_access (rtrim (dbp), code); /* fails if user not DBA */ 149 if code ^= 0 then 150 code = mrds_error_$no_model_access; 151 else call initiate_file_ (dbp, "db_model", R_ACCESS, dbm_ptr, (0), code); /* Assume it is a version 4 or later */ 152 end; 153 if dbm_ptr = null then call error (mrds_error_$no_database, "^/" || dbp); 154 else terminate_file_flag = "1"b; 155 156 allocate mrds_dm_display_info in (wa) set (mrds_dm_display_info_ptr); 157 158 mrds_dm_display_info.version = MRDS_DM_DISPLAY_INFO_VERSION_1; 159 mrds_dm_display_info.output_iocb_ptr = iox_$user_output; /* May get changed with -of control arg */ 160 mrds_dm_display_info.db_path = absolute_database_path; 161 162 /* A temp dir will be created either under this dir or under the dir supplied 163* by the -temp_dir control arg */ 164 165 temp_dir_father_dir = mrds_dsl_resultant_storage$get_temp_dir (); 166 167 mrds_dm_display_info.work_area_ptr = work_area_ptr; 168 mrds_dm_display_info.dbm_ptr = dbm_ptr; 169 170 string (mrds_dm_display_info.sw) = "0"b; /* Turn off all swiches */ 171 mrds_dm_display_info.sw.default = "1"b; 172 mrds_dm_display_info.dom_name_list_ptr = null; 173 mrds_dm_display_info.attr_name_list_ptr = null; 174 mrds_dm_display_info.rel_name_list_ptr = null; 175 mrds_dm_display_info.index_name_list_ptr = null; 176 mrds_dm_display_info.xref_iocb_ptr = null; 177 178 first_arg_number = 2; /* Cause we had a db pathname */ 179 180 goto common; 181 182 /* ****************** rmdb_rq_dmdm entry point ******************* */ 183 184 rmdb_rq_dmdm: entry (I_sci_ptr, I_rmdb_ctl_ptr); 185 186 /* rmdb_rq_dmdm PARAMETERS */ 187 188 dcl I_sci_ptr ptr parameter; /* Pointer to ssu info structure */ 189 dcl I_rmdb_ctl_ptr ptr parameter; /* Pointer to restructuring control structure */ 190 191 sci_ptr = I_sci_ptr; 192 rmdb_ctl_ptr = I_rmdb_ctl_ptr; 193 ep = REQUEST; 194 195 call init; /* Internal routine */ 196 delete_xref_file_flag = "0"b; 197 198 on cleanup call tidy_up; /* Establish a cleanup handler */ 199 200 if rmdb_ctl.version ^= RMDB_CTL_VERSION_1 then 201 call error (error_table_$unimplemented_version, "rmdb_create_rel_info.incl.pl1"); 202 203 if rmdb_ctl.absolute_db_path = " " then call error (mrds_error_$no_db_path, ""); 204 205 work_area_ptr = rmdb_ctl.work_area_ptr; /* Set wa pointer */ 206 207 allocate mrds_dm_display_info in (wa) set (mrds_dm_display_info_ptr); 208 209 mrds_dm_display_info.version = MRDS_DM_DISPLAY_INFO_VERSION_1; 210 mrds_dm_display_info.output_iocb_ptr = iox_$user_output; /* May get changed with a -of cotrol arg */ 211 mrds_dm_display_info.db_path = rmdb_ctl.absolute_db_path; 212 mrds_dm_display_info.temp_dir_path = rmdb_ctl.temp_dir_path; 213 mrds_dm_display_info.work_area_ptr = rmdb_ctl.work_area_ptr; 214 mrds_dm_display_info.dbm_ptr = rmdb_ctl.db_model_ptr; 215 mrds_dm_display_info.xref_iocb_ptr = rmdb_ctl.crossref_file_info.iocb_ptr; 216 mrds_dm_display_info.xref_name = rmdb_ctl.crossref_file_info.name; 217 218 string (mrds_dm_display_info.sw) = "0"b; /* Turn off all swiches */ 219 mrds_dm_display_info.sw.default = "1"b; 220 mrds_dm_display_info.dom_name_list_ptr = null; 221 mrds_dm_display_info.attr_name_list_ptr = null; 222 mrds_dm_display_info.rel_name_list_ptr = null; 223 mrds_dm_display_info.index_name_list_ptr = null; 224 225 call ssu_$arg_count (sci_ptr, nargs); 226 227 first_arg_number = 1; /* No pathname arg for this entry point */ 228 goto common; 229 230 231 common: 232 233 mrds_control_arg_found = "0"b; 234 235 call mdbm_util_$inconsistent_get_info (mrds_dm_display_info.dbm_ptr, 236 incon_flag, incon_name, incon_message, undo_request); /* See if db is inconsistent */ 237 238 if incon_flag then /* DB is inconsistent */ 239 if ep = COMMAND 240 then do; 241 code = mrds_error_$inconsistent_database; 242 err_msg = incon_message; 243 call error (code, err_msg); 244 end; 245 else call mrds_rst_$execute_undo (sci_ptr, 246 "display_data_model", mrds_dm_display_info.db_path, 247 mrds_dm_display_info.dbm_ptr, incon_name, undo_request); 248 249 do i = first_arg_number to nargs; /* Process all the rest of the args */ 250 251 if ep = COMMAND then do; 252 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 253 if code ^= 0 then call error (code, "Getting arg"); 254 end; 255 else call ssu_$arg_ptr (sci_ptr, i, arg_ptr, arg_len); 256 257 if index (arg, "-") = 1 then do; /* Must be a control arg */ 258 259 if arg = "-cmdb" | arg = "-create_mrds_db" then /* *** -cmdb */ 260 cmdb_arg_found, mrds_dm_display_info.sw.cmdb = "1"b; 261 262 263 else if arg = "-bf" | arg = "-brief" then do; /* *** -brief */ 264 mrds_dm_display_info.sw.default = "0"b; 265 mrds_dm_display_info.sw.long = "0"b; 266 brief_flag = "1"b; 267 end; 268 269 270 else if arg = "-xref" | arg = "-crossref" then do; 271 mrds_control_arg_found = "1"b; 272 if i + 1 > nargs then mrds_dm_display_info.sw.all_xref = "1"b; 273 else do; 274 if ep = COMMAND 275 then call cu_$arg_ptr (i+1, arg_ptr, arg_len, code); 276 else call ssu_$arg_ptr (sci_ptr, i+1, arg_ptr, arg_len); 277 if index (arg, "-") ^= 1 then do; 278 if arg = "all" 279 then mrds_dm_display_info.sw.all_xref = "1"b; 280 else if arg = "dom" | arg = "domain" | arg = "domains" 281 then mrds_dm_display_info.sw.domain_xref = "1"b; 282 else if arg = "attr" | arg = "attribute" | arg = "attributes" 283 then mrds_dm_display_info.sw.attribute_xref = "1"b; 284 else call error (error_table_$bad_arg, "Following -crossref: " || arg); 285 i = i + 1; /* swallow this arg */ 286 end; 287 else mrds_dm_display_info.sw.all_xref = "1"b; 288 end; 289 end; 290 291 else if arg = "-lg" | arg = "-long" then do; /* *** -long */ 292 mrds_dm_display_info.sw.default = "0"b; 293 mrds_dm_display_info.sw.long = "1"b; 294 end; 295 296 297 else if arg = "-of" | arg = "-output_file" then do; /* ** -output_file */ 298 if i + 1 > nargs then call error (error_table_$noarg, 299 "^/No output file name specified."); 300 else do; 301 302 i = i + 1; /* Cause we used an argument */ 303 if ep = COMMAND then do; 304 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 305 if code ^= 0 then call error (code, "Getting arg"); 306 end; 307 else call ssu_$arg_ptr (sci_ptr, i, arg_ptr, arg_len); 308 if index (arg, "-") = 1 then 309 call error (error_table_$bad_subr_arg, arg); 310 else call expand_pathname_ (arg, of_dir, of_ent, code); 311 if code ^= 0 then call error (code, arg); 312 of_path = rtrim (of_dir) || ">" || of_ent; 313 of_flag = "1"b; 314 end; 315 end; /* End output file arg */ 316 317 318 else if arg = "-nof" | arg = "-no_output_file" then /* *** -no_output_file */ 319 of_flag = "0"b; 320 321 else if arg = "-rel" | /* *** -relations */ 322 arg = "-relation" | 323 arg = "-relations" then do; 324 mrds_dm_display_info.sw.relation = "1"b; 325 mrds_control_arg_found = "1"b; 326 if i + 1 <= nargs then do; 327 call build_name_list (i, args_used, mrds_dm_display_info.rel_name_list_ptr); 328 329 i = i + args_used; 330 end; 331 end; 332 333 334 else if arg = "-rn" | arg = "-rel_names" then do; /* *** -rel_names 335* THIS is for compatibility with old display_mrds_dm */ 336 337 mrds_dm_display_info.sw.relation = "1"b; 338 mrds_dm_display_info.sw.names_only = "1"b; 339 mrds_control_arg_found = "1"b; 340 341 if i + 1 <= nargs then do; 342 call build_name_list (i, args_used, mrds_dm_display_info.rel_name_list_ptr); 343 344 i = i + args_used; 345 end; 346 end; 347 348 349 else if arg = "-nm" | /* *** -names */ 350 arg = "-name" | 351 arg = "-names" then 352 mrds_dm_display_info.sw.names_only = "1"b; 353 354 else if arg = "-dom" | /* *** -domains */ 355 arg = "-domains" | 356 arg = "-domain" then do; 357 mrds_control_arg_found, mrds_dm_display_info.domains = "1"b; 358 359 if i + 1 <= nargs then do; 360 call build_name_list (i, args_used, mrds_dm_display_info.dom_name_list_ptr); 361 362 i = i + args_used; 363 if arg = "-unref" | arg = "-unreferenced" 364 then if mrds_dm_display_info.dom_name_list_ptr ^= null 365 then call error (error_table_$inconsistent, "-unreferenced and a name list following -domain"); 366 else do; 367 mrds_dm_display_info.sw.unreferenced_domains = "1"b; 368 i = i + 1; 369 end; 370 end; 371 end; 372 373 374 else if arg = "-attr" | /* *** -attributes */ 375 arg = "-attributes" | 376 arg = "-attribute" then do; 377 mrds_dm_display_info.attribute = "1"b; 378 mrds_control_arg_found = "1"b; 379 380 if i + 1 <= nargs then do; 381 call build_name_list (i, args_used, mrds_dm_display_info.attr_name_list_ptr); 382 383 i = i + args_used; 384 if arg = "-unref" | arg = "-unreferenced" 385 then if mrds_dm_display_info.attr_name_list_ptr ^= null 386 then call error (error_table_$inconsistent, "-unreferenced and a name list following -attribute"); 387 else do; 388 mrds_dm_display_info.sw.unreferenced_attributes = "1"b; 389 i = i + 1; 390 end; 391 end; 392 end; 393 394 395 else if arg = "-ix" | arg = "-index" then do; /* *** -index */ 396 mrds_dm_display_info.index = "1"b; 397 mrds_control_arg_found = "1"b; 398 399 if i + 1 <= nargs then do; 400 call build_name_list (i, args_used, mrds_dm_display_info.index_name_list_ptr); 401 402 i = i + args_used; 403 end; 404 end; 405 406 407 else if arg = "-hist" | arg = "-history" then /* *** -history */ 408 mrds_control_arg_found, mrds_dm_display_info.sw.history = "1"b; 409 410 else if arg = "-header" | arg = "-he" then do; /* **** -header */ 411 mrds_dm_display_info.sw.header = "1"b; 412 mrds_control_arg_found = "1"b; 413 end; 414 415 else if arg = "-no_header" | arg = "-nhe" then do; /* **** -no_header */ 416 mrds_dm_display_info.sw.header = "0"b; 417 no_header_flag = "1"b; 418 end; 419 420 else if arg = "-td" | arg = "-temp_dir" then do; /* *** -temp_dir */ 421 if i + 1 > nargs then call error (error_table_$noarg, 422 "^/No temporary directory path specified."); 423 else do; 424 425 i = i + 1; /* Cause we used an argument */ 426 if ep = COMMAND then do; 427 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 428 if code ^= 0 then call error (code, "Getting arg"); 429 end; 430 else call ssu_$arg_ptr (sci_ptr, i, arg_ptr, arg_len); 431 if index (arg, "-") = 1 then 432 call error (error_table_$bad_subr_arg, arg); 433 else call expand_pathname_ (arg, td_dir, td_ent, code); 434 if code ^= 0 then call error (code, arg); 435 temp_dir_father_dir = rtrim (td_dir) || ">" || td_ent; 436 temp_dir_flag = "1"b; 437 end; 438 end; /* End -temp_dir arg */ 439 440 441 else call error (error_table_$badopt, arg); /* Bad control arg */ 442 end; /* End must be a control arg */ 443 444 else call error (error_table_$bad_arg, arg); 445 446 end; /* End process args */ 447 448 /* Check for compatible control argument */ 449 450 if mrds_dm_display_info.names_only then do; 451 if brief_flag then call error (error_table_$inconsistent, 452 "^/-names and -brief"); 453 if mrds_dm_display_info.sw.long then call error (error_table_$inconsistent, 454 "^/-names and -long"); 455 end; 456 457 if of_flag then do; /* IF -output_file */ 458 of_switch_name = unique_chars_ ("0"b) || ".rmdb.dmdm_of"; 459 of_attach_desc = "vfile_ " || of_path; 460 461 call iox_$attach_name (of_switch_name, out_iocb_ptr, 462 of_attach_desc, null, code); 463 if code ^= 0 then 464 call error (code, "^/Attaching output file: " || of_path); 465 call iox_$open (out_iocb_ptr, STREAM_OUTPUT, "0"b, code); 466 if code ^= 0 then call error (code, "^/Opening output file: " || of_path); 467 mrds_dm_display_info.output_iocb_ptr = out_iocb_ptr; 468 end; 469 470 /* To make compatible with the old dmdm command 471* if only -rel and -long then force the -he */ 472 473 if (^mrds_dm_display_info.sw.domains | 474 ^mrds_dm_display_info.sw.attribute | 475 ^mrds_dm_display_info.sw.index | 476 ^mrds_dm_display_info.sw.relation | 477 ^mrds_dm_display_info.sw.domain_xref | 478 ^mrds_dm_display_info.sw.attribute_xref | 479 ^mrds_dm_display_info.sw.all_xref) & 480 ^no_header_flag & ^mrds_control_arg_found & 481 mrds_dm_display_info.sw.long then mrds_dm_display_info.sw.header = "1"b; 482 483 if ^mrds_control_arg_found & ^cmdb_arg_found then /* Default is -relation */ 484 mrds_dm_display_info.sw.relation = "1"b; 485 486 if cmdb_arg_found & mrds_control_arg_found then /* -cmdb connot be used with anyother mrds control arg */ 487 call error (error_table_$inconsistent, 488 "^/The -cmdb can only be used with -long, -brief and -output_file control arguments."); 489 490 if temp_dir_flag | ep = COMMAND then call create_temp_dir; /* Internal proc */ 491 492 call mrds_dm_display (mrds_dm_display_info_ptr, err_msg, code); /* Go do the work */ 493 494 if code ^= 0 then call error (code, err_msg); 495 496 if ep = REQUEST & mrds_dm_display_info.xref_iocb_ptr ^= null then do; 497 rmdb_ctl.crossref_file_info.iocb_ptr = mrds_dm_display_info.xref_iocb_ptr; 498 rmdb_ctl.crossref_file_info.name = mrds_dm_display_info.xref_name; 499 delete_xref_file_flag = "0"b; 500 end; 501 502 if of_flag then /* If output file */ 503 call adjust_bit_count_ ((of_dir), (of_ent), "1"b, bcnt, code); 504 if code ^= 0 then call error (code, rtrim (of_dir) || ">" || of_ent); 505 506 call tidy_up; /* Clean up after our self */ 507 exit: return; 508 509 /* * * * * * * * * * * * * * init * * * * * * * * * * * * * * */ 510 511 init: proc; 512 513 my_name = "display_mrds_dm"; /* Init for cleanup */ 514 out_iocb_ptr = null; 515 mrds_dm_display_info_ptr = null; 516 temp_seg_ptr = null; 517 temp_dir_flag = "0"b; 518 of_flag = "0"b; 519 cmdb_arg_found = "0"b; 520 brief_flag = "0"b; 521 no_header_flag = "0"b; 522 err_flag = "0"b; 523 we_made_temp_dir_flag = "0"b; 524 terminate_file_flag = "0"b; 525 526 end init; 527 528 /* * * * * * * * * * * * create_temp_dir * * * * * * * * * * * * * * * */ 529 530 create_temp_dir: proc; 531 532 /* Create a temporary directory for use by the display routine. 533* Also create a segment under the temparory dir and make it an area for use by 534* the display routine. */ 535 536 temp_dir_name = unique_chars_ ("0"b) || ".mrds.dmdm"; 537 538 we_made_temp_dir_flag = "1"b; /* Remember we created it */ 539 540 call hcs_$append_branchx (temp_dir_father_dir, temp_dir_name, 01011b, /* sma acl's */ 541 rings, get_group_id_$tag_star (), 542 1 /* directory */, 543 0 /* copy sw */, 544 0 /* bit count */, 545 code); 546 if code ^= 0 then 547 call error (code, "^/Temporary directory: " || temp_dir_father_dir); 548 549 mrds_dm_display_info.temp_dir_path = rtrim (temp_dir_father_dir) || ">" || 550 temp_dir_name; 551 552 end create_temp_dir; 553 554 /* * * * * * * * * * * * * build_name_list * * * * * * * * * */ 555 556 build_name_list: proc (start_arg, number_args_used, assigned_name_list_ptr); 557 558 dcl assigned_name_list_ptr ptr parameter; 559 dcl number_args_used fixed bin parameter; 560 dcl start_arg fixed bin parameter; 561 562 last_arg_num = start_arg; 563 name_list_ptr = null; 564 number_args_used = 0; 565 566 if start_arg + 1 <= nargs then do; 567 568 if ep = COMMAND then do; 569 call cu_$arg_ptr (last_arg_num + 1, arg_ptr, arg_len, code); 570 if code ^= 0 then call error (code, "Getting arg"); 571 end; 572 else call ssu_$arg_ptr (sci_ptr, last_arg_num + 1, arg_ptr, arg_len); 573 if index (arg, "-") ^= 1 then do; /* Not a control arg */ 574 575 num_names_alloc = nargs - start_arg; 576 allocate name_list in (wa) set (name_list_ptr); 577 name_list.num_names = 0; 578 no_more_names = "0"b; 579 580 do while (^no_more_names & last_arg_num + 1 <= nargs); 581 582 if ep = COMMAND then do; 583 call cu_$arg_ptr (last_arg_num + 1, arg_ptr, arg_len, code); 584 if code ^= 0 then call error (code, "Getting arg"); 585 end; 586 else call ssu_$arg_ptr (sci_ptr, last_arg_num + 1, arg_ptr, arg_len); 587 if index (arg, "-") = 1 then no_more_names = "1"b; 588 else do; 589 if arg_len > 32 then call error (mrds_error_$rst_name_too_long, "^/" || arg || 590 "^/Names are limited to 32 characters."); 591 name_list.num_names = name_list.num_names + 1; 592 name_list.name (name_list.num_names) = arg; 593 last_arg_num = last_arg_num + 1; /* Cause we used an argument */ 594 number_args_used = number_args_used + 1; 595 end; 596 end; 597 598 end; /* Not a control arg */ 599 600 end; /* End if last_arg_num+1 >nargs */ 601 602 assigned_name_list_ptr = name_list_ptr; 603 604 end build_name_list; 605 606 /* * * * * * * * * * * * * error * * * * * * * * * * * * * */ 607 608 error: proc (err_code, err_message); /* Error procedure for rmdb_create_relation.pl1 */ 609 610 dcl err_code fixed bin (35); 611 dcl err_message char (*); 612 dcl saved_code fixed bin (35); 613 dcl ssu_$abort_line entry () options (variable); 614 615 err_flag = "1"b; 616 saved_code = err_code; 617 618 call tidy_up; 619 if ep = REQUEST then 620 call ssu_$abort_line (sci_ptr, saved_code, err_message); 621 622 else call com_err_ (saved_code, my_name, err_message); 623 goto exit; 624 625 626 end error; 627 628 629 /* * * * * * * * * * * * * tidy_up * * * * * * * * * * * * * */ 630 631 tidy_up: proc; 632 /* Cleanup request allocations if any */ 633 634 if ep = REQUEST & mrds_dm_display_info_ptr ^= null then do; 635 636 if mrds_dm_display_info.dom_name_list_ptr ^= null then 637 free mrds_dm_display_info.dom_name_list_ptr -> name_list; 638 if mrds_dm_display_info.attr_name_list_ptr ^= null then 639 free mrds_dm_display_info.attr_name_list_ptr -> name_list; 640 if mrds_dm_display_info.rel_name_list_ptr ^= null then 641 free mrds_dm_display_info.rel_name_list_ptr -> name_list; 642 if mrds_dm_display_info.index_name_list_ptr ^= null then 643 free mrds_dm_display_info.index_name_list_ptr -> name_list; 644 645 free mrds_dm_display_info; 646 647 end; 648 649 if delete_xref_file_flag & mrds_dm_display_info_ptr ^= null 650 then if ep = COMMAND 651 then call mu_db_xref$xref_destroy (mrds_dm_display_info_ptr, mrds_dm_display_info.temp_dir_path, 652 mrds_dm_display_info.xref_name, (""), (0)); 653 else call mu_db_xref$xref_destroy (rmdb_ctl.crossref_file_info.iocb_ptr, 654 rmdb_ctl.temp_dir_path, rmdb_ctl.crossref_file_info.name, (""), (0)); 655 656 if temp_seg_ptr ^= null then 657 call release_temp_segment_ (my_name, temp_seg_ptr, (0)); 658 659 if we_made_temp_dir_flag then do; /* If we created it we need to delete it */ 660 661 call hcs_$del_dir_tree (temp_dir_father_dir, temp_dir_name, code); /* Remove entries below it */ 662 if code = error_table_$notadir | code = 0 then 663 call hcs_$delentry_file (temp_dir_father_dir, temp_dir_name, (0)); 664 end; 665 666 if out_iocb_ptr ^= null then do; /* Output file cleanup */ 667 668 call close_file (out_iocb_ptr); 669 if err_flag then /* If an error occured delete it too */ 670 call delete_$path (of_dir, of_ent, "100100"b, "rmdb_rq_dmdm", (0)); 671 end; 672 673 if dbm_ptr ^= null & terminate_file_flag then do; /* db_model file cleanup */ 674 call terminate_file_ (dbm_ptr, 0, TERM_FILE_TERM, (0)); 675 terminate_file_flag = "0"b; 676 end; 677 678 return; 679 680 close_file: 681 proc (p); 682 683 dcl p ptr parameter; 684 685 if p ^= null then do; 686 call iox_$close (p, (0)); 687 call iox_$detach_iocb (p, (0)); 688 call iox_$destroy_iocb (p, (0)); 689 end; 690 691 return; 692 end close_file; 693 694 end tidy_up; 695 696 dcl absolute_database_path char (168); 697 dcl adjust_bit_count_ entry (char (168) aligned, char (32) aligned, bit (1) aligned, fixed bin (35), fixed bin (35)); 698 dcl arg char (arg_len) based (arg_ptr); 699 dcl args_used fixed bin; 700 dcl arg_len fixed bin (21); 701 dcl arg_ptr ptr; 702 dcl bcnt fixed bin (35); 703 dcl brief_flag bit (1); 704 dcl cleanup condition; 705 dcl cmdb_arg_found bit (1); 706 dcl code fixed bin (35); 707 dcl COMMAND fixed bin static options (constant) init (1); 708 dcl com_err_ entry () options (variable); 709 dcl cu_$arg_count entry (fixed bin); 710 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 711 dcl dbm_ptr ptr; 712 dcl dbp char (168); 713 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)); 714 dcl delete_xref_file_flag bit (1) aligned; 715 dcl dmd_$get_secured_state entry (char (*), ptr, fixed bin, ptr, fixed bin (35)); 716 dcl empty builtin; 717 dcl ep fixed bin; 718 dcl error_table_$insufficient_access fixed bin (35) ext static; 719 dcl error_table_$badcall fixed bin (35) ext static; 720 dcl error_table_$badopt fixed bin (35) ext static; 721 dcl error_table_$bad_arg fixed bin (35) ext static; 722 dcl error_table_$bad_subr_arg fixed bin (35) ext static; 723 dcl error_table_$inconsistent fixed bin (35) ext static; 724 dcl error_table_$moderr fixed bin (35) ext static; 725 dcl error_table_$noarg fixed bin (35) ext static; 726 dcl error_table_$notadir fixed bin (35) ext static; 727 dcl error_table_$unimplemented_version fixed bin (35) ext static; 728 dcl err_flag bit (1); 729 dcl err_msg char (256); 730 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 731 dcl first_arg_number fixed bin; 732 dcl get_group_id_$tag_star entry () returns (char (32)); 733 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 734 dcl hcs_$append_branchx entry (char (*), char (*), fixed bin (5), (3) fixed bin (3), char (*), fixed bin (1), fixed bin (1), fixed bin (24), fixed bin (35)); 735 dcl hcs_$delentry_file entry (char (*), char (*), fixed bin (35)); 736 dcl hcs_$del_dir_tree entry (char (*), char (*), fixed bin (35)); 737 dcl i fixed bin; 738 dcl incon_flag bit (1); 739 dcl incon_message char (200); 740 dcl incon_name char (32); 741 dcl index builtin; 742 dcl initiate_file_ entry (char(*), char(*), bit(*), ptr, fixed bin(24), fixed bin(35)); 743 dcl ioa_$rs entry () options (variable); 744 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 745 dcl iox_$close entry (ptr, fixed bin (35)); 746 dcl iox_$destroy_iocb entry (ptr, fixed bin (35)); 747 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 748 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 749 dcl iox_$user_output ptr ext static; 750 dcl last_arg_num fixed bin; 751 dcl length builtin; 752 dcl mdbm_util_$get_user_class entry (char (*), ptr, fixed bin, ptr, fixed bin (35)); 753 dcl mdbm_util_$inconsistent_get_info entry options(variable); 754 dcl mrds_control_arg_found bit (1); 755 dcl mrds_dm_authorization$set_needed_access entry (char (*), fixed bin (35)); 756 dcl mrds_dm_display entry (ptr, char (*), fixed bin (35)); 757 dcl mrds_dsl_get_version$get_path_info entry (char (*), ptr, fixed bin, ptr, fixed bin (35)); 758 dcl mrds_dsl_resultant_storage$get_temp_dir entry () returns (char (168)); 759 dcl mrds_error_$inconsistent_database fixed bin (35) ext static; 760 dcl mrds_error_$no_database fixed bin (35) ext static; 761 dcl mrds_error_$no_db_path fixed bin (35) ext static; 762 dcl mrds_error_$no_model_access fixed bin (35) ext static; 763 dcl mrds_error_$no_model_submodel fixed bin (35) ext static; 764 dcl mrds_error_$rst_name_too_long fixed bin (35) ext static; 765 dcl mu_db_xref$xref_destroy entry (ptr, char (*), char (*), char (*), fixed bin (35)); 766 dcl my_name char (16); 767 dcl nargs fixed bin; 768 dcl no_header_flag bit (1); 769 dcl no_more_names bit (1); 770 dcl null builtin; 771 dcl of_attach_desc char (200); 772 dcl of_dir char (168); 773 dcl of_ent char (32); 774 dcl of_flag bit (1); 775 dcl of_path char (168); 776 dcl of_switch_name char (32); 777 dcl out_iocb_ptr ptr; 778 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 779 dcl REQUEST fixed bin static options (constant) init (2); 780 dcl rings (3) fixed bin (3) init ((3) 7); 781 dcl mrds_rst_$execute_undo entry (ptr, char (32), char (168), ptr, char (32), char (100)); 782 dcl rtrim builtin; 783 dcl sci_ptr ptr; 784 dcl ssu_$arg_count entry (ptr, fixed bin); 785 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 786 dcl STREAM_OUTPUT int static options (constant) init (2); 787 dcl string builtin; 788 dcl structure_version fixed bin; 789 dcl sys_info$max_seg_size fixed bin (35) ext static; 790 dcl td_dir char (168); 791 dcl td_ent char (32); 792 dcl temp_dir_father_dir char (168); 793 dcl temp_dir_flag bit (1); 794 dcl temp_dir_name char (32); 795 dcl temp_seg_ptr ptr; 796 dcl terminate_file_ entry (ptr, fixed bin(24), bit(*), fixed bin(35)); 797 dcl terminate_file_flag bit (1) aligned; 798 dcl undo_request char (100); 799 dcl unique_chars_ entry (bit (*)) returns (char (15)); 800 dcl wa area (sys_info$max_seg_size) based (work_area_ptr); 801 dcl we_made_temp_dir_flag bit (1); 802 dcl work_area_ptr ptr; 803 804 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 805 806 2 1 /* BEGIN - mrds_rmdb_ctl.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(82-03-26,Davids), approve(), audit(), install(): 2 7* created 2 8* 2) change(82-05-26,Davids), approve(), audit(), install(): 2 9* added db_model_ptr 2 10* 3) change(82-06-09,Harvey), approve(), audit(), install(): 2 11* deleted ssu_ routines ptr storage 2 12* 4) change(82-08-20,Davids), approve(), audit(), install(): 2 13* added the relmgr like reference and included the rmdb_relmgr_entries 2 14* include file 2 15* 5) change(83-05-24,Davids), approve(), audit(), install(): 2 16* added the saved_res_version_ptr element 2 17* 6) change(84-10-23,Benjamin), approve(), audit(), install(): 2 18* added flags (just database_readied_by_rmdb for now). 2 19* 7) change(85-11-08,Spitzer), approve(85-11-08,MCR7311), 2 20* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 2 21* added crossref_file_info. 2 22* END HISTORY COMMENTS */ 2 23 2 24 2 25 dcl 01 rmdb_ctl based (rmdb_ctl_ptr), 2 26 02 version fixed bin, 2 27 02 rmdb_version char (16) varying, 2 28 02 absolute_db_path char (168), 2 29 02 temp_dir_path char (168), 2 30 02 work_area_ptr ptr, 2 31 02 db_model_ptr ptr, 2 32 02 saved_res_version_ptr ptr, 2 33 02 crossref_file_info, 2 34 03 iocb_ptr ptr, 2 35 03 name char (32), 2 36 02 relmgr_entries like rmdb_relmgr_entries, 2 37 02 flags, 2 38 03 database_readied_by_rmdb bit (1) unal, 2 39 03 unused bit (35) unal; 2 40 2 41 dcl RMDB_CTL_VERSION_1 fixed bin init (1) internal static options (constant); 2 42 2 43 dcl rmdb_ctl_ptr ptr; 2 44 2 45 3 1 /* START OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(82-08-20,Davids), approve(), audit(), install(): 3 6* written 3 7* 2) change(86-01-28,Spitzer), approve(86-01-28,MCR7311), 3 8* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 3 9* add get_tuples_by_spec, put_tuple, put_tuples, create_cursor entry points. 3 10* 3) change(86-08-21,Blair), approve(86-08-21,MCR7311), 3 11* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 3 12* Back out the entries get_tuples_by_spec and put_tuples since they aren't 3 13* sufficiently well tested to be reliable. Replace with get_tuple_id and 3 14* get_tuple_by_id. 3 15* END HISTORY COMMENTS */ 3 16 3 17 3 18 dcl 01 rmdb_relmgr_entries based (rmdb_relmgr_entries_ptr), 3 19 02 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, 3 20 bit (36) aligned, fixed bin (35)), 3 21 02 delete_relation entry (char (*), char (*), fixed bin (35)), 3 22 02 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 3 23 02 close entry (bit (36) aligned, fixed bin (35)), 3 24 02 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), 3 25 bit (36) aligned, fixed bin (35)), 3 26 02 delete_index entry (bit (36) aligned, bit (36) aligned, fixed bin (35)), 3 27 02 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 3 28 02 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 3 29 02 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 3 30 02 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)); 3 31 3 32 dcl rmdb_relmgr_entries_ptr ptr; 3 33 3 34 /* END OF: rmdb_relmgr_entries.incl.pl1 * * * * * * * * * * * * * * * * */ 2 46 2 47 2 48 2 49 /* END - mrds_rmdb_ctl.incl.pl1 */ 807 808 4 1 /* BEGIN INCLUDE mrds_dm_display_info.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(85-12-07,Spitzer), approve(85-12-07,MCR7311), 4 7* audit(86-09-02,Blair), install(86-10-16,MR12.0-1187): 4 8* Add flag fields for unreferenced objects and crossrefs. 4 9* END HISTORY COMMENTS */ 4 10 4 11 4 12 dcl 1 mrds_dm_display_info aligned based (mrds_dm_display_info_ptr), 4 13 2 version fixed bin, 4 14 2 output_iocb_ptr ptr, /* Output iocb pointer */ 4 15 2 db_path char (168) unal, /* Absolute pathname of the database */ 4 16 2 temp_dir_path char (168) unal, /* Absolute pathname of temp dir */ 4 17 2 work_area_ptr ptr, /* Pointer to freeing area */ 4 18 2 dbm_ptr ptr, /* Pointer to the db_model of the database */ 4 19 2 sw, /* Control switches */ 4 20 3 default bit (1) unal, /* Neither -long or -brief */ 4 21 3 long bit (1) unal, /* On = long mode */ 4 22 3 cmdb bit (1) unal, /* On = cmdb type output */ 4 23 3 names_only bit (1) unal, /* Only the name for either relation, attribute, domain, index 4 24* name_list is pointer to by mrds_dm_display_info.name_list_ptr */ 4 25 3 domains bit (1) unal, /* Domain info only */ 4 26 3 attribute bit (1) unal, /* Attibute info only */ 4 27 3 relation bit (1) unal, /* Relation info only */ 4 28 3 index bit (1) unal, /* Index relation info only */ 4 29 3 history bit (1) unal, /* On = list history */ 4 30 3 header bit (1) unal, /* On = display header */ 4 31 3 unreferenced_domains bit (1) unal, /* On = display only unreferenced domains */ 4 32 3 unreferenced_attributes bit (1) unal, /* On = display only unreferenced attributes */ 4 33 3 domain_xref bit (1) unal, /* On = display a domain crossreference */ 4 34 3 attribute_xref bit (1) unal, /* On = display an attribute crossreference */ 4 35 3 all_xref bit (1) unal, /* On = display a complete crossreference */ 4 36 3 mbz bit (21) unal, /* Unnused must be zeros */ 4 37 /* The following are pointer to name list like 4 38* name_list structure below */ 4 39 4 40 2 dom_name_list_ptr ptr, /* Pointer to domain name list */ 4 41 2 attr_name_list_ptr ptr, /* Pointer to attribute name list */ 4 42 2 rel_name_list_ptr ptr, /* Pointer to relation name list */ 4 43 2 index_name_list_ptr ptr, /* Pointer to index rel name list */ 4 44 4 45 2 xref_iocb_ptr ptr, /* Pointer to database xref */ 4 46 2 xref_name char (32) unaligned; /* Name of xref file created */ 4 47 4 48 dcl 1 name_list aligned based (name_list_ptr), /* General name list */ 4 49 2 num_names fixed bin, /* Number of names in list */ 4 50 2 name (num_names_alloc refer (name_list.num_names)) char (32); 4 51 4 52 dcl mrds_dm_display_info_ptr pointer; 4 53 dcl name_list_ptr pointer; 4 54 dcl MRDS_DM_DISPLAY_INFO_VERSION_1 int static options (constant) init (1); 4 55 dcl num_names_alloc fixed bin; 4 56 4 57 /* END INCLUDE mrds_dm_display_info.incl.pl1 */ 809 810 5 1 /* BEGIN INCLUDE FILE mrds_path_info.incl.pl1 - - Jim Gray 81-01-22 */ 5 2 5 3 /* HISTORY: 5 4* 5 5* 81-01-22 Jim Gray : originaly created for the dsl_$get_path_info interface, 5 6* a slight extension to the undocumented mrds_dsl_get_version$header. 5 7* 5 8**/ 5 9 5 10 /* DESCRIPTION: 5 11* 5 12* This structure returns information about a relative pathname, given 5 13* to a pathname accepting mrds interface. The information returned 5 14* is the absolute pathname, plus in the case that 5 15* the relative path points to a mrds database or submodel 5 16* whether it is a model or a submodel, the mrds version of 5 17* the model or submodel, it's creator, and the time of creation. 5 18* 5 19**/ 5 20 5 21 5 22 declare 1 mrds_path_info aligned based (mrds_path_info_ptr), 5 23 2 version fixed bin, /* version number for this structure */ 5 24 2 absolute_path char (168), /* the absolute path from the input relative path */ 5 25 2 type, 5 26 3 not_mrds bit (1) unal, /* on => path not to model or submodel */ 5 27 3 model bit (1) unal, /* on => path to database model, thus possible .db suffix */ 5 28 3 submodel bit (1) unal, /* on => path to submodel, thus possible .dsm suffix */ 5 29 3 mbz1 bit (33) unal, 5 30 2 mrds_version fixed bin, /* the mrds version number of the model or submodel */ 5 31 2 creator_id char (32), /* the person.project.tag of the creator */ 5 32 2 creation_time fixed bin (71), /* convert date to binary form of time model/submodel created */ 5 33 2 mbz2 bit (36) unal ; 5 34 5 35 5 36 declare mrds_path_info_ptr ptr ; 5 37 5 38 declare mrds_path_info_structure_version fixed bin init (1) int static options (constant) ; 5 39 5 40 /* END INCLUDE FILE mrds_path_info.incl.pl1 */ 811 812 6 1 /* BEGIN INCLUDE FILE mrds_authorization.incl.pl1 - - 81-01-20 Jim Gray */ 6 2 6 3 /* HISTORY: 6 4* 6 5* 81-01-20 Jim Gray : original created for the mmi_$get_authorization interface 6 6* 6 7**/ 6 8 6 9 /* DESCRIPTION: 6 10* 6 11* this structure returns the callers user_class 6 12* either database administrator or normal user. 6 13* Note that these separate classes were used to allow 6 14* future expansion to the user classes, rather than 6 15* make them logical "not"'s of one another. 6 16* NOTE: a DBA is always also a normal user, thus if the caller 6 17* is a DBA, his normal_user bit will be on also. 6 18* 6 19**/ 6 20 6 21 6 22 declare 1 mrds_authorization aligned based (mrds_authorization_ptr), 6 23 2 version fixed bin, /* version number of this structure */ 6 24 2 administrator bit (1) unal, /* caller is a DBA */ 6 25 2 normal_user bit (1) unal, /* caller has no special priviledges */ 6 26 2 mbz bit (34) unal ; 6 27 6 28 6 29 declare mrds_authorization_ptr ptr ; /* pointer for referring to the structure */ 6 30 6 31 declare mrds_authorization_structure_version fixed bin init (1) int static options (constant) ; 6 32 6 33 /* END INCLUDE FILE mrds_authorization.incl.pl1 */ 813 814 7 1 /* BEGIN INCLUDE FILE mrds_database_state.incl.pl1 - - 81-01-20 Jim Gray */ 7 2 7 3 /* HISTORY: 7 4* 7 5* 81-01-20 Jim Gray : original created for the mmi_$get_secured_status interface 7 6* 7 7**/ 7 8 7 9 /* DESCRIPTION: 7 10* 7 11* This structure returns the database state (secured or unsecured) 7 12* for determining how commands and subroutines will behave for each case. 7 13* The secured bit was kept separate from the unsecured, 7 14* rather than it's logical "not", to allow for future extensibility 7 15* of database secured states. 7 16* 7 17**/ 7 18 7 19 7 20 declare 1 database_state aligned based (database_state_ptr), 7 21 2 version fixed bin, /* version number of this structure */ 7 22 2 unsecured bit (1) unal, /* database not secured */ 7 23 2 secured bit (1) unal, /* database has been secured */ 7 24 2 mbz bit (34) unal ; 7 25 7 26 7 27 declare database_state_ptr ptr ; /* pointer for referring to the structure */ 7 28 7 29 declare database_state_structure_version fixed bin init (1) int static options (constant) ; 7 30 7 31 /* END INCLUDE FILE mrds_database_state.incl.pl1 */ 815 816 8 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 8 2 /* format: style2,^inddcls,idind32 */ 8 3 8 4 declare 1 terminate_file_switches based, 8 5 2 truncate bit (1) unaligned, 8 6 2 set_bc bit (1) unaligned, 8 7 2 terminate bit (1) unaligned, 8 8 2 force_write bit (1) unaligned, 8 9 2 delete bit (1) unaligned; 8 10 8 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 8 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 8 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 8 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 8 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 8 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 8 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 8 18 8 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 817 818 819 end display_mrds_dm; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/23/86 1007.6 display_mrds_dm.pl1 >spec>install>1199>display_mrds_dm.pl1 805 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 807 2 10/17/86 1404.4 mrds_rmdb_ctl.incl.pl1 >ldd>include>mrds_rmdb_ctl.incl.pl1 2-46 3 10/17/86 1404.6 rmdb_relmgr_entries.incl.pl1 >ldd>include>rmdb_relmgr_entries.incl.pl1 809 4 10/17/86 1404.5 mrds_dm_display_info.incl.pl1 >ldd>include>mrds_dm_display_info.incl.pl1 811 5 10/14/83 1608.8 mrds_path_info.incl.pl1 >ldd>include>mrds_path_info.incl.pl1 813 6 10/14/83 1608.8 mrds_authorization.incl.pl1 >ldd>include>mrds_authorization.incl.pl1 815 7 10/14/83 1608.8 mrds_database_state.incl.pl1 >ldd>include>mrds_database_state.incl.pl1 817 8 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. COMMAND constant fixed bin(17,0) initial dcl 707 ref 63 238 251 274 303 426 490 568 582 649 I_rmdb_ctl_ptr parameter pointer dcl 189 ref 184 192 I_sci_ptr parameter pointer dcl 188 ref 184 191 MRDS_DM_DISPLAY_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 4-54 ref 158 209 REQUEST constant fixed bin(17,0) initial dcl 779 ref 193 496 619 634 RMDB_CTL_VERSION_1 constant fixed bin(17,0) initial dcl 2-41 ref 200 R_ACCESS 000065 constant bit(3) initial unaligned dcl 1-11 set ref 146* 151* STREAM_OUTPUT 000071 constant fixed bin(17,0) initial dcl 786 set ref 465* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 8-14 set ref 674* absolute_database_path 000100 automatic char(168) unaligned dcl 696 set ref 101* 107 160 absolute_db_path 6 based char(168) level 2 packed unaligned dcl 2-25 ref 203 211 absolute_path 1 based char(168) level 2 dcl 5-22 set ref 100 118 122* 130 adjust_bit_count_ 000010 constant entry external dcl 697 ref 502 administrator 1 based bit(1) level 2 packed unaligned dcl 6-22 ref 127 all_xref 134(14) based bit(1) level 3 packed unaligned dcl 4-12 set ref 272* 278* 287* 473 arg based char unaligned dcl 698 set ref 82* 84 95* 98 257 259 259 263 263 270 270 277 278 280 280 280 282 282 282 284 291 291 297 297 308 308* 310* 311* 318 318 321 321 321 334 334 349 349 349 354 354 354 363 363 374 374 374 384 384 395 395 407 407 410 410 415 415 420 420 431 431* 433* 434* 441* 444* 573 587 589 592 arg_len 000153 automatic fixed bin(21,0) dcl 700 set ref 81* 82 82 84 95 95 98 252* 255* 257 259 259 263 263 270 270 274* 276* 277 278 280 280 280 282 282 282 284 291 291 297 297 304* 307* 308 308 308 310 310 311 311 318 318 321 321 321 334 334 349 349 349 354 354 354 363 363 374 374 374 384 384 395 395 407 407 410 410 415 415 420 420 427* 430* 431 431 431 433 433 434 434 441 441 444 444 569* 572* 573 583* 586* 587 589 589 592 arg_ptr 000154 automatic pointer dcl 701 set ref 81* 82 84 95 98 252* 255* 257 259 259 263 263 270 270 274* 276* 277 278 280 280 280 282 282 282 284 291 291 297 297 304* 307* 308 308 310 311 318 318 321 321 321 334 334 349 349 349 354 354 354 363 363 374 374 374 384 384 395 395 407 407 410 410 415 415 420 420 427* 430* 431 431 433 434 441 444 569* 572* 573 583* 586* 587 589 592 args_used 000152 automatic fixed bin(17,0) dcl 699 set ref 327* 329 342* 344 360* 362 381* 383 400* 402 assigned_name_list_ptr parameter pointer dcl 558 set ref 556 602* attr_name_list_ptr 140 based pointer level 2 dcl 4-12 set ref 173* 221* 381* 384 638 638 attribute 134(05) based bit(1) level 3 packed unaligned dcl 4-12 set ref 377* 473 attribute_xref 134(13) based bit(1) level 3 packed unaligned dcl 4-12 set ref 282* 473 bcnt 000156 automatic fixed bin(35,0) dcl 702 set ref 502* brief_flag 000157 automatic bit(1) unaligned dcl 703 set ref 266* 451 520* cleanup 000160 stack reference condition dcl 704 ref 68 198 cmdb 134(02) based bit(1) level 3 packed unaligned dcl 4-12 set ref 259* cmdb_arg_found 000166 automatic bit(1) unaligned dcl 705 set ref 259* 483 486 519* code 000167 automatic fixed bin(35,0) dcl 706 set ref 81* 82 82* 89* 90 90* 95* 103 104 104* 107* 118* 120 124* 130* 132 134* 138* 140* 146* 147 148* 149 149* 151* 241* 243* 252* 253 253* 274* 304* 305 305* 310* 311 311* 427* 428 428* 433* 434 434* 461* 463 463* 465* 466 466* 492* 494 494* 502* 504 504* 540* 546 546* 569* 570 570* 583* 584 584* 661* 662 662 com_err_ 000012 constant entry external dcl 708 ref 74 111 622 crossref_file_info 140 based structure level 2 unaligned dcl 2-25 cu_$arg_count 000014 constant entry external dcl 709 ref 72 cu_$arg_ptr 000016 constant entry external dcl 710 ref 81 252 274 304 427 569 583 database_state based structure level 1 dcl 7-20 database_state_ptr 001136 automatic pointer dcl 7-27 set ref 130* 136 db_model_ptr 134 based pointer level 2 dcl 2-25 ref 214 db_path 4 based char(168) level 2 packed unaligned dcl 4-12 set ref 160* 211* 245* dbm_ptr 132 based pointer level 2 in structure "mrds_dm_display_info" dcl 4-12 in procedure "dmdm" set ref 168* 214* 235* 245* dbm_ptr 000170 automatic pointer dcl 711 in procedure "dmdm" set ref 146* 151* 153 168 673 674* dbp 000172 automatic char(168) unaligned dcl 712 set ref 98* 100* 101 111* 146* 148 148 151* 153 default 134 based bit(1) level 3 packed unaligned dcl 4-12 set ref 171* 219* 264* 292* delete_$path 000020 constant entry external dcl 713 ref 669 delete_xref_file_flag 000244 automatic bit(1) dcl 714 set ref 66* 196* 499* 649 dmd_$get_secured_state 000022 constant entry external dcl 715 ref 130 dom_name_list_ptr 136 based pointer level 2 dcl 4-12 set ref 172* 220* 360* 363 636 636 domain_xref 134(12) based bit(1) level 3 packed unaligned dcl 4-12 set ref 280* 473 domains 134(04) based bit(1) level 3 packed unaligned dcl 4-12 set ref 357* 473 empty builtin function dcl 716 ref 93 ep 000245 automatic fixed bin(17,0) dcl 717 set ref 63* 193* 238 251 274 303 426 490 496 568 582 619 634 649 err_code parameter fixed bin(35,0) dcl 610 ref 608 616 err_flag 000246 automatic bit(1) unaligned dcl 728 set ref 522* 615* 669 err_message parameter char unaligned dcl 611 set ref 608 619* 622* err_msg 000247 automatic char(256) unaligned dcl 729 set ref 122* 122 122 124* 133* 134* 139* 140* 242* 243* 492* 494* error_table_$bad_arg 000032 external static fixed bin(35,0) dcl 721 set ref 284* 444* error_table_$bad_subr_arg 000034 external static fixed bin(35,0) dcl 722 set ref 308* 431* error_table_$badcall 000026 external static fixed bin(35,0) dcl 719 set ref 111* error_table_$badopt 000030 external static fixed bin(35,0) dcl 720 set ref 441* error_table_$inconsistent 000036 external static fixed bin(35,0) dcl 723 set ref 363* 384* 451* 453* 486* error_table_$insufficient_access 000024 external static fixed bin(35,0) dcl 718 ref 138 error_table_$moderr 000040 external static fixed bin(35,0) dcl 724 ref 147 error_table_$noarg 000042 external static fixed bin(35,0) dcl 725 set ref 84* 298* 421* error_table_$notadir 000044 external static fixed bin(35,0) dcl 726 ref 662 error_table_$unimplemented_version 000046 external static fixed bin(35,0) dcl 727 set ref 200* expand_pathname_ 000050 constant entry external dcl 730 ref 310 433 first_arg_number 000347 automatic fixed bin(17,0) dcl 731 set ref 178* 227* 249 get_group_id_$tag_star 000052 constant entry external dcl 732 ref 540 540 get_temp_segment_ 000054 constant entry external dcl 733 ref 89 hcs_$append_branchx 000056 constant entry external dcl 734 ref 540 hcs_$del_dir_tree 000062 constant entry external dcl 736 ref 661 hcs_$delentry_file 000060 constant entry external dcl 735 ref 662 header 134(09) based bit(1) level 3 packed unaligned dcl 4-12 set ref 411* 416* 473* history 134(08) based bit(1) level 3 packed unaligned dcl 4-12 set ref 407* i 000350 automatic fixed bin(17,0) dcl 737 set ref 249* 252* 255* 272 274 276 285* 285 298 302* 302 304* 307* 326 327* 329* 329 341 342* 344* 344 359 360* 362* 362 368* 368 380 381* 383* 383 389* 389 399 400* 402* 402 421 425* 425 427* 430* incon_flag 000351 automatic bit(1) unaligned dcl 738 set ref 235* 238 incon_message 000352 automatic char(200) unaligned dcl 739 set ref 235* 242 incon_name 000434 automatic char(32) unaligned dcl 740 set ref 235* 245* index builtin function dcl 741 in procedure "dmdm" ref 84 257 277 308 431 573 587 index 134(07) based bit(1) level 3 in structure "mrds_dm_display_info" packed unaligned dcl 4-12 in procedure "dmdm" set ref 396* 473 index_name_list_ptr 144 based pointer level 2 dcl 4-12 set ref 175* 223* 400* 642 642 initiate_file_ 000064 constant entry external dcl 742 ref 146 151 ioa_$rs 000066 constant entry external dcl 743 ref 122 iocb_ptr 140 based pointer level 3 dcl 2-25 set ref 215 497* 653* iox_$attach_name 000070 constant entry external dcl 744 ref 461 iox_$close 000072 constant entry external dcl 745 ref 686 iox_$destroy_iocb 000074 constant entry external dcl 746 ref 688 iox_$detach_iocb 000076 constant entry external dcl 747 ref 687 iox_$open 000100 constant entry external dcl 748 ref 465 iox_$user_output 000102 external static pointer dcl 749 ref 159 210 last_arg_num 000444 automatic fixed bin(17,0) dcl 750 set ref 562* 569 572 580 583 586 593* 593 length builtin function dcl 751 ref 122 122 long 134(01) based bit(1) level 3 packed unaligned dcl 4-12 set ref 265* 293* 453 473 mdbm_util_$get_user_class 000104 constant entry external dcl 752 ref 118 mdbm_util_$inconsistent_get_info 000106 constant entry external dcl 753 ref 235 mrds_authorization based structure level 1 dcl 6-22 mrds_authorization_ptr 001134 automatic pointer dcl 6-29 set ref 118* 127 mrds_authorization_structure_version 000072 constant fixed bin(17,0) initial dcl 6-31 set ref 118* mrds_control_arg_found 000445 automatic bit(1) unaligned dcl 754 set ref 231* 271* 325* 339* 357* 378* 397* 407* 412* 473 483 486 mrds_dm_authorization$set_needed_access 000110 constant entry external dcl 755 ref 148 mrds_dm_display 000112 constant entry external dcl 756 ref 492 mrds_dm_display_info based structure level 1 dcl 4-12 set ref 156 207 645 mrds_dm_display_info_ptr 001124 automatic pointer dcl 4-52 set ref 156* 158 159 160 167 168 170 171 172 173 174 175 176 207* 209 210 211 212 213 214 215 216 218 219 220 221 222 223 235 245 245 259 264 265 272 278 280 282 287 292 293 324 327 337 338 342 349 357 360 363 367 377 381 384 388 396 400 407 411 416 450 453 467 473 473 473 473 473 473 473 473 473 483 492* 496 497 498 515* 549 634 636 636 638 638 640 640 642 642 645 649 649* 649 649 mrds_dsl_get_version$get_path_info 000114 constant entry external dcl 757 ref 95 mrds_dsl_resultant_storage$get_temp_dir 000116 constant entry external dcl 758 ref 165 mrds_error_$inconsistent_database 000120 external static fixed bin(35,0) dcl 759 ref 241 mrds_error_$no_database 000122 external static fixed bin(35,0) dcl 760 set ref 104 153* mrds_error_$no_db_path 000124 external static fixed bin(35,0) dcl 761 set ref 203* mrds_error_$no_model_access 000126 external static fixed bin(35,0) dcl 762 ref 149 mrds_error_$no_model_submodel 000130 external static fixed bin(35,0) dcl 763 ref 104 mrds_error_$rst_name_too_long 000132 external static fixed bin(35,0) dcl 764 set ref 589* mrds_path_info based structure level 1 dcl 5-22 mrds_path_info_ptr 001132 automatic pointer dcl 5-36 set ref 95* 98 100 110 118 122 130 mrds_path_info_structure_version 000072 constant fixed bin(17,0) initial dcl 5-38 set ref 95* mrds_rst_$execute_undo 000140 constant entry external dcl 781 ref 245 mu_db_xref$xref_destroy 000134 constant entry external dcl 765 ref 649 653 my_name 000446 automatic char(16) unaligned dcl 766 set ref 74* 89* 111* 513* 622* 656* name 1 based char(32) array level 2 in structure "name_list" dcl 4-48 in procedure "dmdm" set ref 592* name 142 based char(32) level 3 in structure "rmdb_ctl" packed unaligned dcl 2-25 in procedure "dmdm" set ref 216 498* 653* name_list based structure level 1 dcl 4-48 set ref 576 636 638 640 642 name_list_ptr 001126 automatic pointer dcl 4-53 set ref 563* 576* 577 591 591 592 592 602 names_only 134(03) based bit(1) level 3 packed unaligned dcl 4-12 set ref 338* 349* 450 nargs 000452 automatic fixed bin(17,0) dcl 767 set ref 72* 73 225* 249 272 298 326 341 359 380 399 421 566 575 580 no_header_flag 000453 automatic bit(1) unaligned dcl 768 set ref 417* 473 521* no_more_names 000454 automatic bit(1) unaligned dcl 769 set ref 578* 580 587* null builtin function dcl 770 ref 70 98 153 172 173 174 175 176 220 221 222 223 363 384 461 461 496 514 515 516 563 634 636 638 640 642 649 656 666 673 685 num_names based fixed bin(17,0) level 2 dcl 4-48 set ref 576* 577* 591* 591 592 636 638 640 642 num_names_alloc 001130 automatic fixed bin(17,0) dcl 4-55 set ref 575* 576 576 number_args_used parameter fixed bin(17,0) dcl 559 set ref 556 564* 594* 594 of_attach_desc 000455 automatic char(200) unaligned dcl 771 set ref 459* 461* of_dir 000537 automatic char(168) unaligned dcl 772 set ref 310* 312 502 504 669* of_ent 000611 automatic char(32) unaligned dcl 773 set ref 310* 312 502 504 669* of_flag 000621 automatic bit(1) unaligned dcl 774 set ref 313* 318* 457 502 518* of_path 000622 automatic char(168) unaligned dcl 775 set ref 312* 459 463 466 of_switch_name 000674 automatic char(32) unaligned dcl 776 set ref 458* 461* out_iocb_ptr 000704 automatic pointer dcl 777 set ref 461* 465* 467 514* 666 668* output_iocb_ptr 2 based pointer level 2 dcl 4-12 set ref 159* 210* 467* p parameter pointer dcl 683 set ref 680 685 686* 687* 688* rel_name_list_ptr 142 based pointer level 2 dcl 4-12 set ref 174* 222* 327* 342* 640 640 relation 134(06) based bit(1) level 3 packed unaligned dcl 4-12 set ref 324* 337* 473 483* release_temp_segment_ 000136 constant entry external dcl 778 ref 656 rings 000706 automatic fixed bin(3,0) initial array dcl 780 set ref 540* 780* 780* 780* rmdb_ctl based structure level 1 unaligned dcl 2-25 rmdb_ctl_ptr 001122 automatic pointer dcl 2-43 set ref 70* 192* 200 203 205 211 212 213 214 215 216 497 498 653 653 653 rmdb_relmgr_entries based structure level 1 unaligned dcl 3-18 rtrim builtin function dcl 782 ref 148 148 312 435 504 549 saved_code 000100 automatic fixed bin(35,0) dcl 612 set ref 616* 619* 622* sci_ptr 000712 automatic pointer dcl 783 set ref 191* 225* 245* 255* 276* 307* 430* 572* 586* 619* secured 1(01) based bit(1) level 2 packed unaligned dcl 7-20 ref 136 ssu_$abort_line 000154 constant entry external dcl 613 ref 619 ssu_$arg_count 000142 constant entry external dcl 784 ref 225 ssu_$arg_ptr 000144 constant entry external dcl 785 ref 255 276 307 430 572 586 start_arg parameter fixed bin(17,0) dcl 560 ref 556 562 566 575 string builtin function dcl 787 set ref 170* 218* structure_version 000714 automatic fixed bin(17,0) dcl 788 set ref 129* 130* submodel 53(02) based bit(1) level 3 packed unaligned dcl 5-22 ref 110 sw 134 based structure level 2 dcl 4-12 set ref 170* 218* sys_info$max_seg_size 000146 external static fixed bin(35,0) dcl 789 ref 93 td_dir 000715 automatic char(168) unaligned dcl 790 set ref 433* 435 td_ent 000767 automatic char(32) unaligned dcl 791 set ref 433* 435 temp_dir_father_dir 000777 automatic char(168) unaligned dcl 792 set ref 165* 435* 540* 546 549 661* 662* temp_dir_flag 001051 automatic bit(1) unaligned dcl 793 set ref 436* 490 517* temp_dir_name 001052 automatic char(32) unaligned dcl 794 set ref 536* 540* 549 661* 662* temp_dir_path 60 based char(168) level 2 in structure "rmdb_ctl" packed unaligned dcl 2-25 in procedure "dmdm" set ref 212 653* temp_dir_path 56 based char(168) level 2 in structure "mrds_dm_display_info" packed unaligned dcl 4-12 in procedure "dmdm" set ref 212* 549* 649* temp_seg_ptr 001062 automatic pointer dcl 795 set ref 89* 92 516* 656 656* terminate_file_ 000150 constant entry external dcl 796 ref 674 terminate_file_flag 001064 automatic bit(1) dcl 797 set ref 154* 524* 673 675* type 53 based structure level 2 dcl 5-22 undo_request 001065 automatic char(100) unaligned dcl 798 set ref 235* 245* unique_chars_ 000152 constant entry external dcl 799 ref 458 536 unreferenced_attributes 134(11) based bit(1) level 3 packed unaligned dcl 4-12 set ref 388* unreferenced_domains 134(10) based bit(1) level 3 packed unaligned dcl 4-12 set ref 367* version based fixed bin(17,0) level 2 in structure "rmdb_ctl" dcl 2-25 in procedure "dmdm" ref 200 version based fixed bin(17,0) level 2 in structure "mrds_dm_display_info" dcl 4-12 in procedure "dmdm" set ref 158* 209* wa based area dcl 800 set ref 93* 156 207 576 we_made_temp_dir_flag 001116 automatic bit(1) unaligned dcl 801 set ref 523* 538* 659 work_area_ptr 130 based pointer level 2 in structure "mrds_dm_display_info" dcl 4-12 in procedure "dmdm" set ref 167* 213* work_area_ptr 132 based pointer level 2 in structure "rmdb_ctl" dcl 2-25 in procedure "dmdm" ref 205 213 work_area_ptr 001120 automatic pointer dcl 802 in procedure "dmdm" set ref 92* 93 95* 118* 130* 156 167 205* 207 576 xref_iocb_ptr 146 based pointer level 2 dcl 4-12 set ref 176* 215* 496 497 xref_name 150 based char(32) level 2 packed unaligned dcl 4-12 set ref 216* 498 649* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 8-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 8-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 8-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 8-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 8-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 8-15 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 database_state_structure_version internal static fixed bin(17,0) initial dcl 7-29 rmdb_relmgr_entries_ptr automatic pointer dcl 3-32 terminate_file_switches based structure level 1 packed unaligned dcl 8-4 NAMES DECLARED BY EXPLICIT CONTEXT. build_name_list 005104 constant entry internal dcl 556 ref 327 342 360 381 400 close_file 006171 constant entry internal dcl 680 ref 668 common 002120 constant label dcl 231 set ref 180 228 create_temp_dir 004673 constant entry internal dcl 530 ref 490 display_mrds_dm 000622 constant entry external dcl 7 dmdm 000612 constant entry external dcl 7 error 005446 constant entry internal dcl 608 ref 82 84 90 107 124 134 140 153 200 203 243 253 284 298 305 308 311 363 384 421 428 431 434 441 444 451 453 463 466 486 494 504 546 570 584 589 exit 004651 constant label dcl 507 ref 114 623 init 004652 constant entry internal dcl 511 ref 65 195 rmdb_rq_dmdm 001727 constant entry external dcl 184 tidy_up 005553 constant entry internal dcl 631 ref 68 77 113 198 506 618 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7142 7320 6246 7152 Length 10014 6246 156 457 673 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dmdm 914 external procedure is an external procedure. on unit on line 68 64 on unit on unit on line 198 64 on unit init internal procedure shares stack frame of external procedure dmdm. create_temp_dir internal procedure shares stack frame of external procedure dmdm. build_name_list internal procedure shares stack frame of external procedure dmdm. error 80 internal procedure is called during a stack extension. tidy_up 124 internal procedure is called by several nonquick procedures. close_file internal procedure shares stack frame of internal procedure tidy_up. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dmdm 000100 absolute_database_path dmdm 000152 args_used dmdm 000153 arg_len dmdm 000154 arg_ptr dmdm 000156 bcnt dmdm 000157 brief_flag dmdm 000166 cmdb_arg_found dmdm 000167 code dmdm 000170 dbm_ptr dmdm 000172 dbp dmdm 000244 delete_xref_file_flag dmdm 000245 ep dmdm 000246 err_flag dmdm 000247 err_msg dmdm 000347 first_arg_number dmdm 000350 i dmdm 000351 incon_flag dmdm 000352 incon_message dmdm 000434 incon_name dmdm 000444 last_arg_num dmdm 000445 mrds_control_arg_found dmdm 000446 my_name dmdm 000452 nargs dmdm 000453 no_header_flag dmdm 000454 no_more_names dmdm 000455 of_attach_desc dmdm 000537 of_dir dmdm 000611 of_ent dmdm 000621 of_flag dmdm 000622 of_path dmdm 000674 of_switch_name dmdm 000704 out_iocb_ptr dmdm 000706 rings dmdm 000712 sci_ptr dmdm 000714 structure_version dmdm 000715 td_dir dmdm 000767 td_ent dmdm 000777 temp_dir_father_dir dmdm 001051 temp_dir_flag dmdm 001052 temp_dir_name dmdm 001062 temp_seg_ptr dmdm 001064 terminate_file_flag dmdm 001065 undo_request dmdm 001116 we_made_temp_dir_flag dmdm 001120 work_area_ptr dmdm 001122 rmdb_ctl_ptr dmdm 001124 mrds_dm_display_info_ptr dmdm 001126 name_list_ptr dmdm 001130 num_names_alloc dmdm 001132 mrds_path_info_ptr dmdm 001134 mrds_authorization_ptr dmdm 001136 database_state_ptr dmdm error 000100 saved_code error 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 return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ op_empty_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_bit_count_ com_err_ cu_$arg_count cu_$arg_ptr delete_$path dmd_$get_secured_state expand_pathname_ get_group_id_$tag_star get_temp_segment_ hcs_$append_branchx hcs_$del_dir_tree hcs_$delentry_file initiate_file_ ioa_$rs iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open mdbm_util_$get_user_class mdbm_util_$inconsistent_get_info mrds_dm_authorization$set_needed_access mrds_dm_display mrds_dsl_get_version$get_path_info mrds_dsl_resultant_storage$get_temp_dir mrds_rst_$execute_undo mu_db_xref$xref_destroy release_temp_segment_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr terminate_file_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_subr_arg error_table_$badcall error_table_$badopt error_table_$inconsistent error_table_$insufficient_access error_table_$moderr error_table_$noarg error_table_$notadir error_table_$unimplemented_version iox_$user_output mrds_error_$inconsistent_database mrds_error_$no_database mrds_error_$no_db_path mrds_error_$no_model_access mrds_error_$no_model_submodel mrds_error_$rst_name_too_long sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 780 000574 7 000611 63 000630 65 000632 66 000633 68 000635 70 000657 72 000661 73 000670 74 000673 77 000720 78 000724 81 000725 82 000744 84 000765 89 001021 90 001042 92 001063 93 001065 95 001071 98 001124 100 001136 101 001142 103 001145 104 001147 107 001154 110 001176 111 001202 113 001232 114 001236 118 001237 120 001272 122 001274 124 001327 127 001343 129 001347 130 001351 132 001405 133 001407 134 001412 135 001426 136 001427 138 001433 139 001436 140 001441 146 001455 147 001515 148 001521 149 001555 151 001564 153 001624 154 001654 156 001656 158 001663 159 001665 160 001671 165 001674 167 001702 168 001705 170 001707 171 001710 172 001712 173 001714 174 001715 175 001716 176 001717 178 001720 180 001722 184 001723 191 001735 192 001741 193 001744 195 001746 196 001747 198 001750 200 001772 203 002015 205 002037 207 002042 209 002047 210 002051 211 002055 212 002061 213 002064 214 002066 215 002070 216 002072 218 002075 219 002076 220 002100 221 002102 222 002103 223 002104 225 002105 227 002115 228 002117 231 002120 235 002121 238 002153 241 002161 242 002164 243 002167 244 002203 245 002204 249 002231 251 002241 252 002244 253 002261 254 002304 255 002305 257 002322 259 002336 263 002354 264 002364 265 002367 266 002371 267 002373 270 002374 271 002404 272 002406 274 002416 276 002442 277 002462 278 002476 280 002506 282 002526 284 002546 285 002600 286 002602 287 002603 289 002606 291 002607 292 002617 293 002622 294 002624 297 002625 298 002635 302 002662 303 002663 304 002666 305 002703 306 002726 307 002727 308 002744 310 003001 311 003031 312 003052 313 003111 315 003114 318 003115 321 003127 324 003143 325 003146 326 003150 327 003154 329 003166 331 003170 334 003171 337 003201 338 003204 339 003206 341 003210 342 003214 344 003226 346 003230 349 003231 354 003251 357 003265 359 003272 360 003276 362 003310 363 003312 367 003352 368 003354 371 003355 374 003356 377 003372 378 003375 380 003377 381 003403 383 003415 384 003417 388 003457 389 003461 392 003462 395 003463 396 003473 397 003476 399 003500 400 003504 402 003516 404 003520 407 003521 410 003537 411 003547 412 003552 413 003554 415 003555 416 003565 417 003570 418 003572 420 003573 421 003603 425 003630 426 003631 427 003634 428 003651 429 003674 430 003675 431 003712 433 003747 434 003777 435 004020 436 004057 438 004062 441 004063 442 004103 444 004104 446 004124 450 004126 451 004132 453 004154 457 004203 458 004205 459 004237 461 004253 463 004306 465 004332 466 004351 467 004375 473 004400 483 004420 486 004427 490 004453 492 004461 494 004502 496 004520 497 004530 498 004533 499 004536 502 004537 504 004570 506 004644 507 004651 511 004652 513 004653 514 004656 515 004660 516 004661 517 004662 518 004663 519 004664 520 004665 521 004666 522 004667 523 004670 524 004671 526 004672 530 004673 536 004674 538 004726 540 004731 546 005016 549 005042 552 005102 556 005104 562 005106 563 005110 564 005112 566 005113 568 005117 569 005122 570 005142 571 005165 572 005166 573 005206 575 005222 576 005226 577 005237 578 005240 580 005241 582 005250 583 005253 584 005273 585 005316 586 005317 587 005337 589 005356 591 005422 592 005424 593 005435 594 005436 596 005440 602 005441 604 005444 608 005445 615 005461 616 005464 618 005467 619 005474 622 005524 623 005547 631 005552 634 005560 636 005570 638 005602 640 005615 642 005630 645 005643 649 005646 653 005714 656 005747 659 005776 661 006001 662 006022 666 006052 668 006057 669 006065 673 006130 674 006137 675 006166 678 006170 680 006171 685 006173 686 006177 687 006211 688 006224 691 006237 ----------------------------------------------------------- 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