COMPILATION LISTING OF SEGMENT linus_table Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0917.3 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* *********************************************************** */ 10 11 12 linus_table: 13 proc; 14 15 /* 16* This module retrieves the data from the database and loads 17* it into the "table" for processing by the display request. 18* The module also keeps information about the current table 19* in the table_info structure. 20* 21* Known Bugs: 22* 23* Other Problems: 24* 25* History: 26* 27* Written - March 1983 - Dave Schimke 28* 29* 30* 83-08-30 Bert Moberg: Added call to linus_translate_query$auto if no current 31* select expression is available 32* 33* 83-09-09 Al Dupuis: Added translate_query entrypoint. Took the call to 34* linus_translate_query$auto from the info entrypoint and added it to the 35* new entrypoint. 36* 37* 83-09-19 Al Dupuis: Added get_row entrypoint. This is a simple entrypoint 38* for requests like write, who need to just have one row retrieved and then 39* dispose of it when they call back for another row. 40* 41* 83-09-27 Al Dupuis: Added info_for_store entrypoint. This entrypoint 42* allocates and fills in the table_info structure for the table named 43* by the caller. 44* 45* 83-09-27 Al Dupuis: Added store_row entrypoint. This entrypoint 46* stores a single row into the table named by the caller. 47* 48* 84-08-07 John Hergert: Fixed bug in load_table_info that was causing 49* the value table_info.columns.column_length to be loaded with 50* seemingly random values when evaluating mrds items. 51**/ 52 53 /****^ HISTORY COMMENTS: 54* 1) change(88-05-09,Dupuis), approve(88-07-13,MCR7905), audit(88-07-14,Blair), 55* install(88-07-26,MR12.2-1068): 56* Added an extra check to the code that determined if column names should be 57* qualified. It was forgetting to check for the case when there were 58* different row designators used on one table. 59* 2) change(90-04-30,Leskiw), approve(90-10-05,MCR8202), 60* audit(90-10-11,Bubric), install(90-10-14,MR12.4-1039): 61* Changed calls to assign_round_ from assign_ so that data is rounded. 62* END HISTORY COMMENTS */ 63 64 65 66 /* format: style3,ind3 */ 67 /* parameters */ 68 dcl caller_area_ptr_parm ptr parm; 69 dcl code_parm fixed bin (35) parm; /* These parameters are */ 70 dcl keep_from_row_parm fixed bin (35) parm; /* described at each */ 71 dcl lcb_ptr_parm ptr parm; /* entry where they are used */ 72 dcl permanent_table_parm 73 bit (1) aligned parm; 74 dcl row_count_specified_parm 75 fixed bin (35) parm; 76 dcl row_count_actual_parm 77 fixed bin (35) parm; 78 dcl row_value_ptr_parm ptr unaligned parm; 79 dcl sort_info_ptr_parm ptr parm; 80 dcl table_info_ptr_parm ptr parm; 81 dcl table_name_parm char (30) parm; 82 dcl temp_directory_parm char (168) var parm; 83 84 85 lcb_ptr = lcb_ptr_parm; 86 call ssu_$abort_line (lcb.subsystem_control_info_ptr, 0, 87 "This is not a valid entrypoint."); 88 89 90 async_retrieval: 91 entry (lcb_ptr_parm, /* input: linus control block */ 92 code_parm); /* output: status code */ 93 94 95 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 96 /* */ 97 /* This entry point is called by the linus requests that do */ 98 /* retrievals from the database: linus_assign_values.pl1, */ 99 /* linus_create_list.pl1, linus_eval_set_func.pl1, linus_modify.pl1, */ 100 /* linus_print.pl1, linus_report.pl1, and linus_write.pl1. */ 101 /* The entry point sets the retrieval indentifier so incremental */ 102 /* retrievals can determine that their "-another" selection is */ 103 /* no longer valid. */ 104 /* */ 105 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 106 107 code_parm = 0; 108 lcb_ptr = lcb_ptr_parm; 109 110 if lcb.table_control_info_ptr = null () then 111 return; 112 113 call initialize; 114 115 if table_ip = null () then 116 return; 117 118 table_info.retrieval_identifier, table_control_info.retrieval_id = 119 table_control_info.retrieval_id + 1; 120 121 return; /* end async_retrieval */ 122 123 124 db_on: 125 entry; 126 127 128 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 129 /* */ 130 /* This entrypoint turns on a switch which causes the value of */ 131 /* the current selection expression to be displayed at the terminal. */ 132 /* */ 133 /* Usage: */ 134 /* linus_table$db_on */ 135 /* */ 136 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 137 138 139 debug_switch = "1"b; 140 return; 141 142 143 db_off: 144 entry; 145 146 147 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 148 /* */ 149 /* This entrypoint turns off the switch which causes the value of */ 150 /* the current selection expression to be displayed at the terminal. */ 151 /* */ 152 /* Usage: */ 153 /* linus_table$db_off */ 154 /* */ 155 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 156 157 158 debug_switch = "0"b; 159 return; 160 161 162 delete_table: 163 entry (lcb_ptr_parm, /* input: linus control block */ 164 code_parm); /* output: status code */ 165 166 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 167 /* */ 168 /* This entry point deletes the current table. It is called from */ 169 /* linus_display to conserve space when the table is known to be */ 170 /* invalid and we will need to rebuild it. */ 171 /* */ 172 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 173 174 175 lcb_ptr = lcb_ptr_parm; 176 code_parm = 0; 177 178 call initialize; 179 call cleanup_table; 180 181 code_parm = icode; 182 return; /* end linus_table_$delete_table */ 183 184 185 get_row: entry ( 186 187 lcb_ptr_parm, /* input: ptr to linus control block */ 188 row_value_ptr_parm, /* output: packed ptr to the row */ 189 code_parm /* output: success or failure */ 190 ); 191 192 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 193 /* */ 194 /* This entry point gets a single row from the data base and loads it into the table. */ 195 /* The parm row_value_ptr_parm describes where the row has been placed, and can be used */ 196 /* with the row_value character string to do substr's to access the individual columns. */ 197 /* The table_info, table_control_info, and row_ptrs variables below are set to 1 so that */ 198 /* the newly retrieved row is always placed in the second slot in the table. */ 199 /* */ 200 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 201 202 203 lcb_ptr = lcb_ptr_parm; 204 row_value_ptr_parm = null; 205 code_parm = 0; 206 207 call initialize; 208 if select_info.set_fn 209 then do; 210 code_parm = mrds_error_$tuple_not_found; 211 return; 212 end; 213 call prepare_to_load_rows; 214 call retrieve_another; 215 if icode ^= 0 216 then do; 217 code_parm = icode; 218 return; 219 end; 220 table_control_info.current_seg_row_count = 1; 221 table_info.row_count = 1; 222 call load_one_row; 223 row_value_ptr_parm = row_value_p; 224 row_ptrs.number_of_ptrs_this_seg = 1; 225 226 return; 227 228 info: 229 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 230 table_info_ptr_parm, /* output: pointer to the table_info structure */ 231 code_parm); /* output: status code */ 232 233 234 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 235 /* */ 236 /* This entrypoint is called by the linus_options subroutine to */ 237 /* return information on the current state of the display table. */ 238 /* */ 239 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 240 241 242 table_info_ptr_parm = null (); 243 code_parm, icode = 0; 244 lcb_ptr = lcb_ptr_parm; 245 246 call initialize; 247 248 if lcb.si_ptr = null then 249 icode = linus_error_$no_lila_expr_processed; 250 else 251 do; 252 si_ptr = lcb.si_ptr; 253 call load_table_info; 254 table_info_ptr_parm = table_control_info.table_info_ptr; 255 end; 256 257 code_parm = icode; 258 return; /* end linus_table$info */ 259 260 info_for_store: entry ( 261 262 lcb_ptr_parm, /* input: ptr to linus control block */ 263 table_name_parm, /* input: name of relation */ 264 caller_area_ptr_parm, /* input: ptr to caller specified area */ 265 table_info_ptr_parm, /* output: points to table_info structure */ 266 code_parm /* output: success or failure */ 267 ); 268 269 270 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 271 /* */ 272 /* This entrypoint is called to provide a table_info structure for a named table. The */ 273 /* structure store_args is also allocated and filled in for future calls to dsl_$store. */ 274 /* The caller is responsible for freeing both of these structures when finished with */ 275 /* them. */ 276 /* */ 277 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 278 279 lcb_ptr = lcb_ptr_parm; 280 work_area_p = caller_area_ptr_parm; 281 282 call load_table_info_for_store (table_name_parm, table_info_ptr_parm, code_parm); 283 284 return; 285 286 new_table: 287 entry (lcb_ptr_parm, /* input: pointer to linus control block */ 288 temp_directory_parm, /* input: workspace for the table */ 289 permanent_table_parm, /* input: "1"b = permanent */ 290 code_parm /* output: status code */); 291 292 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 293 /* */ 294 /* This entrypoint is called by the display request to initialize */ 295 /* the display table. It takes care of: */ 296 /* 1) initializing the table info */ 297 /* 2) creating the table */ 298 /* 3) retrieving the first row from the database */ 299 /* 4) loading the first row into the table */ 300 /* */ 301 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 302 303 lcb_ptr = lcb_ptr_parm; 304 code_parm, icode = 0; 305 306 call initialize; 307 308 table_control_info.temp_directory = temp_directory_parm; 309 table_control_info.flags.permanent = permanent_table_parm; 310 311 if lcb.si_ptr = null then call linus_translate_query$auto (sci_ptr, lcb_ptr); /* try translating it */ 312 if lcb.si_ptr = null then 313 do; 314 icode = linus_error_$no_lila_expr_processed; 315 goto NEW_TABLE_EXIT; 316 end; 317 318 si_ptr = lcb.si_ptr; /* select_info */ 319 sci_ptr = lcb.subsystem_control_info_ptr; /* ssu_ */ 320 321 if ^select_info.se_flags.val_ret then 322 do; 323 icode = linus_error_$ret_not_valid; 324 goto NEW_TABLE_EXIT; 325 end; 326 327 if table_control_info.msf_seg_count ^= 0 then do; 328 call cleanup_table; 329 if icode ^= 0 then 330 goto NEW_TABLE_EXIT; 331 call initialize; 332 end; 333 334 call load_table_info; 335 if icode ^= 0 then 336 goto NEW_TABLE_EXIT; 337 338 table_control_info.incremental_retrieval_arg_ptr = null (); 339 table_info.row_count = 0; 340 table_control_info.flags.sorted = "0"b; 341 342 if select_info.prior_sf_ptr ^= null then 343 call linus_eval_set_func (lcb_ptr, select_info.prior_sf_ptr, icode); 344 /* evaluate prior set functions */ 345 if icode ^= 0 & icode ^= mrds_error_$tuple_not_found then 346 do; 347 icode = icode; 348 goto NEW_TABLE_EXIT; 349 end; 350 351 if select_info.set_fn /* set function to be applied */ then 352 call linus_eval_set_func (lcb_ptr, select_info.user_item.item_ptr (1), 353 icode); 354 else call retrieve_new; /* or retrieve */ 355 356 if icode = 0 then 357 do; 358 call create_table; 359 360 allocate char_output_string in (work_area) set (char_string_ptr); 361 table_control_info.char_output_string_ptr = char_string_ptr; 362 call prepare_to_load_rows; 363 call load_one_row; 364 end; 365 366 NEW_TABLE_EXIT: 367 code_parm = icode; 368 return; /* end linus_table$new_table */ 369 370 371 load_rows: 372 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 373 row_count_specified_parm, /* input: number of rows to load into the display table. */ 374 row_count_actual_parm, /* output: actual number of rows loaded into the display table. */ 375 keep_from_row_parm, /* input: (disposable table) discard only rows prior to this row number */ 376 code_parm); /* output: status code */ 377 378 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 379 /* */ 380 /* This entrypoint loads N rows into the display table making N */ 381 /* retrieves from the database. It is called by the linus_display */ 382 /* subroutine. */ 383 /* */ 384 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 385 386 387 lcb_ptr = lcb_ptr_parm; 388 code_parm, icode, row_count_actual_parm = 0; 389 row_count_specified = row_count_specified_parm; 390 keep_from_row = keep_from_row_parm; 391 392 call initialize; 393 394 if select_info.set_fn then 395 do; /* can only apply set function once */ 396 icode = mrds_error_$tuple_not_found; 397 goto LOAD_ROWS_EXIT; 398 end; 399 400 call prepare_to_load_rows; 401 402 do row_index = 1 to row_count_specified while (icode = 0); 403 call retrieve_another; 404 if icode = 0 then 405 do; 406 call load_one_row; 407 row_count_actual_parm = row_count_actual_parm + 1; 408 end; 409 end; 410 411 LOAD_ROWS_EXIT: 412 code_parm = icode; 413 return; /* end linus_table$load_rows */ 414 415 416 load_table: 417 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 418 code_parm); /* output: status code */ 419 420 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 421 /* */ 422 /* This entrypoint loads rows into the display table until no more */ 423 /* rows are available from the database. It is called by the linus_display */ 424 /* subroutine. */ 425 /* */ 426 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 427 428 429 lcb_ptr = lcb_ptr_parm; 430 code_parm, icode = 0; 431 432 call initialize; 433 434 if select_info.set_fn then 435 goto LOAD_TABLE_EXIT; /* can only apply set function once */ 436 437 call prepare_to_load_rows; 438 439 do while (icode = 0); 440 call retrieve_another; 441 if icode = 0 then 442 call load_one_row; 443 end; 444 445 LOAD_TABLE_EXIT: 446 if icode ^= mrds_error_$tuple_not_found then 447 code_parm = icode; 448 return; /* end linus_table$load_table */ 449 450 451 sort: 452 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 453 sort_info_ptr_parm, /* input: how to sort the table */ 454 code_parm); /* output: status code */ 455 456 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 457 /* */ 458 /* This entrypoint is called by the display request to sort the current */ 459 /* table. It sorts the table by: */ 460 /* 1) loading the ss_info structure to describe the sort. */ 461 /* 2) allocating and loading the sort_input structure to describe the current table. */ 462 /* 3) allocating the sort output structure for sort_seg_$linus_table. */ 463 /* 4) calling sort_seg_$linus_table. */ 464 /* 5) transforming the sort_output into the row_segs_info structure. */ 465 /* 6) freeing the sort_input and sort_output structures. */ 466 /* */ 467 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 468 469 lcb_ptr = lcb_ptr_parm; 470 sort_info_ptr = sort_info_ptr_parm; 471 ss_info_ptr, sort_desc_array_ptr, sort_input_ptr, sort_output_ptr = null; 472 code_parm = 0; 473 474 call initialize; 475 476 if table_control_info.component_ptrs_ptr = null () then 477 do; 478 icode = error_table_$no_table; 479 goto SORT_EXIT; 480 end; 481 482 ss_field_count = sort_info.number_of_columns_to_sort; 483 allocate ss_info in (info_area) set (ss_info_ptr); 484 allocate sort_desc_array in (info_area); 485 486 ss_info.header.version = SS_info_version_1; 487 ss_info.header.block_size = 1; 488 ss_info.header.duplicate_mode = SS_duplicates; 489 ss_info.header.mbz1 = 0; 490 ss_info.header.delim.type = SS_length; 491 ss_info.header.delim.number = table_info.row_value_length; 492 493 do item_index = 1 to ss_field_count; 494 ss_info.field.from.type (item_index) = SS_index; 495 ss_info.field.from.number (item_index) = 496 table_info.columns 497 .column_index (sort_info.columns.number (item_index)); 498 ss_info.field.to.type (item_index) = SS_length; 499 ss_info.field.to.number (item_index) = 500 table_info.columns 501 .column_length (sort_info.columns.number (item_index)); 502 503 ss_info.field.modes.descending (item_index) = 504 sort_info.columns.modes.descending (item_index); 505 ss_info.field.modes.non_case_sensitive (item_index) = 506 sort_info.columns.modes.non_case_sensitive (item_index); 507 desc_ptr = addr (table_info.columns.column_data_type (sort_info.columns.number (item_index))); 508 sort_desc_array (item_index) = desc_ptr; 509 ss_info.field.modes.numeric (item_index) 510 = mdbm_util_$number_data_class (desc_ptr); 511 end; 512 513 allocate sort_input in (info_area) set (sort_input_ptr); 514 sort_input.sorted = table_control_info.flags.sorted; 515 do item_index = 1 to row_segs_info.number_of_seg_ptrs; 516 sort_input.segment_ptr (item_index) = 517 row_segs_info.seg_ptr (item_index); 518 end; 519 do item_index = 1 to table_control_info.msf_seg_count; 520 sort_input.component_ptr (item_index) = 521 component_ptr (item_index); 522 end; 523 allocate sort_output in (info_area) set (sort_output_ptr); 524 do item_index = 1 to sort_output.number_of_segs; 525 call linus_temp_seg_mgr$get_segment (lcb_ptr, my_name, 526 table_control_info.temp_directory, temp_ptr, icode); 527 if icode ^= 0 then 528 call ssu_$abort_line (icode, "While getting a new row_ptr_seg."); 529 sort_output.seg_ptr (item_index) = temp_ptr; 530 end; 531 call sort_seg_$linus_table (lcb_ptr, my_name, ss_info_ptr, 532 linus_temp_seg_mgr$get_segment, linus_temp_seg_mgr$release_segment, 533 table_control_info.temp_directory, sort_input_ptr, 534 sort_desc_array, sort_output_ptr, icode); 535 if icode = 0 then 536 do; 537 table_control_info.flags.sorted = "1"b; /* mark this table sorted */ 538 539 do item_index = 1 to row_segs_info.number_of_seg_ptrs; 540 call linus_temp_seg_mgr$release_segment (lcb_ptr, my_name, 541 (row_segs_info.seg_ptr (item_index)), icode); 542 end; 543 row_segs_info.number_of_seg_ptrs = sort_output.number_of_segs; /* transform output into row_segs_info */ 544 do item_index = 1 to sort_output.number_of_segs; 545 row_segs_info.seg_ptr (item_index) = 546 sort_output.seg_ptr (item_index); 547 end; 548 end; 549 else do item_index = 1 to sort_output.number_of_segs; /* must clean up */ 550 call linus_temp_seg_mgr$release_segment (lcb_ptr, my_name, 551 (sort_output.seg_ptr (item_index)), icode); 552 end; 553 554 SORT_EXIT: 555 if ss_info_ptr ^= null then free ss_info; 556 if sort_desc_array_ptr ^= null then free sort_desc_array; 557 if sort_input_ptr ^= null then free sort_input; 558 if sort_output_ptr ^= null then free sort_output; 559 560 code_parm = icode; 561 return; /* end linus_table$sort */ 562 563 564 store_row: entry ( 565 566 lcb_ptr_parm, /* input: ptr to the linus control block */ 567 table_info_ptr_parm, /* input: ptr to the table_info structure */ 568 row_value_ptr_parm, /* input: ptr to the row value */ 569 code_parm /* output: success or failure */ 570 ); 571 572 lcb_ptr = lcb_ptr_parm; 573 574 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 575 /* */ 576 /* This entrypoint is called to store a row. The table_info structure used by this */ 577 /* entrypoint should have been generated earlier by the info_for_store entrypoint. */ 578 /* */ 579 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 580 581 582 call store_the_row (table_info_ptr_parm, row_value_ptr_parm, code_parm); 583 584 return; 585 586 terminate: 587 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 588 code_parm); /* output: status code */ 589 590 591 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 592 /* */ 593 /* This entry is called by the linus terminate procedure */ 594 /* when a "quit" request or the linus cleanup handler */ 595 /* is executed. It cleans up all table work areas. */ 596 /* */ 597 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 598 599 600 lcb_ptr = lcb_ptr_parm; 601 code_parm = 0; 602 603 if lcb.table_control_info_ptr = null then return; 604 605 table_control_ip = lcb.table_control_info_ptr; 606 table_ip = table_control_info.table_info_ptr; 607 component_ptrs_p = table_control_info.component_ptrs_ptr; 608 609 if table_ip ^= null then 610 row_segs_ip = table_info.row_segs_info_ptr; 611 else row_segs_ip = null; 612 613 614 call cleanup_table; 615 616 if table_control_info.info_area_ptr ^= null () then 617 do; 618 info_area_p = table_control_info.info_area_ptr; 619 call release_area_ (info_area_p); 620 call linus_temp_seg_mgr$release_segment (lcb_ptr, "linus_table$info", 621 table_control_info.info_area_ptr, icode); 622 end; 623 624 lcb.table_control_info_ptr = null (); 625 code_parm = icode; 626 return; /* end linus_table$terminate */ 627 628 629 translate_query: 630 entry (lcb_ptr_parm, /* input: pointer to linus control_block */ 631 table_info_ptr_parm, /* output: pointer to the table_info structure */ 632 code_parm); /* output: status code */ 633 634 635 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 636 /* */ 637 /* This entrypoint is called by the linus display request to */ 638 /* return information on the current state of the display */ 639 /* table and to translate the current query. */ 640 /* */ 641 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 642 643 644 table_info_ptr_parm = null (); 645 code_parm, icode = 0; 646 lcb_ptr = lcb_ptr_parm; 647 648 call initialize; 649 650 if lcb.si_ptr = null then call linus_translate_query$auto (sci_ptr, lcb_ptr); /* try translating it */ 651 if lcb.si_ptr = null then 652 icode = linus_error_$no_lila_expr_processed; 653 else 654 do; 655 si_ptr = lcb.si_ptr; 656 call load_table_info; 657 table_info_ptr_parm = table_control_info.table_info_ptr; 658 end; 659 660 code_parm = icode; 661 return; /* end linus_table$translate_query */ 662 663 664 /* internal procedures */ 665 666 append_row: 667 proc; 668 669 /* Do we need another msf component for another row of data? */ 670 /* If this component is full or this is the first call... */ 671 if (table_control_info.current_seg_row_count >= 672 table_control_info.max_number_of_rows_per_seg) | 673 (table_control_info.msf_seg_count = 0) 674 then call get_next_component; 675 676 /* Now do we have room for another pointer in the current ptr seg? */ 677 678 if table_info.row_segs_info_ptr = null then 679 call load_row_info; /* create row info */ 680 else row_segs_ip = table_info.row_segs_info_ptr; 681 682 if row_segs_info.number_of_seg_ptrs = 0 then 683 call get_ptr_seg (row_ptrs_p); 684 else row_ptrs_p = 685 row_segs_info.seg_ptr (row_segs_info.number_of_seg_ptrs); 686 687 if row_ptrs.number_of_ptrs_this_seg 688 = row_segs_info.max_number_of_ptrs_per_seg then 689 call get_ptr_seg (row_ptrs_p); /* need another seg for ptrs!! */ 690 691 row_value_p = 692 addr (component_value (table_control_info.current_seg_row_count + 1)); 693 row_ptrs.number_of_ptrs_this_seg = row_ptrs.number_of_ptrs_this_seg + 1; 694 row_ptrs.row_value_ptr (row_ptrs.number_of_ptrs_this_seg) = row_value_p; 695 696 end append_row; 697 698 699 calc_len: 700 proc (descriptor_parm, length_parm); 701 702 /* Calculate the length of a print field given a descriptor */ 703 704 dcl descriptor_parm bit (36) parm; 705 dcl fixed_bin_11_ovrly fixed bin (11) unal based; 706 dcl length_parm fixed bin (21) parm; 707 708 desc_ptr = addr (descriptor_parm); /* Point to descriptor */ 709 prec_len = fixed (descriptor.size.precision); 710 if mdbm_util_$binary_data_class (desc_ptr) then 711 length_parm = divide(prec_len, 3, 21) + 5; /* binary */ 712 else if mdbm_util_$number_data_class (desc_ptr) then 713 length_parm = prec_len + 3; /* decimal */ 714 else if mdbm_util_$string_data_class (desc_ptr) then 715 length_parm = 716 fixed (descriptor.size.scale || descriptor.size.precision); 717 else length_parm = 20; 718 if mdbm_util_$number_data_class (desc_ptr) then 719 do; 720 if mdbm_util_$fixed_data_class (desc_ptr) then 721 do; /* fixed */ 722 scale_len = 723 addr (descriptor.size.scale) -> fixed_bin_11_ovrly; 724 /* get signed scale */ 725 if (scale_len < 0) | (scale_len > 0 & prec_len < scale_len) 726 then length_parm = 727 length_parm + ceil (log10 (abs (scale_len))); 728 /* largest scale will be f-128 to f+127 */ 729 end; 730 else length_parm = length_parm + 5; /* float */ 731 end; 732 if mdbm_util_$complex_data_class (desc_ptr) then 733 length_parm = length_parm * 2; 734 end calc_len; 735 736 737 create_table: 738 proc; 739 740 table_control_info.table_msf = unique_chars_ ("0"b) || ".LINUS.table"; 741 742 if table_control_info.temp_directory = "" then 743 table_control_info.temp_directory = get_pdir_ (); 744 745 call msf_manager_$open (table_control_info.temp_directory, 746 table_control_info.table_msf, table_control_info.fcb_ptr, icode); 747 748 if icode = error_table_$noentry then 749 icode = 0; 750 if icode ^= 0 then 751 call ssu_$abort_line (sci_ptr, icode, "^/While opening ^a>^a", 752 table_control_info.temp_directory, table_control_info.table_msf); 753 754 table_control_info.current_seg_row_count = 0; 755 if table_control_info.component_ptrs_ptr = null then 756 do; /* need to create the structure */ 757 table_control_info.max_number_of_components = ROW_SEG_INCREASE; 758 allocate component_ptr in (work_area) set (component_ptrs_p); 759 table_control_info.component_ptrs_ptr = component_ptrs_p; 760 end; 761 end create_table; 762 763 764 cleanup_table: 765 proc; 766 767 icode = 0; 768 table_control_info.current_component_ptr = null; 769 table_control_info.current_seg_row_count = 0; 770 771 if table_control_info.fcb_ptr ^= null then 772 do; 773 call msf_manager_$close (table_control_info.fcb_ptr); 774 component_ptr (*) = null; 775 table_control_info.component_ptrs_ptr = null; 776 777 call delete_$path (table_control_info.temp_directory, table_control_info.table_msf, DELETE_SEG_SW, my_name, icode); 778 if icode ^= 0 then 779 call ssu_$print_message (icode, "While deleting table msf"); 780 781 table_control_info.msf_seg_count = 0; 782 end; 783 if row_segs_ip ^= null then 784 do; /* clean_up row segs info */ 785 if row_segs_info.number_of_seg_ptrs ^= 0 then 786 do item_index = 1 to row_segs_info.number_of_seg_ptrs; 787 if row_segs_info.seg_ptr (item_index) ^= null then 788 call linus_temp_seg_mgr$release_segment (lcb_ptr, my_name, 789 (row_segs_info.seg_ptr (item_index)), icode); 790 if icode ^= 0 then 791 call ssu_$print_message (icode, "While deleting table row seg ptr ^d.", item_index); 792 end; 793 table_control_info.row_info_ptr, table_info.row_segs_info_ptr, 794 row_segs_ip = null; 795 end; 796 797 if table_control_info.work_area_ptr ^= null () then 798 do; 799 work_area_p = table_control_info.work_area_ptr; 800 call release_area_ (work_area_p); 801 call linus_temp_seg_mgr$release_segment (lcb_ptr, my_name, 802 table_control_info.work_area_ptr, icode); 803 if icode ^= 0 then 804 call ssu_$print_message (icode, "While releasing table work area."); 805 end; 806 807 end cleanup_table; 808 809 810 get_next_component: 811 proc; 812 if table_control_info.msf_seg_count + 1 > 813 table_control_info.max_number_of_components then do; /* need to expand the structure */ 814 table_control_info.max_number_of_components = 815 ROW_SEG_INCREASE + table_control_info.msf_seg_count; 816 allocate new_component_ptr in (work_area) set (new_component_ptrs_p); 817 new_component_ptrs_p -> component_ptr = component_ptr; 818 table_control_info.component_ptrs_ptr, 819 component_ptrs_p = new_component_ptrs_p; 820 end; 821 822 call msf_manager_$get_ptr (table_control_info.fcb_ptr, 823 table_control_info.msf_seg_count, CREATE, 824 table_control_info.current_component_ptr, bit_count, icode); 825 /* actually getting the (seg_count - 1)th component (1st seg is 0) */ 826 827 if icode ^= 0 then 828 call ssu_$abort_line (sci_ptr, icode, 829 "^/While creating ^[a component of ^]^a>^a", (table_control_info.msf_seg_count > 0), 830 table_control_info.temp_directory, table_control_info.table_msf); 831 832 table_control_info.msf_seg_count = 833 table_control_info.msf_seg_count + 1; 834 component_ptr (table_control_info.msf_seg_count) = 835 table_control_info.current_component_ptr; 836 table_control_info.current_seg_row_count = 0; 837 838 end get_next_component; 839 840 841 get_ptr_seg: 842 proc (seg_ptr_parm); 843 dcl seg_ptr_parm ptr parm; 844 845 call linus_temp_seg_mgr$get_segment (lcb_ptr, my_name, 846 table_control_info.temp_directory, seg_ptr_parm, icode); 847 if icode ^= 0 then 848 call ssu_$abort_line (icode, "While getting a new row_ptr_seg."); 849 850 if row_segs_info.number_of_seg_ptrs = row_segs_info.max_number_of_seg_ptrs 851 then call load_row_info; /* need to grow structure */ 852 853 row_segs_info.number_of_seg_ptrs = row_segs_info.number_of_seg_ptrs + 1; 854 row_segs_info.seg_ptr (row_segs_info.number_of_seg_ptrs) = seg_ptr_parm; 855 seg_ptr_parm -> row_ptrs.number_of_ptrs_this_seg = 0; 856 end get_ptr_seg; 857 858 859 initialize: 860 proc; 861 862 863 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 864 /* */ 865 /* Make sure everything is ready. Set automatic pointers and */ 866 /* initialize common structures. */ 867 /* */ 868 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 869 870 871 sci_ptr = lcb.subsystem_control_info_ptr; 872 if lcb.table_control_info_ptr = null () then 873 do; /* init control structure */ 874 allocate table_control_info in (lcb.static_area) 875 set (table_control_ip); 876 877 lcb.table_control_info_ptr = table_control_ip; 878 end; 879 else table_control_ip = lcb.table_control_info_ptr; 880 881 work_area_p = table_control_info.work_area_ptr; 882 if work_area_p = null () then 883 do; 884 call linus_temp_seg_mgr$get_segment (lcb_ptr, my_name, 885 table_control_info.temp_directory, work_area_p, icode); 886 if icode ^= 0 then 887 call ssu_$abort_line (sci_ptr, icode, 888 "While getting table work area temp seg."); 889 call mdbm_util_$mu_define_area (work_area_p, (sys_info$max_seg_size), 890 "work_area", EXTENSIBLE, NO_FREEING, NO_ZERO_ON_ALLOC, 891 NO_ZERO_ON_FREE, icode); 892 if icode ^= 0 then 893 call ssu_$abort_line (sci_ptr, icode, 894 "While getting table work area."); 895 table_control_info.work_area_ptr = work_area_p; 896 end; 897 898 info_area_p = table_control_info.info_area_ptr; 899 if info_area_p = null () then 900 do; 901 call linus_temp_seg_mgr$get_segment (lcb_ptr, "linus_table$info", 902 table_control_info.temp_directory, info_area_p, icode); 903 if icode ^= 0 then 904 call ssu_$abort_line (sci_ptr, icode, 905 "While getting table info area temp seg."); 906 call mdbm_util_$mu_define_area (info_area_p, (sys_info$max_seg_size), 907 "table.info", EXTENSIBLE, FREEING, NO_ZERO_ON_ALLOC, 908 NO_ZERO_ON_FREE, icode); 909 if icode ^= 0 then 910 call ssu_$abort_line (sci_ptr, icode, 911 "While getting table info area."); 912 table_control_info.info_area_ptr = info_area_p; 913 end; 914 915 table_ip = table_control_info.table_info_ptr; 916 if table_ip ^= null then 917 row_segs_ip = table_info.row_segs_info_ptr; 918 else row_segs_ip = null; 919 component_ptrs_p = table_control_info.component_ptrs_ptr; 920 921 si_ptr = lcb.si_ptr; /* select_info ptr */ 922 end initialize; 923 924 925 load_one_row: 926 proc; 927 928 call append_row; /* adjust row_ptr */ 929 930 do item_index = 1 to table_info.column_count; 931 char_output_string = ""; 932 if ^select_info.set_fn & select_info.user_item.item_type (item_index) = MRDS then 933 do; 934 user_item_ptr = select_info.user_item.item_ptr (item_index); 935 /* init user item structure */ 936 937 call assign_round_ (char_string_ptr, target_type, 938 (table_info.columns.column_length (item_index)), 939 user_item.arg_ptr, user_item.assn_type, user_item.assn_len); 940 end; 941 942 else 943 do; /* Evaluate expression */ 944 if select_info.user_item.item_type (item_index) = EXPR then 945 do; 946 call linus_eval_expr (lcb_ptr, 947 select_info.user_item.item_ptr (item_index), si_ptr, 948 caller, item_index, icode); 949 if icode ^= 0 then 950 return; 951 end; 952 953 if mdbm_util_$number_data_class ( 954 addr (select_info.user_item.rslt_desc (item_index))) then 955 do; /* this is really an expr 956* -- not char or string scalar function */ 957 if mdbm_util_$complex_data_class ( 958 addr (select_info.user_item.rslt_desc (item_index))) 959 then call assign_round_ (expr_results_ptr, cmpx_float_dec_type, 960 float_dec_len, 961 select_info.user_item.rslt_assn_ptr (item_index), 962 select_info.user_item.rslt_assn_type (item_index), 963 select_info.user_item.rslt_assn_len (item_index)); 964 965 else call assign_round_ (expr_results_ptr, float_dec_type, 966 float_dec_len, 967 select_info.user_item.rslt_assn_ptr (item_index), 968 select_info.user_item.rslt_assn_type (item_index), 969 select_info.user_item.rslt_assn_len (item_index)); 970 971 call ioa_$rsnnl (IOARS_STRING, char_output_string, (0), 972 expr_results); /* convert to a character string */ 973 end; 974 else /* output result of non-arithmetic scalar function */ 975 call assign_round_ (char_string_ptr, target_type, 976 (table_info.columns.column_length (item_index)), 977 select_info.user_item.rslt_assn_ptr (item_index), 978 select_info.user_item.rslt_assn_type (item_index), 979 select_info.user_item.rslt_assn_len (item_index)); 980 981 end; 982 substr (row_value, table_info.columns (item_index).column_index, 983 table_info.columns (item_index).column_length) = char_output_string; 984 end; 985 table_info.row_count = table_info.row_count + 1; 986 table_control_info.current_seg_row_count = 987 table_control_info.current_seg_row_count + 1; 988 989 end load_one_row; 990 991 992 load_row_info: 993 proc; 994 if table_info.row_segs_info_ptr = null then 995 do; /* need to create the row info structure */ 996 rsi_init_max_number_of_seg_ptrs = ROW_SEG_INCREASE; 997 allocate row_segs_info in (work_area) set (row_segs_ip); 998 table_info.row_segs_info_ptr = row_segs_ip; 999 row_segs_info.max_number_of_ptrs_per_seg = 1000 sys_info$max_seg_size - 1; 1001 row_segs_info.number_of_seg_ptrs = 0; 1002 end; 1003 1004 else 1005 do; /* need to expand the row info structure */ 1006 rsi_init_max_number_of_seg_ptrs, 1007 row_segs_info.max_number_of_seg_ptrs = 1008 ROW_SEG_INCREASE + row_segs_info.number_of_seg_ptrs; 1009 allocate new_row_segs_info in (work_area) set (new_row_segs_ip); 1010 new_row_segs_ip -> row_segs_info = row_segs_info; 1011 row_segs_ip, table_info.row_segs_info_ptr = new_row_segs_ip; 1012 end; 1013 table_control_info.row_info_ptr = row_segs_ip; /* save for synchronization over table_info reinitialization */ 1014 end load_row_info; 1015 1016 1017 load_table_info: 1018 proc; 1019 1020 /* Is the old table information still valid? */ 1021 1022 if table_control_info.table_info_ptr ^= null () then 1023 if table_control_info.selection_expression_identifier 1024 = lcb.selection_expression_identifier then 1025 return; 1026 1027 /* No, we need to calculate and load table_info. */ 1028 /* Get a new table_info structure. */ 1029 1030 if table_control_info.table_info_ptr ^= null then 1031 free table_info; 1032 ti_init_column_count = select_info.n_user_items; 1033 allocate table_info in (info_area) set (table_ip); 1034 table_control_info.table_info_ptr = table_ip; /* save the ptr */ 1035 1036 /* initialization */ 1037 1038 expression_count = 0; 1039 linus_rel_array_ptr = lcb.rel_array_ptr; 1040 1041 /* init table_info */ 1042 1043 table_info.retrieval_identifier, table_control_info.retrieval_id = 1044 table_control_info.retrieval_id + 1; 1045 table_info.row_segs_info_ptr = table_control_info.row_info_ptr; 1046 1047 table_info.maximum_column_value_length = 1; 1048 table_info.maximum_column_name_length = 0; 1049 table_info.columns.column_name = ""; 1050 table_info.store_args_ptr = null; 1051 1052 /* Try to set unique names for each MRDS item */ 1053 /* If more than 1 table (relation) is selected, include the table name. */ 1054 1055 if linus_rel_array.num_of_rels > 1 | select_uses_different_row_designators () then 1056 do row_index = 1 to table_info.column_count; 1057 if (select_info.user_item.item_type (row_index) = MRDS) then 1058 table_info.columns.column_name (row_index) = 1059 rtrim (select_info.user_item.table_name (row_index)) 1060 || "." || select_info.user_item.name (row_index); 1061 end; 1062 1063 /* Fill in the rest of the column specific data. */ 1064 1065 do item_index = 1 to table_info.column_count; /* column data */ 1066 if ^select_info.set_fn & select_info.user_item.item_type (item_index) = MRDS then 1067 do; /* MRDS item */ 1068 1069 if (table_info.columns.column_name (item_index) = "") then 1070 table_info.columns.column_name (item_index) = 1071 select_info.user_item.name (item_index); 1072 1073 user_item_ptr = select_info.user_item.item_ptr (item_index); 1074 call calc_len ((user_item.desc), 1075 table_info.columns.column_length (item_index)); 1076 1077 table_info.columns.column_data_type (item_index) = 1078 user_item.desc; 1079 end; 1080 1081 else 1082 do; /* Expression or Function */ 1083 expression_count = expression_count + 1; 1084 table_info.columns.column_name (item_index) = 1085 "e" || ltrim (char (expression_count)); 1086 1087 if mdbm_util_$number_data_class ( 1088 addr (select_info.user_item.rslt_desc (item_index))) 1089 then do; 1090 table_info.columns.column_length (item_index) = 1091 DEFAULT_EXPR_SIZE; 1092 table_info.columns.column_data_type (item_index) = 1093 FIXED_DEC_14_3_DESC; 1094 end; 1095 else do; 1096 table_info.columns.column_length (item_index) = 1097 select_info.user_item.rslt_assn_len (item_index); 1098 table_info.columns.column_data_type (item_index) = 1099 select_info.user_item.rslt_desc (item_index); 1100 end; 1101 end; 1102 1103 table_info.maximum_column_value_length = 1104 max (table_info.maximum_column_value_length, 1105 table_info.columns.column_length (item_index)); 1106 table_info.maximum_column_name_length = 1107 max (table_info.maximum_column_name_length, 1108 length (table_info.columns.column_name (item_index))); 1109 if item_index ^= 1 then 1110 table_info.columns (item_index).column_index = 1111 table_info.columns (item_index - 1).column_length 1112 + table_info.columns (item_index - 1).column_index; 1113 else table_info.columns (1).column_index = 1; 1114 1115 end; /* column data */ 1116 1117 /* If duplicates from the same table exist, add numeric suffixes. */ 1118 1119 do row_index = 1 to table_info.column_count; 1120 do item_index = row_index + 1 to table_info.column_count; 1121 duplicate_count = 1; 1122 if (table_info.columns.column_name (row_index) 1123 = table_info.columns.column_name (item_index)) then 1124 do loop_index = 1 to table_info.column_count; 1125 if (select_info.user_item.name (row_index) 1126 = select_info.user_item.name (loop_index)) 1127 & (select_info.user_item.table_name (row_index) 1128 = select_info.user_item.table_name (loop_index)) then 1129 do; 1130 table_info.columns.column_name (loop_index) = 1131 rtrim (table_info.columns.column_name (loop_index)) 1132 || "." || ltrim (char (duplicate_count)); 1133 duplicate_count = duplicate_count + 1; 1134 end; 1135 end; 1136 end; 1137 end; 1138 table_info.row_value_length = sum (table_info.columns.column_length (*)); 1139 table_control_info.max_number_of_rows_per_seg = 1140 divide ((sys_info$max_seg_size * 4), table_info.row_value_length, 10); 1141 table_control_info.selection_expression_identifier = 1142 lcb.selection_expression_identifier; 1143 end load_table_info; 1144 1145 load_table_info_for_store: proc ( 1146 1147 ltifs_table_name_parm, /* input: name of table for info */ 1148 ltifs_table_info_ptr_parm, /* output: points to table_info structure */ 1149 ltifs_code_parm /* output: success or failure */ 1150 ); 1151 1152 dcl ltifs_code_parm fixed bin (35) parm; 1153 dcl ltifs_current_index fixed bin (21); 1154 dcl ltifs_found_the_relation bit (1) aligned; 1155 dcl ltifs_loop fixed bin; 1156 dcl ltifs_relation_index fixed bin (35); 1157 dcl ltifs_table_name char (30); 1158 dcl ltifs_table_name_parm char (30) parm; 1159 dcl ltifs_table_info_ptr_parm ptr parm; 1160 1161 ltifs_table_name = ltifs_table_name_parm; 1162 ltifs_table_info_ptr_parm = null; 1163 ltifs_code_parm = 0; 1164 1165 if lcb.db_index = 0 1166 then do; 1167 ltifs_code_parm = linus_error_$no_db; 1168 return; 1169 end; 1170 1171 if lcb.timing_mode 1172 then initial_vclock = vclock; 1173 1174 call dsl_$get_rslt_info (lcb.db_index, ltifs_table_name, 1175 work_area_p, rslt_ptr, ltifs_code_parm); 1176 if ltifs_code_parm ^= 0 1177 then do; 1178 ltifs_found_the_relation = "0"b; 1179 if lcb.ttn_ptr ^= null 1180 then do; 1181 ttn_ptr = lcb.ttn_ptr; 1182 do ltifs_loop = 1 to mrds_data_$max_temp_rels 1183 while (^ltifs_found_the_relation); 1184 if ltifs_table_name = temp_tab_names (ltifs_loop) 1185 then do; 1186 ltifs_found_the_relation = "1"b; 1187 ltifs_relation_index = ltifs_loop; 1188 end; 1189 end; 1190 end; 1191 if ltifs_found_the_relation 1192 then call dsl_$get_temp_info (lcb.db_index, ltifs_relation_index, 1193 work_area_p, rslt_ptr, ltifs_code_parm); 1194 else; 1195 end; 1196 1197 if lcb.timing_mode 1198 then lcb.mrds_time = lcb.mrds_time + vclock - initial_vclock; 1199 if ltifs_code_parm ^= 0 1200 then return; 1201 1202 ti_init_column_count = rslt_info.num_attr; 1203 allocate table_info in (work_area) set (table_ip); 1204 table_info.retrieval_identifier = 0; 1205 table_info.row_count = 0; 1206 table_info.row_segs_info_ptr = null; 1207 table_info.store_args_ptr = null; 1208 1209 table_info.maximum_column_name_length = 0; 1210 table_info.maximum_column_value_length = 0; 1211 table_info.row_value_length = 0; 1212 ltifs_current_index = 1; 1213 1214 do ltifs_loop = 1 to ti_init_column_count; 1215 table_info.columns.column_name (ltifs_loop) 1216 = rtrim (rslt_info.attr (ltifs_loop).attr_name); 1217 table_info.maximum_column_name_length 1218 = max (length (table_info.columns.column_name (ltifs_loop)), 1219 table_info.maximum_column_name_length); 1220 table_info.columns.column_data_type (ltifs_loop) 1221 = rslt_info.attr (ltifs_loop).descriptor; 1222 call calc_len ((table_info.columns.column_data_type (ltifs_loop)), 1223 table_info.columns.column_length (ltifs_loop)); 1224 table_info.maximum_column_value_length 1225 = max (table_info.columns.column_length (ltifs_loop), 1226 table_info.maximum_column_value_length); 1227 table_info.row_value_length = table_info.row_value_length 1228 + table_info.columns.column_length (ltifs_loop); 1229 table_info.columns.column_index (ltifs_loop) = ltifs_current_index; 1230 ltifs_current_index = ltifs_current_index 1231 + table_info.columns.column_length (ltifs_loop); 1232 end; 1233 free rslt_info; 1234 1235 /* Add extra args and descriptors for db index, relation name, and error code. */ 1236 1237 arg_list_arg_count = table_info.column_count + 3; 1238 init_number_of_descriptors = arg_list_arg_count; 1239 1240 allocate store_args in (work_area) set (store_ap); 1241 store_args.table_name = ltifs_table_name; 1242 store_args.header.pad1 = "0"b; 1243 store_args.header.call_type = Interseg_call_type; 1244 store_args.header.desc_count = store_args.header.arg_count; 1245 store_args.header.pad2 = "0"b; 1246 1247 /* Init descriptors and set db index, table name, and code. */ 1248 1249 unspec (store_args.argument_list_descriptors) = "0"b; 1250 store_args.argument_list_descriptors (*).flag = "1"b; 1251 store_args.argument_list_descriptors (1).type = real_fix_bin_1_dtype; 1252 store_args.argument_list_descriptors (1).size = 35; 1253 store_args.argument_list_descriptors (2).type = char_dtype; 1254 store_args.argument_list_descriptors (2).size = length (store_args.table_name); 1255 store_args.argument_list_descriptors (arg_list_arg_count).type = real_fix_bin_1_dtype; 1256 store_args.argument_list_descriptors (arg_list_arg_count).size = 35; 1257 1258 /* Fill in arg and desc ptrs for db index, table name, and code. */ 1259 1260 store_args.arg_ptrs (1) = addr (lcb.db_index); 1261 store_args.desc_ptrs (1) = addr (store_args.argument_list_descriptors (1)); 1262 store_args.arg_ptrs (2) = addr (store_args.table_name); 1263 store_args.desc_ptrs (2) = addr (store_args.argument_list_descriptors (2)); 1264 store_args.arg_ptrs (arg_list_arg_count) = addr (store_args.error_code); 1265 store_args.desc_ptrs (arg_list_arg_count) = addr (store_args.argument_list_descriptors (arg_list_arg_count)); 1266 1267 /* Fill in desc ptrs for column values after setting them. 1268* arg ptrs are filled in when store takes place. */ 1269 1270 do ltifs_loop = 3 to table_info.column_count + 2; 1271 store_args.arg_ptrs (ltifs_loop) = null; 1272 store_args.argument_list_descriptors (ltifs_loop).type = char_dtype; 1273 store_args.argument_list_descriptors (ltifs_loop).size 1274 = table_info.columns.column_length (ltifs_loop - 2); 1275 store_args.desc_ptrs (ltifs_loop) 1276 = addr (store_args.argument_list_descriptors (ltifs_loop)); 1277 end; 1278 1279 table_info.store_args_ptr = store_ap; 1280 ltifs_table_info_ptr_parm = table_ip; 1281 1282 return; 1283 1284 end load_table_info_for_store; 1285 1286 prepare_to_load_rows: 1287 proc; 1288 caller = 1; /* for linus_eval_expr */ 1289 cmpx_float_dec_type = 24; 1290 arg_descriptor_ptr = addr (FLOAT_DEC_59_DESC); 1291 float_dec_len = arg_descriptor.size; 1292 float_dec_type = 2 * arg_descriptor.type; 1293 expr_results_ptr = addr (expr_results); 1294 1295 if ^select_info.set_fn then 1296 do; /* extra setup for "-another" */ 1297 retrieval_arg_list_ptr = table_control_info.incremental_retrieval_arg_ptr; 1298 retrieve_code_ptr = retrieval_arg_list.arg_ptrs (retrieval_arg_list.arg_count); 1299 end; 1300 char_string_ptr = table_control_info.char_output_string_ptr; 1301 1302 end prepare_to_load_rows; 1303 1304 1305 retrieve_another: 1306 proc; 1307 if lcb.timing_mode then 1308 initial_mrds_vclock = vclock; 1309 1310 call cu_$generate_call (dsl_$retrieve, retrieval_arg_list_ptr); /* Retrieve "-another" */ 1311 icode = retrieve_code; 1312 1313 if lcb.timing_mode then 1314 lcb.mrds_time = lcb.mrds_time + vclock - initial_mrds_vclock; 1315 end retrieve_another; 1316 1317 1318 retrieve_new: 1319 proc; 1320 1321 /* This procedure does the first retrieval from the currently 1322* open database and sets up for subsequent retrievals using 1323* the "-another" selection expression. */ 1324 1325 1326 1327 /* assure that the arg_list is new */ 1328 1329 n_chars_init = 1; 1330 allocate char_desc in (work_area); 1331 arg_list_arg_count = select_info.n_mrds_items + 3 + select_info.nsevals; 1332 /* Offset for descriptors */ 1333 allocate retrieval_arg_list in (work_area) set (retrieval_arg_list_ptr); /* System standard argument list */ 1334 retrieval_arg_list.header.pad1 = "0"b; 1335 retrieval_arg_list.header.call_type = Interseg_call_type; 1336 retrieval_arg_list.header.desc_count = retrieval_arg_list.arg_count; 1337 retrieval_arg_list.header.pad2 = "0"b; 1338 allocate retrieve_code in (work_area) set (retrieve_code_ptr); 1339 /* Code returned by generated call to dsl_$retrieve */ 1340 retrieval_arg_list.arg_ptrs (arg_list_arg_count) = retrieve_code_ptr; 1341 retrieval_arg_list.desc_ptrs (arg_list_arg_count) = addr (char_desc.fb_desc); 1342 1343 /* DB index */ 1344 retrieval_arg_list.arg_ptrs (1) = addr (lcb.db_index); 1345 retrieval_arg_list.desc_ptrs (1) = addr (char_desc.fb_desc); 1346 1347 /* selection expression */ 1348 char_desc.arr.var (1) = addr (select_info.se_len) -> arg_len_bits.len; 1349 retrieval_arg_list.arg_ptrs (2) = select_info.se_ptr; 1350 retrieval_arg_list.desc_ptrs (2) = addr (char_desc.arr (1)); 1351 1352 /* Fill in rest of standard arg_list */ 1353 1354 /* First the selection expression values for substitution. */ 1355 if select_info.nsevals ^= 0 then 1356 do item_index = 1 to select_info.nsevals; 1357 retrieval_arg_list.arg_ptrs (item_index + 2) = 1358 select_info.se_vals.arg_ptr (item_index); 1359 retrieval_arg_list.desc_ptrs (item_index + 2) = 1360 select_info.se_vals.desc_ptr (item_index); 1361 end; 1362 1363 /* Then the retrieved attribute values. */ 1364 item_index = 1; 1365 do loop_index = 3 + select_info.nsevals 1366 to 2 + select_info.n_mrds_items + select_info.nsevals; 1367 /* Use pointers and descriptors from select_info structure */ 1368 retrieval_arg_list.arg_ptrs (loop_index) = 1369 select_info.mrds_item.arg_ptr (item_index); 1370 retrieval_arg_list.desc_ptrs (loop_index) = 1371 addr (select_info.mrds_item.desc (item_index)); 1372 if mdbm_util_$varying_data_class ( 1373 addr (select_info.mrds_item.desc (item_index))) then 1374 do; 1375 temp_ptr = select_info.mrds_item.arg_ptr (item_index); 1376 retrieval_arg_list.arg_ptrs (loop_index) = addrel (temp_ptr, 1); 1377 end; 1378 item_index = item_index + 1; 1379 end; 1380 1381 if debug_switch then 1382 do; 1383 call ioa_ ("Selection expression:"); 1384 call mdb_display_data_value$ptr (select_info.se_ptr, 1385 addr (char_desc.arr (1))); 1386 end; /* if debug_switch */ 1387 1388 if lcb.timing_mode then 1389 initial_vclock = vclock; 1390 1391 call cu_$generate_call (dsl_$retrieve, retrieval_arg_list_ptr); /* Call retrieve */ 1392 icode = retrieve_code; 1393 1394 if lcb.timing_mode then 1395 lcb.mrds_time = lcb.mrds_time + vclock - initial_vclock; 1396 1397 /* Insure that we are now set up for -another processing */ 1398 1399 retrieval_arg_list.arg_ptrs (2) = addr (ANOTHER); 1400 char_desc.arr (1).var = ANOTHER_LEN; 1401 1402 table_control_info.incremental_retrieval_arg_ptr = retrieval_arg_list_ptr; 1403 table_control_info.incremental_retrieval_char_ptr = char_ptr; 1404 return; 1405 end retrieve_new; 1406 1407 select_uses_different_row_designators: proc () returns (bit (1) aligned); 1408 1409 dcl sudrd_loop fixed bin; 1410 1411 do sudrd_loop = 2 to select_info.n_user_items; 1412 if select_info.user_item.table_name (1) ^= select_info.user_item.table_name (sudrd_loop) 1413 then return ("1"b); 1414 end; 1415 1416 return ("0"b); 1417 1418 end select_uses_different_row_designators; 1419 1420 store_the_row: proc ( 1421 1422 str_table_info_ptr_parm, /* input: ptr to the table_info structure */ 1423 str_row_value_ptr_parm, /* input: ptr to the row value */ 1424 str_code_parm /* output: success or failure */ 1425 ); 1426 1427 dcl str_code_parm fixed bin (35) parm; 1428 dcl str_descriptor_ptr ptr; 1429 dcl str_current_column_number fixed bin; 1430 dcl str_loop fixed bin; 1431 dcl str_row_value char (table_info.row_value_length) based (str_row_value_ptr); 1432 dcl str_row_value_as_an_array (table_info.row_value_length) char (1) based (str_row_value_ptr); 1433 dcl str_row_value_ptr ptr; 1434 dcl str_row_value_ptr_parm ptr unaligned parm; 1435 dcl str_table_info_ptr_parm ptr parm; 1436 1437 table_ip = str_table_info_ptr_parm; 1438 str_row_value_ptr = str_row_value_ptr_parm; 1439 str_code_parm = 0; 1440 store_ap = table_info.store_args_ptr; 1441 1442 do str_loop = 3 to table_info.column_count + 2; 1443 str_current_column_number = str_loop - 2; 1444 store_args.arg_ptrs (str_loop) = addr (str_row_value_as_an_array 1445 (table_info.columns (str_current_column_number).column_index)); 1446 str_descriptor_ptr = addr (table_info.columns.column_data_type (str_current_column_number)); 1447 if str_descriptor_ptr -> arg_descriptor.type = bit_dtype 1448 then substr (str_row_value, 1449 table_info.columns.column_index (str_current_column_number), 1450 table_info.columns.column_length (str_current_column_number)) 1451 = translate (substr (str_row_value, 1452 table_info.columns.column_index (str_current_column_number), 1453 table_info.columns.column_length (str_current_column_number)), CHARACTER_ZERO, BLANK); 1454 else if str_descriptor_ptr -> arg_descriptor.type = varying_bit_dtype 1455 | str_descriptor_ptr -> arg_descriptor.type = varying_char_dtype 1456 then store_args.argument_list_descriptors (str_loop).size 1457 = length (rtrim (substr (str_row_value, 1458 table_info.columns.column_index (str_current_column_number), 1459 table_info.columns.column_length (str_current_column_number)))); 1460 else; 1461 end; 1462 1463 call cu_$generate_call (dsl_$store, addr (store_args.header)); 1464 str_code_parm = store_args.error_code; 1465 1466 return; 1467 1468 end store_the_row; 1469 1470 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1471 1472 2 1 /* BEGIN INCLUDE FILE ... arg_descriptor.incl.pl1 2 2* 2 3* James R. Davis 1 Mar 79 */ 2 4 /* Modified June 83 JMAthane for extended arg descriptor format */ 2 5 2 6 dcl 1 arg_descriptor based (arg_descriptor_ptr) aligned, 2 7 2 flag bit (1) unal, 2 8 2 type fixed bin (6) unsigned unal, 2 9 2 packed bit (1) unal, 2 10 2 number_dims fixed bin (4) unsigned unal, 2 11 2 size fixed bin (24) unsigned unal; 2 12 2 13 dcl 1 fixed_arg_descriptor based (arg_descriptor_ptr) aligned, 2 14 2 flag bit (1) unal, 2 15 2 type fixed bin (6) unsigned unal, 2 16 2 packed bit (1) unal, 2 17 2 number_dims fixed bin (4) unsigned unal, 2 18 2 scale fixed bin (11) unal, 2 19 2 precision fixed bin (12) unsigned unal; 2 20 2 21 dcl 1 extended_arg_descriptor based (arg_descriptor_ptr) aligned, 2 22 2 flag bit (1) unal, /* = "1"b */ 2 23 2 type fixed bin (6) unsigned unal, /* = 58 */ 2 24 2 packed bit (1) unal, /* significant if number_dims ^= 0 */ 2 25 2 number_dims fixed (4) unsigned unal,/* number of variable dimensions */ 2 26 2 size bit (24) unal, 2 27 2 dims (0 refer (extended_arg_descriptor.number_dims)), /* part referenced by called generated code */ 2 28 3 low fixed bin (35), 2 29 3 high fixed bin (35), 2 30 3 multiplier fixed bin (35), /* in bits if packed, in words if not */ 2 31 2 real_type fixed bin (18) unsigned unal, 2 32 2 type_offset fixed bin (18) unsigned unal; /* offset rel to symbol tree to symbol node for type, if any */ 2 33 2 34 dcl arg_descriptor_ptr ptr; 2 35 2 36 dcl extended_arg_type fixed bin init (58); 2 37 2 38 /* END INCLUDE file .... arg_descriptor.incl.pl1 */ 1473 1474 3 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 3 2* 3 3* James R. Davis 10 May 79 */ 3 4 3 5 3 6 3 7 /****^ HISTORY COMMENTS: 3 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 3 9* audit(86-07-15,Schroth): 3 10* added command_name_arglist declaration to allow the storage of the 3 11* command name given to the command processor 3 12* END HISTORY COMMENTS */ 3 13 3 14 dcl 1 arg_list aligned based, 3 15 2 header, 3 16 3 arg_count fixed bin (17) unsigned unal, 3 17 3 pad1 bit (1) unal, 3 18 3 call_type fixed bin (18) unsigned unal, 3 19 3 desc_count fixed bin (17) unsigned unal, 3 20 3 pad2 bit (19) unal, 3 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 3 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 3 23 3 24 3 25 dcl 1 command_name_arglist aligned based, 3 26 2 header, 3 27 3 arg_count fixed bin (17) unsigned unal, 3 28 3 pad1 bit (1) unal, 3 29 3 call_type fixed bin (18) unsigned unal, 3 30 3 desc_count fixed bin (17) unsigned unal, 3 31 3 mbz bit(1) unal, 3 32 3 has_command_name bit(1) unal, 3 33 3 pad2 bit (17) unal, 3 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 3 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 3 36 2 name, 3 37 3 command_name_ptr pointer, 3 38 3 command_name_length fixed bin (21); 3 39 3 40 3 41 3 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 3 43 2 header, 3 44 3 arg_count fixed bin (17) unsigned unal, 3 45 3 pad1 bit (1) unal, 3 46 3 call_type fixed bin (18) unsigned unal, 3 47 3 desc_count fixed bin (17) unsigned unal, 3 48 3 pad2 bit (19) unal, 3 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 3 50 2 envptr ptr, 3 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 3 52 3 53 3 54 dcl ( 3 55 Quick_call_type init (0), 3 56 Interseg_call_type init (4), 3 57 Envptr_supplied_call_type 3 58 init (8) 3 59 ) fixed bin (18) unsigned unal int static options (constant); 3 60 3 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 3 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 3 63* an argument list of the proper size in the user's stack 3 64* 3 65**/ 3 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 1475 1476 4 1 /* BEGIN INCLUDE FILE linus_arg_list.incl.pl1 -- jccj 4/15/77 */ 4 2 4 3 dcl 1 char_desc aligned based (char_ptr), /* Structure for character descriptors */ 4 4 2 fb_desc bit (36) aligned init ("100000100000000000000000000000100011"b), /* Fixed bin descriptor */ 4 5 2 n_chars fixed bin, 4 6 2 arr (n_chars_init refer (char_desc.n_chars)), 4 7 3 const bit (12) unal init ("101010100000"b), /* Constant part */ 4 8 3 var bit (24) unal; /* Variable part */ 4 9 4 10 dcl char_ptr ptr; 4 11 dcl n_chars_init fixed bin; 4 12 4 13 /* END INCLUDE FILE linus_arg_list.incl.pl1 */ 1477 1478 5 1 /* BEGIN INCLUDE FILE linus_char_argl.incl.pl1 -- jaw 2/11/77 */ 5 2 5 3 /* HISTORY: 5 4* 5 5* 82-02-05 Paul W. Benjamin: Changed arg_len to fixed bin (21). 5 6* 5 7**/ 5 8 5 9 dcl 1 char_argl aligned based (ca_ptr), /* structure for general char. arg. list */ 5 10 2 nargs fixed bin, /* number of args */ 5 11 2 arg (nargs_init refer (char_argl.nargs)), 5 12 3 arg_ptr ptr, /* ptr to first char. of arg */ 5 13 3 arg_len fixed bin (21); /* no. of chars. in arg */ 5 14 5 15 dcl ca_ptr ptr; 5 16 dcl nargs_init fixed bin; 5 17 5 18 /* END INCLUDE FILE linus_char_argl.incl.pl1 */ 1479 1480 6 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 6 7* install(86-07-29,MR12.0-1106): 6 8* Added general_work_area_ptr and renamed sfr_ptr to 6 9* force_retrieve_scope_ptr. 6 10* END HISTORY COMMENTS */ 6 11 6 12 6 13 /* HISTORY: 6 14* 6 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 6 16* 6 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 6 18* a part of the attribute level control work. 6 19* 6 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 6 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 6 22* scope information. 6 23* 6 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 6 25* retaining various vcpu times to be collected when in timing mode. The 6 26* times to be collected are: LINUS parsing time, LINUS processing time, and 6 27* MRDS processing time. 6 28* 6 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 6 30* part of the line numbering implementation. This allows for possible later 6 31* LINUS control of the build defaults. 6 32* 6 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 6 34* information is now retained by ssu_. Removed parse_timer as no longer 6 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 6 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 6 37* 6 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 6 39* subsystem_invocation_level, and selection_expression_identifier. 6 40* 6 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 6 42* table_control_info_ptr. 6 43* 6 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 6 45* 6 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 6 47* 6 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 6 49* 6 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 6 51**/ 6 52 6 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 6 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 6 55 2 rb_len fixed bin (21), /* length of request buffer */ 6 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 6 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 6 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 6 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 6 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 6 61 2 test_flag bit (1) unal, /* on if in test mode */ 6 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 6 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 6 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 6 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 6 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 6 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 6 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 6 69 2 reserved bit (27) unal, 6 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 6 71 2 rb_ptr ptr, /* ptr to request buffer */ 6 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 6 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 6 74 2 ttn_ptr ptr, /* pointer to table info structure */ 6 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 6 76 2 lv_ptr ptr, /* pointer linus variables */ 6 77 2 si_ptr ptr, /* pointer to select_info structure */ 6 78 2 setfi_ptr ptr, /* pointer to set function information */ 6 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 6 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 6 81 2 lit_ptr ptr, /* pointer to literal pool */ 6 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 6 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 6 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 6 85* (MR7.0) */ 6 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 6 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 6 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 6 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 6 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 6 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 6 92* for current lila expression */ 6 93 2 unused_timer float bin (63), /* future expansion */ 6 94 2 request_time float bin (63), /* How much request time was spent 6 95* in LINUS. (-1 = user has just enabled 6 96* timing, do not report) */ 6 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 6 98 2 build_increment fixed bin, /* default increment for build mode */ 6 99 2 build_start fixed bin, /* default start count for build mode */ 6 100 2 linus_version char (4), /* current version of LINUS */ 6 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 6 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 6 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 6 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 6 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 6 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 6 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 6 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 6 109 2 word_pad (6) bit (36) unal, 6 110 /* procedures that will be optionally */ 6 111 /* replaced by the user. Saved so they */ 6 112 /* can be reinstated if desired. */ 6 113 2 ssu_abort_line entry options (variable), 6 114 2 ssu_post_request_line variable entry (ptr), 6 115 2 ssu_pre_request_line variable entry (ptr), 6 116 6 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 6 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 6 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 6 120 6 121 dcl lcb_ptr ptr; 6 122 6 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 1481 1482 7 1 /* BEGIN INCLUDE FILE -- linus_rel_array.incl.pl1 -- reb 09/09/80 7 2* 7 3* 80-09-09 Rickie E. Brinegar: Initially written. 7 4* 7 5* 81-01-29 Rickie E. Brinegar: changed to comform to standards for include 7 6* files. 7 7* 7 8**/ 7 9 7 10 dcl 1 linus_rel_array based (linus_rel_array_ptr), 7 11 2 num_of_rels fixed bin, 7 12 2 rels (num_of_rels_init refer (linus_rel_array.num_of_rels)), 7 13 3 rel_name char (32), 7 14 3 rslt_info_ptr ptr; 7 15 7 16 dcl linus_rel_array_ptr ptr; 7 17 7 18 dcl num_of_rels_init fixed bin init (0); 7 19 7 20 /* END INCLUDE FILE linus_rel_array.incl.pl1 */ 7 21 1483 1484 8 1 /* BEGIN INCLUDE FILE linus_select_info.incl.pl1 */ 8 2 /* History: 77-07-29 J. A. Weeldreyer: Originally written. 8 3* Modified: 82-18-82 Dave Schimke: Added user_item.table_name 8 4**/ 8 5 dcl 1 select_info aligned based (si_ptr), /* info from LILA select clause */ 8 6 2 set_fn bit (1) unal, /* on if set fn to be applied */ 8 7 2 se_flags unal, /* flags pertaining to selection expr. */ 8 8 3 val_ret bit (1) unal, /* valid for retrieval */ 8 9 3 val_dtt bit (1) unal, /* valid for define_temp_table */ 8 10 3 val_del bit (1) unal, /* valid for delete */ 8 11 3 val_mod bit (1) unal, /* valid for modify */ 8 12 2 dup_flag bit (1) unal, /* on if dup explic. spec. somewhere */ 8 13 2 unique_flag bit (1) unal, /* on if unique explic. spec. somewhere */ 8 14 2 pad bit (29) unal, /* reserved */ 8 15 2 prior_sf_ptr ptr, /* pointer to set fns for prior eval. */ 8 16 2 se_ptr ptr, /* pointer to mrds selection expression */ 8 17 2 sel_items_ptr ptr, /* pointer to list of selected items */ 8 18 2 sel_items_len fixed bin, /* length in characters of list of selected items */ 8 19 2 se_len fixed bin (35), /* length of mrds sel. expr. */ 8 20 2 nsv_alloc fixed bin, /* no. of se. vals aloc. */ 8 21 2 nmi_alloc fixed bin, /* no. of mrds items alloc. */ 8 22 2 nui_alloc fixed bin, /* no. of user items alloc. */ 8 23 2 nsevals fixed bin, /* number of selection expr. vaules */ 8 24 2 n_mrds_items fixed bin, /* no. of items in mrds select list */ 8 25 2 n_user_items fixed bin, /* no. of items user will see */ 8 26 2 se_vals (nsv_init refer (select_info.nsv_alloc)), 8 27 3 arg_ptr ptr, 8 28 3 desc_ptr ptr, 8 29 2 mrds_item (nmi_init refer (select_info.nmi_alloc)), /* mrds select items */ 8 30 3 arg_ptr ptr, /* pointer to receiving field */ 8 31 3 bit_len fixed bin (35), /* bit length of receiving field */ 8 32 3 desc bit (36), /* descriptor for receiving field */ 8 33 3 assn_type fixed bin, /* type code for assign_ */ 8 34 3 assn_len fixed bin (35), /* length for assign_ */ 8 35 2 user_item (nui_init refer (select_info.nui_alloc)), /* user select item */ 8 36 3 name char (32) var, /* name for col. header */ 8 37 3 table_name char (32) var, /* name of containing linus table */ 8 38 3 item_type fixed bin, /* indicates type of item: 8 39* 1 => raw mrds, 8 40* 2 => expr. */ 8 41 3 rslt_desc bit (36), /* descriptor for expr. result */ 8 42 3 rslt_bit_len fixed bin (35), /* bit length of expr. result */ 8 43 3 rslt_assn_ptr ptr, /* pointer to expr. result storage loc. */ 8 44 3 rslt_assn_type fixed bin, /* assign_ type code of expr. result */ 8 45 3 rslt_assn_len fixed bin (35), /* assign_ length for expr. result */ 8 46 3 item_ptr ptr; /* pointer to item or expr. or applied set_func. structure */ 8 47 8 48 dcl (nsv_init, nmi_init, nui_init) fixed bin; 8 49 dcl si_ptr ptr; 8 50 8 51 /* END INCLUDE FILE linus_select_info.incl.pl1 */ 1485 1486 9 1 /* BEGIN INCLUDE FILE ... linus_sort_info.incl.pl1 9 2* 9 3* Info structure used to provide sorting through linus. 9 4* Written: Dave Schimke 2/25/83 9 5**/ 9 6 9 7 dcl 1 sort_info based (sort_info_ptr), 9 8 2 number_of_columns_to_sort fixed bin (17), 9 9 2 columns (no_of_candidate_columns refer(sort_info.number_of_columns_to_sort)), 9 10 3 number fixed bin (17), 9 11 3 modes, 9 12 4 descending bit (1) unal, 9 13 4 non_case_sensitive bit (1) unal, 9 14 4 mbz1 bit(34) unal; 9 15 9 16 dcl sort_info_ptr ptr; 9 17 dcl no_of_candidate_columns fixed bin; 9 18 9 19 9 20 /* END INCLUDE FILE linus_sort_info.incl.pl1 */ 1487 1488 10 1 /* BEGIN INCLUDE FILE linus_table_control.incl.pl1 */ 10 2 10 3 /* HISTORY: written 9/8/82 Dave Schimke */ 10 4 10 5 dcl 1 table_control_info based (table_control_ip), 10 6 2 selection_expression_identifier fixed bin, /* current processed lila */ 10 7 /* expression */ 10 8 2 row_info_ptr ptr init(null), /* saved row_segs_ip */ 10 9 2 component_ptrs_ptr ptr init(null), /* ptr to array of */ 10 10 /* component ptrs */ 10 11 2 max_number_of_components fixed bin, /* limit of msf_seg_count */ 10 12 2 msf_seg_count fixed bin init (0), /* number of components in*/ 10 13 /* the msf */ 10 14 2 max_number_of_rows_per_seg fixed bin(21), /* number of rows that */ 10 15 /* will fit in each */ 10 16 /* component of the msf */ 10 17 2 retrieval_id fixed bin init(0), /* id of this retrieval */ 10 18 /* (for sync) */ 10 19 2 table_info_ptr ptr init (null), /* table state info */ 10 20 2 fcb_ptr ptr init (null), /* ptr to file control */ 10 21 /* block of table_msf */ 10 22 2 table_msf char (27) init (""), /* name of table msf */ 10 23 2 temp_directory char (168) init (""), /* temp_dir for table */ 10 24 2 info_area_ptr ptr init (null), /* area for table_info */ 10 25 2 work_area_ptr ptr init (null), /* work area for all */ 10 26 /* other needs */ 10 27 2 incremental_retrieval_arg_ptr 10 28 ptr init (null), /* ptr to arg list used */ 10 29 /* for "-another" calls */ 10 30 2 incremental_retrieval_char_ptr 10 31 ptr init (null), /* ptr to char descriptors*/ 10 32 /* for arg list */ 10 33 2 char_output_string_ptr ptr init (null), /* ptr to character string*/ 10 34 2 current_component_ptr ptr init (null), /* ptr to the component */ 10 35 /* currently being loaded*/ 10 36 2 current_seg_row_count fixed bin(35) init (0), 10 37 /* number of rows in */ 10 38 /* current seg */ 10 39 2 flags, 10 40 3 permanent aligned bit(1), /* "1"b if non-disposable */ 10 41 3 sorted bit(1), /* has table been sorted? */ 10 42 3 mbz1 bit(34) unal; 10 43 10 44 dcl table_control_ip ptr; 10 45 10 46 /* END INCLUDE FILE linus_table_control.incl.pl1 */ 10 47 1489 1490 11 1 /* BEGIN INCLUDE FILE linus_table_info.incl.pl1 -- Dave Schimke 1/5/83 */ 11 2 /* 11 3*09/28/83 Al Dupuis: Added the store_args_ptr variable and the store_args structure. 11 4**/ 11 5 dcl 1 table_info aligned based (table_ip), /* info on displayable table */ 11 6 2 retrieval_identifier fixed bin , /* current retrieval id */ 11 7 2 row_count fixed bin(35), /* number of rows in table */ 11 8 2 column_count fixed bin, /* number of columns in table */ 11 9 2 maximum_column_name_length fixed bin, 11 10 /* largest column name */ 11 11 2 maximum_column_value_length fixed bin, 11 12 /* largest column length */ 11 13 2 row_value_length fixed bin (21), /* length of entire row */ 11 14 /* (sum of column lengths) */ 11 15 2 row_segs_info_ptr ptr init (null), /* ptr to the row segs info */ 11 16 2 store_args_ptr ptr, /* ptr to the arg list for storing rows */ 11 17 2 columns (ti_init_column_count refer (table_info.column_count)), 11 18 /* column info */ 11 19 3 column_name char (69) var, /* column header name */ 11 20 3 column_data_type bit (36), /* original data descriptor */ 11 21 3 column_length fixed bin (21), /* length of column in chars */ 11 22 3 column_index fixed bin (21); /* index of start of column in */ 11 23 /* row value */ 11 24 11 25 dcl 1 row_segs_info aligned based (row_segs_ip), 11 26 2 max_number_of_seg_ptrs fixed bin, 11 27 2 max_number_of_ptrs_per_seg fixed bin(21), 11 28 2 number_of_seg_ptrs fixed bin, 11 29 2 seg_ptr (rsi_init_max_number_of_seg_ptrs refer (row_segs_info. 11 30 max_number_of_seg_ptrs)) ptr unal; 11 31 11 32 dcl 1 row_ptrs aligned based (row_ptrs_p), 11 33 2 number_of_ptrs_this_seg fixed bin(21), 11 34 2 row_value_ptr (row_ptrs.number_of_ptrs_this_seg) ptr unal; 11 35 11 36 dcl row_value char (table_info.row_value_length) based (row_value_p); 11 37 dcl row_value_p ptr unal; /* ptr to the current row value */ 11 38 11 39 dcl row_segs_ip ptr; /* ptr to the seg of ptrs to */ 11 40 /* the arrays of row_value_ptrs */ 11 41 dcl row_ptrs_p ptr; /* ptr to an array of */ 11 42 /* row_value_ptrs */ 11 43 11 44 dcl 1 store_args aligned based (store_ap), 11 45 2 table_name char (30), 11 46 2 error_code fixed bin (35), 11 47 2 number_of_descriptors fixed bin, 11 48 2 header like arg_list.header, 11 49 2 arg_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 11 50 2 desc_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 11 51 2 argument_list_descriptors (init_number_of_descriptors refer 11 52 (store_args.number_of_descriptors)) like arg_descriptor; 11 53 11 54 dcl init_number_of_descriptors; 11 55 dcl rsi_init_max_number_of_seg_ptrs fixed bin; 11 56 dcl store_ap ptr; 11 57 dcl table_ip ptr; 11 58 dcl ti_init_column_count fixed bin; 11 59 11 60 /* END INCLUDE FILE linus_table_info.incl.pl1 */ 1491 1492 12 1 /* BEGIN INCLUDE FILE linus_temp_tab_names.incl.pl1 -- jaw 6/16/77 */ 12 2 12 3 dcl temp_tab_names (mrds_data_$max_temp_rels) char (32) based (ttn_ptr); /* names of temp rels in slot corr. to rel. index */ 12 4 12 5 dcl ttn_ptr ptr; 12 6 12 7 /* END INCLUDE FILE linus_temp_tab_names.incl.pl1 */ 1493 1494 13 1 /* BEGIN mdbm_descriptor.incl.pl1 -- jaw 5/31/78 */ 13 2 /* modified by Jim Gray - - Nov. 1979, to change type from fixed bin(5) to 13 3* unsigned fixed bin(6), so new packed decimal data types could be handled. 13 4* also the duplicate mrds_descriptor.incl.pl1 was eliminated. */ 13 5 13 6 dcl 1 descriptor based (desc_ptr), /* map of Multics descriptor */ 13 7 2 version bit (1) unal, /* DBM handles vers. 1 only */ 13 8 2 type unsigned fixed bin (6) unal, /* data type */ 13 9 2 packed bit (1) unal, /* on if data item is packed */ 13 10 2 number_dims bit (4) unal, /* dimensions */ 13 11 2 size, /* size for string data */ 13 12 3 scale bit (12) unal, /* scale for num. data */ 13 13 3 precision bit (12) unal, /* prec. for num. data */ 13 14 2 array_info (num_dims), 13 15 3 lower_bound fixed bin (35), /* lower bound of dimension */ 13 16 3 upper_bound fixed bin (35), /* upper bound of dimension */ 13 17 3 multiplier fixed bin (35); /* element separation */ 13 18 13 19 dcl desc_ptr ptr; 13 20 dcl num_dims fixed bin init (0) ; /* more useful form of number_dims */ 13 21 13 22 /* END mdbm_descriptor.incl.pl1 */ 13 23 13 24 1495 1496 14 1 /* BEGIN INCLUDE FILE mrds_rslt_info.incl.pl1 rgl 07/22/77 */ 14 2 14 3 /* Modified by R. Lackey 09/20/76 to handle inverted attributes */ 14 4 14 5 /* Modified by D. Woodka 06/28/82 to fix size condition */ 14 6 14 7 dcl 1 rslt_info aligned based (rslt_ptr), /* resultant information description */ 14 8 2 num_attr fixed bin, /* number of attributes in view */ 14 9 2 num_key_attr fixed bin, /* number of key attributes in data relation */ 14 10 2 key_length fixed bin (35), /* length in bits of key portion of tuple */ 14 11 2 retrieve bit (1) unal, /* retrieve permitted = "1"b */ 14 12 2 modify bit (1) unal, /* modify permitted = "1"b */ 14 13 2 store bit (1) unal, /* store permitted = "1"b */ 14 14 2 delete bit (1) unal, /* delete permitted = "1"b */ 14 15 2 total_key bit (1) unal, /* on if view includes the total key */ 14 16 2 inversion bit (1) unal, /* On if this view contains any inverted attributes */ 14 17 2 reserved bit (30) unal, /* reserved for future use */ 14 18 2 attr (rslt_alloc refer (rslt_info.num_attr)), /* per attribute info */ 14 19 3 attr_name char (32), /* name of attribute */ 14 20 3 domain_name char (32), /* name of underlying domain */ 14 21 3 attr_length fixed bin (18), /* length of attribute data in bits */ 14 22 3 attr_index fixed bin (24), /* index to bit_offset in dbcbrw */ 14 23 3 descriptor bit (36) aligned, /* attribute description */ 14 24 3 key_flag bit (1) unal, /* key attribute = "1"b */ 14 25 3 inver_flag bit (1) unal, /* On if this attribute is inverted */ 14 26 3 unused bit (34) unal, /* reserved for future use */ 14 27 3 key_attr_order fixed bin, /* order no. of this key attr. */ 14 28 3 inver_iocb_index fixed bin; /* Index to inversion iocb in dbcbw */ 14 29 14 30 14 31 14 32 dcl rslt_ptr ptr; 14 33 14 34 dcl rslt_alloc fixed bin; 14 35 14 36 /* END INCLUDE FILE mrds_rslt_info.incl.pl1 */ 14 37 1497 1498 15 1 /* START OF: sort_seg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 15 2 15 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 4 /* */ 15 5 /* This include file declares the information structure for the sort_seg_ subroutine. */ 15 6 /* This structure defines the sort string delimiter, and sort field delimiters for fields */ 15 7 /* to be sorted upon within each sort unit (sort string or block of sort strings). */ 15 8 /* */ 15 9 /* Status */ 15 10 /* 0) Created: May 1, 1982 by G. C. Dixon */ 15 11 /* 1) Modified: July 22, 1982 by DJ Schimke adding numeric and integer sort modes. */ 15 12 /* */ 15 13 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 14 15 15 dcl 1 ss_info aligned based(ss_info_ptr), 15 16 2 header, 15 17 3 version char(8), /* version of this structure. Set with */ 15 18 /* SS_info_version_1 string constant. */ 15 19 3 block_size fixed bin, /* number of sort strings to be blocked together */ 15 20 /* in each sort unit. */ 15 21 3 field_count fixed bin, /* number of sort fields within eacch sort unit. */ 15 22 3 duplicate_mode fixed bin, /* method of handling duplicate sort units. Set */ 15 23 /* with one of the constants below. */ 15 24 3 mbz1 (3) fixed bin, /* reserved for future use. Set to 0. */ 15 25 3 delim, /* sort string delimiter definition. */ 15 26 4 type fixed bin, /* type of delimiter. Set with one of field */ 15 27 /* constants below. */ 15 28 4 number fixed bin, /* numeric type delimiter value. */ 15 29 4 string char(256) varying, /* string type delimiter value. */ 15 30 2 field (ss_field_count refer (ss_info.field_count)), 15 31 /* sort field definitions */ 15 32 3 from like ss_info.delim, /* start of sort field. */ 15 33 3 to like ss_info.delim, /* end of sort field. */ 15 34 3 modes, /* per-field sort modes. */ 15 35 (4 descending bit(1), /* sort field in descending order */ 15 36 4 non_case_sensitive bit(1), /* translate field to lowercase for sorting. */ 15 37 4 numeric bit(1), /* sort field according to numeric value. */ 15 38 4 integer bit(1), /* sort field according to integer value. */ 15 39 4 mbz2 bit(32)) unal, /* reserved for future use. Set to ""b. */ 15 40 ss_field_count fixed bin, 15 41 ss_info_ptr ptr, 15 42 15 43 SS_info_version_1 char(8) int static options(constant) init("ss_info1"), 15 44 /* string constant which must be used to set */ 15 45 /* structure version. */ 15 46 /* constants for setting duplicate_mode, type(s) */ 15 47 (SS_unset init(0), 15 48 SS_duplicates init(1), /* duplicate modes */ 15 49 SS_unique init(2), 15 50 SS_only_duplicates init(3), 15 51 SS_only_duplicate_keys init(4), 15 52 SS_unique_keys init(5), 15 53 SS_only_unique init(6), 15 54 SS_only_unique_keys init(7), 15 55 SS_length init(1), /* field types */ 15 56 SS_index init(2), 15 57 SS_string init(3), 15 58 SS_reg_exp init(4)) fixed bin int static options(constant); 15 59 15 60 /* END OF: sort_seg_info.incl.pl1 * * * * * * * * * * * * * * * * */ 1499 1500 16 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 16 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 16 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 16 8* Objects of this type are PASCAL string types. 16 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 16 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 16 11* Added the new C types. 16 12* END HISTORY COMMENTS */ 16 13 16 14 /* This include file defines mnemonic names for the Multics 16 15* standard descriptor types, using both pl1 and cobol terminology. 16 16* PG 780613 16 17* JRD 790530 16 18* JRD 791016 16 19* MBW 810731 16 20* TGO 830614 Add hex types. 16 21* Modified June 83 JMAthane to add PASCAL data types 16 22* TGO 840120 Add float dec extended and generic, float binary generic 16 23**/ 16 24 16 25 dcl (real_fix_bin_1_dtype init (1), 16 26 real_fix_bin_2_dtype init (2), 16 27 real_flt_bin_1_dtype init (3), 16 28 real_flt_bin_2_dtype init (4), 16 29 cplx_fix_bin_1_dtype init (5), 16 30 cplx_fix_bin_2_dtype init (6), 16 31 cplx_flt_bin_1_dtype init (7), 16 32 cplx_flt_bin_2_dtype init (8), 16 33 real_fix_dec_9bit_ls_dtype init (9), 16 34 real_flt_dec_9bit_dtype init (10), 16 35 cplx_fix_dec_9bit_ls_dtype init (11), 16 36 cplx_flt_dec_9bit_dtype init (12), 16 37 pointer_dtype init (13), 16 38 offset_dtype init (14), 16 39 label_dtype init (15), 16 40 entry_dtype init (16), 16 41 structure_dtype init (17), 16 42 area_dtype init (18), 16 43 bit_dtype init (19), 16 44 varying_bit_dtype init (20), 16 45 char_dtype init (21), 16 46 varying_char_dtype init (22), 16 47 file_dtype init (23), 16 48 real_fix_dec_9bit_ls_overp_dtype init (29), 16 49 real_fix_dec_9bit_ts_overp_dtype init (30), 16 50 real_fix_bin_1_uns_dtype init (33), 16 51 real_fix_bin_2_uns_dtype init (34), 16 52 real_fix_dec_9bit_uns_dtype init (35), 16 53 real_fix_dec_9bit_ts_dtype init (36), 16 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 16 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 16 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 16 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 16 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 16 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 16 60 real_flt_dec_4bit_bytealigned_dtype init (44), 16 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 16 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 16 63 real_flt_hex_1_dtype init (47), 16 64 real_flt_hex_2_dtype init (48), 16 65 cplx_flt_hex_1_dtype init (49), 16 66 cplx_flt_hex_2_dtype init (50), 16 67 c_typeref_dtype init (54), 16 68 c_enum_dtype init (55), 16 69 c_enum_const_dtype init (56), 16 70 c_union_dtype init (57), 16 71 algol68_straight_dtype init (59), 16 72 algol68_format_dtype init (60), 16 73 algol68_array_descriptor_dtype init (61), 16 74 algol68_union_dtype init (62), 16 75 16 76 cobol_comp_6_dtype init (1), 16 77 cobol_comp_7_dtype init (1), 16 78 cobol_display_ls_dtype init (9), 16 79 cobol_structure_dtype init (17), 16 80 cobol_char_string_dtype init (21), 16 81 cobol_display_ls_overp_dtype init (29), 16 82 cobol_display_ts_overp_dtype init (30), 16 83 cobol_display_uns_dtype init (35), 16 84 cobol_display_ts_dtype init (36), 16 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 16 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 16 87 cobol_comp_5_uns_dtype init (40), 16 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 16 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 16 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 16 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 16 92 cplx_flt_dec_generic_dtype init (84), 16 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 16 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 16 95 16 96 dcl (ft_integer_dtype init (1), 16 97 ft_real_dtype init (3), 16 98 ft_double_dtype init (4), 16 99 ft_complex_dtype init (7), 16 100 ft_complex_double_dtype init (8), 16 101 ft_external_dtype init (16), 16 102 ft_logical_dtype init (19), 16 103 ft_char_dtype init (21), 16 104 ft_hex_real_dtype init (47), 16 105 ft_hex_double_dtype init (48), 16 106 ft_hex_complex_dtype init (49), 16 107 ft_hex_complex_double_dtype init (50) 16 108 ) fixed bin internal static options (constant); 16 109 16 110 dcl (algol68_short_int_dtype init (1), 16 111 algol68_int_dtype init (1), 16 112 algol68_long_int_dtype init (2), 16 113 algol68_real_dtype init (3), 16 114 algol68_long_real_dtype init (4), 16 115 algol68_compl_dtype init (7), 16 116 algol68_long_compl_dtype init (8), 16 117 algol68_bits_dtype init (19), 16 118 algol68_bool_dtype init (19), 16 119 algol68_char_dtype init (21), 16 120 algol68_byte_dtype init (21), 16 121 algol68_struct_struct_char_dtype init (22), 16 122 algol68_struct_struct_bool_dtype init (20) 16 123 ) fixed bin internal static options (constant); 16 124 16 125 dcl (label_constant_runtime_dtype init (24), 16 126 int_entry_runtime_dtype init (25), 16 127 ext_entry_runtime_dtype init (26), 16 128 ext_procedure_runtime_dtype init (27), 16 129 picture_runtime_dtype init (63) 16 130 ) fixed bin internal static options (constant); 16 131 16 132 dcl (pascal_integer_dtype init (1), 16 133 pascal_real_dtype init (4), 16 134 pascal_label_dtype init (24), 16 135 pascal_internal_procedure_dtype init (25), 16 136 pascal_exportable_procedure_dtype init (26), 16 137 pascal_imported_procedure_dtype init (27), 16 138 pascal_typed_pointer_type_dtype init (64), 16 139 pascal_char_dtype init (65), 16 140 pascal_boolean_dtype init (66), 16 141 pascal_record_file_type_dtype init (67), 16 142 pascal_record_type_dtype init (68), 16 143 pascal_set_dtype init (69), 16 144 pascal_enumerated_type_dtype init (70), 16 145 pascal_enumerated_type_element_dtype init (71), 16 146 pascal_enumerated_type_instance_dtype init (72), 16 147 pascal_user_defined_type_dtype init (73), 16 148 pascal_user_defined_type_instance_dtype init (74), 16 149 pascal_text_file_dtype init (75), 16 150 pascal_procedure_type_dtype init (76), 16 151 pascal_variable_formal_parameter_dtype init (77), 16 152 pascal_value_formal_parameter_dtype init (78), 16 153 pascal_entry_formal_parameter_dtype init (79), 16 154 pascal_parameter_procedure_dtype init (80), 16 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 16 156 16 157 16 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 1501 1502 1503 1504 /* Based */ 1505 1506 dcl 1 arg_len_bits based, 1507 2 pad bit (12) unal, 1508 2 len bit (24); /* Length of argument to be passed in arg_list */ 1509 dcl char_output_string char (table_info.maximum_column_value_length) 1510 based (char_string_ptr) varying; 1511 dcl component_ptr (table_control_info.max_number_of_components) ptr based (component_ptrs_p); 1512 dcl new_component_ptr (table_control_info.max_number_of_components) ptr based (new_component_ptrs_p); 1513 dcl component_value (table_control_info.max_number_of_rows_per_seg) 1514 char (table_info.row_value_length) 1515 based (table_control_info.current_component_ptr); 1516 dcl sort_desc_array (sort_info.number_of_columns_to_sort) ptr based (sort_desc_array_ptr); 1517 dcl info_area area (sys_info$max_seg_size) based (info_area_p); 1518 dcl 1 new_row_segs_info like row_segs_info based (new_row_segs_ip); 1519 dcl retrieve_code fixed bin (35) based (retrieve_code_ptr); 1520 1521 dcl 1 retrieval_arg_list aligned based (retrieval_arg_list_ptr), 1522 2 header like arg_list.header, 1523 2 arg_ptrs (arg_list_arg_count refer (retrieval_arg_list.header.arg_count)) ptr, 1524 2 desc_ptrs (arg_list_arg_count refer (retrieval_arg_list.header.arg_count)) ptr; 1525 dcl retrieval_arg_list_ptr ptr; 1526 1527 dcl 1 sort_input aligned based (sort_input_ptr), 1528 2 number_of_ptr_segments 1529 fixed bin, 1530 2 number_of_components 1531 fixed bin, 1532 2 sorted bit (1), 1533 2 segment_ptr (row_segs_info 1534 .number_of_seg_ptrs 1535 refer (sort_input.number_of_ptr_segments)) 1536 ptr unal init (null), 1537 2 component_ptr (table_control_info 1538 .msf_seg_count 1539 refer (sort_input.number_of_components)) ptr 1540 unal init (null); 1541 1542 dcl 1 sort_output based (sort_output_ptr), 1543 2 number_of_segs fixed bin, 1544 2 seg_ptr (row_segs_info 1545 .number_of_seg_ptrs 1546 refer (sort_output.number_of_segs)) ptr unal 1547 init (null); 1548 1549 dcl 1 user_item aligned based (user_item_ptr), /* valid when mrds item = user item */ 1550 2 arg_ptr ptr, 1551 2 bit_len fixed bin (35), 1552 2 desc bit (36), 1553 2 assn_type fixed bin, 1554 2 assn_len fixed bin (35); 1555 dcl work_area area (sys_info$max_seg_size) based (work_area_p); 1556 1557 /* Automatic */ 1558 1559 dcl arg_list_arg_count fixed bin (17) unsigned unaligned; 1560 dcl bit_count fixed bin (24); 1561 dcl caller fixed bin; 1562 dcl char_string_ptr ptr; 1563 dcl component_ptrs_p ptr init (null); 1564 dcl cmpx_float_dec_type fixed bin; 1565 dcl duplicate_count fixed bin; 1566 dcl expr_results float dec (59); 1567 dcl expr_results_ptr ptr; 1568 dcl expression_count fixed bin; 1569 dcl float_dec_len fixed bin (35); 1570 dcl float_dec_type fixed bin; 1571 dcl icode fixed bin (35); 1572 dcl info_area_p ptr init (null); 1573 dcl initial_mrds_vclock float bin (63); 1574 dcl initial_vclock float bin (63); 1575 dcl item_index fixed bin; 1576 dcl keep_from_row fixed bin (35); 1577 dcl loop_index fixed bin; 1578 dcl my_name char (11) init ("linus_table"); 1579 dcl new_component_ptrs_p 1580 ptr init (null); 1581 dcl new_row_segs_ip ptr init (null); 1582 dcl prec_len fixed bin; 1583 dcl retrieve_code_ptr ptr; 1584 dcl row_count_specified fixed bin; 1585 dcl row_index fixed bin; 1586 dcl scale_len fixed bin (11); 1587 dcl sci_ptr ptr; /* for ssu_ */ 1588 dcl sort_desc_array_ptr ptr; 1589 dcl sort_input_ptr ptr; 1590 dcl sort_output_ptr ptr; 1591 dcl target_type fixed bin init (44); /* char * 2 */ 1592 dcl temp_ptr ptr init (null); 1593 dcl user_item_ptr ptr init (null); 1594 dcl work_area_p ptr init (null); 1595 1596 /* Builtins */ 1597 1598 dcl abs builtin; 1599 dcl addr builtin; 1600 dcl addrel builtin; 1601 dcl ceil builtin; 1602 dcl char builtin; 1603 dcl divide builtin; 1604 dcl fixed builtin; 1605 dcl length builtin; 1606 dcl log10 builtin; 1607 dcl ltrim builtin; 1608 dcl max builtin; 1609 dcl null builtin; 1610 dcl rel builtin; 1611 dcl rtrim builtin; 1612 dcl substr builtin; 1613 dcl sum builtin; 1614 dcl translate builtin; 1615 dcl unspec builtin; 1616 dcl vclock builtin; 1617 1618 /* Conditions */ 1619 1620 /* Static */ 1621 1622 dcl debug_switch bit (1) int static init ("0"b); 1623 /* Constants */ 1624 1625 dcl ANOTHER char (8) int static options (constant) 1626 init ("-another"); 1627 dcl ANOTHER_LEN bit (24) init ("000000000000000000001000"b) 1628 int static options (constant); 1629 dcl BLANK char (1) internal static options (constant) init (" "); 1630 dcl CHARACTER_ZERO char (1) internal static options (constant) init ("0"); 1631 dcl CREATE bit (1) int static options (constant) init ("1"b); 1632 dcl DEFAULT_EXPR_SIZE fixed bin (5) int static options (constant) 1633 init (17); 1634 dcl DELETE_SEG_SW bit (6) int static options (constant) 1635 init ("100100"b); 1636 dcl EXPR fixed bin (2) int static options (constant) 1637 init (2); 1638 dcl EXTENSIBLE bit (1) aligned int static options (constant) 1639 init ("1"b); 1640 dcl FIXED_DEC_14_3_DESC bit (36) int static options (constant) 1641 init ("110101110000000000000011000000001110"b); 1642 dcl FLOAT_DEC_59_DESC bit (36) int static options (constant) 1643 init ("100101000000000000000000000000111011"b); 1644 dcl FREEING bit (1) aligned int static options (constant) 1645 init ("0"b); 1646 dcl IOARS_STRING char (8) int static options (constant) init ("^.3f"); 1647 dcl MRDS fixed bin (2) int static options (constant) 1648 init (1); 1649 dcl NO_FREEING bit (1) aligned int static options (constant) 1650 init ("1"b); 1651 dcl NO_ZERO_ON_ALLOC bit (1) aligned int static options (constant) 1652 init ("0"b); 1653 dcl NO_ZERO_ON_FREE bit (1) aligned int static options (constant) 1654 init ("0"b); 1655 dcl ROW_SEG_INCREASE fixed bin int static options (constant) init (10); 1656 1657 /* External */ 1658 1659 dcl error_table_$noentry 1660 fixed bin (35) ext; 1661 dcl error_table_$no_table 1662 fixed bin (35) ext; 1663 dcl linus_error_$no_lila_expr_processed 1664 fixed bin (35) ext; 1665 dcl linus_error_$ret_not_valid 1666 fixed bin (35) ext; 1667 dcl linus_error_$no_db fixed bin(35) ext static; 1668 dcl mrds_data_$max_temp_rels 1669 fixed bin (35) ext static; 1670 dcl mrds_error_$tuple_not_found 1671 fixed bin (35) ext; 1672 dcl sys_info$max_seg_size 1673 fixed bin (35) ext; 1674 1675 /* Entries */ 1676 1677 dcl assign_round_ entry (ptr, fixed bin, fixed bin (35), ptr, 1678 fixed bin, fixed bin (35)); 1679 dcl cu_$generate_call entry (entry, ptr); 1680 dcl dsl_$get_rslt_info entry (fixed bin(35), char(*), ptr, ptr, fixed bin(35)); 1681 dcl dsl_$get_temp_info entry (fixed bin(35), fixed bin(35), ptr, ptr, fixed bin(35)); 1682 dcl dsl_$retrieve entry options (variable); 1683 dcl dsl_$store entry() options(variable); 1684 dcl get_pdir_ entry () returns (char (168)); 1685 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)); 1686 dcl ioa_ entry options (variable); 1687 dcl ioa_$rsnnl entry options (variable); 1688 dcl linus_eval_expr entry (ptr, ptr, ptr, fixed bin, fixed bin, 1689 fixed bin (35)); 1690 dcl linus_eval_set_func entry (ptr, ptr, fixed bin (35)); 1691 dcl linus_temp_seg_mgr$get_segment 1692 entry (ptr, char (*), char (*), ptr, 1693 fixed bin (35)); 1694 dcl linus_temp_seg_mgr$release_segment 1695 entry (ptr, char (*), ptr, fixed bin (35)); 1696 dcl linus_translate_query$auto entry (ptr, ptr); 1697 dcl mdbm_util_$binary_data_class 1698 entry (ptr) returns (bit (1) aligned); 1699 dcl mdbm_util_$complex_data_class 1700 entry (ptr) returns (bit (1) aligned); 1701 dcl mdbm_util_$fixed_data_class 1702 entry (ptr) returns (bit (1) aligned); 1703 dcl mdbm_util_$number_data_class 1704 entry (ptr) returns (bit (1) aligned); 1705 dcl mdbm_util_$string_data_class 1706 entry (ptr) returns (bit (1) aligned); 1707 dcl mdbm_util_$varying_data_class 1708 entry (ptr) returns (bit (1) aligned); 1709 dcl mdb_display_data_value$ptr 1710 entry (ptr, ptr); 1711 dcl mdbm_util_$mu_define_area 1712 entry (ptr, fixed bin (18), char (11), 1713 bit (1) aligned, bit (1) aligned, bit (1) aligned, 1714 bit (1) aligned, fixed bin (35)); 1715 dcl msf_manager_$close entry (ptr); 1716 dcl msf_manager_$get_ptr 1717 entry (ptr, fixed bin, bit (1), ptr, 1718 fixed bin (24), fixed bin (35)); 1719 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 1720 dcl release_area_ entry (ptr); 1721 dcl sort_seg_$linus_table 1722 entry (ptr, char (*), ptr, entry, entry, char (*), 1723 ptr, (*) ptr, ptr, fixed bin (35)); 1724 dcl ssu_$abort_line entry options (variable); 1725 dcl ssu_$print_message entry () options (variable); 1726 dcl unique_chars_ entry (bit (*)) returns (char (15)); 1727 1728 end linus_table; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0915.0 linus_table.pl1 >spec>install>1039>linus_table.pl1 1471 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1473 2 11/02/83 1945.0 arg_descriptor.incl.pl1 >ldd>include>arg_descriptor.incl.pl1 1475 3 08/05/86 0956.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 1477 4 03/27/82 0534.5 linus_arg_list.incl.pl1 >ldd>include>linus_arg_list.incl.pl1 1479 5 11/23/82 1427.3 linus_char_argl.incl.pl1 >ldd>include>linus_char_argl.incl.pl1 1481 6 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>include>linus_lcb.incl.pl1 1483 7 03/27/82 0534.5 linus_rel_array.incl.pl1 >ldd>include>linus_rel_array.incl.pl1 1485 8 09/16/83 1438.0 linus_select_info.incl.pl1 >ldd>include>linus_select_info.incl.pl1 1487 9 09/16/83 1438.0 linus_sort_info.incl.pl1 >ldd>include>linus_sort_info.incl.pl1 1489 10 09/16/83 1438.0 linus_table_control.incl.pl1 >ldd>include>linus_table_control.incl.pl1 1491 11 10/06/83 1319.0 linus_table_info.incl.pl1 >ldd>include>linus_table_info.incl.pl1 1493 12 03/27/82 0534.5 linus_temp_tab_names.incl.pl1 >ldd>include>linus_temp_tab_names.incl.pl1 1495 13 10/14/83 1708.6 mdbm_descriptor.incl.pl1 >ldd>include>mdbm_descriptor.incl.pl1 1497 14 10/14/83 1709.0 mrds_rslt_info.incl.pl1 >ldd>include>mrds_rslt_info.incl.pl1 1499 15 05/18/84 0930.8 sort_seg_info.incl.pl1 >ldd>include>sort_seg_info.incl.pl1 1501 16 10/26/88 1355.5 std_descriptor_types.incl.pl1 >ldd>include>std_descriptor_types.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. ANOTHER 000004 constant char(8) initial packed unaligned dcl 1625 set ref 1399 ANOTHER_LEN constant bit(24) initial packed unaligned dcl 1627 ref 1400 BLANK constant char(1) initial packed unaligned dcl 1629 ref 1447 CHARACTER_ZERO constant char(1) initial packed unaligned dcl 1630 ref 1447 CREATE 000033 constant bit(1) initial packed unaligned dcl 1631 set ref 822* DEFAULT_EXPR_SIZE constant fixed bin(5,0) initial dcl 1632 ref 1090 DELETE_SEG_SW 000003 constant bit(6) initial packed unaligned dcl 1634 set ref 777* EXPR constant fixed bin(2,0) initial dcl 1636 ref 944 EXTENSIBLE 000033 constant bit(1) initial dcl 1638 set ref 889* 906* FIXED_DEC_14_3_DESC 000002 constant bit(36) initial packed unaligned dcl 1640 ref 1092 FLOAT_DEC_59_DESC 000010 constant bit(36) initial packed unaligned dcl 1642 set ref 1290 FREEING 000036 constant bit(1) initial dcl 1644 set ref 906* IOARS_STRING 000000 constant char(8) initial packed unaligned dcl 1646 set ref 971* Interseg_call_type constant fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 ref 1243 1335 MRDS constant fixed bin(2,0) initial dcl 1647 ref 932 1057 1066 NO_FREEING 000033 constant bit(1) initial dcl 1649 set ref 889* NO_ZERO_ON_ALLOC 000036 constant bit(1) initial dcl 1651 set ref 889* 906* NO_ZERO_ON_FREE 000036 constant bit(1) initial dcl 1653 set ref 889* 906* ROW_SEG_INCREASE constant fixed bin(17,0) initial dcl 1655 ref 757 814 996 1006 SS_duplicates constant fixed bin(17,0) initial dcl 15-15 ref 488 SS_index constant fixed bin(17,0) initial dcl 15-15 ref 494 SS_info_version_1 000006 constant char(8) initial packed unaligned dcl 15-15 ref 486 SS_length constant fixed bin(17,0) initial dcl 15-15 ref 490 498 abs builtin function dcl 1598 ref 725 addr builtin function dcl 1599 ref 507 691 708 722 953 953 957 957 1087 1087 1260 1261 1262 1263 1264 1265 1275 1290 1293 1341 1344 1345 1348 1350 1370 1372 1372 1384 1384 1399 1444 1446 1463 1463 addrel builtin function dcl 1600 ref 1376 arg_count 12 based fixed bin(17,0) level 3 in structure "store_args" packed packed unsigned unaligned dcl 11-44 in procedure "linus_table" set ref 1240* 1244 1249 1249 1250 1250 1251 1251 1252 1252 1253 1253 1254 1254 1255 1255 1256 1256 1261 1261 1261 1263 1263 1263 1265 1265 1265 1272 1272 1273 1273 1275 1275 1275 1454 1454 arg_count based fixed bin(17,0) level 3 in structure "retrieval_arg_list" packed packed unsigned unaligned dcl 1521 in procedure "linus_table" set ref 1298 1333* 1336 1341 1345 1350 1359 1370 arg_descriptor based structure level 1 dcl 2-6 arg_descriptor_ptr 000100 automatic pointer dcl 2-34 set ref 1290* 1291 1292 arg_len_bits based structure level 1 packed packed unaligned dcl 1506 arg_list based structure level 1 dcl 3-14 arg_list_arg_count 000160 automatic fixed bin(17,0) packed unsigned unaligned dcl 1559 set ref 1237* 1238 1240 1240 1240 1255 1256 1264 1265 1265 1331* 1333 1333 1333 1340 1341 arg_ptr 20 based pointer array level 3 in structure "select_info" dcl 8-5 in procedure "linus_table" ref 1357 arg_ptr based pointer array level 3 in structure "select_info" dcl 8-5 in procedure "linus_table" ref 1368 1375 arg_ptr based pointer level 2 in structure "user_item" dcl 1549 in procedure "linus_table" set ref 937* arg_ptrs 14 based pointer array level 2 in structure "store_args" dcl 11-44 in procedure "linus_table" set ref 1260* 1262* 1264* 1271* 1444* arg_ptrs 2 based pointer array level 2 in structure "retrieval_arg_list" dcl 1521 in procedure "linus_table" set ref 1298 1340* 1344* 1349* 1357* 1368* 1376* 1399* argument_list_descriptors based structure array level 2 dcl 11-44 set ref 1249* 1261 1263 1265 1275 arr 2 based structure array level 2 dcl 4-3 set ref 1350 1384 1384 assign_round_ 000032 constant entry external dcl 1677 ref 937 957 965 974 assn_len 5 based fixed bin(35,0) level 2 dcl 1549 set ref 937* assn_type 4 based fixed bin(17,0) level 2 dcl 1549 set ref 937* attr 4 based structure array level 2 dcl 14-7 attr_name 4 based char(32) array level 3 dcl 14-7 ref 1215 bit_count 000161 automatic fixed bin(24,0) dcl 1560 set ref 822* bit_dtype constant fixed bin(17,0) initial dcl 16-25 ref 1447 block_size 2 based fixed bin(17,0) level 3 dcl 15-15 set ref 487* call_type 0(18) based fixed bin(18,0) level 3 in structure "retrieval_arg_list" packed packed unsigned unaligned dcl 1521 in procedure "linus_table" set ref 1335* call_type 12(18) based fixed bin(18,0) level 3 in structure "store_args" packed packed unsigned unaligned dcl 11-44 in procedure "linus_table" set ref 1243* caller 000162 automatic fixed bin(17,0) dcl 1561 set ref 946* 1288* caller_area_ptr_parm parameter pointer dcl 68 ref 260 280 ceil builtin function dcl 1601 ref 725 char builtin function dcl 1602 ref 1084 1130 char_desc based structure level 1 dcl 4-3 set ref 1330 char_dtype constant fixed bin(17,0) initial dcl 16-25 ref 1253 1272 char_output_string based varying char dcl 1509 set ref 360 931* 971* 982 char_output_string_ptr 110 based pointer initial level 2 dcl 10-5 set ref 361* 874* 1300 char_ptr 000104 automatic pointer dcl 4-10 set ref 1330* 1341 1345 1348 1350 1384 1384 1400 1403 char_string_ptr 000164 automatic pointer dcl 1562 set ref 360* 361 931 937* 971 974* 982 1300* cmpx_float_dec_type 000170 automatic fixed bin(17,0) dcl 1564 set ref 957* 1289* code_parm parameter fixed bin(35,0) dcl 69 set ref 90 107* 162 176* 181* 185 205* 210* 217* 228 243* 257* 260 282* 286 304* 366* 371 388* 411* 416 430* 445* 451 472* 560* 564 582* 586 601* 625* 629 645* 660* column_count 2 based fixed bin(17,0) level 2 dcl 11-5 set ref 930 1030 1033* 1049 1055 1065 1119 1120 1122 1138 1203* 1237 1270 1442 column_data_type 35 based bit(36) array level 3 dcl 11-5 set ref 507 1077* 1092* 1098* 1220* 1222 1446 column_index 37 based fixed bin(21,0) array level 3 dcl 11-5 set ref 495 982 1109* 1109 1113* 1229* 1444 1447 1447 1454 column_length 36 based fixed bin(21,0) array level 3 dcl 11-5 set ref 499 937 974 982 1074* 1090* 1096* 1103 1109 1138 1222* 1224 1227 1230 1273 1447 1447 1454 column_name 12 based varying char(69) array level 3 dcl 11-5 set ref 1049* 1057* 1069 1069* 1084* 1106 1122 1122 1130* 1130 1215* 1217 columns 12 based structure array level 2 in structure "table_info" dcl 11-5 in procedure "linus_table" columns 1 based structure array level 2 in structure "sort_info" unaligned dcl 9-7 in procedure "linus_table" component_ptr based pointer array dcl 1511 in procedure "linus_table" set ref 520 758 774* 817* 817 834* component_ptr based pointer initial array level 2 in structure "sort_input" packed packed unaligned dcl 1527 in procedure "linus_table" set ref 513* 520* component_ptrs_p 000166 automatic pointer initial dcl 1563 set ref 520 607* 758* 759 774 817 818* 834 919* 1563* component_ptrs_ptr 4 based pointer initial level 2 dcl 10-5 set ref 476 607 755 759* 775* 818* 874* 919 component_value based char array packed unaligned dcl 1513 set ref 691 const 2 based bit(12) initial array level 3 packed packed unaligned dcl 4-3 set ref 1330* cu_$generate_call 000034 constant entry external dcl 1679 ref 1310 1391 1463 current_component_ptr 112 based pointer initial level 2 dcl 10-5 set ref 691 768* 822* 834 874* current_seg_row_count 114 based fixed bin(35,0) initial level 2 dcl 10-5 set ref 220* 671 691 754* 769* 836* 874* 986* 986 db_index based fixed bin(35,0) level 2 dcl 6-53 set ref 1165 1174* 1191* 1260 1344 debug_switch 000010 internal static bit(1) initial packed unaligned dcl 1622 set ref 139* 158* 1381 delete_$path 000050 constant entry external dcl 1685 ref 777 delim 10 based structure level 3 dcl 15-15 desc 3 based bit(36) level 2 in structure "user_item" dcl 1549 in procedure "linus_table" ref 1074 1077 desc based bit(36) array level 3 in structure "select_info" dcl 8-5 in procedure "linus_table" set ref 1370 1372 1372 desc_count 13 based fixed bin(17,0) level 3 in structure "store_args" packed packed unsigned unaligned dcl 11-44 in procedure "linus_table" set ref 1244* desc_count 1 based fixed bin(17,0) level 3 in structure "retrieval_arg_list" packed packed unsigned unaligned dcl 1521 in procedure "linus_table" set ref 1336* desc_ptr 000144 automatic pointer dcl 13-19 in procedure "linus_table" set ref 507* 508 509* 708* 709 710* 712* 714* 714 714 718* 720* 722 732* desc_ptr 22 based pointer array level 3 in structure "select_info" dcl 8-5 in procedure "linus_table" ref 1359 desc_ptrs based pointer array level 2 in structure "store_args" dcl 11-44 in procedure "linus_table" set ref 1261* 1263* 1265* 1275* desc_ptrs based pointer array level 2 in structure "retrieval_arg_list" dcl 1521 in procedure "linus_table" set ref 1341* 1345* 1350* 1359* 1370* descending 321 based bit(1) array level 4 in structure "ss_info" packed packed unaligned dcl 15-15 in procedure "linus_table" set ref 503* descending 2 based bit(1) array level 4 in structure "sort_info" packed packed unaligned dcl 9-7 in procedure "linus_table" ref 503 descriptor 26 based bit(36) array level 3 in structure "rslt_info" dcl 14-7 in procedure "linus_table" ref 1220 descriptor based structure level 1 unaligned dcl 13-6 in procedure "linus_table" descriptor_parm parameter bit(36) packed unaligned dcl 704 set ref 699 708 divide builtin function dcl 1603 ref 710 1139 dsl_$get_rslt_info 000036 constant entry external dcl 1680 ref 1174 dsl_$get_temp_info 000040 constant entry external dcl 1681 ref 1191 dsl_$retrieve 000042 constant entry external dcl 1682 ref 1310 1310 1391 1391 dsl_$store 000044 constant entry external dcl 1683 ref 1463 1463 duplicate_count 000171 automatic fixed bin(17,0) dcl 1565 set ref 1121* 1130 1133* 1133 duplicate_mode 4 based fixed bin(17,0) level 3 dcl 15-15 set ref 488* error_code 10 based fixed bin(35,0) level 2 dcl 11-44 set ref 1264 1464 error_table_$no_table 000014 external static fixed bin(35,0) dcl 1661 ref 478 error_table_$noentry 000012 external static fixed bin(35,0) dcl 1659 ref 748 expr_results 000172 automatic float dec(59) dcl 1566 set ref 971* 1293 expr_results_ptr 000212 automatic pointer dcl 1567 set ref 957* 965* 1293* expression_count 000214 automatic fixed bin(17,0) dcl 1568 set ref 1038* 1083* 1083 1084 extended_arg_type 000102 automatic fixed bin(17,0) initial dcl 2-36 set ref 2-36* fb_desc based bit(36) initial level 2 dcl 4-3 set ref 1330* 1341 1345 fcb_ptr 14 based pointer initial level 2 dcl 10-5 set ref 745* 771 773* 822* 874* field 113 based structure array level 2 dcl 15-15 field_count 3 based fixed bin(17,0) level 3 dcl 15-15 set ref 483* 554 fixed builtin function dcl 1604 ref 709 714 fixed_bin_11_ovrly based fixed bin(11,0) packed unaligned dcl 705 ref 722 flag based bit(1) array level 3 packed packed unaligned dcl 11-44 set ref 1250* flags 115 based structure level 2 unaligned dcl 10-5 float_dec_len 000215 automatic fixed bin(35,0) dcl 1569 set ref 957* 965* 1291* float_dec_type 000216 automatic fixed bin(17,0) dcl 1570 set ref 965* 1292* from 113 based structure array level 3 dcl 15-15 get_pdir_ 000046 constant entry external dcl 1684 ref 742 header based structure level 2 in structure "arg_list" dcl 3-14 in procedure "linus_table" header 12 based structure level 2 in structure "store_args" dcl 11-44 in procedure "linus_table" set ref 1463 1463 header based structure level 2 in structure "retrieval_arg_list" dcl 1521 in procedure "linus_table" header based structure level 2 in structure "ss_info" dcl 15-15 in procedure "linus_table" icode 000217 automatic fixed bin(35,0) dcl 1571 set ref 181 215 217 243* 248* 257 304* 314* 323* 329 335 342* 345 345 347* 347 351* 356 366 388* 396* 402 404 411 430* 439 441 445 445 478* 525* 527 527* 531* 535 540* 550* 560 620* 625 645* 651* 660 745* 748 748* 750 750* 767* 777* 778 778* 787* 790 790* 801* 803 803* 822* 827 827* 845* 847 847* 884* 886 886* 889* 892 892* 901* 903 903* 906* 909 909* 946* 949 1311* 1392* incremental_retrieval_arg_ptr 104 based pointer initial level 2 dcl 10-5 set ref 338* 874* 1297 1402* incremental_retrieval_char_ptr 106 based pointer initial level 2 dcl 10-5 set ref 874* 1403* info_area based area dcl 1517 ref 483 484 513 523 1033 info_area_p 000220 automatic pointer initial dcl 1572 set ref 483 484 513 523 618* 619* 898* 899 901* 906* 912 1033 1572* info_area_ptr 100 based pointer initial level 2 dcl 10-5 set ref 616 618 620* 874* 898 912* init_number_of_descriptors 000132 automatic fixed bin(17,0) dcl 11-54 set ref 1238* 1240 1240 initial_mrds_vclock 000222 automatic float bin(63) dcl 1573 set ref 1307* 1313 initial_vclock 000224 automatic float bin(63) dcl 1574 set ref 1171* 1197 1388* 1394 ioa_ 000052 constant entry external dcl 1686 ref 1383 ioa_$rsnnl 000054 constant entry external dcl 1687 ref 971 item_index 000226 automatic fixed bin(17,0) dcl 1575 set ref 493* 494 495 495 498 499 499 503 503 505 505 507 508 509* 515* 516 516* 519* 520 520* 524* 529* 539* 540* 544* 545 545* 549* 550* 785* 787 787 790* 930* 932 934 937 944 946 946* 953 953 957 957 957 957 957 965 965 965 974 974 974 974 982 982* 1065* 1066 1069 1069 1069 1073 1074 1077 1084 1087 1087 1090 1092 1096 1096 1098 1098 1103 1106 1109 1109 1109 1109* 1120* 1122* 1355* 1357 1357 1359 1359* 1364* 1368 1370 1372 1372 1375 1378* 1378 item_ptr based pointer array level 3 dcl 8-5 set ref 351* 934 946* 1073 item_type based fixed bin(17,0) array level 3 dcl 8-5 ref 932 944 1057 1066 keep_from_row 000227 automatic fixed bin(35,0) dcl 1576 set ref 390* keep_from_row_parm parameter fixed bin(35,0) dcl 70 ref 371 390 lcb based structure level 1 dcl 6-53 lcb_ptr 000110 automatic pointer dcl 6-121 set ref 85* 86 108* 110 175* 203* 244* 248 252 279* 303* 311 311* 312 318 319 342* 351* 387* 429* 469* 525* 531* 540* 550* 572* 600* 603 605 620* 624 646* 650 650* 651 655 787* 801* 845* 871 872 874 877 879 884* 901* 921 946* 1022 1039 1141 1165 1171 1174 1179 1181 1191 1197 1197 1197 1260 1307 1313 1313 1313 1344 1388 1394 1394 1394 lcb_ptr_parm parameter pointer dcl 71 ref 85 90 108 162 175 185 203 228 244 260 279 286 303 371 387 416 429 451 469 564 572 586 600 629 646 len 0(12) based bit(24) level 2 packed packed unaligned dcl 1506 ref 1348 length builtin function dcl 1605 ref 1106 1217 1254 1454 length_parm parameter fixed bin(21,0) dcl 706 set ref 699 710* 712* 714* 717* 725* 725 730* 730 732* 732 linus_error_$no_db 000022 external static fixed bin(35,0) dcl 1667 ref 1167 linus_error_$no_lila_expr_processed 000016 external static fixed bin(35,0) dcl 1663 ref 248 314 651 linus_error_$ret_not_valid 000020 external static fixed bin(35,0) dcl 1665 ref 323 linus_eval_expr 000056 constant entry external dcl 1688 ref 946 linus_eval_set_func 000060 constant entry external dcl 1690 ref 342 351 linus_rel_array based structure level 1 unaligned dcl 7-10 linus_rel_array_ptr 000112 automatic pointer dcl 7-16 set ref 1039* 1055 linus_temp_seg_mgr$get_segment 000062 constant entry external dcl 1691 ref 525 531 531 845 884 901 linus_temp_seg_mgr$release_segment 000064 constant entry external dcl 1694 ref 531 531 540 550 620 787 801 linus_translate_query$auto 000066 constant entry external dcl 1696 ref 311 650 log10 builtin function dcl 1606 ref 725 loop_index 000230 automatic fixed bin(17,0) dcl 1577 set ref 1122* 1125 1125 1130 1130* 1365* 1368 1370 1376* ltifs_code_parm parameter fixed bin(35,0) dcl 1152 set ref 1145 1163* 1167* 1174* 1176 1191* 1199 ltifs_current_index 000432 automatic fixed bin(21,0) dcl 1153 set ref 1212* 1229 1230* 1230 ltifs_found_the_relation 000433 automatic bit(1) dcl 1154 set ref 1178* 1182 1186* 1191 ltifs_loop 000434 automatic fixed bin(17,0) dcl 1155 set ref 1182* 1184 1187* 1214* 1215 1215 1217 1220 1220 1222 1222 1224 1227 1229 1230* 1270* 1271 1272 1273 1273 1275 1275* ltifs_relation_index 000435 automatic fixed bin(35,0) dcl 1156 set ref 1187* 1191* ltifs_table_info_ptr_parm parameter pointer dcl 1159 set ref 1145 1162* 1280* ltifs_table_name 000436 automatic char(30) packed unaligned dcl 1157 set ref 1161* 1174* 1184 1241 ltifs_table_name_parm parameter char(30) packed unaligned dcl 1158 ref 1145 1161 ltrim builtin function dcl 1607 ref 1084 1130 max builtin function dcl 1608 ref 1103 1106 1217 1224 max_number_of_components 6 based fixed bin(17,0) level 2 dcl 10-5 set ref 757* 758 774 812 814* 816 817 max_number_of_ptrs_per_seg 1 based fixed bin(21,0) level 2 dcl 11-25 set ref 687 999* max_number_of_rows_per_seg 10 based fixed bin(21,0) level 2 dcl 10-5 set ref 671 1139* max_number_of_seg_ptrs based fixed bin(17,0) level 2 dcl 11-25 set ref 850 997* 1006* 1009* 1010 maximum_column_name_length 3 based fixed bin(17,0) level 2 dcl 11-5 set ref 1048* 1106* 1106 1209* 1217* 1217 maximum_column_value_length 4 based fixed bin(17,0) level 2 dcl 11-5 set ref 360 931 971 1047* 1103* 1103 1210* 1224* 1224 mbz1 5 based fixed bin(17,0) array level 3 dcl 15-15 set ref 489* mdb_display_data_value$ptr 000104 constant entry external dcl 1709 ref 1384 mdbm_util_$binary_data_class 000070 constant entry external dcl 1697 ref 710 mdbm_util_$complex_data_class 000072 constant entry external dcl 1699 ref 732 957 mdbm_util_$fixed_data_class 000074 constant entry external dcl 1701 ref 720 mdbm_util_$mu_define_area 000106 constant entry external dcl 1711 ref 889 906 mdbm_util_$number_data_class 000076 constant entry external dcl 1703 ref 509 712 718 953 1087 mdbm_util_$string_data_class 000100 constant entry external dcl 1705 ref 714 mdbm_util_$varying_data_class 000102 constant entry external dcl 1707 ref 1372 modes 321 based structure array level 3 in structure "ss_info" dcl 15-15 in procedure "linus_table" modes 2 based structure array level 3 in structure "sort_info" packed packed unaligned dcl 9-7 in procedure "linus_table" mrds_data_$max_temp_rels 000024 external static fixed bin(35,0) dcl 1668 ref 1182 mrds_error_$tuple_not_found 000026 external static fixed bin(35,0) dcl 1670 ref 210 345 396 445 mrds_item based structure array level 2 dcl 8-5 mrds_time 74 based float bin(63) level 2 dcl 6-53 set ref 1197* 1197 1313* 1313 1394* 1394 msf_manager_$close 000110 constant entry external dcl 1715 ref 773 msf_manager_$get_ptr 000112 constant entry external dcl 1716 ref 822 msf_manager_$open 000114 constant entry external dcl 1719 ref 745 msf_seg_count 7 based fixed bin(17,0) initial level 2 dcl 10-5 set ref 327 513 513 519 671 781* 812 814 822* 827 832* 832 834 874* my_name 000231 automatic char(11) initial packed unaligned dcl 1578 set ref 525* 531* 540* 550* 777* 787* 801* 845* 884* 1578* n_chars 1 based fixed bin(17,0) level 2 dcl 4-3 set ref 1330* n_chars_init 000106 automatic fixed bin(17,0) dcl 4-11 set ref 1329* 1330 1330 n_mrds_items 16 based fixed bin(17,0) level 2 dcl 8-5 ref 1331 1365 n_user_items 17 based fixed bin(17,0) level 2 dcl 8-5 ref 1032 1411 name based varying char(32) array level 3 dcl 8-5 ref 1057 1069 1125 1125 new_component_ptr based pointer array dcl 1512 ref 816 new_component_ptrs_p 000234 automatic pointer initial dcl 1579 set ref 816* 817 818 1579* new_row_segs_info based structure level 1 unaligned dcl 1518 ref 1009 new_row_segs_ip 000236 automatic pointer initial dcl 1581 set ref 1009* 1010 1011 1581* nmi_alloc 13 based fixed bin(17,0) level 2 dcl 8-5 ref 351 932 934 944 946 953 953 957 957 957 957 957 965 965 965 974 974 974 1057 1057 1057 1066 1069 1073 1087 1087 1096 1098 1125 1125 1125 1125 1412 1412 non_case_sensitive 321(01) based bit(1) array level 4 in structure "ss_info" packed packed unaligned dcl 15-15 in procedure "linus_table" set ref 505* non_case_sensitive 2(01) based bit(1) array level 4 in structure "sort_info" packed packed unaligned dcl 9-7 in procedure "linus_table" ref 505 nsevals 15 based fixed bin(17,0) level 2 dcl 8-5 ref 1331 1355 1355 1365 1365 nsv_alloc 12 based fixed bin(17,0) level 2 dcl 8-5 ref 351 932 934 944 946 953 953 957 957 957 957 957 965 965 965 974 974 974 1057 1057 1057 1066 1069 1073 1087 1087 1096 1098 1125 1125 1125 1125 1368 1370 1372 1372 1375 1412 1412 null builtin function dcl 1609 ref 110 115 204 242 248 311 312 338 342 471 476 513 513 523 554 556 557 558 603 609 611 616 624 644 650 651 678 755 768 771 774 775 783 787 793 797 872 874 874 874 874 874 874 874 874 874 874 882 899 916 918 994 1022 1030 1033 1050 1162 1179 1203 1206 1207 1271 1563 1572 1579 1581 1592 1593 1594 num_attr based fixed bin(17,0) level 2 dcl 14-7 ref 1202 1233 num_dims 000146 automatic fixed bin(17,0) initial dcl 13-20 set ref 13-20* num_of_rels based fixed bin(17,0) level 2 dcl 7-10 ref 1055 num_of_rels_init 000114 automatic fixed bin(17,0) initial dcl 7-18 set ref 7-18* number 217 based fixed bin(17,0) array level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 499* number 11 based fixed bin(17,0) level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 491* number 114 based fixed bin(17,0) array level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 495* number 1 based fixed bin(17,0) array level 3 in structure "sort_info" dcl 9-7 in procedure "linus_table" ref 495 499 507 number_of_columns_to_sort based fixed bin(17,0) level 2 dcl 9-7 ref 482 484 531 556 number_of_components 1 based fixed bin(17,0) level 2 dcl 1527 set ref 513* 557 number_of_descriptors 11 based fixed bin(17,0) level 2 dcl 11-44 set ref 1240* 1249 1250 number_of_ptr_segments based fixed bin(17,0) level 2 dcl 1527 set ref 513* 513 520 557 number_of_ptrs_this_seg based fixed bin(21,0) level 2 dcl 11-32 set ref 224* 687 693* 693 694 855* number_of_seg_ptrs 2 based fixed bin(17,0) level 2 dcl 11-25 set ref 513 513 515 523 523 539 543* 682 684 785 785 850 853* 853 854 1001* 1006 number_of_segs based fixed bin(17,0) level 2 dcl 1542 set ref 523* 524 543 544 549 558 numeric 321(02) based bit(1) array level 4 packed packed unaligned dcl 15-15 set ref 509* pad1 12(17) based bit(1) level 3 in structure "store_args" packed packed unaligned dcl 11-44 in procedure "linus_table" set ref 1242* pad1 0(17) based bit(1) level 3 in structure "retrieval_arg_list" packed packed unaligned dcl 1521 in procedure "linus_table" set ref 1334* pad2 1(17) based bit(19) level 3 in structure "retrieval_arg_list" packed packed unaligned dcl 1521 in procedure "linus_table" set ref 1337* pad2 13(17) based bit(19) level 3 in structure "store_args" packed packed unaligned dcl 11-44 in procedure "linus_table" set ref 1245* permanent 115 based bit(1) level 3 dcl 10-5 set ref 309* permanent_table_parm parameter bit(1) dcl 72 ref 286 309 prec_len 000240 automatic fixed bin(17,0) dcl 1582 set ref 709* 710 712 725 precision 0(24) based bit(12) level 3 packed packed unaligned dcl 13-6 ref 709 714 prior_sf_ptr 2 based pointer level 2 dcl 8-5 set ref 342 342* real_fix_bin_1_dtype constant fixed bin(17,0) initial dcl 16-25 ref 1251 1255 rel_array_ptr 66 based pointer level 2 dcl 6-53 ref 1039 release_area_ 000116 constant entry external dcl 1720 ref 619 800 retrieval_arg_list based structure level 1 dcl 1521 set ref 1333 retrieval_arg_list_ptr 000156 automatic pointer dcl 1525 set ref 1297* 1298 1298 1310* 1333* 1334 1335 1336 1336 1337 1340 1341 1344 1345 1349 1350 1357 1359 1368 1370 1376 1391* 1399 1402 retrieval_id 11 based fixed bin(17,0) initial level 2 dcl 10-5 set ref 118 118* 874* 1043 1043* retrieval_identifier based fixed bin(17,0) level 2 dcl 11-5 set ref 118* 1043* 1204* retrieve_code based fixed bin(35,0) dcl 1519 ref 1311 1338 1392 retrieve_code_ptr 000242 automatic pointer dcl 1583 set ref 1298* 1311 1338* 1340 1392 row_count 1 based fixed bin(35,0) level 2 dcl 11-5 set ref 221* 339* 985* 985 1205* row_count_actual_parm parameter fixed bin(35,0) dcl 76 set ref 371 388* 407* 407 row_count_specified 000244 automatic fixed bin(17,0) dcl 1584 set ref 389* 402 row_count_specified_parm parameter fixed bin(35,0) dcl 74 ref 371 389 row_index 000245 automatic fixed bin(17,0) dcl 1585 set ref 402* 1055* 1057 1057 1057 1057* 1119* 1120 1122 1125 1125* row_info_ptr 2 based pointer initial level 2 dcl 10-5 set ref 793* 874* 1013* 1045 row_ptrs based structure level 1 dcl 11-32 row_ptrs_p 000130 automatic pointer dcl 11-41 set ref 224 682* 684* 687 687* 693 693 694 694 row_segs_info based structure level 1 dcl 11-25 set ref 997 1010* 1010 row_segs_info_ptr 6 based pointer initial level 2 dcl 11-5 set ref 609 678 680 793* 916 994 998* 1011* 1033* 1045* 1203* 1206* row_segs_ip 000126 automatic pointer dcl 11-39 set ref 513 513 515 516 523 523 539 540 543 545 609* 611* 680* 682 684 684 687 783 785 785 787 787 793* 850 850 853 853 854 854 916* 918* 997* 998 999 1001 1006 1006 1010 1011* 1013 row_value based char packed unaligned dcl 11-36 set ref 982* row_value_length 5 based fixed bin(21,0) level 2 dcl 11-5 set ref 491 691 691 691 982 1138* 1139 1211* 1227* 1227 1447 1447 1454 row_value_p 000124 automatic pointer packed unaligned dcl 11-37 set ref 223 691* 694 982 row_value_ptr 1 based pointer array level 2 packed packed unaligned dcl 11-32 set ref 694* row_value_ptr_parm parameter pointer packed unaligned dcl 78 set ref 185 204* 223* 564 582* rsi_init_max_number_of_seg_ptrs 000133 automatic fixed bin(17,0) dcl 11-55 set ref 996* 997 997 1006* 1009 1009 rslt_assn_len based fixed bin(35,0) array level 3 dcl 8-5 set ref 957* 965* 974* 1096 rslt_assn_ptr based pointer array level 3 dcl 8-5 set ref 957* 965* 974* rslt_assn_type based fixed bin(17,0) array level 3 dcl 8-5 set ref 957* 965* 974* rslt_desc based bit(36) array level 3 dcl 8-5 set ref 953 953 957 957 1087 1087 1098 rslt_info based structure level 1 dcl 14-7 ref 1233 rslt_ptr 000150 automatic pointer dcl 14-32 set ref 1174* 1191* 1202 1215 1220 1233 rtrim builtin function dcl 1611 ref 1057 1130 1215 1454 scale 0(12) based bit(12) level 3 packed packed unaligned dcl 13-6 set ref 714 722 scale_len 000246 automatic fixed bin(11,0) dcl 1586 set ref 722* 725 725 725 725 sci_ptr 000250 automatic pointer dcl 1587 set ref 311* 319* 650* 750* 827* 871* 886* 892* 903* 909* se_flags 0(01) based structure level 2 packed packed unaligned dcl 8-5 se_len 11 based fixed bin(35,0) level 2 dcl 8-5 set ref 1348 se_ptr 4 based pointer level 2 dcl 8-5 set ref 1349 1384* se_vals 20 based structure array level 2 dcl 8-5 seg_ptr 1 based pointer initial array level 2 in structure "sort_output" packed packed unaligned dcl 1542 in procedure "linus_table" set ref 523* 529* 545 550 seg_ptr 3 based pointer array level 2 in structure "row_segs_info" packed packed unaligned dcl 11-25 in procedure "linus_table" set ref 516 540 545* 684 787 787 854* seg_ptr_parm parameter pointer dcl 843 set ref 841 845* 854 855 segment_ptr 3 based pointer initial array level 2 packed packed unaligned dcl 1527 set ref 513* 516* select_info based structure level 1 dcl 8-5 selection_expression_identifier based fixed bin(17,0) level 2 in structure "table_control_info" dcl 10-5 in procedure "linus_table" set ref 1022 1141* selection_expression_identifier 105 based fixed bin(17,0) level 2 in structure "lcb" dcl 6-53 in procedure "linus_table" ref 1022 1141 set_fn based bit(1) level 2 packed packed unaligned dcl 8-5 ref 208 351 394 434 932 1066 1295 si_ptr 34 based pointer level 2 in structure "lcb" dcl 6-53 in procedure "linus_table" ref 248 252 311 312 318 650 651 655 921 si_ptr 000116 automatic pointer dcl 8-49 in procedure "linus_table" set ref 208 252* 318* 321 342 342 351 351 394 434 655* 921* 932 932 934 944 946 946* 953 953 957 957 957 957 957 965 965 965 974 974 974 1032 1057 1057 1057 1066 1066 1069 1073 1087 1087 1096 1098 1125 1125 1125 1125 1295 1331 1331 1348 1349 1355 1355 1357 1359 1365 1365 1365 1368 1370 1372 1372 1375 1384 1411 1412 1412 size based fixed bin(24,0) array level 3 in structure "store_args" packed packed unsigned unaligned dcl 11-44 in procedure "linus_table" set ref 1252* 1254* 1256* 1273* 1454* size 0(12) based structure level 2 in structure "descriptor" packed packed unaligned dcl 13-6 in procedure "linus_table" size 0(12) based fixed bin(24,0) level 2 in structure "arg_descriptor" packed packed unsigned unaligned dcl 2-6 in procedure "linus_table" ref 1291 sort_desc_array based pointer array dcl 1516 set ref 484 508* 531* 556 sort_desc_array_ptr 000252 automatic pointer dcl 1588 set ref 471* 484* 508 531 556 556 sort_info based structure level 1 unaligned dcl 9-7 sort_info_ptr 000120 automatic pointer dcl 9-16 set ref 470* 482 484 495 499 503 505 507 531 556 sort_info_ptr_parm parameter pointer dcl 79 ref 451 470 sort_input based structure level 1 dcl 1527 set ref 513 557 sort_input_ptr 000254 automatic pointer dcl 1589 set ref 471* 513* 514 516 520 531* 557 557 sort_output based structure level 1 unaligned dcl 1542 set ref 523 558 sort_output_ptr 000256 automatic pointer dcl 1590 set ref 471* 523* 524 529 531* 543 544 545 549 550 558 558 sort_seg_$linus_table 000120 constant entry external dcl 1721 ref 531 sorted 2 based bit(1) level 2 in structure "sort_input" dcl 1527 in procedure "linus_table" set ref 514* sorted 116 based bit(1) level 3 in structure "table_control_info" packed packed unaligned dcl 10-5 in procedure "linus_table" set ref 340* 514 537* ss_field_count 000152 automatic fixed bin(17,0) dcl 15-15 set ref 482* 483 483 493 ss_info based structure level 1 dcl 15-15 set ref 483 554 ss_info_ptr 000154 automatic pointer dcl 15-15 set ref 471* 483* 486 487 488 489 490 491 494 495 498 499 503 505 509 531* 554 554 ssu_$abort_line 000122 constant entry external dcl 1724 ref 86 527 750 827 847 886 892 903 909 ssu_$print_message 000124 constant entry external dcl 1725 ref 778 790 803 static_area 144 based area level 2 dcl 6-53 ref 874 store_ap 000134 automatic pointer dcl 11-56 set ref 1240* 1241 1242 1243 1244 1244 1245 1249 1250 1251 1252 1253 1254 1254 1255 1256 1260 1261 1261 1262 1262 1263 1263 1264 1264 1265 1265 1271 1272 1273 1275 1275 1279 1440* 1444 1454 1463 1463 1464 store_args based structure level 1 dcl 11-44 set ref 1240 store_args_ptr 10 based pointer level 2 dcl 11-5 set ref 1050* 1207* 1279* 1440 str_code_parm parameter fixed bin(35,0) dcl 1427 set ref 1420 1439* 1464* str_current_column_number 000516 automatic fixed bin(17,0) dcl 1429 set ref 1443* 1444 1446 1447 1447 1447 1447 1454 1454 str_descriptor_ptr 000514 automatic pointer dcl 1428 set ref 1446* 1447 1454 1454 str_loop 000517 automatic fixed bin(17,0) dcl 1430 set ref 1442* 1443 1444 1454* str_row_value based char packed unaligned dcl 1431 set ref 1447* 1447 1454 str_row_value_as_an_array based char(1) array packed unaligned dcl 1432 set ref 1444 str_row_value_ptr 000520 automatic pointer dcl 1433 set ref 1438* 1444 1447 1447 1454 str_row_value_ptr_parm parameter pointer packed unaligned dcl 1434 ref 1420 1438 str_table_info_ptr_parm parameter pointer dcl 1435 ref 1420 1437 substr builtin function dcl 1612 set ref 982* 1447* 1447 1454 subsystem_control_info_ptr 102 based pointer level 2 dcl 6-53 set ref 86* 319 871 sudrd_loop 000504 automatic fixed bin(17,0) dcl 1409 set ref 1411* 1412* sum builtin function dcl 1613 ref 1138 sys_info$max_seg_size 000030 external static fixed bin(35,0) dcl 1672 ref 889 906 999 1139 table_control_info based structure level 1 unaligned dcl 10-5 set ref 874 table_control_info_ptr 110 based pointer level 2 dcl 6-53 set ref 110 603 605 624* 872 877* 879 table_control_ip 000122 automatic pointer dcl 10-44 set ref 118 118 220 254 308 309 327 338 340 361 476 513 513 514 519 525 531 537 605* 606 607 616 618 620 657 671 671 671 691 691 740 742 742 745 745 745 750 750 754 755 757 758 759 768 769 771 773 774 775 777 777 781 793 797 799 801 812 812 814 814 816 817 818 822 822 822 827 827 827 832 832 834 834 836 845 874* 877 879* 881 884 895 898 901 912 915 919 986 986 1013 1022 1022 1030 1034 1043 1043 1045 1139 1141 1297 1300 1402 1403 table_info based structure level 1 dcl 11-5 set ref 1030 1033 1203 table_info_ptr 12 based pointer initial level 2 dcl 10-5 set ref 254 606 657 874* 915 1022 1030 1034* table_info_ptr_parm parameter pointer dcl 80 set ref 228 242* 254* 260 282* 564 582* 629 644* 657* table_ip 000136 automatic pointer dcl 11-57 set ref 115 118 221 339 360 491 495 499 507 606* 609 609 678 680 691 691 691 793 915* 916 916 930 931 937 971 974 982 982 982 985 985 994 998 1011 1030 1033* 1034 1043 1045 1047 1048 1049 1050 1055 1057 1065 1069 1069 1074 1077 1084 1090 1092 1096 1098 1103 1103 1103 1106 1106 1106 1109 1109 1109 1113 1119 1120 1122 1122 1122 1130 1130 1138 1138 1139 1203* 1204 1205 1206 1207 1209 1210 1211 1215 1217 1217 1217 1220 1222 1222 1224 1224 1224 1227 1227 1227 1229 1230 1237 1270 1273 1279 1280 1437* 1440 1442 1444 1446 1447 1447 1447 1447 1447 1447 1454 1454 1454 table_msf 16 based char(27) initial level 2 packed packed unaligned dcl 10-5 set ref 740* 745* 750* 777* 827* 874* table_name based char(30) level 2 in structure "store_args" dcl 11-44 in procedure "linus_table" set ref 1241* 1254 1262 table_name based varying char(32) array level 3 in structure "select_info" dcl 8-5 in procedure "linus_table" ref 1057 1125 1125 1412 1412 table_name_parm parameter char(30) packed unaligned dcl 81 set ref 260 282* target_type 000260 automatic fixed bin(17,0) initial dcl 1591 set ref 937* 974* 1591* temp_directory 24(27) based char(168) initial level 2 packed packed unaligned dcl 10-5 set ref 308* 525* 531* 742 742* 745* 750* 777* 827* 845* 874* 884* 901* temp_directory_parm parameter varying char(168) dcl 82 ref 286 308 temp_ptr 000262 automatic pointer initial dcl 1592 set ref 525* 529 1375* 1376 1592* temp_tab_names based char(32) array packed unaligned dcl 12-3 ref 1184 ti_init_column_count 000140 automatic fixed bin(17,0) dcl 11-58 set ref 1032* 1033 1033 1202* 1203 1203 1214 timing_mode 15(05) based bit(1) level 2 packed packed unaligned dcl 6-53 ref 1171 1197 1307 1313 1388 1394 to 216 based structure array level 3 dcl 15-15 translate builtin function dcl 1614 ref 1447 ttn_ptr 26 based pointer level 2 in structure "lcb" dcl 6-53 in procedure "linus_table" ref 1179 1181 ttn_ptr 000142 automatic pointer dcl 12-5 in procedure "linus_table" set ref 1181* 1184 type 0(01) based fixed bin(6,0) level 2 in structure "arg_descriptor" packed packed unsigned unaligned dcl 2-6 in procedure "linus_table" ref 1292 1447 1454 1454 type based fixed bin(6,0) array level 3 in structure "store_args" packed packed unsigned unaligned dcl 11-44 in procedure "linus_table" set ref 1251* 1253* 1255* 1272* type 216 based fixed bin(17,0) array level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 498* type 10 based fixed bin(17,0) level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 490* type 113 based fixed bin(17,0) array level 4 in structure "ss_info" dcl 15-15 in procedure "linus_table" set ref 494* unique_chars_ 000126 constant entry external dcl 1726 ref 740 unspec builtin function dcl 1615 set ref 1249* user_item based structure array level 2 in structure "select_info" dcl 8-5 in procedure "linus_table" user_item based structure level 1 dcl 1549 in procedure "linus_table" user_item_ptr 000264 automatic pointer initial dcl 1593 set ref 934* 937 937 937 1073* 1074 1077 1593* val_ret 0(01) based bit(1) level 3 packed packed unaligned dcl 8-5 ref 321 var 2(12) based bit(24) array level 3 packed packed unaligned dcl 4-3 set ref 1348* 1400* varying_bit_dtype constant fixed bin(17,0) initial dcl 16-25 ref 1454 varying_char_dtype constant fixed bin(17,0) initial dcl 16-25 ref 1454 vclock builtin function dcl 1616 ref 1171 1197 1307 1313 1388 1394 version based char(8) level 3 dcl 15-15 set ref 486* work_area based area dcl 1555 ref 360 758 816 997 1009 1203 1240 1330 1333 1338 work_area_p 000266 automatic pointer initial dcl 1594 set ref 280* 360 758 799* 800* 816 881* 882 884* 889* 895 997 1009 1174* 1191* 1203 1240 1330 1333 1338 1594* work_area_ptr 102 based pointer initial level 2 dcl 10-5 set ref 797 799 801* 874* 881 895* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Envptr_supplied_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SS_only_duplicate_keys internal static fixed bin(17,0) initial dcl 15-15 SS_only_duplicates internal static fixed bin(17,0) initial dcl 15-15 SS_only_unique internal static fixed bin(17,0) initial dcl 15-15 SS_only_unique_keys internal static fixed bin(17,0) initial dcl 15-15 SS_reg_exp internal static fixed bin(17,0) initial dcl 15-15 SS_string internal static fixed bin(17,0) initial dcl 15-15 SS_unique internal static fixed bin(17,0) initial dcl 15-15 SS_unique_keys internal static fixed bin(17,0) initial dcl 15-15 SS_unset internal static fixed bin(17,0) initial dcl 15-15 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 16-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 16-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 16-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 16-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 16-25 area_dtype internal static fixed bin(17,0) initial dcl 16-25 arg_list_with_envptr based structure level 1 dcl 3-42 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 16-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 16-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 16-25 c_union_dtype internal static fixed bin(17,0) initial dcl 16-25 ca_ptr automatic pointer dcl 5-15 char_argl based structure level 1 dcl 5-9 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 16-25 command_name_arglist based structure level 1 dcl 3-25 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 16-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 16-25 entry_dtype internal static fixed bin(17,0) initial dcl 16-25 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 16-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 16-125 extended_arg_descriptor based structure level 1 dcl 2-21 file_dtype internal static fixed bin(17,0) initial dcl 16-25 fixed_arg_descriptor based structure level 1 dcl 2-13 ft_char_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 16-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 16-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 16-125 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 16-125 label_dtype internal static fixed bin(17,0) initial dcl 16-25 nargs_init automatic fixed bin(17,0) dcl 5-16 nmi_init automatic fixed bin(17,0) dcl 8-48 no_of_candidate_columns automatic fixed bin(17,0) dcl 9-17 nsv_init automatic fixed bin(17,0) dcl 8-48 nui_init automatic fixed bin(17,0) dcl 8-48 offset_dtype internal static fixed bin(17,0) initial dcl 16-25 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 16-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 16-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 16-125 pointer_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_bin_1_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_bin_2_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_4bit_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 16-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 16-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 16-25 rel builtin function dcl 1610 rslt_alloc automatic fixed bin(17,0) dcl 14-34 structure_dtype internal static fixed bin(17,0) initial dcl 16-25 NAMES DECLARED BY EXPLICIT CONTEXT. LOAD_ROWS_EXIT 001162 constant label dcl 411 ref 397 LOAD_TABLE_EXIT 001223 constant label dcl 445 ref 434 NEW_TABLE_EXIT 001071 constant label dcl 366 ref 315 324 329 335 348 SORT_EXIT 002073 constant label dcl 554 ref 479 append_row 002412 constant entry internal dcl 666 ref 928 async_retrieval 000334 constant entry external dcl 90 calc_len 002465 constant entry internal dcl 699 ref 1074 1222 cleanup_table 003064 constant entry internal dcl 764 ref 179 328 614 create_table 002676 constant entry internal dcl 737 ref 358 db_off 000405 constant entry external dcl 143 db_on 000372 constant entry external dcl 124 delete_table 000420 constant entry external dcl 162 get_next_component 003402 constant entry internal dcl 810 ref 671 get_ptr_seg 003535 constant entry internal dcl 841 ref 682 687 get_row 000447 constant entry external dcl 185 info 000536 constant entry external dcl 228 info_for_store 000611 constant entry external dcl 260 initialize 003633 constant entry internal dcl 859 ref 113 178 207 246 306 331 392 432 474 648 linus_table 000270 constant entry external dcl 12 load_one_row 004260 constant entry internal dcl 925 ref 222 363 406 441 load_row_info 004774 constant entry internal dcl 992 ref 678 850 load_rows 001101 constant entry external dcl 371 load_table 001167 constant entry external dcl 416 load_table_info 005062 constant entry internal dcl 1017 ref 253 334 656 load_table_info_for_store 006151 constant entry internal dcl 1145 ref 282 new_table 000653 constant entry external dcl 286 prepare_to_load_rows 007004 constant entry internal dcl 1286 ref 213 362 400 437 retrieve_another 007044 constant entry internal dcl 1305 ref 214 403 440 retrieve_new 007110 constant entry internal dcl 1318 ref 354 select_uses_different_row_designators 007534 constant entry internal dcl 1407 ref 1055 sort 001233 constant entry external dcl 451 store_row 002147 constant entry external dcl 564 store_the_row 007613 constant entry internal dcl 1420 ref 582 terminate 002205 constant entry external dcl 586 translate_query 002326 constant entry external dcl 629 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11050 11200 10223 11060 Length 12050 10223 130 634 624 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_table 810 external procedure is an external procedure. append_row internal procedure shares stack frame of external procedure linus_table. calc_len internal procedure shares stack frame of external procedure linus_table. create_table internal procedure shares stack frame of external procedure linus_table. cleanup_table internal procedure shares stack frame of external procedure linus_table. get_next_component internal procedure shares stack frame of external procedure linus_table. get_ptr_seg internal procedure shares stack frame of external procedure linus_table. initialize internal procedure shares stack frame of external procedure linus_table. load_one_row internal procedure shares stack frame of external procedure linus_table. load_row_info internal procedure shares stack frame of external procedure linus_table. load_table_info internal procedure shares stack frame of external procedure linus_table. load_table_info_for_store internal procedure shares stack frame of external procedure linus_table. prepare_to_load_rows internal procedure shares stack frame of external procedure linus_table. retrieve_another internal procedure shares stack frame of external procedure linus_table. retrieve_new internal procedure shares stack frame of external procedure linus_table. select_uses_different_row_designators internal procedure shares stack frame of external procedure linus_table. store_the_row internal procedure shares stack frame of external procedure linus_table. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 debug_switch linus_table STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_table 000100 arg_descriptor_ptr linus_table 000102 extended_arg_type linus_table 000104 char_ptr linus_table 000106 n_chars_init linus_table 000110 lcb_ptr linus_table 000112 linus_rel_array_ptr linus_table 000114 num_of_rels_init linus_table 000116 si_ptr linus_table 000120 sort_info_ptr linus_table 000122 table_control_ip linus_table 000124 row_value_p linus_table 000126 row_segs_ip linus_table 000130 row_ptrs_p linus_table 000132 init_number_of_descriptors linus_table 000133 rsi_init_max_number_of_seg_ptrs linus_table 000134 store_ap linus_table 000136 table_ip linus_table 000140 ti_init_column_count linus_table 000142 ttn_ptr linus_table 000144 desc_ptr linus_table 000146 num_dims linus_table 000150 rslt_ptr linus_table 000152 ss_field_count linus_table 000154 ss_info_ptr linus_table 000156 retrieval_arg_list_ptr linus_table 000160 arg_list_arg_count linus_table 000161 bit_count linus_table 000162 caller linus_table 000164 char_string_ptr linus_table 000166 component_ptrs_p linus_table 000170 cmpx_float_dec_type linus_table 000171 duplicate_count linus_table 000172 expr_results linus_table 000212 expr_results_ptr linus_table 000214 expression_count linus_table 000215 float_dec_len linus_table 000216 float_dec_type linus_table 000217 icode linus_table 000220 info_area_p linus_table 000222 initial_mrds_vclock linus_table 000224 initial_vclock linus_table 000226 item_index linus_table 000227 keep_from_row linus_table 000230 loop_index linus_table 000231 my_name linus_table 000234 new_component_ptrs_p linus_table 000236 new_row_segs_ip linus_table 000240 prec_len linus_table 000242 retrieve_code_ptr linus_table 000244 row_count_specified linus_table 000245 row_index linus_table 000246 scale_len linus_table 000250 sci_ptr linus_table 000252 sort_desc_array_ptr linus_table 000254 sort_input_ptr linus_table 000256 sort_output_ptr linus_table 000260 target_type linus_table 000262 temp_ptr linus_table 000264 user_item_ptr linus_table 000266 work_area_p linus_table 000432 ltifs_current_index load_table_info_for_store 000433 ltifs_found_the_relation load_table_info_for_store 000434 ltifs_loop load_table_info_for_store 000435 ltifs_relation_index load_table_info_for_store 000436 ltifs_table_name load_table_info_for_store 000504 sudrd_loop select_uses_different_row_designators 000514 str_descriptor_ptr store_the_row 000516 str_current_column_number store_the_row 000517 str_loop store_the_row 000520 str_row_value_ptr store_the_row THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac fl2_to_fx1 shorten_stack ext_entry ceil_fl divide_fx3 log_base_10_ op_alloc_ op_freen_ vclock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. assign_round_ cu_$generate_call delete_$path dsl_$get_rslt_info dsl_$get_temp_info dsl_$retrieve dsl_$store get_pdir_ ioa_ ioa_$rsnnl linus_eval_expr linus_eval_set_func linus_temp_seg_mgr$get_segment linus_temp_seg_mgr$release_segment linus_translate_query$auto mdb_display_data_value$ptr mdbm_util_$binary_data_class mdbm_util_$complex_data_class mdbm_util_$fixed_data_class mdbm_util_$mu_define_area mdbm_util_$number_data_class mdbm_util_$string_data_class mdbm_util_$varying_data_class msf_manager_$close msf_manager_$get_ptr msf_manager_$open release_area_ sort_seg_$linus_table ssu_$abort_line ssu_$print_message unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_table error_table_$noentry linus_error_$no_db linus_error_$no_lila_expr_processed linus_error_$ret_not_valid mrds_data_$max_temp_rels mrds_error_$tuple_not_found sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 36 000237 7 18 000241 13 20 000242 1563 000243 1572 000245 1578 000246 1579 000254 1581 000256 1591 000257 1592 000261 1593 000263 1594 000264 12 000267 85 000276 86 000302 90 000327 107 000345 108 000346 110 000352 113 000356 115 000357 118 000363 121 000370 124 000371 139 000400 140 000403 143 000404 158 000413 159 000415 162 000416 175 000431 176 000435 178 000436 179 000437 181 000440 182 000442 185 000443 203 000462 204 000466 205 000474 207 000475 208 000476 210 000501 211 000504 213 000505 214 000506 215 000507 217 000511 218 000512 220 000513 221 000516 222 000520 223 000521 224 000527 226 000531 228 000532 242 000551 243 000553 244 000555 246 000561 248 000562 252 000573 253 000575 254 000576 257 000601 258 000603 260 000604 279 000624 280 000630 282 000633 284 000645 286 000646 303 000664 304 000670 306 000672 308 000673 309 000702 311 000705 312 000723 314 000730 315 000733 318 000734 319 000736 321 000740 323 000743 324 000746 327 000747 328 000752 329 000753 331 000755 334 000756 335 000757 338 000761 339 000764 340 000766 342 000770 345 001010 347 001015 348 001016 351 001017 354 001050 356 001051 358 001053 360 001054 361 001065 362 001067 363 001070 366 001071 368 001073 371 001074 387 001112 388 001116 389 001121 390 001123 392 001125 394 001126 396 001131 397 001134 400 001135 402 001136 403 001147 404 001150 406 001152 407 001153 409 001160 411 001162 413 001164 416 001165 429 001200 430 001204 432 001206 434 001207 437 001212 439 001213 440 001216 441 001217 443 001222 445 001223 448 001230 451 001231 469 001244 470 001250 471 001253 472 001260 474 001261 476 001262 478 001267 479 001272 482 001273 483 001275 484 001306 486 001314 487 001320 488 001322 489 001324 490 001335 491 001337 493 001342 494 001351 495 001356 498 001367 499 001371 503 001375 505 001401 507 001405 508 001411 509 001413 511 001435 513 001437 514 001473 515 001476 516 001505 518 001512 519 001514 520 001525 522 001537 523 001541 524 001560 525 001567 527 001622 529 001644 530 001647 531 001651 535 001744 537 001746 539 001751 540 001761 542 002010 543 002012 544 002015 545 002025 547 002031 548 002033 549 002034 550 002043 552 002071 554 002073 556 002105 557 002115 558 002127 560 002137 561 002141 564 002142 572 002164 582 002170 584 002202 586 002203 600 002216 601 002222 603 002223 605 002227 606 002231 607 002233 609 002235 611 002244 614 002246 616 002247 618 002254 619 002256 620 002265 624 002316 625 002321 626 002323 629 002324 644 002341 645 002343 646 002345 648 002351 650 002352 651 002370 655 002401 656 002403 657 002404 660 002407 661 002411 666 002412 671 002413 678 002422 680 002431 682 002433 684 002441 687 002443 691 002451 693 002460 694 002461 696 002464 699 002465 708 002467 709 002471 710 002474 712 002516 714 002537 717 002567 718 002572 720 002606 722 002622 725 002626 729 002651 730 002652 732 002655 734 002675 737 002676 740 002677 742 002725 745 002742 748 002772 750 002777 754 003042 755 003044 757 003050 758 003052 759 003061 761 003063 764 003064 767 003065 768 003066 769 003071 771 003072 773 003075 774 003104 775 003121 777 003123 778 003156 781 003203 783 003205 785 003211 787 003223 790 003256 792 003304 793 003306 797 003314 799 003321 800 003323 801 003332 803 003357 807 003401 810 003402 812 003403 814 003410 816 003413 817 003422 818 003431 822 003433 827 003454 832 003524 834 003526 836 003533 838 003534 841 003535 845 003537 847 003573 850 003615 853 003622 854 003624 855 003631 856 003632 859 003633 871 003634 872 003637 874 003644 877 003676 878 003700 879 003701 881 003703 882 003706 884 003712 886 003745 889 003773 892 004025 895 004053 898 004056 899 004061 901 004065 903 004124 906 004152 909 004204 912 004232 915 004235 916 004240 918 004247 919 004251 921 004254 922 004257 925 004260 928 004261 930 004262 931 004273 932 004274 934 004322 937 004327 940 004355 944 004356 946 004362 949 004406 953 004411 957 004446 965 004555 971 004626 973 004661 974 004662 982 004740 984 004757 985 004761 986 004766 989 004773 992 004774 994 004775 996 005002 997 005004 998 005014 999 005016 1001 005025 1002 005026 1006 005027 1009 005034 1010 005044 1011 005053 1013 005056 1014 005061 1017 005062 1022 005063 1030 005075 1032 005107 1033 005112 1034 005125 1038 005127 1039 005130 1043 005133 1045 005137 1047 005141 1048 005143 1049 005144 1050 005156 1055 005160 1057 005203 1061 005324 1065 005327 1066 005337 1069 005365 1073 005413 1074 005420 1077 005434 1079 005442 1083 005443 1084 005444 1087 005515 1090 005537 1092 005545 1094 005547 1096 005550 1098 005576 1103 005603 1106 005614 1109 005624 1113 005635 1115 005637 1119 005641 1120 005651 1121 005663 1122 005665 1125 005715 1130 005772 1133 006103 1135 006105 1136 006107 1137 006111 1138 006113 1139 006135 1141 006145 1143 006150 1145 006151 1161 006153 1162 006157 1163 006161 1165 006162 1167 006164 1168 006167 1171 006170 1174 006200 1176 006230 1178 006233 1179 006234 1181 006241 1182 006243 1184 006255 1186 006265 1187 006267 1189 006271 1191 006273 1197 006315 1199 006330 1202 006334 1203 006336 1204 006351 1205 006352 1207 006353 1209 006355 1210 006356 1211 006357 1212 006360 1214 006362 1215 006371 1217 006431 1220 006436 1222 006440 1224 006451 1227 006462 1229 006464 1230 006466 1232 006470 1233 006472 1237 006477 1238 006504 1240 006507 1241 006530 1242 006533 1243 006535 1244 006537 1245 006543 1249 006545 1250 006566 1251 006610 1252 006615 1253 006620 1254 006624 1255 006627 1256 006650 1260 006656 1261 006660 1262 006663 1263 006665 1264 006667 1265 006673 1270 006702 1271 006713 1272 006720 1273 006742 1275 006760 1277 006774 1279 006776 1280 007001 1282 007003 1286 007004 1288 007005 1289 007007 1290 007011 1291 007013 1292 007016 1293 007023 1295 007025 1297 007030 1298 007033 1300 007040 1302 007043 1305 007044 1307 007045 1310 007055 1311 007072 1313 007074 1315 007107 1318 007110 1329 007111 1330 007113 1331 007133 1333 007141 1334 007157 1335 007161 1336 007163 1337 007167 1338 007171 1340 007176 1341 007202 1344 007213 1345 007216 1348 007224 1349 007230 1350 007233 1355 007241 1357 007253 1359 007263 1361 007301 1364 007303 1365 007305 1368 007321 1370 007335 1372 007355 1375 007400 1376 007412 1378 007416 1379 007417 1381 007421 1383 007424 1384 007442 1388 007457 1391 007467 1392 007504 1394 007506 1399 007521 1400 007524 1402 007527 1403 007532 1404 007533 1407 007534 1411 007536 1412 007547 1414 007606 1416 007610 1420 007613 1437 007615 1438 007620 1439 007626 1440 007627 1442 007631 1443 007641 1444 007643 1446 007660 1447 007662 1454 007706 1461 007752 1463 007754 1464 007774 1466 010000 ----------------------------------------------------------- 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