COMPILATION LISTING OF SEGMENT vrm_get_by_spec Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/05/85 0925.8 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 vrm_get_by_spec: 8 proc; 9 10 /* . BEGIN_DESCRIPTION 11* 12* This program has four entry points: 13* 14* get_tuples_by_spec 15* 16* get_tuple_id 17* 18* get_tuples_and_ids 19* 20* get_count 21* 22* 23* The get_tuples_by_spec entry: 24* Get the attribute values of the tuples identified by a search 25* of a particular index (cursor). The values are vectors allocated in the 26* area supplied by the caller and and are pointed to by a the pointers 27* O_gt_vec_list_ptr -> pointer_array. 28* 29* The get_tuple_id entry: 30* Returns a list of tuple_ids that satisfy the search specification. 31* 32* The get_tuples_and_ids entry: 33* Combines the functions of the get_tuples_by_spec and get_tuple_id entries. 34* 35* The get_count entry: 36* Returns the count of the tuples that satisify the relation_search_specification. 37* 38* 39* The search specification must be limited to 40* attributes supported by the cursor supplied. 41* 42* . END_DESCRIPTION 43* 44* 45* HISTORY 46* 47* 82-08-20 Roger Lackey : Written by 48* 82-11-16 Roger Lackey : Added call to vrm_cursor_man$validate 49* 50* 83-01-11 Roger Lackey : Change get_count entry to retrun n-1 for 51* vfile_status count on MRDS_compatible relations. 52* 53* 83-03-10 Ron Harvey : added the get_tuples_and_ids entry points and allowed 54* the caller to pass in a typed_vector_list to be filled. 55* 56* 83-05-25 Roger Lackey : Changed get_tid and get_tuples_and_ids to allow 57* call to pass in a non_null pointer to element_id_list 58* to be fill. 59* 60* 83-05-25 Roger Lackey : Changed calling sequence to comply with the 61* relation cursor specification. 62* 63* 83-09-08 Roger Lackey : Modified to used new vrm_search_info 64**/ 65 66 get_tuples_by_spec: 67 entry (I_gt_cursor_ptr, I_gt_spec_ptr, I_gt_id_list_ptr, I_gt_area_ptr, O_gt_vec_list_ptr, O_gt_code); 68 69 /* PARAMETERS */ 70 71 dcl I_gt_spec_ptr pointer parameter; /* Pointer to search specification */ 72 dcl I_gt_area_ptr pointer parameter; /* Pointer to base an area upon */ 73 dcl I_gt_id_list_ptr pointer parameter; /* Pointer to attr id_list */ 74 dcl I_gt_cursor_ptr pointer parameter; /* Cursor pointer */ 75 dcl O_gt_vec_list_ptr pointer parameter; /* Pointer to output vector_list */ 76 dcl O_gt_code fixed bin (35) parameter; 77 /* Error code */ 78 79 80 entry_type = GET_TUPLE; 81 id_list_ptr = I_gt_id_list_ptr; 82 vrm_cursor_ptr = I_gt_cursor_ptr; 83 relation_search_specification_ptr = I_gt_spec_ptr; 84 area_ptr = I_gt_area_ptr; 85 O_gt_vec_list_ptr = null; 86 O_gt_code = 0; 87 88 goto common; 89 90 91 92 93 94 95 get_tuples_and_ids: 96 entry (I_gti_cursor_ptr, I_gti_spec_ptr, I_gti_id_list_ptr, 97 I_gti_area_ptr, X_gti_tid_list_ptr, X_gti_vec_list_ptr, O_gti_code); 98 99 dcl I_gti_spec_ptr ptr parameter; /* Specification structure ptr */ 100 dcl I_gti_area_ptr ptr parameter; /* Return area ptr */ 101 dcl I_gti_id_list_ptr ptr parameter; /* Attribute id list structure */ 102 dcl I_gti_cursor_ptr ptr parameter; /* Cursor pointer */ 103 dcl X_gti_tid_list_ptr ptr parameter; /* Tuple id list structure pointer 104* If null we will allocate the list */ 105 dcl X_gti_vec_list_ptr ptr parameter; /* Typed vector list structure ptr */ 106 dcl O_gti_code fixed bin (35) parameter; 107 /* Error ocde */ 108 109 entry_type = GET_TUPLE_AND_TID; 110 relation_search_specification_ptr = I_gti_spec_ptr; 111 vrm_cursor_ptr = I_gti_cursor_ptr; 112 area_ptr = I_gti_area_ptr; 113 id_list_ptr = I_gti_id_list_ptr; 114 element_id_list_ptr = X_gti_vec_list_ptr; 115 O_gti_code = 0; 116 117 goto common; 118 119 get_tuple_id: 120 entry (I_id_cursor_ptr, I_id_spec_ptr, I_id_area_ptr, X_id_tid_list_ptr, O_id_code); 121 122 dcl I_id_spec_ptr ptr parameter; /* Specification structure pointer */ 123 dcl I_id_area_ptr ptr parameter; /* Work area pointer */ 124 dcl I_id_cursor_ptr ptr parameter; /* Cursor pointer */ 125 dcl X_id_tid_list_ptr ptr parameter; /* Tuple id list ptr 126*. If null we will allocate the list */ 127 dcl O_id_code fixed bin (35) parameter; 128 /* Error code */ 129 130 entry_type = GET_TID; 131 relation_search_specification_ptr = I_id_spec_ptr; 132 vrm_cursor_ptr = I_id_cursor_ptr; 133 area_ptr = I_id_area_ptr; 134 element_id_list_ptr = X_id_tid_list_ptr; 135 O_id_code = 0; 136 137 goto common; 138 139 140 141 142 143 144 145 146 get_count: 147 entry (I_count_cursor_ptr, I_count_spec_ptr, O_count_number, O_count_code); 148 149 dcl I_count_spec_ptr ptr parameter; /* Specification_structure pointer */ 150 dcl I_count_cursor_ptr ptr parameter; /* Cursor pointer */ 151 dcl O_count_number fixed bin (35) parameter; 152 /* Number of tuples counted that met search spec */ 153 dcl O_count_code fixed bin (35) parameter; 154 /* Error code */ 155 156 relation_search_specification_ptr = I_count_spec_ptr; 157 vrm_cursor_ptr = I_count_cursor_ptr; 158 O_count_number = 0; 159 O_count_code = 0; 160 entry_type = GET_COUNT; 161 goto common; 162 163 164 common: 165 if vrm_cursor.switches.meter_sw /* If metering is being done */ 166 then do; 167 168 call cpu_time_and_paging_ (pf_1, t1, dummy); 169 vrm_meter_ptr = vrm_cursor.meter_ptr; 170 vrm_meter.last_call_stats = 0; 171 metering_sw = "1"b; 172 end; 173 else metering_sw = "0"b; 174 175 file_locked = "0"b; 176 177 vrm_cursor.switches.shared = vrm_cursor.open_info_ptr -> vrm_open_info.switches.shared; 178 179 if area_seg_ptr = null then do; 180 vrm_com_ptr = vrm_cursor.open_info_ptr -> vrm_open_info.com_ptr; 181 if vrm_com.get_seg_ptr = null then do; 182 call get_temp_segment_ (MY_NAME, vrm_com.get_seg_ptr, code); 183 if code ^= 0 then call error (code); 184 end; 185 area_seg_ptr = vrm_com.get_seg_ptr; 186 get_area = empty (); 187 end; 188 189 vrm_search_info_ptr = addr (search_info); 190 search_info.cur_id_list_ix = 0; 191 192 if entry_type = GET_TUPLE | entry_type = GET_TUPLE_AND_TID 193 then vrm_search_info.tuple_pointer_required = "1"b; 194 else vrm_search_info.tuple_pointer_required = "0"b; 195 196 if entry_type = GET_TID | entry_type = GET_TUPLE_AND_TID 197 then vrm_search_info.tuple_tid_required = "1"b; 198 else vrm_search_info.tuple_tid_required = "0"b; 199 200 201 if metering_sw then vrm_search_info.meter_sw = "1"b; 202 else vrm_search_info.meter_sw = "0"b; 203 204 vrm_search_info.upper_limit_exceeded_sw = "0"b; 205 vrm_search_info.last_call_stats = 0; 206 207 vrm_rel_desc_ptr = vrm_cursor.vrm_relation_desc_ptr; 208 209 iocb_ptr = vrm_cursor.iocb_ptr; 210 items_found = 0; 211 all_range_spec = "0"b; 212 213 on cleanup call tidy_up; 214 215 if relation_search_specification_ptr = null /* No search specification supplied */ 216 then do; 217 218 rss_maximum_number_of_constraints = 0; /* Just to keep the compiler happy */ 219 all_range_spec = "1"b; /* Get everything */ 220 search_info.max_number_values = vrm_data_$typed_vector_array_limit; 221 end; 222 223 else do; /* There was a search specification supplied */ 224 if relation_search_specification.head.type ^= ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE & 225 relation_search_specification.head.type ^= RELATIVE_RELATION_SEARCH_SPECIFICATION_TYPE then 226 call error (dm_error_$unsup_search_spec_head_type); 227 228 if relation_search_specification.head.type = ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE then do; 229 all_range_spec = "1"b; 230 search_info.max_number_values = vrm_data_$typed_vector_array_limit; 231 end; 232 233 if relation_search_specification.range.type = LOW_RANGE_TYPE then 234 search_info.max_number_values = relation_search_specification.range.size; 235 236 end; 237 238 if all_range_spec then do; /* Build an internal version of the search spec */ 239 call vrmu_search_init (vrm_cursor_ptr, relation_search_specification_ptr, code); 240 if code ^= 0 then call error (code); 241 end; 242 243 if vrm_cursor.search_list_ptr = null then do; 244 call sub_err_ (mrds_error_$internal_error, 245 MY_NAME, ACTION_CANT_RESTART, null, 0, 246 "A dm_search_specification with a RELATIVER_RELATION_SEARCH_SPECIFICATION_TYPE 247 before a ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE."); 248 end; 249 vrm_search_list_ptr = vrm_cursor.search_list_ptr; 250 251 if vrm_search_list.num_and_groups > 0 then do; 252 cur_ag = 0; 253 254 do ag = 1 to vrm_search_list.num_and_groups while (cur_ag = 0); 255 256 if vrm_search_list.and_groups (ag).do_not_use_sw = "0"b then 257 cur_ag = ag; 258 end; 259 if cur_ag = 0 then call error (dm_error_$no_tuple); 260 else vrm_search_list.current_and_group = cur_ag; 261 end; 262 263 if (entry_type = GET_TID | entry_type = GET_TUPLE_AND_TID) 264 then do; /* Set ptr for tid list */ 265 if element_id_list_ptr = null then do; /* Element id list was NOT passed in */ 266 element_id_list_supplied_sw = "0"b; /* Was not supplied */ 267 if tid_temp_seg_ptr = null then do; 268 call get_temp_segment_ (MY_NAME, tid_temp_seg_ptr, code); 269 if code ^= 0 270 then call error (code); 271 end; 272 element_id_list_ptr = tid_temp_seg_ptr; 273 element_id_list.version = ELEMENT_ID_LIST_VERSION_1; 274 element_id_list.number_of_elements = search_info.max_number_values; 275 end; 276 else do; /* Element_id_list supplied */ 277 element_id_list_supplied_sw = "1"b; 278 if element_id_list.version ^= ELEMENT_ID_LIST_VERSION_1 then 279 call error (error_table_$unimplemented_version); 280 element_id_list.number_of_elements = search_info.max_number_values; /* this is the way it has to be */ 281 end; 282 search_info.tid_list_ptr = element_id_list_ptr; 283 end; 284 285 if (entry_type = GET_TUPLE | entry_type = GET_TUPLE_AND_TID) 286 then do; /* Set ptr for tuple list */ 287 typed_vector_list_ptr = null (); 288 if entry_type = GET_TUPLE_AND_TID 289 then if X_gti_vec_list_ptr ^= null 290 then typed_vector_list_ptr = X_gti_vec_list_ptr; 291 292 if entry_type = GET_TUPLE 293 then if O_gt_vec_list_ptr ^= null 294 then typed_vector_list_ptr = O_gt_vec_list_ptr; 295 296 if typed_vector_list_ptr = null 297 then do; /* none passed in */ 298 if tuple_temp_seg_ptr = null then do; /* first non-null call */ 299 call get_temp_segment_ (MY_NAME, tuple_temp_seg_ptr, code); 300 if code ^= 0 301 then call error (code); 302 end; 303 304 typed_vector_list_ptr = tuple_temp_seg_ptr; 305 typed_vector_list.version = TYPED_VECTOR_LIST_VERSION_1; 306 end; 307 else /* typed_vector_list was passed in */ 308 search_info.max_number_values = min (typed_vector_list.maximum_number_of_vectors, search_info.max_number_values); 309 310 if typed_vector_list.version ^= TYPED_VECTOR_LIST_VERSION_1 311 then call error (error_table_$unimplemented_version); 312 313 if typed_vector_list_ptr = tuple_temp_seg_ptr 314 then typed_vector_list.maximum_number_of_vectors = search_info.max_number_values; 315 end; 316 317 318 if entry_type = GET_COUNT & relation_search_specification_ptr = null 319 then do; /* No search constraints so use vfile_status */ 320 O_count_number = 0; 321 322 vfsi.info_version = 1; 323 324 call iox_$control (iocb_ptr, "file_status", addr (vfsi), code); 325 if code = 0 326 then do; /* Give um the count */ 327 if vrm_rel_desc.switches.MRDS_compatible 328 then O_count_number = vfsi.non_null_recs - 1; 329 /* Cause they have one null record */ 330 else O_count_number = vfsi.non_null_recs; 331 /* Actual count */ 332 end; 333 334 O_count_code = code; 335 goto exit; 336 337 end; 338 339 if db_sw then 340 call vrm_display_search_list$subroutine (vrm_cursor_ptr); 341 342 /* Following loop does the work */ 343 344 if vrm_cursor.switches.shared then do; 345 if vrm_cursor.opening_mode = KSQU then call lock; /* If in shared mode we must lock the file */ 346 end; 347 348 code = 0; 349 350 do while (code = 0 & items_found < search_info.max_number_values); 351 352 search_info.num_items_returned = 0; 353 354 call vrmu_search (vrm_search_info_ptr, vrm_cursor_ptr, code); 355 if search_info.num_items_returned > 0 then 356 call add_to_output_list; /* Got a tuple or tid 357* even if code = dm_error_$no_tuple 358* there still could be items_returned 359* that are valid so add them to 360* the output list before checking error code */ 361 362 if code ^= 0 then do; 363 if code ^= dm_error_$no_tuple then call error (code); 364 if vrm_search_list.current_and_group + 1 < 365 vrm_search_list.num_and_groups then do; 366 vrm_search_list.current_and_group = vrm_search_list.current_and_group + 1; 367 code = 0; 368 end; 369 end; 370 end; 371 372 if file_locked then call unlock; 373 374 if items_found ^= 0 375 then do; /* Found some tuples or tids */ 376 377 if tuple_temp_seg_ptr = typed_vector_list_ptr & (entry_type = GET_TUPLE | entry_type = GET_TUPLE_AND_TID) 378 then do; /* Build the returned vector_pointer array */ 379 on area call error (error_table_$noalloc); 380 tvl_maximum_number_of_vectors = items_found; 381 382 allocate typed_vector_list in (wa) set (typed_vector_list_ptr); 383 typed_vector_list.version = TYPED_VECTOR_LIST_VERSION_1; 384 typed_vector_list.pad = 0; 385 typed_vector_list.number_of_vectors = items_found; 386 tuple_temp_seg_ptr -> typed_vector_list.maximum_number_of_vectors = 387 items_found; /* Cut temp copy down to size */ 388 389 typed_vector_list_ptr -> typed_vector_list.vector_ptr = 390 /* Copy temp list into callers area */ tuple_temp_seg_ptr 391 -> typed_vector_list.vector_ptr; 392 393 if entry_type = GET_TUPLE 394 then O_gt_vec_list_ptr = typed_vector_list_ptr; 395 else X_gti_vec_list_ptr = typed_vector_list_ptr; 396 397 end; 398 399 if entry_type = GET_TID | entry_type = GET_TUPLE_AND_TID 400 then do; 401 402 eil_number_of_elements = items_found; 403 404 if ^element_id_list_supplied_sw then do; 405 allocate element_id_list in (wa) set (element_id_list_ptr); 406 element_id_list.number_of_elements = items_found; 407 tid_temp_seg_ptr -> element_id_list.number_of_elements = items_found; 408 element_id_list = tid_temp_seg_ptr -> element_id_list; 409 410 if entry_type = GET_TID 411 then X_id_tid_list_ptr = element_id_list_ptr; 412 else X_gti_tid_list_ptr = element_id_list_ptr; 413 end; /* END if ^element_id_list_supplied_sw then do; */ 414 else element_id_list.number_of_elements = items_found; /* element id list supplied */ 415 end; 416 417 if entry_type = GET_COUNT 418 then /* all that's left */ 419 O_count_number = items_found; /* entry_type = GET_COUNT */ 420 421 end; 422 423 /* Some kind of an error to return */ 424 else do; 425 if entry_type = GET_TUPLE 426 then O_gt_code = dm_error_$no_tuple; 427 else if entry_type = GET_TID 428 then O_id_code = dm_error_$no_tuple; 429 else if entry_type = GET_TUPLE_AND_TID 430 then O_gti_code = dm_error_$no_tuple; 431 else O_count_code = 0; 432 end; 433 434 435 if db_sw then 436 call ioa_ ("^/Number items returned: ^d^/", items_found); 437 438 exit: 439 call tidy_up; 440 return; 441 442 443 /* * * * * * * * * * * * * add_to_output_list * * * * * * * * * * * * */ 444 445 add_to_output_list: proc; 446 447 if entry_type = GET_TUPLE | entry_type = GET_TUPLE_AND_TID 448 then do; 449 450 do n = 1 to search_info.num_items_returned; 451 452 items_found = items_found + 1; 453 454 if typed_vector_list_ptr = tuple_temp_seg_ptr /* we did the allocation */ 455 then vector_ptr = null (); /* make sure it is not garbage */ 456 else vector_ptr = typed_vector_list.vector_ptr (items_found); /* get user's stv ptr */ 457 tuple_ptr = search_info.tup_ptr (n); 458 call vrmu_cv_tuple_to_vector$simple_vector (tuple_ptr, area_ptr, id_list_ptr, vrm_rel_desc_ptr, 459 vector_ptr, err_code); 460 if err_code ^= 0 461 then call error (err_code); 462 463 typed_vector_list.vector_ptr (items_found) = vector_ptr; 464 end; 465 end; 466 467 else /* entry_type ^= GET_TUPLE | entry_type ^= GET_TUPLE_AND_TID */ 468 items_found = items_found + search_info.num_items_returned; 469 470 471 search_info.cur_id_list_ix = items_found; 472 473 end add_to_output_list; 474 475 476 /* * * * * * * * * * * * * * * error * * * * * * * * * * * * * * * */ 477 478 error: 479 proc (cd); 480 481 dcl cd fixed bin (35) parameter; 482 483 if entry_type = GET_TUPLE 484 then O_gt_code = cd; 485 else if entry_type = GET_TID 486 then O_id_code = cd; 487 else if entry_type = GET_TUPLE_AND_TID 488 then O_gti_code = cd; 489 else O_count_code = cd; 490 491 goto exit; 492 493 end error; 494 495 496 497 498 /* * * * * * * * * * * * * tidy_up * * * * * * * * * * * * * * * * * * */ 499 500 tidy_up: 501 proc; 502 503 if file_locked 504 then call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), code); 505 506 if metering_sw 507 then do; 508 call cpu_time_and_paging_ (pf_2, t2, dummy); 509 vrm_meter.last_call_stats = vrm_search_info.last_call_stats; 510 vrm_meter.last_call_stats.last_time_of_stats = clock; 511 512 t3 = t2 - t1; 513 vrm_meter.last_call_stats.vcpu_time = divide (t3, 1000000, 63); 514 vrm_meter.last_call_stats.page_faults = pf_2 - pf_1; 515 vrm_meter.last_call_stats.number_items_returned = items_found; 516 if vrm_search_info.upper_limit_exceeded_sw 517 then vrm_meter.last_call_stats.upper_limit_found_count = 518 vrm_meter.last_call_stats.upper_limit_found_count + 1; 519 vrm_meter.last_call_stats.number_times_used = 1; 520 vrm_meter.total_stats.last_time_of_stats = 0; 521 vrm_meter.total_stats = vrm_meter.total_stats + vrm_meter.last_call_stats; 522 523 end; 524 525 end tidy_up; 526 527 /* * * * * * * * * * * * * * lock * * * * * * * * * * * * * * * * */ 528 529 530 lock: 531 proc; 532 533 if metering_sw 534 then search_info.last_call_stats.number_times_locked = search_info.last_call_stats.number_times_locked + 1; 535 536 call iox_$control (iocb_ptr, "set_file_lock", addr (LOCK), lock_err_code); 537 if lock_err_code ^= 0 538 then call error (lock_err_code); 539 540 file_locked = "1"b; 541 542 end lock; 543 544 545 546 547 548 549 550 /* * * * * * * * * * * * * * unlock * * * * * * * * * * * * * * * * */ 551 552 unlock: 553 proc; 554 555 if file_locked 556 then do; 557 call iox_$control (iocb_ptr, "set_file_lock", addr (UNLOCK), lock_err_code); 558 if lock_err_code ^= 0 559 then call error (lock_err_code); 560 end; 561 file_locked = "0"b; 562 563 end unlock; 564 565 566 567 /* * * * * * * * * * * * * * * * * * * debug * * * * * * * * * * * */ 568 569 db_on: entry; 570 db_sw = "1"b; 571 return; 572 573 574 db_off: entry; 575 db_sw = "0"b; 576 return; 577 1 1 /* BEGIN INCLUDE FILE dm_specification_head.incl.pl1 */ 1 2 1 3 /* HISTORY: 1 4*Written by Matthew Pierret, 05/11/83. (Extracted from dm_specification.incl.pl1) 1 5*Modified: 1 6*05/20/83 by Matthew Pierret: Changed to use version 4. 1 7**/ 1 8 1 9 /* format: style2,ind3 */ 1 10 dcl 1 specification_head based (specification_head_ptr), 1 11 2 version fixed bin (35), 1 12 2 type fixed bin (17) unal, 1 13 2 pad bit (18) unal, 1 14 2 subset_specification_ptr 1 15 ptr; 1 16 1 17 1 18 dcl specification_head_ptr ptr; 1 19 dcl SPECIFICATION_VERSION_4 1 20 init (4) fixed bin (35) internal static options (constant); 1 21 1 22 dcl ( 1 23 SEARCH_SPECIFICATION_TYPE 1 24 init (1), 1 25 ABSOLUTE_SEARCH_SPECIFICATION_TYPE 1 26 init (1), 1 27 NUMERIC_SPECIFICATION_TYPE 1 28 init (2), 1 29 ABSOLUTE_NUMERIC_SPECIFICATION_TYPE 1 30 init (2), 1 31 RELATIVE_SEARCH_SPECIFICATION_TYPE 1 32 init (3), 1 33 RELATIVE_NUMERIC_SPECIFICATION_TYPE 1 34 init (4), 1 35 ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE 1 36 init (5), 1 37 RELATIVE_RELATION_SEARCH_SPECIFICATION_TYPE 1 38 init (6), 1 39 ABSOLUTE_RELATION_NUMERIC_SPECIFICATION_TYPE 1 40 init (7), 1 41 RELATIVE_RELATION_NUMERIC_SPECIFICATION_TYPE 1 42 init (8) 1 43 ) fixed bin (17) internal static options (constant); 1 44 1 45 1 46 /* END INCLUDE FILE dm_specification_head.incl.pl1 */ 578 579 2 1 /* BEGIN INCLUDE FILE dm_relation_spec.incl.pl1 */ 2 2 2 3 /* HISTORY: 2 4*Written by Matthew Pierret, 05/10/83. 2 5*Modified: 2 6**/ 2 7 2 8 /* format: style2,ind3 */ 2 9 dcl 1 relation_search_specification 2 10 aligned based (relation_search_specification_ptr), 2 11 2 head like specification_head, 2 12 2 maximum_number_of_constraints 2 13 fixed bin (17) unal, 2 14 2 number_of_and_groups 2 15 fixed bin (17) unal, 2 16 2 flags unal, 2 17 3 return_unique_tuples 2 18 bit (1) unal, 2 19 3 mbz bit (35) unal, 2 20 2 range, 2 21 3 type fixed bin (17), 2 22 3 size fixed bin (17), 2 23 2 and_group (rss_number_of_and_groups refer (relation_search_specification.number_of_and_groups)), 2 24 3 search_collection_id 2 25 bit (36) aligned, 2 26 3 flags unal, 2 27 4 collection_id_supplied 2 28 bit (1) unal, 2 29 4 mbz bit (17) unal, 2 30 3 number_of_constraints 2 31 fixed bin (17) unal, 2 32 3 constraint (rss_maximum_number_of_constraints 2 33 refer (relation_search_specification.maximum_number_of_constraints)), 2 34 4 field_id fixed bin (17) unal, 2 35 4 operator_code fixed bin (17) unal, 2 36 4 value_field_id fixed bin (17) unal, 2 37 4 mbz bit (18) unal, 2 38 4 value_ptr ptr; 2 39 2 40 2 41 dcl 1 relation_numeric_specification 2 42 aligned based (relation_numeric_specification_ptr), 2 43 2 head like specification_head, 2 44 2 collection_id bit (36) aligned, 2 45 2 range_size fixed bin (35), 2 46 2 position_number fixed bin (17) unal, 2 47 2 pad bit (18) unal; 2 48 2 49 2 50 dcl (relation_search_specification_ptr, relation_numeric_specification_ptr) 2 51 ptr init (null); 2 52 dcl (rss_number_of_and_groups, rss_maximum_number_of_constraints) 2 53 fixed bin (17) init (0); 2 54 2 55 2 56 2 57 /* END INCLUDE FILE dm_relation_spec.incl.pl1 */ 580 581 3 1 /* BEGIN INCLUDE FILE dm_range_constants.incl.pl1. */ 3 2 3 3 /* HISTORY: 3 4*Written by Matthew Pierret, 05/27/83. 3 5*Modified: 3 6**/ 3 7 3 8 dcl ( 3 9 ALL_RANGE_TYPE init (1), 3 10 LOW_RANGE_TYPE init (2), 3 11 HIGH_RANGE_TYPE init (3) 3 12 ) fixed bin internal static options (constant); 3 13 3 14 3 15 /* END INCLUDE FILE dm_range_constants.incl.pl1. */ 582 583 4 1 /* BEGIN INCLUDE vrm_rel_desc.incl.pl1 */ 4 2 4 3 /* 83-05-26 Roger Lackey : Added vrm_attr_info.key_head bit for relation_cursors */ 4 4 4 5 dcl 1 vrm_rel_desc based (vrm_rel_desc_ptr), 4 6 2 record_id bit (12) unal, /* Distinguish us from tuples and collection records */ 4 7 2 version char (8), /* Version of this structure */ 4 8 2 file_id bit (7), /* Value of file id from model */ 4 9 2 rel_id bit (12), /* Relation id */ 4 10 2 switches, 4 11 3 MRDS_compatible bit (1) unal, /* For pre-relation_manager_ MRDS */ 4 12 3 stationary_records 4 13 bit (1) unal, /* On = stationary */ 4 14 3 indexed bit (1) unal, /* This relation has attributes with secondary indices */ 4 15 3 pad bit (33) unal, 4 16 2 var_offset fixed bin (35), /* Position of first varying attr */ 4 17 2 maximum_data_length 4 18 fixed bin (35), /* Maximum size of tuple in characters */ 4 19 2 number_primary_key_attrs 4 20 fixed bin, /* Number of attributes which make up the primary key */ 4 21 2 number_sec_indexes fixed bin, /* Number of attributes which have a secondary index */ 4 22 2 last_var_attr_no fixed bin, /* Attr index of last varying attribute */ 4 23 2 number_var_attrs fixed bin, /* Number of varying attributes */ 4 24 2 number_attrs fixed bin, /* Number of attribute in rel */ 4 25 2 attr (vrd_no_of_attrs /* Description of each attribute */ 4 26 refer (vrm_rel_desc.number_attrs)) aligned like vrm_attr_info; 4 27 4 28 dcl 1 vrm_attr_info based (vrm_attr_info_ptr), 4 29 /* Attribute specific info */ 4 30 2 name char (32), /* Name of the attribute */ 4 31 2 descriptor bit (36) aligned, /* domain descriptor */ 4 32 2 varying bit (1) unal, /* ON = This is a varying string */ 4 33 2 key_head bit (1) unal, /* ON = This attr can be a keyhead */ 4 34 2 primary_key_attr bit (1) unal, /* ON = This is a primary key attribute */ 4 35 2 pad bit (15) unal, /* unused */ 4 36 2 index_collextion_ix fixed bin (17) unal, /* Index into vrm_open_info.index_collection array if key_head is on */ 4 37 2 bit_length fixed bin (35), /* Maximum bit length of tuple */ 4 38 2 bit_offset fixed bin (35); /* Offset in tuple if fixed, index to offset in tuple if varying */ 4 39 4 40 4 41 dcl vrm_rel_desc_ptr pointer; 4 42 dcl vrd_no_of_attrs fixed bin; 4 43 dcl VRM_REL_DESC_RECORD_ID bit (12) unal int static options (constant) init ("100000000000"b); 4 44 dcl VRM_REL_DESC_VERSION_1 char (8) int static options (constant) init (" 1"); 4 45 dcl vrm_attr_info_ptr pointer; 4 46 dcl VRM_REL_DESC_KEY char (256) varying int static options (constant) init ("@relation_description"); 4 47 4 48 /* END INCLUDE vrm_rel_desc.incl.pl1 */ 584 585 5 1 /* BEGIN INCLUDE vrm_cursor.incl.pl1 */ 5 2 5 3 /* 83-05-26 Roger Lackey : Modifyed for relation cursors */ 5 4 5 5 dcl vrm_cursor_ptr pointer; /* Pointer to this structure */ 5 6 5 7 dcl 1 vrm_cursor aligned based (vrm_cursor_ptr), /* vfile relation manager cursor */ 5 8 2 opening_id bit (36) aligned, /* ID of opening associated with this cursor */ 5 9 2 debug_sw unal, /* Undefined MBZ */ 5 10 3 trace_open bit (1) unal, /* Show opening of iocb cursor creation time */ 5 11 3 pad bit (35) unal, 5 12 2 switches, 5 13 3 shared bit (1) unal, /* Other processes can use this relation */ 5 14 3 meter_sw bit (1) unal, /* On = Keep meters for this cursor */ 5 15 3 pad bit (7) unal, /* Unsed */ 5 16 2 opening_mode fixed bin, /* Opening mode for this cursor (8 = KSQR 10 = KSQU) */ 5 17 2 open_info_ptr pointer, /* Pointer to parent opening info structure */ 5 18 2 vrm_relation_desc_ptr pointer, /* Pointer to parent rel desc */ 5 19 2 iocb_ptr pointer, /* Pointer to attach iocb */ 5 20 2 secondary_iocb_ptr ptr, /* Second iocb_ptr used by vrmu_search */ 5 21 2 search_list_ptr ptr, /* Pointer to search_list */ 5 22 2 search_keys_ptr ptr, /* Pointer to search_keys array */ 5 23 2 meter_ptr pointer, /* Pointer metering str if metering is on or null */ 5 24 2 vrm_iocb_list_block_ptr pointer, /* Pointer to vrm_iocb_list_block that contains this cursors iocb */ 5 25 2 vrm_iocb_list_block_iocbs_ix fixed bin; /* Index into list_block.iocbs for location of iocb */ 5 26 5 27 5 28 /* END INCLUDE vrm_cursor.incl.pl1 */ 586 587 6 1 /* BEGIN INCLUDE vrm_search_list.incl.pl1 */ 6 2 6 3 dcl vrm_search_list_ptr pointer; 6 4 dcl vsl_number_of_and_groups fixed bin; 6 5 dcl vsl_max_number_of_constraints fixed bin; 6 6 6 7 dcl 1 vrm_search_list aligned based (vrm_search_list_ptr), 6 8 2 num_and_groups fixed bin (17) unal, /* Number of and groups in list */ 6 9 2 max_num_constraints fixed bin (17) unal, /* Maximum number of constraints in any search spec and group */ 6 10 2 current_and_group fixed bin (17) unal, 6 11 2 and_groups (vsl_number_of_and_groups refer (vrm_search_list.num_and_groups)), 6 12 3 num_cons_in_this_and_group fixed bin (17) unal, /* Number of constriants in this and group */ 6 13 3 num_key_cons_in_this_and_group fixed bin (17) unal, /* Number of key constraints in this and group */ 6 14 3 num_seek_key_attr_count fixed bin (17) unal, /* Number of attributes in seek key */ 6 15 3 pos_of_first_bad_key_tail_attr fixed bin (17) unal, /* Key attribute position of first bad key_tail attr */ 6 16 3 seek_key_con_ix fixed bin (17) unal, /* Constraint index to be used for seek key */ 6 17 3 do_not_use_sw bit (1) unal, /* ON = Do not use this and group 6 18* it has been optimized out */ 6 19 3 collection_id_supplied_sw bit (1) unal, /* ON IF collection id was supplied in search_spec */ 6 20 3 must_initialize_sw bit (1) unal, /* ON = init must be done */ 6 21 3 multi_attr_seek_head_sw bit (1) unal, /* ON = Seek head is a multi-attribute key */ 6 22 3 full_key_equal_only_sw bit (1) unal, /* ON = All operators in seek head key were = 6 23* and it was the full key */ 6 24 3 unused bit (13) unal, 6 25 3 collection_id bit (36) aligned, /* Collection id if supplied_sw is ON */ 6 26 3 collection_info_ptr ptr unal, /* IF collection_id_supplied_sw = ON then 6 27* this is vrm_collection_info_ptr */ 6 28 6 29 3 cons (vsl_max_number_of_constraints refer (vrm_search_list.max_num_constraints)) 6 30 like constraint_info; 6 31 6 32 dcl 1 constraint_info based, 6 33 6 34 2 val_ptr pointer unal, /* Pointer to data value */ 6 35 2 attr_desc_ptr pointer unal, /* Pointer to vrm_rel_desc attribute descriptor 6 36* for this attribute */ 6 37 2 encoded_key_ptr pointer unal, /* Pointer to encoded key value if this field 6 38* is a key for this cursor */ 6 39 2 encoded_key_length fixed bin (17) unal, /* Length in char of encoded key */ 6 40 2 search_keys_ix fixed bin (17) unal, /* Index into encoded_key table for this key */ 6 41 2 key_offset fixed bin (17) unal, /* Offset to first bit in key of this encoded key */ 6 42 2 key_bit_length fixed bin (17) unal, /* Length of key in bits */ 6 43 2 attr_position_in_key fixed bin (17) unal, /* Attribute position in multi key collection */ 6 44 2 operator fixed bin (17) unal, /* Operator for this constraint */ 6 45 2 attr_index fixed bin (17) unal, /* Index into vrm_rel_desc.attr array */ 6 46 2 attr_bit_length fixed bin (35), /* Bit length of attribute */ 6 47 2 valid_sw bit (1) unal, /* ON = This constraint is valid for spec */ 6 48 2 key_head_sw bit (1) unal, /* ON = this attribute can be used as a key head with 6 49* this cursor */ 6 50 2 key_attr_sw bit (1) unal, /* ON = This attribute is a key in this cursor */ 6 51 2 and_group_search_terminator bit (1) unal, /* ON = If this attribute is an and group teminator */ 6 52 2 seek_head_sw bit (1) unal, /* ON = this attribute was used 6 53* for seek_head */ 6 54 2 seek_head_tail_sw bit (1) unal, /* ON = This attr can be used for the last attribute of a seek head */ 6 55 2 unused bit (30) unal; /* Unused bits */ 6 56 6 57 6 58 dcl search_keys_ptr ptr; 6 59 dcl alloc_num_search_keys fixed bin (17); 6 60 dcl search_keys (alloc_num_search_keys) char (256) varying based (search_keys_ptr); 6 61 6 62 /* END INCLUDE vrm_search_list.incl.pl1 */ 588 589 7 1 /* BEGIN INCLUDE vrm_meter.incl.pl1 */ 7 2 7 3 dcl vrm_meter_ptr pointer; 7 4 7 5 dcl 1 vrm_meter aligned based (vrm_meter_ptr), 7 6 2 cursor_name char (32), /* Name of cursor */ 7 7 2 meter_start_time fixed bin (71), 7 8 2 switches, 7 9 3 metering bit (1) unal, /* On = meter being done */ 7 10 3 mbz bit (35) unal, 7 11 2 cursor_ptr ptr, /* Pointer to vrm_cursor structure */ 7 12 2 last_call_stats like statistics, 7 13 2 total_stats like statistics; 7 14 7 15 dcl 1 statistics based, /* Used in like above */ 7 16 2 last_time_of_stats fixed bin (71), /* Last clock value for stats taken */ 7 17 2 vcpu_time float bin (63), /* The vcpu for this cursor */ 7 18 2 page_faults fixed bin (70), /* Page faults for this cursor */ 7 19 2 number_times_locked fixed bin (70), /* Number of time a lock was set */ 7 20 2 number_times_used fixed bin (70), /* Number of time cursor was used */ 7 21 2 num_times_search_called fixed bin (70), /* Number of time vrm_search was called */ 7 22 2 records_searched fixed bin (70), /* The records searched */ 7 23 2 seek_heads fixed bin (70), /* The seek heads done for key searches */ 7 24 2 special_seek_heads fixed bin (70), /* The seek heads done for key searches */ 7 25 2 keys_read fixed bin (70), /* The keys read by key search */ 7 26 2 keys_compared fixed bin (70), /* The keys compared in key search */ 7 27 2 key_hits fixed bin (70), /* The key hits for key search */ 7 28 2 non_key_compares fixed bin (70), /* The non_key compares done for this cursor */ 7 29 2 non_key_hits fixed bin (70), /* The non_key hits for this cursor */ 7 30 2 upper_limit_found_count fixed bin (70), /* The number of times upper limit was exceeded */ 7 31 2 number_items_returned fixed bin (70), /* Number of tuples or tid returned */ 7 32 2 number_tuples_deleted fixed bin (70), /* Number of tuples deleted */ 7 33 2 number_tuples_modified fixed bin (70), /* Number of tuples modified */ 7 34 2 number_tuples_stored fixed bin (70); /* Number of tuples stored */ 7 35 7 36 /* END INCLUDE vrm_meter.incl.pl1 */ 590 591 8 1 /* BEGIN INCLUDE FILE - dm_element_id_list.incl.pl1 */ 8 2 8 3 /* DESCRIPTION: 8 4* The element_id_list structure contains an array of element 8 5* identifiers. These identifiers are used as tuple, record or 8 6* element identifiers. This structure is used across the relation_manager_, 8 7* record_manager_ and index_manager_ interfaces. At some time the 8 8* version should be changed to be char(8)aligned, when such a conversion 8 9* can be coordinated with the other structures used at these interfaces. 8 10**/ 8 11 8 12 /* HISTORY: 8 13*Written by Matthew Pierret, 06/06/82. 8 14*Modified: 8 15*12/16/82 by Roger Lackey: Changed number_of_elements to fixed bin (35). 8 16* Did not change version. 8 17*02/11/85 by Matthew Pierret: Added DESCRIPTION, Written by. 8 18**/ 8 19 8 20 /* format: style2,ind3 */ 8 21 dcl 1 element_id_list aligned based (element_id_list_ptr), 8 22 2 version fixed bin (35), 8 23 2 number_of_elements fixed bin (35), 8 24 2 id (eil_number_of_elements refer (element_id_list.number_of_elements)) bit (36) aligned; 8 25 8 26 dcl element_id_list_ptr ptr; 8 27 dcl eil_number_of_elements fixed bin (35); 8 28 dcl ELEMENT_ID_LIST_VERSION_1 8 29 init (1) fixed bin (35); 8 30 8 31 8 32 /* END INCLUDE FILE - dm_element_id_list.incl.pl1 */ 592 593 9 1 /* BEGIN INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 /* Written by R. Harvey, 09/24/82 9 4*Modified: 9 5*09/27/82 by Matthew Pierret: Changed "max" to "maximum", tvl_number_of_vectors 9 6* to tvl_maximum_number_of_vectors. 9 7**/ 9 8 9 9 /* format: style2,ind3 */ 9 10 dcl 1 typed_vector_list aligned based (typed_vector_list_ptr), 9 11 2 version fixed bin (17), 9 12 2 maximum_number_of_vectors 9 13 fixed bin (35), /* vectors available */ 9 14 2 number_of_vectors fixed bin (35), /* number of vector_ptrs used */ 9 15 2 pad fixed bin (35), /* (even word boundary) */ 9 16 2 vector_ptr (tvl_maximum_number_of_vectors refer (typed_vector_list.maximum_number_of_vectors)) ptr; 9 17 9 18 dcl typed_vector_list_ptr ptr; 9 19 dcl TYPED_VECTOR_LIST_VERSION_1 9 20 fixed bin (17) int static options (constant) init (1); 9 21 dcl tvl_maximum_number_of_vectors fixed bin (35); 9 22 9 23 /* END INCLUDE dm_typed_vector_list.incl.pl1 * * * * * * * * * * * * * * * * */ 594 595 10 1 /* BEGIN vrm_tuple.incl.pl1 -- jaw, 7/25/78 */ 10 2 10 3 /* 82-08-27 R. Harvey: taken from mdbm_tuple.incl.pl1 for vfile_relmgr_. 10 4* Modified dimension references to point to entries in vrm_rel_desc. */ 10 5 10 6 10 7 dcl 1 tuple aligned based (tuple_ptr), /* tuple format, all file types */ 10 8 2 rel_id bit (12) unal, /* relation id */ 10 9 2 attr_exists (vrm_rel_desc.number_attrs) bit (1) unal, /* existance flags */ 10 10 2 var_offsets (vrm_rel_desc.number_var_attrs) fixed bin (35) unal, /* offsets for variable attr.; stored as len|value */ 10 11 2 force_even_word (tuple_pad_length) fixed bin (71) aligned, /* pad to even word boundary */ 10 12 2 data char (vrm_rel_desc.maximum_data_length) unal; /* space for data */ 10 13 10 14 10 15 dcl tuple_ptr ptr; 10 16 dcl tuple_length fixed bin (21); /* byte count */ 10 17 10 18 declare tuple_pad_length fixed bin internal static init (0) ; /* minimum array size needed for even word padding */ 10 19 10 20 10 21 10 22 /* END vrm_tuple.incl.pl1 */ 10 23 596 597 11 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 11 2 11 3 /* R. Harvey 82-11-02 11 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 11 5 11 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 11 7 2 version char (8), /* Version number of this structure */ 11 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 11 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 11 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 11 11 2 switches, 11 12 3 shared bit (1) unal, /* Open relation in shared mode */ 11 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 11 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 11 15 2 relation_name char (30) varying, /* Name of relation */ 11 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 11 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 11 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 11 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 11 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 11 21 2 index_collection (voi_no_of_index_collections 11 22 refer (vrm_open_info.number_of_index_collections)), 11 23 3 id bit (36), 11 24 3 info_ptr ptr unal; /* Points to more detailed info */ 11 25 11 26 11 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 11 28 dcl vrm_open_info_ptr ptr; 11 29 dcl voi_no_of_index_collections fixed bin; 11 30 11 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 598 599 12 1 /* BEGIN INCLUDE vrm_search_info.incl.pl1 */ 12 2 12 3 dcl vrm_search_info_ptr pointer; 12 4 12 5 dcl 1 vrm_search_info aligned based (vrm_search_info_ptr), 12 6 2 tuple_pointer_required bit (1) unal, /* ON = Tuple pointer needs to be returned by search */ 12 7 2 tuple_tid_required bit (1) unal, /* ON = Tuple id needs to be returned by search */ 12 8 2 meter_sw bit (1) unal, /* ON = Metering is being done */ 12 9 2 mbz bit (33) init ("0"b), 12 10 2 upper_limit_exceeded_sw bit (1) aligned, /* ON = Upper limit on search was exceeded */ 12 11 2 last_call_stats like statistics, /* Statistics is found in vrm_cursor.incl.pl1 */ 12 12 2 max_number_values fixed bin (35), /* Maximum number of values allowed by get_by_spec */ 12 13 2 cur_id_list_ix fixed bin (35), /* Index in to id_list */ 12 14 2 num_items_returned fixed bin, /* Number of items retruned by vrmu_search */ 12 15 2 tid_list_ptr ptr, /* Pointer to list of tids returned */ 12 16 2 tup_ptr (1001) ptr unal; 12 17 12 18 dcl MAX_SEARCH_ITEMS fixed bin int static options (constant) init (1001); 12 19 12 20 /* END INCLUDE vrm_search_info.incl.pl1 */ 600 601 13 1 dcl 1 uns_info based (addr (info)), /* info structure for unstructured files */ 13 2 2 info_version fixed, /* (Input) must =1--only one version 13 3* currently supported */ 13 4 2 type fixed, /* =1 */ 13 5 2 end_pos fixed (34), /* length (bytes) not including header */ 13 6 2 flags aligned, 13 7 3 pad1 bit (2) unal, /* used for lock_status in other files */ 13 8 3 header_present bit (1) unal, /* on if file code is set */ 13 9 3 pad2 bit (33) unal, 13 10 2 header_id fixed (35); /* meaning is user defined */ 13 11 dcl 1 seq_info based (addr (info)), /* info structure for sequential files */ 13 12 2 info_version fixed, 13 13 2 type fixed, /* =2 */ 13 14 2 end_pos fixed (34), /* record count */ 13 15 2 flags aligned, 13 16 3 lock_status bit (2) unal, /* 0,1,2, or 3 to indicate not locked, 13 17* locked by (other,this,dead) process */ 13 18 3 pad bit (34) unal, 13 19 2 version fixed, /* end_pos valid only in latest version */ 13 20 2 action fixed; /* indicates if adjustment or rollback is needed */ 13 21 dcl 1 blk_info based (addr (info)), /* info structure for blocked files */ 13 22 2 info_version fixed, 13 23 2 type fixed, /* =3 */ 13 24 2 end_pos fixed (34), /* record count */ 13 25 2 flags aligned, 13 26 3 lock_status bit (2) unal, /* same as seq_info.= */ 13 27 3 pad bit (34) unal, 13 28 2 version fixed, /* only one currently supported */ 13 29 2 action fixed, /* non-zero if truncation in progress, else =0 */ 13 30 2 max_rec_len fixed (21), /* bytes--determines characteristiWc block size */ 13 31 2 pad fixed, /* not used at this time */ 13 32 2 time_last_modified fixed (71); /* time stamp for synchronization */ 13 33 dcl 1 indx_info based (addr (info)), /* info structure for indexed files */ 13 34 2 info_version fixed, 13 35 2 type fixed, /* =4 */ 13 36 2 records fixed (34), /* record count */ 13 37 2 flags aligned, 13 38 3 lock_status bit (2) unal, /* same as seq_info.= */ 13 39 3 pad bit (34) unal, 13 40 2 version_info aligned, 13 41 3 file_version fixed (17) unal, /* headers differ */ 13 42 3 program_version fixed (17) unal, /* may indicate bugs */ 13 43 2 action fixed, /* non-zero code indicates update in progress */ 13 44 2 non_null_recs fixed (34), /* count of allocated recs */ 13 45 2 record_bytes fixed (34), /* total record length */ 13 46 2 free_blocks fixed, /* available record blocks */ 13 47 2 index_height fixed, /* height of index tree (0 if empty) */ 13 48 2 nodes fixed, /* nodes being used in the index */ 13 49 2 key_bytes fixed (34), /* total length of keys */ 13 50 2 change_count fixed (35), /* bumped on each file modification */ 13 51 2 num_keys fixed (34), /* number of index entries */ 13 52 2 dup_keys fixed (34), /* 0 if all keys are distinct, else 1 for each dup */ 13 53 2 dup_key_bytes fixed (34), /* total bytes of duplicate keys */ 13 54 2 word (1) fixed; /* reserved for future use */ 13 55 dcl 1 vbl_info based (addr (info)), /* info structure for variable files */ 13 56 2 info_version fixed, 13 57 2 type fixed, /* =5 */ 13 58 2 end_pos fixed (34), /* logical end of file--not necessarily allocation count */ 13 59 2 flags aligned, 13 60 3 lock_status bit (2) unal, /* same as seq_info.= */ 13 61 3 pad bit (34) unal, 13 62 2 version fixed, /* only one currently supported */ 13 63 2 action fixed, /* same as in indexed files */ 13 64 2 first_nz fixed (34), /* position (numeric key) for first allocated record */ 13 65 2 last_nz fixed (34), /* last allocated record position */ 13 66 2 change_count fixed (35); /* used for synchronization */ 13 67 dcl vfs_version_1 static internal fixed init (1); 13 68 /* should be used in 13 69* assignments to info_version */ 602 603 14 1 /* BEGIN INCLUDE vrm_com.incl.pl1 */ 14 2 14 3 /* Written 82-08-23 by R. Harvey */ 14 4 14 5 dcl vrm_com_ptr ptr; 14 6 dcl 1 vrm_com aligned based (vrm_com_ptr), 14 7 2 get_seg_ptr ptr, /* temp seg for retrieve routines */ 14 8 2 put_seg_ptr ptr, /* temp seg for store routines */ 14 9 2 mod_seg_ptr ptr, /* temp seg for modify routines */ 14 10 2 work_area_ptr ptr, /* freeing area for oid_table sections and rel_descriptors */ 14 11 2 highest_oid bit (36) aligned, /* highest valid oid */ 14 12 2 next_free_oid bit (36) aligned, /* offset of first in free chain */ 14 13 2 first_assigned_oid bit (36) aligned, /* offset of first in assigned chain */ 14 14 2 oid_area area (sys_info$max_seg_size - fixed (rel (addr (vrm_com.work_area_ptr)))); 14 15 14 16 /* END INCLUDE vrm_com.incl.pl1 */ 604 605 15 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 15 2 /* format: style3 */ 15 3 15 4 /* These constants are to be used for the flags argument of sub_err_ */ 15 5 /* They are just "string (condition_info_header.action_flags)" */ 15 6 15 7 declare ( 15 8 ACTION_CAN_RESTART init (""b), 15 9 ACTION_CANT_RESTART init ("1"b), 15 10 ACTION_DEFAULT_RESTART 15 11 init ("01"b), 15 12 ACTION_QUIET_RESTART 15 13 init ("001"b), 15 14 ACTION_SUPPORT_SIGNAL 15 15 init ("0001"b) 15 16 ) bit (36) aligned internal static options (constant); 15 17 15 18 /* End include file */ 606 607 608 609 dcl 1 search_info like vrm_search_info aligned; 610 611 dcl 1 vfsi like indx_info; 612 613 dcl addr builtin; 614 dcl ag fixed bin; 615 dcl all_range_spec bit (1) aligned; 616 dcl area condition; 617 dcl area_ptr ptr; 618 dcl area_seg_ptr ptr int static init (null); 619 dcl cleanup condition; 620 dcl clock builtin; 621 dcl code fixed bin (35); 622 dcl cpu_time_and_paging_ entry (fixed bin, fixed bin (71), fixed bin); 623 dcl cur_ag fixed bin; 624 dcl db_sw bit (1) int static init ("0"b); 625 dcl divide builtin; 626 dcl dm_error_$no_tuple fixed bin (35) ext static; 627 dcl dm_error_$unsup_search_spec_head_type fixed bin (35) ext static; 628 dcl dummy fixed bin; 629 dcl element_id_list_supplied_sw bit (1) aligned; 630 dcl empty builtin; 631 dcl entry_type fixed bin; 632 dcl err_code fixed bin (35); 633 dcl error_table_$noalloc fixed bin (35) ext static; 634 dcl error_table_$unimplemented_version fixed bin (35) ext static; 635 dcl file_locked bit (1); 636 dcl fixed builtin; 637 dcl get_area area (sys_info$max_seg_size) based (area_seg_ptr); 638 dcl GET_COUNT fixed bin int static options (constant) init (3); 639 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 640 dcl GET_TID fixed bin int static options (constant) init (2); 641 dcl GET_TUPLE fixed bin int static options (constant) init (1); 642 dcl GET_TUPLE_AND_TID fixed bin int static options (constant) init (4); 643 dcl id_list_ptr ptr; 644 dcl info fixed bin; /* Dummy variable for vfsi like */ 645 dcl ioa_ entry () options (variable); 646 dcl iocb_ptr ptr; 647 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 648 dcl items_found fixed bin (35); 649 dcl KSQU fixed bin int static options (constant) init (10); 650 dcl LOCK bit (2) aligned int static options (constant) init ("10"b); 651 dcl lock_err_code fixed bin (35); 652 dcl metering_sw bit (1) aligned; 653 dcl min builtin; 654 dcl mrds_error_$internal_error fixed bin (35) ext static; 655 dcl MY_NAME char (24) int static options (constant) init ("vrm_get_by_spec"); 656 dcl n fixed bin; 657 dcl null builtin; 658 dcl pf_1 fixed bin; 659 dcl pf_2 fixed bin; 660 dcl rel builtin; 661 dcl sub_err_ entry () options (variable); 662 dcl sys_info$max_seg_size fixed bin (35) ext static; 663 dcl t1 fixed bin (71); 664 dcl t2 fixed bin (71); 665 dcl t3 float bin (63); 666 dcl tid_temp_seg_ptr ptr internal static init (null); 667 dcl tuple_temp_seg_ptr ptr internal static init (null); 668 dcl UNLOCK bit (2) aligned int static options (constant) init ("00"b); 669 dcl vector_ptr ptr; 670 dcl vrmu_cv_tuple_to_vector$simple_vector entry (ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 671 dcl vrmu_search entry (ptr, ptr, fixed bin (35)); 672 dcl vrmu_search_init entry (ptr, ptr, fixed bin (35)); 673 dcl vrm_data_$typed_vector_array_limit fixed bin (35) ext static; 674 dcl vrm_display_search_list$subroutine entry (ptr); 675 dcl wa area based (area_ptr); 676 677 end vrm_get_by_spec; 678 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/05/85 0836.6 vrm_get_by_spec.pl1 >spec>on>7138.pbf>vrm_get_by_spec.pl1 578 1 10/14/83 1609.1 dm_specification_head.incl.pl1 >ldd>include>dm_specification_head.incl.pl1 580 2 10/14/83 1609.1 dm_relation_spec.incl.pl1 >ldd>include>dm_relation_spec.incl.pl1 582 3 10/14/83 1609.1 dm_range_constants.incl.pl1 >ldd>include>dm_range_constants.incl.pl1 584 4 10/14/83 1609.1 vrm_rel_desc.incl.pl1 >ldd>include>vrm_rel_desc.incl.pl1 586 5 10/14/83 1609.1 vrm_cursor.incl.pl1 >ldd>include>vrm_cursor.incl.pl1 588 6 10/14/83 1609.1 vrm_search_list.incl.pl1 >ldd>include>vrm_search_list.incl.pl1 590 7 10/14/83 1609.1 vrm_meter.incl.pl1 >ldd>include>vrm_meter.incl.pl1 592 8 03/05/85 0800.2 dm_element_id_list.incl.pl1 >spec>on>7138.pbf>dm_element_id_list.incl.pl1 594 9 10/14/83 1609.1 dm_typed_vector_list.incl.pl1 >ldd>include>dm_typed_vector_list.incl.pl1 596 10 10/14/83 1609.1 vrm_tuple.incl.pl1 >ldd>include>vrm_tuple.incl.pl1 598 11 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 600 12 10/14/83 1609.1 vrm_search_info.incl.pl1 >ldd>include>vrm_search_info.incl.pl1 602 13 07/19/79 1547.0 vfs_info.incl.pl1 >ldd>include>vfs_info.incl.pl1 604 14 10/14/83 1609.1 vrm_com.incl.pl1 >ldd>include>vrm_com.incl.pl1 606 15 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE constant fixed bin(17,0) initial dcl 1-22 ref 224 228 ACTION_CANT_RESTART 000024 constant bit(36) initial dcl 15-7 set ref 244* ELEMENT_ID_LIST_VERSION_1 000121 automatic fixed bin(35,0) initial dcl 8-28 set ref 273 278 8-28* GET_COUNT constant fixed bin(17,0) initial dcl 638 ref 160 318 417 GET_TID constant fixed bin(17,0) initial dcl 640 ref 130 196 263 399 410 427 485 GET_TUPLE constant fixed bin(17,0) initial dcl 641 ref 80 192 285 292 377 393 425 447 483 GET_TUPLE_AND_TID constant fixed bin(17,0) initial dcl 642 ref 109 192 196 263 285 288 377 399 429 447 487 I_count_cursor_ptr parameter pointer dcl 150 ref 146 157 I_count_spec_ptr parameter pointer dcl 149 ref 146 156 I_gt_area_ptr parameter pointer dcl 72 ref 66 84 I_gt_cursor_ptr parameter pointer dcl 74 ref 66 82 I_gt_id_list_ptr parameter pointer dcl 73 ref 66 81 I_gt_spec_ptr parameter pointer dcl 71 ref 66 83 I_gti_area_ptr parameter pointer dcl 100 ref 95 112 I_gti_cursor_ptr parameter pointer dcl 102 ref 95 111 I_gti_id_list_ptr parameter pointer dcl 101 ref 95 113 I_gti_spec_ptr parameter pointer dcl 99 ref 95 110 I_id_area_ptr parameter pointer dcl 123 ref 119 133 I_id_cursor_ptr parameter pointer dcl 124 ref 119 132 I_id_spec_ptr parameter pointer dcl 122 ref 119 131 KSQU constant fixed bin(17,0) initial dcl 649 ref 345 LOCK 000024 constant bit(2) initial dcl 650 set ref 536 536 LOW_RANGE_TYPE constant fixed bin(17,0) initial dcl 3-8 ref 233 MRDS_compatible 3(01) based bit(1) level 3 packed unaligned dcl 4-5 ref 327 MY_NAME 000000 constant char(24) initial unaligned dcl 655 set ref 182* 244* 268* 299* O_count_code parameter fixed bin(35,0) dcl 153 set ref 146 159* 334* 431* 489* O_count_number parameter fixed bin(35,0) dcl 151 set ref 146 158* 320* 327* 330* 417* O_gt_code parameter fixed bin(35,0) dcl 76 set ref 66 86* 425* 483* O_gt_vec_list_ptr parameter pointer dcl 75 set ref 66 85* 292 292 393* O_gti_code parameter fixed bin(35,0) dcl 106 set ref 95 115* 429* 487* O_id_code parameter fixed bin(35,0) dcl 127 set ref 119 135* 427* 485* RELATIVE_RELATION_SEARCH_SPECIFICATION_TYPE constant fixed bin(17,0) initial dcl 1-22 ref 224 TYPED_VECTOR_LIST_VERSION_1 constant fixed bin(17,0) initial dcl 9-19 ref 305 310 383 UNLOCK 000016 constant bit(2) initial dcl 668 set ref 503 503 557 557 X_gti_tid_list_ptr parameter pointer dcl 103 set ref 95 412* X_gti_vec_list_ptr parameter pointer dcl 105 set ref 95 114 288 288 395* X_id_tid_list_ptr parameter pointer dcl 125 set ref 119 134 410* addr builtin function dcl 613 ref 189 324 324 503 503 536 536 557 557 ag 002206 automatic fixed bin(17,0) dcl 614 set ref 254* 256 256* all_range_spec 002207 automatic bit(1) dcl 615 set ref 211* 219* 229* 238 and_groups 2 based structure array level 2 dcl 6-7 area 002210 stack reference condition dcl 616 ref 379 area_ptr 002216 automatic pointer dcl 617 set ref 84* 112* 133* 382 405 458* area_seg_ptr 000010 internal static pointer initial dcl 618 set ref 179 185* 186 cd parameter fixed bin(35,0) dcl 481 ref 478 483 485 487 489 cleanup 002220 stack reference condition dcl 619 ref 213 clock builtin function dcl 620 ref 510 code 002226 automatic fixed bin(35,0) dcl 621 set ref 182* 183 183* 239* 240 240* 268* 269 269* 299* 300 300* 324* 325 334 348* 350 354* 362 363 363* 367* 503* com_ptr 74 based pointer level 2 dcl 11-6 ref 180 constraint_info based structure level 1 unaligned dcl 6-32 cpu_time_and_paging_ 000020 constant entry external dcl 622 ref 168 508 cur_ag 002227 automatic fixed bin(17,0) dcl 623 set ref 252* 254 256* 259 260 cur_id_list_ix 53 000134 automatic fixed bin(35,0) level 2 dcl 609 set ref 190* 471* current_and_group 1 based fixed bin(17,0) level 2 packed unaligned dcl 6-7 set ref 260* 364 366* 366 db_sw 000012 internal static bit(1) initial unaligned dcl 624 set ref 339 435 570* 575* divide builtin function dcl 625 ref 513 dm_error_$no_tuple 000022 external static fixed bin(35,0) dcl 626 set ref 259* 363 425 427 429 dm_error_$unsup_search_spec_head_type 000024 external static fixed bin(35,0) dcl 627 set ref 224* do_not_use_sw 4(18) based bit(1) array level 3 packed unaligned dcl 6-7 ref 256 dummy 002230 automatic fixed bin(17,0) dcl 628 set ref 168* 508* eil_number_of_elements 000120 automatic fixed bin(35,0) dcl 8-27 set ref 402* 405 405 element_id_list based structure level 1 dcl 8-21 set ref 405 408* 408 element_id_list_ptr 000116 automatic pointer dcl 8-26 set ref 114* 134* 265 272* 273 274 278 280 282 405* 406 408 410 412 414 element_id_list_supplied_sw 002231 automatic bit(1) dcl 629 set ref 266* 277* 404 empty builtin function dcl 630 ref 186 entry_type 002232 automatic fixed bin(17,0) dcl 631 set ref 80* 109* 130* 160* 192 192 196 196 263 263 285 285 288 292 318 377 377 393 399 399 410 417 425 427 429 447 447 483 485 487 err_code 002233 automatic fixed bin(35,0) dcl 632 set ref 458* 460 460* error_table_$noalloc 000026 external static fixed bin(35,0) dcl 633 set ref 379* error_table_$unimplemented_version 000030 external static fixed bin(35,0) dcl 634 set ref 278* 310* file_locked 002234 automatic bit(1) unaligned dcl 635 set ref 175* 372 503 540* 555 561* get_area based area dcl 637 set ref 186* get_seg_ptr based pointer level 2 dcl 14-6 set ref 181 182* 185 get_temp_segment_ 000032 constant entry external dcl 639 ref 182 268 299 head based structure level 2 dcl 2-9 id_list_ptr 002236 automatic pointer dcl 643 set ref 81* 113* 458* indx_info based structure level 1 unaligned dcl 13-33 info_version 002165 automatic fixed bin(17,0) level 2 dcl 611 set ref 322* ioa_ 000034 constant entry external dcl 645 ref 435 iocb_ptr 002240 automatic pointer dcl 646 in procedure "vrm_get_by_spec" set ref 209* 324* 503* 536* 557* iocb_ptr 10 based pointer level 2 in structure "vrm_cursor" dcl 5-7 in procedure "vrm_get_by_spec" ref 209 iox_$control 000036 constant entry external dcl 647 ref 324 503 536 557 items_found 002242 automatic fixed bin(35,0) dcl 648 set ref 210* 350 374 380 385 386 402 406 407 414 417 435* 452* 452 456 463 467* 467 471 515 last_call_stats 16 based structure level 2 in structure "vrm_meter" dcl 7-5 in procedure "vrm_get_by_spec" set ref 170* 509* 521 last_call_stats 4 based structure level 2 in structure "vrm_search_info" dcl 12-5 in procedure "vrm_get_by_spec" set ref 205* 509 last_call_stats 4 000134 automatic structure level 2 in structure "search_info" dcl 609 in procedure "vrm_get_by_spec" last_time_of_stats 16 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 7-5 in procedure "vrm_get_by_spec" set ref 510* last_time_of_stats 64 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 7-5 in procedure "vrm_get_by_spec" set ref 520* lock_err_code 002243 automatic fixed bin(35,0) dcl 651 set ref 536* 537 537* 557* 558 558* max_num_constraints 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 6-7 ref 256 256 max_number_values 52 000134 automatic fixed bin(35,0) level 2 dcl 609 set ref 220* 230* 233* 274 280 307* 307 313 350 maximum_number_of_vectors 1 based fixed bin(35,0) level 2 dcl 9-10 set ref 307 313* 382* 386* 389 mbz 1 000134 automatic bit(33) initial level 2 dcl 609 set ref 609* meter_ptr 20 based pointer level 2 dcl 5-7 ref 169 meter_sw 0(02) based bit(1) level 2 in structure "vrm_search_info" packed unaligned dcl 12-5 in procedure "vrm_get_by_spec" set ref 201* 202* meter_sw 2(01) based bit(1) level 3 in structure "vrm_cursor" packed unaligned dcl 5-7 in procedure "vrm_get_by_spec" ref 164 metering_sw 002244 automatic bit(1) dcl 652 set ref 171* 173* 201 506 533 min builtin function dcl 653 ref 307 mrds_error_$internal_error 000040 external static fixed bin(35,0) dcl 654 set ref 244* n 002245 automatic fixed bin(17,0) dcl 656 set ref 450* 457* non_null_recs 6 002165 automatic fixed bin(34,0) level 2 dcl 611 set ref 327 330 null builtin function dcl 657 ref 85 179 181 215 243 244 244 265 267 287 288 292 296 298 318 2-50 2-50 454 num_and_groups based fixed bin(17,0) level 2 packed unaligned dcl 6-7 ref 251 254 364 num_items_returned 54 000134 automatic fixed bin(17,0) level 2 dcl 609 set ref 352* 355 450 467 number_items_returned 54 based fixed bin(70,0) level 3 dcl 7-5 set ref 515* number_of_elements 1 based fixed bin(35,0) level 2 dcl 8-21 set ref 274* 280* 405* 406* 407* 408 414* number_of_vectors 2 based fixed bin(35,0) level 2 dcl 9-10 set ref 385* number_times_locked 12 000134 automatic fixed bin(70,0) level 3 dcl 609 set ref 533* 533 number_times_used 26 based fixed bin(70,0) level 3 dcl 7-5 set ref 519* open_info_ptr 4 based pointer level 2 dcl 5-7 ref 177 180 opening_mode 3 based fixed bin(17,0) level 2 dcl 5-7 ref 345 pad 3 based fixed bin(35,0) level 2 dcl 9-10 set ref 384* page_faults 22 based fixed bin(70,0) level 3 dcl 7-5 set ref 514* pf_1 002246 automatic fixed bin(17,0) dcl 658 set ref 168* 514 pf_2 002247 automatic fixed bin(17,0) dcl 659 set ref 508* 514 range 6 based structure level 2 dcl 2-9 relation_numeric_specification_ptr 000102 automatic pointer initial dcl 2-50 set ref 2-50* relation_search_specification based structure level 1 dcl 2-9 relation_search_specification_ptr 000100 automatic pointer initial dcl 2-50 set ref 83* 110* 131* 156* 215 224 224 228 233 233 239* 318 2-50* rss_maximum_number_of_constraints 000105 automatic fixed bin(17,0) initial dcl 2-52 set ref 218* 2-52* rss_number_of_and_groups 000104 automatic fixed bin(17,0) initial dcl 2-52 set ref 2-52* search_info 000134 automatic structure level 1 dcl 609 set ref 189 search_list_ptr 14 based pointer level 2 dcl 5-7 ref 243 249 shared 2 based bit(1) level 3 in structure "vrm_cursor" packed unaligned dcl 5-7 in procedure "vrm_get_by_spec" set ref 177* 344 shared 5 based bit(1) level 3 in structure "vrm_open_info" packed unaligned dcl 11-6 in procedure "vrm_get_by_spec" ref 177 size 7 based fixed bin(17,0) level 3 dcl 2-9 ref 233 specification_head based structure level 1 unaligned dcl 1-10 statistics based structure level 1 unaligned dcl 7-15 sub_err_ 000042 constant entry external dcl 661 ref 244 switches 3(01) based structure level 2 in structure "vrm_rel_desc" packed unaligned dcl 4-5 in procedure "vrm_get_by_spec" switches 2 based structure level 2 in structure "vrm_cursor" dcl 5-7 in procedure "vrm_get_by_spec" switches 5 based structure level 2 in structure "vrm_open_info" dcl 11-6 in procedure "vrm_get_by_spec" sys_info$max_seg_size 000044 external static fixed bin(35,0) dcl 662 ref 186 t1 002250 automatic fixed bin(71,0) dcl 663 set ref 168* 512 t2 002252 automatic fixed bin(71,0) dcl 664 set ref 508* 512 t3 002254 automatic float bin(63) dcl 665 set ref 512* 513 tid_list_ptr 56 000134 automatic pointer level 2 dcl 609 set ref 282* tid_temp_seg_ptr 000014 internal static pointer initial dcl 666 set ref 267 268* 272 407 408 total_stats 64 based structure level 2 dcl 7-5 set ref 521* 521 tup_ptr 60 000134 automatic pointer array level 2 packed unaligned dcl 609 set ref 457 tuple_pointer_required based bit(1) level 2 packed unaligned dcl 12-5 set ref 192* 194* tuple_ptr 000126 automatic pointer dcl 10-15 set ref 457* 458* tuple_temp_seg_ptr 000016 internal static pointer initial dcl 667 set ref 298 299* 304 313 377 386 389 454 tuple_tid_required 0(01) based bit(1) level 2 packed unaligned dcl 12-5 set ref 196* 198* tvl_maximum_number_of_vectors 000124 automatic fixed bin(35,0) dcl 9-21 set ref 380* 382 382 type 6 based fixed bin(17,0) level 3 in structure "relation_search_specification" dcl 2-9 in procedure "vrm_get_by_spec" ref 233 type 1 based fixed bin(17,0) level 3 in structure "relation_search_specification" packed unaligned dcl 2-9 in procedure "vrm_get_by_spec" ref 224 224 228 typed_vector_list based structure level 1 dcl 9-10 set ref 382 typed_vector_list_ptr 000122 automatic pointer dcl 9-18 set ref 287* 288* 292* 296 304* 305 307 310 313 313 377 382* 383 384 385 389 393 395 454 456 463 upper_limit_exceeded_sw 2 based bit(1) level 2 dcl 12-5 set ref 204* 516 upper_limit_found_count 52 based fixed bin(70,0) level 3 dcl 7-5 set ref 516* 516 vcpu_time 20 based float bin(63) level 3 dcl 7-5 set ref 513* vector_ptr 002256 automatic pointer dcl 669 in procedure "vrm_get_by_spec" set ref 454* 456* 458* 463 vector_ptr 4 based pointer array level 2 in structure "typed_vector_list" dcl 9-10 in procedure "vrm_get_by_spec" set ref 389* 389 456 463* version based fixed bin(35,0) level 2 in structure "element_id_list" dcl 8-21 in procedure "vrm_get_by_spec" set ref 273* 278 version based fixed bin(17,0) level 2 in structure "typed_vector_list" dcl 9-10 in procedure "vrm_get_by_spec" set ref 305* 310 383* vfsi 002165 automatic structure level 1 unaligned dcl 611 set ref 324 324 vrm_attr_info based structure level 1 unaligned dcl 4-28 vrm_com based structure level 1 dcl 14-6 vrm_com_ptr 000132 automatic pointer dcl 14-5 set ref 180* 181 182 185 vrm_cursor based structure level 1 dcl 5-7 vrm_cursor_ptr 000110 automatic pointer dcl 5-5 set ref 82* 111* 132* 157* 164 169 177 177 180 207 209 239* 243 249 339* 344 345 354* vrm_data_$typed_vector_array_limit 000054 external static fixed bin(35,0) dcl 673 ref 220 230 vrm_display_search_list$subroutine 000056 constant entry external dcl 674 ref 339 vrm_meter based structure level 1 dcl 7-5 vrm_meter_ptr 000114 automatic pointer dcl 7-3 set ref 169* 170 509 510 513 514 515 516 516 519 520 521 521 521 vrm_open_info based structure level 1 dcl 11-6 vrm_rel_desc based structure level 1 unaligned dcl 4-5 vrm_rel_desc_ptr 000106 automatic pointer dcl 4-41 set ref 207* 327 458* vrm_relation_desc_ptr 6 based pointer level 2 dcl 5-7 ref 207 vrm_search_info based structure level 1 dcl 12-5 vrm_search_info_ptr 000130 automatic pointer dcl 12-3 set ref 189* 192 194 196 198 201 202 204 205 354* 509 516 vrm_search_list based structure level 1 dcl 6-7 vrm_search_list_ptr 000112 automatic pointer dcl 6-3 set ref 249* 251 254 256 260 364 364 366 366 vrmu_cv_tuple_to_vector$simple_vector 000046 constant entry external dcl 670 ref 458 vrmu_search 000050 constant entry external dcl 671 ref 354 vrmu_search_init 000052 constant entry external dcl 672 ref 239 wa based area(1024) dcl 675 ref 382 405 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 ABSOLUTE_RELATION_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 ABSOLUTE_SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 ACTION_CAN_RESTART internal static bit(36) initial dcl 15-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 15-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 15-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 15-7 ALL_RANGE_TYPE internal static fixed bin(17,0) initial dcl 3-8 HIGH_RANGE_TYPE internal static fixed bin(17,0) initial dcl 3-8 MAX_SEARCH_ITEMS internal static fixed bin(17,0) initial dcl 12-18 NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 RELATIVE_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 RELATIVE_RELATION_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 RELATIVE_SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 1-22 SPECIFICATION_VERSION_4 internal static fixed bin(35,0) initial dcl 1-19 VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 11-27 VRM_REL_DESC_KEY internal static varying char(256) initial dcl 4-46 VRM_REL_DESC_RECORD_ID internal static bit(12) initial unaligned dcl 4-43 VRM_REL_DESC_VERSION_1 internal static char(8) initial unaligned dcl 4-44 alloc_num_search_keys automatic fixed bin(17,0) dcl 6-59 blk_info based structure level 1 unaligned dcl 13-21 fixed builtin function dcl 636 info automatic fixed bin(17,0) dcl 644 rel builtin function dcl 660 relation_numeric_specification based structure level 1 dcl 2-41 search_keys based varying char(256) array dcl 6-60 search_keys_ptr automatic pointer dcl 6-58 seq_info based structure level 1 unaligned dcl 13-11 specification_head_ptr automatic pointer dcl 1-18 tuple based structure level 1 dcl 10-7 tuple_length automatic fixed bin(21,0) dcl 10-16 tuple_pad_length internal static fixed bin(17,0) initial dcl 10-18 uns_info based structure level 1 unaligned dcl 13-1 vbl_info based structure level 1 unaligned dcl 13-55 vfs_version_1 internal static fixed bin(17,0) initial dcl 13-67 voi_no_of_index_collections automatic fixed bin(17,0) dcl 11-29 vrd_no_of_attrs automatic fixed bin(17,0) dcl 4-42 vrm_attr_info_ptr automatic pointer dcl 4-45 vrm_open_info_ptr automatic pointer dcl 11-28 vsl_max_number_of_constraints automatic fixed bin(17,0) dcl 6-5 vsl_number_of_and_groups automatic fixed bin(17,0) dcl 6-4 NAMES DECLARED BY EXPLICIT CONTEXT. add_to_output_list 001734 constant entry internal dcl 445 ref 355 common 000321 constant label dcl 164 ref 88 117 137 161 db_off 001723 constant entry external dcl 574 db_on 001710 constant entry external dcl 569 error 002045 constant entry internal dcl 478 ref 183 224 240 259 269 278 300 310 363 379 460 537 558 exit 001702 constant label dcl 438 ref 335 491 get_count 000277 constant entry external dcl 146 get_tuple_id 000243 constant entry external dcl 119 get_tuples_and_ids 000204 constant entry external dcl 95 get_tuples_by_spec 000145 constant entry external dcl 66 lock 002325 constant entry internal dcl 530 ref 345 tidy_up 002111 constant entry internal dcl 500 ref 213 438 unlock 002402 constant entry internal dcl 552 ref 372 vrm_get_by_spec 000130 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3020 3100 2456 3030 Length 3646 2456 60 531 341 10 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vrm_get_by_spec 1386 external procedure is an external procedure. on unit on line 213 64 on unit on unit on line 379 70 on unit add_to_output_list internal procedure shares stack frame of external procedure vrm_get_by_spec. error 64 internal procedure is called by several nonquick procedures. tidy_up 88 internal procedure is called by several nonquick procedures. lock internal procedure shares stack frame of external procedure vrm_get_by_spec. unlock internal procedure shares stack frame of external procedure vrm_get_by_spec. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 area_seg_ptr vrm_get_by_spec 000012 db_sw vrm_get_by_spec 000014 tid_temp_seg_ptr vrm_get_by_spec 000016 tuple_temp_seg_ptr vrm_get_by_spec STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME vrm_get_by_spec 000100 relation_search_specification_ptr vrm_get_by_spec 000102 relation_numeric_specification_ptr vrm_get_by_spec 000104 rss_number_of_and_groups vrm_get_by_spec 000105 rss_maximum_number_of_constraints vrm_get_by_spec 000106 vrm_rel_desc_ptr vrm_get_by_spec 000110 vrm_cursor_ptr vrm_get_by_spec 000112 vrm_search_list_ptr vrm_get_by_spec 000114 vrm_meter_ptr vrm_get_by_spec 000116 element_id_list_ptr vrm_get_by_spec 000120 eil_number_of_elements vrm_get_by_spec 000121 ELEMENT_ID_LIST_VERSION_1 vrm_get_by_spec 000122 typed_vector_list_ptr vrm_get_by_spec 000124 tvl_maximum_number_of_vectors vrm_get_by_spec 000126 tuple_ptr vrm_get_by_spec 000130 vrm_search_info_ptr vrm_get_by_spec 000132 vrm_com_ptr vrm_get_by_spec 000134 search_info vrm_get_by_spec 002165 vfsi vrm_get_by_spec 002206 ag vrm_get_by_spec 002207 all_range_spec vrm_get_by_spec 002216 area_ptr vrm_get_by_spec 002226 code vrm_get_by_spec 002227 cur_ag vrm_get_by_spec 002230 dummy vrm_get_by_spec 002231 element_id_list_supplied_sw vrm_get_by_spec 002232 entry_type vrm_get_by_spec 002233 err_code vrm_get_by_spec 002234 file_locked vrm_get_by_spec 002236 id_list_ptr vrm_get_by_spec 002240 iocb_ptr vrm_get_by_spec 002242 items_found vrm_get_by_spec 002243 lock_err_code vrm_get_by_spec 002244 metering_sw vrm_get_by_spec 002245 n vrm_get_by_spec 002246 pf_1 vrm_get_by_spec 002247 pf_2 vrm_get_by_spec 002250 t1 vrm_get_by_spec 002252 t2 vrm_get_by_spec 002254 t3 vrm_get_by_spec 002256 vector_ptr vrm_get_by_spec THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext enable ext_entry int_entry alloc_based empty clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cpu_time_and_paging_ get_temp_segment_ ioa_ iox_$control sub_err_ vrm_display_search_list$subroutine vrmu_cv_tuple_to_vector$simple_vector vrmu_search vrmu_search_init THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_tuple dm_error_$unsup_search_spec_head_type error_table_$noalloc error_table_$unimplemented_version mrds_error_$internal_error sys_info$max_seg_size vrm_data_$typed_vector_array_limit LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 50 000115 2 52 000120 8 28 000122 609 000124 7 000127 66 000136 80 000153 81 000155 82 000161 83 000164 84 000167 85 000172 86 000174 88 000175 95 000176 109 000212 110 000214 111 000220 112 000223 113 000226 114 000231 115 000234 117 000235 119 000236 130 000251 131 000253 132 000257 133 000262 134 000265 135 000270 137 000271 146 000272 156 000305 157 000311 158 000314 159 000315 160 000316 161 000320 164 000321 168 000325 169 000340 170 000343 171 000371 172 000373 173 000374 175 000375 177 000376 179 000404 180 000411 181 000413 182 000417 183 000437 185 000447 186 000453 189 000456 190 000460 192 000461 194 000473 196 000475 198 000504 201 000506 202 000513 204 000515 205 000516 207 000544 209 000547 210 000552 211 000553 213 000554 215 000576 218 000602 219 000603 220 000605 221 000610 224 000611 228 000627 229 000634 230 000636 233 000641 238 000646 239 000650 240 000663 243 000673 244 000700 249 000743 251 000746 252 000751 254 000752 256 000763 258 001001 259 001003 260 001015 263 001020 265 001025 266 001031 267 001032 268 001037 269 001057 272 001067 273 001072 274 001074 275 001077 277 001100 278 001102 280 001114 282 001117 285 001121 287 001126 288 001130 292 001143 296 001156 298 001162 299 001167 300 001207 304 001217 305 001222 306 001224 307 001225 310 001233 313 001245 318 001255 320 001264 322 001266 324 001270 325 001322 327 001324 330 001335 334 001340 335 001343 339 001344 344 001355 345 001361 348 001365 350 001366 352 001373 354 001374 355 001407 362 001412 363 001414 364 001425 366 001437 367 001443 370 001444 372 001445 374 001450 377 001452 379 001464 380 001510 382 001512 383 001523 384 001525 385 001526 386 001530 389 001533 393 001540 395 001546 399 001550 402 001555 404 001557 405 001561 406 001572 407 001574 408 001577 410 001606 412 001614 413 001616 414 001617 417 001621 421 001627 425 001630 427 001640 429 001647 431 001656 435 001660 438 001702 440 001706 569 001707 570 001716 571 001721 574 001722 575 001731 576 001733 445 001734 447 001735 450 001742 452 001751 454 001755 456 001765 457 001772 458 001775 460 002015 463 002025 464 002032 465 002034 467 002035 471 002041 473 002043 478 002044 483 002052 485 002063 487 002072 489 002101 491 002105 500 002110 503 002116 506 002154 508 002157 509 002172 510 002200 512 002202 513 002210 514 002213 515 002220 516 002223 519 002230 520 002232 521 002234 525 002324 530 002325 533 002326 536 002333 537 002367 540 002377 542 002401 552 002402 555 002403 557 002405 558 002441 561 002451 563 002452 ----------------------------------------------------------- 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