COMPILATION LISTING OF SEGMENT rmdb_rq_create_relation Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/09/86 1237.7 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-06-16,Blair), approve(86-06-16,MCR7311), 11* audit(86-09-15,Gilcrease), install(86-10-16,MR12.0-1187): 12* Initialize all the attributes we have room for. Previously the extent was 13* set to zero and initialization wasn't happening. 14* 2) change(86-10-28,Blair), approve(86-10-28,PBF7311), audit(86-11-26,Dupuis), 15* install(86-12-09,MR12.0-1237): 16* Move the initializing of rmdb_create_rel_info.num_attrs out of the 17* attr_list_handler so that it doesn't get wiped out if we have any indices 18* to create. 19* END HISTORY COMMENTS */ 20 21 22 rmdb_rq_create_relation: proc (I_sci_ptr, I_rmdb_ctl_ptr); 23 24 /* . BEGIN_DESCRIPTION 25* 26* This procedure is called from the the rmdb ssu routine 27* 28* Its purpose is to process the create_relation request arguments 29* 30* Syntax for this request is 31* 32* . relation_name { } 33* . { -index | -ix } 34* . { -sel_exp | -se "mrds_temp_rel_type_selection_exp" } 35* 36* rel_attr_list ::= attr_name_1 attr_name_2 .... attr_name_n 37* 38* index_attr_list ::= rmdb_ix_attr_name_m .... rmdb_ix_attr_name_k 39* 40* mrds_temp_rel_type_selection_exp ::= temp_rel like selection expression 41* 42* The rel_attr_list and -sel_exp are exclusive arguments. The 43* attributes that are to make up the relation primary key must 44* have an astrisk appended to the attribute name in the 45* rel_attr_list. The -index maybe used with either and specifies 46* which attributes are to be secondary indices. The attribute 47* names that appear in the index_attr_list must be defined in the 48* rel_attr_list or by the selection_expression. 49* 50* Currently only attributes that already exist in the data_model can be used 51* to define new relations. 52* 53* . END_DESCRIPTION 54* 55*%page; 56* HISTORY: 57* 82-03-11 Written by R. Lackey 58* 59* 82-06-09 R. Harvey: Stripped out code to handle parentheses. 60* 61* 82-06-28 Roger Lackey : corrected loop control and check for * on end of 62* attribute name. other minor changes pointer out in team review. 63* 64* 82-07-01 Roger Lackey : Modified the calls to mu_db_inconsistent to use 65* mdbm_util_$inconsistent_* for binding. 66* 67* 83-02-07 Mike Kubicar : Changed calling sequence of rmdb_create_relation 68* so that it includes a bit which says whether the routine was called from 69* request level. This is necessary since that routine must know whether to 70* start transactions and that should only be done from request level. 71* 72**/ 73 74 75 /* rmdb_rq_create_relation: proc (I_sci_ptr, I_rmdb_ctl_ptr) */ 76 77 dcl I_rmdb_ctl_ptr pointer parameter /* Pointer to restructuring control */; 78 dcl I_sci_ptr pointer parameter /* ssu info ptr */; 79 80 sci_ptr = I_sci_ptr; /* For quicker ref */ 81 rmdb_ctl_ptr = I_rmdb_ctl_ptr; /* Pointer to rmdb control structure */ 82 83 selection_exp_exists = "0"b; /* On = -sel_exp was found */ 84 rel_attr_list_exists = "0"b; /* On = relation attr list was found */ 85 index_attr_list_exists = "0"b; /* On = index attr_list was found */ 86 rmdb_create_rel_info_ptr = null; /* Not allocated yet */ 87 rmdb_ix_attrs_ptr = null; /* Not allocated yet */ 88 rmdb_sel_val_info_ptr = null; /* Not allocated yet */ 89 90 if rmdb_ctl.version ^= RMDB_CTL_VERSION_1 then 91 call ssu_$abort_line (sci_ptr, error_table_$unimplemented_version, "rmdb_create_rel_info.incl.pl1"); 92 93 if rmdb_ctl.absolute_db_path = "" then 94 call error (error_table_$action_not_performed, 95 "^/There is no currently readied data base."); 96 97 on cleanup call tidy_up; /* Establish a cleanup handler for this procedure */ 98 99 call ssu_$arg_count (sci_ptr, nargs); /* Get number of arguments supplied to me */ 100 101 if nargs < 2 then /* Must have rel_name and at least one attribute 102* or -selection_expression */ 103 call error (error_table_$wrong_no_of_args, USAGE); /* Tell um how to use it */ 104 105 call mdbm_util_$inconsistent_get_info (rmdb_ctl.db_model_ptr, /* See if db is inconsistent */ 106 incon_flag, incon_name, unused, undo_request); 107 108 if incon_flag then /* DB is inconsisten */ 109 call rmdb_execute_undo (sci_ptr, 110 "create_relation", rmdb_ctl.absolute_db_path, 111 rmdb_ctl.db_model_ptr, incon_name, undo_request); 112 113 call ssu_$arg_ptr (sci_ptr, 1, arg_ptr, arg_len); /* First arg must be rel name */ 114 115 args_used = 1; 116 117 if arg_len > 30 /* Relation names can only be 30 chars long 118* because the relation model name must have a ".m" suffix */ 119 then call error (mrds_error_$rel_name_too_long, arg); 120 121 if arg_len < 1 then call error (mrds_error_$no_rel_name, "^/Relation name was expected for first argument."); 122 123 else rel_name = arg; /* Got a good rel_name */ 124 125 126 do while (args_used < nargs); /* Process supplied arguments */ 127 128 call ssu_$arg_ptr (sci_ptr, args_used + 1, arg_ptr, arg_len); /* Get next argument */ 129 130 if substr (arg, 1, 1) = "-" then do; /* Control arg check */ 131 132 if arg = "-ix" | arg = "-index" then do; /* Index attr list should follow */ 133 134 args_used = args_used + 1; /* Just used -index */ 135 136 if index_attr_list_exists then 137 call error (error_table_$inconsistent, 138 "^/The -index argument was previously specified."); 139 if args_used < nargs then do; 140 rmdb_ix_attrs_alloc = mrds_data_$max_attributes; 141 allocate rmdb_ix_attrs in (wa) set (rmdb_ix_attrs_ptr); 142 rmdb_ix_attrs.version = RMDB_IX_ATTRS_VERSION_1; 143 rmdb_ix_attrs.relation_name = rel_name; 144 rmdb_ix_attrs.num_used = 0; 145 146 call attr_list_handler (args_used, INDEX_ATTR_LIST); 147 end; 148 149 else call error (mrds_error_$no_inds, 150 "^/An index attribute list is required following the -index control argument."); 151 152 index_attr_list_exists = "1"b; 153 end; /* if arg = "-index" then do */ 154 155 else if arg = "-se" | arg = "-sel_exp" then do; /* Selection expression should follow */ 156 157 args_used = args_used + 1; 158 159 if selection_exp_exists then 160 call error (error_table_$inconsistent, 161 "^/The -sel_exp argument was previously specified."); 162 163 if rel_attr_list_exists then 164 call error (error_table_$inconsistent, 165 "^/A relation attribute list cannot be used with the control argument: " || arg); 166 167 if args_used < nargs then 168 call select_exp_handler (args_used); 169 170 else do; 171 172 call error (mrds_error_$no_sel_exp, 173 "^/A selection expression is required following the -sel_exp control argument."); 174 end; 175 176 end; /* if arg = "-se" */ 177 178 else call error (error_table_$badopt, arg); /* Bad control arg */ 179 180 end; /* End control arg check */ 181 182 else do; /* Not a control arg */ 183 184 if args_used = 1 then do; /* If first argument following rel_name 185* assume it is the relation attribute list */ 186 187 188 /* Allocate and init rmdb_create_rel_info structure */ 189 190 rmdb_create_rel_info_alloc = mrds_data_$max_attributes; /* Set max number of attrs 191* in rmdb_create_rel_info */ 192 193 allocate rmdb_create_rel_info in (wa) /* wa is rmdb_ctl.work_area) */ 194 set (rmdb_create_rel_info_ptr); 195 196 rmdb_create_rel_info.version = RMDB_CREATE_REL_INFO_VERSION_1; 197 rmdb_create_rel_info.db_path = rmdb_ctl.absolute_db_path; 198 rmdb_create_rel_info.db_model_ptr = rmdb_ctl.db_model_ptr; 199 rmdb_create_rel_info.temp_directory_path = rmdb_ctl.temp_dir_path; 200 rmdb_create_rel_info.relation_name = rel_name; 201 rmdb_create_rel_info.num_attrs = rmdb_create_rel_info_alloc; /* we'll figure out how many actual in a minute */ 202 do z = 1 to rmdb_create_rel_info_alloc; 203 rmdb_create_rel_info.attrs (*).primary_key = "0"b; /* Turn off all primary_key flags */ 204 rmdb_create_rel_info.attrs (*).indexed = "0"b; /* Turn off all indexed flags */ 205 end; 206 207 rmdb_create_rel_info.num_attrs = 0; 208 call attr_list_handler (args_used, REL_ATTR_LIST); /* Process attribute list */ 209 210 end; /* Must be rel_attr_list */ 211 212 else call error (error_table_$bad_subr_arg, arg || USAGE); 213 214 end; 215 216 end /* Get rest of arguments */; 217 218 if ^selection_exp_exists then do; /* Creation was already done for us */ 219 220 if rmdb_create_rel_info_ptr = null then 221 call error (mrds_error_$no_rel_attr, "^/" || rel_name); 222 223 if rmdb_create_rel_info.num_attrs < 1 then 224 call error (mrds_error_$no_rel_attr, rmdb_create_rel_info.relation_name); 225 226 if index_attr_list_exists then call index_attr_mark; /* Mark those attrs that are to be indexed */ 227 228 call rmdb_create_relation (rmdb_ctl_ptr, rmdb_create_rel_info_ptr, "1"b /* Called at request level */, err_msg, code); 229 if code ^= 0 then call error (code, err_msg); 230 231 end; 232 233 call tidy_up; /* Free rmdb_create_rel_info structure */ 234 235 exit: return; 236 237 /* * * * * * * * * * * * attr_list_handler * * * * * * * * * * * */ 238 239 attr_list_handler: proc (ag_used, list_type_indicator); /* Processor for both rel and index attribute list */ 240 241 dcl ag_used fixed bin parameter /* (INPUT/OUTPUT) Number of arguments used so far */; 242 dcl list_type_indicator fixed bin parameter /* (INPUT) 1 = relation attr list 243* 2 = index attr list */; 244 245 /* This internal procedure processes the input string 246* 247* attr_1 attr_2 .. .. .. attr_n 248* 249* It isolates each attribute in an attribute list for both relation atr_list 250* and index attr_list. 251**/ 252 253 first = "1"b; 254 attrs_done = "0"b; 255 256 do while (ag_used < nargs & ^attrs_done); 257 258 call ssu_$arg_ptr (sci_ptr, ag_used + 1, arg_ptr, arg_len); /* Get next argument */ 259 260 if substr (arg, 1, 1) = "-" then /* argument is a control arg */ 261 attrs_done = "1"b; 262 263 264 else do; /* Not a control argument */ 265 266 ag_used = ag_used + 1; /* Bump number of arguments used */ 267 268 attr_name = arg; 269 270 if length (attr_name) < 1 then call error (mrds_error_$bad_attr_name, 271 "^/Null attribute name."); 272 273 if list_type_indicator = REL_ATTR_LIST then do; 274 275 call relation_attr_add; 276 277 end; 278 else do; /* Were working on an inde attr list */ 279 280 if length (attr_name) > 32 then call error (mrds_error_$rst_name_too_long, 281 "^/Attribute name is longer then 32 characters: " || attr_name); 282 rmdb_ix_attrs.num_used = rmdb_ix_attrs.num_used + 1; 283 rmdb_ix_attrs.an (rmdb_ix_attrs.num_used) = attr_name; 284 285 end; 286 287 first = "0"b; /* First token already processed */ 288 end; /* END not a contol arg */ 289 end /* END do while (ag_used <= nargs | ^attrs_done) */; 290 291 end attr_list_handler; 292 293 /* * * * * * * * * * * * * relation_attr_add * * * * * * * * * * * * * */ 294 295 296 relation_attr_add: proc; 297 298 299 if rmdb_create_rel_info.num_attrs >= mrds_data_$max_attributes then 300 call error (mrds_error_$max_attributes, ""); 301 302 rmdb_create_rel_info.num_attrs = rmdb_create_rel_info.num_attrs + 1; /* Got another one */ 303 304 305 306 if index (reverse (attr_name), "*") = 1 then do; /* If last char is * it is a primary attribute */ 307 308 j = length (attr_name) - 1; /* Length attr - * */ 309 310 attr_name = substr (attr_name, 1, j); /* Remove the * from name */ 311 312 if j < 1 then call error (mrds_error_$bad_attr_name, "*"); 313 314 rmdb_create_rel_info.attrs (rmdb_create_rel_info.num_attrs).primary_key = "1"b; 315 316 end; 317 318 if length (attr_name) > 32 then call error (mrds_error_$rst_name_too_long, 319 "^/Attribute name is longer then 32 characters: " || attr_name); 320 321 rmdb_create_rel_info.attrs (rmdb_create_rel_info.num_attrs).name = attr_name; 322 323 rel_attr_list_exists = "1"b; /* Remember we had a rel_attr_list */ 324 325 end relation_attr_add; 326 327 /* * * * * * * * * * * * * index_attr_mark * * * * * * * * * * * * * * */ 328 329 330 index_attr_mark: proc; 331 332 do k = 1 to rmdb_ix_attrs.num_used; /* All indexed attrs */ 333 334 attr_name = rmdb_ix_attrs.an (k); 335 336 found = "0"b; 337 338 do j = 1 to rmdb_create_rel_info.num_attrs while (^found); /* Search for name in list */ 339 340 if attr_name = rmdb_create_rel_info.attrs (j).name then do; 341 342 if rmdb_create_rel_info.attrs (j).indexed = "1"b then 343 call error (mrds_error_$previously_defined_index, (attr_name)); 344 345 rmdb_create_rel_info.attrs (j).indexed = "1"b; /* Mark as indexed */ 346 found = "1"b; 347 end; 348 349 end; 350 351 if ^found then call error (mrds_error_$undef_attr, 352 "^/" || attr_name); 353 354 end; /* END All indexed attrs */ 355 356 end index_attr_mark; 357 358 /* * * * * * * * * * * * * select_exp_handler * * * * * * * * * * * * * */ 359 360 select_exp_handler: proc (args_used_count); 361 362 dcl args_used_count fixed bin parameter; 363 364 selection_exp_exists = "1"b; 365 366 call ssu_$arg_ptr (sci_ptr, args_used_count + 1, sel_exp_ptr, sel_exp_len); /* Get selection expression */ 367 args_used_count = args_used_count + 1; 368 369 /* Check any other args for control argument (they are not allowed following the selection exp) */ 370 371 do z = args_used_count + 1 to nargs; 372 373 call ssu_$arg_ptr (sci_ptr, z, arg_ptr, arg_len); /* Get next arg */ 374 if substr (arg, 1, 1) = "-" then call 375 error (error_table_$bad_arg, "^/" || arg || 376 "^/No control arguments are allowed after the select expression."); 377 end; 378 379 /* rmdb_sel_val_info is required by rmdb_create_and_pop_rel even if no sel_vals are provided */ 380 381 allocate rmdb_sel_val_info in (wa) set (rmdb_sel_val_info_ptr); 382 rmdb_sel_val_info.version = RMDB_SEL_VAL_INFO_VERSION_1; 383 rmdb_sel_val_info.sv_num = 0; 384 rmdb_sel_val_info.data_list_ptr = null; 385 rmdb_sel_val_info.desc_list_ptr = null; 386 387 if nargs > args_used_count then do; /* Must have provided some sel_values */ 388 389 call ssu_$arg_list_ptr (sci_ptr, al_ptr); /* Get the argument list */ 390 rmdb_sel_val_info.data_list_ptr = 391 addr (al_ptr -> arg_list.arg_ptrs (args_used_count + 1)); /* Pointer list of data pointers */ 392 rmdb_sel_val_info.desc_list_ptr = 393 addr (al_ptr -> arg_list.desc_ptrs (args_used_count + 1)); /* Pointer to list of 394* select_value descriptors */ 395 rmdb_sel_val_info.sv_num = nargs - args_used_count; 396 end; 397 398 if rmdb_ix_attrs_ptr = null then do; /* If no -index was supplied */ 399 rmdb_ix_attrs_alloc = 0; /* Got to have this 400* to pass rel_name to rmdb_create_and_pop_rel */ 401 allocate rmdb_ix_attrs in (wa) set (rmdb_ix_attrs_ptr); 402 rmdb_ix_attrs.version = RMDB_IX_ATTRS_VERSION_1; 403 rmdb_ix_attrs.relation_name = rel_name; 404 rmdb_ix_attrs.num_used = 0; 405 end; 406 407 call rmdb_create_and_pop_rel (rmdb_ctl_ptr, rmdb_ctl.absolute_db_path, 408 rmdb_ctl.temp_dir_path, sel_exp, rmdb_sel_val_info_ptr, 409 rmdb_ix_attrs_ptr, err_msg, code); 410 if code ^= 0 then do; 411 412 added_args = ""; 413 do z = args_used_count + 1 to nargs; 414 415 call ssu_$arg_ptr (sci_ptr, z, arg_ptr, arg_len); /* Get next arg */ 416 added_args = added_args || " " || arg; 417 end; 418 419 err_msg = rtrim (err_msg) || added_args; 420 421 call error (code, err_msg); 422 end; /* END if code ^= 0 */ 423 424 args_used_count = nargs; /* So we won't look for any more arguments */ 425 426 end select_exp_handler; 427 428 /* * * * * * * * * * * * * error * * * * * * * * * * * * * */ 429 430 error: proc (err_code, err_message); /* Error procedure for rmdb_create_relation.pl1 */ 431 432 dcl err_code fixed bin (35) parameter; 433 dcl err_message char (*) parameter; 434 dcl ssu_$abort_line entry () options (variable); 435 436 call tidy_up; 437 438 call ssu_$abort_line (sci_ptr, err_code, err_message); 439 440 end error; 441 442 443 444 445 446 447 448 449 450 451 452 /* * * * * * * * * * * * * tidy_up * * * * * * * * * * * * * */ 453 454 tidy_up: proc; 455 456 if rmdb_create_rel_info_ptr ^= null then 457 free rmdb_create_rel_info; 458 459 if rmdb_ix_attrs_ptr ^= null then free rmdb_ix_attrs; 460 461 if rmdb_sel_val_info_ptr ^= null then free rmdb_sel_val_info; 462 463 end tidy_up; 464 465 dcl added_args char (100) varying; 466 dcl addr builtin; 467 dcl al_ptr ptr; 468 dcl arg char (arg_len) based (arg_ptr); 469 dcl args_used fixed bin; 470 dcl arg_len fixed bin (21); 471 dcl arg_ptr ptr; 472 dcl attrs_done bit (1); 473 dcl attr_name char (64) varying; 474 dcl cleanup condition; 475 dcl code fixed bin (35); 476 dcl error_table_$action_not_performed fixed bin (35) ext static; 477 dcl error_table_$badopt fixed bin (35) ext static; 478 dcl error_table_$bad_arg fixed bin (35) ext static; 479 dcl error_table_$bad_subr_arg fixed bin (35) ext static; 480 dcl error_table_$inconsistent fixed bin (35) ext static; 481 dcl error_table_$unimplemented_version fixed bin (35) ext static; 482 dcl error_table_$wrong_no_of_args fixed bin (35) ext static; 483 dcl err_msg char (256); 484 dcl first bit (1); 485 dcl found bit (1); 486 dcl incon_flag bit (1); 487 dcl incon_name char (32); 488 dcl index builtin; 489 dcl INDEX_ATTR_LIST fixed bin int static options (constant) init (2); 490 dcl index_attr_list_exists bit (1); 491 dcl j fixed bin; 492 dcl k fixed bin; 493 dcl length builtin; 494 dcl mrds_data_$max_attributes fixed bin (35) init (256); 495 dcl mrds_error_$bad_attr_name fixed bin (35) ext static; 496 dcl mrds_error_$max_attributes fixed bin (35) ext static; 497 dcl mrds_error_$no_inds fixed bin (35) ext static; 498 dcl mrds_error_$no_rel_attr fixed bin (35) ext static; 499 dcl mrds_error_$no_rel_name fixed bin (35) ext static; 500 dcl mrds_error_$no_sel_exp fixed bin (35) ext static; 501 dcl mrds_error_$previously_defined_index fixed bin (35) ext static; 502 dcl mrds_error_$rel_name_too_long fixed bin (35) ext static; 503 dcl mrds_error_$rst_name_too_long fixed bin (35) ext static; 504 dcl mrds_error_$undef_attr fixed bin (35) ext static; 505 dcl mdbm_util_$inconsistent_get_info entry (ptr, bit (1), char (*), char (*), char (*)); 506 dcl nargs fixed bin; 507 dcl null builtin; 508 dcl REL_ATTR_LIST fixed bin int static options (constant) init (1); 509 dcl rel_attr_list_exists bit (1); 510 dcl rel_name char (32) varying; 511 dcl reverse builtin; 512 dcl rmdb_create_and_pop_rel entry (ptr, char (*), char (*), char (*), ptr, ptr, char (*), fixed bin (35)); 513 dcl rmdb_create_relation entry (ptr, ptr, bit (1), char (*), fixed bin (35)); 514 dcl rmdb_execute_undo entry (ptr, char (32), char (168), ptr, char (32), char (100)); 515 dcl rtrim builtin; 516 dcl sci_ptr ptr; 517 dcl selection_exp_exists bit (1); 518 dcl sel_exp char (sel_exp_len) based (sel_exp_ptr); 519 dcl sel_exp_len fixed bin (21); 520 dcl sel_exp_ptr ptr; 521 dcl ssu_$abort_line entry () options (variable); 522 dcl ssu_$arg_count entry (ptr, fixed bin); 523 dcl ssu_$arg_list_ptr entry (ptr, ptr); 524 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 525 dcl substr builtin; 526 dcl sys_info$max_seg_size fixed bin (35) ext static; 527 dcl undo_request char (100); 528 dcl unused char (32); 529 dcl USAGE char (120) int static options (constant) init ("^/Usage: create_relation relation_name {attribute_list}^/^7x{-index attribute_list} {-sel_exp SEL_EXP}"); 530 dcl wa area (sys_info$max_seg_size) based (rmdb_ctl.work_area_ptr); 531 dcl z fixed bin; 532 533 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 */ 534 535 3 1 /* BEGIN INCLUDE rmdb_create_rel_info.incl.pl1 */ 3 2 3 3 /* Contains relation name and all attributes that are associated with the 3 4* relation being created. Attributes which are to be indexed are flagged. */ 3 5 3 6 /* HISTORY: 3 7* Created 82-03-22 by R. Lackey 3 8**/ 3 9 3 10 3 11 dcl 1 rmdb_create_rel_info aligned based (rmdb_create_rel_info_ptr), 3 12 2 version fixed bin, /* Version number of this structure */ 3 13 2 db_path char (168), /* Absolute pathname of database */ 3 14 2 temp_directory_path char (168), /* Absolute pathname of directory to be used for temp space */ 3 15 2 db_model_ptr ptr, /* Pointer to db_model */ 3 16 2 relation_name char (32) unal, /* Name of relation being created */ 3 17 2 num_attrs fixed bin, /* Number of attributes 3 18* for this relation */ 3 19 2 attrs (rmdb_create_rel_info_alloc /* Attribute info */ 3 20 refer (rmdb_create_rel_info.num_attrs)) aligned 3 21 like attr_def_info; 3 22 3 23 3 24 dcl 1 attr_def_info based (adi_ptr), /* Attribute definition info */ 3 25 2 name char (32) unal, /* Attribute name */ 3 26 2 primary_key bit (1) unal, /* Primary key attribute */ 3 27 2 indexed bit (1) unal, /* On => attribute is to be indexed */ 3 28 2 mbz bit (34) unal; /* For future reference */ 3 29 3 30 dcl adi_ptr pointer; /* Pointer to attr_def_info structure */ 3 31 dcl rmdb_create_rel_info_ptr pointer; /* Based structure pointer */ 3 32 dcl rmdb_create_rel_info_alloc fixed bin; /* Allocation size of attribute info for structure */ 3 33 dcl RMDB_CREATE_REL_INFO_VERSION_1 int static options (constant) init (1); 3 34 3 35 3 36 dcl 1 rmdb_ix_attrs aligned based (rmdb_ix_attrs_ptr), /* List of names of attributes to be indexed */ 3 37 2 version fixed bin, 3 38 2 relation_name char (32), /* Name of the relation */ 3 39 2 num_used fixed bin, 3 40 2 an (rmdb_ix_attrs_alloc refer (rmdb_ix_attrs.num_used)) char (32); 3 41 3 42 dcl rmdb_ix_attrs_alloc fixed bin; 3 43 dcl rmdb_ix_attrs_ptr ptr; 3 44 dcl RMDB_IX_ATTRS_VERSION_1 int static options (constant) init (1); 3 45 3 46 dcl 1 rmdb_sel_val_info aligned based (rmdb_sel_val_info_ptr), /* Selection value info */ 3 47 2 version fixed bin, 3 48 2 sv_num fixed bin, /* Number of select values */ 3 49 2 data_list_ptr ptr, /* Pointer to list of ptrs to sv data */ 3 50 2 desc_list_ptr ptr; /* Pointer to list of ptrs to sv descriptors */ 3 51 3 52 dcl rmdb_sel_val_info_ptr ptr; 3 53 dcl RMDB_SEL_VAL_INFO_VERSION_1 int static options (constant) init (1); 3 54 3 55 /* END INCLUDE rmdb_create_rel_info.incl.pl1 */ 536 537 4 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 4 2* 4 3* James R. Davis 10 May 79 */ 4 4 4 5 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 4 9* audit(86-07-15,Schroth): 4 10* added command_name_arglist declaration to allow the storage of the 4 11* command name given to the command processor 4 12* END HISTORY COMMENTS */ 4 13 4 14 dcl 1 arg_list aligned based, 4 15 2 header, 4 16 3 arg_count fixed bin (17) unsigned unal, 4 17 3 pad1 bit (1) unal, 4 18 3 call_type fixed bin (18) unsigned unal, 4 19 3 desc_count fixed bin (17) unsigned unal, 4 20 3 pad2 bit (19) unal, 4 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 4 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 4 23 4 24 4 25 dcl 1 command_name_arglist aligned based, 4 26 2 header, 4 27 3 arg_count fixed bin (17) unsigned unal, 4 28 3 pad1 bit (1) unal, 4 29 3 call_type fixed bin (18) unsigned unal, 4 30 3 desc_count fixed bin (17) unsigned unal, 4 31 3 mbz bit(1) unal, 4 32 3 has_command_name bit(1) unal, 4 33 3 pad2 bit (17) unal, 4 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 4 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 4 36 2 name, 4 37 3 command_name_ptr pointer, 4 38 3 command_name_length fixed bin (21); 4 39 4 40 4 41 4 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 4 43 2 header, 4 44 3 arg_count fixed bin (17) unsigned unal, 4 45 3 pad1 bit (1) unal, 4 46 3 call_type fixed bin (18) unsigned unal, 4 47 3 desc_count fixed bin (17) unsigned unal, 4 48 3 pad2 bit (19) unal, 4 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 4 50 2 envptr ptr, 4 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 4 52 4 53 4 54 dcl ( 4 55 Quick_call_type init (0), 4 56 Interseg_call_type init (4), 4 57 Envptr_supplied_call_type 4 58 init (8) 4 59 ) fixed bin (18) unsigned unal int static options (constant); 4 60 4 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 4 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 4 63* an argument list of the proper size in the user's stack 4 64* 4 65**/ 4 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 538 539 540 end rmdb_rq_create_relation; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/09/86 1237.8 rmdb_rq_create_relation.pl1 >spec>install>1237>rmdb_rq_create_relation.pl1 534 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 536 3 10/14/83 1609.0 rmdb_create_rel_info.incl.pl1 >ldd>include>rmdb_create_rel_info.incl.pl1 538 4 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.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. INDEX_ATTR_LIST constant fixed bin(17,0) initial dcl 489 set ref 146* I_rmdb_ctl_ptr parameter pointer dcl 77 ref 22 81 I_sci_ptr parameter pointer dcl 78 ref 22 80 REL_ATTR_LIST constant fixed bin(17,0) initial dcl 508 set ref 208* 273 RMDB_CREATE_REL_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 3-33 ref 196 RMDB_CTL_VERSION_1 constant fixed bin(17,0) initial dcl 1-41 ref 90 RMDB_IX_ATTRS_VERSION_1 constant fixed bin(17,0) initial dcl 3-44 ref 142 402 RMDB_SEL_VAL_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 3-53 ref 382 USAGE 000000 constant char(120) initial unaligned dcl 529 set ref 101* 212 absolute_db_path 6 based char(168) level 2 packed unaligned dcl 1-25 set ref 93 108* 197 407* added_args 000100 automatic varying char(100) dcl 465 set ref 412* 416* 416 419 addr builtin function dcl 466 ref 390 392 ag_used parameter fixed bin(17,0) dcl 241 set ref 239 256 258 266* 266 al_ptr 000132 automatic pointer dcl 467 set ref 389* 390 392 an 12 based char(32) array level 2 dcl 3-36 set ref 283* 334 arg based char unaligned dcl 468 set ref 117* 123 130 132 132 155 155 163 178* 212 260 268 374 374 416 arg_count based fixed bin(17,0) level 3 packed unsigned unaligned dcl 4-14 ref 392 arg_len 000135 automatic fixed bin(21,0) dcl 470 set ref 113* 117 117 117 121 123 128* 130 132 132 155 155 163 178 178 212 258* 260 268 373* 374 374 415* 416 arg_list based structure level 1 dcl 4-14 arg_ptr 000136 automatic pointer dcl 471 set ref 113* 117 123 128* 130 132 132 155 155 163 178 212 258* 260 268 373* 374 374 415* 416 arg_ptrs 2 based pointer array level 2 dcl 4-14 set ref 390 args_used 000134 automatic fixed bin(17,0) dcl 469 set ref 115* 126 128 134* 134 139 146* 157* 157 167 167* 184 208* args_used_count parameter fixed bin(17,0) dcl 362 set ref 360 366 367* 367 371 387 390 392 395 413 424* attr_def_info based structure level 1 packed unaligned dcl 3-24 attr_name 000141 automatic varying char(64) dcl 473 set ref 268* 270 280 280 283 306 308 310* 310 318 318 321 334* 340 342 351 attrs 141 based structure array level 2 dcl 3-11 attrs_done 000140 automatic bit(1) unaligned dcl 472 set ref 254* 256 260* cleanup 000162 stack reference condition dcl 474 ref 97 code 000170 automatic fixed bin(35,0) dcl 475 set ref 228* 229 229* 407* 410 421* data_list_ptr 2 based pointer level 2 dcl 3-46 set ref 384* 390* db_model_ptr 134 based pointer level 2 in structure "rmdb_ctl" dcl 1-25 in procedure "rmdb_rq_create_relation" set ref 105* 108* 198 db_model_ptr 126 based pointer level 2 in structure "rmdb_create_rel_info" dcl 3-11 in procedure "rmdb_rq_create_relation" set ref 198* db_path 1 based char(168) level 2 dcl 3-11 set ref 197* desc_list_ptr 4 based pointer level 2 dcl 3-46 set ref 385* 392* desc_ptrs based pointer array level 2 dcl 4-14 set ref 392 err_code parameter fixed bin(35,0) dcl 432 set ref 430 438* err_message parameter char unaligned dcl 433 set ref 430 438* err_msg 000171 automatic char(256) unaligned dcl 483 set ref 228* 229* 407* 419* 419 421* error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 476 set ref 93* error_table_$bad_arg 000014 external static fixed bin(35,0) dcl 478 set ref 374* error_table_$bad_subr_arg 000016 external static fixed bin(35,0) dcl 479 set ref 212* error_table_$badopt 000012 external static fixed bin(35,0) dcl 477 set ref 178* error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 480 set ref 136* 159* 163* error_table_$unimplemented_version 000022 external static fixed bin(35,0) dcl 481 set ref 90* error_table_$wrong_no_of_args 000024 external static fixed bin(35,0) dcl 482 set ref 101* first 000271 automatic bit(1) unaligned dcl 484 set ref 253* 287* found 000272 automatic bit(1) unaligned dcl 485 set ref 336* 338 346* 351 header based structure level 2 dcl 4-14 incon_flag 000273 automatic bit(1) unaligned dcl 486 set ref 105* 108 incon_name 000274 automatic char(32) unaligned dcl 487 set ref 105* 108* index builtin function dcl 488 ref 306 index_attr_list_exists 000304 automatic bit(1) unaligned dcl 490 set ref 85* 136 152* 226 indexed 151(01) based bit(1) array level 3 packed unaligned dcl 3-11 set ref 204* 342 345* j 000305 automatic fixed bin(17,0) dcl 491 set ref 308* 310 312 338* 340 342 345* k 000306 automatic fixed bin(17,0) dcl 492 set ref 332* 334* length builtin function dcl 493 ref 270 280 308 318 list_type_indicator parameter fixed bin(17,0) dcl 242 ref 239 273 mdbm_util_$inconsistent_get_info 000052 constant entry external dcl 505 ref 105 mrds_data_$max_attributes 000307 automatic fixed bin(35,0) initial dcl 494 set ref 140 190 299 494* mrds_error_$bad_attr_name 000026 external static fixed bin(35,0) dcl 495 set ref 270* 312* mrds_error_$max_attributes 000030 external static fixed bin(35,0) dcl 496 set ref 299* mrds_error_$no_inds 000032 external static fixed bin(35,0) dcl 497 set ref 149* mrds_error_$no_rel_attr 000034 external static fixed bin(35,0) dcl 498 set ref 220* 223* mrds_error_$no_rel_name 000036 external static fixed bin(35,0) dcl 499 set ref 121* mrds_error_$no_sel_exp 000040 external static fixed bin(35,0) dcl 500 set ref 172* mrds_error_$previously_defined_index 000042 external static fixed bin(35,0) dcl 501 set ref 342* mrds_error_$rel_name_too_long 000044 external static fixed bin(35,0) dcl 502 set ref 117* mrds_error_$rst_name_too_long 000046 external static fixed bin(35,0) dcl 503 set ref 280* 318* mrds_error_$undef_attr 000050 external static fixed bin(35,0) dcl 504 set ref 351* name 141 based char(32) array level 3 packed unaligned dcl 3-11 set ref 321* 340 nargs 000310 automatic fixed bin(17,0) dcl 506 set ref 99* 101 126 139 167 256 371 387 395 413 424 null builtin function dcl 507 ref 86 87 88 220 384 385 398 456 459 461 num_attrs 140 based fixed bin(17,0) level 2 dcl 3-11 set ref 193* 201* 203 204 207* 223 299 302* 302 314 321 338 456 num_used 11 based fixed bin(17,0) level 2 dcl 3-36 set ref 141* 144* 282* 282 283 332 401* 404* 459 primary_key 151 based bit(1) array level 3 packed unaligned dcl 3-11 set ref 203* 314* rel_attr_list_exists 000311 automatic bit(1) unaligned dcl 509 set ref 84* 163 323* rel_name 000312 automatic varying char(32) dcl 510 set ref 123* 143 200 220 403 relation_name 1 based char(32) level 2 in structure "rmdb_ix_attrs" dcl 3-36 in procedure "rmdb_rq_create_relation" set ref 143* 403* relation_name 130 based char(32) level 2 in structure "rmdb_create_rel_info" packed unaligned dcl 3-11 in procedure "rmdb_rq_create_relation" set ref 200* 223* reverse builtin function dcl 511 ref 306 rmdb_create_and_pop_rel 000054 constant entry external dcl 512 ref 407 rmdb_create_rel_info based structure level 1 dcl 3-11 set ref 193 456 rmdb_create_rel_info_alloc 000400 automatic fixed bin(17,0) dcl 3-32 set ref 190* 193 193 201 202 rmdb_create_rel_info_ptr 000376 automatic pointer dcl 3-31 set ref 86* 193* 196 197 198 199 200 201 203 204 207 220 223 223 228* 299 302 302 314 314 321 321 338 340 342 345 456 456 rmdb_create_relation 000056 constant entry external dcl 513 ref 228 rmdb_ctl based structure level 1 unaligned dcl 1-25 rmdb_ctl_ptr 000374 automatic pointer dcl 1-43 set ref 81* 90 93 105 108 108 141 193 197 198 199 228* 381 401 407* 407 407 rmdb_execute_undo 000060 constant entry external dcl 514 ref 108 rmdb_ix_attrs based structure level 1 dcl 3-36 set ref 141 401 459 rmdb_ix_attrs_alloc 000401 automatic fixed bin(17,0) dcl 3-42 set ref 140* 141 141 399* 401 401 rmdb_ix_attrs_ptr 000402 automatic pointer dcl 3-43 set ref 87* 141* 142 143 144 282 282 283 283 332 334 398 401* 402 403 404 407* 459 459 rmdb_relmgr_entries based structure level 1 unaligned dcl 2-18 rmdb_sel_val_info based structure level 1 dcl 3-46 set ref 381 461 rmdb_sel_val_info_ptr 000404 automatic pointer dcl 3-52 set ref 88* 381* 382 383 384 385 390 392 395 407* 461 461 rtrim builtin function dcl 515 ref 419 sci_ptr 000324 automatic pointer dcl 516 set ref 80* 90* 99* 108* 113* 128* 258* 366* 373* 389* 415* 438* sel_exp based char unaligned dcl 518 set ref 407* sel_exp_len 000327 automatic fixed bin(21,0) dcl 519 set ref 366* 407 407 sel_exp_ptr 000330 automatic pointer dcl 520 set ref 366* 407 selection_exp_exists 000326 automatic bit(1) unaligned dcl 517 set ref 83* 159 218 364* ssu_$abort_line 000072 constant entry external dcl 434 in procedure "error" ref 438 ssu_$abort_line 000062 constant entry external dcl 521 in procedure "rmdb_rq_create_relation" ref 90 ssu_$arg_count 000064 constant entry external dcl 522 ref 99 ssu_$arg_list_ptr 000066 constant entry external dcl 523 ref 389 ssu_$arg_ptr 000070 constant entry external dcl 524 ref 113 128 258 366 373 415 substr builtin function dcl 525 ref 130 260 310 374 sv_num 1 based fixed bin(17,0) level 2 dcl 3-46 set ref 383* 395* temp_dir_path 60 based char(168) level 2 packed unaligned dcl 1-25 set ref 199 407* temp_directory_path 53 based char(168) level 2 dcl 3-11 set ref 199* undo_request 000332 automatic char(100) unaligned dcl 527 set ref 105* 108* unused 000363 automatic char(32) unaligned dcl 528 set ref 105* version based fixed bin(17,0) level 2 in structure "rmdb_create_rel_info" dcl 3-11 in procedure "rmdb_rq_create_relation" set ref 196* version based fixed bin(17,0) level 2 in structure "rmdb_ctl" dcl 1-25 in procedure "rmdb_rq_create_relation" ref 90 version based fixed bin(17,0) level 2 in structure "rmdb_ix_attrs" dcl 3-36 in procedure "rmdb_rq_create_relation" set ref 142* 402* version based fixed bin(17,0) level 2 in structure "rmdb_sel_val_info" dcl 3-46 in procedure "rmdb_rq_create_relation" set ref 382* wa based area dcl 530 ref 141 193 381 401 work_area_ptr 132 based pointer level 2 dcl 1-25 ref 141 193 381 401 z 000373 automatic fixed bin(17,0) dcl 531 set ref 202* 371* 373* 413* 415* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 4-54 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 4-54 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 4-54 adi_ptr automatic pointer dcl 3-30 arg_list_with_envptr based structure level 1 dcl 4-42 command_name_arglist based structure level 1 dcl 4-25 rmdb_relmgr_entries_ptr automatic pointer dcl 2-32 sys_info$max_seg_size external static fixed bin(35,0) dcl 526 NAMES DECLARED BY EXPLICIT CONTEXT. attr_list_handler 001472 constant entry internal dcl 239 ref 146 208 error 002643 constant entry internal dcl 430 ref 93 101 117 121 136 149 159 163 172 178 212 220 223 229 270 280 299 312 318 342 351 374 421 exit 001471 constant label dcl 235 index_attr_mark 002021 constant entry internal dcl 330 ref 226 relation_attr_add 001654 constant entry internal dcl 296 ref 275 rmdb_rq_create_relation 000333 constant entry external dcl 22 select_exp_handler 002174 constant entry internal dcl 360 ref 167 tidy_up 002711 constant entry internal dcl 454 ref 97 233 436 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3352 3446 3001 3362 Length 3770 3001 74 305 350 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rmdb_rq_create_relation 472 external procedure is an external procedure. on unit on line 97 64 on unit attr_list_handler internal procedure shares stack frame of external procedure rmdb_rq_create_relation. relation_attr_add internal procedure shares stack frame of external procedure rmdb_rq_create_relation. index_attr_mark internal procedure shares stack frame of external procedure rmdb_rq_create_relation. select_exp_handler internal procedure shares stack frame of external procedure rmdb_rq_create_relation. error 80 internal procedure is called during a stack extension. tidy_up 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rmdb_rq_create_relation 000100 added_args rmdb_rq_create_relation 000132 al_ptr rmdb_rq_create_relation 000134 args_used rmdb_rq_create_relation 000135 arg_len rmdb_rq_create_relation 000136 arg_ptr rmdb_rq_create_relation 000140 attrs_done rmdb_rq_create_relation 000141 attr_name rmdb_rq_create_relation 000170 code rmdb_rq_create_relation 000171 err_msg rmdb_rq_create_relation 000271 first rmdb_rq_create_relation 000272 found rmdb_rq_create_relation 000273 incon_flag rmdb_rq_create_relation 000274 incon_name rmdb_rq_create_relation 000304 index_attr_list_exists rmdb_rq_create_relation 000305 j rmdb_rq_create_relation 000306 k rmdb_rq_create_relation 000307 mrds_data_$max_attributes rmdb_rq_create_relation 000310 nargs rmdb_rq_create_relation 000311 rel_attr_list_exists rmdb_rq_create_relation 000312 rel_name rmdb_rq_create_relation 000324 sci_ptr rmdb_rq_create_relation 000326 selection_exp_exists rmdb_rq_create_relation 000327 sel_exp_len rmdb_rq_create_relation 000330 sel_exp_ptr rmdb_rq_create_relation 000332 undo_request rmdb_rq_create_relation 000363 unused rmdb_rq_create_relation 000373 z rmdb_rq_create_relation 000374 rmdb_ctl_ptr rmdb_rq_create_relation 000376 rmdb_create_rel_info_ptr rmdb_rq_create_relation 000400 rmdb_create_rel_info_alloc rmdb_rq_create_relation 000401 rmdb_ix_attrs_alloc rmdb_rq_create_relation 000402 rmdb_ix_attrs_ptr rmdb_rq_create_relation 000404 rmdb_sel_val_info_ptr rmdb_rq_create_relation 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 enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mdbm_util_$inconsistent_get_info rmdb_create_and_pop_rel rmdb_create_relation rmdb_execute_undo ssu_$abort_line ssu_$abort_line ssu_$arg_count ssu_$arg_list_ptr ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_arg error_table_$bad_subr_arg error_table_$badopt error_table_$inconsistent error_table_$unimplemented_version error_table_$wrong_no_of_args mrds_error_$bad_attr_name mrds_error_$max_attributes mrds_error_$no_inds mrds_error_$no_rel_attr mrds_error_$no_rel_name mrds_error_$no_sel_exp mrds_error_$previously_defined_index mrds_error_$rel_name_too_long mrds_error_$rst_name_too_long mrds_error_$undef_attr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000327 494 000340 80 000342 81 000346 83 000351 84 000352 85 000353 86 000354 87 000356 88 000357 90 000360 93 000406 97 000433 99 000455 101 000466 105 000506 108 000537 113 000567 115 000606 117 000610 121 000632 123 000656 126 000666 128 000671 130 000710 132 000715 134 000726 136 000727 139 000751 140 000754 141 000756 142 000770 143 000772 144 000776 146 000777 147 001001 149 001002 152 001022 153 001024 155 001025 157 001035 159 001036 163 001060 167 001115 172 001124 176 001144 178 001145 180 001165 184 001166 190 001171 193 001173 196 001205 197 001207 198 001213 199 001215 200 001220 201 001224 202 001226 203 001235 204 001251 205 001265 207 001267 208 001271 210 001273 212 001274 214 001326 216 001327 218 001330 220 001332 223 001370 226 001412 228 001415 229 001447 233 001465 235 001471 239 001472 253 001474 254 001476 256 001477 258 001506 260 001525 266 001535 268 001537 270 001547 273 001575 275 001601 277 001602 280 001603 282 001637 283 001642 287 001651 289 001652 291 001653 296 001654 299 001655 302 001676 306 001700 308 001713 310 001716 312 001722 314 001744 318 001751 321 002005 323 002016 325 002020 330 002021 332 002022 334 002033 336 002044 338 002045 340 002057 342 002067 345 002122 346 002130 349 002132 351 002134 354 002170 356 002173 360 002174 364 002176 366 002200 367 002220 371 002222 373 002233 374 002250 377 002317 381 002322 382 002330 383 002332 384 002333 385 002335 387 002337 389 002343 390 002354 392 002363 395 002400 398 002404 399 002410 401 002411 402 002423 403 002425 404 002431 407 002432 410 002500 412 002502 413 002503 415 002515 416 002532 417 002567 419 002572 421 002621 424 002636 426 002641 430 002642 436 002656 438 002663 440 002707 454 002710 456 002716 459 002731 461 002744 463 002753 ----------------------------------------------------------- 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