COMPILATION LISTING OF SEGMENT mrds_dsl_translate Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/24/88 1536.8 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 15* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 16* Added a call to the error procedure for the else clause error 17* checking after the call to 18* transaction_manager_$get_current_txn_id (mrds #143). 19* 2) change(85-11-20,Dupuis), approve(85-12-16,MCR7314), 20* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 21* This entry is being made to cover the change made on 85-11-15 by 22* Hergert. 23* 3) change(86-07-16,Dupuis), approve(86-08-05,MCR7491), audit(86-08-08,Blair), 24* install(86-08-15,MR12.0-1127): 25* 85-11-22 Hergert: Removed all references to var_exists_ptr. Moved 26* variable var_exists into select_list structure. This was done to 27* fix the bug where compiled set expressions that referenced a different 28* set of relations would fail to execute properly. (mrds #158) 29* 4) change(86-07-16,Dupuis), approve(86-08-05,MCR7491), audit(86-08-08,Blair), 30* install(86-08-15,MR12.0-1127): 31* 86-02-18 Hergert: Added code to fix bug where compiling a selection 32* expression using relations that have zero populations generated a 33* null search program. The effect of this was that any future use 34* of the compiled se resulted in tuple_not_found regardless if it 35* existed or not. (mrds #159) 36* 5) change(86-09-22,Dupuis), approve(86-09-30,MCR7554), audit(86-10-10,Blair), 37* install(86-10-13,MR12.0-1184): 38* Initialized dbcb.non_shared_to_shared and dbcb.scopes_changed to "0"b 39* (phx20565). 40* 6) change(87-08-17,Dupuis), approve(87-09-01,MCR7764), audit(87-09-04,Blair), 41* install(87-09-09,MR12.1-1100): 42* For char and bit varying literals, the pointer was being set to the 43* beginning of the string instead of to the length word. (This fix was 44* provided by John Hergert.) 45* 7) change(87-09-22,Hergert), approve(88-07-11,MCR7903), 46* audit(88-07-08,Dupuis), install(88-08-01,MR12.2-1073): 47* Rewritten for new parser. 48* 8) change(88-09-07,Dupuis), approve(88-09-20,MCR7995), audit(88-09-21,Blair), 49* install(88-09-26,MR12.2-1119): 50* Added code that initializes the transaction id. 51* END HISTORY COMMENTS */ 52 53 54 mrds_dsl_translate: proc (dbcb_ptr, area_ptr, caller, se_ptr, se_len, argp_ptr, descp_ptr, num_args, code); 55 56 /* NOTES: 57* 58* This procedure translates a given selection expression into a tabular form which can be efficiently utilized by 59* the data base search procedure. 60**/ 61 62 /* HISTORY: 63* 64* Initially written by J. A. Weeldreyer -- January, 1976. 65* 66* Modified by J. A. Weeldreyer to incorporate set operations for 67* MR6.0 -- April, 1977. 68* 69* Modified to recognize previous store operation, by Oris D. 70* Friesen -- Dec. 1977 71* 72* Modified by JA Weeldreyer to correct error in diagnosing missing 73* select clause -- March, 1978. 74* 75* Modified by O Friesen to set retrieve_flag -- April 1978. 76* 77* Modified by JA Weeldreyer to free old current select clause in 78* case of consecutive -currents -- August, 1978. 79* 80* Modified by JA Weeldreyer to incorporate MR7.0 changes -- 81* September, 1978. 82* 83* Modified by Al Kepner, May 1 1979, to add db_on and db_off 84* entries for debugging. 85* 86* Modified by Al Kepner, June 1, 1979 to use select_area. 87* 88* Modified by Rickie E. Brinegar on November 30, 1979 to use 89* mrds_debug_tool switches instead of the entry points db_on and 90* db_off. 91* 92* Modified by Jim Gray - - Feb. 1980, to add area_ptr parameter, to 93* pass on to both select and where clause routines. 94* 95* Modified by Jim Gray - - April 1980, to capture case where too 96* many arguments were given in call to dsl_$retrieve/modify/delete. 97* 98* 81-06-23 Jim Gray : changed trans_block to always call optimize, 99* even if where clause is present, instead of having where clause 100* do it, in order to clarify module structure and program logic. 101* 102* 81-06-26 Roger Lackey : to add code to support no_optimize and 103* print_search_order 104* 105* 81-07-02 Jim Gray : added internal routine 106* get_relation_statistics to initialize the new population 107* statistics now saved in the rm_rel_info structure, to reduce the 108* number of calls made to mu_get_rel_size. 109* 110* 81-07-06 Jim Gray : changed stategy for updating statistics to 111* take into account number of S.E.'s, rather than tuple variables, 112* and to update small relations on a per S.E. basis. 113* 114* 81-11-03 Davids: Added code to make sure that a non-simple 115* selection expression, i.e. one containing set operations contains 116* the correct number of simple SEs and set operators. This fixes TR 117* 11350 118* 119* 82-09-24 Davids: Replaced the call to mu_get_rel_size with a call 120* to mu_rel_statistics$record_statistics. 121* 122* 82-10-18 Davids: modified to use the corrected parameter list for 123* mu_rel_statistics$record_statistics 124* 125* 83-02-21 Moberg: Fixed bug where -current always allowed modify and delete 126* 127* 83-04-07 Davids: Explicitly declared the mod builtin function. Deleted 128* declarations to the unused varaibles dup_keys, total_keys, and tuple_count. 129* 130* 83-05-23 Harvey: Added code to support a shortened simple_typed_vector by 131* keepting track of when a new retrieve happens (-another) 132* 133* 84-07-19 Hergert: Modified call to set_user_vals because we pulled that 134* routine out of mrds_dsl_select_clause and made it an external procedure. 135* This was done as part of a performance improvement in the handling 136* of retrieves with -another. 137* 138* 84-07-26 Thanh Nguyen: Turn the valid retrieval bit (dbcb.val_rtrv) on 139* for the retrieve with "-another", because this bit may be turned off by the 140* previous delete with "-current". This is the fix for TR #17643, problem 141* number 122 in the mrds error list. 142* 143* 84-08-24 Hergert: Added variable sex to use as template to overlay 144* the selection expression. This was done so we could do a simple compare 145* for "-another" (if sex="-another") instead of having to call 146* mrds_dsl_get_token. 147* 148* 84-09-15 Hergert: Added code to handle new keyword "-compiled" and 149* also code to handle the initial compiling of select expressions. 150* 151* 85-04-14 Thanh Nguyen: Added code to save the transaction id (only when 152* DM file in used) for any new select expression and user started his own 153* transaction. 154* 155* 85-11-15 Hergert: Added code that saved txn_id when parsing 156* a select set. This allows the user to use -another with a DM relation 157* and select set. 158*/* INPUT CONDITIONS: 159* 160* dbcb_ptr points to a valid DBCB. 161* 162* se_ptr points to the beginning of the selection expression to be translated. 163* 164* se_len is the number of characters in the selection expression. 165* 166* argp_ptr points to the first of a list of argument pointers for values to be plugged into the selection 167* expression and to be used for the select list. 168* 169* descp_ptr points to a list of descriptor pointers corresponding to the argp_ptrs. 170* 171* num_args is the number of values specified. 172**/ 173 174 /* OUTPUT DEFINITIONS: 175* 176* If there are no errors, dbcb.pred_ptr, dbcb.select_ptr, dbcb.range_ptr, and dbcb.lit_ptr will point to tabular 177* representations of the selection expression predicate, -select clause, -range clause, and literals, respectively. 178* 179* If an error is detected, any previous selection expression tables will be deleted, and dbcb.pred_ptr, dbcb.select_ptr, 180* dbcb.range_ptr, and dbcb.lit_ptr will be set to null. 181* 182* argp_ptr, descp_ptr, and num_args will be updated to point to the first value not used by the selection 183* expression, if there are no errors; else they will be undefined. 184* 185* code = 0; if no errors are detected. 186* 187* code = mrds_error_$no_prior_se; if "-another" was specified and no valid selection expression has been previously 188* specified. 189* 190* code = mrds_error_$incomp_se; if -another has been specified for any caller other than retrieve. 191* 192* code = mrds_error_$missing_pred; if no predicate was found where one was expected. 193* 194* code = mrds_error_$missing_select; if no -select clause was found where one was expected. 195* 196* code = mrds_error_$missing_range; if no -range clause was found where one was expected. 197* 198* code = something else; if another error was detected by a subroutine. 199**/ 200 201 if first_time_thru then do; /* initialize options */ 202 first_time_thru = "0"b; 203 unspec(options) = "0"b; /* quickie init */ 204 options.ot, options.error = "1"b; 205 end; 206 207 dbcb.no_optimize, dbcb.print_search_order, dbcb.another_flag, 208 dbcb.current_flag = "0"b; 209 compiled_se_info_ptr = dbcb.compiled_se_info_ptr; 210 x_pred_leaf_ptr = null; 211 212 on cleanup call mrds_dsl_delete_se (dbcb_ptr, (caller), icode); 213 214 i = verify (sex, white_space); 215 if i ^= 0 216 then 217 if index (substr (sex, i), "-another") = 1 then do; 218 /* check for -another w/o whitespace */ 219 if caller = mrds_data_$caller_compile 220 then call error (mrds_error_$inval_comp_expr); 221 222 if dbcb.range_ptr = null 223 then /* if no existing s.e. */ 224 call error (mrds_error_$no_prior_se); 225 call mrds_dsl_set_user_vals$another (dbcb_ptr, area_ptr, 226 argp_ptr, 227 descp_ptr, num_args, icode); /* reset select list */ 228 if icode ^= 0 then call error (icode); 229 dbcb.another_flag = "1"b; /* let everyone know this is -another */ 230 dbcb.val_rtrv = "1"b; /* and for sure this is a valid expression */ 231 do i = 1 to dbcb.range_ptr -> range.num_vars; 232 dbcb.range_ptr -> range.tup_var (i).copy_for_current = 233 "0"b; 234 dbcb.range_ptr -> range.tup_var (i).copied_for_current = 235 "0"b; 236 end; 237 code = 0; /* be nice to caller */ 238 return; /* nothing more to do */ 239 end; /* if -another */ 240 241 242 else if index (substr (sex, i), "-compiled") = 1 then do; 243 /* already translated */ 244 245 if dbcb.compiled_se_info_ptr = null 246 then call error (mrds_error_$no_prior_se); 247 248 if caller = mrds_data_$caller_compile 249 then call error (mrds_error_$inval_comp_expr); 250 251 /* restore the saved dbcb pointers */ 252 253 se_index_ptr = argp_ptr -> ptr_template; 254 /* get se_index; It better be the first arg in arg list */ 255 argp_ptr = addrel (argp_ptr, 2); /* adjust arglist to pass over se_iindex */ 256 descp_ptr = addrel (descp_ptr, 2); /* and descriptor list*/ 257 num_args = num_args - 1; /* one less argument now */ 258 current_flag = "0"b; 259 260 /* make sure we have good index */ 261 if se_index > compiled_se_info.number_of_compiled_se | 262 se_index <= 0 then call error (mrds_error_$no_sel_exp); 263 if compiled_se_info.free (se_index) 264 then call error (mrds_error_$no_sel_exp); 265 266 dbcb.select_area_ptr = 267 compiled_se_info.se_info.saved_ptrs 268 .select_area_ptr (se_index); 269 dbcb.range_ptr = 270 compiled_se_info.se_info.saved_ptrs 271 .range_ptr (se_index); 272 dbcb.select_ptr = 273 compiled_se_info.se_info.saved_ptrs 274 .select_ptr (se_index); 275 dbcb.ti_ptr = 276 compiled_se_info.se_info.saved_ptrs 277 .ti_ptr (se_index); 278 dbcb.ss_ptr = 279 compiled_se_info.se_info.saved_ptrs 280 .ss_ptr (se_index); 281 dbcb.so_ptr = 282 compiled_se_info.se_info.saved_ptrs 283 .so_ptr (se_index); 284 dbcb.lit_ptr = 285 compiled_se_info.se_info.saved_ptrs 286 .lit_ptr (se_index); 287 dbcb.last_s_e_id_num = 288 compiled_se_info.se_info.se_id_num (se_index); 289 dbcb.dup_retain = 290 compiled_se_info.se_info.dup_retain (se_index); 291 292 dbcb.val_rtrv, /* init valid. flags */ 293 dbcb.val_dtr, 294 dbcb.new_select_expr = "1"b; 295 296 dbcb.non_shared_to_shared, dbcb.scopes_changed = "0"b; 297 298 if dbcb.ss_ptr ^= null 299 then dbcb.val_mod, dbcb.val_del = "0"b; 300 else dbcb.val_mod, dbcb.val_del = "1"b; 301 302 303 if compiled_se_info.x_leaf_ptr (se_index) ^= null 304 then do; /* we have .x.s to fill in */ 305 x_pred_leaf_ptr = 306 compiled_se_info.x_leaf_ptr (se_index); 307 /* find the right predicate list */ 308 if num_args < x_pred_leaf.number_of_x 309 then /* make sure we have enough args */ 310 call error (mrds_error_$insuff_args); 311 312 str_size = "0"b; 313 on stringsize str_size = "1"b; 314 315 do i = 1 to x_pred_leaf.number_of_x; 316 desc_ptr, x_pred_leaf.lit_desc_ptr = descp_ptr -> ptr_template; 317 if descriptor.type = varying_bit_dtype 318 | descriptor.type = varying_char_dtype 319 then x_pred_leaf.lit_arg_ptr = addrel(argp_ptr -> ptr_template,-1); /* get the length too */ 320 else x_pred_leaf.lit_arg_ptr = argp_ptr -> ptr_template; 321 argp_ptr = addrel (argp_ptr, 2); 322 /* adjust arglist */ 323 descp_ptr = addrel (descp_ptr, 2); 324 /* and descriptor list*/ 325 num_args = num_args - 1; /* and arg count */ 326 327 if ^mu_valid_data_type$valid_scalar_data_type 328 (x_pred_leaf.lit_desc_ptr -> bit36) 329 then call error (mrds_error_$inv_literal_type); 330 331 lit_length = x_pred_leaf.info.lit_val_len (i); 332 if x_pred_leaf.info.encode_proc (i) then do; 333 /* if must encode */ 334 if x_pred_leaf.lit_desc_ptr -> bit36 ^= 335 x_pred_leaf.info.encode_in_desc_ptr (i) 336 -> bit36 then do; /* if must convert also */ 337 338 if x_pred_leaf.info.encode_bit_len (i) 339 > 2376 340 then /* get some space */ 341 /* 2376 = length of work_space in bits */ 342 allocate encode_space 343 in (select_area); 344 else es_ptr = addr (work_space); 345 encode_space = "0"b; 346 347 call mu_convert$convert_data (x_pred_leaf 348 .lit_arg_ptr, 349 x_pred_leaf.lit_desc_ptr, es_ptr, 350 x_pred_leaf.info 351 .encode_in_desc_ptr (i), icode); 352 if icode ^= 0 then call error (icode); 353 if str_size 354 then call error ( 355 mrds_error_$inv_comparison); 356 357 encode_arg_list.user_val_ptr = es_ptr; 358 end; 359 else encode_arg_list.user_val_ptr = 360 x_pred_leaf.lit_arg_ptr; 361 362 encode_arg_list.user_desc_ptr = 363 x_pred_leaf.encode_in_desc_ptr (i); 364 365 if x_pred_leaf.info.encode_in_desc_ptr (i) 366 -> descriptor.type = 367 varying_char_dtype 368 /* see if need to adjust ptr */ 369 | x_pred_leaf.info 370 .encode_in_desc_ptr (i) 371 -> descriptor.type = varying_bit_dtype 372 then 373 encode_arg_list.user_val_ptr = 374 addr (encode_arg_list.user_val_ptr 375 -> varying.string); 376 377 encode_arg_list.db_desc_ptr = 378 x_pred_leaf.info 379 .encode_out_desc_ptr (i); 380 381 encode_arg_list.db_val_ptr = 382 x_pred_leaf.info.lit_val_ptr (i); 383 384 encode_arg_list.code_ptr = addr (icode); 385 encode_arg_list.coded_ptr = addr (FB35_DESC); 386 call cu_$generate_call (x_pred_leaf 387 .encode_entry (i), 388 addr (encode_arg_list)); 389 if icode ^= 0 then call error (icode); 390 /* encode the value */ 391 end; 392 393 else do; /* if not encoding */ 394 if x_pred_leaf.lit_desc_ptr -> bit36 ^= 395 x_pred_leaf.info.encode_out_desc_ptr (i) 396 -> bit36 then do; /* must convert */ 397 398 call mu_convert$convert_data (x_pred_leaf 399 .lit_arg_ptr, 400 x_pred_leaf.lit_desc_ptr, 401 x_pred_leaf.info.lit_val_ptr (i), 402 x_pred_leaf.info 403 .encode_out_desc_ptr (i), icode); 404 if icode ^= 0 then call error (icode); 405 if str_size 406 then call error ( 407 mrds_error_$inv_comparison); 408 end; 409 else x_pred_leaf.info.lit_val_ptr (i) 410 -> literal_bit_string = 411 x_pred_leaf.lit_arg_ptr 412 -> literal_bit_string; 413 end; /* if not encoding */ 414 end; /* do loop */ 415 revert stringsize; 416 end; /* if we have .x.'s */ 417 418 call mrds_dsl_select_clause_$compiled_clause (dbcb_ptr, 419 area_ptr, (caller), argp_ptr, descp_ptr, num_args, 420 compiled_se_info.temp_rel_list_ptr (se_index), 421 current_flag, icode); 422 if icode ^= 0 then call error (icode); 423 424 if dbcb.ss_ptr = null 425 then dbcb.so_ptr -> search_ops.ic = 1;/* make sure the search program is reset */ 426 else do; 427 ss_ptr = dbcb.ss_ptr; 428 do i = 1 to select_sets.nitems; 429 select_sets.items.so_ptr (i) -> search_ops.ic = 430 1; 431 end; 432 end; 433 if dbcb.transactions_needed & dbcb.user_started_transaction then do; 434 call transaction_manager_$get_current_txn_id (mstxn_txn_id, icode); 435 if icode ^= dm_error_$no_current_transaction then 436 dbcb.se_transaction_id = mstxn_txn_id; 437 else call error (icode); 438 end; 439 else dbcb.se_transaction_id = "0"b; 440 441 return; 442 end; /* -compiled */ 443 444 445 else do; /* process a selection expression */ 446 447 if index (substr (sex, i), "-current") ^= 1 then do; 448 current_flag = "0"b; 449 call mrds_dsl_delete_se (dbcb_ptr, (caller), icode); 450 /* delete prev. s.e. tables */ 451 if icode ^= 0 then call error (icode); 452 end; 453 else current_flag = "1"b; 454 455 dbcb.val_rtrv, /* init valid. flags */ 456 dbcb.val_dtr, 457 dbcb.val_mod, 458 dbcb.val_del = "1"b; 459 460 if dbcb.transactions_needed 461 & dbcb.user_started_transaction then do; 462 call transaction_manager_$get_current_txn_id ( 463 mstxn_txn_id, icode); 464 if icode ^= dm_error_$no_current_transaction 465 then 466 dbcb.se_transaction_id = mstxn_txn_id; 467 else call error(icode); 468 end; 469 else dbcb.se_transaction_id = "0"b; 470 471 call mrds_dsl_parser (dbcb_ptr, area_ptr, caller, 472 addr (options), se_ptr, se_len, argp_ptr, descp_ptr, 473 num_args, current_flag, icode); 474 if icode ^= 0 then call error (icode); 475 476 if options.pse 477 then call mu_print_error$print_se (se_ptr, se_len); 478 479 end; 480 481 dbcb.prev_select = "0"b; /* so as not to mess up -current */ 482 code = 0; /* be nice to caller */ 483 484 exit: 485 return; 486 487 error: 488 proc (cd); 489 490 /* Internal error procedure */ 491 492 dcl cd fixed bin (35); /* internal status code */ 493 494 call mrds_dsl_delete_se (dbcb_ptr, (caller), code); /* if error, don't leave incomplete tables */ 495 code = cd; /* pass bad news back to caller */ 496 go to exit; 497 498 end error; 499 500 set_options: 501 entry (mode_flags_ptr); 502 503 /* entry to set options from command level. pso_sw controls -pso in select 504* expression. ot_sw controls -no_ot in select expression. pse_sw controls 505* whether or not the selection expression gets printed out. 506* */ 507 508 if first_time_thru then do; /* initialize options */ 509 first_time_thru = "0"b; 510 unspec(options) = "0"b; /* quickie init */ 511 options.ot, options.error = "1"b; 512 end; 513 514 if mode_flags.list_sw then do; /* listing modes */ 515 mode_flags.value.pso = options.pso; 516 mode_flags.value.pse = options.pse; 517 mode_flags.value.ot = options.ot; 518 mode_flags.value.force = options.force; 519 mode_flags.value.error = options.error; 520 end; 521 else do; /* setting modes */ 522 if mode_flags.selected.pso then options.pso = mode_flags.value.pso; 523 if mode_flags.selected.pse then options.pse = mode_flags.value.pse; 524 if mode_flags.selected.ot then options.ot = mode_flags.value.ot; 525 if mode_flags.selected.force 526 then options.force = mode_flags.value.force; 527 if mode_flags.selected.error 528 then options.error = mode_flags.value.error; 529 end; 530 531 return; 532 1 1 /* BEGIN mrds_dbcb.incl.pl1 -- jaw, 11/7/78 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(85-11-17,Dupuis), approve(85-12-16,MCR7314), 1 7* audit(86-02-04,Brunelle), install(86-02-05,MR12.0-1013): 1 8* This entry is being made to cover the change made on 85-07-01 by Thanh 1 9* Nguyen. The scopes_changed flag was added to make checking for this 1 10* more efficient (mrds error list #137). 1 11* 2) change(86-06-10,Blair), approve(86-08-07,MCR7491), 1 12* audit(86-08-07,Gilcrease), install(86-08-15,MR12.0-1127): 1 13* Add a bit called dont_check_txn_id to indicate whether or not we should 1 14* care if multiple txns use the same selection_expression. (mrds #156) 1 15* 3) change(87-11-23,Hergert), approve(88-06-28,MCR7903), 1 16* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 1 17* Added parser_work_area_ptr and mrds_se_info_ptr for new parser. 1 18* END HISTORY COMMENTS */ 1 19 1 20 1 21 /* WARNING 1 22* If the dbcb structure is changed then the mrds_data_ 1 23* item saved_res_version MUST be incremented to invalidate all 1 24* existing saved resultants 1 25**/ 1 26 1 27 /* HISTORY : 1 28* 1 29* modified by Jim Gray - - 80-10-24, to add new_select_expr bit for 1 30* tid_list management 1 31* 1 32* 81-1-9 Jim Gray : added like reference for ease in making the 1 33* phony resultant in mu_database_index, without having the area dcl 1 34* included. 1 35* 1 36* 81-06-17 Roger Lackey : added last_store_rel_name for use by 1 37* mrds_dsl_store 1 38* 1 39* 81-06-26 Roger Lackey : Added no_optimize and print_search_order 1 40* switches 1 41* 1 42* 81-07-06 Jim Gray : added identifier for the current selection 1 43* expression, so that relation statistics can be updated relative 1 44* to number of selection expressions seem. Also removed init for 1 45* last_store_rel_name, as this iw now properly done in 1 46* mrds_dsl_init_res. 1 47* 1 48* 81-07-17 Roger Lackey : added pred_ptr and unused_ptrs. 1 49* 1 50* 82-08-19 Mike Kubicar : added store_vector field. This is needed 1 51* for the conversion to the relation manager. 1 52* 1 53* 82-08-23 Davids: added the relmgr_entries and access_costs 1 54* substructures so that the entries and costs can change 1 55* depending on the type of database that is opened. 1 56* 1 57* 82-09-09 Mike Kubicar : added modify_vector field. This is needed 1 58* since modify uses a different vector type (general) than does store. 1 59* 1 60* 82-09-20 Davids: changed names of (store modify)_vector to 1 61* (store modify)_vector_ptr. Also (delete modify)_tuple_by_id to 1 62* (delete modify)_tuples_by_id. added the element cursor_storage_ptr 1 63* which should be inited to null and will be set by mu_cursor_manager_$get 1 64* during the first call. 1 65* 1 66* 82-09-21 Davids: renamed cursor_storage_ptr to cursor_ptrs_storage_ptr 1 67* since it deals with the pointers to the cursors and not the cursors 1 68* themelves and added the element cursor_storage_area_ptr which points 1 69* to the area where the cursors are kept. 1 70* 1 71* 82-09-22 Davids: renamed the transact_ctl_seg to transactions_needed. 1 72* the transact_ctl_seg always had a value of 0 and really didn't mean 1 73* anything. 1 74* 1 75* 82-09-22 Mike Kubicar : added create_relation, create_index and 1 76* destroy_relation_by_opening to relmgr_entries. They are needed 1 77* by mrds_dsl_define_temp_rel. 1 78* 1 79* 82-09-24 Donna Woodka : added put_tuple to relmgr_entries. It 1 80* is needed by mu_store. 1 81* 1 82* 82-11-12 Davids: changed the declaration of the access_costs from fixed 1 83* bin to float bin since the values are not integers. 1 84* 1 85* 83-02-02 Davids: added the dbc_uid element. This will allow mrds to make 1 86* sure that the dbc_ptr still points to the correct segment. Element was 1 87* added to the end of the structure to allow modules that don't use 1 88* the element to continue to reference the dbcb structure without recompiling. 1 89* 1 90* 83-02-25 Davids: added the concurrency_on and rollback_on elements. These 1 91* are needed so that temp rels can be created with the same file attributes 1 92* as the permanent relations. 1 93* 1 94* 83-05-02 Mike Kubicar : Deleted get_next_search_specification_ptr and 1 95* added the resultant_in_pdir bit. 1 96* 1 97* 83-05-18 Davids: reduced the number of reserved bits to 14 (from 15) and 1 98* added the res_already_made element. 1 99* 1 100* 83-05-24 Mike Kubicar : Updated the relation manager calling sequences. 1 101* 1 102* 83-08-03 Mike Kubicar : Added the element_id_list_segment_ptr and removed 1 103* one of the unused pointers. 1 104* 1 105* 83-09-20 Ron Harvey: Added relmgr_entries.get_population. 1 106* 1 107* 84-08-27 John Hergert: Created compiled_se_info_ptr from unused_ptrs(2) 1 108* leaving unused_ptrs(1). 1 109* 1 110* 85-01-15 Thanh Nguyen: Added the work_area_ptr and removed the last 1 111* unused_ptrs (1). 1 112* 1 113* 85-04-12 Thanh Nguyen: Added user_started_transaction and 1 114* non_shared_to_shared flags. Also added se_transaction_id and some more 1 115* spare ptrs, entries and reserved storages for future enhancement, since 1 116* we changed the saved_res_version from rslt0001 to rslt0002. 1 117* 1 118* 85-07-01 Thanh Nguyen: Added scopes_changed flag. This flag is set by 1 119* common routine of mrds_dsl_set_scope, reset by mrds_dsl_optimize and 1 120* mrds_dsl_gen_srch_prog when building of a new search_vars. 1 121**/ 1 122 1 123 1 124 /* this structure is based on the {unique_name}.mrds.dbcb segment 1 125* that constitutes the non-secure portion of the resultant model that is 1 126* created during the opening of a database. it contains variables that 1 127* are used during the runtime access of the database, and an area 1 128* for evaluation of requests. it points to four other 1 129* segments in the resultant model, {unique_name}.mrds.rdbi, the secure 1 130* portion of the resultant(see mdbm_rm_db_info.incl.pl1), 1 131* {unique_name}.mrds.select, an area for selection expression evaluation, 1 132* {unique_name}.mrds.curdat, and {unique_name}.mrds.stadat, two segments 1 133* used in the elimination of duplicate tuples during a retrieve. 1 134* the dbcb area holds the structure in mdbm_scope_info.incl.pl1 1 135* that is used when the database is using the file scope mechanism 1 136* for concurrency control over file readying. the segment overlayed via 1 137* mrds_dbc.incl.pl1 structure is pointed to and also handles concurrency control, 1 138* across database openings. the pointer to this dbcb structure is kept in a table 1 139* which associates database indexes(returned from a call to dsl_$open), with particular 1 140* opening instances of resultant models. (see mu_database_index routine) */ 1 141 1 142 dcl 1 dbcb aligned based (dbcb_ptr), /* DBCB -- non-secure portion */ 1 143 2 data like dbcb_data, 1 144 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbcb.static_area)))); 1 145 1 146 dcl dbcb_ptr ptr; 1 147 1 148 declare 1 dbcb_data based, /* info part of dbcb, separated out so that 1 149* like references can avoid getting the area declaration */ 1 150 2 rdbi_ptr ptr, /* pointer to write protected mdbm_util_ info. */ 1 151 2 range_ptr ptr, /* ptr to range structure, or null */ 1 152 2 select_ptr ptr, /* ptr to select list, or null */ 1 153 2 sv_ptr ptr, /* pointer to search variables */ 1 154 2 so_ptr ptr, /* pointer to search operators */ 1 155 2 ti_ptr ptr, /* pointer to tuple info */ 1 156 2 lit_ptr ptr, /* pointer to the literal area, or null */ 1 157 2 current_ptr ptr, /* ptr to select list resulting from -current clause */ 1 158 2 ss_ptr ptr, /* ptr to select sets block if not simple s.e. */ 1 159 2 retr_info_ptr ptr, /* ptr to retrieve info area */ 1 160 2 trel_info_ptr ptr, /* ptr to retrieve info area */ 1 161 2 sti_ptr ptr, /* pointer to store info */ 1 162 2 dbc_ptr ptr, /* pointer to the data base control segment */ 1 163 2 sfi_ptr ptr, /* points to head of scalar function list */ 1 164 2 scope_ptr ptr, /* points to array of scope tuples */ 1 165 2 select_area_ptr ptr, /* ptr to area for current selection expression allocations */ 1 166 2 current_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 1 167* for eliminating duplicate tuples. */ 1 168 2 static_data_ptr ptr, /* ptr to one of 2 segments used by mrds_dsl_retrieve 1 169* for eliminating duplicate tuples. */ 1 170 2 store_area_ptr ptr, /* temp storage area for dsl_$store */ 1 171 2 retrieve_area_ptr ptr, /* temp storage for dsl_$retrieve */ 1 172 2 modify_area_ptr ptr, /* temp storage area for dsl_$modify */ 1 173 2 delete_area_ptr ptr, /* temp storage area for dsl_$delete */ 1 174 2 def_temp_rel_area_ptr ptr, /* temp storage area for dsl_$define_temp_rel */ 1 175 2 pred_ptr ptr, /* Pointer to pred_array */ 1 176 2 store_vector_ptr ptr, /* Vector structure used during store operations */ 1 177 2 modify_vector_ptr ptr, /* Used during modifies */ 1 178 2 element_id_list_segment_ptr ptr, /* Points to the segment used to hold element_id_list structures */ 1 179 2 compiled_se_info_ptr ptr, /* points to the segment containing all info on compiled sexs */ 1 180 2 work_area_ptr ptr, /* Work area for encode/decode value allocations in mu_retrieve */ 1 181 2 se_info_ptr ptr, /* Points to se_info struct. Primarily for error reports */ 1 182 2 parser_work_area_ptr ptr, /* work area for parser */ 1 183 2 reserved_ptrs (4) ptr, /* Reserved for future use */ 1 184 2 another_flag bit (1) unal, /* on if predicate was -another */ 1 185 2 current_flag bit (1) unal, /* on if predicate was -current clause */ 1 186 2 dbc_incr bit (1) unal, /* on if dbc open mode has been incremented for this user */ 1 187 2 delete_flag bit (1) unal, /* On if search was called from mrds_dsl_sec_delete */ 1 188 2 dup_retain bit (1) unaligned, /* On if dup tuples allowed for retrieval */ 1 189 2 prev_select bit (1) unal, /* on if prev. select block processed in this s.e. */ 1 190 2 possible_op bit (1) unal, /* on of arith op. allowed */ 1 191 2 sel_clause bit (1) unal, /* on if currently in select clause */ 1 192 2 dsm_sw bit (1) unal, /* on if data base was opened via data submodel */ 1 193 2 val_rtrv bit (1) unal, /* if s.e. valid for retrieve */ 1 194 2 val_mod bit (1) unal, /* for modify */ 1 195 2 val_del bit (1) unal, /* for delete */ 1 196 2 val_dtr bit (1) unal, /* for define temp rel */ 1 197 2 transactions_needed bit (1) unal, /* On => transaction must be started or in progress does 1 198* not imply that the database is of type page_file */ 1 199 2 open_mode bit (3) unal, /* 0=>unknown, 1=>r, 2=>u, 3=>er, 4=>eu, >4=>bad */ 1 200 2 new_select_expr bit (1) unal, /* on => starting a new tid list management period */ 1 201 2 no_optimize bit (1) unal, /* On => no optimize */ 1 202 2 print_search_order bit (1) unal, /* On => print the search order */ 1 203 2 resultant_in_pdir bit (1) unal, /* On => Temp segments are in the process dir */ 1 204 2 res_already_made bit (1) unal, /* On => resultant has been made based on a saved copy */ 1 205 2 user_started_transaction bit (1) unal, /* On => user already started his own transaction. */ 1 206 2 non_shared_to_shared bit (1) unal, /* On => user changed the scope from non shared to shared 1 207* inside a sequence of -another selection expression. */ 1 208 2 scopes_changed bit (1) unal, /* On => scopes had been changed by set_scopes or delete_scopes */ 1 209 2 dont_check_txn_id bit (1) unal, /* On => cpmd needs same selection exp across multiple txns */ 1 210 2 reserved bit (10) unal, /* reserved for future use */ 1 211 2 nseq_sch fixed bin (35), /* no. tuples located via sequential search */ 1 212 2 nind_sch fixed bin (35), /* no. tuples located via index search */ 1 213 2 nhash_sch fixed bin (35), /* no. tuples located via hash search */ 1 214 2 nlk_sch fixed bin (35), /* no tuples located via link search */ 1 215 2 cur_lit_offset fixed bin (35), /* current bit offset in literal string */ 1 216 2 dbi fixed bin (35), /* database index for this opening */ 1 217 2 last_s_e_id_num fixed bin (35), /* identifying number for last selection expression seen */ 1 218 2 se_transaction_id bit (36) aligned, /* transaction id from beginning of select expression */ 1 219 2 last_store_rel_name char (32), /* Name of relation last used for store */ 1 220 2 cursor_ptrs_storage_ptr ptr, /* pointer to space where cursor ptrs are stored */ 1 221 2 cursor_storage_area_ptr ptr, /* pointer to area where the cursors are kept */ 1 222 2 reserved_words (10) fixed bin (35), /* Reserved for future use */ 1 223 2 relmgr_entries, /* relation manager entries */ 1 224 3 open entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 1 225 3 close entry (bit (36) aligned, fixed bin (35)), 1 226 3 create_cursor entry (bit (36) aligned, ptr, ptr, fixed bin (35)), 1 227 3 destroy_cursor entry (ptr, ptr, fixed bin (35)), 1 228 3 set_scope entry (bit (36) aligned, bit (2) aligned, bit (2) aligned, fixed bin (35)), 1 229 3 delete_tuples_by_id entry (ptr, ptr, fixed bin (35), fixed bin (35)), 1 230 3 modify_tuples_by_id entry (ptr, ptr, ptr, fixed bin (35), fixed bin (35)), 1 231 3 get_tuple_by_id entry (ptr, bit (36) aligned, ptr, ptr, ptr, fixed bin (35)), 1 232 3 get_tuples_by_spec entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)), 1 233 3 get_tuple_id entry (ptr, ptr, ptr, ptr, fixed bin (35)), 1 234 3 put_tuple entry (ptr, ptr, bit (36) aligned, fixed bin (35)), 1 235 3 get_count entry (ptr, ptr, fixed bin (35), fixed bin (35)), 1 236 3 get_duplicate_key_count entry (ptr, bit (36) aligned, fixed bin (17), fixed bin (35), fixed bin (35)), 1 237 3 get_population entry (ptr, fixed bin (35), fixed bin (35)), 1 238 3 create_relation entry (char (*), char (*), ptr, ptr, bit (36) aligned, bit (36) aligned, fixed bin (35)), 1 239 3 create_index entry (bit (36) aligned, ptr, bit (36) aligned, fixed bin (17), bit (36) aligned, fixed bin (35)), 1 240 3 destroy_relation_by_path entry (char (*), char (*), fixed bin (35)), 1 241 3 reserved_entries (5) entry (), 1 242 2 access_costs, /* access costs for permute */ 1 243 3 total_primary_key_cost float bin, 1 244 3 access_cost float bin, 1 245 3 access_overhead float bin, 1 246 3 us_access_cost float bin, 1 247 3 os_access_cost float bin, 1 248 2 dbc_uid bit (36) aligned, /* uid of the segment containing the dbc structure */ 1 249 2 concurrency_on bit (1) unal, /* "1"b implies dmfile concurrency is being used */ 1 250 2 rollback_on bit (1) unal; /* "1"b iomplies before journaling is to be done */ 1 251 1 252 /* END mrds_dbcb.incl.pl1 */ 1 253 1 254 533 534 2 1 /* BEGIN mrds_range.incl.pl1 -- jaw, 10/20/78 */ 2 2 2 3 /* Modified 83-04-22 by R. Harvey to add needed_bits */ 2 4 2 5 dcl 1 range aligned based (range_ptr), 2 6 2 num_vars fixed bin, /* number of tuple variables */ 2 7 2 tup_var (mrds_data_$max_tup_var refer (range.num_vars)), /* info for each tuple variable */ 2 8 3 name char (mrds_data_$max_id_len), /* name of tuple variable */ 2 9 3 temp_rel bit (1) unal, /* on if temporary relation */ 2 10 3 used bit (1) unal, /* 1 => this tuple variable is referenced by 2 11* a -select clause. */ 2 12 3 whole_tuple_selected bit (1) unal, /* the whole tuple variable is referenced in the select clause */ 2 13 3 copy_for_current bit (1) unal, /* -current requests attributes not previously retrieved */ 2 14 3 copied_for_current bit (1) unal, /* tuple copied during previous -current */ 2 15 3 reserved bit (31) unal, /* reserved for future use */ 2 16 3 rel_index fixed bin, /* index to assoc. relation */ 2 17 3 stv_ptr ptr, /* simple typed vector */ 2 18 3 idl_ptr ptr, /* id_list ptr */ 2 19 3 needed_bits aligned, 2 20 4 attr (mrds_data_$max_attributes) bit (1) unal, 2 21 3 ri_ptr ptr; /* pointer to rel info for assoc. relation */ 2 22 2 23 dcl range_ptr ptr; 2 24 2 25 /* END mrds_range.incl.pl1 */ 2 26 535 536 3 1 /* BEGIN mrds_select_sets.incl.pl1 rdl, 2/27/79 */ 3 2 3 3 dcl 1 select_sets aligned based (ss_ptr), 3 4 2 dup_retain bit (1) unal, /* ON => duplicate selected tuples must be preserved */ 3 5 2 pad bit (35) unal, /* Resevered for furture use */ 3 6 2 domains (mrds_data_$max_select_items) char (32), /* domain name of each select item */ 3 7 2 nitems fixed bin, /* Number of items in this structure */ 3 8 2 items (nitems_init refer (select_sets.nitems)), 3 9 3 oper_flag bit (1) unal, /* On => this item is an operator */ 3 10 3 pad bit (35) unal, /* Reserved for future use */ 3 11 3 op_code fixed bin, /* Valid only if oper_flag id on 3 12* 1 -> union 3 13* 2 => intersection 3 14* 3 => Difference */ 3 15 3 range_ptr ptr, /* Valid only if oper_flag is OFF, these pointers are */ 3 16 3 select_ptr ptr, /* used by mrds_dsl_search */ 3 17 3 so_ptr ptr, 3 18 3 ti_ptr ptr; /* to tuple info structure for this block */ 3 19 3 20 3 21 dcl ss_ptr ptr; /* Pointer to the selected sets */ 3 22 dcl nitems_init fixed bin; 3 23 3 24 dcl UNION fixed bin internal static options (constant) init (1); 3 25 dcl INTERSECTION fixed bin internal static options (constant) init (2); 3 26 dcl DIFFERENCE fixed bin internal static options (constant) init (3); 3 27 3 28 /* END mrds_dsl_select_sets.incl.pl1 */ 3 29 537 538 4 1 /* BEGIN INCLUDE FILE mdbm_seg_area.incl.pl1 - - Jim Gray 2/19/79 */ 4 2 4 3 /* these structures provide a standard for 4 4* 1) using an entire segment as an area, managed by the area manager 4 5* 2) a constant header, that has an offset to the major common structure in the area 4 6* the pointer to that structure is obtained via pointer(model_seg_ptr, model_seg.offset) 4 7* the model_area_ptr is obtained via pointer(model_seg_ptr, size(model_seg)) */ 4 8 4 9 declare 1 model_seg aligned based (model_seg_ptr), /* segment header, not to be changed */ 4 10 2 struct_offset bit (18), /* offset to major structure allocated in area */ 4 11 2 padding (3) fixed bin ; /* to set up four word boundary */ 4 12 4 13 declare model_seg_ptr ptr int automatic init (null ()); 4 14 4 15 4 16 declare model_area area (sys_info$max_seg_size - size (model_seg)) based (model_area_ptr) ; /* segment area */ 4 17 4 18 declare model_area_ptr ptr int automatic init (null ()); 4 19 4 20 dcl size builtin; 4 21 4 22 /* END INCLUDE FILE mdbm_seg_area.incl.pl1 */ 4 23 539 540 5 1 /* BEGIN INCLUDE FILE mrds_select_area.incl.pl1 (Kepner Multics) 05/29/79 1736.1 mst Tue */ 5 2 dcl 1 select_area_struct aligned based (select_area_struct_ptr), /* major structure in segment for current selection expression allocations */ 5 3 2 version fixed bin, 5 4 2 dbcb_ptr ptr; /* ptr ptr to dbcb */ 5 5 5 6 dcl select_area_struct_ptr ptr int automatic init (null ()); 5 7 5 8 dcl select_area area (sys_info$max_seg_size - size(model_seg)) based (select_area_ptr); 5 9 5 10 dcl select_area_ptr ptr int automatic init (null ()); 5 11 /* END INCLUDE FILE mrds_select_area.incl.pl1 */ 5 12 541 542 6 1 /* Begin mrds_compiled_se_info.incl.pl1 -- John Hergert 09/01/84 6 2* Data structure to hold all pertinent information regarding compiled 6 3* selection expressions. Most of this information is put into the dbcb 6 4* variables having the same names when the compiled selection is referenced. 6 5**/ 6 6 6 7 6 8 /****^ HISTORY COMMENTS: 6 9* 1) change(87-01-22,Hergert), approve(88-05-19,MCR7903), 6 10* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 6 11* Removed all references to var_exists_ptr. 6 12* END HISTORY COMMENTS */ 6 13 6 14 6 15 dcl 1 compiled_se_info aligned based (compiled_se_info_ptr), 6 16 2 real_select_area_ptr ptr, /* the real one assigned at open time */ 6 17 2 compile_area_ptr ptr, /* run time work area */ 6 18 2 temp_x_leaf_ptr ptr, /* temp place to hold ptr to pred_leaf_list of .x.'s */ 6 19 2 temp_temp_rel_list_ptr ptr, /* temporary holding spot for list of temp rels */ 6 20 2 number_of_compiled_se /* count of number of cse's weve had in this opening */ 6 21 fixed bin (35), 6 22 6 23 6 24 2 se_info (1 /* various peices of information needed to describe the se */ 6 25 refer (compiled_se_info.number_of_compiled_se)), 6 26 3 free bit(1) unal, /* indicates whether this se is being used or not */ 6 27 3 dup_retain bit(1) unal, /* se had a -dup in it */ 6 28 3 reserved bit(34) unal, /* a few spares */ 6 29 3 se_id_num fixed bin(35), /* the unique id num for the se */ 6 30 3 seg_ptr ptr, /* points to seg that has compiled se */ 6 31 3 saved_ptrs, /* these point to the various tables in the seg */ 6 32 5 select_area_ptr 6 33 ptr, 6 34 5 range_ptr ptr, 6 35 5 select_ptr ptr, 6 36 5 ti_ptr ptr, 6 37 5 ss_ptr ptr, 6 38 5 so_ptr ptr, 6 39 5 temp_rel_list_ptr ptr, 6 40 5 x_leaf_ptr ptr, /* ptr to list of ptrs to pred leaves for .x.'s */ 6 41 5 lit_ptr ptr, 6 42 5 reserved (5) ptr; 6 43 6 44 dcl compiled_se_info_ptr ptr; 6 45 6 46 6 47 6 48 /* info relating to the attributes and the literal for filling .X.'s */ 6 49 6 50 dcl 1 x_pred_leaf based (x_pred_leaf_ptr) aligned, 6 51 2 number_of_x fixed bin (35), /* number of .x. specified in this selection expr */ 6 52 2 lit_arg_ptr ptr, /* temp pointer to literal arg */ 6 53 2 lit_desc_ptr ptr, /* temp pointer to literal desc */ 6 54 2 info (mrds_data_$max_pred_nodes refer (x_pred_leaf.number_of_x)), /* this should be big enough */ 6 55 3 encode_proc bit unal, /* does this .x. have to be encoded */ 6 56 3 pad bit(35) unal, 6 57 3 encode_entry entry, /* encode proc */ 6 58 3 encode_in_desc_ptr ptr, /* ptr to input to encode descrptior */ 6 59 3 encode_out_desc_ptr ptr, /* ptr to encoded descrptior */ 6 60 3 encode_bit_len fixed bin(35), /* length in bits of encoded value */ 6 61 3 lit_val_len fixed bin(35), /* length of value in bits to go in lit pool */ 6 62 3 lit_val_ptr ptr; /* ptr to value in lit pool */ 6 63 6 64 6 65 dcl x_pred_leaf_ptr ptr; 6 66 6 67 6 68 /* array of names for the temp rels used in a cse */ 6 69 /* these are used to make sure the temp isnt redefined on us after the se is compiled */ 6 70 dcl 1 temp_rel_list based (trl_ptr) aligned, 6 71 2 number_of_temp_rels fixed bin(35), /* total number of temp rels in se including sets */ 6 72 2 temp_rel_info (mrds_data_$max_temp_rels) , 6 73 3 name char(32), /* model name */ 6 74 3 index fixed bin(35); /* temp rel index */ 6 75 6 76 6 77 dcl trl_ptr ptr; 543 544 7 1 /* BEGIN mrds_search_ops.incl.pl1 -- 2/23/79 */ 7 2 7 3 /* HISTORY: 7 4* 7 5* 81-06-01 Jim Gray : removed assn_type and len from the move_info 7 6* structure, since these are not used with the advent of mu_covert. 7 7* 7 8* 81-06-30 Jim Gray : added range_val_ptr to init_info structure, 7 9* so that ranges (10 < x < 20) could be handled in one call to 7 10* vfile select, instead of two. Also added range bit to show when 7 11* usable. 7 12* 7 13* 81-07-06 Jim Gray : changed init_info op type encodings for those 7 14* access methods currently available in mrds, plus added bits for 7 15* whether mrds or vfile needs to do tid list intersection, and 7 16* whether an unordered, faster sequential search can be done. 7 17* 7 18* 81-07-18 Jim Gray : added many comments, after changing the named 7 19* constants to refer to the new access methods. 7 20* 7 21* 82-09-01 Mike Kubicar : converted from tuple structure to vector 7 22* structure. This meant changing fields which pointed directly to 7 23* tuple space to use indices into the tuple_info structure instead. 7 24* 7 25* 82-10-01 Davids: removed the encd_hash flag from move_info since it 7 26* is never used and removed the encd_index flag from move_info since 7 27* changes to mrds_dsl_gen_srch_prog have rendered it obsolute. Increased 7 28* size of the reserved element from 28 to 30 bits. 7 29* 7 30* 83-04-04 Mike Kubicar : Removed init_info.unordered. It is no longer 7 31* used. 7 32* 7 33* 83-04-22 Mike Kubicar : Added search_specification_ptr to select_info. 7 34* This is the search spec to be used when retrieving tuple from a relation. 7 35* Also deleted the init_info strucuture and associated constants. It is no 7 36* longer used. 7 37* 7 38* 83-05-31 Mike Kubicar : Renamed search_specification_ptr to 7 39* relation_search_specification_ptr. 7 40* 7 41**/ 7 42 7 43 7 44 /* DESCRIPTION: 7 45* 7 46* BEGIN_DESCRIPTION 7 47* 7 48* The search ops structure holds the operations to be performed 7 49* during a search of the database. It is a step-by-step 7 50* actuallization of the selection expression specified by the user. 7 51* For each tuple variable, there will be an move-init-select set of 7 52* operations. The first operations is always an initizization~ one 7 53* called PICKUP_SVP, The last operation is always a case for a 7 54* failure condition called RETNUL, to return tuple_not_found. The 7 55* move_init_select groups each have their own RETVAl step to return 7 56* a tuple, if they succeed in finding an acceptable tuple. If there 7 57* are multiple tuple variables, each T.V. group calls the move step 7 58* of the next group once it has found an acceptable tuple in order 7 59* to satisfy all conditions of the and group. Multiple and groups 7 60* are processed until they exhaust all possible tuple variables, 7 61* before the mini-search for the next and group is called. 7 62* 7 63* END_DESCRIPTION 7 64**/ 7 65 7 66 dcl 1 search_ops aligned based (so_ptr), /* the search "program" */ 7 67 2 ic fixed bin, /* index to next instruction */ 7 68 2 nops fixed bin, /* no. of operations in list */ 7 69 2 op (so_nops_init refer (search_ops.nops)), 7 70 3 code fixed bin, /* op code 7 71* 1 => init. range 7 72* 2 => move values 7 73* 3 => select tuple 7 74* 4 => return value 7 75* 5 => return null 7 76* 6 => pick up new search vars ptr */ 7 77 3 var_ind fixed bin, /* index of tuple variable */ 7 78 3 good_xfer fixed bin, /* rel. index of instr. if this op. successful */ 7 79 3 err_xfer fixed bin, /* rel. index of instr. if this op is unsuccess. */ 7 80 3 info_ptr ptr; /* pointer to op. dependent info. */ 7 81 7 82 dcl so_ptr ptr; 7 83 dcl so_nops_init fixed bin; 7 84 7 85 dcl ((INIT init (1)), 7 86 (MOVE init (2)), 7 87 (SEL init (3)), 7 88 (RETVAL init (4)), 7 89 (RETNUL init (5)), 7 90 (PICKUP_SVP init (6))) fixed bin int static options (constant); 7 91 7 92 /* the move info structure is used to obtain needed information 7 93* for the next database access specified by the init_info. 7 94* This may involve moving data from tuples in other tuple variable relations 7 95* in the database, doing a data conversion to a needed data type, 7 96* encoding the data for key usage, or evaluating an expression */ 7 97 7 98 dcl 1 move_info aligned based (mi_ptr), /* info for move op. */ 7 99 /* note: items must be processed in order since 7 100* items may depend on prior items in list */ 7 101 2 bit_move bit (1) unal, /* if just straight move */ 7 102 2 var_move bit (1) unal, /* if straignt move of var len attr. */ 7 103 2 thread bit (1) unal, /* on if moving thread */ 7 104 2 expr bit (1) unal, /* if evaluating an expr. */ 7 105 2 encd_attr bit (1) unal, /* if encoding a comparison value */ 7 106 2 extr_attr bit (1) unal, /* if the value must be extracted from a tuple */ 7 107 2 reserved bit (30) unal, 7 108 2 var_ind fixed bin, /* index of source var, or 0 */ 7 109 2 tuple_var_index fixed bin, /* index of tuple variable (tuple_info.tuple) to use */ 7 110 2 tuple_attr_index fixed bin, /* index of attribute to extract */ 7 111 2 s_ptr ptr, /* to source (tuple.data if var., ksl_ptr if key */ 7 112 2 t_ptr ptr, /* target, (encoded key value if encode) tuple ptr if expr */ 7 113 2 sbit_len fixed bin (35), /* bit length (bit offset if var.) thd type if thd */ 7 114 2 tbit_len fixed bin (35), /* target length */ 7 115 2 s_desc bit (36), /* descriptor for source */ 7 116 2 t_desc bit (36), /* descriptor for target */ 7 117 2 encd_desc bit (36), /* descriptor for encd attr */ 7 118 2 fwd_thd ptr; /* to next move info */ 7 119 7 120 dcl mi_ptr ptr; 7 121 dcl mi_nitems_init fixed bin; 7 122 7 123 7 124 /* the select info structure is used to hold info about 7 125* where to put a tuple that satisfies all conditions, 7 126* and to point to a list of comparisons to be made against 7 127* the tuple, before it is considered acceptable */ 7 128 7 129 dcl 1 select_info aligned based (seli_ptr), /* info for select op. */ 7 130 2 tuple_info_index fixed bin, /* to output tuple */ 7 131 2 tid_ptr ptr, /* to place to store tuple id */ 7 132 2 relation_search_specification_ptr ptr, /* Search spec for relation manager gets */ 7 133 2 cvla_ptr ptr; /* pointer to cvl_array */ 7 134 7 135 dcl seli_ptr ptr; 7 136 7 137 /* END mrds_search_ops.incl.pl1 */ 7 138 545 546 8 1 /* BEGIN mdbm_descriptor.incl.pl1 -- jaw 5/31/78 */ 8 2 /* modified by Jim Gray - - Nov. 1979, to change type from fixed bin(5) to 8 3* unsigned fixed bin(6), so new packed decimal data types could be handled. 8 4* also the duplicate mrds_descriptor.incl.pl1 was eliminated. */ 8 5 8 6 dcl 1 descriptor based (desc_ptr), /* map of Multics descriptor */ 8 7 2 version bit (1) unal, /* DBM handles vers. 1 only */ 8 8 2 type unsigned fixed bin (6) unal, /* data type */ 8 9 2 packed bit (1) unal, /* on if data item is packed */ 8 10 2 number_dims bit (4) unal, /* dimensions */ 8 11 2 size, /* size for string data */ 8 12 3 scale bit (12) unal, /* scale for num. data */ 8 13 3 precision bit (12) unal, /* prec. for num. data */ 8 14 2 array_info (num_dims), 8 15 3 lower_bound fixed bin (35), /* lower bound of dimension */ 8 16 3 upper_bound fixed bin (35), /* upper bound of dimension */ 8 17 3 multiplier fixed bin (35); /* element separation */ 8 18 8 19 dcl desc_ptr ptr; 8 20 dcl num_dims fixed bin init (0) ; /* more useful form of number_dims */ 8 21 8 22 /* END mdbm_descriptor.incl.pl1 */ 8 23 8 24 547 548 9 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 9 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 9 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 9 8* Objects of this type are PASCAL string types. 9 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 9 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 9 11* Added the new C types. 9 12* END HISTORY COMMENTS */ 9 13 9 14 /* This include file defines mnemonic names for the Multics 9 15* standard descriptor types, using both pl1 and cobol terminology. 9 16* PG 780613 9 17* JRD 790530 9 18* JRD 791016 9 19* MBW 810731 9 20* TGO 830614 Add hex types. 9 21* Modified June 83 JMAthane to add PASCAL data types 9 22* TGO 840120 Add float dec extended and generic, float binary generic 9 23**/ 9 24 9 25 dcl (real_fix_bin_1_dtype init (1), 9 26 real_fix_bin_2_dtype init (2), 9 27 real_flt_bin_1_dtype init (3), 9 28 real_flt_bin_2_dtype init (4), 9 29 cplx_fix_bin_1_dtype init (5), 9 30 cplx_fix_bin_2_dtype init (6), 9 31 cplx_flt_bin_1_dtype init (7), 9 32 cplx_flt_bin_2_dtype init (8), 9 33 real_fix_dec_9bit_ls_dtype init (9), 9 34 real_flt_dec_9bit_dtype init (10), 9 35 cplx_fix_dec_9bit_ls_dtype init (11), 9 36 cplx_flt_dec_9bit_dtype init (12), 9 37 pointer_dtype init (13), 9 38 offset_dtype init (14), 9 39 label_dtype init (15), 9 40 entry_dtype init (16), 9 41 structure_dtype init (17), 9 42 area_dtype init (18), 9 43 bit_dtype init (19), 9 44 varying_bit_dtype init (20), 9 45 char_dtype init (21), 9 46 varying_char_dtype init (22), 9 47 file_dtype init (23), 9 48 real_fix_dec_9bit_ls_overp_dtype init (29), 9 49 real_fix_dec_9bit_ts_overp_dtype init (30), 9 50 real_fix_bin_1_uns_dtype init (33), 9 51 real_fix_bin_2_uns_dtype init (34), 9 52 real_fix_dec_9bit_uns_dtype init (35), 9 53 real_fix_dec_9bit_ts_dtype init (36), 9 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 9 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 9 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 9 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 9 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 9 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 9 60 real_flt_dec_4bit_bytealigned_dtype init (44), 9 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 9 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 9 63 real_flt_hex_1_dtype init (47), 9 64 real_flt_hex_2_dtype init (48), 9 65 cplx_flt_hex_1_dtype init (49), 9 66 cplx_flt_hex_2_dtype init (50), 9 67 c_typeref_dtype init (54), 9 68 c_enum_dtype init (55), 9 69 c_enum_const_dtype init (56), 9 70 c_union_dtype init (57), 9 71 algol68_straight_dtype init (59), 9 72 algol68_format_dtype init (60), 9 73 algol68_array_descriptor_dtype init (61), 9 74 algol68_union_dtype init (62), 9 75 9 76 cobol_comp_6_dtype init (1), 9 77 cobol_comp_7_dtype init (1), 9 78 cobol_display_ls_dtype init (9), 9 79 cobol_structure_dtype init (17), 9 80 cobol_char_string_dtype init (21), 9 81 cobol_display_ls_overp_dtype init (29), 9 82 cobol_display_ts_overp_dtype init (30), 9 83 cobol_display_uns_dtype init (35), 9 84 cobol_display_ts_dtype init (36), 9 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 9 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 9 87 cobol_comp_5_uns_dtype init (40), 9 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 9 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 9 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 9 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 9 92 cplx_flt_dec_generic_dtype init (84), 9 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 9 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 9 95 9 96 dcl (ft_integer_dtype init (1), 9 97 ft_real_dtype init (3), 9 98 ft_double_dtype init (4), 9 99 ft_complex_dtype init (7), 9 100 ft_complex_double_dtype init (8), 9 101 ft_external_dtype init (16), 9 102 ft_logical_dtype init (19), 9 103 ft_char_dtype init (21), 9 104 ft_hex_real_dtype init (47), 9 105 ft_hex_double_dtype init (48), 9 106 ft_hex_complex_dtype init (49), 9 107 ft_hex_complex_double_dtype init (50) 9 108 ) fixed bin internal static options (constant); 9 109 9 110 dcl (algol68_short_int_dtype init (1), 9 111 algol68_int_dtype init (1), 9 112 algol68_long_int_dtype init (2), 9 113 algol68_real_dtype init (3), 9 114 algol68_long_real_dtype init (4), 9 115 algol68_compl_dtype init (7), 9 116 algol68_long_compl_dtype init (8), 9 117 algol68_bits_dtype init (19), 9 118 algol68_bool_dtype init (19), 9 119 algol68_char_dtype init (21), 9 120 algol68_byte_dtype init (21), 9 121 algol68_struct_struct_char_dtype init (22), 9 122 algol68_struct_struct_bool_dtype init (20) 9 123 ) fixed bin internal static options (constant); 9 124 9 125 dcl (label_constant_runtime_dtype init (24), 9 126 int_entry_runtime_dtype init (25), 9 127 ext_entry_runtime_dtype init (26), 9 128 ext_procedure_runtime_dtype init (27), 9 129 picture_runtime_dtype init (63) 9 130 ) fixed bin internal static options (constant); 9 131 9 132 dcl (pascal_integer_dtype init (1), 9 133 pascal_real_dtype init (4), 9 134 pascal_label_dtype init (24), 9 135 pascal_internal_procedure_dtype init (25), 9 136 pascal_exportable_procedure_dtype init (26), 9 137 pascal_imported_procedure_dtype init (27), 9 138 pascal_typed_pointer_type_dtype init (64), 9 139 pascal_char_dtype init (65), 9 140 pascal_boolean_dtype init (66), 9 141 pascal_record_file_type_dtype init (67), 9 142 pascal_record_type_dtype init (68), 9 143 pascal_set_dtype init (69), 9 144 pascal_enumerated_type_dtype init (70), 9 145 pascal_enumerated_type_element_dtype init (71), 9 146 pascal_enumerated_type_instance_dtype init (72), 9 147 pascal_user_defined_type_dtype init (73), 9 148 pascal_user_defined_type_instance_dtype init (74), 9 149 pascal_text_file_dtype init (75), 9 150 pascal_procedure_type_dtype init (76), 9 151 pascal_variable_formal_parameter_dtype init (77), 9 152 pascal_value_formal_parameter_dtype init (78), 9 153 pascal_entry_formal_parameter_dtype init (79), 9 154 pascal_parameter_procedure_dtype init (80), 9 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 9 156 9 157 9 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 549 550 10 1 /* BEGIN INCLUDE mrds_se_options.incl.pl1 */ 10 2 10 3 /****^ HISTORY COMMENTS: 10 4* 1) change(87-11-23,Hergert), approve(88-06-28,MCR7903), 10 5* audit(88-06-28,Dupuis), install(88-08-01,MR12.2-1073): 10 6* Created for for new parser. 10 7* END HISTORY COMMENTS */ 10 8 10 9 dcl 1 mode_flags aligned based (mode_flags_ptr), 10 10 2 reset_sw bit unal, 10 11 2 list_sw bit unal, 10 12 2 extras bit (34) unal, 10 13 2 selected aligned like option_list, 10 14 2 value like option_list; 10 15 10 16 10 17 dcl 1 option_list aligned based (option_list_ptr), 10 18 2 pso bit unal, 10 19 2 pse bit unal, 10 20 2 ot bit unal, 10 21 2 force bit unal, 10 22 2 error bit unal, 10 23 2 extras bit (31) unal; 10 24 10 25 dcl mode_flags_ptr ptr; 10 26 dcl option_list_ptr ptr; 10 27 10 28 /* END INCLUDE mrds_se_options.incl.pl1 */ 551 552 553 dcl FB35_DESC bit (36) aligned static options (constant) 554 init ("404000000043"b3); /* descriptor for decode return code */ 555 dcl addr builtin; 556 dcl addrel builtin; 557 dcl area_ptr ptr; 558 dcl argp_ptr ptr; /* Input -- pointer to arg pointers */ 559 dcl bit36 bit (36) based; 560 dcl caller fixed bin (35) parameter; 561 dcl cleanup condition; 562 dcl code fixed bin (35); /* Output -- return code */ 563 dcl cu_$generate_call entry (entry, ptr); 564 dcl current_flag bit (1) aligned; 565 dcl descp_ptr ptr; /* Input -- pointer to arg descriptor pointers */ 566 dcl dm_error_$no_current_transaction 567 fixed bin (35) external static; 568 dcl 1 encode_arg_list aligned, /* arg list for encode proc. */ 569 2 nargs fixed bin (17) unal init (6), 570 2 code fixed bin (17) unal init (4), 571 2 ndescs fixed bin (17) unal init (6), 572 2 pad fixed bin (17) unal init (0), 573 2 user_val_ptr ptr, 574 2 db_val_ptr ptr, 575 2 code_ptr ptr, 576 2 user_desc_ptr ptr, 577 2 db_desc_ptr ptr, 578 2 coded_ptr ptr; 579 dcl encode_space bit (x_pred_leaf.info.encode_bit_len (i)) 580 based (es_ptr); /* for conversions before encoding */ 581 dcl es_ptr ptr; 582 dcl first_time_thru bit (1) aligned internal static init ("1"b); 583 dcl fixed builtin; 584 dcl i fixed bin; /* standard loop variable */ 585 dcl icode fixed bin (35); /* internal status code */ 586 dcl index builtin; 587 dcl lit_length fixed bin; /* length of the literal in lit pool */ 588 dcl literal_bit_string bit (lit_length) based; /* used to install the .x. literal at run time */ 589 dcl mrds_data_$caller_compile 590 fixed bin (35) external static; 591 dcl mrds_data_$max_attributes 592 fixed bin (35) external static; 593 dcl mrds_data_$max_id_len fixed bin (35) ext; /* longest tuple variable length */ 594 dcl mrds_data_$max_select_items 595 fixed bin (35) external static; 596 dcl mrds_dsl_delete_se entry (ptr, fixed bin (35), fixed bin (35)); 597 dcl mrds_dsl_parser entry (ptr, ptr, fixed bin (35), ptr, ptr, 598 fixed bin, ptr, ptr, fixed bin, bit (1) aligned, 599 fixed bin (35)); 600 dcl mrds_dsl_select_clause_$compiled_clause 601 entry (ptr, ptr, fixed bin (35), ptr, ptr, 602 fixed bin, ptr, bit (1) aligned, fixed bin (35)) 603 ; 604 dcl mrds_dsl_set_user_vals$another 605 entry (ptr, ptr, ptr, ptr, fixed bin, 606 fixed bin (35)); 607 dcl mrds_error_$insuff_args 608 fixed bin (35) external static; 609 dcl mrds_error_$inv_comparison 610 fixed bin (35) external static; 611 dcl mrds_error_$inv_literal_type 612 fixed bin (35) external static; 613 dcl mrds_error_$inval_comp_expr 614 fixed bin (35) external static; 615 dcl mrds_error_$no_prior_se 616 fixed bin (35) external static; 617 dcl mrds_error_$no_sel_exp fixed bin (35) external static; 618 dcl mstxn_txn_id bit (36) aligned; 619 dcl mu_convert$convert_data 620 entry (ptr, ptr, ptr, ptr, fixed bin (35)); 621 dcl mu_print_error$print_se 622 entry (ptr, fixed bin); 623 dcl mu_valid_data_type$valid_scalar_data_type 624 entry (bit (36)) returns (bit (1) aligned); 625 dcl null builtin; 626 dcl num_args fixed bin; /* Input -- number of value args */ 627 dcl 1 options aligned like option_list internal static; 628 dcl ptr_template ptr based; /* template for getting args off arglist */ 629 dcl rel builtin; 630 dcl se_index fixed bin (35) based (se_index_ptr); 631 /* se_index specified by caller */ 632 dcl se_index_ptr ptr; /* pointer to selection expression index for compiled se */ 633 dcl se_len fixed bin; /* Input -- char. length of selection expression */ 634 dcl se_ptr ptr; /* Input -- pointer to selection expression */ 635 dcl sex char (se_len) based (se_ptr);/* template to overlay the se */ 636 dcl str_size bit; 637 dcl stringsize condition; 638 dcl substr builtin; 639 dcl sys_info$max_seg_size fixed bin (35) external static; 640 dcl transaction_manager_$get_current_txn_id 641 entry (bit (36) aligned, fixed bin (35)); 642 dcl unspec builtin; 643 dcl 1 varying unaligned based, /* template of varying string */ 644 2 length fixed bin (35), /* length word */ 645 2 string char (0); /* string begins here */ 646 dcl verify builtin; 647 dcl white_space char (3) aligned internal static 648 options (constant) init (" 649 "); /* SP TAB NL */ 650 dcl work_space (33) fixed bin (71); 651 652 end mrds_dsl_translate; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/24/88 1359.3 mrds_dsl_translate.pl1 >special_ldd>install>MR12.2-1184>mrds_dsl_translate.pl1 533 1 08/04/88 2043.3 mrds_dbcb.incl.pl1 >ldd>include>mrds_dbcb.incl.pl1 535 2 10/14/83 1609.1 mrds_range.incl.pl1 >ldd>include>mrds_range.incl.pl1 537 3 10/14/83 1608.4 mrds_select_sets.incl.pl1 >ldd>include>mrds_select_sets.incl.pl1 539 4 10/14/83 1608.6 mdbm_seg_area.incl.pl1 >ldd>include>mdbm_seg_area.incl.pl1 541 5 10/14/83 1608.6 mrds_select_area.incl.pl1 >ldd>include>mrds_select_area.incl.pl1 543 6 08/04/88 2043.3 mrds_compiled_se_info.incl.pl1 >ldd>include>mrds_compiled_se_info.incl.pl1 545 7 10/14/83 1609.1 mrds_search_ops.incl.pl1 >ldd>include>mrds_search_ops.incl.pl1 547 8 10/14/83 1608.6 mdbm_descriptor.incl.pl1 >ldd>include>mdbm_descriptor.incl.pl1 549 9 10/24/88 1336.9 std_descriptor_types.incl.pl1 >special_ldd>install>MR12.2-1184>std_descriptor_types.incl.pl1 551 10 08/04/88 2043.3 mrds_se_options.incl.pl1 >ldd>include>mrds_se_options.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. FB35_DESC 000003 constant bit(36) initial dcl 553 set ref 385 addr builtin function dcl 555 ref 344 365 384 385 386 386 471 471 addrel builtin function dcl 556 ref 255 256 317 321 323 another_flag 106 based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 207* 229* area_ptr parameter pointer dcl 557 set ref 54 225* 418* 471* argp_ptr parameter pointer dcl 558 set ref 54 225* 253 255* 255 317 320 321* 321 418* 471* bit36 based bit(36) packed unaligned dcl 559 set ref 327* 334 334 394 394 caller parameter fixed bin(35,0) dcl 560 set ref 54 212 219 248 418 449 471* 494 cd parameter fixed bin(35,0) dcl 492 ref 487 495 cleanup 000122 stack reference condition dcl 561 ref 212 code parameter fixed bin(35,0) dcl 562 in procedure "mrds_dsl_translate" set ref 54 237* 482* 494* 495* code 0(18) 000132 automatic fixed bin(17,0) initial level 2 in structure "encode_arg_list" packed packed unaligned dcl 568 in procedure "mrds_dsl_translate" set ref 568* code_ptr 6 000132 automatic pointer level 2 dcl 568 set ref 384* coded_ptr 14 000132 automatic pointer level 2 dcl 568 set ref 385* compiled_se_info based structure level 1 dcl 6-15 compiled_se_info_ptr 66 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" ref 209 245 compiled_se_info_ptr 000112 automatic pointer dcl 6-44 in procedure "mrds_dsl_translate" set ref 209* 261 263 266 269 272 275 278 281 284 287 289 303 305 418 copied_for_current based bit(1) array level 3 packed packed unaligned dcl 2-5 set ref 234* copy_for_current based bit(1) array level 3 packed packed unaligned dcl 2-5 set ref 232* cu_$generate_call 000012 constant entry external dcl 563 ref 386 current_flag 000130 automatic bit(1) dcl 564 in procedure "mrds_dsl_translate" set ref 258* 418* 448* 453* 471* current_flag 106(01) based bit(1) level 3 in structure "dbcb" packed packed unaligned dcl 1-142 in procedure "mrds_dsl_translate" set ref 207* data based structure level 2 dcl 1-142 db_desc_ptr 12 000132 automatic pointer level 2 dcl 568 set ref 377* db_val_ptr 4 000132 automatic pointer level 2 dcl 568 set ref 381* dbcb based structure level 1 dcl 1-142 dbcb_data based structure level 1 unaligned dcl 1-148 dbcb_ptr parameter pointer dcl 1-146 set ref 54 207 207 207 207 209 212* 222 225* 229 230 231 232 234 245 266 269 272 275 278 281 284 287 289 292 292 292 296 296 298 298 298 300 300 418* 424 424 427 433 433 435 439 449* 455 455 455 455 460 460 464 469 471* 481 494* desc_ptr 000116 automatic pointer dcl 8-19 set ref 316* 317 317 descp_ptr parameter pointer dcl 565 set ref 54 225* 256* 256 316 323* 323 418* 471* descriptor based structure level 1 unaligned dcl 8-6 dm_error_$no_current_transaction 000014 external static fixed bin(35,0) dcl 566 ref 435 464 dup_retain 106(04) based bit(1) level 3 in structure "dbcb" packed packed unaligned dcl 1-142 in procedure "mrds_dsl_translate" set ref 289* dup_retain 12(01) based bit(1) array level 3 in structure "compiled_se_info" packed packed unaligned dcl 6-15 in procedure "mrds_dsl_translate" ref 289 encode_arg_list 000132 automatic structure level 1 dcl 568 set ref 386 386 encode_bit_len 20 based fixed bin(35,0) array level 3 dcl 6-50 ref 338 338 338 345 encode_entry 10 based entry variable array level 3 dcl 6-50 set ref 386* encode_in_desc_ptr 14 based pointer array level 3 dcl 6-50 set ref 334 347* 362 365 365 encode_out_desc_ptr 16 based pointer array level 3 dcl 6-50 set ref 377 394 398* encode_proc 6 based bit(1) array level 3 packed packed unaligned dcl 6-50 ref 332 encode_space based bit packed unaligned dcl 579 set ref 338 345* error 2(04) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" set ref 519* 527 error 1(04) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" ref 527 error 0(04) 000011 internal static bit(1) level 2 in structure "options" packed packed unaligned dcl 627 in procedure "mrds_dsl_translate" set ref 204* 511* 519 527* es_ptr 000150 automatic pointer dcl 581 set ref 338* 344* 345 347* 357 first_time_thru 000010 internal static bit(1) initial dcl 582 set ref 201 202* 508 509* force 1(03) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" ref 525 force 0(03) 000011 internal static bit(1) level 2 in structure "options" packed packed unaligned dcl 627 in procedure "mrds_dsl_translate" set ref 518 525* force 2(03) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" set ref 518* 525 free 12 based bit(1) array level 3 packed packed unaligned dcl 6-15 ref 263 i 000152 automatic fixed bin(17,0) dcl 584 set ref 214* 215 215 231* 232 234* 242 315* 331 332 334 338 338 338 345 347 362 365 365 377 381 386 394 398 398 409* 428* 429* 447 ic based fixed bin(17,0) level 2 dcl 7-66 set ref 424* 429* icode 000153 automatic fixed bin(35,0) dcl 585 set ref 212* 225* 228 228* 347* 352 352* 384 389 389* 398* 404 404* 418* 422 422* 434* 435 437* 449* 451 451* 462* 464 467* 471* 474 474* index builtin function dcl 586 ref 215 242 447 info 6 based structure array level 2 dcl 6-50 items based structure array level 2 dcl 3-3 last_s_e_id_num 115 based fixed bin(35,0) level 3 dcl 1-142 set ref 287* list_sw 0(01) based bit(1) level 2 packed packed unaligned dcl 10-9 ref 514 lit_arg_ptr 2 based pointer level 2 dcl 6-50 set ref 317* 320* 347* 359 398* 409 lit_desc_ptr 4 based pointer level 2 dcl 6-50 set ref 316* 327 334 347* 394 398* lit_length 000154 automatic fixed bin(17,0) dcl 587 set ref 331* 409 409 lit_ptr 36 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 284 lit_ptr 14 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 284* lit_val_len 21 based fixed bin(35,0) array level 3 dcl 6-50 ref 331 lit_val_ptr 22 based pointer array level 3 dcl 6-50 set ref 381 398* 409 literal_bit_string based bit packed unaligned dcl 588 set ref 409* 409 mode_flags based structure level 1 dcl 10-9 mode_flags_ptr parameter pointer dcl 10-25 ref 500 514 515 516 517 518 519 522 522 523 523 524 524 525 525 527 527 model_area_ptr 000104 automatic pointer initial dcl 4-18 set ref 4-18* model_seg_ptr 000102 automatic pointer initial dcl 4-13 set ref 4-13* mrds_data_$caller_compile 000016 external static fixed bin(35,0) dcl 589 ref 219 248 mrds_data_$max_attributes 000020 external static fixed bin(35,0) dcl 591 ref 232 232 234 234 mrds_data_$max_id_len 000022 external static fixed bin(35,0) dcl 593 ref 232 232 232 234 234 234 mrds_data_$max_select_items 000024 external static fixed bin(35,0) dcl 594 ref 428 429 mrds_dsl_delete_se 000026 constant entry external dcl 596 ref 212 449 494 mrds_dsl_parser 000030 constant entry external dcl 597 ref 471 mrds_dsl_select_clause_$compiled_clause 000032 constant entry external dcl 600 ref 418 mrds_dsl_set_user_vals$another 000034 constant entry external dcl 604 ref 225 mrds_error_$insuff_args 000036 external static fixed bin(35,0) dcl 607 set ref 308* mrds_error_$inv_comparison 000040 external static fixed bin(35,0) dcl 609 set ref 353* 405* mrds_error_$inv_literal_type 000042 external static fixed bin(35,0) dcl 611 set ref 327* mrds_error_$inval_comp_expr 000044 external static fixed bin(35,0) dcl 613 set ref 219* 248* mrds_error_$no_prior_se 000046 external static fixed bin(35,0) dcl 615 set ref 222* 245* mrds_error_$no_sel_exp 000050 external static fixed bin(35,0) dcl 617 set ref 261* 263* mstxn_txn_id 000155 automatic bit(36) dcl 618 set ref 434* 435 462* 464 mu_convert$convert_data 000052 constant entry external dcl 619 ref 347 398 mu_print_error$print_se 000054 constant entry external dcl 621 ref 476 mu_valid_data_type$valid_scalar_data_type 000056 constant entry external dcl 623 ref 327 nargs 000132 automatic fixed bin(17,0) initial level 2 packed packed unaligned dcl 568 set ref 568* ndescs 1 000132 automatic fixed bin(17,0) initial level 2 packed packed unaligned dcl 568 set ref 568* new_select_expr 106(17) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 292* nitems based fixed bin(17,0) level 2 dcl 3-3 ref 428 no_optimize 106(18) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 207* non_shared_to_shared 106(23) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 296* null builtin function dcl 625 ref 210 222 245 298 303 424 4-13 4-18 5-6 5-10 num_args parameter fixed bin(17,0) dcl 626 set ref 54 225* 257* 257 308 325* 325 418* 471* num_dims 000120 automatic fixed bin(17,0) initial dcl 8-20 set ref 8-20* num_vars based fixed bin(17,0) level 2 dcl 2-5 ref 231 number_of_compiled_se 10 based fixed bin(35,0) level 2 dcl 6-15 ref 261 number_of_x based fixed bin(35,0) level 2 dcl 6-50 ref 308 315 option_list based structure level 1 dcl 10-17 options 000011 internal static structure level 1 dcl 627 set ref 203* 471 471 510* ot 1(02) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" ref 524 ot 2(02) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" set ref 517* 524 ot 0(02) 000011 internal static bit(1) level 2 in structure "options" packed packed unaligned dcl 627 in procedure "mrds_dsl_translate" set ref 204* 511* 517 524* pad 1(18) 000132 automatic fixed bin(17,0) initial level 2 packed packed unaligned dcl 568 set ref 568* prev_select 106(05) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 481* print_search_order 106(19) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 207* pse 0(01) 000011 internal static bit(1) level 2 in structure "options" packed packed unaligned dcl 627 in procedure "mrds_dsl_translate" set ref 476 516 523* pse 1(01) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" ref 523 pse 2(01) based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" set ref 516* 523 pso 1 based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" ref 522 pso 000011 internal static bit(1) level 2 in structure "options" packed packed unaligned dcl 627 in procedure "mrds_dsl_translate" set ref 515 522* pso 2 based bit(1) level 3 in structure "mode_flags" packed packed unaligned dcl 10-9 in procedure "mrds_dsl_translate" set ref 515* 522 ptr_template based pointer dcl 628 ref 253 316 317 320 range based structure level 1 dcl 2-5 range_ptr 2 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 222 231 232 234 269* range_ptr 20 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 269 saved_ptrs 16 based structure array level 3 dcl 6-15 scopes_changed 106(24) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 296* se_id_num 13 based fixed bin(35,0) array level 3 dcl 6-15 ref 287 se_index based fixed bin(35,0) dcl 630 ref 261 261 263 266 269 272 275 278 281 284 287 289 303 305 418 se_index_ptr 000156 automatic pointer dcl 632 set ref 253* 261 261 263 266 269 272 275 278 281 284 287 289 303 305 418 se_info 12 based structure array level 2 dcl 6-15 se_len parameter fixed bin(17,0) dcl 633 set ref 54 214 215 242 447 471* 476* se_ptr parameter pointer dcl 634 set ref 54 214 215 242 447 471* 476* se_transaction_id 116 based bit(36) level 3 dcl 1-142 set ref 435* 439* 464* 469* search_ops based structure level 1 dcl 7-66 select_area based area dcl 5-8 ref 338 select_area_ptr 16 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 266 select_area_ptr 36 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 266* select_area_ptr 000110 automatic pointer initial dcl 5-10 in procedure "mrds_dsl_translate" set ref 338 5-10* select_area_struct_ptr 000106 automatic pointer initial dcl 5-6 set ref 5-6* select_ptr 22 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 272 select_ptr 4 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 272* select_sets based structure level 1 dcl 3-3 selected 1 based structure level 2 dcl 10-9 sex based char packed unaligned dcl 635 ref 214 215 242 447 so_ptr 10 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 281* 424 so_ptr 30 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 281 so_ptr based pointer array level 3 in structure "select_sets" dcl 3-3 in procedure "mrds_dsl_translate" ref 429 ss_ptr 20 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 278* 298 424 427 ss_ptr 000100 automatic pointer dcl 3-21 in procedure "mrds_dsl_translate" set ref 427* 428 429 ss_ptr 26 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 278 str_size 000160 automatic bit(1) packed unaligned dcl 636 set ref 312* 313* 353 405 string 1 based char level 2 packed packed unaligned dcl 643 set ref 365 stringsize 000162 stack reference condition dcl 637 ref 313 415 substr builtin function dcl 638 ref 215 242 447 temp_rel_list_ptr 32 based pointer array level 4 dcl 6-15 set ref 418* ti_ptr 12 based pointer level 3 in structure "dbcb" dcl 1-142 in procedure "mrds_dsl_translate" set ref 275* ti_ptr 24 based pointer array level 4 in structure "compiled_se_info" dcl 6-15 in procedure "mrds_dsl_translate" ref 275 transaction_manager_$get_current_txn_id 000060 constant entry external dcl 640 ref 434 462 transactions_needed 106(13) based bit(1) level 3 packed packed unaligned dcl 1-142 ref 433 460 tup_var 2 based structure array level 2 dcl 2-5 type 0(01) based fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 8-6 ref 317 317 365 365 unspec builtin function dcl 642 set ref 203* 510* user_desc_ptr 10 000132 automatic pointer level 2 dcl 568 set ref 362* user_started_transaction 106(22) based bit(1) level 3 packed packed unaligned dcl 1-142 ref 433 460 user_val_ptr 2 000132 automatic pointer level 2 dcl 568 set ref 357* 359* 365* 365 val_del 106(11) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 298* 300* 455* val_dtr 106(12) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 292* 455* val_mod 106(10) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 298* 300* 455* val_rtrv 106(09) based bit(1) level 3 packed packed unaligned dcl 1-142 set ref 230* 292* 455* value 2 based structure level 2 dcl 10-9 varying based structure level 1 packed packed unaligned dcl 643 varying_bit_dtype constant fixed bin(17,0) initial dcl 9-25 ref 317 365 varying_char_dtype constant fixed bin(17,0) initial dcl 9-25 ref 317 365 verify builtin function dcl 646 ref 214 white_space 000000 constant char(3) initial dcl 647 ref 214 work_space 000170 automatic fixed bin(71,0) array dcl 650 set ref 344 x_leaf_ptr 34 based pointer array level 4 dcl 6-15 ref 303 305 x_pred_leaf based structure level 1 dcl 6-50 x_pred_leaf_ptr 000114 automatic pointer dcl 6-65 set ref 210* 305* 308 315 316 317 320 327 331 332 334 334 338 338 338 345 347 347 347 359 362 365 365 377 381 386 394 394 398 398 398 398 409 409 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DIFFERENCE internal static fixed bin(17,0) initial dcl 3-26 INIT internal static fixed bin(17,0) initial dcl 7-85 INTERSECTION internal static fixed bin(17,0) initial dcl 3-25 MOVE internal static fixed bin(17,0) initial dcl 7-85 PICKUP_SVP internal static fixed bin(17,0) initial dcl 7-85 RETNUL internal static fixed bin(17,0) initial dcl 7-85 RETVAL internal static fixed bin(17,0) initial dcl 7-85 SEL internal static fixed bin(17,0) initial dcl 7-85 UNION internal static fixed bin(17,0) initial dcl 3-24 algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 9-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 9-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 9-25 area_dtype internal static fixed bin(17,0) initial dcl 9-25 bit_dtype internal static fixed bin(17,0) initial dcl 9-25 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 9-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 9-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 9-25 c_union_dtype internal static fixed bin(17,0) initial dcl 9-25 char_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 9-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 9-25 entry_dtype internal static fixed bin(17,0) initial dcl 9-25 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 file_dtype internal static fixed bin(17,0) initial dcl 9-25 fixed builtin function dcl 583 ft_char_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 9-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 9-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 label_dtype internal static fixed bin(17,0) initial dcl 9-25 mi_nitems_init automatic fixed bin(17,0) dcl 7-121 mi_ptr automatic pointer dcl 7-120 model_area based area dcl 4-16 model_seg based structure level 1 dcl 4-9 move_info based structure level 1 dcl 7-98 nitems_init automatic fixed bin(17,0) dcl 3-22 offset_dtype internal static fixed bin(17,0) initial dcl 9-25 option_list_ptr automatic pointer dcl 10-26 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 9-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 9-125 pointer_dtype internal static fixed bin(17,0) initial dcl 9-25 range_ptr automatic pointer dcl 2-23 real_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 9-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 9-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 9-25 rel builtin function dcl 629 select_area_struct based structure level 1 dcl 5-2 select_info based structure level 1 dcl 7-129 seli_ptr automatic pointer dcl 7-135 size builtin function dcl 4-20 so_nops_init automatic fixed bin(17,0) dcl 7-83 so_ptr automatic pointer dcl 7-82 structure_dtype internal static fixed bin(17,0) initial dcl 9-25 sys_info$max_seg_size external static fixed bin(35,0) dcl 639 temp_rel_list based structure level 1 dcl 6-70 trl_ptr automatic pointer dcl 6-77 NAMES DECLARED BY EXPLICIT CONTEXT. error 001663 constant entry internal dcl 487 ref 219 222 228 245 248 261 263 308 327 352 353 389 404 405 422 437 451 467 474 exit 001540 constant label dcl 484 ref 496 mrds_dsl_translate 000054 constant entry external dcl 54 set_options 001544 constant entry external dcl 500 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2464 2546 2126 2474 Length 3220 2126 62 436 336 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mrds_dsl_translate 278 external procedure is an external procedure. on unit on line 212 74 on unit on unit on line 313 64 on unit error internal procedure shares stack frame of external procedure mrds_dsl_translate. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 first_time_thru mrds_dsl_translate 000011 options mrds_dsl_translate STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mrds_dsl_translate 000100 ss_ptr mrds_dsl_translate 000102 model_seg_ptr mrds_dsl_translate 000104 model_area_ptr mrds_dsl_translate 000106 select_area_struct_ptr mrds_dsl_translate 000110 select_area_ptr mrds_dsl_translate 000112 compiled_se_info_ptr mrds_dsl_translate 000114 x_pred_leaf_ptr mrds_dsl_translate 000116 desc_ptr mrds_dsl_translate 000120 num_dims mrds_dsl_translate 000130 current_flag mrds_dsl_translate 000132 encode_arg_list mrds_dsl_translate 000150 es_ptr mrds_dsl_translate 000152 i mrds_dsl_translate 000153 icode mrds_dsl_translate 000154 lit_length mrds_dsl_translate 000155 mstxn_txn_id mrds_dsl_translate 000156 se_index_ptr mrds_dsl_translate 000160 str_size mrds_dsl_translate 000170 work_space mrds_dsl_translate THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac enable_op ext_entry int_entry set_chars_eis index_chars_eis op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$generate_call mrds_dsl_delete_se mrds_dsl_parser mrds_dsl_select_clause_$compiled_clause mrds_dsl_set_user_vals$another mu_convert$convert_data mu_print_error$print_se mu_valid_data_type$valid_scalar_data_type transaction_manager_$get_current_txn_id THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_current_transaction mrds_data_$caller_compile mrds_data_$max_attributes mrds_data_$max_id_len mrds_data_$max_select_items mrds_error_$insuff_args mrds_error_$inv_comparison mrds_error_$inv_literal_type mrds_error_$inval_comp_expr mrds_error_$no_prior_se mrds_error_$no_sel_exp LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 4 13 000025 4 18 000027 5 6 000030 5 10 000031 8 20 000032 568 000033 54 000045 201 000062 202 000065 203 000066 204 000067 207 000073 209 000106 210 000110 212 000112 214 000145 215 000163 219 000203 222 000215 225 000233 228 000255 229 000261 230 000266 231 000270 232 000277 234 000350 236 000356 237 000360 238 000362 242 000363 245 000374 248 000411 253 000424 255 000431 256 000434 257 000440 258 000442 261 000443 263 000460 266 000475 269 000505 272 000512 275 000517 278 000523 281 000527 284 000533 287 000537 289 000543 292 000552 296 000560 298 000564 300 000576 303 000602 305 000607 308 000611 312 000623 313 000624 315 000644 316 000653 317 000662 320 000700 321 000704 323 000710 325 000714 327 000716 331 000741 332 000747 334 000753 338 000761 344 000777 345 001001 347 001011 352 001030 353 001034 357 001045 358 001047 359 001050 362 001052 365 001057 377 001074 381 001077 384 001101 385 001103 386 001105 389 001120 391 001124 394 001125 398 001133 404 001152 405 001156 408 001167 409 001170 414 001175 415 001177 418 001200 422 001235 424 001241 427 001253 428 001255 429 001267 431 001306 433 001310 434 001317 435 001330 437 001342 438 001344 439 001345 441 001346 447 001347 448 001360 449 001361 451 001376 452 001402 453 001403 455 001405 460 001420 462 001424 464 001435 467 001447 468 001451 469 001452 471 001453 474 001511 476 001515 481 001532 482 001537 484 001540 500 001541 508 001552 509 001555 510 001556 511 001557 514 001563 515 001570 516 001575 517 001601 518 001605 519 001611 520 001615 522 001616 523 001626 524 001635 525 001644 527 001653 531 001662 487 001663 494 001665 495 001703 496 001707 ----------------------------------------------------------- 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