COMPILATION LISTING OF SEGMENT linus_options Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/02/86 1515.3 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(86-08-18,JSLove), approve(86-08-18,MCR7518), 10* audit(86-08-21,Parisek), install(86-10-02,MR12.0-1175): 11* Changed to call match_star_name_ instead of linus_match_star_name. 12* Linus_match_star_name was deleted when the new match_star_name_ was 13* installed. 14* END HISTORY COMMENTS */ 15 16 17 /* format: off */ 18 19 linus_options: proc; 20 21 /* 22* 23* This module provides an interface to the options used in formatting 24* reports. The following external entry points in order of appearance 25* are available: 26* 27* initialize 28* 29* Called by all format related requests when they are invoked. 30* It takes care of making sure everything is up to date, allocated, etc. 31* 32* terminate 33* 34* Called by linus termination code if lcb.report_control_info_ptr is 35* non-null. It takes care of undoing everything this subroutine does 36* during the course of a linus session. 37* 38* check_identifier 39* 40* Called to check a column/option identifier. Translates an option name 41* and option identifier into a character string consisting of the option 42* name and real option identifier (i.e. translates 1 into the name of 43* column 1.) Can also be used to determine if the column name is a star 44* name. 45* 46* check_name 47* 48* Called to check an option name, expand the short option name into a 49* long name, and determine if it needs a column/option identifier. 50* 51* get 52* 53* Called to get the value of a formatting option. 54* 55* get_active 56* 57* Called to get the names and values of the active formatting 58* options. 59* 60* get_all 61* 62* Called to get the names and values of all of the formatting 63* options. 64* 65* get_named 66* 67* Called to get the names and values of a set of formatting options. The 68* options are named by the caller, but the names of columns can be names, 69* star names or numbers. The names returned by this module are actual 70* column names instead of numbers or star names. 71* 72* set_and_check 73* 74* Called to set a formatting option to a provided value. The option 75* name and value are checked for validity. 76* 77* set_all_to_system_defaults 78* 79* Called to set all of the formatting options to their default 80* values. 81* 82* 83* 84* Known Bugs: 85* 86* Other Problems: 87* 88* History: 89* 90* Written - Al Dupuis - August 1983 91* 92* 93**/ 94 95 96 /* These parameters are described at each entry where they are used. */ 97 98 dcl code_parm fixed bin (35) parm; 99 dcl identifier_needed_parm bit (1) aligned parm; 100 dcl lcb_ptr_parm ptr parm; 101 dcl long_option_name_parm char (*) varying parm; 102 dcl names_and_values_info_ptr_parm ptr parm; 103 dcl names_and_values_ptr_parm ptr parm; 104 dcl no_of_names_and_values_parm fixed bin (21) parm; 105 dcl no_of_options_in_name_table_parm fixed bin (21) parm; 106 dcl normalized_option_name_parm char (*) varying parm; 107 dcl option_identifier_parm char (*) varying parm; 108 dcl option_name_parm char (*) varying parm; 109 dcl option_name_table_ptr_parm ptr parm; 110 dcl option_value_parm char (*) varying parm; 111 dcl size_of_names_and_values_parm fixed bin (21) parm; 112 dcl system_default_parm bit (1) aligned parm; 113 114 call ssu_$abort_line (lcb.subsystem_control_info_ptr, 0, 115 "This is not a valid entrypoint."); 116 117 initialize: entry ( 118 119 lcb_ptr_parm, /* input: pointer to the linus control block */ 120 code_parm /* output: success or failure */ 121 ); 122 123 /* 124* 125* This entry point is called by the display, set_format_options, 126* list_format_options, save_format_options and restore_format_options 127* requests when they are invoked. It is not called by column_value or 128* display_builtins, and should not be called by any future active requests 129* like column_value when they are implemented. This code makes sure that: 130* 131* 1) The linus options value seg is created; that the value seg is loaded 132* with the system defaults; that 3 areas for allocations are created; and 133* that 9 temp segments are created. This is done once per linus invocation. 134* 135* 2) That the area used for allocations of name value pairs is emptied. 136* This is done once per invocation of this entrypoint. 137* 138* 3) That the options which refer to columns are up to date. This means 139* deleting the old column options and loading the value seg with the new 140* column default options if the user has done a lila proc since the last 141* time this entry was called, or deleting the old column options if the 142* user has done an unsuccessful lila proc since the last time this entry 143* was called. 144* 145**/ 146 147 me = "linus_options$initialize"; 148 lcb_ptr = lcb_ptr_parm; 149 code_parm = 0; 150 151 if lcb.report_control_info_ptr = null () 152 then do; 153 call setup_to_do_reporting; 154 lcb.report_control_info_ptr = report_cip; 155 call load_value_seg_with_report_defaults; 156 end; 157 158 call housekeeping; 159 temp_seg_ptr = names_and_values_area_ptr; 160 call release_area_ (temp_seg_ptr); 161 162 if lcb.selection_expression_identifier = 0 163 then return; 164 165 /* 166* 167* If we are out of date, or, there is no valid lila expression available 168* but the column options are still around, then delete the column 169* options. Then if there is a valid lila selection expression available, 170* load the new column default values. 171* 172**/ 173 174 if report_control_info.selection_expression_identifier 175 ^= lcb.selection_expression_identifier 176 | ^valid_selection_expression 177 then do; 178 call value_$get (value_seg_ptr, PERMANENT, 179 OPTIONS.GENERAL_COLUMN.NAME (1), returned_option_value, code); 180 if code = 0 181 then call delete_column_options; 182 else if code ^= error_table_$oldnamerr 183 then call ssu_$abort_line (sci_ptr, code, 184 "While trying to get the value of ^a for ^a.", 185 OPTIONS.GENERAL_COLUMN.NAME (1), me); 186 else; 187 end; 188 189 if report_control_info.selection_expression_identifier 190 ^= lcb.selection_expression_identifier 191 & valid_selection_expression 192 then call load_value_seg_with_column_defaults; 193 194 return; 195 196 terminate: entry ( 197 198 lcb_ptr_parm, /* input: ptr to the linus control block */ 199 code_parm /* output: success or failure */ 200 ); 201 202 /* 203* 204* This entry point is called by the linus termination procedure when the 205* linus user has issued the "quit" request, or cleanup of linus has been 206* signalled. It deletes the value segment and releases areas and temp 207* segs set up in the setup_to_do_reporting proc. It also deletes the copy 208* of the report if one is still laying around (i.e. the display request 209* was invoked with "-keep_report" and linus was quit out of before display 210* was invoked again). 211* 212**/ 213 214 /* Have to use this name or temp segs won't be released. */ 215 216 me = "linus_options$initialize"; 217 218 lcb_ptr = lcb_ptr_parm; 219 code_parm = 0; 220 sci_ptr = lcb.subsystem_control_info_ptr; 221 222 report_cip = lcb.report_control_info_ptr; 223 if report_control_info.flags.permanent_report 224 then do; 225 call linus_fr_delete_report (lcb_ptr, code); 226 if code ^= 0 227 then call ssu_$print_message (sci_ptr, code, 228 "While trying to delete the copy of the report."); 229 end; 230 231 /* Delete the value seg. */ 232 233 call delete_$ptr (report_control_info.value_seg_ptr, 234 "100111"b, me, code); 235 if code ^= 0 236 then call ssu_$print_message (sci_ptr, code, 237 "While trying to delete the format options."); 238 239 /* Then the area/temp seg for name value allocations. */ 240 241 temp_seg_ptr = report_control_info.name_value_area_ptr; 242 call release_area_ (temp_seg_ptr); 243 call release_temp_segment (report_control_info.name_value_area_ptr); 244 245 /* The temp seg for arrays of name-value pairs. */ 246 247 call release_temp_segment (report_control_info.name_value_temp_seg_ptr); 248 249 /* The temp seg for report workspace. */ 250 251 call release_temp_segment (report_control_info.report_temp_seg_ptr); 252 253 /* The temp seg and area for display workspace. */ 254 255 temp_seg_ptr = report_control_info.display_work_area_ptr; 256 call release_area_ (temp_seg_ptr); 257 call release_temp_segment (report_control_info.display_work_area_ptr); 258 259 /* The temp seg and area for report allocations. */ 260 261 temp_seg_ptr = report_control_info.report_work_area_ptr; 262 call release_area_ (temp_seg_ptr); 263 call release_temp_segment (report_control_info.report_work_area_ptr); 264 265 /* And the 4 temp segs for report building workspace. */ 266 267 call release_temp_segment (report_control_info.input_string_temp_seg_ptr); 268 call release_temp_segment (report_control_info.output_string_temp_seg_ptr); 269 call release_temp_segment (report_control_info.editing_strings_temp_seg_ptr); 270 call release_temp_segment (report_control_info.headers_temp_seg_ptr); 271 272 return; 273 274 check_identifier: entry ( 275 276 lcb_ptr_parm, /* input: ptr to linus control block */ 277 option_name_parm, /* input: option name to look up */ 278 option_identifier_parm, /* input: option identifier to look up */ 279 normalized_option_name_parm, /* output: the option name and identifier */ 280 code_parm /* output: success or failure */ 281 ); 282 283 /* 284* 285* This entry is called to translate an option name and identifier into 286* a character string that contains the option name and real option 287* identifier. That is, an option identifier can be a number or the name 288* of a column. The returned option identifier is always the name of the 289* column. The option_name_parm should be the expanded version, as this 290* entry shouldn't be called until the check_name entry was called. This 291* entry does not support star names, but is useful for determining if 292* the identifier is a star name. 293* 294**/ 295 296 me = "linus_options$check_identifier"; 297 lcb_ptr = lcb_ptr_parm; 298 option_name = option_name_parm; 299 option_identifier = option_identifier_parm; 300 normalized_option_name_parm = ""; 301 code_parm = 0; 302 303 call housekeeping; 304 305 call normalize_option_name (option_name, option_identifier, 306 option_type, option_table_index, normalized_option_name, code); 307 code_parm = code; 308 normalized_option_name_parm = normalized_option_name; 309 310 return; 311 312 check_name: entry ( 313 314 lcb_ptr_parm, /* input: ptr to linus control block */ 315 option_name_parm, /* input: option name to determine type of */ 316 long_option_name_parm, /* output: long version of above name */ 317 identifier_needed_parm, /* output: ON means identifier needed */ 318 code_parm /* output: success or failure */ 319 ); 320 321 /* 322* 323* This entry point is called to check an option name and determine the 324* type of option the caller is dealing with. There are two types of 325* options. Ones like "-page_size" (general report or general column 326* options) which do not require anything else to identify them. For these 327* types "0"b is returned to describe their type. Others like "-width" 328* (specific column options) require a column number or name to identify 329* which they apply to. For these types "1"b is returned. The short or 330* long name provided is used to find the long name of the option and this 331* long name is returned. 332* 333**/ 334 335 me = "linus_options$check_name"; 336 lcb_ptr = lcb_ptr_parm; 337 option_name = option_name_parm; 338 long_option_name_parm = ""; 339 identifier_needed_parm = OFF; 340 code_parm = 0; 341 342 call housekeeping; 343 344 call expand_short_option_name (option_name, long_option_name, code); 345 if code ^= 0 346 then do; 347 code_parm = code; 348 return; 349 end; 350 else long_option_name_parm = long_option_name; 351 352 call lookup_option_number (long_option_name, 353 option_type, option_table_index); 354 if option_type = SPECIFIC_COLUMN_OPTION 355 then identifier_needed_parm = ON; 356 else; 357 358 if ^valid_selection_expression 359 then if (option_type = GENERAL_COLUMN_OPTION 360 | option_type = SPECIFIC_COLUMN_OPTION) 361 then code_parm = linus_error_$no_lila_expr_processed; 362 else; 363 else; 364 365 return; 366 367 get: entry ( 368 369 lcb_ptr_parm, /* input: ptr to the linus control block */ 370 option_name_parm, /* input: option name to get value for */ 371 option_identifier_parm, /* input: option identifier for name */ 372 normalized_option_name_parm, /* output: the option name and identifier */ 373 option_value_parm, /* output: option value defined for name */ 374 code_parm /* output: success or failure */ 375 ); 376 377 /* 378* 379* This entry point is called by subroutines and requests. It 380* attempts to get the option value associated with the caller provided 381* option name. For option names that require an identifier, the option 382* name concatenated with a blank and the real option identifier is also 383* returned. That is, column names rather than numbers are always returned. 384* 385**/ 386 387 me = "linus_options$get"; 388 389 lcb_ptr = lcb_ptr_parm; 390 option_name = option_name_parm; 391 option_identifier = option_identifier_parm; 392 393 normalized_option_name_parm = ""; 394 option_value_parm = ""; 395 code_parm = 0; 396 397 call housekeeping; 398 399 call normalize_option_name (option_name, 400 option_identifier, option_type, option_table_index, 401 normalized_option_name, code); 402 if code ^= 0 403 then do; 404 code_parm = code; 405 return; 406 end; 407 408 409 call value_$get (value_seg_ptr, PERMANENT, 410 normalized_option_name, option_value, code); 411 if code ^= 0 412 then call ssu_$abort_line (sci_ptr, code, 413 "While trying to get the value for ^a.", 414 normalized_option_name_parm); 415 416 normalized_option_name_parm = normalized_option_name; 417 option_value_parm = option_value; 418 419 return; 420 421 get_active: entry ( 422 423 lcb_ptr_parm, /* input: ptr to the linus control block */ 424 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 425 no_of_names_and_values_parm, /* output: no of name-value pairs */ 426 names_and_values_ptr_parm, /* output: ptr to the names and values */ 427 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 428 code_parm /* output: success or failure */ 429 ); 430 431 /* 432* 433* This entrypoint is called by the linus list_format_options and 434* save_format_options requests to get all the active formatting option 435* names and values. They are returned as a character string, along 436* with a structure which describes the character string. 437* 438**/ 439 440 me = "linus_options$get_active"; 441 lcb_ptr = lcb_ptr_parm; 442 names_and_values_info_ptr_parm = null (); 443 no_of_names_and_values_parm = 0; 444 names_and_values_ptr_parm = null (); 445 size_of_names_and_values_parm = 0; 446 code_parm = 0; 447 448 call housekeeping; 449 450 call get_all_names_and_values; 451 call extract_active_from_all; 452 453 names_and_values_info_ptr_parm = like_names_and_values_info_ptr; 454 no_of_names_and_values_parm = no_of_active_names_and_values; 455 names_and_values_ptr_parm = names_and_values_ptr; 456 size_of_names_and_values_parm = size_of_names_and_values; 457 458 return; 459 460 get_all: entry ( 461 462 lcb_ptr_parm, /* input: ptr to the linus control block */ 463 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 464 no_of_names_and_values_parm, /* output: no of name-value pairs */ 465 names_and_values_ptr_parm, /* output: ptr to the names and values */ 466 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 467 code_parm /* output: success or failure */ 468 ); 469 470 /* 471* 472* This entrypoint is called by the linus list_format_options and 473* save_format_options requests to get all of the formatting option names 474* and values. They are returned as a character string, along with a 475* structure which describes the character string. 476* 477**/ 478 479 me = "linus_options$get_all"; 480 lcb_ptr = lcb_ptr_parm; 481 names_and_values_info_ptr_parm = null (); 482 no_of_names_and_values_parm = 0; 483 names_and_values_ptr_parm = null (); 484 size_of_names_and_values_parm = 0; 485 code_parm = 0; 486 487 call housekeeping; 488 489 call get_all_names_and_values; 490 491 names_and_values_info_ptr_parm = names_and_values_info_ptr; 492 no_of_names_and_values_parm = no_of_names_and_values; 493 names_and_values_ptr_parm = names_and_values_ptr; 494 size_of_names_and_values_parm = size_of_names_and_values; 495 496 return; 497 498 get_named: entry ( 499 500 lcb_ptr_parm, /* input: ptr to the linus control block */ 501 option_name_table_ptr_parm, /* input: an array of option names and identifiers */ 502 no_of_options_in_name_table_parm, /* input: no of option names */ 503 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 504 no_of_names_and_values_parm, /* output: no of name value pairs */ 505 names_and_values_ptr_parm, /* output: ptr to the names and values */ 506 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 507 code_parm /* output: success or failure */ 508 ); 509 510 /* 511* 512* This entrypoint is called by the linus save_format_options and 513* list_format_options requests. It takes an array of names as input and 514* creates a character string containing all of the names and values, along 515* with a structure which describes the character string. 516* 517**/ 518 519 me = "linus_options$get_named"; 520 lcb_ptr = lcb_ptr_parm; 521 option_name_table_ptr = option_name_table_ptr_parm; 522 no_of_options_in_name_table = no_of_options_in_name_table_parm; 523 names_and_values_info_ptr_parm = null(); 524 no_of_names_and_values_parm = 0; 525 names_and_values_ptr_parm = null (); 526 size_of_names_and_values_parm = 0; 527 code_parm = 0; 528 529 call housekeeping; 530 531 call get_named_values (code); 532 if code ^= 0 533 then code_parm = code; 534 else do; 535 names_and_values_info_ptr_parm = names_and_values_info_ptr; 536 no_of_names_and_values_parm = no_of_names_and_values; 537 names_and_values_ptr_parm = names_and_values_ptr; 538 size_of_names_and_values_parm = size_of_names_and_values; 539 end; 540 541 return; 542 543 set_and_check: entry ( 544 545 lcb_ptr_parm, /* input: ptr to linus control block */ 546 option_name_parm, /* input: option name to set value for */ 547 option_identifier_parm, /* input: option identifier for name */ 548 option_value_parm, /* input: option value to set */ 549 system_default_parm, /* input: on = set value to system default */ 550 code_parm /* output: success or failure */ 551 ); 552 553 /* 554* 555* This entry point is called by the set_format_options request to set a user 556* specified option name to either a user provided option value or the system 557* provided default. It first makes sure that the option name is valid. The 558* caller should have first called the check_name entry of this 559* suboutine and had the option name expanded and checked at that time. If 560* the user has requested that it be set to the system default value, it sets 561* it from system tables. Otherwise it determines if the value is legitimate 562* for the particular option. It is then set if the value is correct. 563* 564**/ 565 566 me = "linus_options$set_and_check"; 567 lcb_ptr = lcb_ptr_parm; 568 option_name = option_name_parm; 569 option_identifier = option_identifier_parm; 570 option_value = option_value_parm; 571 system_default = system_default_parm; 572 code_parm = 0; 573 574 call housekeeping; 575 576 call set_the_values (option_name, option_identifier, 577 option_value, system_default, code); 578 code_parm = code; 579 580 return; 581 582 set_all_to_system_defaults: entry ( 583 584 lcb_ptr, /* input: ptr to linus control block */ 585 code_parm /* output: success or failure */ 586 ); 587 588 /* 589* 590* This entrypoint is called by the set_format_options request to set all 591* of the formatting options to the system provided defaults. It first 592* sets the general report options. It then sets the general and specific 593* column options if a valid lila statement is available. If there are old 594* column options hanging around they are deleted before the set operation. 595* 596**/ 597 598 me = "linus_options$set_all_to_system_defaults"; 599 lcb_ptr = lcb_ptr_parm; 600 code_parm = 0; 601 602 call housekeeping; 603 call load_value_seg_with_report_defaults; 604 605 if ^valid_selection_expression 606 then return; 607 608 call value_$get (value_seg_ptr, PERMANENT, 609 OPTIONS.GENERAL_COLUMN.NAME (1), returned_option_value, code); 610 if code = 0 611 then call delete_column_options; 612 else if code ^= error_table_$oldnamerr 613 then call ssu_$abort_line (sci_ptr, code, 614 "While trying to get the value of ^a for ^a.", 615 OPTIONS.GENERAL_COLUMN.NAME (1), me); 616 else; 617 618 call load_value_seg_with_column_defaults; 619 620 return; 621 622 delete_column_options: proc; 623 624 /* 625* 626* This proc is called to delete the column option names and values so that 627* leftover column options from another select don't get confused with the 628* current column options. If it runs into trouble the line is aborted 629* here because reporting can't possibly continue. 630* 631**/ 632 633 dcl dco_inner_loop fixed bin; 634 dcl dco_loop fixed bin; 635 636 alloc_name_count = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE 637 + NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 638 alloc_max_name_len = max (LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH, 639 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH) 640 + length (BLANK) + length (STAR_DOT_STAR_STAR); 641 allocate match_info in (names_and_values_area) 642 set (match_info_ptr); 643 match_info.version = match_info_version_1; 644 645 do dco_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 646 647 match_info.name_array.exclude_sw (dco_loop) = OFF; 648 match_info.name_array.regexp_sw (dco_loop) = OFF; 649 match_info.name_array.name (dco_loop) 650 = OPTIONS.GENERAL_COLUMN.NAME (dco_loop); 651 652 end; 653 654 dco_inner_loop = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE + 1; 655 656 do dco_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 657 658 match_info.name_array.exclude_sw (dco_inner_loop) = OFF; 659 match_info.name_array.regexp_sw (dco_inner_loop) = OFF; 660 match_info.name_array.name (dco_inner_loop) = 661 OPTIONS.SPECIFIC_COLUMN.NAME (dco_loop) 662 || BLANK || STAR_DOT_STAR_STAR; 663 dco_inner_loop = dco_inner_loop + 1; 664 665 end; 666 667 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 668 names_and_values_area_ptr, value_list_info_ptr, code); 669 if code ^= 0 670 then call ssu_$abort_line (sci_ptr, code, 671 "^a", "While trying to get the option names for the columns."); 672 673 do dco_loop = 1 to value_list_info.pair_count; 674 675 call value_$delete (value_seg_ptr, PERMANENT, 676 substr (value_list_info.chars, 677 value_list_info.pairs.name_index (dco_loop), 678 value_list_info.pairs.name_len (dco_loop)), code); 679 if code ^= 0 680 then call ssu_$abort_line (sci_ptr, code, 681 "While trying to delete the value of ^a.", 682 substr (value_list_info.chars, 683 value_list_info.pairs.name_index (dco_loop), 684 value_list_info.pairs.name_len (dco_loop))); 685 686 end; 687 688 report_control_info.options_identifier = 689 report_control_info.options_identifier + 1; 690 691 return; 692 693 end delete_column_options; 694 695 expand_short_option_name: proc ( 696 697 eson_option_name_parm, /* input: option name to expand */ 698 eson_long_option_name_parm, /* output: long version of option name */ 699 eson_code_parm /* output: success or failure */ 700 ); 701 702 /* 703* 704* When this proc is called it expects eson_option_name_parm to contain the 705* short or long option name. It sets eson_long_option_name_parm based on 706* the value of eson_option_name_parm. If the name isn't valid it sets 707* eson_code_parm to reflect this. It first does a binary table search on 708* the short_names table and if it's unsucessful it does the same to the 709* long_names table. 710* 711**/ 712 713 dcl eson_code_parm fixed bin (35) parm; 714 dcl eson_long_option_name_parm char (*) varying parm; 715 dcl eson_option_name_parm char (*) varying parm; 716 dcl eson_table_index fixed bin; 717 718 eson_long_option_name_parm = ""; 719 eson_code_parm = 0; 720 721 eson_table_index = lookup_name_from_table (eson_option_name_parm, 722 OPTION_NAMES_AS_ARGS.SHORT_NAME); 723 if eson_table_index ^= 0 724 then do; 725 eson_long_option_name_parm = OPTION_NAMES_AS_ARGS. 726 LONG_NAME_IN_SHORT_NAME_ORDER (eson_table_index); 727 return; 728 end; 729 730 eson_table_index = lookup_name_from_table (eson_option_name_parm, 731 OPTION_NAMES_AS_ARGS.LONG_NAME); 732 if eson_table_index ^= 0 733 then eson_long_option_name_parm = eson_option_name_parm; 734 else eson_code_parm = linus_error_$bad_option_name; 735 736 return; 737 738 lookup_name_from_table: proc ( 739 740 lnft_name_parm, /* input: name to look up */ 741 lnft_table_parm /* output: table to do lookup from */ 742 ) returns (fixed bin); 743 744 dcl lnft_loop1 fixed bin; 745 dcl lnft_loop2 fixed bin; 746 dcl lnft_loop3 fixed bin; 747 dcl lnft_name_parm char (*) varying parm; 748 dcl lnft_table_parm (*) char (*) varying parm; 749 750 lnft_loop1 = 1; 751 lnft_loop2 = hbound (lnft_table_parm, 1); 752 753 do while (lnft_loop1 <= lnft_loop2); 754 755 lnft_loop3 = divide (lnft_loop1 + lnft_loop2, 2, 17); 756 if lnft_name_parm = lnft_table_parm (lnft_loop3) 757 then return (lnft_loop3); 758 759 if lnft_name_parm < lnft_table_parm (lnft_loop3) 760 then lnft_loop2 = lnft_loop3 - 1; 761 else lnft_loop1 = lnft_loop3 + 1; 762 763 end; 764 765 return (0); 766 767 end lookup_name_from_table; 768 769 end expand_short_option_name; 770 771 extract_active_from_all: proc; 772 773 /* 774* 775* This proc is called by the entry get_active to extract the names and 776* values from the value list structures that are considered active. It 777* expects that get_all_names_and_values has just been called, and moves the 778* index and length of each name and value considered active, into a 779* structure returned to the caller of the get_active entrypoint. 780* 781**/ 782 783 dcl eafa_inner_loop fixed bin; 784 dcl eafa_loop fixed bin; 785 786 no_of_names_and_values_in_bit_map = no_of_names_and_values; 787 no_of_active_names_and_values = no_of_names_and_values; 788 789 allocate names_and_values_bit_map in (names_and_values_area) 790 set (names_and_values_bit_map_ptr); 791 unspec (names_and_values_bit_map) = OFF; 792 793 do eafa_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 794 795 if report_control_info.format_options_flags. 796 general_report_default_value (eafa_loop) 797 then do; 798 names_and_values_bit_map (eafa_loop) = ON; 799 no_of_active_names_and_values = 800 no_of_active_names_and_values - 1; 801 end; 802 803 end; 804 805 if valid_selection_expression 806 then do; 807 eafa_inner_loop = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE + 1; 808 do eafa_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 809 if report_control_info.format_options_flags 810 .general_column_default_value (eafa_loop) 811 then do; 812 names_and_values_bit_map (eafa_inner_loop) = ON; 813 no_of_active_names_and_values = 814 no_of_active_names_and_values - 1; 815 end; 816 eafa_inner_loop = eafa_inner_loop + 1; 817 end; 818 end; 819 820 allocate like_name_value_info in (names_and_values_area) 821 set (like_names_and_values_info_ptr); 822 823 eafa_inner_loop = 1; 824 825 do eafa_loop = 1 to no_of_names_and_values_in_bit_map; 826 if names_and_values_bit_map (eafa_loop) = OFF 827 then do; 828 like_name_value_info.name.index (eafa_inner_loop) = 829 name_value_info.name.index (eafa_loop); 830 like_name_value_info.name.length (eafa_inner_loop) = 831 name_value_info.name.length (eafa_loop); 832 like_name_value_info.value.index (eafa_inner_loop) = 833 name_value_info.value.index (eafa_loop); 834 like_name_value_info.value.length (eafa_inner_loop) = 835 name_value_info.value.length (eafa_loop); 836 eafa_inner_loop = eafa_inner_loop + 1; 837 end; 838 end; 839 840 return; 841 842 end extract_active_from_all; 843 844 get_all_names_and_values: proc; 845 846 /* 847* 848* This proc is called to obtain all of the names and values. It first gets 849* the general report options. Then, if there are column options defined, 850* the general column options are gotten, followed by the specific column 851* options. 852* 853**/ 854 855 dcl ganav_inner_loop fixed bin; 856 dcl ganav_loop fixed bin; 857 dcl ganav_loop_limit fixed bin; 858 dcl ganav_no_of_chars_already_done fixed bin (21); 859 860 /* Get the names and values for the general report options. */ 861 862 alloc_name_count = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 863 alloc_max_name_len = LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH; 864 allocate match_info in (names_and_values_area) set (match_info_ptr); 865 match_info.version = match_info_version_1; 866 867 do ganav_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 868 869 match_info.name_array.exclude_sw (ganav_loop) = OFF; 870 match_info.name_array.regexp_sw (ganav_loop) = OFF; 871 match_info.name_array.name (ganav_loop) 872 = OPTIONS.GENERAL_REPORT.NAME (ganav_loop); 873 874 end; 875 876 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 877 names_and_values_area_ptr, value_list_info_ptr, code); 878 if code ^= 0 879 then call ssu_$abort_line (sci_ptr, code, 880 "^/While trying to get the report option names and values."); 881 882 general_report_names_and_values_info_ptr = value_list_info_ptr; 883 884 /* Get the names and values for the general and specific column options. */ 885 886 if valid_selection_expression 887 then do; 888 889 alloc_name_count = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 890 alloc_max_name_len = LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH; 891 allocate match_info in (names_and_values_area) 892 set (match_info_ptr); 893 match_info.version = match_info_version_1; 894 895 do ganav_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 896 897 match_info.name_array.exclude_sw (ganav_loop) = OFF; 898 match_info.name_array.regexp_sw (ganav_loop) = OFF; 899 match_info.name_array.name (ganav_loop) 900 = OPTIONS.GENERAL_COLUMN.NAME (ganav_loop); 901 902 end; 903 904 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 905 names_and_values_area_ptr, value_list_info_ptr, code); 906 if code ^= 0 907 then call ssu_$abort_line (sci_ptr, code, 908 "^/While trying to get the general column option names and values."); 909 910 general_columns_names_and_values_info_ptr = value_list_info_ptr; 911 912 alloc_name_count = NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 913 alloc_max_name_len = LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH 914 + length (BLANK) + length (STAR_DOT_STAR_STAR); 915 allocate match_info in (names_and_values_area) 916 set (match_info_ptr); 917 match_info.version = match_info_version_1; 918 919 do ganav_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 920 921 match_info.name_array.exclude_sw (ganav_loop) = OFF; 922 match_info.name_array.regexp_sw (ganav_loop) = OFF; 923 match_info.name_array.name (ganav_loop) 924 = OPTIONS.SPECIFIC_COLUMN.NAME (ganav_loop) 925 || BLANK || STAR_DOT_STAR_STAR; 926 927 end; 928 929 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 930 names_and_values_area_ptr, value_list_info_ptr, code); 931 if code ^= 0 932 then call ssu_$abort_line (sci_ptr, code, 933 "While trying to get the specific column option names and values."); 934 935 specific_columns_names_and_values_info_ptr = value_list_info_ptr; 936 937 end; 938 939 /* Set the number of options we have and the length of them. */ 940 941 if valid_selection_expression 942 then size_of_names_and_values = 943 general_report_names_and_values_info_ptr -> value_list_info.chars_len 944 + general_columns_names_and_values_info_ptr -> value_list_info.chars_len 945 + specific_columns_names_and_values_info_ptr -> value_list_info.chars_len; 946 else size_of_names_and_values = 947 general_report_names_and_values_info_ptr -> value_list_info.chars_len; 948 allocate names_and_values in (names_and_values_area) 949 set (names_and_values_ptr); 950 951 if valid_selection_expression 952 then no_of_names_and_values = 953 general_report_names_and_values_info_ptr -> value_list_info.pair_count 954 + general_columns_names_and_values_info_ptr -> value_list_info.pair_count 955 + specific_columns_names_and_values_info_ptr -> value_list_info.pair_count; 956 else no_of_names_and_values = 957 general_report_names_and_values_info_ptr -> value_list_info.pair_count; 958 allocate name_value_info in (names_and_values_area) 959 set (names_and_values_info_ptr); 960 961 /* Move the general report options and their lengths and index 962* into the callers table. */ 963 964 value_list_info_ptr = general_report_names_and_values_info_ptr; 965 substr (names_and_values, 1, value_list_info.chars_len) 966 = value_list_info.chars; 967 968 do ganav_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 969 970 name_value_info.name.index (ganav_loop) = 971 value_list_info.pairs.name_index (ganav_loop); 972 name_value_info.name.length (ganav_loop) = 973 value_list_info.pairs.name_len (ganav_loop); 974 name_value_info.value.index (ganav_loop) = 975 value_list_info.pairs.value_index (ganav_loop); 976 name_value_info.value.length (ganav_loop) = 977 value_list_info.pairs.value_len (ganav_loop); 978 979 end; 980 981 if ^valid_selection_expression 982 then return; 983 984 /* Move the general and specific column options and their lengths 985* and index into the callers table. */ 986 987 ganav_no_of_chars_already_done = value_list_info.chars_len; 988 ganav_inner_loop = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE + 1; 989 value_list_info_ptr = general_columns_names_and_values_info_ptr; 990 substr (names_and_values, ganav_no_of_chars_already_done + 1, 991 value_list_info.chars_len) = value_list_info.chars; 992 993 do ganav_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 994 995 name_value_info.name.index (ganav_inner_loop) = 996 value_list_info.pairs.name_index (ganav_loop) 997 + ganav_no_of_chars_already_done; 998 name_value_info.name.length (ganav_inner_loop) = 999 value_list_info.pairs.name_len (ganav_loop); 1000 1001 name_value_info.value.index (ganav_inner_loop) = 1002 value_list_info.pairs.value_index (ganav_loop) 1003 + ganav_no_of_chars_already_done; 1004 name_value_info.value.length (ganav_inner_loop) = 1005 value_list_info.pairs.value_len (ganav_loop); 1006 ganav_inner_loop = ganav_inner_loop + 1; 1007 1008 end; 1009 1010 ganav_no_of_chars_already_done = 1011 ganav_no_of_chars_already_done + value_list_info.chars_len; 1012 value_list_info_ptr = specific_columns_names_and_values_info_ptr; 1013 substr (names_and_values, ganav_no_of_chars_already_done + 1, 1014 value_list_info.chars_len) = value_list_info.chars; 1015 1016 ganav_loop_limit = NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE 1017 * table_info.column_count; 1018 1019 do ganav_loop = 1 to ganav_loop_limit; 1020 1021 name_value_info.name.index (ganav_inner_loop) = 1022 value_list_info.pairs.name_index (ganav_loop) 1023 + ganav_no_of_chars_already_done; 1024 name_value_info.name.length (ganav_inner_loop) = 1025 value_list_info.pairs.name_len (ganav_loop); 1026 1027 name_value_info.value.index (ganav_inner_loop) = 1028 value_list_info.pairs.value_index (ganav_loop) 1029 + ganav_no_of_chars_already_done; 1030 name_value_info.value.length (ganav_inner_loop) = 1031 value_list_info.pairs.value_len (ganav_loop); 1032 ganav_inner_loop = ganav_inner_loop + 1; 1033 1034 end; 1035 1036 return; 1037 1038 end get_all_names_and_values; 1039 1040 get_general_column_default_value: proc ( 1041 1042 ggcdv_option_name_parm, /* input: name of option */ 1043 ggcdv_option_value_parm /* output: default value for above option */ 1044 ); 1045 1046 /* 1047* 1048* When this proc is called it expects ggcdv_option_name_parm to contain 1049* the name of the option that the default should be generated for. It 1050* sets ggcdv_option_value_parm to this default value or "ERROR" if things 1051* don't work out well. 1052* 1053**/ 1054 1055 dcl ggcdv_loop fixed bin; 1056 dcl ggcdv_option_name_parm char (*) varying parm; 1057 dcl ggcdv_option_value_parm char (*) varying parm; 1058 1059 if ggcdv_option_name_parm 1060 = OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_COLUMN_ORDER) 1061 then do; 1062 ggcdv_option_value_parm = table_info.columns.column_name (1); 1063 if number_of_defined_columns = 1 1064 then return; 1065 do ggcdv_loop = 2 to number_of_defined_columns; 1066 ggcdv_option_value_parm = ggcdv_option_value_parm || BLANK 1067 || table_info.columns.column_name (ggcdv_loop); 1068 end; 1069 end; 1070 else ggcdv_option_value_parm = "ERROR"; 1071 1072 return; 1073 1074 end get_general_column_default_value; 1075 1076 get_specific_column_default_value: proc ( 1077 1078 gscdv_option_name_parm, /* input: option name */ 1079 gscdv_option_identifier_parm, /* input: identifier for name */ 1080 gscdv_option_value_parm /* output: value for the option */ 1081 ); 1082 1083 /* 1084* 1085* This proc gets the default value of any given column. When called, it 1086* expects that gscdv_option_name_parm contains a valid option name and 1087* gscdv_option_identifier_parm contains a valid option identifier which has 1088* been normalized into a column name. It places the default value in 1089* gscdv_option_value_parm. This proc expects that table_info is available 1090* and up to date, which means there has to be a set of columns defined. 1091* Error conditions are handled by setting the value "ERROR". There should 1092* never be any error conditions unless this proc is used incorrectly. 1093* 1094**/ 1095 1096 dcl gscdv_column_option_number fixed bin; 1097 dcl gscdv_column_type fixed bin (6) unsigned unaligned; 1098 dcl gscdv_hit bit (1) aligned; 1099 dcl gscdv_loop fixed bin; 1100 dcl gscdv_option_identifier_parm char (*) varying parm; 1101 dcl gscdv_option_name_parm char (*) varying parm; 1102 dcl gscdv_option_value_parm char (*) varying parm; 1103 1104 gscdv_hit = OFF; 1105 1106 do gscdv_loop = 1 to number_of_defined_columns while (^gscdv_hit); 1107 if table_info.columns.column_name (gscdv_loop) 1108 = gscdv_option_identifier_parm 1109 then do; 1110 gscdv_hit = ON; 1111 gscdv_column_option_number = gscdv_loop; 1112 end; 1113 end; 1114 1115 if ^gscdv_hit 1116 then do; 1117 gscdv_option_value_parm = "ERROR"; 1118 return; 1119 end; 1120 1121 if gscdv_option_name_parm 1122 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_ALIGNMENT) 1123 then do; 1124 desc_ptr = addr (table_info.columns.column_data_type ( 1125 gscdv_column_option_number)); 1126 gscdv_column_type = descriptor.type; 1127 if (gscdv_column_type >= 1 & gscdv_column_type <= 8) /* NUMERIC */ 1128 | (gscdv_column_type = 33 | gscdv_column_type = 34) 1129 then gscdv_option_value_parm = RIGHT; 1130 else if (gscdv_column_type >= 9 & gscdv_column_type <= 12) /* DECIMAL */ 1131 | (gscdv_column_type = 29 | gscdv_column_type = 30) 1132 | (gscdv_column_type = 35 | gscdv_column_type = 36) 1133 | (gscdv_column_type >= 38 & gscdv_column_type <= 46) 1134 then if fixed (descriptor.size.scale, 17, 0) > 0 1135 then gscdv_option_value_parm = DECIMAL || BLANK || ltrim (char 1136 (table_info.columns.column_length (gscdv_column_option_number) 1137 - fixed (descriptor.size.scale, 17, 0))); 1138 else gscdv_option_value_parm = RIGHT; 1139 else if (gscdv_column_type >= 19 & gscdv_column_type <= 22) /* CHAR OR BIT */ 1140 then gscdv_option_value_parm = LEFT; 1141 else call ssu_$abort_line (sci_ptr, 0, 1142 "The table information described an unsupported data type.^/The data descriptor was ^d.", 1143 gscdv_column_type); 1144 end; 1145 else if gscdv_option_name_parm 1146 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_TITLE) 1147 then gscdv_option_value_parm 1148 = table_info.columns.column_name (gscdv_column_option_number); 1149 else if gscdv_option_name_parm 1150 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_WIDTH) 1151 then gscdv_option_value_parm = ltrim (char 1152 (table_info.columns.column_length (gscdv_column_option_number))); 1153 else gscdv_option_value_parm = "ERROR"; 1154 1155 end get_specific_column_default_value; 1156 1157 get_named_values: proc (gnv_code_parm); 1158 1159 /* 1160* 1161* This proc is called by the get_named entrypoint to get the names and 1162* values which match a set of option names and identifiers supplied by the 1163* caller of the get_named entry. The option name can be a short or long 1164* name. The column/option identifier provided can be a column name, 1165* column number, or star name. The star names can only match column 1166* names; star name matching of column numbers is not attempted. 1167* Unfortunately, value_$list has an ugly little quirk of not returning the 1168* code error_table_$nomatch when star names result in no match, if any 1169* other name in the match_info structure does get a match. So we have to 1170* pre-match star names or else user specified star names that don't get a 1171* match could well go unnoticed. 1172* 1173**/ 1174 1175 dcl gnv_code_parm fixed bin (35) parm; 1176 dcl gnv_current_star_name fixed bin; 1177 dcl gnv_inner_loop fixed bin; 1178 dcl gnv_loop fixed bin; 1179 dcl gnv_match_info_index fixed bin; 1180 dcl gnv_number_of_matches fixed bin; 1181 1182 gnv_code_parm = 0; 1183 1184 alloc_name_count = no_of_options_in_name_table; 1185 if valid_selection_expression 1186 then alloc_max_name_len = MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH; 1187 else alloc_max_name_len = MAXIMUM_OPTION_NAME_LENGTH; 1188 1189 star_name_info_ptr = names_and_values_temp_seg_ptr; 1190 star_name_info.maximum_number_of_star_names 1191 = no_of_options_in_name_table; 1192 star_name_info.star_name_map (*) = OFF; 1193 star_name_info.number_of_star_names = 1; 1194 1195 allocate column_map in (names_and_values_area) set (column_map_ptr); 1196 1197 do gnv_loop = 1 to no_of_options_in_name_table; 1198 1199 call normalize_option_name ( 1200 option_name_table.the_name (gnv_loop), 1201 option_name_table.the_identifier (gnv_loop), 1202 option_type, option_table_index, 1203 normalized_option_name, gnv_code_parm); 1204 if gnv_code_parm = 0 1205 then if option_type = SPECIFIC_COLUMN_OPTION 1206 then option_name_table.the_identifier (gnv_loop) 1207 = after (normalized_option_name, BLANK); 1208 else option_name_table.the_identifier (gnv_loop) = ""; 1209 else if gnv_code_parm = error_table_$nostars 1210 then do; 1211 call match_column_names ( 1212 option_name_table.the_identifier (gnv_loop), 1213 column_map, gnv_number_of_matches, gnv_code_parm); 1214 if gnv_code_parm ^= 0 1215 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1216 "^/The column identifier ^a did not match any column names.", 1217 option_name_table.the_identifier (gnv_loop)); 1218 else; 1219 if gnv_number_of_matches ^= 1 1220 then alloc_name_count = alloc_name_count 1221 + gnv_number_of_matches - 1; 1222 star_name_info.star_name_map (gnv_loop) = ON; 1223 star_name_info.column_maps_info ( 1224 star_name_info.number_of_star_names) 1225 .number_of_matches = gnv_number_of_matches; 1226 star_name_info.column_maps_info ( 1227 star_name_info.number_of_star_names) 1228 .column_bit_map (*) = column_map (*); 1229 star_name_info.number_of_star_names 1230 = star_name_info.number_of_star_names + 1; 1231 end; 1232 else if gnv_code_parm = linus_error_$bad_option_name 1233 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1234 "^/^a is not a valid option name.", 1235 option_name_table.the_name (gnv_loop)); 1236 else if gnv_code_parm = linus_error_$bad_option_identifier 1237 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1238 "^/^a is not a valid option identifier for ^a.", 1239 option_name_table.the_identifier (gnv_loop), 1240 option_name_table.the_name (gnv_loop)); 1241 else call ssu_$abort_line (sci_ptr, gnv_code_parm); 1242 1243 end; 1244 1245 star_name_info.number_of_star_names 1246 = star_name_info.number_of_star_names - 1; 1247 1248 allocate match_info in (names_and_values_area) set (match_info_ptr); 1249 match_info.version = match_info_version_1; 1250 1251 gnv_match_info_index = 1; 1252 gnv_current_star_name = 1; 1253 do gnv_loop = 1 to no_of_options_in_name_table; 1254 1255 match_info.name_array.exclude_sw (gnv_match_info_index) = OFF; 1256 match_info.name_array.regexp_sw (gnv_match_info_index) = OFF; 1257 1258 if ^star_name_info.star_name_map (gnv_loop) 1259 then do; 1260 if option_name_table.the_identifier (gnv_loop) = "" 1261 then match_info.name_array.name (gnv_match_info_index) 1262 = option_name_table.the_name (gnv_loop); 1263 else match_info.name_array.name (gnv_match_info_index) 1264 = option_name_table.the_name (gnv_loop) 1265 || BLANK || option_name_table.the_identifier (gnv_loop); 1266 gnv_match_info_index = gnv_match_info_index + 1; 1267 end; 1268 else do; 1269 column_map_ptr = addr (star_name_info 1270 .column_maps_info (gnv_current_star_name) 1271 .column_bit_map (1)); 1272 do gnv_inner_loop = 1 to number_of_defined_columns; 1273 if column_map (gnv_inner_loop) 1274 then do; 1275 match_info.name_array.name (gnv_match_info_index) 1276 = option_name_table.the_name (gnv_loop) 1277 || BLANK || table_info.columns.column_name (gnv_inner_loop); 1278 gnv_match_info_index = gnv_match_info_index + 1; 1279 end; 1280 end; 1281 gnv_current_star_name = gnv_current_star_name + 1; 1282 end; 1283 1284 end; 1285 1286 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 1287 names_and_values_area_ptr, value_list_info_ptr, code); 1288 if code ^= 0 1289 then call ssu_$abort_line (sci_ptr, code, 1290 "^/Unable to get the values of the specified format options."); 1291 else; 1292 1293 no_of_names_and_values = value_list_info.pair_count; 1294 allocate name_value_info in (names_and_values_area) 1295 set (names_and_values_info_ptr); 1296 1297 do gnv_loop = 1 to no_of_names_and_values; 1298 name_value_info.name.length (gnv_loop) 1299 = value_list_info.pairs.name_len (gnv_loop); 1300 name_value_info.name.index (gnv_loop) 1301 = value_list_info.pairs.name_index (gnv_loop); 1302 name_value_info.value.length (gnv_loop) 1303 = value_list_info.pairs.value_len (gnv_loop); 1304 name_value_info.value.index (gnv_loop) 1305 = value_list_info.pairs.value_index (gnv_loop); 1306 end; 1307 1308 size_of_names_and_values = value_list_info.chars_len; 1309 allocate names_and_values in (names_and_values_area) 1310 set (names_and_values_ptr); 1311 names_and_values = value_list_info.chars; 1312 1313 return; 1314 1315 end get_named_values; 1316 1317 housekeeping: proc; 1318 1319 /* 1320* 1321* This procedure is called to set up various automatic versions of some of 1322* some things we will need to run this subroutine, and to make sure 1323* linus_table$info has been called. 1324* 1325**/ 1326 1327 sci_ptr = lcb.subsystem_control_info_ptr; 1328 report_cip = lcb.report_control_info_ptr; 1329 value_seg_ptr = report_control_info.value_seg_ptr; 1330 names_and_values_area_ptr = report_control_info.name_value_area_ptr; 1331 names_and_values_temp_seg_ptr = report_control_info.name_value_temp_seg_ptr; 1332 1333 call linus_table$info (lcb_ptr, table_ip, code); 1334 if code ^= 0 1335 then if code ^= linus_error_$no_lila_expr_processed 1336 then call ssu_$abort_line (sci_ptr, code, 1337 "While trying to get table information."); 1338 else do; 1339 valid_selection_expression = OFF; 1340 number_of_defined_columns = 0; 1341 end; 1342 else do; 1343 valid_selection_expression = ON; 1344 number_of_defined_columns = table_info.column_count; 1345 end; 1346 1347 return; 1348 1349 end housekeeping; 1350 1351 load_value_seg_with_column_defaults: proc; 1352 1353 /* 1354* 1355* This procedure is called to load all of the column default values into 1356* the value seg. It expects that table_info has been set and is current 1357* (which means there must be a valid selection expression available.) 1358* 1359**/ 1360 1361 dcl lvswcd_inner_loop fixed bin; 1362 dcl lvswcd_loop fixed bin; 1363 1364 do lvswcd_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 1365 1366 lvswcd_option_name = OPTIONS.GENERAL_COLUMN.NAME (lvswcd_loop); 1367 lvswcd_option_value = OPTIONS.GENERAL_COLUMN.VALUE (lvswcd_loop); 1368 if length (lvswcd_option_value) > 0 1369 then if substr (lvswcd_option_value, 1, 1) = LEFT_BRACKET 1370 then do; 1371 call get_general_column_default_value ( 1372 lvswcd_option_name, lvswcd_option_value); 1373 if lvswcd_option_value = "ERROR" 1374 then call ssu_$abort_line (sci_ptr, 0, 1375 "While trying to get the default value for ^a.", 1376 lvswcd_option_name); 1377 else; 1378 end; 1379 else; 1380 else; 1381 1382 call value_$set (value_seg_ptr, PERMANENT, lvswcd_option_name, 1383 lvswcd_option_value, returned_option_value, code); 1384 if code ^= 0 1385 then call ssu_$abort_line (sci_ptr, code, 1386 "While trying to set the value ^a for ^a.", 1387 lvswcd_option_value, lvswcd_option_name); 1388 1389 end; 1390 1391 do lvswcd_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 1392 1393 lvswcd_option_name = OPTIONS.SPECIFIC_COLUMN.NAME (lvswcd_loop); 1394 1395 do lvswcd_inner_loop = 1 to number_of_defined_columns; 1396 1397 lvswcd_option_identifier 1398 = table_info.columns.column_name (lvswcd_inner_loop); 1399 normalized_option_name 1400 = lvswcd_option_name || BLANK || lvswcd_option_identifier; 1401 lvswcd_option_value = OPTIONS.SPECIFIC_COLUMN.VALUE (lvswcd_loop); 1402 if length (lvswcd_option_value) > 0 1403 then if substr (lvswcd_option_value, 1, 1) = LEFT_BRACKET 1404 then do; 1405 call get_specific_column_default_value ( 1406 lvswcd_option_name, lvswcd_option_identifier, 1407 lvswcd_option_value); 1408 if lvswcd_option_value = "ERROR" 1409 then call ssu_$abort_line (sci_ptr, 0, 1410 "While trying to get the default value for ^a.", 1411 normalized_option_name); 1412 else; 1413 end; 1414 else; 1415 else; 1416 1417 call value_$set (value_seg_ptr, PERMANENT, 1418 normalized_option_name, lvswcd_option_value, 1419 returned_option_value, code); 1420 if code ^= 0 1421 then call ssu_$abort_line (sci_ptr, code, 1422 "While trying to set the value ^a for ^a.", 1423 lvswcd_option_value, normalized_option_name); 1424 1425 end; 1426 1427 end; 1428 1429 report_control_info.options_identifier 1430 = report_control_info.options_identifier + 1; 1431 report_control_info.selection_expression_identifier 1432 = lcb.selection_expression_identifier; 1433 report_control_info.format_options_flags 1434 .general_column_default_value (*) = ON; 1435 1436 return; 1437 1438 end load_value_seg_with_column_defaults; 1439 1440 load_value_seg_with_report_defaults: proc; 1441 1442 /* 1443* 1444* This proc is called to load the value seg with the general report option 1445* defaults from the OPTIONS.GENERAL_REPORT table found in the include file 1446* linus_format_options.incl.pl1. 1447* 1448**/ 1449 1450 dcl lvswrd_loop fixed bin; 1451 1452 do lvswrd_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 1453 1454 call value_$set (value_seg_ptr, PERMANENT, 1455 OPTIONS.GENERAL_REPORT.NAME (lvswrd_loop), 1456 OPTIONS.GENERAL_REPORT.VALUE (lvswrd_loop), 1457 returned_option_value, code); 1458 if code ^= 0 1459 then call ssu_$abort_line (sci_ptr, code, 1460 "While trying to set the value ^a for ^a.", 1461 OPTIONS.GENERAL_REPORT.VALUE (lvswrd_loop), 1462 OPTIONS.GENERAL_REPORT.NAME (lvswrd_loop)); 1463 1464 end; 1465 1466 report_control_info.options_identifier = 1467 report_control_info.options_identifier + 1; 1468 report_control_info.format_options_flags.general_report_default_value (*) = ON; 1469 1470 return; 1471 1472 end load_value_seg_with_report_defaults; 1473 1474 lookup_option_number: proc ( 1475 1476 lon_option_name_parm, /* input: option name to look up */ 1477 lon_option_type_parm, /* output: the table to index into */ 1478 lon_option_index_parm /* output: the index into the table */ 1479 ); 1480 1481 /* 1482* 1483* This proc looks up option names from the three tables of option names. 1484* lon_option_name_parm is expected to contain the name of the option. 1485* lon_option_type_parm is set to indicate whether it is a general report, 1486* general column, or specific column option. lon_option_index_parm is 1487* the index into the appropriate table so the caller can obtain its value. 1488* 1489**/ 1490 1491 dcl lon_loop fixed bin; 1492 dcl lon_option_name_parm char (*) varying parm; 1493 dcl lon_option_type_parm fixed bin parm; 1494 dcl lon_option_index_parm fixed bin parm; 1495 1496 lon_option_type_parm = 0; 1497 1498 lon_option_index_parm = lookup_general_report_option (); 1499 if lon_option_index_parm ^= 0 1500 then do; 1501 lon_option_type_parm = GENERAL_REPORT_OPTION; 1502 return; 1503 end; 1504 1505 lon_option_index_parm = lookup_general_column_option (); 1506 if lon_option_index_parm ^= 0 1507 then do; 1508 lon_option_type_parm = GENERAL_COLUMN_OPTION; 1509 return; 1510 end; 1511 1512 lon_option_index_parm = lookup_specific_column_option (); 1513 if lon_option_index_parm ^= 0 1514 then lon_option_type_parm = SPECIFIC_COLUMN_OPTION; 1515 1516 return; 1517 1518 lookup_general_column_option: proc () returns (fixed bin); 1519 1520 /* Look up the option name from the general column names table. */ 1521 1522 do lon_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 1523 if lon_option_name_parm = OPTIONS.GENERAL_COLUMN.NAME (lon_loop) 1524 then return (lon_loop); 1525 end; 1526 1527 return (0); 1528 1529 end lookup_general_column_option; 1530 1531 lookup_general_report_option: proc () returns (fixed bin); 1532 1533 /* Look up the option name from the general report names table. */ 1534 1535 do lon_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 1536 if lon_option_name_parm = OPTIONS.GENERAL_REPORT.NAME (lon_loop) 1537 then return (lon_loop); 1538 end; 1539 1540 return (0); 1541 1542 end lookup_general_report_option; 1543 1544 lookup_specific_column_option: proc () returns (fixed bin); 1545 1546 /* Look up the option name from the specific column names table. */ 1547 1548 do lon_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 1549 if lon_option_name_parm = OPTIONS.SPECIFIC_COLUMN.NAME (lon_loop) 1550 then return (lon_loop); 1551 end; 1552 1553 return (0); 1554 1555 end lookup_specific_column_option; 1556 1557 end lookup_option_number; 1558 1559 match_column_names: proc ( 1560 1561 mcn_star_name_parm, /* input: star name to match */ 1562 mcn_column_map_parm, /* input/output: array of match bits */ 1563 mcn_number_of_matches_parm, /* output: number of matches */ 1564 mcn_code_parm /* output: success or failure */ 1565 ); 1566 1567 /* 1568* 1569* This proc is called with a star name to determine which columns match 1570* it. The variable mcn_star_name_parm contains the variable which is used 1571* to try to get a match. The array mcn_column_map_parm contains one bit 1572* for each defined column. Each column that matches the star name has its 1573* corresponding bit turned on, and the variable mcn_number_of_matches_parm 1574* contains the number of columns that matched. The variable mcn_code_parm 1575* is set to reflect any problems encountered. 1576* 1577**/ 1578 1579 dcl mcn_code_parm fixed bin (35) parm; 1580 dcl mcn_loop fixed bin; 1581 dcl mcn_column_map_parm (*) bit (1) parm; 1582 dcl mcn_number_of_matches fixed bin; 1583 dcl mcn_number_of_matches_parm fixed bin parm; 1584 dcl mcn_star_name_parm char (*) varying parm; 1585 1586 mcn_column_map_parm (*) = OFF; 1587 mcn_number_of_matches_parm = 0; 1588 mcn_code_parm = 0; 1589 1590 if hbound (mcn_column_map_parm, 1) ^= number_of_defined_columns 1591 then call ssu_$abort_line (sci_ptr, 0, "^a ^a^/^a", 1592 "Invalid use of match_column_names by ", me, 1593 "The match table was not equal to the number of defined columns."); 1594 else; 1595 1596 mcn_number_of_matches = 0; 1597 do mcn_loop = 1 to number_of_defined_columns; 1598 call match_star_name_ ( 1599 (table_info.columns.column_name (mcn_loop)), 1600 (mcn_star_name_parm), mcn_code_parm); 1601 if mcn_code_parm = 0 1602 then do; 1603 mcn_column_map_parm (mcn_loop) = ON; 1604 mcn_number_of_matches = mcn_number_of_matches + 1; 1605 end; 1606 else if mcn_code_parm ^= error_table_$nomatch 1607 then return; 1608 else; 1609 end; 1610 1611 if mcn_number_of_matches ^= 0 1612 then do; 1613 mcn_number_of_matches_parm = mcn_number_of_matches; 1614 mcn_code_parm = 0; 1615 end; 1616 else; 1617 1618 return; 1619 1620 end match_column_names; 1621 1622 normalize_option_name: proc ( 1623 1624 non_option_name_parm, /* input: the option name */ 1625 non_option_identifier_parm, /* input: the column name or number */ 1626 non_option_type_parm, /* output: the type of option */ 1627 non_option_table_index_parm, /* output: index into options table */ 1628 non_normalized_option_name_parm, /* output: the option and column name */ 1629 non_code_parm /* output: success or failure */ 1630 ); 1631 1632 /* 1633* 1634* This proc is called to set general purpose info about the option currently 1635* being dealt with. It expects non_option_name_parm to contain a name 1636* which can be used to determine whether or not it requires an identifier. 1637* The option_name must already have been expanded into a long name (see 1638* the "check_name" entry for expansion of option names). If an 1639* identifier is needed, it expects non_option_identifier_parm to contain 1640* it. The identifier can be the name of a column or the position of the 1641* column in the LILA select. If the identifier is a star name or invalid, 1642* non_code_parm is set. It places the option name into 1643* non_normalized_option_name_parm if a column identifier isn't needed, and 1644* the option name and column name in it when an identifier is needed. 1645* When errors occur normalized_option_name is set to "", except for 1646* starnames. The variable non_option_type_parm is set to flag whether it 1647* is a general report, general column, or specific column option. The 1648* variable non_option_table_index_parm is set so the caller can index into 1649* the appropriate options table. 1650* 1651**/ 1652 1653 dcl non_code_parm fixed bin (35) parm; 1654 dcl non_column_option_number fixed bin; 1655 dcl non_loop fixed bin; 1656 dcl non_normalized_option_name_parm char (*) varying parm; 1657 dcl non_option_identifier_parm char (*) varying parm; 1658 dcl non_option_name_parm char (*) varying parm; 1659 dcl non_option_table_index_parm fixed bin parm; 1660 dcl non_option_type_parm fixed bin parm; 1661 1662 non_normalized_option_name_parm = ""; 1663 non_code_parm = 0; 1664 1665 call lookup_option_number (non_option_name_parm, 1666 non_option_type_parm, non_option_table_index_parm); 1667 if non_option_table_index_parm = 0 1668 then do; 1669 non_code_parm = linus_error_$bad_option_name; 1670 return; 1671 end; 1672 1673 if (non_option_type_parm = GENERAL_COLUMN_OPTION 1674 | non_option_type_parm = SPECIFIC_COLUMN_OPTION) 1675 & (^valid_selection_expression) 1676 then do; 1677 code = linus_error_$no_lila_expr_processed; 1678 return; 1679 end; 1680 else; 1681 1682 if non_option_type_parm = GENERAL_REPORT_OPTION 1683 | non_option_type_parm = GENERAL_COLUMN_OPTION 1684 then do; 1685 non_normalized_option_name_parm = non_option_name_parm; 1686 return; 1687 end; 1688 1689 if search (non_option_identifier_parm, STAR_OR_QUESTION_MARK) ^= 0 1690 then do; 1691 non_code_parm = error_table_$nostars; 1692 non_normalized_option_name_parm = non_option_name_parm 1693 || BLANK || non_option_identifier_parm; 1694 return; 1695 end; 1696 1697 if verify (non_option_identifier_parm, DIGITS) = 0 1698 then do; 1699 non_column_option_number = convert (non_column_option_number, 1700 non_option_identifier_parm); 1701 if non_column_option_number < 1 1702 | non_column_option_number > number_of_defined_columns 1703 then non_code_parm = linus_error_$bad_option_identifier; 1704 else non_normalized_option_name_parm = 1705 non_option_name_parm || BLANK 1706 || table_info.columns.column_name (non_column_option_number); 1707 return; 1708 end; 1709 1710 do non_loop = 1 to number_of_defined_columns; 1711 if non_option_identifier_parm = table_info.columns.column_name (non_loop) 1712 then do; 1713 non_normalized_option_name_parm = 1714 non_option_name_parm || BLANK || non_option_identifier_parm; 1715 return; 1716 end; 1717 end; 1718 1719 non_code_parm = linus_error_$bad_option_identifier; 1720 1721 return; 1722 1723 end normalize_option_name; 1724 1725 release_temp_segment: proc ( 1726 1727 rts_ptr_parm /* input: ptr to temp segment */ 1728 ); 1729 1730 dcl rts_code fixed bin (35); 1731 dcl rts_ptr_parm ptr parm; 1732 1733 call release_temp_segment_ (me, rts_ptr_parm, rts_code); 1734 if rts_code ^= 0 1735 then call ssu_$print_message (sci_ptr, rts_code, 1736 "While trying to release the temporary segment pointed to by ^/^p.", rts_ptr_parm); 1737 1738 return; 1739 1740 end release_temp_segment; 1741 1742 set_the_values: proc ( 1743 1744 stv_option_name_parm, /* input: option name */ 1745 stv_option_identifier_parm, /* input: column identifier */ 1746 stv_option_value_parm, /* input: option value */ 1747 stv_system_default_parm, /* input: on means yes */ 1748 stv_code_parm /* output: success or failure */ 1749 ); 1750 1751 /* 1752* 1753* This proc is called to set the value of a format option. If the value 1754* is a star name then the value is set for every name that matches the 1755* star name. The internal proc set_value sets the value. For a normal 1756* column name, it is called once with normalized_option_name used for 1757* the set operation. For star names, normalized_option_name is changed 1758* before each call with a column name that matched the star name. 1759* 1760**/ 1761 1762 dcl stv_code_parm fixed bin (35) parm; 1763 dcl stv_loop fixed bin; 1764 dcl stv_number_of_matches fixed bin; 1765 dcl stv_option_name_parm char (*) varying parm; 1766 dcl stv_option_identifier_parm char (*) varying parm; 1767 dcl stv_option_value_parm char (*) varying parm; 1768 dcl stv_system_default_parm bit (1) aligned parm; 1769 dcl stv_value_has_been_tested bit (1) aligned; 1770 1771 call normalize_option_name (stv_option_name_parm, 1772 stv_option_identifier_parm, option_type, option_table_index, 1773 normalized_option_name, stv_code_parm); 1774 if stv_code_parm = 0 1775 then do; 1776 call set_value (stv_code_parm); 1777 return; 1778 end; 1779 else if stv_code_parm ^= error_table_$nostars 1780 then return; 1781 1782 allocate column_map in (names_and_values_area) 1783 set (column_map_ptr); 1784 call match_column_names (stv_option_identifier_parm, 1785 column_map, stv_number_of_matches, stv_code_parm); 1786 if stv_code_parm ^= 0 1787 then return; 1788 1789 do stv_loop = 1 to number_of_defined_columns; 1790 1791 if column_map (stv_loop) 1792 then do; 1793 normalized_option_name = stv_option_name_parm 1794 || BLANK || table_info.columns.column_name (stv_loop); 1795 call set_value (stv_code_parm); 1796 if stv_code_parm ^= 0 1797 then return; 1798 end; 1799 1800 end; 1801 1802 return; 1803 1804 set_value: proc ( 1805 1806 sv_code_parm /* output: success or failure */ 1807 ); 1808 1809 /* 1810* 1811* This proc is called to set the value of a format option. The variable 1812* stv_system_default_parm is used to determine if the caller wants the 1813* system default value for the named option. normalized_option_name is 1814* used to determine who's to be set. stv_option_value_parm is the value 1815* which will be set if stv_system_default_parm is off. option_type and 1816* option_table_index are used to find the value which will be set when 1817* stv_system_default_parm is on. The bit that indicates whether or not 1818* a value is the same as the system default is set for the general report 1819* and general column options. These bits are used by the get_active entry 1820* to determine which values are considered active. If the caller requested 1821* that it be set to the system default, the value is set from the OPTIONS 1822* table. General column and specific column values from this table 1823* sometimes need the actual value computed based on the current set of 1824* columns. These values are recognizable because they begin with a left 1825* bracket. The procs get_general_column_default_value and 1826* get_specific_column_default_value are called to compute the value. There 1827* is a dependency between the -group option and the two options 1828* -group_footer_trigger and -group_header_trigger. If the -group option 1829* is being set back to the default then the function valid_option_value is 1830* invoked to make sure the other two are set back to their defaults. 1831* 1832**/ 1833 1834 dcl sv_code_parm fixed bin (35) parm; 1835 dcl sv_force_group_triggers_consistency bit (1); 1836 1837 sv_code_parm = 0; 1838 1839 if ^stv_system_default_parm 1840 then do; 1841 sv_option_value = stv_option_value_parm; 1842 if ^valid_option_value (stv_option_name_parm, sv_option_value) 1843 then do; 1844 stv_code_parm = linus_error_$bad_option_value; 1845 return; 1846 end; 1847 else; 1848 end; 1849 else do; 1850 if option_type = GENERAL_REPORT_OPTION 1851 then do; 1852 sv_option_value 1853 = OPTIONS.GENERAL_REPORT.VALUE (option_table_index); 1854 report_control_info.format_options_flags. 1855 general_report_default_value (option_table_index) = ON; 1856 end; 1857 else if option_type = GENERAL_COLUMN_OPTION 1858 then do; 1859 sv_option_value 1860 = OPTIONS.GENERAL_COLUMN.VALUE (option_table_index); 1861 if length (sv_option_value) > 0 1862 then if substr (sv_option_value, 1, 1) = LEFT_BRACKET 1863 then call get_general_column_default_value ( 1864 stv_option_name_parm, sv_option_value); 1865 else; 1866 else if stv_option_name_parm = OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_GROUP) 1867 then sv_force_group_triggers_consistency 1868 = valid_option_value (stv_option_name_parm, sv_option_value); 1869 else; 1870 report_control_info.format_options_flags. 1871 general_column_default_value (option_table_index) = ON; 1872 end; 1873 else do; 1874 sv_option_value = 1875 OPTIONS.SPECIFIC_COLUMN.VALUE (option_table_index); 1876 if length (sv_option_value) > 0 1877 then if substr (sv_option_value, 1, 1) = LEFT_BRACKET 1878 then do; 1879 sv_spare_option_identifier 1880 = after (normalized_option_name, BLANK); 1881 call get_specific_column_default_value ( 1882 stv_option_name_parm, 1883 sv_spare_option_identifier, 1884 sv_option_value); 1885 end; 1886 else; 1887 else; 1888 end; 1889 if sv_option_value = "ERROR" 1890 then call ssu_$abort_line (sci_ptr, 0, 1891 "Unable to set the value of ^a to the system default.", 1892 normalized_option_name); 1893 end; 1894 1895 call value_$set (value_seg_ptr, PERMANENT, 1896 normalized_option_name, sv_option_value, 1897 returned_option_value, code); 1898 1899 if code ^= 0 1900 then call ssu_$abort_line (sci_ptr, code, 1901 "While trying to set the value ^a for ^a.", 1902 sv_option_value, normalized_option_name); 1903 1904 report_control_info.options_identifier = 1905 report_control_info.options_identifier + 1; 1906 1907 if stv_system_default_parm 1908 | option_type = SPECIFIC_COLUMN_OPTION 1909 then return; 1910 1911 if option_type = GENERAL_REPORT_OPTION 1912 then do; 1913 if sv_option_value 1914 = OPTIONS.GENERAL_REPORT.VALUE (option_table_index) 1915 then report_control_info.format_options_flags. 1916 general_report_default_value (option_table_index) = ON; 1917 else report_control_info.format_options_flags. 1918 general_report_default_value (option_table_index) = OFF; 1919 end; 1920 else do; 1921 stv_value_has_been_tested = OFF; 1922 if length (sv_option_value) > 0 1923 & length (OPTIONS.GENERAL_COLUMN.VALUE (option_table_index)) > 0 1924 then if substr (OPTIONS.GENERAL_COLUMN.VALUE ( 1925 option_table_index), 1, 1) = LEFT_BRACKET 1926 then do; 1927 call get_general_column_default_value ( 1928 stv_option_name_parm, sv_spare_option_value); 1929 if sv_spare_option_value = "ERROR" 1930 then call ssu_$abort_line (sci_ptr, 0, 1931 "Unable to get the default value of ^a.", 1932 stv_option_name_parm); 1933 else; 1934 stv_value_has_been_tested = ON; 1935 if sv_option_value = sv_spare_option_value 1936 then report_control_info.format_options_flags. 1937 general_column_default_value (option_table_index) = ON; 1938 else report_control_info.format_options_flags. 1939 general_column_default_value (option_table_index) = OFF; 1940 end; 1941 else; 1942 else; 1943 if ^stv_value_has_been_tested 1944 then if sv_option_value 1945 = OPTIONS.GENERAL_COLUMN.VALUE (option_table_index) 1946 then report_control_info.format_options_flags. 1947 general_column_default_value (option_table_index) = ON; 1948 else report_control_info.format_options_flags. 1949 general_column_default_value (option_table_index) = OFF; 1950 else; 1951 end; 1952 1953 return; 1954 1955 end set_value; 1956 1957 end set_the_values; 1958 1959 setup_to_do_reporting: proc; 1960 1961 /* 1962* 1963* This proc is called to setup all the areas, temp segs, etc. that are 1964* needed to produce linus reports through the display request. Each 1965* "thing" it needs is described below before it is created. 1966* 1967**/ 1968 1969 sci_ptr = lcb.subsystem_control_info_ptr; 1970 1971 /* Create the info structure. */ 1972 1973 allocate report_control_info in (lcb.static_area) 1974 set (report_cip); 1975 unspec (report_control_info) = OFF; 1976 1977 /* Create the value segment. */ 1978 1979 call hcs_$make_seg (get_pdir_(), "linus_format_options.value", "", 1980 REW_ACCESS_BIN, value_seg_ptr, code); 1981 if code ^= 0 1982 then call ssu_$abort_line (sci_ptr, code, 1983 "^a", "While trying to create the options' value segment."); 1984 1985 /* Initialize its contents. */ 1986 1987 call value_$init_seg (value_seg_ptr, 0, null(), 0, code); 1988 if code ^= 0 1989 then call ssu_$abort_line (sci_ptr, code, 1990 "^a", "While trying to initialize the options' value segment."); 1991 report_control_info.value_seg_ptr = value_seg_ptr; 1992 1993 /* Create a temp seg for name-value allocations. Define an area 1994* over it. This area will be emptied from now on every time 1995* the initialize entrypoint is called, via a call to 1996* release_area_. */ 1997 1998 call get_temp_segment_ (me, temp_seg_ptr, code); 1999 if code ^= 0 2000 then call ssu_$abort_line (sci_ptr, code, 2001 "While trying to create a temporary segment for the options."); 2002 names_and_values_area_ptr = temp_seg_ptr; 2003 call mdbm_util_$mu_define_area (names_and_values_area_ptr, 2004 (sys_info$max_seg_size), "options.LIN", EXTENSIBLE, 2005 NON_FREEING, NO_ZERO_ON_ALLOC, NO_ZERO_ON_FREE, code); 2006 if code ^= 0 2007 then call ssu_$abort_line (sci_ptr, code, 2008 "While trying to define an area for allocations of options."); 2009 report_control_info.name_value_area_ptr = names_and_values_area_ptr; 2010 2011 /* Create a temp seg for star name processing and other temp operations. */ 2012 2013 call get_temp_segment_ (me, temp_seg_ptr, code); 2014 if code ^= 0 2015 then call ssu_$abort_line (sci_ptr, code, 2016 "While trying to create a temporary segment for the options."); 2017 report_control_info.name_value_temp_seg_ptr = temp_seg_ptr; 2018 2019 /* Create a temp seg/area for display work space. */ 2020 2021 call get_temp_segment_ (me, temp_seg_ptr, code); 2022 if code ^= 0 2023 then call ssu_$abort_line (sci_ptr, code, 2024 "While trying to create a temporary segment for the options."); 2025 call mdbm_util_$mu_define_area (temp_seg_ptr, 2026 (sys_info$max_seg_size), "display.LIN", EXTENSIBLE, 2027 NON_FREEING, NO_ZERO_ON_ALLOC, NO_ZERO_ON_FREE, code); 2028 if code ^= 0 2029 then call ssu_$abort_line (sci_ptr, code, 2030 "While trying to define an area for allocations for display."); 2031 report_control_info.display_work_area_ptr = temp_seg_ptr; 2032 2033 /* Create a temp seg for holding the formatted page. */ 2034 2035 call get_temp_segment_ (me, temp_seg_ptr, code); 2036 if code ^= 0 2037 then call ssu_$abort_line (sci_ptr, code, 2038 "While trying to create a temporary segment for the report."); 2039 report_control_info.report_temp_seg_ptr = temp_seg_ptr; 2040 2041 /* Create a temp seg for report allocations. Define an 2042* area over it. */ 2043 2044 call get_temp_segment_ (me, temp_seg_ptr, code); 2045 if code ^= 0 2046 then call ssu_$abort_line (sci_ptr, code, 2047 "While trying to create a temporary segment for the report."); 2048 call mdbm_util_$mu_define_area (temp_seg_ptr, 2049 (sys_info$max_seg_size), "options.LIN", EXTENSIBLE, 2050 NON_FREEING, NO_ZERO_ON_ALLOC, NO_ZERO_ON_FREE, code); 2051 if code ^= 0 2052 then call ssu_$abort_line (sci_ptr, code, 2053 "While trying to define an area for allocations of report information."); 2054 report_control_info.report_work_area_ptr = temp_seg_ptr; 2055 2056 /* Create 4 temp segs for report building workspace. */ 2057 2058 call get_temp_segment_ (me, temp_seg_ptr, code); 2059 if code ^= 0 2060 then call ssu_$abort_line (sci_ptr, code, 2061 "While trying to create a temporary segment for the report."); 2062 report_control_info.input_string_temp_seg_ptr = temp_seg_ptr; 2063 2064 call get_temp_segment_ (me, temp_seg_ptr, code); 2065 if code ^= 0 2066 then call ssu_$abort_line (sci_ptr, code, 2067 "While trying to create a temporary segment for the report."); 2068 report_control_info.output_string_temp_seg_ptr = temp_seg_ptr; 2069 2070 call get_temp_segment_ (me, temp_seg_ptr, code); 2071 if code ^= 0 2072 then call ssu_$abort_line (sci_ptr, code, 2073 "While trying to create a temporary segment for the report."); 2074 report_control_info.editing_strings_temp_seg_ptr = temp_seg_ptr; 2075 2076 call get_temp_segment_ (me, temp_seg_ptr, code); 2077 if code ^= 0 2078 then call ssu_$abort_line (sci_ptr, code, 2079 "While trying to create a temporary segment for the report."); 2080 report_control_info.headers_temp_seg_ptr = temp_seg_ptr; 2081 2082 /* Set a few values so we start cleanly */ 2083 2084 report_control_info.format_report_info_ptr = null (); 2085 report_control_info.display_iocb_ptr = null (); 2086 report_control_info.temp_dir_name = get_pdir_ (); 2087 allocate status_branch in (names_and_values_area) set (status_ptr); 2088 call expand_pathname_ (report_control_info.temp_dir_name, 2089 directory_name, entry_name, code); 2090 if code ^= 0 2091 then call ssu_$abort_line (sci_ptr, code, 2092 "While trying to expand ^a.", report_control_info.temp_dir_name); 2093 call hcs_$status_long (directory_name, entry_name, 1, 2094 status_ptr, null (), code); 2095 if code ^= 0 & code ^= error_table_$no_s_permission 2096 then call ssu_$abort_line (sci_ptr, code, 2097 "While trying to determine the unique id of ^a.", 2098 report_control_info.temp_dir_name); 2099 report_control_info.temp_dir_unique_id = status_branch.long.uid; 2100 2101 return; 2102 2103 end setup_to_do_reporting; 2104 2105 valid_option_value: proc ( 2106 2107 vov_option_name_parm, /* input: option name */ 2108 vov_option_value_parm /* input: option value */ 2109 ) returns (bit (1)); 2110 2111 /* 2112* 2113* This function is invoked to check the value for an option. It expects 2114* that vov_option_name_parm contains a valid option name which has been 2115* expanded, and that vov_option_value_parm contains the value to check for 2116* validity. This function calls an internal procedure to do the checking. 2117* These internal procedures are declared in the three tables immediately 2118* following this description. If it is a valid value, "1"b is returned. 2119* "0"b indicates an invalid value. 2120* 2121**/ 2122 2123 dcl vov_any_or_all bit (1) aligned; 2124 dcl vov_check_result_bit bit (1) aligned; 2125 2126 dcl vov_check_procs_for_general_report_options (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) entry init ( 2127 2128 check_any_single_printable_character, /* "-delimiter" */ 2129 check_on_or_off, /* "-format_document_controls" */ 2130 check_on_or_off, /* "-hyphenation" */ 2131 check_any_character_string, /* "-page_footer_value" */ 2132 check_any_character_string, /* "-page_header_value" */ 2133 check_zero_or_greater_than_six, /* "-page_length" */ 2134 check_zero_or_any_positive_integer, /* "-page_width" */ 2135 check_on_or_off, /* "-title_line" */ 2136 check_any_printable_string_no_NL /* "-truncation" */ 2137 ); 2138 2139 dcl vov_check_procs_for_general_column_options (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) entry init ( 2140 2141 check_all_column_names_eventually, /* "-column_order" */ 2142 check_any_column_names_or_none, /* "-count" */ 2143 check_any_column_names_or_none, /* "-exclude" */ 2144 check_and_keep_triggers_consistent, /* "-group" */ 2145 check_any_valid_group_list, /* "-group_footer_trigger" */ 2146 check_any_character_string, /* "-group_footer_value" */ 2147 check_any_valid_group_list, /* "-group_header_trigger" */ 2148 check_any_character_string, /* "-group_header_value" */ 2149 check_any_column_names_or_none, /* "-outline" */ 2150 check_any_column_names_or_none, /* "-page_break" */ 2151 check_any_character_string, /* "-row_footer_value" */ 2152 check_any_character_string, /* "-row_header_value" */ 2153 check_subcount_list_or_none, /* "-subcount" */ 2154 check_subtotal_list_or_none, /* "-subtotal" */ 2155 check_any_column_names_or_none /* "-total" */ 2156 ); 2157 2158 dcl vov_check_procs_for_specific_column_options (NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE) entry init ( 2159 2160 check_any_alignment_mode, /* "-alignment" */ 2161 check_any_character_string, /* "-editing" */ 2162 check_any_folding_action, /* "-folding" */ 2163 check_any_printable_string_no_NL, /* "-separator" */ 2164 check_any_character_string, /* "-title" */ 2165 check_any_positive_integer /* "-width" */ 2166 ); 2167 2168 dcl vov_character_string char (80) varying; 2169 dcl vov_complete_the_list bit (1) aligned; 2170 dcl vov_loop fixed bin; 2171 dcl vov_loop_limit fixed bin; 2172 dcl vov_number_tester fixed bin; 2173 dcl vov_one_to_nine_found bit (1) aligned; 2174 dcl vov_option_name_parm char (*) varying parm; 2175 dcl vov_option_value_parm char (*) varying parm; 2176 dcl vov_target_character char (1); 2177 2178 vov_check_result_bit = OFF; 2179 2180 call lookup_option_number (vov_option_name_parm, 2181 option_type, option_table_index); 2182 if option_table_index = 0 2183 then return (OFF); 2184 2185 if option_type = GENERAL_REPORT_OPTION 2186 then call vov_check_procs_for_general_report_options (option_table_index); 2187 else if option_type = GENERAL_COLUMN_OPTION 2188 then call vov_check_procs_for_general_column_options (option_table_index); 2189 else call vov_check_procs_for_specific_column_options (option_table_index); 2190 2191 return (vov_check_result_bit); 2192 2193 check_all_column_names_eventually: proc; 2194 2195 vov_any_or_all = ANY; 2196 vov_complete_the_list = ON; 2197 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2198 2199 return; 2200 2201 end check_all_column_names_eventually; 2202 2203 check_and_keep_triggers_consistent: proc; 2204 2205 dcl caktc_group_list_ptr ptr; 2206 dcl caktc_inner_loop fixed bin; 2207 dcl caktc_loop fixed bin; 2208 2209 if vov_option_value_parm = "" 2210 then do; 2211 do caktc_loop = INDEX_FOR_GROUP_HEADER_TRIGGER, INDEX_FOR_GROUP_FOOTER_TRIGGER; 2212 call value_$set (value_seg_ptr, PERMANENT, 2213 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 2214 OPTIONS.GENERAL_COLUMN.VALUE (caktc_loop), 2215 returned_option_value, code); 2216 if code ^= 0 2217 then call ssu_$abort_line (sci_ptr, code, 2218 "While trying to set the value ^a for ^a.", 2219 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 2220 OPTIONS.GENERAL_COLUMN.VALUE (caktc_loop)); 2221 report_control_info.format_options_flags. 2222 general_column_default_value (caktc_loop) = ON; 2223 end; 2224 vov_check_result_bit = ON; 2225 return; 2226 end; 2227 2228 vov_any_or_all = ANY; 2229 vov_complete_the_list = OFF; 2230 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2231 if ^vov_check_result_bit 2232 then return; 2233 2234 caktc_group_list_ptr = judgement_table_ptr; 2235 caktc_option_value = vov_option_value_parm; 2236 do caktc_loop = INDEX_FOR_GROUP_HEADER_TRIGGER, INDEX_FOR_GROUP_FOOTER_TRIGGER; 2237 call value_$get (value_seg_ptr, PERMANENT, OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 2238 vov_option_value_parm, code); 2239 if code ^= 0 2240 then call ssu_$abort_line (sci_ptr, code, 2241 "While trying to get the value of ^a.", 2242 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop)); 2243 if vov_option_value_parm ^= "" 2244 then do; 2245 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2246 do caktc_inner_loop = 1 to number_of_defined_columns; 2247 if judgement_table.present (caktc_inner_loop) 2248 then if ^(caktc_group_list_ptr -> judgement_table.present (caktc_inner_loop)) 2249 then judgement_table.present (caktc_inner_loop) = OFF; 2250 else; 2251 else; 2252 end; 2253 vov_option_value_parm = ""; 2254 do caktc_inner_loop = 1 to number_of_defined_columns; 2255 if judgement_table.present (caktc_inner_loop) 2256 then vov_option_value_parm = vov_option_value_parm 2257 || table_info.columns (caktc_inner_loop).column_name || BLANK; 2258 else; 2259 end; 2260 vov_option_value_parm = rtrim (vov_option_value_parm); 2261 call value_$set (value_seg_ptr, PERMANENT, 2262 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), vov_option_value_parm, 2263 returned_option_value, code); 2264 if code ^= 0 2265 then call ssu_$abort_line (sci_ptr, code, 2266 "While trying to set the value ^a for ^a.", 2267 vov_option_value_parm, OPTIONS.GENERAL_COLUMN.NAME (caktc_loop)); 2268 if vov_option_value_parm = "" 2269 then report_control_info.format_options_flags. 2270 general_column_default_value (caktc_loop) = ON; 2271 end; 2272 end; 2273 2274 vov_check_result_bit = ON; 2275 vov_option_value_parm = caktc_option_value; 2276 2277 return; 2278 2279 end check_and_keep_triggers_consistent; 2280 2281 check_any_alignment_mode: proc; 2282 2283 if vov_option_value_parm = RIGHT 2284 | vov_option_value_parm = LEFT 2285 | vov_option_value_parm = CENTER 2286 | vov_option_value_parm = BOTH 2287 then vov_check_result_bit = ON; 2288 else do; 2289 vov_character_string = before (vov_option_value_parm, BLANK); 2290 if vov_character_string ^= DECIMAL 2291 then return; 2292 vov_character_string 2293 = ltrim (rtrim (after (vov_option_value_parm, DECIMAL))); 2294 if verify (vov_character_string, DIGITS) = 0 2295 then if convert (vov_loop, vov_character_string) ^= 0 2296 then vov_check_result_bit = ON; 2297 else; 2298 else; 2299 end; 2300 2301 return; 2302 2303 end check_any_alignment_mode; 2304 2305 check_any_character_string: proc; 2306 2307 vov_check_result_bit = ON; 2308 2309 return; 2310 2311 end check_any_character_string; 2312 2313 check_any_column_names_or_none: proc; 2314 2315 if vov_option_value_parm = "" 2316 then do; 2317 vov_check_result_bit = ON; 2318 return; 2319 end; 2320 vov_any_or_all = ANY; 2321 vov_complete_the_list = OFF; 2322 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2323 2324 return; 2325 2326 end check_any_column_names_or_none; 2327 2328 check_any_folding_action: proc; 2329 2330 if vov_option_value_parm = FILL 2331 | vov_option_value_parm = TRUNCATE 2332 then vov_check_result_bit = ON; 2333 2334 return; 2335 2336 end check_any_folding_action; 2337 2338 check_any_printable_string_no_NL: proc; 2339 2340 vov_loop_limit = length (vov_option_value_parm); 2341 if vov_loop_limit = 0 2342 then do; 2343 vov_check_result_bit = ON; 2344 return; 2345 end; 2346 do vov_loop = 1 to vov_loop_limit; 2347 vov_target_character = substr (vov_option_value_parm, vov_loop, 1); 2348 if vov_target_character < BLANK 2349 | vov_target_character > TILDE 2350 then return; 2351 end; 2352 vov_check_result_bit = ON; 2353 2354 return; 2355 2356 end check_any_printable_string_no_NL; 2357 2358 check_any_single_printable_character: proc; 2359 2360 if length (vov_option_value_parm) = 1 2361 then if vov_option_value_parm >= BLANK 2362 & vov_option_value_parm <= TILDE 2363 then vov_check_result_bit = ON; 2364 else; 2365 else; 2366 2367 return; 2368 2369 end check_any_single_printable_character; 2370 2371 check_any_positive_integer: proc; 2372 2373 vov_loop_limit = length (vov_option_value_parm); 2374 if vov_loop_limit = 0 2375 then return; 2376 vov_one_to_nine_found = OFF; 2377 do vov_loop = 1 to vov_loop_limit; 2378 vov_target_character = substr (vov_option_value_parm, vov_loop, 1); 2379 if vov_target_character < ZERO 2380 | vov_target_character > NINE 2381 then return; 2382 if vov_target_character ^= ZERO 2383 then vov_one_to_nine_found = ON; 2384 end; 2385 if vov_one_to_nine_found 2386 then vov_check_result_bit = ON; 2387 2388 return; 2389 2390 end check_any_positive_integer; 2391 2392 check_any_valid_group_list: proc; 2393 2394 dcl cavgl_group_list_judgement_table_ptr ptr; 2395 dcl cavgl_loop fixed bin; 2396 2397 if vov_option_value_parm = "" 2398 then do; 2399 vov_check_result_bit = ON; 2400 return; 2401 end; 2402 vov_any_or_all = ANY; 2403 vov_complete_the_list = OFF; 2404 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2405 if ^vov_check_result_bit 2406 then return; 2407 cavgl_group_list_judgement_table_ptr = judgement_table_ptr; 2408 cavgl_save_option_value = vov_option_value_parm; 2409 call value_$get (value_seg_ptr, PERMANENT, OPTIONS.GENERAL_COLUMN.NAME 2410 (INDEX_FOR_GROUP), vov_option_value_parm, code); 2411 if code ^= 0 2412 then call ssu_$abort_line (sci_ptr, code, 2413 "While trying to get the value of ^a.", 2414 OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_GROUP)); 2415 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2416 if ^vov_check_result_bit 2417 then return; 2418 vov_option_value_parm = cavgl_save_option_value; 2419 vov_check_result_bit = OFF; 2420 2421 do cavgl_loop = 1 to number_of_defined_columns; 2422 if cavgl_group_list_judgement_table_ptr -> judgement_table.present (cavgl_loop) 2423 then if ^judgement_table.present (cavgl_loop) 2424 then return; 2425 else; 2426 else; 2427 end; 2428 vov_check_result_bit = ON; 2429 2430 return; 2431 2432 end check_any_valid_group_list; 2433 2434 check_on_or_off: proc; 2435 2436 if vov_option_value_parm = "on" 2437 | vov_option_value_parm = "off" 2438 then vov_check_result_bit = ON; 2439 2440 return; 2441 2442 end check_on_or_off; 2443 2444 check_subcount_list_or_none: proc; 2445 2446 if vov_option_value_parm = "" 2447 then do; 2448 vov_check_result_bit = ON; 2449 return; 2450 end; 2451 2452 vov_check_result_bit = replace_subtotal_list_after_checking (ALLOW_DUPLICATES); 2453 2454 return; 2455 2456 end check_subcount_list_or_none; 2457 2458 check_subtotal_list_or_none: proc; 2459 2460 if vov_option_value_parm = "" 2461 then do; 2462 vov_check_result_bit = ON; 2463 return; 2464 end; 2465 2466 vov_check_result_bit = replace_subtotal_list_after_checking (DONT_ALLOW_DUPLICATES); 2467 2468 return; 2469 2470 end check_subtotal_list_or_none; 2471 2472 check_zero_or_any_positive_integer: proc; 2473 2474 if verify (vov_option_value_parm, DIGITS) = 0 2475 then vov_check_result_bit = ON; 2476 2477 return; 2478 2479 end check_zero_or_any_positive_integer; 2480 2481 check_zero_or_greater_than_six: proc; 2482 2483 if verify (vov_option_value_parm, DIGITS) = 0 2484 then do; 2485 vov_number_tester = convert (vov_number_tester, 2486 vov_option_value_parm); 2487 if vov_number_tester = 0 2488 | vov_number_tester > 6 2489 then vov_check_result_bit = ON; 2490 end; 2491 2492 return; 2493 2494 end check_zero_or_greater_than_six; 2495 2496 replace_column_list_after_checking: proc ( 2497 rclac_judgement_table_ptr_parm /* output: points to the judgement table */ 2498 ) returns (bit(1)); 2499 2500 /* 2501* 2502* This proc is called to check a list of columns, which may be given as 2503* column names or numbers, and then create a new list containing only column 2504* names if the check proved sucessful. It expects that 2505* vov_option_value_parm contains the list of columns. The variable 2506* vov_any_or_all_parm dictates what type of checking is done. Since the 2507* time when this code was written the restriction of having all columns 2508* named in a "-column_order" option was removed, but this subroutine still 2509* provides the service of validating that all columns are present in a list 2510* because it is felt an additional option which has this requirement may 2511* be added sometime in the future. If the check proves sucessfull, 2512* vov_option_value_parm is replaced with a list of column names, and "1"b is 2513* returned. An unsucessful check returns "0"b and the value of 2514* vov_option_value_parm isn't set. If the variable vov_complete_the_list 2515* is on the list is filled in with any missing columns; if it is off the 2516* list will only contain the names of the columns found. The judgment_table 2517* structure if filled in to describe the original list found. Each bit 2518* turned on indicates that particular column was found in the list and the 2519* number field of the structure indicates where in the list it was found. 2520* 2521**/ 2522 2523 dcl rclac_code fixed bin (35); 2524 dcl rclac_column_name_length fixed bin; 2525 dcl rclac_current_position fixed bin; 2526 dcl rclac_finished bit (1) aligned; 2527 dcl rclac_first_blank fixed bin; 2528 dcl rclac_hit bit (1) aligned; 2529 dcl rclac_inner_loop fixed bin; 2530 dcl 1 rclac_judgement_table (number_of_defined_columns) like judgement_table based (rclac_judgement_table_ptr); 2531 dcl rclac_judgement_table_ptr ptr; 2532 dcl rclac_judgement_table_ptr_parm ptr parm; 2533 dcl rclac_loop fixed bin; 2534 dcl rclac_no_of_claimed_digits fixed bin; 2535 dcl rclac_spare_option_value_length fixed bin; 2536 dcl rclac_still_skipping_blanks bit (1) aligned; 2537 dcl rclac_target_character char (1); 2538 2539 rclac_judgement_table_ptr_parm = null (); 2540 if vov_option_value_parm = "" 2541 then return (OFF); 2542 2543 rclac_spare_option_value = ltrim (rtrim (translate 2544 (vov_option_value_parm, BLANK, TAB))) || BLANK; 2545 rclac_spare_option_value_length = length (rclac_spare_option_value); 2546 rclac_current_position = 1; 2547 2548 allocate rclac_judgement_table in (names_and_values_area) 2549 set (rclac_judgement_table_ptr); 2550 unspec (rclac_judgement_table) = OFF; 2551 2552 rclac_finished = OFF; 2553 2554 do rclac_loop = 1 to number_of_defined_columns while (^rclac_finished); 2555 2556 rclac_first_blank = index (substr (rclac_spare_option_value, 2557 rclac_current_position), BLANK) 2558 + rclac_current_position - 1; 2559 if rclac_first_blank >= rclac_spare_option_value_length 2560 then if rclac_loop ^= number_of_defined_columns 2561 & vov_any_or_all = ALL 2562 then return (OFF); 2563 else rclac_finished = ON; 2564 else; 2565 2566 rclac_target_character = substr (rclac_spare_option_value, 2567 rclac_current_position, 1); 2568 if rclac_target_character >= ZERO 2569 & rclac_target_character <= NINE 2570 then do; 2571 rclac_no_of_claimed_digits 2572 = rclac_first_blank - rclac_current_position; 2573 if rclac_no_of_claimed_digits < 1 2574 then return (OFF); 2575 2576 rclac_judgement_table.number (rclac_loop) = cv_dec_check_ 2577 (substr (rclac_spare_option_value, rclac_current_position, 2578 rclac_no_of_claimed_digits), rclac_code); 2579 if rclac_code ^= 0 2580 then return (OFF); 2581 2582 if rclac_judgement_table.number (rclac_loop) < 1 2583 | rclac_judgement_table.number (rclac_loop) > number_of_defined_columns 2584 then return (OFF); 2585 end; 2586 else do; 2587 rclac_hit = OFF; 2588 rclac_column_name_length 2589 = rclac_first_blank - rclac_current_position; 2590 2591 do rclac_inner_loop = 1 to number_of_defined_columns while (^rclac_hit); 2592 if substr (rclac_spare_option_value, 2593 rclac_current_position, rclac_column_name_length) 2594 = table_info.columns.column_name (rclac_inner_loop) 2595 then rclac_hit = ON; 2596 end; 2597 2598 if ^rclac_hit 2599 then return (OFF); 2600 else rclac_judgement_table.number (rclac_loop) 2601 = rclac_inner_loop - 1; 2602 end; 2603 2604 if rclac_judgement_table.present (rclac_judgement_table.number (rclac_loop)) 2605 then return (OFF); 2606 2607 rclac_judgement_table.present ( 2608 rclac_judgement_table.number (rclac_loop)) = ON; 2609 2610 if ^rclac_finished 2611 then do; 2612 rclac_still_skipping_blanks = ON; 2613 rclac_current_position = rclac_first_blank + 1; 2614 do while (rclac_still_skipping_blanks); 2615 if substr (rclac_spare_option_value, 2616 rclac_current_position, 1) ^= BLANK 2617 then rclac_still_skipping_blanks = OFF; 2618 else rclac_current_position 2619 = rclac_current_position + 1; 2620 end; 2621 if rclac_current_position < rclac_spare_option_value_length 2622 & rclac_loop >= number_of_defined_columns 2623 then return (OFF); 2624 end; 2625 end; 2626 2627 if vov_any_or_all = ALL 2628 then do rclac_loop = 1 to number_of_defined_columns; 2629 if ^rclac_judgement_table.present (rclac_loop) 2630 then return (OFF); 2631 end; 2632 2633 rclac_spare_option_value = ""; 2634 2635 do rclac_loop = 1 to number_of_defined_columns; 2636 if rclac_judgement_table.number (rclac_loop) ^= 0 2637 then rclac_spare_option_value = rclac_spare_option_value 2638 || table_info.columns.column_name ( 2639 rclac_judgement_table.number (rclac_loop)) || BLANK; 2640 end; 2641 2642 if vov_complete_the_list 2643 then do rclac_loop = 1 to number_of_defined_columns; 2644 if ^rclac_judgement_table.present (rclac_loop) 2645 then rclac_spare_option_value = rclac_spare_option_value 2646 || table_info.columns.column_name (rclac_loop) || BLANK; 2647 end; 2648 2649 vov_option_value_parm = rtrim (rclac_spare_option_value); 2650 rclac_judgement_table_ptr_parm = rclac_judgement_table_ptr; 2651 2652 return (ON); 2653 2654 end replace_column_list_after_checking; 2655 2656 replace_subtotal_list_after_checking: proc (rslac_allow_duplicates_parm) returns (bit(1)); 2657 2658 /* 2659* 2660* This proc is called to check a list of subtotal triplets, and then 2661* create a new list if the check proved successful. The syntax of a 2662* triplet is "column_1,column_2{,reset|running}". Each triplet is 2663* separated by whitespace. column_N can be given as a column name or 2664* column number. It expects that vov_option_value_parm contains the 2665* list of subtotal triplets. If the check proves successful, 2666* vov_option_value_parm is replaced with a list of triplets which has 2667* each column number replaced by the column name, and the optional 2668* third portion of a triplet filled in. A single blank separates each 2669* triplet in the new list. 2670* 2671**/ 2672 2673 dcl rslac_allow_duplicates_parm bit (1) aligned parm; 2674 dcl rslac_blank_position fixed bin; 2675 dcl rslac_code fixed bin (35); 2676 dcl rslac_current_position fixed bin; 2677 dcl rslac_original_option_value_length fixed bin; 2678 dcl rslac_still_parsing bit (1) aligned; 2679 2680 if vov_option_value_parm = "" 2681 then return (OFF); 2682 2683 rslac_original_option_value = ltrim (rtrim (translate 2684 (vov_option_value_parm, BLANK, TAB))) || BLANK; 2685 rslac_original_option_value_length 2686 = length (rslac_original_option_value); 2687 rslac_result_option_value = ""; 2688 rslac_current_position = 1; 2689 rslac_still_parsing = ON; 2690 2691 do while (rslac_still_parsing); 2692 call get_triplet (rslac_code); 2693 if rslac_code = 0 2694 then call parse_triplet (rslac_allow_duplicates_parm, rslac_code); 2695 end; 2696 2697 if rslac_code ^= 0 2698 then return (OFF); 2699 2700 vov_option_value_parm = rtrim (rslac_result_option_value); 2701 2702 return (ON); 2703 2704 get_triplet: proc (gt_code_parm); 2705 2706 dcl gt_code_parm fixed bin (35) parm; 2707 dcl gt_still_skipping_blanks bit (1) aligned; 2708 2709 gt_code_parm = 0; 2710 rslac_blank_position 2711 = index (substr (rslac_original_option_value, 2712 rslac_current_position), BLANK); 2713 rslac_triplet = substr (rslac_original_option_value, 2714 rslac_current_position, rslac_blank_position - 1); 2715 rslac_current_position 2716 = rslac_current_position + rslac_blank_position; 2717 2718 if rslac_current_position >= rslac_original_option_value_length 2719 then rslac_still_parsing = OFF; 2720 else do; 2721 gt_still_skipping_blanks = ON; 2722 do while (gt_still_skipping_blanks); 2723 if substr (rslac_original_option_value, 2724 rslac_current_position, 1) = BLANK 2725 then rslac_current_position = rslac_current_position + 1; 2726 else gt_still_skipping_blanks = OFF; 2727 end; 2728 end; 2729 2730 return; 2731 2732 end get_triplet; 2733 2734 parse_triplet: proc ( 2735 pt_allow_duplicates_parm, /* input: on means allow duplicate definitions, 2736* a subtotal can also "watch" itself */ 2737 pt_code_parm /* output: success or failure */ 2738 ); 2739 2740 dcl pt_allow_duplicates_parm bit (1) aligned parm; 2741 dcl pt_character_string char (80) varying; 2742 dcl pt_code_parm fixed bin (35) parm; 2743 dcl pt_column_number fixed bin; 2744 dcl pt_comma_position fixed bin; 2745 dcl pt_current_position fixed bin; 2746 dcl pt_first_column_found fixed bin; 2747 dcl pt_hit bit (1) aligned; 2748 dcl pt_inner_loop fixed bin; 2749 dcl pt_loop fixed bin; 2750 dcl pt_second_column_found fixed bin; 2751 dcl pt_triplet_length fixed bin; 2752 2753 pt_code_parm = 1; 2754 pt_triplet_length = length (rslac_triplet); 2755 pt_current_position = 1; 2756 2757 do pt_loop = 1 to 2; 2758 pt_comma_position = index (substr (rslac_triplet, 2759 pt_current_position), COMMA); 2760 if pt_comma_position = 0 2761 then if pt_loop = 1 2762 then return; 2763 else pt_comma_position 2764 = pt_triplet_length + 2 - pt_current_position; 2765 else; 2766 pt_character_string = substr (rslac_triplet, 2767 pt_current_position, pt_comma_position - 1); 2768 pt_current_position = pt_current_position + pt_comma_position; 2769 if pt_current_position > pt_triplet_length 2770 & pt_loop = 1 2771 then return; 2772 if verify (pt_character_string, DIGITS) = 0 2773 then do; 2774 pt_column_number = convert (pt_column_number, 2775 pt_character_string); 2776 if pt_column_number < 1 2777 | pt_column_number > number_of_defined_columns 2778 then return; 2779 else; 2780 rslac_result_option_value 2781 = rslac_result_option_value 2782 || table_info.columns.column_name (pt_column_number) || COMMA; 2783 if pt_loop = 1 2784 then pt_first_column_found = pt_column_number; 2785 else pt_second_column_found = pt_column_number; 2786 end; 2787 else do; 2788 pt_hit = OFF; 2789 do pt_inner_loop = 1 to number_of_defined_columns while (^pt_hit); 2790 if pt_character_string 2791 = table_info.columns.column_name (pt_inner_loop) 2792 then do; 2793 pt_hit = ON; 2794 pt_column_number = pt_inner_loop; 2795 end; 2796 end; 2797 if ^pt_hit 2798 then return; 2799 else; 2800 if pt_loop = 1 2801 then pt_first_column_found = pt_column_number; 2802 else pt_second_column_found = pt_column_number; 2803 rslac_result_option_value 2804 = rslac_result_option_value 2805 || pt_character_string || COMMA; 2806 end; 2807 end; 2808 2809 if ^pt_allow_duplicates_parm 2810 then if pt_first_column_found = pt_second_column_found 2811 then return; 2812 else; 2813 else; 2814 2815 if pt_current_position >= pt_triplet_length 2816 then rslac_result_option_value 2817 = rslac_result_option_value || RESET || BLANK; 2818 else do; 2819 pt_character_string = substr (rslac_triplet, 2820 pt_current_position); 2821 if pt_character_string = RESET 2822 then rslac_result_option_value 2823 = rslac_result_option_value || RESET || BLANK; 2824 else if pt_character_string = RUNNING 2825 then rslac_result_option_value 2826 = rslac_result_option_value || RUNNING || BLANK; 2827 else return; 2828 end; 2829 2830 pt_code_parm = 0; 2831 2832 return; 2833 2834 end parse_triplet; 2835 2836 end replace_subtotal_list_after_checking; 2837 2838 end valid_option_value; 2839 2840 2841 dcl ALL bit (1) aligned static int options (constant) init ("1"b); 2842 dcl ALLOW_DUPLICATES bit (1) aligned static int options (constant) init ("1"b); 2843 dcl ANY bit (1) aligned static int options (constant) init ("0"b); 2844 2845 dcl BLANK char (1) static int options (constant) init (" "); 2846 dcl BOTH char (4) static int options (constant) init ("both"); 2847 2848 dcl CENTER char (6) static int options (constant) init ("center"); 2849 dcl COMMA char (1) static int options (constant) init (","); 2850 2851 dcl DECIMAL char (7) static int options (constant) init ("decimal"); 2852 dcl DIGITS char (10) static int options (constant) init ("0123456789"); 2853 dcl DONT_ALLOW_DUPLICATES bit (1) aligned static int options (constant) init ("0"b); 2854 2855 dcl EXTENSIBLE bit (1) aligned static int options (constant) init ("1"b); 2856 2857 dcl FILL char (4) static int options (constant) init ("fill"); 2858 2859 dcl LEFT char (4) static int options (constant) init ("left"); 2860 dcl LEFT_BRACKET char (1) static int options (constant) init ("["); 2861 2862 dcl NINE char (1) static int options (constant) init ("9"); 2863 dcl NO_ZERO_ON_ALLOC bit (1) aligned static int options (constant) init ("0"b); 2864 dcl NO_ZERO_ON_FREE bit (1) aligned static int options (constant) init ("0"b); 2865 dcl NON_FREEING bit (1) aligned static int options (constant) init ("1"b); 2866 2867 dcl OFF bit (1) aligned static int options (constant) init ("0"b); 2868 dcl ON bit (1) aligned static int options (constant) init ("1"b); 2869 2870 dcl PERMANENT bit (36) aligned static int options (constant) init ("01"b); 2871 2872 dcl RESET char (5) static int options (constant) init ("reset"); 2873 dcl RIGHT char (5) static int options (constant) init ("right"); 2874 dcl RUNNING char (7) static int options (constant) init ("running"); 2875 2876 dcl STAR_OR_QUESTION_MARK char (2) static int options (constant) init ("*?"); 2877 dcl STAR_DOT_STAR_STAR char (4) static int options (constant) init ("*.**"); 2878 2879 dcl TAB char (1) static int options (constant) init (" "); 2880 dcl TILDE char (1) static int options (constant) init ("~"); 2881 dcl TRUNCATE char (8) static int options (constant) init ("truncate"); 2882 2883 dcl ZERO char (1) static int options (constant) init ("0"); 2884 2885 dcl addr builtin; 2886 dcl after builtin; 2887 2888 dcl before builtin; 2889 2890 dcl caktc_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2891 dcl cavgl_save_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2892 dcl char builtin; 2893 dcl code fixed bin (35); 2894 dcl column_map (number_of_defined_columns) bit (1) based (column_map_ptr); 2895 dcl column_map_ptr ptr; 2896 dcl convert builtin; 2897 dcl cv_dec_check_ entry (char(*), fixed bin(35)) returns(fixed bin(35)); 2898 2899 dcl delete_$ptr entry (ptr, bit(6), char(*), fixed bin(35)); 2900 dcl directory_name char (168); 2901 dcl divide builtin; 2902 2903 dcl entry_name char (32); 2904 dcl error_table_$no_s_permission fixed bin(35) ext static; 2905 dcl error_table_$nomatch fixed bin(35) ext static; 2906 dcl error_table_$nostars fixed bin(35) ext static; 2907 dcl error_table_$oldnamerr fixed bin(35) ext static; 2908 dcl expand_pathname_ entry (char(*), char(*), char(*), fixed bin(35)); 2909 2910 dcl fixed builtin; 2911 2912 dcl general_columns_names_and_values_info_ptr ptr; 2913 dcl general_report_names_and_values_info_ptr ptr; 2914 dcl get_pdir_ entry() returns(char(168)); 2915 dcl get_temp_segment_ entry (char(*), ptr, fixed bin(35)); 2916 2917 dcl hbound builtin; 2918 dcl hcs_$make_seg entry (char(*), char(*), char(*), fixed bin(5), ptr, fixed bin(35)); 2919 dcl hcs_$status_long entry (char(*), char(*), fixed bin(1), ptr, ptr, fixed bin(35)); 2920 2921 dcl index builtin; 2922 2923 dcl 1 judgement_table (number_of_defined_columns) aligned based (judgement_table_ptr), 2924 2 present bit (1), 2925 2 number fixed bin (35); 2926 dcl judgement_table_ptr ptr; 2927 2928 dcl length builtin; 2929 dcl 1 like_name_value_info (no_of_active_names_and_values) based (like_names_and_values_info_ptr) like name_value_info; 2930 dcl like_names_and_values_info_ptr ptr; 2931 dcl linus_error_$bad_option_identifier fixed bin(35) ext static; 2932 dcl linus_error_$bad_option_name fixed bin(35) ext static; 2933 dcl linus_error_$bad_option_value fixed bin(35) ext static; 2934 dcl linus_error_$no_lila_expr_processed fixed bin(35) ext static; 2935 dcl linus_fr_delete_report entry (ptr, fixed bin(35)); 2936 dcl match_star_name_ entry (char(*), char(*), fixed bin(35)); 2937 dcl linus_table$info entry (ptr, ptr, fixed bin (35)); 2938 dcl long_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2939 dcl ltrim builtin; 2940 dcl lvswcd_option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2941 dcl lvswcd_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2942 dcl lvswcd_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2943 2944 dcl max builtin; 2945 dcl me char (64); 2946 dcl mdbm_util_$mu_define_area entry (ptr, fixed bin(18), char(11), bit(1) aligned, bit(1) aligned, bit(1) aligned, bit(1) aligned, fixed bin(35)); 2947 2948 dcl names_and_values_area area (sys_info$max_seg_size) based (names_and_values_area_ptr); 2949 dcl names_and_values_area_ptr ptr; 2950 dcl names_and_values_bit_map (no_of_names_and_values_in_bit_map) bit (1) based (names_and_values_bit_map_ptr); 2951 dcl names_and_values_bit_map_ptr ptr; 2952 dcl names_and_values_temp_seg_ptr ptr; 2953 dcl normalized_option_name char (MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH) varying; 2954 dcl no_of_active_names_and_values fixed bin; 2955 dcl no_of_names_and_values_in_bit_map fixed bin; 2956 dcl null builtin; 2957 dcl number_of_defined_columns fixed bin; 2958 2959 dcl option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2960 dcl option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2961 dcl option_table_index fixed bin; 2962 dcl option_type fixed bin; 2963 dcl option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2964 2965 dcl rel builtin; 2966 dcl release_area_ entry (ptr); 2967 dcl release_temp_segment_ entry (char(*), ptr, fixed bin(35)); 2968 dcl returned_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2969 dcl rclac_spare_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2970 dcl rslac_original_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2971 dcl rslac_result_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2972 dcl rslac_triplet char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2973 dcl rtrim builtin; 2974 2975 dcl sci_ptr ptr; 2976 dcl search builtin; 2977 dcl specific_columns_names_and_values_info_ptr ptr; 2978 dcl 1 star_name_info based (star_name_info_ptr), 2979 2 maximum_number_of_star_names fixed bin, 2980 2 number_of_star_names fixed bin, 2981 2 star_name_map (maximum_number_of_star_names) bit (1), 2982 2 column_maps_info (number_of_star_names), 2983 3 number_of_matches fixed bin, 2984 3 column_bit_map (number_of_defined_columns) bit (1); 2985 dcl star_name_info_ptr ptr; 2986 dcl ssu_$abort_line entry() options(variable); 2987 dcl ssu_$print_message entry() options(variable); 2988 dcl substr builtin; 2989 dcl sv_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2990 dcl sv_spare_option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2991 dcl sv_spare_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2992 dcl sys_info$max_seg_size fixed bin(35) ext static; 2993 dcl system_default bit (1) aligned; 2994 2995 dcl temp_seg_ptr ptr; 2996 dcl translate builtin; 2997 2998 dcl unspec builtin; 2999 3000 dcl valid_selection_expression bit (1) aligned; 3001 dcl value_seg_ptr ptr; 3002 dcl value_$delete entry (ptr, bit(36) aligned, char(*), fixed bin(35)); 3003 dcl value_$init_seg entry (ptr, fixed bin, ptr, fixed bin(19), fixed bin(35)); 3004 dcl value_$get entry() options(variable); 3005 dcl value_$list entry (ptr, bit(36) aligned, ptr, ptr, ptr, fixed bin(35)); 3006 dcl value_$set entry() options(variable); 3007 dcl verify builtin; 3008 3009 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 */ 3010 3011 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 */ 3012 3013 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 */ 3014 3015 4 1 /* BEGIN INCLUDE FILE linus_format_options.incl.pl1 4 2* 4 3* Formatting options used for producing reports. 4 4* Al Dupuis - August 1983 4 5* 4 6**/ 4 7 /* format: off */ 4 8 4 9 dcl 1 OPTIONS static int options (constant), 4 10 4 11 2 GENERAL_REPORT (9), 4 12 4 13 3 NAME char (32) varying init ( 4 14 4 15 "-delimiter", /* "!" */ 4 16 "-format_document_controls", /* "off" */ 4 17 "-hyphenation", /* "off" */ 4 18 "-page_footer_value", /* "" */ 4 19 "-page_header_value", /* "" */ 4 20 "-page_length", /* "66" */ 4 21 "-page_width", /* "79" */ 4 22 "-title_line", /* "on" */ 4 23 "-truncation" /* "*" */ 4 24 ), 4 25 4 26 3 VALUE char (32) varying init ( 4 27 4 28 "!", /* "-delimiter" */ 4 29 "off", /* "-format_document_controls " */ 4 30 "off", /* "-hyphenation" */ 4 31 "", /* "-page_footer_value" */ 4 32 "", /* "-page_header_value" */ 4 33 "66", /* "-page_length" */ 4 34 "79", /* "-page_width" */ 4 35 "on", /* "-title_line" */ 4 36 "*" /* "-truncation" */ 4 37 ), 4 38 4 39 2 GENERAL_COLUMN (15), 4 40 4 41 3 NAME char (32) varying init ( 4 42 4 43 "-column_order", /* "[sequential]" */ 4 44 "-count", /* "" */ 4 45 "-exclude", /* "" */ 4 46 "-group", /* "" */ 4 47 "-group_footer_trigger", /* "" */ 4 48 "-group_footer_value", /* "" */ 4 49 "-group_header_trigger", /* "" */ 4 50 "-group_header_value", /* "" */ 4 51 "-outline", /* "" */ 4 52 "-page_break", /* "" */ 4 53 "-row_footer_value", /* "" */ 4 54 "-row_header_value", /* "" */ 4 55 "-subcount", /* "" */ 4 56 "-subtotal", /* "" */ 4 57 "-total" /* "" */ 4 58 ), 4 59 4 60 3 VALUE char (32) varying init ( 4 61 4 62 "[sequential]", /* "-column_order" */ 4 63 "", /* "-count" */ 4 64 "", /* "-exclude" */ 4 65 "", /* "-group" */ 4 66 "", /* "-group_footer_trigger" */ 4 67 "", /* "-group_footer_value" */ 4 68 "", /* "-group_header_trigger" */ 4 69 "", /* "-group_header_value" */ 4 70 "", /* "-outline" */ 4 71 "", /* "-page_break" */ 4 72 "", /* "-row_footer_value" */ 4 73 "", /* "-row_header_value" */ 4 74 "", /* "-subcount" */ 4 75 "", /* "-subtotal" */ 4 76 "" /* "-total" */ 4 77 ), 4 78 4 79 2 SPECIFIC_COLUMN (6), 4 80 4 81 3 NAME char (32) varying init ( 4 82 4 83 "-alignment", /* "[alignment_default]" */ 4 84 "-editing", /* "" */ 4 85 "-folding", /* "fill" */ 4 86 "-separator", /* " " */ 4 87 "-title", /* "[database_column_name]" */ 4 88 "-width" /* "[width_default]" */ 4 89 ), 4 90 4 91 3 VALUE char (32) varying init ( 4 92 4 93 "[alignment_default]", /* "-alignment" */ 4 94 "", /* "-editing" */ 4 95 "fill", /* "-folding" */ 4 96 " ", /* "-separator" */ 4 97 "[database_column_name]", /* "-title" */ 4 98 "[width_default]" /* "-width" */ 4 99 ); 4 100 4 101 dcl 1 OPTION_NAMES_AS_ARGS (30) static int options (constant), 4 102 4 103 2 LONG_NAME char (32) varying init ( 4 104 4 105 "-alignment", /* sorted based on their values */ 4 106 "-column_order", 4 107 "-count", 4 108 "-delimiter", 4 109 "-editing", 4 110 "-exclude", 4 111 "-folding", 4 112 "-format_document_controls", 4 113 "-group", 4 114 "-group_footer_trigger", 4 115 "-group_footer_value", 4 116 "-group_header_trigger", 4 117 "-group_header_value", 4 118 "-hyphenation", 4 119 "-outline", 4 120 "-page_break", 4 121 "-page_footer_value", 4 122 "-page_header_value", 4 123 "-page_length", 4 124 "-page_width", 4 125 "-row_footer_value", 4 126 "-row_header_value", 4 127 "-separator", 4 128 "-subcount", 4 129 "-subtotal", 4 130 "-title", 4 131 "-title_line", 4 132 "-total", 4 133 "-truncation", 4 134 "-width" 4 135 ), 4 136 4 137 2 SHORT_NAME char (5) varying init ( 4 138 4 139 "-al", /* sorted based on their values */ 4 140 "-co", 4 141 "-ct", 4 142 "-dm", 4 143 "-ed", 4 144 "-ex", 4 145 "-fdc", 4 146 "-fold", 4 147 "-gft", 4 148 "-gfv", 4 149 "-ght", 4 150 "-ghv", 4 151 "-gr", 4 152 "-hph", 4 153 "-out", 4 154 "-pb", 4 155 "-pfv", 4 156 "-phv", 4 157 "-pl", 4 158 "-pw", 4 159 "-rfv", 4 160 "-rhv", 4 161 "-sct", 4 162 "-sep", 4 163 "-stt", 4 164 "-tc", 4 165 "-tl", 4 166 "-tt", 4 167 "-ttl", 4 168 "-wid" 4 169 ), 4 170 4 171 2 LONG_NAME_IN_SHORT_NAME_ORDER char (32) varying init ( 4 172 4 173 /* sorted based on the values of short_name */ 4 174 4 175 "-alignment", /* -al */ 4 176 "-column_order", /* -co */ 4 177 "-count", /* -ct */ 4 178 "-delimiter", /* -dm */ 4 179 "-editing", /* -ed */ 4 180 "-exclude", /* -ex */ 4 181 "-format_document_controls", /* -fdc */ 4 182 "-folding", /* -fold */ 4 183 "-group_footer_trigger", /* -gfv */ 4 184 "-group_footer_value", /* -gfv */ 4 185 "-group_header_trigger", /* -ghv */ 4 186 "-group_header_value", /* -ghv */ 4 187 "-group", /* -gr */ 4 188 "-hyphenation", /* -hph */ 4 189 "-outline", /* -out */ 4 190 "-page_break", /* -pb */ 4 191 "-page_footer_value", /* -pfv */ 4 192 "-page_header_value", /* -phv */ 4 193 "-page_length", /* -pl */ 4 194 "-page_width", /* -pw */ 4 195 "-row_footer_value", /* -rfv */ 4 196 "-row_header_value", /* -rhv */ 4 197 "-subcount", /* -sct */ 4 198 "-separator", /* -sep */ 4 199 "-subtotal", /* -stt */ 4 200 "-truncation", /* -tc */ 4 201 "-title_line", /* -tl */ 4 202 "-total", /* -tt */ 4 203 "-title", /* -ttl */ 4 204 "-width" /* -wid */ 4 205 ); 4 206 4 207 /* END INCLUDE FILE linus_format_options */ 3016 3017 5 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 5 7* install(86-07-29,MR12.0-1106): 5 8* Added general_work_area_ptr and renamed sfr_ptr to 5 9* force_retrieve_scope_ptr. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* HISTORY: 5 14* 5 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 5 16* 5 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 5 18* a part of the attribute level control work. 5 19* 5 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 5 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 5 22* scope information. 5 23* 5 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 5 25* retaining various vcpu times to be collected when in timing mode. The 5 26* times to be collected are: LINUS parsing time, LINUS processing time, and 5 27* MRDS processing time. 5 28* 5 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 5 30* part of the line numbering implementation. This allows for possible later 5 31* LINUS control of the build defaults. 5 32* 5 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 5 34* information is now retained by ssu_. Removed parse_timer as no longer 5 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 5 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 5 37* 5 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 5 39* subsystem_invocation_level, and selection_expression_identifier. 5 40* 5 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 5 42* table_control_info_ptr. 5 43* 5 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 5 45* 5 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 5 47* 5 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 5 49* 5 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 5 51**/ 5 52 5 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 5 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 5 55 2 rb_len fixed bin (21), /* length of request buffer */ 5 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 5 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 5 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 5 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 5 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 5 61 2 test_flag bit (1) unal, /* on if in test mode */ 5 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 5 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 5 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 5 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 5 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 5 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 5 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 5 69 2 reserved bit (27) unal, 5 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 5 71 2 rb_ptr ptr, /* ptr to request buffer */ 5 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 5 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 5 74 2 ttn_ptr ptr, /* pointer to table info structure */ 5 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 5 76 2 lv_ptr ptr, /* pointer linus variables */ 5 77 2 si_ptr ptr, /* pointer to select_info structure */ 5 78 2 setfi_ptr ptr, /* pointer to set function information */ 5 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 5 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 5 81 2 lit_ptr ptr, /* pointer to literal pool */ 5 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 5 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 5 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 5 85* (MR7.0) */ 5 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 5 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 5 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 5 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 5 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 5 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 5 92* for current lila expression */ 5 93 2 unused_timer float bin (63), /* future expansion */ 5 94 2 request_time float bin (63), /* How much request time was spent 5 95* in LINUS. (-1 = user has just enabled 5 96* timing, do not report) */ 5 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 5 98 2 build_increment fixed bin, /* default increment for build mode */ 5 99 2 build_start fixed bin, /* default start count for build mode */ 5 100 2 linus_version char (4), /* current version of LINUS */ 5 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 5 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 5 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 5 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 5 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 5 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 5 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 5 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 5 109 2 word_pad (6) bit (36) unal, 5 110 /* procedures that will be optionally */ 5 111 /* replaced by the user. Saved so they */ 5 112 /* can be reinstated if desired. */ 5 113 2 ssu_abort_line entry options (variable), 5 114 2 ssu_post_request_line variable entry (ptr), 5 115 2 ssu_pre_request_line variable entry (ptr), 5 116 5 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 5 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 5 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 5 120 5 121 dcl lcb_ptr ptr; 5 122 5 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 3018 3019 6 1 /* BEGIN INCLUDE FILE ... linus_names_and_values.incl.pl1 6 2* 6 3* Names and values used for producing reports. These structures provide for 6 4* the passing of format report option names and values between requests and 6 5* the "linus_options" subroutine. The caller (usually a request) fills in the 6 6* "option_name_table" structure, or calls a bulk load entry point such as 6 7* linus_options$get_all. The linus_options subroutine uses the 6 8* "name_value_info" structure and the "names_and_values" character string to 6 9* return the requested names and values. 6 10* 6 11* Al Dupuis - August 1983 6 12**/ 6 13 /* format: off */ 6 14 6 15 /* Describes the "names_and_values" character string below. */ 6 16 6 17 dcl 1 name_value_info (no_of_names_and_values) aligned based (names_and_values_info_ptr), 6 18 2 name, /* location and length in temp seg */ 6 19 3 index fixed bin (21), 6 20 3 length fixed bin (21), 6 21 2 value, /* location and length in temp seg */ 6 22 3 index fixed bin (21), 6 23 3 length fixed bin (21); 6 24 6 25 /* Described by "name_value_info" structure above. */ 6 26 6 27 dcl names_and_values char (size_of_names_and_values) based (names_and_values_ptr); 6 28 6 29 dcl names_and_values_info_ptr ptr init (null()); 6 30 dcl names_and_values_ptr ptr init (null()); 6 31 dcl no_of_names_and_values fixed bin (21); 6 32 dcl size_of_names_and_values fixed bin (21); 6 33 6 34 /* Filled in by the caller (i.e. "list_format_options" request) */ 6 35 6 36 dcl 1 option_name_table (no_of_options_in_name_table) based (option_name_table_ptr), 6 37 2 the_name char (32) varying, /* option name */ 6 38 2 the_identifier char (32) varying; /* null, column name, or star name */ 6 39 6 40 dcl no_of_options_in_name_table fixed bin (21); 6 41 dcl option_name_table_ptr ptr init (null()); 6 42 6 43 /* END INCLUDE FILE linus_names_and_values.incl.pl1 */ 3020 3021 7 1 /* BEGIN INCLUDE FILE linus_options_extents.incl.pl1 7 2* 7 3* Extents for the formatting options used for producing reports. 7 4* Kept as a separate include so that some programs may include this 7 5* file without including linus_format_options.incl.pl1 7 6* 7 7* Al Dupuis - August 1983 7 8* 7 9**/ 7 10 /* format: off */ 7 11 7 12 /* The three types of format options that we have. */ 7 13 7 14 dcl GENERAL_REPORT_OPTION fixed bin static int options (constant) init (1); 7 15 dcl GENERAL_COLUMN_OPTION fixed bin static int options (constant) init (2); 7 16 dcl SPECIFIC_COLUMN_OPTION fixed bin static int options (constant) init (3); 7 17 7 18 /* Used to determine how big the tables are without doing a hbound on it. */ 7 19 7 20 dcl NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (15); 7 21 dcl NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE fixed bin static int options (constant) init (9); 7 22 dcl NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (6); 7 23 7 24 /* Used to determine how much space is needed to list them. */ 7 25 7 26 dcl LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (10); /* -alignment */ 7 27 dcl LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH fixed bin static int options (constant) init (25); /* -format_document_controls */ 7 28 dcl LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (21); /* -group_footer_trigger */ 7 29 7 30 /* MAXIMUM_OPTION_IDENTIFIER_LENGTH + MAXIMUM_OPTION_NAME_LENGTH */ 7 31 7 32 dcl MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH fixed bin static int options (constant) init (101); 7 33 7 34 dcl MAXIMUM_OPTION_IDENTIFIER_LENGTH fixed bin static int options (constant) init (69); 7 35 dcl MAXIMUM_OPTION_NAME_LENGTH fixed bin static int options (constant) init (32); 7 36 dcl MAXIMUM_OPTION_VALUE_LENGTH fixed bin static int options (constant) init (4096); 7 37 7 38 /* Used to index into the OPTIONS tables defined in linus_format_options.incl.pl1. */ 7 39 7 40 dcl INDEX_FOR_DELIMITER fixed bin static int options (constant) init (1); 7 41 dcl INDEX_FOR_FORMAT_DOCUMENT_CONTROLS fixed bin static int options (constant) init (2); 7 42 dcl INDEX_FOR_HYPHENATION fixed bin static int options (constant) init (3); 7 43 dcl INDEX_FOR_PAGE_FOOTER_VALUE fixed bin static int options (constant) init (4); 7 44 dcl INDEX_FOR_PAGE_HEADER_VALUE fixed bin static int options (constant) init (5); 7 45 dcl INDEX_FOR_PAGE_LENGTH fixed bin static int options (constant) init (6); 7 46 dcl INDEX_FOR_PAGE_WIDTH fixed bin static int options (constant) init (7); 7 47 dcl INDEX_FOR_TITLE_LINE fixed bin static int options (constant) init (8); 7 48 dcl INDEX_FOR_TRUNCATION fixed bin static int options (constant) init (9); 7 49 7 50 dcl INDEX_FOR_COLUMN_ORDER fixed bin static int options (constant) init (1); 7 51 dcl INDEX_FOR_COUNT fixed bin static int options (constant) init (2); 7 52 dcl INDEX_FOR_EXCLUDE fixed bin static int options (constant) init (3); 7 53 dcl INDEX_FOR_GROUP fixed bin static int options (constant) init (4); 7 54 dcl INDEX_FOR_GROUP_FOOTER_TRIGGER fixed bin static int options (constant) init (5); 7 55 dcl INDEX_FOR_GROUP_FOOTER_VALUE fixed bin static int options (constant) init (6); 7 56 dcl INDEX_FOR_GROUP_HEADER_TRIGGER fixed bin static int options (constant) init (7); 7 57 dcl INDEX_FOR_GROUP_HEADER_VALUE fixed bin static int options (constant) init (8); 7 58 dcl INDEX_FOR_OUTLINE fixed bin static int options (constant) init (9); 7 59 dcl INDEX_FOR_PAGE_BREAK fixed bin static int options (constant) init (10); 7 60 dcl INDEX_FOR_ROW_FOOTER_VALUE fixed bin static int options (constant) init (11); 7 61 dcl INDEX_FOR_ROW_HEADER_VALUE fixed bin static int options (constant) init (12); 7 62 dcl INDEX_FOR_SUBCOUNT fixed bin static int options (constant) init (13); 7 63 dcl INDEX_FOR_SUBTOTAL fixed bin static int options (constant) init (14); 7 64 dcl INDEX_FOR_TOTAL fixed bin static int options (constant) init (15); 7 65 7 66 dcl INDEX_FOR_ALIGNMENT fixed bin static int options (constant) init (1); 7 67 dcl INDEX_FOR_EDITING fixed bin static int options (constant) init (2); 7 68 dcl INDEX_FOR_FOLDING fixed bin static int options (constant) init (3); 7 69 dcl INDEX_FOR_SEPARATOR fixed bin static int options (constant) init (4); 7 70 dcl INDEX_FOR_TITLE fixed bin static int options (constant) init (5); 7 71 dcl INDEX_FOR_WIDTH fixed bin static int options (constant) init (6); 7 72 7 73 /* END INCLUDE FILE linus_options_extents */ 3022 3023 8 1 /* BEGIN INCLUDE FILE linus_report_info.incl.pl1 8 2* Information needed to control the report environment. 8 3* Al Dupuis - August 1983 8 4**/ 8 5 /* format: off */ 8 6 8 7 dcl 1 report_control_info aligned based (report_cip), 8 8 2 flags, 8 9 3 report_is_paginated bit (1) unaligned, /* paged or one continous stream */ 8 10 3 table_has_been_started bit (1) unaligned, /* table clean up is necessary */ 8 11 3 table_is_full bit (1) unaligned, /* no more retrieves are necessary */ 8 12 3 report_has_been_started bit (1) unaligned, /* report clean up is necessary */ 8 13 3 report_is_formatted bit (1) unaligned, /* no more formatting is necessary */ 8 14 3 permanent_report bit (1) unaligned, /* or disposable */ 8 15 3 permanent_table bit (1) unaligned, /* or disposable */ 8 16 3 report_has_just_been_completed bit (1) unaligned, /* used for printing timers */ 8 17 3 table_has_just_been_loaded bit (1) unaligned, /* used for printing timers */ 8 18 3 multi_pass_mode bit (1) unaligned, /* on if we are to do more than 1 pass */ 8 19 3 available bit (26) unaligned, 8 20 2 format_options_flags, /* used to determine if value is default */ 8 21 3 general_report_default_value (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) bit (1) unaligned, 8 22 3 general_column_default_value (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) bit (1) unaligned, 8 23 2 value_seg_ptr ptr, /* the options value seg */ 8 24 2 name_value_area_ptr ptr, /* area for name-value allocations */ 8 25 2 name_value_temp_seg_ptr ptr, /* temp seg for name-value space */ 8 26 2 display_work_area_ptr ptr, /* display workspace */ 8 27 2 report_temp_seg_ptr ptr, /* report workspace */ 8 28 2 report_work_area_ptr ptr, /* report workspace */ 8 29 2 format_report_info_ptr ptr, /* info needed to create a report */ 8 30 2 input_string_temp_seg_ptr ptr, /* report workspace */ 8 31 2 output_string_temp_seg_ptr ptr, /* report workspace */ 8 32 2 editing_strings_temp_seg_ptr ptr, /* report workspace */ 8 33 2 headers_temp_seg_ptr ptr, /* report workspace */ 8 34 2 display_iocb_ptr ptr, /* report is displayed through this */ 8 35 2 selection_expression_identifier fixed bin, /* current selection expression */ 8 36 2 options_identifier fixed bin, /* current set of options */ 8 37 2 report_identifier fixed bin, /* current report */ 8 38 2 retrieval_identifier fixed bin, /* current retrieval */ 8 39 2 no_of_rows_retrieved fixed bin (35), /* current no of rows */ 8 40 2 no_of_formatted_pages fixed bin (21), /* current no of pages */ 8 41 2 number_of_passes fixed bin, /* number of times report will be formatted */ 8 42 2 table_loading_time float bin (63), 8 43 2 table_sorting_time float bin (63), 8 44 2 table_deletion_time float bin (63), 8 45 2 report_setup_time float bin (63), 8 46 2 report_formatting_time float bin (63), 8 47 2 report_display_time float bin (63), 8 48 2 report_deletion_time float bin (63), 8 49 2 ssu_evaluate_active_string_time float bin (63), 8 50 2 temp_dir_unique_id bit (36), /* uid of temp dir */ 8 51 2 temp_dir_name char (168) unaligned; /* the dir where we place the retrieved table and report */ 8 52 dcl report_cip ptr init (null ()); 8 53 8 54 /* END INCLUDE FILE linus_report_info.incl.pl1 */ 3024 3025 9 1 /* BEGIN INCLUDE FILE linus_table_info.incl.pl1 -- Dave Schimke 1/5/83 */ 9 2 /* 9 3*09/28/83 Al Dupuis: Added the store_args_ptr variable and the store_args structure. 9 4**/ 9 5 dcl 1 table_info aligned based (table_ip), /* info on displayable table */ 9 6 2 retrieval_identifier fixed bin , /* current retrieval id */ 9 7 2 row_count fixed bin(35), /* number of rows in table */ 9 8 2 column_count fixed bin, /* number of columns in table */ 9 9 2 maximum_column_name_length fixed bin, 9 10 /* largest column name */ 9 11 2 maximum_column_value_length fixed bin, 9 12 /* largest column length */ 9 13 2 row_value_length fixed bin (21), /* length of entire row */ 9 14 /* (sum of column lengths) */ 9 15 2 row_segs_info_ptr ptr init (null), /* ptr to the row segs info */ 9 16 2 store_args_ptr ptr, /* ptr to the arg list for storing rows */ 9 17 2 columns (ti_init_column_count refer (table_info.column_count)), 9 18 /* column info */ 9 19 3 column_name char (69) var, /* column header name */ 9 20 3 column_data_type bit (36), /* original data descriptor */ 9 21 3 column_length fixed bin (21), /* length of column in chars */ 9 22 3 column_index fixed bin (21); /* index of start of column in */ 9 23 /* row value */ 9 24 9 25 dcl 1 row_segs_info aligned based (row_segs_ip), 9 26 2 max_number_of_seg_ptrs fixed bin, 9 27 2 max_number_of_ptrs_per_seg fixed bin(21), 9 28 2 number_of_seg_ptrs fixed bin, 9 29 2 seg_ptr (rsi_init_max_number_of_seg_ptrs refer (row_segs_info. 9 30 max_number_of_seg_ptrs)) ptr unal; 9 31 9 32 dcl 1 row_ptrs aligned based (row_ptrs_p), 9 33 2 number_of_ptrs_this_seg fixed bin(21), 9 34 2 row_value_ptr (row_ptrs.number_of_ptrs_this_seg) ptr unal; 9 35 9 36 dcl row_value char (table_info.row_value_length) based (row_value_p); 9 37 dcl row_value_p ptr unal; /* ptr to the current row value */ 9 38 9 39 dcl row_segs_ip ptr; /* ptr to the seg of ptrs to */ 9 40 /* the arrays of row_value_ptrs */ 9 41 dcl row_ptrs_p ptr; /* ptr to an array of */ 9 42 /* row_value_ptrs */ 9 43 9 44 dcl 1 store_args aligned based (store_ap), 9 45 2 table_name char (30), 9 46 2 error_code fixed bin (35), 9 47 2 number_of_descriptors fixed bin, 9 48 2 header like arg_list.header, 9 49 2 arg_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 9 50 2 desc_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 9 51 2 argument_list_descriptors (init_number_of_descriptors refer 9 52 (store_args.number_of_descriptors)) like arg_descriptor; 9 53 9 54 dcl init_number_of_descriptors; 9 55 dcl rsi_init_max_number_of_seg_ptrs fixed bin; 9 56 dcl store_ap ptr; 9 57 dcl table_ip ptr; 9 58 dcl ti_init_column_count fixed bin; 9 59 9 60 /* END INCLUDE FILE linus_table_info.incl.pl1 */ 3026 3027 10 1 /* BEGIN mdbm_descriptor.incl.pl1 -- jaw 5/31/78 */ 10 2 /* modified by Jim Gray - - Nov. 1979, to change type from fixed bin(5) to 10 3* unsigned fixed bin(6), so new packed decimal data types could be handled. 10 4* also the duplicate mrds_descriptor.incl.pl1 was eliminated. */ 10 5 10 6 dcl 1 descriptor based (desc_ptr), /* map of Multics descriptor */ 10 7 2 version bit (1) unal, /* DBM handles vers. 1 only */ 10 8 2 type unsigned fixed bin (6) unal, /* data type */ 10 9 2 packed bit (1) unal, /* on if data item is packed */ 10 10 2 number_dims bit (4) unal, /* dimensions */ 10 11 2 size, /* size for string data */ 10 12 3 scale bit (12) unal, /* scale for num. data */ 10 13 3 precision bit (12) unal, /* prec. for num. data */ 10 14 2 array_info (num_dims), 10 15 3 lower_bound fixed bin (35), /* lower bound of dimension */ 10 16 3 upper_bound fixed bin (35), /* upper bound of dimension */ 10 17 3 multiplier fixed bin (35); /* element separation */ 10 18 10 19 dcl desc_ptr ptr; 10 20 dcl num_dims fixed bin init (0) ; /* more useful form of number_dims */ 10 21 10 22 /* END mdbm_descriptor.incl.pl1 */ 10 23 10 24 3028 3029 11 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 11 2 11 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 11 4 11 5 /* This include file contains branch and link structures returned by 11 6* hcs_$status_ and hcs_$status_long. */ 11 7 11 8 dcl 1 status_branch aligned based (status_ptr), 11 9 2 short aligned, 11 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 11 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 11 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 11 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 11 14 3 dtu bit (36) unaligned, /* date/time last used */ 11 15 3 mode bit (5) unaligned, /* caller's effective access */ 11 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 11 17 3 pad1 bit (8) unaligned, 11 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 11 19 11 20 /* Limit of information returned by hcs_$status_ */ 11 21 11 22 2 long aligned, 11 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 11 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 11 25 3 lvid bit (36) unaligned, /* logical volume ID */ 11 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 11 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 11 28 3 pad2 bit (8) unaligned, 11 29 3 copy_switch bit (1) unaligned, /* copy switch */ 11 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 11 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 11 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 11 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 11 34 3 pad3 bit (5) unaligned, 11 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 11 36 3 uid bit (36) unaligned; /* unique ID */ 11 37 11 38 dcl 1 status_link aligned based (status_ptr), 11 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 11 40 2 nnames fixed bin (16) unaligned unsigned, 11 41 2 names_relp bit (18) unaligned, 11 42 2 dtem bit (36) unaligned, 11 43 2 dtd bit (36) unaligned, 11 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 11 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 11 46 11 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 11 48 based (pointer (status_area_ptr, status_branch.names_relp)), 11 49 /* array of names returned */ 11 50 status_pathname character (status_link.pathname_length) aligned 11 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 11 52 /* link target path */ 11 53 status_area_ptr pointer, 11 54 status_ptr pointer; 11 55 11 56 dcl (Link initial (0), 11 57 Segment initial (1), 11 58 Directory initial (2)) fixed bin internal static options (constant); 11 59 /* values for type fields declared above */ 11 60 11 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 3030 3031 12 1 /* BEGIN value_structures.incl.pl1 */ 12 2 12 3 dcl (match_info_ptr, value_list_info_ptr) ptr; 12 4 dcl (alloc_name_count, alloc_pair_count) fixed bin; 12 5 dcl (alloc_max_name_len, alloc_chars_len) fixed bin (21); 12 6 12 7 dcl 1 match_info aligned based (match_info_ptr), 12 8 2 version fixed bin, /* = 1 */ 12 9 2 name_count fixed bin, 12 10 2 max_name_len fixed bin (21), 12 11 2 name_array (alloc_name_count refer (match_info.name_count)), 12 12 3 exclude_sw bit (1) unaligned, /* ON for -exclude, OFF for -match */ 12 13 3 regexp_sw bit (1) unaligned, /* ON for regular exp. without the //, OFF for starname */ 12 14 3 pad bit (34) unaligned, 12 15 3 name char (alloc_max_name_len refer (match_info.max_name_len)) varying; 12 16 12 17 dcl 1 value_list_info aligned based (value_list_info_ptr), 12 18 2 version fixed bin, /* = 1 */ 12 19 2 pair_count fixed bin, 12 20 2 chars_len fixed bin (21), 12 21 2 pairs (alloc_pair_count refer (value_list_info.pair_count)), 12 22 3 type_switches bit (36), /* correspond to the selection switches arg */ 12 23 3 (name_index, name_len) fixed bin (21), 12 24 3 (value_index, value_len) fixed bin (21), 12 25 2 chars char (alloc_chars_len refer (value_list_info.chars_len)); 12 26 12 27 dcl (match_info_version_1, value_list_info_version_1) fixed bin int static options (constant) init (1); 12 28 12 29 /* END OF value_structures.incl.pl1 */ 3032 3033 3034 end linus_options; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/02/86 1512.1 linus_options.pl1 >special_ldd>install>MR12.0-1175>linus_options.pl1 3010 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 3012 2 11/02/83 1845.0 arg_descriptor.incl.pl1 >ldd>include>arg_descriptor.incl.pl1 3014 3 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 3016 4 09/16/83 1338.0 linus_format_options.incl.pl1 >ldd>include>linus_format_options.incl.pl1 3018 5 07/29/86 1148.4 linus_lcb.incl.pl1 >ldd>include>linus_lcb.incl.pl1 3020 6 09/16/83 1338.0 linus_names_and_values.incl.pl1 >ldd>include>linus_names_and_values.incl.pl1 3022 7 09/16/83 1338.0 linus_options_extents.incl.pl1 >ldd>include>linus_options_extents.incl.pl1 3024 8 09/16/83 1338.1 linus_report_info.incl.pl1 >ldd>include>linus_report_info.incl.pl1 3026 9 10/06/83 1219.0 linus_table_info.incl.pl1 >ldd>include>linus_table_info.incl.pl1 3028 10 10/14/83 1608.6 mdbm_descriptor.incl.pl1 >ldd>include>mdbm_descriptor.incl.pl1 3030 11 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 3032 12 06/24/81 1743.9 value_structures.incl.pl1 >ldd>include>value_structures.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. ALL 002251 constant bit(1) initial dcl 2841 ref 2559 2627 ALLOW_DUPLICATES 002251 constant bit(1) initial dcl 2842 set ref 2452* ANY constant bit(1) initial dcl 2843 ref 2195 2228 2320 2402 BLANK 024706 constant char(1) initial unaligned dcl 2845 ref 638 660 913 923 1066 1130 1204 1263 1275 1399 1692 1704 1713 1793 1879 2255 2289 2348 2360 2543 2543 2556 2615 2636 2644 2683 2683 2710 2723 2815 2821 2824 BOTH 002250 constant char(4) initial unaligned dcl 2846 ref 2283 CENTER 002246 constant char(6) initial unaligned dcl 2848 ref 2283 COMMA 024705 constant char(1) initial unaligned dcl 2849 ref 2758 2780 2803 DECIMAL 002244 constant char(7) initial unaligned dcl 2851 ref 1130 2290 2292 DIGITS 002241 constant char(10) initial unaligned dcl 2852 ref 1697 2294 2474 2483 2772 DONT_ALLOW_DUPLICATES 002322 constant bit(1) initial dcl 2853 set ref 2466* EXTENSIBLE 002251 constant bit(1) initial dcl 2855 set ref 2003* 2025* 2048* FILL 002240 constant char(4) initial unaligned dcl 2857 ref 2330 GENERAL_COLUMN 242 000000 constant structure array level 2 unaligned dcl 4-9 GENERAL_COLUMN_OPTION constant fixed bin(17,0) initial dcl 7-15 ref 358 1508 1673 1682 1857 2187 GENERAL_REPORT 000000 constant structure array level 2 unaligned dcl 4-9 GENERAL_REPORT_OPTION constant fixed bin(17,0) initial dcl 7-14 ref 1501 1682 1850 1911 2185 INDEX_FOR_ALIGNMENT constant fixed bin(17,0) initial dcl 7-66 ref 1121 INDEX_FOR_COLUMN_ORDER constant fixed bin(17,0) initial dcl 7-50 ref 1059 INDEX_FOR_GROUP constant fixed bin(17,0) initial dcl 7-53 ref 1866 2409 2411 INDEX_FOR_GROUP_FOOTER_TRIGGER constant fixed bin(17,0) initial dcl 7-54 ref 2211 2236 INDEX_FOR_GROUP_HEADER_TRIGGER constant fixed bin(17,0) initial dcl 7-56 ref 2211 2236 INDEX_FOR_TITLE constant fixed bin(17,0) initial dcl 7-70 ref 1145 INDEX_FOR_WIDTH constant fixed bin(17,0) initial dcl 7-71 ref 1149 LEFT 002237 constant char(4) initial unaligned dcl 2859 ref 1139 2283 LEFT_BRACKET constant char(1) initial unaligned dcl 2860 ref 1368 1402 1861 1876 1922 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 7-28 ref 638 890 LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 7-27 ref 863 LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 7-26 ref 638 913 LONG_NAME 001034 constant varying char(32) initial array level 2 dcl 4-101 set ref 730* LONG_NAME_IN_SHORT_NAME_ORDER 14 001034 constant varying char(32) initial array level 2 dcl 4-101 ref 725 MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 7-32 ref 1185 2953 MAXIMUM_OPTION_IDENTIFIER_LENGTH constant fixed bin(17,0) initial dcl 7-34 ref 2940 2959 2990 MAXIMUM_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 7-35 ref 1187 2938 2941 2960 MAXIMUM_OPTION_VALUE_LENGTH constant fixed bin(17,0) initial dcl 7-36 ref 2890 2891 2942 2963 2968 2969 2970 2971 2972 2989 2991 NAME 242 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" set ref 178* 182* 608* 612* 649 899 1059 1366 1523 1866 2212* 2216* 2237* 2239* 2261* 2264* 2409* 2411* NAME 660 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" ref 660 923 1121 1145 1149 1393 1549 NAME 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" set ref 871 1454* 1458* 1536 NINE constant char(1) initial unaligned dcl 2862 ref 2379 2568 NON_FREEING 002251 constant bit(1) initial dcl 2865 set ref 2003* 2025* 2048* NO_ZERO_ON_ALLOC 002322 constant bit(1) initial dcl 2863 set ref 2003* 2025* 2048* NO_ZERO_ON_FREE 002322 constant bit(1) initial dcl 2864 set ref 2003* 2025* 2048* NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 7-20 ref 174 189 233 241 243 247 251 255 257 261 263 267 268 269 270 636 645 654 688 688 808 889 895 993 1329 1330 1331 1364 1429 1429 1431 1433 1466 1466 1522 1904 1904 1973 1975 1991 2009 2017 2031 2039 2054 2062 2068 2074 2080 2084 2085 2086 2088 2090 2095 2099 2139 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 7-21 ref 174 189 233 241 243 247 251 255 257 261 263 267 268 269 270 688 688 793 807 809 862 867 968 988 1329 1330 1331 1429 1429 1431 1433 1452 1466 1466 1468 1535 1870 1904 1904 1935 1938 1943 1948 1973 1975 1991 2009 2017 2031 2039 2054 2062 2068 2074 2080 2084 2085 2086 2088 2090 2095 2099 2126 2221 2268 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 7-22 ref 636 656 912 919 1016 1391 1548 2158 OFF constant bit(1) initial dcl 2867 ref 339 647 648 658 659 791 826 869 870 897 898 921 922 1104 1192 1255 1256 1339 1586 1917 1921 1938 1948 1975 2178 2182 2229 2247 2321 2376 2403 2419 2540 2550 2552 2559 2573 2579 2582 2587 2598 2604 2615 2621 2629 2680 2697 2718 2726 2788 ON constant bit(1) initial dcl 2868 ref 354 798 812 1110 1222 1343 1433 1468 1603 1854 1870 1913 1934 1935 1943 2196 2221 2224 2268 2274 2283 2294 2307 2317 2330 2343 2352 2360 2382 2385 2399 2428 2436 2448 2462 2474 2487 2563 2592 2607 2612 2652 2689 2702 2721 2793 OPTIONS 000000 constant structure level 1 unaligned dcl 4-9 OPTION_NAMES_AS_ARGS 001034 constant structure array level 1 unaligned dcl 4-101 PERMANENT 002236 constant bit(36) initial dcl 2870 set ref 178* 409* 608* 667* 675* 876* 904* 929* 1286* 1382* 1417* 1454* 1895* 2212* 2237* 2261* 2409* RESET 002234 constant char(5) initial unaligned dcl 2872 ref 2815 2821 2821 REW_ACCESS_BIN 002222 constant fixed bin(5,0) initial dcl 1-36 set ref 1979* RIGHT 002232 constant char(5) initial unaligned dcl 2873 ref 1127 1138 2283 RUNNING 002230 constant char(7) initial unaligned dcl 2874 ref 2824 2824 SHORT_NAME 11 001034 constant varying char(5) initial array level 2 dcl 4-101 set ref 721* SPECIFIC_COLUMN 660 000000 constant structure array level 2 unaligned dcl 4-9 SPECIFIC_COLUMN_OPTION constant fixed bin(17,0) initial dcl 7-16 ref 354 358 1204 1513 1673 1907 STAR_DOT_STAR_STAR 002226 constant char(4) initial unaligned dcl 2877 ref 638 660 913 923 STAR_OR_QUESTION_MARK constant char(2) initial unaligned dcl 2876 ref 1689 TAB constant char(1) initial unaligned dcl 2879 ref 2543 2683 TILDE 024704 constant char(1) initial unaligned dcl 2880 ref 2348 2360 TRUNCATE 002224 constant char(8) initial unaligned dcl 2881 ref 2330 VALUE 253 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" set ref 1367 1859 1922 1922 1943 2212* 2216* VALUE 11 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" set ref 1454* 1458* 1852 1913 VALUE 671 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "linus_options" ref 1401 1874 ZERO constant char(1) initial unaligned dcl 2883 ref 2379 2382 2568 addr builtin function dcl 2885 ref 1124 1269 after builtin function dcl 2886 ref 1204 1879 2292 alloc_max_name_len 000303 automatic fixed bin(21,0) dcl 12-5 set ref 638* 641 641 863* 864 864 890* 891 891 913* 915 915 1185* 1187* 1248 1248 alloc_name_count 000302 automatic fixed bin(17,0) dcl 12-4 set ref 636* 641 641 862* 864 864 889* 891 891 912* 915 915 1184* 1219* 1219 1248 1248 arg_descriptor based structure level 1 dcl 2-6 arg_list based structure level 1 dcl 3-14 before builtin function dcl 2888 ref 2289 caktc_group_list_ptr 000100 automatic pointer dcl 2205 set ref 2234* 2247 caktc_inner_loop 000102 automatic fixed bin(17,0) dcl 2206 set ref 2246* 2247 2247 2247* 2254* 2255 2255* caktc_loop 000103 automatic fixed bin(17,0) dcl 2207 set ref 2211* 2212 2212 2216 2216 2221* 2236* 2237 2239 2261 2264 2268* caktc_option_value 000100 automatic varying char dcl 2890 set ref 2235* 2275 cavgl_group_list_judgement_table_ptr 000100 automatic pointer dcl 2394 set ref 2407* 2422 cavgl_loop 000102 automatic fixed bin(17,0) dcl 2395 set ref 2421* 2422 2422* cavgl_save_option_value 000100 automatic varying char dcl 2891 set ref 2408* 2418 char builtin function dcl 2892 ref 1130 1149 chars based char level 2 dcl 12-17 ref 675 675 679 679 965 990 1013 1311 chars_len 2 based fixed bin(21,0) level 2 dcl 12-17 ref 675 675 679 679 941 941 941 946 965 965 987 990 990 1010 1013 1013 1308 1311 code 000100 automatic fixed bin(35,0) dcl 2893 set ref 178* 180 182 182* 225* 226 226* 233* 235 235* 305* 307 344* 345 347 399* 402 404 409* 411 411* 531* 532 532 576* 578 608* 610 612 612* 667* 669 669* 675* 679 679* 876* 878 878* 904* 906 906* 929* 931 931* 1286* 1288 1288* 1333* 1334 1334 1334* 1382* 1384 1384* 1417* 1420 1420* 1454* 1458 1458* 1677* 1895* 1899 1899* 1979* 1981 1981* 1987* 1988 1988* 1998* 1999 1999* 2003* 2006 2006* 2013* 2014 2014* 2021* 2022 2022* 2025* 2028 2028* 2035* 2036 2036* 2044* 2045 2045* 2048* 2051 2051* 2058* 2059 2059* 2064* 2065 2065* 2070* 2071 2071* 2076* 2077 2077* 2088* 2090 2090* 2093* 2095 2095 2095* 2212* 2216 2216* 2237* 2239 2239* 2261* 2264 2264* 2409* 2411 2411* code_parm parameter fixed bin(35,0) dcl 98 set ref 117 149* 196 219* 274 301* 307* 312 340* 347* 358* 367 395* 404* 421 446* 460 485* 498 527* 532* 543 572* 578* 582 600* column_bit_map based bit(1) array level 3 packed unaligned dcl 2978 set ref 1226* 1269 column_count 2 based fixed bin(17,0) level 2 dcl 9-5 ref 1016 1344 column_data_type 35 based bit(36) array level 3 dcl 9-5 set ref 1124 column_length 36 based fixed bin(21,0) array level 3 dcl 9-5 ref 1130 1149 column_map based bit(1) array unaligned dcl 2894 set ref 1195 1211* 1226 1273 1782 1784* 1791 column_map_ptr 000102 automatic pointer dcl 2895 set ref 1195* 1211 1226 1269* 1273 1782* 1784 1791 column_maps_info based structure array level 2 unaligned dcl 2978 column_name 12 based varying char(69) array level 3 dcl 9-5 ref 1062 1066 1107 1145 1275 1397 1598 1704 1711 1793 2255 2592 2636 2644 2780 2790 columns 12 based structure array level 2 dcl 9-5 convert builtin function dcl 2896 ref 1699 2294 2485 2774 cv_dec_check_ 000010 constant entry external dcl 2897 ref 2576 dco_inner_loop 000522 automatic fixed bin(17,0) dcl 633 set ref 654* 658 659 660 663* 663 dco_loop 000523 automatic fixed bin(17,0) dcl 634 set ref 645* 647 648 649 649* 656* 660* 673* 675 675 675 675 679 679 679 679* delete_$ptr 000012 constant entry external dcl 2899 ref 233 desc_ptr 000270 automatic pointer dcl 10-19 set ref 1124* 1126 1130 1130 descriptor based structure level 1 unaligned dcl 10-6 directory_name 000104 automatic char(168) unaligned dcl 2900 set ref 2088* 2093* display_iocb_ptr based pointer level 2 dcl 8-7 set ref 2085* display_work_area_ptr based pointer level 2 dcl 8-7 set ref 255 257* 2031* divide builtin function dcl 2901 ref 755 eafa_inner_loop 000560 automatic fixed bin(17,0) dcl 783 set ref 807* 812 816* 816 823* 828 830 832 834 836* 836 eafa_loop 000561 automatic fixed bin(17,0) dcl 784 set ref 793* 795 798* 808* 809* 825* 826 828 830 832 834* editing_strings_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 269* 2074* entry_name 000156 automatic char(32) unaligned dcl 2903 set ref 2088* 2093* error_table_$no_s_permission 000014 external static fixed bin(35,0) dcl 2904 ref 2095 error_table_$nomatch 000016 external static fixed bin(35,0) dcl 2905 ref 1606 error_table_$nostars 000020 external static fixed bin(35,0) dcl 2906 ref 1209 1691 1779 error_table_$oldnamerr 000022 external static fixed bin(35,0) dcl 2907 ref 182 612 eson_code_parm parameter fixed bin(35,0) dcl 713 set ref 695 719* 734* eson_long_option_name_parm parameter varying char dcl 714 set ref 695 718* 725* 732* eson_option_name_parm parameter varying char dcl 715 set ref 695 721* 730* 732 eson_table_index 000536 automatic fixed bin(17,0) dcl 716 set ref 721* 723 725 730* 732 exclude_sw 3 based bit(1) array level 3 packed unaligned dcl 12-7 set ref 647* 658* 869* 897* 921* 1255* expand_pathname_ 000024 constant entry external dcl 2908 ref 2088 extended_arg_type 000250 automatic fixed bin(17,0) initial dcl 2-36 set ref 2-36* fixed builtin function dcl 2910 ref 1130 1130 flags based structure level 2 dcl 8-7 format_options_flags 1 based structure level 2 dcl 8-7 format_report_info_ptr based pointer level 2 dcl 8-7 set ref 2084* ganav_inner_loop 000574 automatic fixed bin(17,0) dcl 855 set ref 988* 995 998 1001 1004 1006* 1006 1021 1024 1027 1030 1032* 1032 ganav_loop 000575 automatic fixed bin(17,0) dcl 856 set ref 867* 869 870 871 871* 895* 897 898 899 899* 919* 921 922 923 923* 968* 970 970 972 972 974 974 976 976* 993* 995 998 1001 1004* 1019* 1021 1024 1027 1030* ganav_loop_limit 000576 automatic fixed bin(17,0) dcl 857 set ref 1016* 1019 ganav_no_of_chars_already_done 000577 automatic fixed bin(21,0) dcl 858 set ref 987* 990 995 1001 1010* 1010 1013 1021 1027 general_column_default_value based bit(1) array level 3 packed unaligned dcl 8-7 set ref 809 1433* 1870* 1935* 1938* 1943* 1948* 2221* 2268* general_columns_names_and_values_info_ptr 000166 automatic pointer dcl 2912 set ref 910* 941 951 989 general_report_default_value 1 based bit(1) array level 3 packed unaligned dcl 8-7 set ref 795 1468* 1854* 1913* 1917* general_report_names_and_values_info_ptr 000170 automatic pointer dcl 2913 set ref 882* 941 946 951 956 964 get_pdir_ 000026 constant entry external dcl 2914 ref 1979 1979 2086 get_temp_segment_ 000030 constant entry external dcl 2915 ref 1998 2013 2021 2035 2044 2058 2064 2070 2076 ggcdv_loop 000614 automatic fixed bin(17,0) dcl 1055 set ref 1065* 1066* ggcdv_option_name_parm parameter varying char dcl 1056 ref 1040 1059 ggcdv_option_value_parm parameter varying char dcl 1057 set ref 1040 1062* 1066* 1066 1070* gnv_code_parm parameter fixed bin(35,0) dcl 1175 set ref 1157 1182* 1199* 1204 1209 1211* 1214 1214* 1232 1232* 1236 1236* 1241* gnv_current_star_name 000640 automatic fixed bin(17,0) dcl 1176 set ref 1252* 1269 1281* 1281 gnv_inner_loop 000641 automatic fixed bin(17,0) dcl 1177 set ref 1272* 1273 1275* gnv_loop 000642 automatic fixed bin(17,0) dcl 1178 set ref 1197* 1199 1199 1204 1208 1211 1214 1222 1232 1236 1236* 1253* 1258 1260 1260 1263 1263 1275* 1297* 1298 1298 1300 1300 1302 1302 1304 1304* gnv_match_info_index 000643 automatic fixed bin(17,0) dcl 1179 set ref 1251* 1255 1256 1260 1263 1266* 1266 1275 1278* 1278 gnv_number_of_matches 000644 automatic fixed bin(17,0) dcl 1180 set ref 1211* 1219 1219 1223 gscdv_column_option_number 000624 automatic fixed bin(17,0) dcl 1096 set ref 1111* 1124 1130 1145 1149 gscdv_column_type 000625 automatic fixed bin(6,0) unsigned unaligned dcl 1097 set ref 1126* 1127 1127 1127 1127 1130 1130 1130 1130 1130 1130 1130 1130 1139 1139 1141* gscdv_hit 000626 automatic bit(1) dcl 1098 set ref 1104* 1106 1110* 1115 gscdv_loop 000627 automatic fixed bin(17,0) dcl 1099 set ref 1106* 1107 1111* gscdv_option_identifier_parm parameter varying char dcl 1100 ref 1076 1107 gscdv_option_name_parm parameter varying char dcl 1101 ref 1076 1121 1145 1149 gscdv_option_value_parm parameter varying char dcl 1102 set ref 1076 1117* 1127* 1130* 1138* 1139* 1145* 1149* 1153* gt_code_parm parameter fixed bin(35,0) dcl 2706 set ref 2704 2709* gt_still_skipping_blanks 000114 automatic bit(1) dcl 2707 set ref 2721* 2722 2726* hbound builtin function dcl 2917 ref 751 1590 hcs_$make_seg 000032 constant entry external dcl 2918 ref 1979 hcs_$status_long 000034 constant entry external dcl 2919 ref 2093 header based structure level 2 dcl 3-14 headers_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 270* 2080* identifier_needed_parm parameter bit(1) dcl 99 set ref 312 339* 354* index based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2929 in procedure "linus_options" set ref 828* index 2 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 6-17 in procedure "linus_options" set ref 832 974* 1001* 1027* 1304* index based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 6-17 in procedure "linus_options" set ref 828 970* 995* 1021* 1300* index 2 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2929 in procedure "linus_options" set ref 832* index builtin function dcl 2921 in procedure "linus_options" ref 2556 2710 2758 input_string_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 267* 2062* judgement_table based structure array level 1 dcl 2923 judgement_table_ptr 000172 automatic pointer dcl 2926 set ref 2197* 2230* 2234 2245* 2247 2247 2255 2322* 2404* 2407 2415* 2422 lcb based structure level 1 dcl 5-53 lcb_ptr parameter pointer dcl 5-121 set ref 114 148* 151 154 162 174 189 218* 220 222 225* 297* 336* 389* 441* 480* 520* 567* 582 599* 1327 1328 1333* 1431 1969 1973 lcb_ptr_parm parameter pointer dcl 100 ref 117 148 196 218 274 297 312 336 367 389 421 441 460 480 498 520 543 567 599 length builtin function dcl 2928 in procedure "linus_options" ref 638 638 913 913 1368 1402 1861 1876 1922 1922 2340 2360 2373 2545 2685 2754 length 1 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 6-17 in procedure "linus_options" set ref 830 972* 998* 1024* 1298* length 3 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2929 in procedure "linus_options" set ref 834* length 1 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2929 in procedure "linus_options" set ref 830* length 3 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 6-17 in procedure "linus_options" set ref 834 976* 1004* 1030* 1302* like_name_value_info based structure array level 1 unaligned dcl 2929 set ref 820 like_names_and_values_info_ptr 000174 automatic pointer dcl 2930 set ref 453 820* 828 830 832 834 linus_error_$bad_option_identifier 000036 external static fixed bin(35,0) dcl 2931 ref 1236 1701 1719 linus_error_$bad_option_name 000040 external static fixed bin(35,0) dcl 2932 ref 734 1232 1669 linus_error_$bad_option_value 000042 external static fixed bin(35,0) dcl 2933 ref 1844 linus_error_$no_lila_expr_processed 000044 external static fixed bin(35,0) dcl 2934 ref 358 1334 1677 linus_fr_delete_report 000046 constant entry external dcl 2935 ref 225 linus_table$info 000052 constant entry external dcl 2937 ref 1333 lnft_loop1 000546 automatic fixed bin(17,0) dcl 744 set ref 750* 753 755 761* lnft_loop2 000547 automatic fixed bin(17,0) dcl 745 set ref 751* 753 755 759* lnft_loop3 000550 automatic fixed bin(17,0) dcl 746 set ref 755* 756 756 759 759 761 lnft_name_parm parameter varying char dcl 747 ref 738 756 759 lnft_table_parm parameter varying char array dcl 748 ref 738 751 756 759 lon_loop 000100 automatic fixed bin(17,0) dcl 1491 set ref 1522* 1523 1523* 1535* 1536 1536* 1548* 1549 1549* lon_option_index_parm parameter fixed bin(17,0) dcl 1494 set ref 1474 1498* 1499 1505* 1506 1512* 1513 lon_option_name_parm parameter varying char dcl 1492 ref 1474 1523 1536 1549 lon_option_type_parm parameter fixed bin(17,0) dcl 1493 set ref 1474 1496* 1501* 1508* 1513* long 4 based structure level 2 dcl 11-8 long_option_name 000176 automatic varying char dcl 2938 set ref 344* 350 352* long_option_name_parm parameter varying char dcl 101 set ref 312 338* 350* ltrim builtin function dcl 2939 ref 1130 1149 2292 2543 2683 lvswcd_inner_loop 000666 automatic fixed bin(17,0) dcl 1361 set ref 1395* 1397* lvswcd_loop 000667 automatic fixed bin(17,0) dcl 1362 set ref 1364* 1366 1367* 1391* 1393 1401* lvswcd_option_identifier 000176 automatic varying char dcl 2940 set ref 1397* 1399 1405* lvswcd_option_name 000176 automatic varying char dcl 2941 set ref 1366* 1371* 1373* 1382* 1384* 1393* 1399 1405* lvswcd_option_value 000176 automatic varying char dcl 2942 set ref 1367* 1368 1368 1371* 1373 1382* 1384* 1401* 1402 1402 1405* 1408 1417* 1420* lvswrd_loop 000702 automatic fixed bin(17,0) dcl 1450 set ref 1452* 1454 1454 1458 1458* match_info based structure level 1 dcl 12-7 set ref 641 864 891 915 1248 match_info_ptr 000276 automatic pointer dcl 12-3 set ref 641* 643 647 648 649 658 659 660 667* 864* 865 869 870 871 876* 891* 893 897 898 899 904* 915* 917 921 922 923 929* 1248* 1249 1255 1256 1260 1263 1275 1286* match_info_version_1 constant fixed bin(17,0) initial dcl 12-27 ref 643 865 893 917 1249 match_star_name_ 000050 constant entry external dcl 2936 ref 1598 max builtin function dcl 2944 ref 638 max_name_len 2 based fixed bin(21,0) level 2 dcl 12-7 set ref 641* 647 647 648 648 649 649 649 658 658 659 659 660 660 660 864* 869 869 870 870 871 871 871 891* 897 897 898 898 899 899 899 915* 921 921 922 922 923 923 923 1248* 1255 1255 1256 1256 1260 1260 1260 1263 1263 1263 1275 1275 1275 maximum_number_of_star_names based fixed bin(17,0) level 2 dcl 2978 set ref 1190* 1192 1223 1226 1226 1269 mcn_code_parm parameter fixed bin(35,0) dcl 1579 set ref 1559 1588* 1598* 1601 1606 1614* mcn_column_map_parm parameter bit(1) array unaligned dcl 1581 set ref 1559 1586* 1590 1603* mcn_loop 000714 automatic fixed bin(17,0) dcl 1580 set ref 1597* 1598 1603* mcn_number_of_matches 000715 automatic fixed bin(17,0) dcl 1582 set ref 1596* 1604* 1604 1611 1613 mcn_number_of_matches_parm parameter fixed bin(17,0) dcl 1583 set ref 1559 1587* 1613* mcn_star_name_parm parameter varying char dcl 1584 ref 1559 1598 mdbm_util_$mu_define_area 000054 constant entry external dcl 2946 ref 2003 2025 2048 me 000176 automatic char(64) unaligned dcl 2945 set ref 147* 182* 216* 233* 296* 335* 387* 440* 479* 519* 566* 598* 612* 1590* 1733* 1998* 2013* 2021* 2035* 2044* 2058* 2064* 2070* 2076* name based structure array level 2 in structure "name_value_info" dcl 6-17 in procedure "linus_options" name 4 based varying char array level 3 in structure "match_info" dcl 12-7 in procedure "linus_options" set ref 649* 660* 871* 899* 923* 1260* 1263* 1275* name based structure array level 2 in structure "like_name_value_info" unaligned dcl 2929 in procedure "linus_options" name_array 3 based structure array level 2 dcl 12-7 name_count 1 based fixed bin(17,0) level 2 dcl 12-7 set ref 641* 864* 891* 915* 1248* name_index 4 based fixed bin(21,0) array level 3 dcl 12-17 ref 675 675 679 679 970 995 1021 1300 name_len 5 based fixed bin(21,0) array level 3 dcl 12-17 ref 675 675 679 679 972 998 1024 1298 name_value_area_ptr based pointer level 2 dcl 8-7 set ref 241 243* 1330 2009* name_value_info based structure array level 1 dcl 6-17 set ref 958 1294 name_value_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 247* 1331 2017* names_and_values based char unaligned dcl 6-27 set ref 948 965* 990* 1013* 1309 1311* names_and_values_area based area dcl 2948 ref 641 789 820 864 891 915 948 958 1195 1248 1294 1309 1782 2087 2548 names_and_values_area_ptr 000216 automatic pointer dcl 2949 set ref 159 641 667* 789 820 864 876* 891 904* 915 929* 948 958 1195 1248 1286* 1294 1309 1330* 1782 2002* 2003* 2009 2087 2548 names_and_values_bit_map based bit(1) array unaligned dcl 2950 set ref 789 791* 798* 812* 826 names_and_values_bit_map_ptr 000220 automatic pointer dcl 2951 set ref 789* 791 798 812 826 names_and_values_info_ptr 000252 automatic pointer initial dcl 6-29 set ref 491 535 6-29* 828 830 832 834 958* 970 972 974 976 995 998 1001 1004 1021 1024 1027 1030 1294* 1298 1300 1302 1304 names_and_values_info_ptr_parm parameter pointer dcl 102 set ref 421 442* 453* 460 481* 491* 498 523* 535* names_and_values_ptr 000254 automatic pointer initial dcl 6-30 set ref 455 493 537 6-30* 948* 965 990 1013 1309* 1311 names_and_values_ptr_parm parameter pointer dcl 103 set ref 421 444* 455* 460 483* 493* 498 525* 537* names_and_values_temp_seg_ptr 000222 automatic pointer dcl 2952 set ref 1189 1331* no_of_active_names_and_values 000224 automatic fixed bin(17,0) dcl 2954 set ref 454 787* 799* 799 813* 813 820 no_of_names_and_values 000256 automatic fixed bin(21,0) dcl 6-31 set ref 492 536 786 787 951* 956* 958 1293* 1294 1297 no_of_names_and_values_in_bit_map 000225 automatic fixed bin(17,0) dcl 2955 set ref 786* 789 791 825 no_of_names_and_values_parm parameter fixed bin(21,0) dcl 104 set ref 421 443* 454* 460 482* 492* 498 524* 536* no_of_options_in_name_table 000260 automatic fixed bin(21,0) dcl 6-40 set ref 522* 1184 1190 1197 1253 no_of_options_in_name_table_parm parameter fixed bin(21,0) dcl 105 ref 498 522 non_code_parm parameter fixed bin(35,0) dcl 1653 set ref 1622 1663* 1669* 1691* 1701* 1719* non_column_option_number 000726 automatic fixed bin(17,0) dcl 1654 set ref 1699* 1699 1701 1701 1704 non_loop 000727 automatic fixed bin(17,0) dcl 1655 set ref 1710* 1711* non_normalized_option_name_parm parameter varying char dcl 1656 set ref 1622 1662* 1685* 1692* 1704* 1713* non_option_identifier_parm parameter varying char dcl 1657 ref 1622 1689 1692 1697 1699 1711 1713 non_option_name_parm parameter varying char dcl 1658 set ref 1622 1665* 1685 1692 1704 1713 non_option_table_index_parm parameter fixed bin(17,0) dcl 1659 set ref 1622 1665* 1667 non_option_type_parm parameter fixed bin(17,0) dcl 1660 set ref 1622 1665* 1673 1673 1682 1682 normalized_option_name 000224 automatic varying char dcl 2953 set ref 305* 308 399* 409* 416 1199* 1204 1399* 1408* 1417* 1420* 1771* 1793* 1879 1889* 1895* 1899* normalized_option_name_parm parameter varying char dcl 106 set ref 274 300* 308* 367 393* 411* 416* null builtin function dcl 2956 ref 151 442 444 481 483 523 525 6-29 6-30 6-41 8-52 1987 1987 2084 2085 2093 2093 2539 num_dims 000272 automatic fixed bin(17,0) initial dcl 10-20 set ref 10-20* number 1 based fixed bin(35,0) array level 2 dcl 2530 set ref 2576* 2582 2582 2600* 2604 2607 2636 2636 number_of_defined_columns 000226 automatic fixed bin(17,0) dcl 2957 set ref 1063 1065 1106 1195 1211 1223 1223 1226 1226 1226 1226 1226 1226 1269 1269 1272 1340* 1344* 1395 1590 1597 1701 1710 1782 1784 1789 2246 2254 2421 2548 2550 2554 2559 2582 2591 2621 2627 2635 2642 2776 2789 number_of_matches based fixed bin(17,0) array level 3 dcl 2978 set ref 1223* number_of_star_names 1 based fixed bin(17,0) level 2 dcl 2978 set ref 1193* 1223 1226 1229* 1229 1245* 1245 option_identifier 000227 automatic varying char dcl 2959 set ref 299* 305* 391* 399* 569* 576* option_identifier_parm parameter varying char dcl 107 ref 274 299 367 391 543 569 option_name 000227 automatic varying char dcl 2960 set ref 298* 305* 337* 344* 390* 399* 568* 576* option_name_parm parameter varying char dcl 108 ref 274 298 312 337 367 390 543 568 option_name_table based structure array level 1 unaligned dcl 6-36 option_name_table_ptr 000262 automatic pointer initial dcl 6-41 set ref 521* 6-41* 1199 1199 1204 1208 1211 1214 1232 1236 1236 1260 1260 1263 1263 1275 option_name_table_ptr_parm parameter pointer dcl 109 ref 498 521 option_table_index 000227 automatic fixed bin(17,0) dcl 2961 set ref 305* 352* 399* 1199* 1771* 1852 1854 1859 1870 1874 1913 1913 1917 1922 1922 1935 1938 1943 1943 1948 2180* 2182 2185 2187 2189 option_type 000230 automatic fixed bin(17,0) dcl 2962 set ref 305* 352* 354 358 358 399* 1199* 1204 1771* 1850 1857 1907 1911 2180* 2185 2187 option_value 000231 automatic varying char dcl 2963 set ref 409* 417 570* 576* option_value_parm parameter varying char dcl 110 set ref 367 394* 417* 543 570 options_identifier based fixed bin(17,0) level 2 dcl 8-7 set ref 688* 688 1429* 1429 1466* 1466 1904* 1904 output_string_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 268* 2068* pair_count 1 based fixed bin(17,0) level 2 dcl 12-17 ref 673 675 675 679 679 951 951 951 956 965 990 1013 1293 1311 pairs 3 based structure array level 2 dcl 12-17 permanent_report 0(05) based bit(1) level 3 packed unaligned dcl 8-7 set ref 223 present based bit(1) array level 2 in structure "rclac_judgement_table" packed unaligned dcl 2530 in procedure "replace_column_list_after_checking" set ref 2604 2607* 2629 2644 present based bit(1) array level 2 in structure "judgement_table" dcl 2923 in procedure "linus_options" set ref 2247 2247 2247* 2255 2422 2422 pt_allow_duplicates_parm parameter bit(1) dcl 2740 ref 2734 2809 pt_character_string 000124 automatic varying char(80) dcl 2741 set ref 2766* 2772 2774 2790 2803 2819* 2821 2824 pt_code_parm parameter fixed bin(35,0) dcl 2742 set ref 2734 2753* 2830* pt_column_number 000151 automatic fixed bin(17,0) dcl 2743 set ref 2774* 2774 2776 2776 2780 2783 2785 2794* 2800 2802 pt_comma_position 000152 automatic fixed bin(17,0) dcl 2744 set ref 2758* 2760 2763* 2766 2768 pt_current_position 000153 automatic fixed bin(17,0) dcl 2745 set ref 2755* 2758 2763 2766 2768* 2768 2769 2815 2819 pt_first_column_found 000154 automatic fixed bin(17,0) dcl 2746 set ref 2783* 2800* 2809 pt_hit 000155 automatic bit(1) dcl 2747 set ref 2788* 2789 2793* 2797 pt_inner_loop 000156 automatic fixed bin(17,0) dcl 2748 set ref 2789* 2790 2794* pt_loop 000157 automatic fixed bin(17,0) dcl 2749 set ref 2757* 2760 2769 2783 2800* pt_second_column_found 000160 automatic fixed bin(17,0) dcl 2750 set ref 2785* 2802* 2809 pt_triplet_length 000161 automatic fixed bin(17,0) dcl 2751 set ref 2754* 2763 2769 2815 rclac_code 000100 automatic fixed bin(35,0) dcl 2523 set ref 2576* 2579 rclac_column_name_length 000101 automatic fixed bin(17,0) dcl 2524 set ref 2588* 2592 rclac_current_position 000102 automatic fixed bin(17,0) dcl 2525 set ref 2546* 2556 2556 2566 2571 2576 2576 2588 2592 2613* 2615 2618* 2618 2621 rclac_finished 000103 automatic bit(1) dcl 2526 set ref 2552* 2554 2563* 2610 rclac_first_blank 000104 automatic fixed bin(17,0) dcl 2527 set ref 2556* 2559 2571 2588 2613 rclac_hit 000105 automatic bit(1) dcl 2528 set ref 2587* 2591 2592* 2598 rclac_inner_loop 000106 automatic fixed bin(17,0) dcl 2529 set ref 2591* 2592* 2600 rclac_judgement_table based structure array level 1 unaligned dcl 2530 set ref 2548 2550* rclac_judgement_table_ptr 000110 automatic pointer dcl 2531 set ref 2548* 2550 2576 2582 2582 2600 2604 2604 2607 2607 2629 2636 2636 2644 2650 rclac_judgement_table_ptr_parm parameter pointer dcl 2532 set ref 2496 2539* 2650* rclac_loop 000112 automatic fixed bin(17,0) dcl 2533 set ref 2554* 2559 2576 2582 2582 2600 2604 2607 2621* 2627* 2629* 2635* 2636 2636* 2642* 2644 2644* rclac_no_of_claimed_digits 000113 automatic fixed bin(17,0) dcl 2534 set ref 2571* 2573 2576 2576 rclac_spare_option_value 000231 automatic varying char dcl 2969 set ref 2543* 2545 2556 2566 2576 2576 2592 2615 2633* 2636* 2636 2644* 2644 2649 rclac_spare_option_value_length 000114 automatic fixed bin(17,0) dcl 2535 set ref 2545* 2559 2621 rclac_still_skipping_blanks 000115 automatic bit(1) dcl 2536 set ref 2612* 2614 2615* rclac_target_character 000116 automatic char(1) unaligned dcl 2537 set ref 2566* 2568 2568 regexp_sw 3(01) based bit(1) array level 3 packed unaligned dcl 12-7 set ref 648* 659* 870* 898* 922* 1256* release_area_ 000056 constant entry external dcl 2966 ref 160 242 256 262 release_temp_segment_ 000060 constant entry external dcl 2967 ref 1733 report_cip 000264 automatic pointer initial dcl 8-52 set ref 154 174 189 222* 223 233 241 243 247 251 255 257 261 263 267 268 269 270 8-52* 688 688 795 809 1328* 1329 1330 1331 1429 1429 1431 1433 1466 1466 1468 1854 1870 1904 1904 1913 1917 1935 1938 1943 1948 1973* 1975 1991 2009 2017 2031 2039 2054 2062 2068 2074 2080 2084 2085 2086 2088 2090 2095 2099 2221 2268 report_control_info based structure level 1 dcl 8-7 set ref 1973 1975* report_control_info_ptr 106 based pointer level 2 dcl 5-53 set ref 151 154* 222 1328 report_temp_seg_ptr based pointer level 2 dcl 8-7 set ref 251* 2039* report_work_area_ptr based pointer level 2 dcl 8-7 set ref 261 263* 2054* returned_option_value 000231 automatic varying char dcl 2968 set ref 178* 608* 1382* 1417* 1454* 1895* 2212* 2261* rslac_allow_duplicates_parm parameter bit(1) dcl 2673 set ref 2656 2693* rslac_blank_position 000100 automatic fixed bin(17,0) dcl 2674 set ref 2710* 2713 2715 rslac_code 000101 automatic fixed bin(35,0) dcl 2675 set ref 2692* 2693 2693* 2697 rslac_current_position 000102 automatic fixed bin(17,0) dcl 2676 set ref 2688* 2710 2713 2715* 2715 2718 2723 2723* 2723 rslac_original_option_value 000231 automatic varying char dcl 2970 set ref 2683* 2685 2710 2713 2723 rslac_original_option_value_length 000103 automatic fixed bin(17,0) dcl 2677 set ref 2685* 2718 rslac_result_option_value 000231 automatic varying char dcl 2971 set ref 2687* 2700 2780* 2780 2803* 2803 2815* 2815 2821* 2821 2824* 2824 rslac_still_parsing 000104 automatic bit(1) dcl 2678 set ref 2689* 2691 2718* rslac_triplet 000231 automatic varying char dcl 2972 set ref 2713* 2754 2758 2766 2819 rtrim builtin function dcl 2973 ref 2260 2292 2543 2649 2683 2700 rts_code 000740 automatic fixed bin(35,0) dcl 1730 set ref 1733* 1734 1734* rts_ptr_parm parameter pointer dcl 1731 set ref 1725 1733* 1734* scale 0(12) based bit(12) level 3 packed unaligned dcl 10-6 ref 1130 1130 sci_ptr 000232 automatic pointer dcl 2975 set ref 182* 220* 226* 235* 411* 612* 669* 679* 878* 906* 931* 1141* 1214* 1232* 1236* 1241* 1288* 1327* 1334* 1373* 1384* 1408* 1420* 1458* 1590* 1734* 1889* 1899* 1929* 1969* 1981* 1988* 1999* 2006* 2014* 2022* 2028* 2036* 2045* 2051* 2059* 2065* 2071* 2077* 2090* 2095* 2216* 2239* 2264* 2411* search builtin function dcl 2976 ref 1689 selection_expression_identifier 105 based fixed bin(17,0) level 2 in structure "lcb" dcl 5-53 in procedure "linus_options" ref 162 174 189 1431 selection_expression_identifier based fixed bin(17,0) level 2 in structure "report_control_info" dcl 8-7 in procedure "linus_options" set ref 174 189 1431* size 0(12) based structure level 2 packed unaligned dcl 10-6 size_of_names_and_values 000257 automatic fixed bin(21,0) dcl 6-32 set ref 456 494 538 941* 946* 948 948 965 990 1013 1308* 1309 1309 1311 size_of_names_and_values_parm parameter fixed bin(21,0) dcl 111 set ref 421 445* 456* 460 484* 494* 498 526* 538* specific_columns_names_and_values_info_ptr 000234 automatic pointer dcl 2977 set ref 935* 941 951 1012 ssu_$abort_line 000062 constant entry external dcl 2986 ref 114 182 411 612 669 679 878 906 931 1141 1214 1232 1236 1241 1288 1334 1373 1384 1408 1420 1458 1590 1889 1899 1929 1981 1988 1999 2006 2014 2022 2028 2036 2045 2051 2059 2065 2071 2077 2090 2095 2216 2239 2264 2411 ssu_$print_message 000064 constant entry external dcl 2987 ref 226 235 1734 star_name_info based structure level 1 unaligned dcl 2978 star_name_info_ptr 000236 automatic pointer dcl 2985 set ref 1189* 1190 1192 1192 1193 1222 1223 1223 1223 1226 1226 1226 1226 1229 1229 1245 1245 1258 1269 1269 star_name_map 2 based bit(1) array level 2 packed unaligned dcl 2978 set ref 1192* 1222* 1258 static_area 144 based area level 2 dcl 5-53 ref 1973 status_branch based structure level 1 dcl 11-8 ref 2087 status_ptr 000274 automatic pointer dcl 11-47 set ref 2087* 2093* 2099 stv_code_parm parameter fixed bin(35,0) dcl 1762 set ref 1742 1771* 1774 1776* 1779 1784* 1786 1795* 1796 1844* stv_loop 000750 automatic fixed bin(17,0) dcl 1763 set ref 1789* 1791 1793* stv_number_of_matches 000751 automatic fixed bin(17,0) dcl 1764 set ref 1784* stv_option_identifier_parm parameter varying char dcl 1766 set ref 1742 1771* 1784* stv_option_name_parm parameter varying char dcl 1765 set ref 1742 1771* 1793 1842* 1861* 1866 1866* 1881* 1927* 1929* stv_option_value_parm parameter varying char dcl 1767 ref 1742 1841 stv_system_default_parm parameter bit(1) dcl 1768 ref 1742 1839 1907 stv_value_has_been_tested 000752 automatic bit(1) dcl 1769 set ref 1921* 1934* 1943 substr builtin function dcl 2988 set ref 675 675 679 679 965* 990* 1013* 1368 1402 1861 1876 1922 2347 2378 2556 2566 2576 2576 2592 2615 2710 2713 2723 2758 2766 2819 subsystem_control_info_ptr 102 based pointer level 2 dcl 5-53 set ref 114* 220 1327 1969 sv_code_parm parameter fixed bin(35,0) dcl 1834 set ref 1804 1837* sv_force_group_triggers_consistency 000762 automatic bit(1) unaligned dcl 1835 set ref 1866* sv_option_value 000240 automatic varying char dcl 2989 set ref 1841* 1842* 1852* 1859* 1861 1861 1861* 1866* 1874* 1876 1876 1881* 1889 1895* 1899* 1913 1922 1935 1943 sv_spare_option_identifier 000240 automatic varying char dcl 2990 set ref 1879* 1881* sv_spare_option_value 000240 automatic varying char dcl 2991 set ref 1927* 1929 1935 sys_info$max_seg_size 000066 external static fixed bin(35,0) dcl 2992 ref 2003 2025 2048 system_default 000240 automatic bit(1) dcl 2993 set ref 571* 576* system_default_parm parameter bit(1) dcl 112 ref 543 571 table_info based structure level 1 dcl 9-5 table_ip 000266 automatic pointer dcl 9-57 set ref 1016 1062 1066 1107 1124 1130 1145 1149 1275 1333* 1344 1397 1598 1704 1711 1793 2255 2592 2636 2644 2780 2790 temp_dir_name based char(168) level 2 packed unaligned dcl 8-7 set ref 2086* 2088* 2090* 2095* temp_dir_unique_id based bit(36) level 2 dcl 8-7 set ref 2099* temp_seg_ptr 000242 automatic pointer dcl 2995 set ref 159* 160* 241* 242* 255* 256* 261* 262* 1998* 2002 2013* 2017 2021* 2025* 2031 2035* 2039 2044* 2048* 2054 2058* 2062 2064* 2068 2070* 2074 2076* 2080 the_identifier 11 based varying char(32) array level 2 dcl 6-36 set ref 1199* 1204* 1208* 1211* 1214* 1236* 1260 1263 the_name based varying char(32) array level 2 dcl 6-36 set ref 1199* 1232* 1236* 1260 1263 1275 translate builtin function dcl 2996 ref 2543 2683 type 0(01) based fixed bin(6,0) level 2 packed unsigned unaligned dcl 10-6 ref 1126 uid 11 based bit(36) level 3 packed unaligned dcl 11-8 ref 2099 unspec builtin function dcl 2998 set ref 791* 1975* 2550* valid_selection_expression 000244 automatic bit(1) dcl 3000 set ref 174 189 358 605 805 886 941 951 981 1185 1339* 1343* 1673 value 2 based structure array level 2 in structure "name_value_info" dcl 6-17 in procedure "linus_options" value 2 based structure array level 2 in structure "like_name_value_info" unaligned dcl 2929 in procedure "linus_options" value_$delete 000070 constant entry external dcl 3002 ref 675 value_$get 000074 constant entry external dcl 3004 ref 178 409 608 2237 2409 value_$init_seg 000072 constant entry external dcl 3003 ref 1987 value_$list 000076 constant entry external dcl 3005 ref 667 876 904 929 1286 value_$set 000100 constant entry external dcl 3006 ref 1382 1417 1454 1895 2212 2261 value_index 6 based fixed bin(21,0) array level 3 dcl 12-17 ref 974 1001 1027 1304 value_len 7 based fixed bin(21,0) array level 3 dcl 12-17 ref 976 1004 1030 1302 value_list_info based structure level 1 dcl 12-17 value_list_info_ptr 000300 automatic pointer dcl 12-3 set ref 667* 673 675 675 675 675 675 675 679 679 679 679 679 679 876* 882 904* 910 929* 935 964* 965 965 970 972 974 976 987 989* 990 990 995 998 1001 1004 1010 1012* 1013 1013 1021 1024 1027 1030 1286* 1293 1298 1300 1302 1304 1308 1311 value_seg_ptr 000246 automatic pointer dcl 3001 in procedure "linus_options" set ref 178* 409* 608* 667* 675* 876* 904* 929* 1286* 1329* 1382* 1417* 1454* 1895* 1979* 1987* 1991 2212* 2237* 2261* 2409* value_seg_ptr based pointer level 2 in structure "report_control_info" dcl 8-7 in procedure "linus_options" set ref 233* 1329 1991* verify builtin function dcl 3007 ref 1697 2294 2474 2483 2772 version based fixed bin(17,0) level 2 dcl 12-7 set ref 643* 865* 893* 917* 1249* vov_any_or_all 000100 automatic bit(1) dcl 2123 set ref 2195* 2228* 2320* 2402* 2559 2627 vov_character_string 000102 automatic varying char(80) dcl 2168 set ref 2289* 2290 2292* 2294 2294 vov_check_procs_for_general_column_options 000102 automatic entry variable initial array dcl 2139 set ref 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2139* 2187 vov_check_procs_for_general_report_options 000102 automatic entry variable initial array dcl 2126 set ref 2126* 2126* 2126* 2126* 2126* 2126* 2126* 2126* 2126* 2185 vov_check_procs_for_specific_column_options 000102 automatic entry variable initial array dcl 2158 set ref 2158* 2158* 2158* 2158* 2158* 2158* 2189 vov_check_result_bit 000101 automatic bit(1) dcl 2124 set ref 2178* 2191 2197* 2224* 2230* 2231 2245* 2274* 2283* 2294* 2307* 2317* 2322* 2330* 2343* 2352* 2360* 2385* 2399* 2404* 2405 2415* 2416 2419* 2428* 2436* 2448* 2452* 2462* 2466* 2474* 2487* vov_complete_the_list 000127 automatic bit(1) dcl 2169 set ref 2196* 2229* 2321* 2403* 2642 vov_loop 000130 automatic fixed bin(17,0) dcl 2170 set ref 2294 2346* 2347* 2377* 2378* vov_loop_limit 000131 automatic fixed bin(17,0) dcl 2171 set ref 2340* 2341 2346 2373* 2374 2377 vov_number_tester 000132 automatic fixed bin(17,0) dcl 2172 set ref 2485* 2485 2487 2487 vov_one_to_nine_found 000133 automatic bit(1) dcl 2173 set ref 2376* 2382* 2385 vov_option_name_parm parameter varying char dcl 2174 set ref 2105 2180* vov_option_value_parm parameter varying char dcl 2175 set ref 2105 2209 2235 2237* 2243 2253* 2255* 2255 2260* 2260 2261* 2264* 2268 2275* 2283 2283 2283 2283 2289 2292 2315 2330 2330 2340 2347 2360 2360 2360 2373 2378 2397 2408 2409* 2418* 2436 2436 2446 2460 2474 2483 2485 2540 2543 2649* 2680 2683 2700* vov_target_character 000134 automatic char(1) unaligned dcl 2176 set ref 2347* 2348 2348 2378* 2379 2379 2382 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 Directory internal static fixed bin(17,0) initial dcl 11-56 E_ACCESS internal static bit(3) initial 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 unsigned unaligned dcl 3-54 INDEX_FOR_COUNT internal static fixed bin(17,0) initial dcl 7-51 INDEX_FOR_DELIMITER internal static fixed bin(17,0) initial dcl 7-40 INDEX_FOR_EDITING internal static fixed bin(17,0) initial dcl 7-67 INDEX_FOR_EXCLUDE internal static fixed bin(17,0) initial dcl 7-52 INDEX_FOR_FOLDING internal static fixed bin(17,0) initial dcl 7-68 INDEX_FOR_FORMAT_DOCUMENT_CONTROLS internal static fixed bin(17,0) initial dcl 7-41 INDEX_FOR_GROUP_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 7-55 INDEX_FOR_GROUP_HEADER_VALUE internal static fixed bin(17,0) initial dcl 7-57 INDEX_FOR_HYPHENATION internal static fixed bin(17,0) initial dcl 7-42 INDEX_FOR_OUTLINE internal static fixed bin(17,0) initial dcl 7-58 INDEX_FOR_PAGE_BREAK internal static fixed bin(17,0) initial dcl 7-59 INDEX_FOR_PAGE_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 7-43 INDEX_FOR_PAGE_HEADER_VALUE internal static fixed bin(17,0) initial dcl 7-44 INDEX_FOR_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 7-45 INDEX_FOR_PAGE_WIDTH internal static fixed bin(17,0) initial dcl 7-46 INDEX_FOR_ROW_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 7-60 INDEX_FOR_ROW_HEADER_VALUE internal static fixed bin(17,0) initial dcl 7-61 INDEX_FOR_SEPARATOR internal static fixed bin(17,0) initial dcl 7-69 INDEX_FOR_SUBCOUNT internal static fixed bin(17,0) initial dcl 7-62 INDEX_FOR_SUBTOTAL internal static fixed bin(17,0) initial dcl 7-63 INDEX_FOR_TITLE_LINE internal static fixed bin(17,0) initial dcl 7-47 INDEX_FOR_TOTAL internal static fixed bin(17,0) initial dcl 7-64 INDEX_FOR_TRUNCATION internal static fixed bin(17,0) initial dcl 7-48 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 3-54 Link internal static fixed bin(17,0) initial dcl 11-56 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 3-54 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Segment internal static fixed bin(17,0) initial dcl 11-56 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 alloc_chars_len automatic fixed bin(21,0) dcl 12-5 alloc_pair_count automatic fixed bin(17,0) dcl 12-4 arg_descriptor_ptr automatic pointer dcl 2-34 arg_list_with_envptr based structure level 1 dcl 3-42 command_name_arglist based structure level 1 dcl 3-25 extended_arg_descriptor based structure level 1 dcl 2-21 fixed_arg_descriptor based structure level 1 dcl 2-13 init_number_of_descriptors automatic fixed bin(17,0) dcl 9-54 rel builtin function dcl 2965 row_ptrs based structure level 1 dcl 9-32 row_ptrs_p automatic pointer dcl 9-41 row_segs_info based structure level 1 dcl 9-25 row_segs_ip automatic pointer dcl 9-39 row_value based char unaligned dcl 9-36 row_value_p automatic pointer unaligned dcl 9-37 rsi_init_max_number_of_seg_ptrs automatic fixed bin(17,0) dcl 9-55 status_area_ptr automatic pointer dcl 11-47 status_entry_names based char(32) array dcl 11-47 status_link based structure level 1 dcl 11-38 status_pathname based char dcl 11-47 store_ap automatic pointer dcl 9-56 store_args based structure level 1 dcl 9-44 ti_init_column_count automatic fixed bin(17,0) dcl 9-58 value_list_info_version_1 internal static fixed bin(17,0) initial dcl 12-27 NAMES DECLARED BY EXPLICIT CONTEXT. check_all_column_names_eventually 020063 constant entry internal dcl 2193 ref 2139 check_and_keep_triggers_consistent 020114 constant entry internal dcl 2203 ref 2139 check_any_alignment_mode 020775 constant entry internal dcl 2281 ref 2158 check_any_character_string 021163 constant entry internal dcl 2305 ref 2126 2126 2139 2139 2139 2139 2158 2158 check_any_column_names_or_none 021175 constant entry internal dcl 2313 ref 2139 2139 2139 2139 2139 check_any_folding_action 021237 constant entry internal dcl 2328 ref 2158 check_any_positive_integer 021366 constant entry internal dcl 2371 ref 2158 check_any_printable_string_no_NL 021265 constant entry internal dcl 2338 ref 2126 2158 check_any_single_printable_character 021334 constant entry internal dcl 2358 ref 2126 check_any_valid_group_list 021442 constant entry internal dcl 2392 ref 2139 2139 check_identifier 004725 constant entry external dcl 274 check_name 005076 constant entry external dcl 312 check_on_or_off 021702 constant entry internal dcl 2434 ref 2126 2126 2126 check_subcount_list_or_none 021730 constant entry internal dcl 2444 ref 2139 check_subtotal_list_or_none 021767 constant entry internal dcl 2458 ref 2139 check_zero_or_any_positive_integer 022026 constant entry internal dcl 2472 ref 2126 check_zero_or_greater_than_six 022055 constant entry internal dcl 2481 ref 2126 delete_column_options 006264 constant entry internal dcl 622 ref 180 610 expand_short_option_name 006715 constant entry internal dcl 695 ref 344 extract_active_from_all 007137 constant entry internal dcl 771 ref 451 get 005256 constant entry external dcl 367 get_active 005552 constant entry external dcl 421 get_all 005626 constant entry external dcl 460 get_all_names_and_values 007306 constant entry internal dcl 844 ref 450 489 get_general_column_default_value 010264 constant entry internal dcl 1040 ref 1371 1861 1927 get_named 005706 constant entry external dcl 498 get_named_values 011065 constant entry internal dcl 1157 ref 531 get_specific_column_default_value 010421 constant entry internal dcl 1076 ref 1405 1881 get_triplet 023266 constant entry internal dcl 2704 ref 2692 housekeeping 012260 constant entry internal dcl 1317 ref 158 303 342 397 448 487 529 574 602 initialize 004072 constant entry external dcl 117 linus_options 004027 constant entry external dcl 19 load_value_seg_with_column_defaults 012363 constant entry internal dcl 1351 ref 189 618 load_value_seg_with_report_defaults 013163 constant entry internal dcl 1440 ref 155 603 lookup_general_column_option 013404 constant entry internal dcl 1518 ref 1505 lookup_general_report_option 013440 constant entry internal dcl 1531 ref 1498 lookup_name_from_table 007045 constant entry internal dcl 738 ref 721 730 lookup_option_number 013323 constant entry internal dcl 1474 ref 352 1665 2180 lookup_specific_column_option 013474 constant entry internal dcl 1544 ref 1512 match_column_names 013530 constant entry internal dcl 1559 ref 1211 1784 normalize_option_name 013772 constant entry internal dcl 1622 ref 305 399 1199 1771 parse_triplet 023355 constant entry internal dcl 2734 ref 2693 release_temp_segment 014357 constant entry internal dcl 1725 ref 243 247 251 257 263 267 268 269 270 replace_column_list_after_checking 022121 constant entry internal dcl 2496 ref 2197 2230 2245 2322 2404 2415 replace_subtotal_list_after_checking 023062 constant entry internal dcl 2656 ref 2452 2466 set_all_to_system_defaults 006141 constant entry external dcl 582 set_and_check 005777 constant entry external dcl 543 set_the_values 014436 constant entry internal dcl 1742 ref 576 set_value 014703 constant entry internal dcl 1804 ref 1776 1795 setup_to_do_reporting 015564 constant entry internal dcl 1959 ref 153 terminate 004300 constant entry external dcl 196 valid_option_value 017435 constant entry internal dcl 2105 ref 1842 1866 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 25676 26000 24710 25706 Length 26666 24710 102 651 765 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_options 1439 external procedure is an external procedure. delete_column_options internal procedure shares stack frame of external procedure linus_options. expand_short_option_name internal procedure shares stack frame of external procedure linus_options. lookup_name_from_table internal procedure shares stack frame of external procedure linus_options. extract_active_from_all internal procedure shares stack frame of external procedure linus_options. get_all_names_and_values internal procedure shares stack frame of external procedure linus_options. get_general_column_default_value internal procedure shares stack frame of external procedure linus_options. get_specific_column_default_value internal procedure shares stack frame of external procedure linus_options. get_named_values internal procedure shares stack frame of external procedure linus_options. housekeeping internal procedure shares stack frame of external procedure linus_options. load_value_seg_with_column_defaults internal procedure shares stack frame of external procedure linus_options. load_value_seg_with_report_defaults internal procedure shares stack frame of external procedure linus_options. lookup_option_number 96 internal procedure is called by several nonquick procedures. lookup_general_column_option internal procedure shares stack frame of internal procedure lookup_option_number. lookup_general_report_option internal procedure shares stack frame of internal procedure lookup_option_number. lookup_specific_column_option internal procedure shares stack frame of internal procedure lookup_option_number. match_column_names internal procedure shares stack frame of external procedure linus_options. normalize_option_name internal procedure shares stack frame of external procedure linus_options. release_temp_segment internal procedure shares stack frame of external procedure linus_options. set_the_values internal procedure shares stack frame of external procedure linus_options. set_value internal procedure shares stack frame of external procedure linus_options. setup_to_do_reporting internal procedure shares stack frame of external procedure linus_options. valid_option_value 130 internal procedure uses auto adjustable storage. check_all_column_names_eventually 74 internal procedure is assigned to an entry variable. check_and_keep_triggers_consistent 124 internal procedure is assigned to an entry variable. check_any_alignment_mode 226 internal procedure is assigned to an entry variable. check_any_character_string 64 internal procedure is assigned to an entry variable. check_any_column_names_or_none 74 internal procedure is assigned to an entry variable. check_any_folding_action 64 internal procedure is assigned to an entry variable. check_any_printable_string_no_NL 65 internal procedure is assigned to an entry variable. check_any_single_printable_character 64 internal procedure is assigned to an entry variable. check_any_positive_integer 65 internal procedure is assigned to an entry variable. check_any_valid_group_list 118 internal procedure is assigned to an entry variable. check_on_or_off 64 internal procedure is assigned to an entry variable. check_subcount_list_or_none 74 internal procedure is assigned to an entry variable. check_subtotal_list_or_none 74 internal procedure is assigned to an entry variable. check_zero_or_any_positive_integer 64 internal procedure is assigned to an entry variable. check_zero_or_greater_than_six 222 internal procedure is assigned to an entry variable. replace_column_list_after_checking 106 internal procedure is called by several nonquick procedures. replace_subtotal_list_after_checking 289 internal procedure is called by several nonquick procedures. get_triplet internal procedure shares stack frame of internal procedure replace_subtotal_list_after_c parse_triplet internal procedure shares stack frame of internal procedure replace_subtotal_list_after_c STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_and_keep_triggers_consistent 000100 caktc_group_list_ptr check_and_keep_triggers_consistent 000102 caktc_inner_loop check_and_keep_triggers_consistent 000103 caktc_loop check_and_keep_triggers_consistent check_any_valid_group_list 000100 cavgl_group_list_judgement_table_ptr check_any_valid_group_list 000102 cavgl_loop check_any_valid_group_list linus_options 000100 code linus_options 000100 caktc_option_value linus_options 000100 cavgl_save_option_value linus_options 000102 column_map_ptr linus_options 000104 directory_name linus_options 000156 entry_name linus_options 000166 general_columns_names_and_values_info_ptr linus_options 000170 general_report_names_and_values_info_ptr linus_options 000172 judgement_table_ptr linus_options 000174 like_names_and_values_info_ptr linus_options 000176 me linus_options 000176 lvswcd_option_value linus_options 000176 long_option_name linus_options 000176 lvswcd_option_name linus_options 000176 lvswcd_option_identifier linus_options 000216 names_and_values_area_ptr linus_options 000220 names_and_values_bit_map_ptr linus_options 000222 names_and_values_temp_seg_ptr linus_options 000224 normalized_option_name linus_options 000224 no_of_active_names_and_values linus_options 000225 no_of_names_and_values_in_bit_map linus_options 000226 number_of_defined_columns linus_options 000227 option_name linus_options 000227 option_identifier linus_options 000227 option_table_index linus_options 000230 option_type linus_options 000231 option_value linus_options 000231 rclac_spare_option_value linus_options 000231 rslac_result_option_value linus_options 000231 returned_option_value linus_options 000231 rslac_original_option_value linus_options 000231 rslac_triplet linus_options 000232 sci_ptr linus_options 000234 specific_columns_names_and_values_info_ptr linus_options 000236 star_name_info_ptr linus_options 000240 system_default linus_options 000240 sv_spare_option_value linus_options 000240 sv_spare_option_identifier linus_options 000240 sv_option_value linus_options 000242 temp_seg_ptr linus_options 000244 valid_selection_expression linus_options 000246 value_seg_ptr linus_options 000250 extended_arg_type linus_options 000252 names_and_values_info_ptr linus_options 000254 names_and_values_ptr linus_options 000256 no_of_names_and_values linus_options 000257 size_of_names_and_values linus_options 000260 no_of_options_in_name_table linus_options 000262 option_name_table_ptr linus_options 000264 report_cip linus_options 000266 table_ip linus_options 000270 desc_ptr linus_options 000272 num_dims linus_options 000274 status_ptr linus_options 000276 match_info_ptr linus_options 000300 value_list_info_ptr linus_options 000302 alloc_name_count linus_options 000303 alloc_max_name_len linus_options 000522 dco_inner_loop delete_column_options 000523 dco_loop delete_column_options 000536 eson_table_index expand_short_option_name 000546 lnft_loop1 lookup_name_from_table 000547 lnft_loop2 lookup_name_from_table 000550 lnft_loop3 lookup_name_from_table 000560 eafa_inner_loop extract_active_from_all 000561 eafa_loop extract_active_from_all 000574 ganav_inner_loop get_all_names_and_values 000575 ganav_loop get_all_names_and_values 000576 ganav_loop_limit get_all_names_and_values 000577 ganav_no_of_chars_already_done get_all_names_and_values 000614 ggcdv_loop get_general_column_default_value 000624 gscdv_column_option_number get_specific_column_default_value 000625 gscdv_column_type get_specific_column_default_value 000626 gscdv_hit get_specific_column_default_value 000627 gscdv_loop get_specific_column_default_value 000640 gnv_current_star_name get_named_values 000641 gnv_inner_loop get_named_values 000642 gnv_loop get_named_values 000643 gnv_match_info_index get_named_values 000644 gnv_number_of_matches get_named_values 000666 lvswcd_inner_loop load_value_seg_with_column_defaults 000667 lvswcd_loop load_value_seg_with_column_defaults 000702 lvswrd_loop load_value_seg_with_report_defaults 000714 mcn_loop match_column_names 000715 mcn_number_of_matches match_column_names 000726 non_column_option_number normalize_option_name 000727 non_loop normalize_option_name 000740 rts_code release_temp_segment 000750 stv_loop set_the_values 000751 stv_number_of_matches set_the_values 000752 stv_value_has_been_tested set_the_values 000762 sv_force_group_triggers_consistency set_value lookup_option_number 000100 lon_loop lookup_option_number replace_column_list_after_checking 000100 rclac_code replace_column_list_after_checking 000101 rclac_column_name_length replace_column_list_after_checking 000102 rclac_current_position replace_column_list_after_checking 000103 rclac_finished replace_column_list_after_checking 000104 rclac_first_blank replace_column_list_after_checking 000105 rclac_hit replace_column_list_after_checking 000106 rclac_inner_loop replace_column_list_after_checking 000110 rclac_judgement_table_ptr replace_column_list_after_checking 000112 rclac_loop replace_column_list_after_checking 000113 rclac_no_of_claimed_digits replace_column_list_after_checking 000114 rclac_spare_option_value_length replace_column_list_after_checking 000115 rclac_still_skipping_blanks replace_column_list_after_checking 000116 rclac_target_character replace_column_list_after_checking replace_subtotal_list_after_checking 000100 rslac_blank_position replace_subtotal_list_after_checking 000101 rslac_code replace_subtotal_list_after_checking 000102 rslac_current_position replace_subtotal_list_after_checking 000103 rslac_original_option_value_length replace_subtotal_list_after_checking 000104 rslac_still_parsing replace_subtotal_list_after_checking 000114 gt_still_skipping_blanks get_triplet 000124 pt_character_string parse_triplet 000151 pt_column_number parse_triplet 000152 pt_comma_position parse_triplet 000153 pt_current_position parse_triplet 000154 pt_first_column_found parse_triplet 000155 pt_hit parse_triplet 000156 pt_inner_loop parse_triplet 000157 pt_loop parse_triplet 000160 pt_second_column_found parse_triplet 000161 pt_triplet_length parse_triplet valid_option_value 000100 vov_any_or_all valid_option_value 000101 vov_check_result_bit valid_option_value 000102 vov_character_string valid_option_value 000102 vov_check_procs_for_general_report_options valid_option_value 000102 vov_check_procs_for_specific_column_options valid_option_value 000102 vov_check_procs_for_general_column_options valid_option_value 000127 vov_complete_the_list valid_option_value 000130 vov_loop valid_option_value 000131 vov_loop_limit valid_option_value 000132 vov_number_tester valid_option_value 000133 vov_one_to_nine_found valid_option_value 000134 vov_target_character valid_option_value THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp alloc_temp cat_realloc_chars call_ent_var call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc call_int_other return_mac alloc_auto_adj shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc set_chars_eis any_to_any_truncate_op_alloc_ index_after_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ delete_$ptr expand_pathname_ get_pdir_ get_temp_segment_ hcs_$make_seg hcs_$status_long linus_fr_delete_report linus_table$info match_star_name_ mdbm_util_$mu_define_area release_area_ release_temp_segment_ ssu_$abort_line ssu_$print_message value_$delete value_$get value_$init_seg value_$list value_$set THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_s_permission error_table_$nomatch error_table_$nostars error_table_$oldnamerr linus_error_$bad_option_identifier linus_error_$bad_option_name linus_error_$bad_option_value linus_error_$no_lila_expr_processed sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2890 003346 2891 003356 2938 003366 2940 003376 2941 003406 2942 003416 2953 003426 2959 003436 2960 003446 2963 003456 2968 003466 2969 003476 2970 003506 2971 003516 2972 003526 2989 003536 2990 003546 2991 003556 2 36 003566 6 29 003570 6 30 003572 6 41 003573 8 52 003574 10 20 003575 178 003576 305 003601 344 003612 352 003620 399 003623 409 003634 576 003642 608 003653 1199 003656 1371 003661 1373 003667 1382 003672 1384 003703 1405 003711 1408 003722 1417 003725 1420 003736 1454 003744 1771 003747 1842 003752 1861 003755 1866 003760 1881 003763 1889 003771 1895 003774 1899 004005 1927 004013 2212 004016 2261 004021 19 004026 114 004035 117 004065 147 004103 148 004106 149 004112 151 004113 153 004117 154 004120 155 004125 158 004126 159 004127 160 004131 162 004140 174 004145 178 004161 180 004213 182 004217 189 004255 194 004275 196 004276 216 004311 218 004314 219 004320 220 004321 222 004323 223 004325 225 004330 226 004341 233 004367 235 004424 241 004452 242 004463 243 004472 247 004507 251 004524 255 004541 256 004552 257 004561 261 004576 262 004607 263 004616 267 004633 268 004650 269 004665 270 004702 272 004717 274 004720 296 004756 297 004761 298 004765 299 004777 300 005011 301 005013 303 005014 305 005015 307 005053 308 005055 310 005070 312 005071 335 005122 336 005125 337 005131 338 005143 339 005145 340 005146 342 005147 344 005150 345 005172 347 005174 348 005175 350 005176 352 005211 354 005230 358 005236 365 005247 367 005250 387 005313 389 005316 390 005322 391 005334 393 005346 394 005350 395 005356 397 005357 399 005360 402 005416 404 005420 405 005421 409 005422 411 005455 416 005511 417 005524 419 005543 421 005544 440 005573 441 005576 442 005602 443 005604 444 005605 445 005606 446 005607 448 005610 450 005611 451 005612 453 005613 454 005615 455 005617 456 005621 458 005623 460 005624 479 005647 480 005652 481 005656 482 005660 483 005661 484 005662 485 005663 487 005664 489 005665 491 005666 492 005670 493 005672 494 005674 496 005676 498 005677 519 005727 520 005732 521 005736 522 005741 523 005743 524 005745 525 005746 526 005747 527 005750 529 005751 531 005752 532 005754 535 005760 536 005762 537 005764 538 005766 541 005770 543 005771 566 006027 567 006032 568 006036 569 006050 570 006062 571 006074 572 006077 574 006100 576 006101 578 006134 580 006136 582 006137 598 006152 599 006155 600 006161 602 006162 603 006163 605 006164 608 006166 610 006220 612 006224 618 006262 620 006263 622 006264 636 006265 638 006267 641 006275 643 006313 645 006315 647 006325 648 006340 649 006346 652 006363 654 006365 656 006367 658 006377 659 006412 660 006420 663 006461 665 006463 667 006465 669 006506 673 006542 675 006553 679 006624 686 006701 688 006704 691 006714 695 006715 718 006733 719 006736 721 006737 723 006760 725 006762 727 006777 730 007000 732 007022 734 007040 736 007044 738 007045 750 007063 751 007065 753 007070 755 007073 756 007076 759 007123 761 007130 763 007133 765 007134 771 007137 786 007140 787 007142 789 007143 791 007152 793 007156 795 007165 798 007172 799 007176 803 007200 805 007202 807 007204 808 007206 809 007215 812 007224 813 007231 816 007233 817 007234 820 007236 823 007244 825 007246 826 007255 828 007262 830 007274 832 007276 834 007300 836 007302 838 007303 840 007305 844 007306 862 007307 863 007311 864 007313 865 007331 867 007333 869 007343 870 007356 871 007364 874 007401 876 007403 878 007424 882 007452 886 007454 889 007456 890 007460 891 007462 893 007500 895 007502 897 007511 898 007524 899 007532 902 007547 904 007551 906 007572 910 007620 912 007622 913 007624 915 007626 917 007644 919 007646 921 007655 922 007670 923 007676 927 007737 929 007742 931 007763 935 010011 941 010013 946 010025 948 010030 951 010037 956 010051 958 010054 964 010062 965 010064 968 010075 970 010105 972 010116 974 010120 976 010122 979 010124 981 010126 987 010131 988 010134 989 010136 990 010140 993 010152 995 010161 998 010173 1001 010175 1004 010200 1006 010202 1008 010203 1010 010205 1012 010210 1013 010212 1016 010224 1019 010230 1021 010237 1024 010251 1027 010253 1030 010256 1032 010260 1034 010261 1036 010263 1040 010264 1059 010302 1062 010314 1063 010326 1065 010332 1066 010341 1068 010403 1069 010406 1070 010407 1072 010420 1076 010421 1104 010444 1106 010445 1107 010457 1110 010472 1111 010474 1113 010476 1115 010500 1117 010502 1118 010514 1121 010515 1124 010527 1126 010534 1127 010541 1130 010565 1138 010673 1139 010706 1141 010724 1144 010755 1145 010756 1149 011005 1153 011053 1155 011064 1157 011065 1182 011067 1184 011070 1185 011072 1187 011077 1189 011101 1190 011103 1192 011105 1193 011123 1195 011125 1197 011134 1199 011143 1204 011206 1208 011246 1209 011253 1211 011256 1214 011317 1219 011357 1222 011365 1223 011372 1226 011412 1229 011463 1231 011465 1232 011466 1236 011525 1241 011571 1243 011605 1245 011607 1248 011612 1249 011630 1251 011632 1252 011634 1253 011635 1255 011645 1256 011660 1258 011666 1260 011674 1263 011724 1266 011766 1267 011770 1269 011771 1272 012014 1273 012023 1275 012030 1278 012114 1280 012116 1281 012120 1284 012121 1286 012123 1288 012144 1293 012172 1294 012175 1297 012203 1298 012213 1300 012223 1302 012226 1304 012230 1306 012232 1308 012234 1309 012237 1311 012246 1313 012257 1317 012260 1327 012261 1328 012266 1329 012272 1330 012302 1331 012304 1333 012306 1334 012321 1339 012352 1340 012353 1341 012354 1343 012355 1344 012357 1347 012362 1351 012363 1364 012364 1366 012373 1367 012407 1368 012421 1371 012427 1373 012443 1382 012503 1384 012543 1389 012603 1391 012605 1393 012615 1395 012631 1397 012641 1399 012656 1401 012714 1402 012732 1405 012740 1408 012761 1417 013021 1420 013061 1425 013121 1427 013123 1429 013125 1431 013135 1433 013143 1436 013162 1440 013163 1452 013164 1454 013173 1458 013232 1464 013271 1466 013273 1468 013303 1470 013321 1474 013322 1496 013336 1498 013340 1499 013346 1501 013351 1502 013353 1505 013354 1506 013362 1508 013365 1509 013367 1512 013370 1513 013376 1516 013403 1518 013404 1522 013406 1523 013415 1525 013433 1527 013435 1531 013440 1535 013442 1536 013451 1538 013467 1540 013471 1544 013474 1548 013476 1549 013505 1551 013523 1553 013525 1559 013530 1586 013541 1587 013577 1588 013600 1590 013601 1596 013654 1597 013655 1598 013665 1601 013734 1603 013740 1604 013754 1605 013755 1606 013756 1609 013762 1611 013764 1613 013766 1614 013770 1618 013771 1622 013772 1662 014015 1663 014020 1665 014021 1667 014041 1669 014044 1670 014047 1673 014050 1677 014061 1678 014064 1682 014065 1685 014071 1686 014103 1689 014104 1691 014120 1692 014123 1694 014161 1697 014163 1699 014176 1701 014206 1704 014220 1707 014263 1710 014265 1711 014275 1713 014310 1715 014346 1717 014350 1719 014352 1721 014356 1725 014357 1733 014361 1734 014403 1738 014435 1742 014436 1771 014461 1774 014517 1776 014522 1777 014530 1779 014531 1782 014535 1784 014544 1786 014602 1789 014606 1791 014615 1793 014622 1795 014665 1796 014674 1800 014700 1802 014702 1804 014703 1837 014705 1839 014706 1841 014712 1842 014724 1844 014750 1845 014754 1848 014755 1850 014756 1852 014761 1854 014776 1856 015003 1857 015004 1859 015006 1861 015023 1865 015046 1866 015047 1870 015101 1872 015107 1874 015110 1876 015125 1879 015133 1881 015160 1889 015201 1895 015241 1899 015301 1904 015341 1907 015351 1911 015361 1913 015363 1917 015402 1919 015406 1921 015407 1922 015410 1927 015424 1929 015442 1934 015503 1935 015505 1938 015524 1943 015532 1948 015555 1953 015563 1959 015564 1969 015565 1973 015572 1975 015616 1979 015641 1981 015710 1987 015744 1988 015767 1991 016023 1998 016033 1999 016054 2002 016102 2003 016104 2006 016140 2009 016166 2013 016177 2014 016220 2017 016246 2021 016257 2022 016300 2025 016326 2028 016361 2031 016407 2035 016420 2036 016441 2039 016467 2044 016500 2045 016521 2048 016547 2051 016603 2054 016631 2058 016642 2059 016663 2062 016711 2064 016722 2065 016743 2068 016771 2070 017002 2071 017023 2074 017051 2076 017062 2077 017103 2080 017131 2084 017142 2085 017145 2086 017146 2087 017165 2088 017172 2090 017233 2093 017302 2095 017342 2099 017413 2101 017433 2105 017434 2126 017455 2139 017550 2158 017706 2178 017761 2180 017762 2182 020004 2185 020015 2187 020031 2189 020044 2191 020054 2193 020062 2195 020070 2196 020072 2197 020074 2199 020112 2203 020113 2209 020121 2211 020131 2212 020135 2216 020200 2221 020241 2223 020251 2224 020257 2225 020262 2228 020263 2229 020264 2230 020265 2231 020303 2234 020304 2235 020307 2236 020324 2237 020330 2239 020371 2243 020426 2245 020436 2246 020454 2247 020465 2252 020500 2253 020502 2254 020506 2255 020517 2258 020574 2259 020575 2260 020577 2261 020620 2264 020663 2268 020727 2272 020746 2274 020754 2275 020757 2277 020773 2281 020774 2283 021002 2289 021034 2290 021051 2292 021056 2294 021131 2301 021161 2305 021162 2307 021170 2309 021173 2313 021174 2315 021202 2317 021212 2318 021214 2320 021215 2321 021216 2322 021217 2324 021235 2328 021236 2330 021244 2334 021263 2338 021264 2340 021272 2341 021277 2343 021300 2344 021302 2346 021303 2347 021312 2348 021320 2351 021326 2352 021330 2354 021332 2358 021333 2360 021341 2367 021364 2371 021365 2373 021373 2374 021400 2376 021401 2377 021402 2378 021412 2379 021420 2382 021426 2384 021432 2385 021434 2388 021440 2392 021441 2397 021447 2399 021457 2400 021461 2402 021462 2403 021463 2404 021464 2405 021502 2407 021503 2408 021506 2409 021523 2411 021557 2415 021614 2416 021633 2418 021634 2419 021650 2421 021652 2422 021661 2427 021673 2428 021675 2430 021700 2434 021701 2436 021707 2440 021726 2444 021727 2446 021735 2448 021745 2449 021747 2452 021750 2454 021765 2458 021766 2460 021774 2462 022004 2463 022006 2466 022007 2468 022024 2472 022025 2474 022033 2477 022053 2481 022054 2483 022062 2485 022100 2487 022110 2492 022117 2496 022120 2539 022126 2540 022131 2543 022146 2545 022230 2546 022233 2548 022235 2550 022245 2552 022257 2554 022260 2556 022271 2559 022315 2563 022334 2566 022336 2568 022342 2571 022350 2573 022353 2576 022363 2579 022415 2582 022426 2585 022445 2587 022446 2588 022447 2591 022452 2592 022463 2596 022502 2598 022504 2600 022514 2604 022523 2607 022542 2610 022544 2612 022546 2613 022550 2614 022553 2615 022556 2618 022570 2620 022571 2621 022572 2625 022610 2627 022612 2629 022627 2631 022642 2633 022644 2635 022647 2636 022657 2640 022727 2642 022732 2644 022745 2647 023016 2649 023021 2650 023051 2652 023054 2656 023061 2680 023067 2683 023105 2685 023167 2687 023172 2688 023173 2689 023175 2691 023177 2692 023202 2693 023204 2695 023217 2697 023220 2700 023230 2702 023260 2704 023266 2709 023270 2710 023271 2713 023313 2715 023324 2718 023326 2721 023333 2722 023335 2723 023340 2726 023352 2727 023353 2730 023354 2734 023355 2753 023357 2754 023361 2755 023365 2757 023367 2758 023373 2760 023415 2763 023422 2766 023426 2768 023436 2769 023440 2772 023447 2774 023462 2776 023472 2780 023502 2783 023543 2785 023552 2786 023554 2788 023555 2789 023556 2790 023567 2793 023602 2794 023604 2796 023606 2797 023610 2800 023613 2802 023621 2803 023623 2806 023662 2807 023663 2809 023665 2815 023675 2818 023737 2819 023740 2821 023757 2824 024021 2827 024064 2830 024066 2832 024067 ----------------------------------------------------------- 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