COMPILATION LISTING OF SEGMENT rw_options Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1142.83_Tue_mdt 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 rw_match_star_name. 12* Rw_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 rw_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* check_identifier 28* 29* Called to check a column/option identifier. Translates an option name 30* and option identifier into a character string consisting of the option 31* name and real option identifier (i.e. translates 1 into the name of 32* column 1.) Can also be used to determine if the column name is a star 33* name. 34* 35* check_name 36* 37* Called to check an option name, expand the short option name into a 38* long name, and determine if it needs a column/option identifier. 39* 40* define_new_column_options 41* 42* Called when the user has selected a new set of columns or done something 43* that has resulted in no columns being defined. 44* 45* get 46* 47* Called to get the value of a formatting option. 48* 49* get_active 50* 51* Called to get the names and values of the active formatting 52* options. 53* 54* get_all 55* 56* Called to get the names and values of all of the formatting 57* options. 58* 59* get_named 60* 61* Called to get the names and values of a set of formatting options. The 62* options are named by the caller, but the names of columns can be names, 63* star names or numbers. The names returned by this module are actual 64* column names instead of numbers or star names. 65* 66* set_and_check 67* 68* Called to set a formatting option to a provided value. The option 69* name and value are checked for validity. 70* 71* set_all_to_system_defaults 72* 73* Called to set all of the formatting options to their default 74* values. 75* 76* Known Bugs: 77* 78* Other Problems: 79* 80* History: 81* 82* Written - Al Dupuis - August 1983 83* Changed - Al Dupuis - October 1984 - Became report_writer_. 84* 85**/ 86 87 88 /* These parameters are described at each entry where they are used. */ 89 90 dcl code_parm fixed bin (35) parm; 91 dcl identifier_needed_parm bit (1) aligned parm; 92 dcl long_option_name_parm char (*) varying parm; 93 dcl names_and_values_info_ptr_parm ptr parm; 94 dcl names_and_values_ptr_parm ptr parm; 95 dcl no_of_names_and_values_parm fixed bin (21) parm; 96 dcl no_of_options_in_name_table_parm fixed bin (21) parm; 97 dcl normalized_option_name_parm char (*) varying parm; 98 dcl option_identifier_parm char (*) varying parm; 99 dcl option_name_parm char (*) varying parm; 100 dcl option_name_table_ptr_parm ptr parm; 101 dcl option_value_parm char (*) varying parm; 102 dcl report_cip_parm ptr parm; 103 dcl size_of_names_and_values_parm fixed bin (21) parm; 104 dcl system_default_parm bit (1) aligned parm; 105 106 return; 107 108 check_identifier: entry ( 109 110 report_cip_parm, /* input: points to report_control_info */ 111 option_name_parm, /* input: option name to look up */ 112 option_identifier_parm, /* input: option identifier to look up */ 113 normalized_option_name_parm, /* output: the option name and identifier */ 114 code_parm /* output: success or failure */ 115 ); 116 117 /* 118* 119* This entry is called to translate an option name and identifier into 120* a character string that contains the option name and real option 121* identifier. That is, an option identifier can be a number or the name 122* of a column. The returned option identifier is always the name of the 123* column. The option_name_parm should be the expanded version, as this 124* entry shouldn't be called until the check_name entry was called. This 125* entry does not support star names, but is useful for determining if 126* the identifier is a star name. 127* 128**/ 129 130 me = "rw_options$check_identifier"; 131 report_cip = report_cip_parm; 132 option_name = option_name_parm; 133 option_identifier = option_identifier_parm; 134 normalized_option_name_parm = ""; 135 code_parm = 0; 136 137 call housekeeping; 138 139 call normalize_option_name (option_name, option_identifier, 140 option_type, option_table_index, normalized_option_name, code); 141 code_parm = code; 142 normalized_option_name_parm = normalized_option_name; 143 144 return; 145 146 check_name: entry ( 147 148 report_cip_parm, /* input: points to report_control_info */ 149 option_name_parm, /* input: option name to determine type of */ 150 long_option_name_parm, /* output: long version of above name */ 151 identifier_needed_parm, /* output: ON means identifier needed */ 152 code_parm /* output: success or failure */ 153 ); 154 155 /* 156* 157* This entry point is called to check an option name and determine the 158* type of option the caller is dealing with. There are two types of 159* options. Ones like "-page_size" (general report or general column 160* options) which do not require anything else to identify them. For these 161* types "0"b is returned to describe their type. Others like "-width" 162* (specific column options) require a column number or name to identify 163* which they apply to. For these types "1"b is returned. The short or 164* long name provided is used to find the long name of the option and this 165* long name is returned. 166* 167**/ 168 169 me = "rw_options$check_name"; 170 report_cip = report_cip_parm; 171 option_name = option_name_parm; 172 long_option_name_parm = ""; 173 identifier_needed_parm = OFF; 174 code_parm = 0; 175 176 call housekeeping; 177 178 call expand_short_option_name (option_name, long_option_name, code); 179 if code ^= 0 180 then do; 181 code_parm = code; 182 return; 183 end; 184 else long_option_name_parm = long_option_name; 185 186 call lookup_option_number (long_option_name, 187 option_type, option_table_index); 188 if option_type = SPECIFIC_COLUMN_OPTION 189 then identifier_needed_parm = ON; 190 else; 191 192 if ^valid_select 193 then if (option_type = GENERAL_COLUMN_OPTION 194 | option_type = SPECIFIC_COLUMN_OPTION) 195 then code_parm = rw_error_$no_columns_defined; 196 else; 197 else; 198 199 return; 200 201 define_new_column_options: entry ( 202 203 report_cip_parm /* input: points to report_control_info */ 204 ); 205 /* 206* 207* This entrypoint is called when the user has selected a new set of 208* columns or the user has done something that results in no columns 209* being defined. It makes sure: 210* 211* 1) That the options which refer to columns are up to date. This means 212* deleting the old column options and loading the value seg with the new 213* column default options if the user has defined new columns since the last 214* time this entry was called, or deleting the old column options if the 215* user has unsuccessfully tried to define columns since the last time 216* this entry was called. 217* 218**/ 219 call housekeeping; 220 221 /* 222* 223* If we are out of date, or, there are no columns defined 224* but the column options are still around, then delete the column 225* options. Then if there are valid column definitions available, 226* load the new column default values. 227* 228**/ 229 230 if ^valid_select 231 then do; 232 call value_$get (value_seg_ptr, PERMANENT, 233 OPTIONS.GENERAL_COLUMN.NAME (1), returned_option_value, code); 234 if code = 0 235 then call delete_column_options; 236 else if code ^= error_table_$oldnamerr 237 then call ssu_$abort_line (sci_ptr, code, 238 "While trying to get the value of ^a for ^a.", 239 OPTIONS.GENERAL_COLUMN.NAME (1), me); 240 else; 241 end; 242 243 if valid_select 244 then call load_value_seg_with_column_defaults; 245 246 return; 247 248 get: entry ( 249 250 report_cip_parm, /* input: points to report_control_info */ 251 option_name_parm, /* input: option name to get value for */ 252 option_identifier_parm, /* input: option identifier for name */ 253 normalized_option_name_parm, /* output: the option name and identifier */ 254 option_value_parm, /* output: option value defined for name */ 255 code_parm /* output: success or failure */ 256 ); 257 258 /* 259* 260* This entry point is called by subroutines and requests. It 261* attempts to get the option value associated with the caller provided 262* option name. For option names that require an identifier, the option 263* name concatenated with a blank and the real option identifier is also 264* returned. That is, column names rather than numbers are always returned. 265* 266**/ 267 268 me = "rw_options$get"; 269 270 report_cip = report_cip_parm; 271 option_name = option_name_parm; 272 option_identifier = option_identifier_parm; 273 274 normalized_option_name_parm = ""; 275 option_value_parm = ""; 276 code_parm = 0; 277 278 call housekeeping; 279 280 call normalize_option_name (option_name, 281 option_identifier, option_type, option_table_index, 282 normalized_option_name, code); 283 if code ^= 0 284 then do; 285 code_parm = code; 286 return; 287 end; 288 289 290 call value_$get (value_seg_ptr, PERMANENT, 291 normalized_option_name, option_value, code); 292 if code ^= 0 293 then call ssu_$abort_line (sci_ptr, code, 294 "While trying to get the value for ^a.", 295 normalized_option_name); 296 297 normalized_option_name_parm = normalized_option_name; 298 option_value_parm = option_value; 299 300 return; 301 302 get_active: entry ( 303 304 report_cip_parm, /* input: points to report_control_info */ 305 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 306 no_of_names_and_values_parm, /* output: no of name-value pairs */ 307 names_and_values_ptr_parm, /* output: ptr to the names and values */ 308 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 309 code_parm /* output: success or failure */ 310 ); 311 312 /* 313* 314* This entrypoint is called by the report writer list_format_options and 315* save_format_options requests to get all the active formatting option 316* names and values. They are returned as a character string, along 317* with a structure which describes the character string. 318* 319**/ 320 321 me = "rw_options$get_active"; 322 report_cip = report_cip_parm; 323 names_and_values_info_ptr_parm = null (); 324 no_of_names_and_values_parm = 0; 325 names_and_values_ptr_parm = null (); 326 size_of_names_and_values_parm = 0; 327 code_parm = 0; 328 329 call housekeeping; 330 331 call get_all_names_and_values; 332 call extract_active_from_all; 333 334 names_and_values_info_ptr_parm = like_names_and_values_info_ptr; 335 no_of_names_and_values_parm = no_of_active_names_and_values; 336 names_and_values_ptr_parm = names_and_values_ptr; 337 size_of_names_and_values_parm = size_of_names_and_values; 338 339 return; 340 341 get_all: entry ( 342 343 report_cip_parm, /* input: points to report_control_info */ 344 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 345 no_of_names_and_values_parm, /* output: no of name-value pairs */ 346 names_and_values_ptr_parm, /* output: ptr to the names and values */ 347 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 348 code_parm /* output: success or failure */ 349 ); 350 351 /* 352* 353* This entrypoint is called by the report writer list_format_options and 354* save_format_options requests to get all of the formatting option names 355* and values. They are returned as a character string, along with a 356* structure which describes the character string. 357* 358**/ 359 360 me = "rw_options$get_all"; 361 report_cip = report_cip_parm; 362 names_and_values_info_ptr_parm = null (); 363 no_of_names_and_values_parm = 0; 364 names_and_values_ptr_parm = null (); 365 size_of_names_and_values_parm = 0; 366 code_parm = 0; 367 368 call housekeeping; 369 370 call get_all_names_and_values; 371 372 names_and_values_info_ptr_parm = names_and_values_info_ptr; 373 no_of_names_and_values_parm = no_of_names_and_values; 374 names_and_values_ptr_parm = names_and_values_ptr; 375 size_of_names_and_values_parm = size_of_names_and_values; 376 377 return; 378 379 get_named: entry ( 380 381 report_cip_parm, /* input: points to report_control_info */ 382 option_name_table_ptr_parm, /* input: an array of option names and identifiers */ 383 no_of_options_in_name_table_parm, /* input: no of option names */ 384 names_and_values_info_ptr_parm, /* output: ptr to names and values info */ 385 no_of_names_and_values_parm, /* output: no of name value pairs */ 386 names_and_values_ptr_parm, /* output: ptr to the names and values */ 387 size_of_names_and_values_parm, /* output: length of names_and_values char string */ 388 code_parm /* output: success or failure */ 389 ); 390 391 /* 392* 393* This entrypoint is called by the report writer save_format_options and 394* list_format_options requests. It takes an array of names as input and 395* creates a character string containing all of the names and values, along 396* with a structure which describes the character string. 397* 398**/ 399 400 me = "rw_options$get_named"; 401 report_cip = report_cip_parm; 402 option_name_table_ptr = option_name_table_ptr_parm; 403 no_of_options_in_name_table = no_of_options_in_name_table_parm; 404 names_and_values_info_ptr_parm = null(); 405 no_of_names_and_values_parm = 0; 406 names_and_values_ptr_parm = null (); 407 size_of_names_and_values_parm = 0; 408 code_parm = 0; 409 410 call housekeeping; 411 412 call get_named_values (code); 413 if code ^= 0 414 then code_parm = code; 415 else do; 416 names_and_values_info_ptr_parm = names_and_values_info_ptr; 417 no_of_names_and_values_parm = no_of_names_and_values; 418 names_and_values_ptr_parm = names_and_values_ptr; 419 size_of_names_and_values_parm = size_of_names_and_values; 420 end; 421 422 return; 423 424 set_and_check: entry ( 425 426 report_cip_parm, /* input: points to report_control_info */ 427 option_name_parm, /* input: option name to set value for */ 428 option_identifier_parm, /* input: option identifier for name */ 429 option_value_parm, /* input: option value to set */ 430 system_default_parm, /* input: on = set value to system default */ 431 code_parm /* output: success or failure */ 432 ); 433 434 /* 435* 436* This entry point is called by the set_format_options request to set a user 437* specified option name to either a user provided option value or the system 438* provided default. It first makes sure that the option name is valid. The 439* caller should have first called the check_name entry of this 440* suboutine and had the option name expanded and checked at that time. If 441* the user has requested that it be set to the system default value, it sets 442* it from system tables. Otherwise it determines if the value is legitimate 443* for the particular option. It is then set if the value is correct. 444* 445**/ 446 447 me = "rw_options$set_and_check"; 448 report_cip = report_cip_parm; 449 option_name = option_name_parm; 450 option_identifier = option_identifier_parm; 451 option_value = option_value_parm; 452 system_default = system_default_parm; 453 code_parm = 0; 454 455 call housekeeping; 456 457 call set_the_values (option_name, option_identifier, 458 option_value, system_default, code); 459 code_parm = code; 460 461 return; 462 463 set_all_to_system_defaults: entry ( 464 465 report_cip_parm, /* input: points to report_control_info */ 466 code_parm /* output: success or failure */ 467 ); 468 469 /* 470* 471* This entrypoint is called by the set_format_options request to set all 472* of the formatting options to the system provided defaults. It first 473* sets the general report options. It then sets the general and specific 474* column options if a valid statement is available. If there are old 475* column options hanging around they are deleted before the set operation. 476* 477**/ 478 479 me = "rw_options$set_all_to_system_defaults"; 480 report_cip = report_cip_parm; 481 code_parm = 0; 482 483 call housekeeping; 484 call load_value_seg_with_report_defaults; 485 486 if ^valid_select 487 then return; 488 489 call value_$get (value_seg_ptr, PERMANENT, 490 OPTIONS.GENERAL_COLUMN.NAME (1), returned_option_value, code); 491 if code = 0 492 then call delete_column_options; 493 else if code ^= error_table_$oldnamerr 494 then call ssu_$abort_line (sci_ptr, code, 495 "While trying to get the value of ^a for ^a.", 496 OPTIONS.GENERAL_COLUMN.NAME (1), me); 497 else; 498 499 call load_value_seg_with_column_defaults; 500 501 return; 502 503 delete_column_options: proc; 504 505 /* 506* 507* This proc is called to delete the column option names and values so that 508* leftover column options from another select don't get confused with the 509* current column options. If it runs into trouble the line is aborted 510* here because reporting can't possibly continue. 511* 512**/ 513 514 dcl dco_inner_loop fixed bin; 515 dcl dco_loop fixed bin; 516 517 alloc_name_count = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE 518 + NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 519 alloc_max_name_len = max (LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH, 520 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH) 521 + length (BLANK) + length (STAR_DOT_STAR_STAR); 522 allocate match_info in (names_and_values_area) 523 set (match_info_ptr); 524 match_info.version = match_info_version_1; 525 526 do dco_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 527 528 match_info.name_array.exclude_sw (dco_loop) = OFF; 529 match_info.name_array.regexp_sw (dco_loop) = OFF; 530 match_info.name_array.name (dco_loop) 531 = OPTIONS.GENERAL_COLUMN.NAME (dco_loop); 532 533 end; 534 535 dco_inner_loop = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE + 1; 536 537 do dco_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 538 539 match_info.name_array.exclude_sw (dco_inner_loop) = OFF; 540 match_info.name_array.regexp_sw (dco_inner_loop) = OFF; 541 match_info.name_array.name (dco_inner_loop) = 542 OPTIONS.SPECIFIC_COLUMN.NAME (dco_loop) 543 || BLANK || STAR_DOT_STAR_STAR; 544 dco_inner_loop = dco_inner_loop + 1; 545 546 end; 547 548 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 549 names_and_values_area_ptr, value_list_info_ptr, code); 550 if code ^= 0 551 then call ssu_$abort_line (sci_ptr, code, 552 "^a", "While trying to get the option names for the columns."); 553 554 do dco_loop = 1 to value_list_info.pair_count; 555 556 call value_$delete (value_seg_ptr, PERMANENT, 557 substr (value_list_info.chars, 558 value_list_info.pairs.name_index (dco_loop), 559 value_list_info.pairs.name_len (dco_loop)), code); 560 if code ^= 0 561 then call ssu_$abort_line (sci_ptr, code, 562 "While trying to delete the value of ^a.", 563 substr (value_list_info.chars, 564 value_list_info.pairs.name_index (dco_loop), 565 value_list_info.pairs.name_len (dco_loop))); 566 567 end; 568 569 report_control_info.options_identifier = 570 report_control_info.options_identifier + 1; 571 572 return; 573 574 end delete_column_options; 575 576 expand_short_option_name: proc ( 577 578 eson_option_name_parm, /* input: option name to expand */ 579 eson_long_option_name_parm, /* output: long version of option name */ 580 eson_code_parm /* output: success or failure */ 581 ); 582 583 /* 584* 585* When this proc is called it expects eson_option_name_parm to contain the 586* short or long option name. It sets eson_long_option_name_parm based on 587* the value of eson_option_name_parm. If the name isn't valid it sets 588* eson_code_parm to reflect this. It first does a binary table search on 589* the short_names table and if it's unsucessful it does the same to the 590* long_names table. 591* 592**/ 593 594 dcl eson_code_parm fixed bin (35) parm; 595 dcl eson_long_option_name_parm char (*) varying parm; 596 dcl eson_option_name_parm char (*) varying parm; 597 dcl eson_table_index fixed bin; 598 599 eson_long_option_name_parm = ""; 600 eson_code_parm = 0; 601 602 eson_table_index = lookup_name_from_table (eson_option_name_parm, 603 OPTION_NAMES_AS_ARGS.SHORT_NAME); 604 if eson_table_index ^= 0 605 then do; 606 eson_long_option_name_parm = OPTION_NAMES_AS_ARGS. 607 LONG_NAME_IN_SHORT_NAME_ORDER (eson_table_index); 608 return; 609 end; 610 611 eson_table_index = lookup_name_from_table (eson_option_name_parm, 612 OPTION_NAMES_AS_ARGS.LONG_NAME); 613 if eson_table_index ^= 0 614 then eson_long_option_name_parm = eson_option_name_parm; 615 else eson_code_parm = rw_error_$bad_option_name; 616 617 return; 618 619 lookup_name_from_table: proc ( 620 621 lnft_name_parm, /* input: name to look up */ 622 lnft_table_parm /* output: table to do lookup from */ 623 ) returns (fixed bin); 624 625 dcl lnft_loop1 fixed bin; 626 dcl lnft_loop2 fixed bin; 627 dcl lnft_loop3 fixed bin; 628 dcl lnft_name_parm char (*) varying parm; 629 dcl lnft_table_parm (*) char (*) varying parm; 630 631 lnft_loop1 = 1; 632 lnft_loop2 = hbound (lnft_table_parm, 1); 633 634 do while (lnft_loop1 <= lnft_loop2); 635 636 lnft_loop3 = divide (lnft_loop1 + lnft_loop2, 2, 17); 637 if lnft_name_parm = lnft_table_parm (lnft_loop3) 638 then return (lnft_loop3); 639 640 if lnft_name_parm < lnft_table_parm (lnft_loop3) 641 then lnft_loop2 = lnft_loop3 - 1; 642 else lnft_loop1 = lnft_loop3 + 1; 643 644 end; 645 646 return (0); 647 648 end lookup_name_from_table; 649 650 end expand_short_option_name; 651 652 extract_active_from_all: proc; 653 654 /* 655* 656* This proc is called by the entry get_active to extract the names and 657* values from the value list structures that are considered active. It 658* expects that get_all_names_and_values has just been called, and moves the 659* index and length of each name and value considered active, into a 660* structure returned to the caller of the get_active entrypoint. 661* 662**/ 663 664 dcl eafa_inner_loop fixed bin; 665 dcl eafa_loop fixed bin; 666 667 no_of_names_and_values_in_bit_map = no_of_names_and_values; 668 no_of_active_names_and_values = no_of_names_and_values; 669 670 allocate names_and_values_bit_map in (names_and_values_area) 671 set (names_and_values_bit_map_ptr); 672 unspec (names_and_values_bit_map) = OFF; 673 674 do eafa_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 675 676 if report_control_info.format_options_flags. 677 general_report_default_value (eafa_loop) 678 then do; 679 names_and_values_bit_map (eafa_loop) = ON; 680 no_of_active_names_and_values = 681 no_of_active_names_and_values - 1; 682 end; 683 684 end; 685 686 if valid_select 687 then do; 688 eafa_inner_loop = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE + 1; 689 do eafa_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 690 if report_control_info.format_options_flags 691 .general_column_default_value (eafa_loop) 692 then do; 693 names_and_values_bit_map (eafa_inner_loop) = ON; 694 no_of_active_names_and_values = 695 no_of_active_names_and_values - 1; 696 end; 697 eafa_inner_loop = eafa_inner_loop + 1; 698 end; 699 end; 700 701 allocate like_name_value_info in (names_and_values_area) 702 set (like_names_and_values_info_ptr); 703 704 eafa_inner_loop = 1; 705 706 do eafa_loop = 1 to no_of_names_and_values_in_bit_map; 707 if names_and_values_bit_map (eafa_loop) = OFF 708 then do; 709 like_name_value_info.name.index (eafa_inner_loop) = 710 name_value_info.name.index (eafa_loop); 711 like_name_value_info.name.length (eafa_inner_loop) = 712 name_value_info.name.length (eafa_loop); 713 like_name_value_info.value.index (eafa_inner_loop) = 714 name_value_info.value.index (eafa_loop); 715 like_name_value_info.value.length (eafa_inner_loop) = 716 name_value_info.value.length (eafa_loop); 717 eafa_inner_loop = eafa_inner_loop + 1; 718 end; 719 end; 720 721 return; 722 723 end extract_active_from_all; 724 725 get_all_names_and_values: proc; 726 727 /* 728* 729* This proc is called to obtain all of the names and values. It first gets 730* the general report options. Then, if there are column options defined, 731* the general column options are gotten, followed by the specific column 732* options. 733* 734**/ 735 736 dcl ganav_inner_loop fixed bin; 737 dcl ganav_loop fixed bin; 738 dcl ganav_loop_limit fixed bin; 739 dcl ganav_no_of_chars_already_done fixed bin (21); 740 741 /* Get the names and values for the general report options. */ 742 743 alloc_name_count = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 744 alloc_max_name_len = LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH; 745 allocate match_info in (names_and_values_area) set (match_info_ptr); 746 match_info.version = match_info_version_1; 747 748 do ganav_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 749 750 match_info.name_array.exclude_sw (ganav_loop) = OFF; 751 match_info.name_array.regexp_sw (ganav_loop) = OFF; 752 match_info.name_array.name (ganav_loop) 753 = OPTIONS.GENERAL_REPORT.NAME (ganav_loop); 754 755 end; 756 757 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 758 names_and_values_area_ptr, value_list_info_ptr, code); 759 if code ^= 0 760 then call ssu_$abort_line (sci_ptr, code, 761 "^/While trying to get the report option names and values."); 762 763 general_report_names_and_values_info_ptr = value_list_info_ptr; 764 765 /* Get the names and values for the general and specific column options. */ 766 767 if valid_select 768 then do; 769 770 alloc_name_count = NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 771 alloc_max_name_len = LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH; 772 allocate match_info in (names_and_values_area) 773 set (match_info_ptr); 774 match_info.version = match_info_version_1; 775 776 do ganav_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 777 778 match_info.name_array.exclude_sw (ganav_loop) = OFF; 779 match_info.name_array.regexp_sw (ganav_loop) = OFF; 780 match_info.name_array.name (ganav_loop) 781 = OPTIONS.GENERAL_COLUMN.NAME (ganav_loop); 782 783 end; 784 785 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 786 names_and_values_area_ptr, value_list_info_ptr, code); 787 if code ^= 0 788 then call ssu_$abort_line (sci_ptr, code, 789 "^/While trying to get the general column option names and values."); 790 791 general_columns_names_and_values_info_ptr = value_list_info_ptr; 792 793 alloc_name_count = NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 794 alloc_max_name_len = LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH 795 + length (BLANK) + length (STAR_DOT_STAR_STAR); 796 allocate match_info in (names_and_values_area) 797 set (match_info_ptr); 798 match_info.version = match_info_version_1; 799 800 do ganav_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 801 802 match_info.name_array.exclude_sw (ganav_loop) = OFF; 803 match_info.name_array.regexp_sw (ganav_loop) = OFF; 804 match_info.name_array.name (ganav_loop) 805 = OPTIONS.SPECIFIC_COLUMN.NAME (ganav_loop) 806 || BLANK || STAR_DOT_STAR_STAR; 807 808 end; 809 810 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 811 names_and_values_area_ptr, value_list_info_ptr, code); 812 if code ^= 0 813 then call ssu_$abort_line (sci_ptr, code, 814 "While trying to get the specific column option names and values."); 815 816 specific_columns_names_and_values_info_ptr = value_list_info_ptr; 817 818 end; 819 820 /* Set the number of options we have and the length of them. */ 821 822 if valid_select 823 then size_of_names_and_values = 824 general_report_names_and_values_info_ptr -> value_list_info.chars_len 825 + general_columns_names_and_values_info_ptr -> value_list_info.chars_len 826 + specific_columns_names_and_values_info_ptr -> value_list_info.chars_len; 827 else size_of_names_and_values = 828 general_report_names_and_values_info_ptr -> value_list_info.chars_len; 829 allocate names_and_values in (names_and_values_area) 830 set (names_and_values_ptr); 831 832 if valid_select 833 then no_of_names_and_values = 834 general_report_names_and_values_info_ptr -> value_list_info.pair_count 835 + general_columns_names_and_values_info_ptr -> value_list_info.pair_count 836 + specific_columns_names_and_values_info_ptr -> value_list_info.pair_count; 837 else no_of_names_and_values = 838 general_report_names_and_values_info_ptr -> value_list_info.pair_count; 839 allocate name_value_info in (names_and_values_area) 840 set (names_and_values_info_ptr); 841 842 /* Move the general report options and their lengths and index 843* into the callers table. */ 844 845 value_list_info_ptr = general_report_names_and_values_info_ptr; 846 substr (names_and_values, 1, value_list_info.chars_len) 847 = value_list_info.chars; 848 849 do ganav_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 850 851 name_value_info.name.index (ganav_loop) = 852 value_list_info.pairs.name_index (ganav_loop); 853 name_value_info.name.length (ganav_loop) = 854 value_list_info.pairs.name_len (ganav_loop); 855 name_value_info.value.index (ganav_loop) = 856 value_list_info.pairs.value_index (ganav_loop); 857 name_value_info.value.length (ganav_loop) = 858 value_list_info.pairs.value_len (ganav_loop); 859 860 end; 861 862 if ^valid_select 863 then return; 864 865 /* Move the general and specific column options and their lengths 866* and index into the callers table. */ 867 868 ganav_no_of_chars_already_done = value_list_info.chars_len; 869 ganav_inner_loop = NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE + 1; 870 value_list_info_ptr = general_columns_names_and_values_info_ptr; 871 substr (names_and_values, ganav_no_of_chars_already_done + 1, 872 value_list_info.chars_len) = value_list_info.chars; 873 874 do ganav_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 875 876 name_value_info.name.index (ganav_inner_loop) = 877 value_list_info.pairs.name_index (ganav_loop) 878 + ganav_no_of_chars_already_done; 879 name_value_info.name.length (ganav_inner_loop) = 880 value_list_info.pairs.name_len (ganav_loop); 881 882 name_value_info.value.index (ganav_inner_loop) = 883 value_list_info.pairs.value_index (ganav_loop) 884 + ganav_no_of_chars_already_done; 885 name_value_info.value.length (ganav_inner_loop) = 886 value_list_info.pairs.value_len (ganav_loop); 887 ganav_inner_loop = ganav_inner_loop + 1; 888 889 end; 890 891 ganav_no_of_chars_already_done = 892 ganav_no_of_chars_already_done + value_list_info.chars_len; 893 value_list_info_ptr = specific_columns_names_and_values_info_ptr; 894 substr (names_and_values, ganav_no_of_chars_already_done + 1, 895 value_list_info.chars_len) = value_list_info.chars; 896 897 ganav_loop_limit = NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE 898 * table_info.column_count; 899 900 do ganav_loop = 1 to ganav_loop_limit; 901 902 name_value_info.name.index (ganav_inner_loop) = 903 value_list_info.pairs.name_index (ganav_loop) 904 + ganav_no_of_chars_already_done; 905 name_value_info.name.length (ganav_inner_loop) = 906 value_list_info.pairs.name_len (ganav_loop); 907 908 name_value_info.value.index (ganav_inner_loop) = 909 value_list_info.pairs.value_index (ganav_loop) 910 + ganav_no_of_chars_already_done; 911 name_value_info.value.length (ganav_inner_loop) = 912 value_list_info.pairs.value_len (ganav_loop); 913 ganav_inner_loop = ganav_inner_loop + 1; 914 915 end; 916 917 return; 918 919 end get_all_names_and_values; 920 921 get_general_column_default_value: proc ( 922 923 ggcdv_option_name_parm, /* input: name of option */ 924 ggcdv_option_value_parm /* output: default value for above option */ 925 ); 926 927 /* 928* 929* When this proc is called it expects ggcdv_option_name_parm to contain 930* the name of the option that the default should be generated for. It 931* sets ggcdv_option_value_parm to this default value or "ERROR" if things 932* don't work out well. 933* 934**/ 935 936 dcl ggcdv_loop fixed bin; 937 dcl ggcdv_option_name_parm char (*) varying parm; 938 dcl ggcdv_option_value_parm char (*) varying parm; 939 940 if ggcdv_option_name_parm 941 = OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_COLUMN_ORDER) 942 then do; 943 ggcdv_option_value_parm = table_info.columns.column_name (1); 944 if number_of_defined_columns = 1 945 then return; 946 do ggcdv_loop = 2 to number_of_defined_columns; 947 ggcdv_option_value_parm = ggcdv_option_value_parm || BLANK 948 || table_info.columns.column_name (ggcdv_loop); 949 end; 950 end; 951 else ggcdv_option_value_parm = "ERROR"; 952 953 return; 954 955 end get_general_column_default_value; 956 957 get_specific_column_default_value: proc ( 958 959 gscdv_option_name_parm, /* input: option name */ 960 gscdv_option_identifier_parm, /* input: identifier for name */ 961 gscdv_option_value_parm /* output: value for the option */ 962 ); 963 964 /* 965* 966* This proc gets the default value of any given column. When called, it 967* expects that gscdv_option_name_parm contains a valid option name and 968* gscdv_option_identifier_parm contains a valid option identifier which has 969* been normalized into a column name. It places the default value in 970* gscdv_option_value_parm. This proc expects that table_info is available 971* and up to date, which means there has to be a set of columns defined. 972* Error conditions are handled by setting the value "ERROR". There should 973* never be any error conditions unless this proc is used incorrectly. 974* 975**/ 976 977 dcl gscdv_column_option_number fixed bin; 978 dcl gscdv_column_type fixed bin (6) unsigned unaligned; 979 dcl gscdv_hit bit (1) aligned; 980 dcl gscdv_loop fixed bin; 981 dcl gscdv_option_identifier_parm char (*) varying parm; 982 dcl gscdv_option_name_parm char (*) varying parm; 983 dcl gscdv_option_value_parm char (*) varying parm; 984 985 gscdv_hit = OFF; 986 987 do gscdv_loop = 1 to number_of_defined_columns while (^gscdv_hit); 988 if table_info.columns.column_name (gscdv_loop) 989 = gscdv_option_identifier_parm 990 then do; 991 gscdv_hit = ON; 992 gscdv_column_option_number = gscdv_loop; 993 end; 994 end; 995 996 if ^gscdv_hit 997 then do; 998 gscdv_option_value_parm = "ERROR"; 999 return; 1000 end; 1001 1002 if gscdv_option_name_parm 1003 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_ALIGNMENT) 1004 then do; 1005 arg_descriptor_ptr = addr (table_info.columns.column_data_type ( 1006 gscdv_column_option_number)); 1007 gscdv_column_type = arg_descriptor.type; 1008 if (gscdv_column_type >= 1 & gscdv_column_type <= 8) /* NUMERIC */ 1009 | (gscdv_column_type = 33 | gscdv_column_type = 34) 1010 then gscdv_option_value_parm = RIGHT; 1011 else if (gscdv_column_type >= 9 & gscdv_column_type <= 12) /* DECIMAL */ 1012 | (gscdv_column_type = 29 | gscdv_column_type = 30) 1013 | (gscdv_column_type = 35 | gscdv_column_type = 36) 1014 | (gscdv_column_type >= 38 & gscdv_column_type <= 46) 1015 then if fixed_arg_descriptor.scale > 0 1016 then gscdv_option_value_parm = DECIMAL || BLANK || ltrim (char 1017 (table_info.columns.column_length (gscdv_column_option_number) 1018 - fixed_arg_descriptor.scale)); 1019 else gscdv_option_value_parm = RIGHT; 1020 else if (gscdv_column_type >= 19 & gscdv_column_type <= 22) /* CHAR OR BIT */ 1021 then gscdv_option_value_parm = LEFT; 1022 else call ssu_$abort_line (sci_ptr, 0, 1023 "The table information described an unsupported data type.^/The data descriptor was ^d.", 1024 gscdv_column_type); 1025 end; 1026 else if gscdv_option_name_parm 1027 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_TITLE) 1028 then gscdv_option_value_parm 1029 = table_info.columns.column_name (gscdv_column_option_number); 1030 else if gscdv_option_name_parm 1031 = OPTIONS.SPECIFIC_COLUMN.NAME (INDEX_FOR_WIDTH) 1032 then gscdv_option_value_parm = ltrim (char 1033 (table_info.columns.column_length (gscdv_column_option_number))); 1034 else gscdv_option_value_parm = "ERROR"; 1035 1036 end get_specific_column_default_value; 1037 1038 get_named_values: proc (gnv_code_parm); 1039 1040 /* 1041* 1042* This proc is called by the get_named entrypoint to get the names and 1043* values which match a set of option names and identifiers supplied by the 1044* caller of the get_named entry. The option name can be a short or long 1045* name. The column/option identifier provided can be a column name, 1046* column number, or star name. The star names can only match column 1047* names; star name matching of column numbers is not attempted. 1048* Unfortunately, value_$list has an ugly little quirk of not returning the 1049* code error_table_$nomatch when star names result in no match, if any 1050* other name in the match_info structure does get a match. So we have to 1051* pre-match star names or else user specified star names that don't get a 1052* match could well go unnoticed. 1053* 1054**/ 1055 1056 dcl gnv_code_parm fixed bin (35) parm; 1057 dcl gnv_current_star_name fixed bin; 1058 dcl gnv_inner_loop fixed bin; 1059 dcl gnv_loop fixed bin; 1060 dcl gnv_match_info_index fixed bin; 1061 dcl gnv_number_of_matches fixed bin; 1062 1063 gnv_code_parm = 0; 1064 1065 alloc_name_count = no_of_options_in_name_table; 1066 if valid_select 1067 then alloc_max_name_len = MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH; 1068 else alloc_max_name_len = MAXIMUM_OPTION_NAME_LENGTH; 1069 1070 star_name_info_ptr = names_and_values_temp_seg_ptr; 1071 star_name_info.maximum_number_of_star_names 1072 = no_of_options_in_name_table; 1073 star_name_info.star_name_map (*) = OFF; 1074 star_name_info.number_of_star_names = 1; 1075 1076 allocate column_map in (names_and_values_area) set (column_map_ptr); 1077 1078 do gnv_loop = 1 to no_of_options_in_name_table; 1079 1080 call normalize_option_name ( 1081 option_name_table.the_name (gnv_loop), 1082 option_name_table.the_identifier (gnv_loop), 1083 option_type, option_table_index, 1084 normalized_option_name, gnv_code_parm); 1085 if gnv_code_parm = 0 1086 then if option_type = SPECIFIC_COLUMN_OPTION 1087 then option_name_table.the_identifier (gnv_loop) 1088 = after (normalized_option_name, BLANK); 1089 else option_name_table.the_identifier (gnv_loop) = ""; 1090 else if gnv_code_parm = error_table_$nostars 1091 then do; 1092 call match_column_names ( 1093 option_name_table.the_identifier (gnv_loop), 1094 column_map, gnv_number_of_matches, gnv_code_parm); 1095 if gnv_code_parm ^= 0 1096 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1097 "^/The column identifier ^a did not match any column names.", 1098 option_name_table.the_identifier (gnv_loop)); 1099 else; 1100 if gnv_number_of_matches ^= 1 1101 then alloc_name_count = alloc_name_count 1102 + gnv_number_of_matches - 1; 1103 star_name_info.star_name_map (gnv_loop) = ON; 1104 star_name_info.column_maps_info ( 1105 star_name_info.number_of_star_names) 1106 .number_of_matches = gnv_number_of_matches; 1107 star_name_info.column_maps_info ( 1108 star_name_info.number_of_star_names) 1109 .column_bit_map (*) = column_map (*); 1110 star_name_info.number_of_star_names 1111 = star_name_info.number_of_star_names + 1; 1112 end; 1113 else if gnv_code_parm = rw_error_$bad_option_name 1114 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1115 "^/^a is not a valid option name.", 1116 option_name_table.the_name (gnv_loop)); 1117 else if gnv_code_parm = rw_error_$bad_option_identifier 1118 then call ssu_$abort_line (sci_ptr, gnv_code_parm, 1119 "^/^a is not a valid option identifier for ^a.", 1120 option_name_table.the_identifier (gnv_loop), 1121 option_name_table.the_name (gnv_loop)); 1122 else call ssu_$abort_line (sci_ptr, gnv_code_parm); 1123 1124 end; 1125 1126 star_name_info.number_of_star_names 1127 = star_name_info.number_of_star_names - 1; 1128 1129 allocate match_info in (names_and_values_area) set (match_info_ptr); 1130 match_info.version = match_info_version_1; 1131 1132 gnv_match_info_index = 1; 1133 gnv_current_star_name = 1; 1134 do gnv_loop = 1 to no_of_options_in_name_table; 1135 1136 match_info.name_array.exclude_sw (gnv_match_info_index) = OFF; 1137 match_info.name_array.regexp_sw (gnv_match_info_index) = OFF; 1138 1139 if ^star_name_info.star_name_map (gnv_loop) 1140 then do; 1141 if option_name_table.the_identifier (gnv_loop) = "" 1142 then match_info.name_array.name (gnv_match_info_index) 1143 = option_name_table.the_name (gnv_loop); 1144 else match_info.name_array.name (gnv_match_info_index) 1145 = option_name_table.the_name (gnv_loop) 1146 || BLANK || option_name_table.the_identifier (gnv_loop); 1147 gnv_match_info_index = gnv_match_info_index + 1; 1148 end; 1149 else do; 1150 column_map_ptr = addr (star_name_info 1151 .column_maps_info (gnv_current_star_name) 1152 .column_bit_map (1)); 1153 do gnv_inner_loop = 1 to number_of_defined_columns; 1154 if column_map (gnv_inner_loop) 1155 then do; 1156 match_info.name_array.name (gnv_match_info_index) 1157 = option_name_table.the_name (gnv_loop) 1158 || BLANK || table_info.columns.column_name (gnv_inner_loop); 1159 gnv_match_info_index = gnv_match_info_index + 1; 1160 end; 1161 end; 1162 gnv_current_star_name = gnv_current_star_name + 1; 1163 end; 1164 1165 end; 1166 1167 call value_$list (value_seg_ptr, PERMANENT, match_info_ptr, 1168 names_and_values_area_ptr, value_list_info_ptr, code); 1169 if code ^= 0 1170 then call ssu_$abort_line (sci_ptr, code, 1171 "^/Unable to get the values of the specified format options."); 1172 else; 1173 1174 no_of_names_and_values = value_list_info.pair_count; 1175 allocate name_value_info in (names_and_values_area) 1176 set (names_and_values_info_ptr); 1177 1178 do gnv_loop = 1 to no_of_names_and_values; 1179 name_value_info.name.length (gnv_loop) 1180 = value_list_info.pairs.name_len (gnv_loop); 1181 name_value_info.name.index (gnv_loop) 1182 = value_list_info.pairs.name_index (gnv_loop); 1183 name_value_info.value.length (gnv_loop) 1184 = value_list_info.pairs.value_len (gnv_loop); 1185 name_value_info.value.index (gnv_loop) 1186 = value_list_info.pairs.value_index (gnv_loop); 1187 end; 1188 1189 size_of_names_and_values = value_list_info.chars_len; 1190 allocate names_and_values in (names_and_values_area) 1191 set (names_and_values_ptr); 1192 names_and_values = value_list_info.chars; 1193 1194 return; 1195 1196 end get_named_values; 1197 1198 housekeeping: proc; 1199 1200 /* 1201* 1202* This procedure is called to set up various automatic versions of some of 1203* some things we will need to run this subroutine. 1204* 1205**/ 1206 1207 report_cip = report_cip_parm; 1208 sci_ptr = report_control_info.subsystem_control_info_ptr; 1209 value_seg_ptr = report_control_info.value_seg_ptr; 1210 names_and_values_area_ptr = report_control_info.name_value_area_ptr; 1211 names_and_values_temp_seg_ptr = report_control_info.name_value_temp_seg_ptr; 1212 1213 table_control_ip = report_control_info.table_control_info_ptr; 1214 table_ip = report_control_info.table_information_ptr; 1215 if table_ip = null 1216 then do; 1217 valid_select = OFF; 1218 number_of_defined_columns = 0; 1219 end; 1220 else do; 1221 valid_select = ON; 1222 number_of_defined_columns = table_info.column_count; 1223 end; 1224 1225 return; 1226 1227 end housekeeping; 1228 1229 load_value_seg_with_column_defaults: proc; 1230 1231 /* 1232* 1233* This procedure is called to load all of the column default values into 1234* the value seg. It expects that table_info has been set and is current 1235* (which means there must be a valid select available.) 1236* 1237**/ 1238 1239 dcl lvswcd_inner_loop fixed bin; 1240 dcl lvswcd_loop fixed bin; 1241 1242 do lvswcd_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 1243 1244 lvswcd_option_name = OPTIONS.GENERAL_COLUMN.NAME (lvswcd_loop); 1245 lvswcd_option_value = OPTIONS.GENERAL_COLUMN.VALUE (lvswcd_loop); 1246 if length (lvswcd_option_value) > 0 1247 then if substr (lvswcd_option_value, 1, 1) = LEFT_BRACKET 1248 then do; 1249 call get_general_column_default_value ( 1250 lvswcd_option_name, lvswcd_option_value); 1251 if lvswcd_option_value = "ERROR" 1252 then call ssu_$abort_line (sci_ptr, 0, 1253 "While trying to get the default value for ^a.", 1254 lvswcd_option_name); 1255 else; 1256 end; 1257 else; 1258 else; 1259 1260 call value_$set (value_seg_ptr, PERMANENT, lvswcd_option_name, 1261 lvswcd_option_value, returned_option_value, code); 1262 if code ^= 0 1263 then call ssu_$abort_line (sci_ptr, code, 1264 "While trying to set the value ^a for ^a.", 1265 lvswcd_option_value, lvswcd_option_name); 1266 1267 end; 1268 1269 do lvswcd_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 1270 1271 lvswcd_option_name = OPTIONS.SPECIFIC_COLUMN.NAME (lvswcd_loop); 1272 1273 do lvswcd_inner_loop = 1 to number_of_defined_columns; 1274 1275 lvswcd_option_identifier 1276 = table_info.columns.column_name (lvswcd_inner_loop); 1277 normalized_option_name 1278 = lvswcd_option_name || BLANK || lvswcd_option_identifier; 1279 lvswcd_option_value = OPTIONS.SPECIFIC_COLUMN.VALUE (lvswcd_loop); 1280 if length (lvswcd_option_value) > 0 1281 then if substr (lvswcd_option_value, 1, 1) = LEFT_BRACKET 1282 then do; 1283 call get_specific_column_default_value ( 1284 lvswcd_option_name, lvswcd_option_identifier, 1285 lvswcd_option_value); 1286 if lvswcd_option_value = "ERROR" 1287 then call ssu_$abort_line (sci_ptr, 0, 1288 "While trying to get the default value for ^a.", 1289 normalized_option_name); 1290 else; 1291 end; 1292 else; 1293 else; 1294 1295 call value_$set (value_seg_ptr, PERMANENT, 1296 normalized_option_name, lvswcd_option_value, 1297 returned_option_value, code); 1298 if code ^= 0 1299 then call ssu_$abort_line (sci_ptr, code, 1300 "While trying to set the value ^a for ^a.", 1301 lvswcd_option_value, normalized_option_name); 1302 1303 end; 1304 1305 end; 1306 1307 report_control_info.options_identifier 1308 = report_control_info.options_identifier + 1; 1309 report_control_info.format_options_flags 1310 .general_column_default_value (*) = ON; 1311 1312 return; 1313 1314 end load_value_seg_with_column_defaults; 1315 1316 load_value_seg_with_report_defaults: proc; 1317 1318 /* 1319* 1320* This proc is called to load the value seg with the general report option 1321* defaults from the OPTIONS.GENERAL_REPORT table found in the include file 1322* rw_format_options.incl.pl1. 1323* 1324**/ 1325 1326 dcl lvswrd_loop fixed bin; 1327 1328 do lvswrd_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 1329 1330 call value_$set (value_seg_ptr, PERMANENT, 1331 OPTIONS.GENERAL_REPORT.NAME (lvswrd_loop), 1332 OPTIONS.GENERAL_REPORT.VALUE (lvswrd_loop), 1333 returned_option_value, code); 1334 if code ^= 0 1335 then call ssu_$abort_line (sci_ptr, code, 1336 "While trying to set the value ^a for ^a.", 1337 OPTIONS.GENERAL_REPORT.VALUE (lvswrd_loop), 1338 OPTIONS.GENERAL_REPORT.NAME (lvswrd_loop)); 1339 1340 end; 1341 1342 report_control_info.options_identifier = 1343 report_control_info.options_identifier + 1; 1344 report_control_info.format_options_flags.general_report_default_value (*) = ON; 1345 1346 return; 1347 1348 end load_value_seg_with_report_defaults; 1349 1350 lookup_option_number: proc ( 1351 1352 lon_option_name_parm, /* input: option name to look up */ 1353 lon_option_type_parm, /* output: the table to index into */ 1354 lon_option_index_parm /* output: the index into the table */ 1355 ); 1356 1357 /* 1358* 1359* This proc looks up option names from the three tables of option names. 1360* lon_option_name_parm is expected to contain the name of the option. 1361* lon_option_type_parm is set to indicate whether it is a general report, 1362* general column, or specific column option. lon_option_index_parm is 1363* the index into the appropriate table so the caller can obtain its value. 1364* 1365**/ 1366 1367 dcl lon_loop fixed bin; 1368 dcl lon_option_name_parm char (*) varying parm; 1369 dcl lon_option_type_parm fixed bin parm; 1370 dcl lon_option_index_parm fixed bin parm; 1371 1372 lon_option_type_parm = 0; 1373 1374 lon_option_index_parm = lookup_general_report_option (); 1375 if lon_option_index_parm ^= 0 1376 then do; 1377 lon_option_type_parm = GENERAL_REPORT_OPTION; 1378 return; 1379 end; 1380 1381 lon_option_index_parm = lookup_general_column_option (); 1382 if lon_option_index_parm ^= 0 1383 then do; 1384 lon_option_type_parm = GENERAL_COLUMN_OPTION; 1385 return; 1386 end; 1387 1388 lon_option_index_parm = lookup_specific_column_option (); 1389 if lon_option_index_parm ^= 0 1390 then lon_option_type_parm = SPECIFIC_COLUMN_OPTION; 1391 1392 return; 1393 1394 lookup_general_column_option: proc () returns (fixed bin); 1395 1396 /* Look up the option name from the general column names table. */ 1397 1398 do lon_loop = 1 to NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE; 1399 if lon_option_name_parm = OPTIONS.GENERAL_COLUMN.NAME (lon_loop) 1400 then return (lon_loop); 1401 end; 1402 1403 return (0); 1404 1405 end lookup_general_column_option; 1406 1407 lookup_general_report_option: proc () returns (fixed bin); 1408 1409 /* Look up the option name from the general report names table. */ 1410 1411 do lon_loop = 1 to NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE; 1412 if lon_option_name_parm = OPTIONS.GENERAL_REPORT.NAME (lon_loop) 1413 then return (lon_loop); 1414 end; 1415 1416 return (0); 1417 1418 end lookup_general_report_option; 1419 1420 lookup_specific_column_option: proc () returns (fixed bin); 1421 1422 /* Look up the option name from the specific column names table. */ 1423 1424 do lon_loop = 1 to NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE; 1425 if lon_option_name_parm = OPTIONS.SPECIFIC_COLUMN.NAME (lon_loop) 1426 then return (lon_loop); 1427 end; 1428 1429 return (0); 1430 1431 end lookup_specific_column_option; 1432 1433 end lookup_option_number; 1434 1435 match_column_names: proc ( 1436 1437 mcn_star_name_parm, /* input: star name to match */ 1438 mcn_column_map_parm, /* input/output: array of match bits */ 1439 mcn_number_of_matches_parm, /* output: number of matches */ 1440 mcn_code_parm /* output: success or failure */ 1441 ); 1442 1443 /* 1444* 1445* This proc is called with a star name to determine which columns match 1446* it. The variable mcn_star_name_parm contains the variable which is used 1447* to try to get a match. The array mcn_column_map_parm contains one bit 1448* for each defined column. Each column that matches the star name has its 1449* corresponding bit turned on, and the variable mcn_number_of_matches_parm 1450* contains the number of columns that matched. The variable mcn_code_parm 1451* is set to reflect any problems encountered. 1452* 1453**/ 1454 1455 dcl mcn_code_parm fixed bin (35) parm; 1456 dcl mcn_loop fixed bin; 1457 dcl mcn_column_map_parm (*) bit (1) parm; 1458 dcl mcn_number_of_matches fixed bin; 1459 dcl mcn_number_of_matches_parm fixed bin parm; 1460 dcl mcn_star_name_parm char (*) varying parm; 1461 1462 mcn_column_map_parm (*) = OFF; 1463 mcn_number_of_matches_parm = 0; 1464 mcn_code_parm = 0; 1465 1466 if hbound (mcn_column_map_parm, 1) ^= number_of_defined_columns 1467 then call ssu_$abort_line (sci_ptr, 0, "^a ^a^/^a", 1468 "Invalid use of match_column_names by ", me, 1469 "The match table was not equal to the number of defined columns."); 1470 else; 1471 1472 mcn_number_of_matches = 0; 1473 do mcn_loop = 1 to number_of_defined_columns; 1474 call match_star_name_ ( 1475 (table_info.columns.column_name (mcn_loop)), 1476 (mcn_star_name_parm), mcn_code_parm); 1477 if mcn_code_parm = 0 1478 then do; 1479 mcn_column_map_parm (mcn_loop) = ON; 1480 mcn_number_of_matches = mcn_number_of_matches + 1; 1481 end; 1482 else if mcn_code_parm ^= error_table_$nomatch 1483 then return; 1484 else; 1485 end; 1486 1487 if mcn_number_of_matches ^= 0 1488 then do; 1489 mcn_number_of_matches_parm = mcn_number_of_matches; 1490 mcn_code_parm = 0; 1491 end; 1492 else; 1493 1494 return; 1495 1496 end match_column_names; 1497 1498 normalize_option_name: proc ( 1499 1500 non_option_name_parm, /* input: the option name */ 1501 non_option_identifier_parm, /* input: the column name or number */ 1502 non_option_type_parm, /* output: the type of option */ 1503 non_option_table_index_parm, /* output: index into options table */ 1504 non_normalized_option_name_parm, /* output: the option and column name */ 1505 non_code_parm /* output: success or failure */ 1506 ); 1507 1508 /* 1509* 1510* This proc is called to set general purpose info about the option currently 1511* being dealt with. It expects non_option_name_parm to contain a name 1512* which can be used to determine whether or not it requires an identifier. 1513* The option_name must already have been expanded into a long name (see 1514* the "check_name" entry for expansion of option names). If an 1515* identifier is needed, it expects non_option_identifier_parm to contain 1516* it. The identifier can be the name of a column or the position of the 1517* column in the select. If the identifier is a star name or invalid, 1518* non_code_parm is set. It places the option name into 1519* non_normalized_option_name_parm if a column identifier isn't needed, and 1520* the option name and column name in it when an identifier is needed. 1521* When errors occur normalized_option_name is set to "", except for 1522* starnames. The variable non_option_type_parm is set to flag whether it 1523* is a general report, general column, or specific column option. The 1524* variable non_option_table_index_parm is set so the caller can index into 1525* the appropriate options table. 1526* 1527**/ 1528 1529 dcl non_code_parm fixed bin (35) parm; 1530 dcl non_column_option_number fixed bin; 1531 dcl non_loop fixed bin; 1532 dcl non_normalized_option_name_parm char (*) varying parm; 1533 dcl non_option_identifier_parm char (*) varying parm; 1534 dcl non_option_name_parm char (*) varying parm; 1535 dcl non_option_table_index_parm fixed bin parm; 1536 dcl non_option_type_parm fixed bin parm; 1537 1538 non_normalized_option_name_parm = ""; 1539 non_code_parm = 0; 1540 1541 call lookup_option_number (non_option_name_parm, 1542 non_option_type_parm, non_option_table_index_parm); 1543 if non_option_table_index_parm = 0 1544 then do; 1545 non_code_parm = rw_error_$bad_option_name; 1546 return; 1547 end; 1548 1549 if (non_option_type_parm = GENERAL_COLUMN_OPTION 1550 | non_option_type_parm = SPECIFIC_COLUMN_OPTION) 1551 & (^valid_select) 1552 then do; 1553 code = rw_error_$no_columns_defined; 1554 return; 1555 end; 1556 else; 1557 1558 if non_option_type_parm = GENERAL_REPORT_OPTION 1559 | non_option_type_parm = GENERAL_COLUMN_OPTION 1560 then do; 1561 non_normalized_option_name_parm = non_option_name_parm; 1562 return; 1563 end; 1564 1565 if search (non_option_identifier_parm, STAR_OR_QUESTION_MARK) ^= 0 1566 then do; 1567 non_code_parm = error_table_$nostars; 1568 non_normalized_option_name_parm = non_option_name_parm 1569 || BLANK || non_option_identifier_parm; 1570 return; 1571 end; 1572 1573 if verify (non_option_identifier_parm, DIGITS) = 0 1574 then if convert (based_fixed_bin_71, non_option_identifier_parm) 1575 <= LARGEST_FIXED_BIN_17_NUMBER 1576 then do; 1577 non_column_option_number = convert (non_column_option_number, 1578 non_option_identifier_parm); 1579 if non_column_option_number < 1 1580 | non_column_option_number > number_of_defined_columns 1581 then non_code_parm = rw_error_$bad_option_identifier; 1582 else non_normalized_option_name_parm = non_option_name_parm || BLANK 1583 || table_info.columns.column_name (non_column_option_number); 1584 return; 1585 end; 1586 else do; 1587 non_code_parm = rw_error_$bad_option_identifier; 1588 return; 1589 end; 1590 else; 1591 1592 do non_loop = 1 to number_of_defined_columns; 1593 if non_option_identifier_parm = table_info.columns.column_name (non_loop) 1594 then do; 1595 non_normalized_option_name_parm = 1596 non_option_name_parm || BLANK || non_option_identifier_parm; 1597 return; 1598 end; 1599 end; 1600 1601 non_code_parm = rw_error_$bad_option_identifier; 1602 1603 return; 1604 1605 end normalize_option_name; 1606 1607 set_the_values: proc ( 1608 1609 stv_option_name_parm, /* input: option name */ 1610 stv_option_identifier_parm, /* input: column identifier */ 1611 stv_option_value_parm, /* input: option value */ 1612 stv_system_default_parm, /* input: on means yes */ 1613 stv_code_parm /* output: success or failure */ 1614 ); 1615 1616 /* 1617* 1618* This proc is called to set the value of a format option. If the value 1619* is a star name then the value is set for every name that matches the 1620* star name. The internal proc set_value sets the value. For a normal 1621* column name, it is called once with normalized_option_name used for 1622* the set operation. For star names, normalized_option_name is changed 1623* before each call with a column name that matched the star name. 1624* 1625**/ 1626 1627 dcl stv_code_parm fixed bin (35) parm; 1628 dcl stv_loop fixed bin; 1629 dcl stv_number_of_matches fixed bin; 1630 dcl stv_option_name_parm char (*) varying parm; 1631 dcl stv_option_identifier_parm char (*) varying parm; 1632 dcl stv_option_value_parm char (*) varying parm; 1633 dcl stv_system_default_parm bit (1) aligned parm; 1634 dcl stv_value_has_been_tested bit (1) aligned; 1635 1636 call normalize_option_name (stv_option_name_parm, 1637 stv_option_identifier_parm, option_type, option_table_index, 1638 normalized_option_name, stv_code_parm); 1639 if stv_code_parm = 0 1640 then do; 1641 call set_value (stv_code_parm); 1642 return; 1643 end; 1644 else if stv_code_parm ^= error_table_$nostars 1645 then return; 1646 1647 allocate column_map in (names_and_values_area) 1648 set (column_map_ptr); 1649 call match_column_names (stv_option_identifier_parm, 1650 column_map, stv_number_of_matches, stv_code_parm); 1651 if stv_code_parm ^= 0 1652 then return; 1653 1654 do stv_loop = 1 to number_of_defined_columns; 1655 1656 if column_map (stv_loop) 1657 then do; 1658 normalized_option_name = stv_option_name_parm 1659 || BLANK || table_info.columns.column_name (stv_loop); 1660 call set_value (stv_code_parm); 1661 if stv_code_parm ^= 0 1662 then return; 1663 end; 1664 1665 end; 1666 1667 return; 1668 1669 set_value: proc ( 1670 1671 sv_code_parm /* output: success or failure */ 1672 ); 1673 1674 /* 1675* 1676* This proc is called to set the value of a format option. The variable 1677* stv_system_default_parm is used to determine if the caller wants the 1678* system default value for the named option. normalized_option_name is 1679* used to determine who's to be set. stv_option_value_parm is the value 1680* which will be set if stv_system_default_parm is off. option_type and 1681* option_table_index are used to find the value which will be set when 1682* stv_system_default_parm is on. The bit that indicates whether or not 1683* a value is the same as the system default is set for the general report 1684* and general column options. These bits are used by the get_active entry 1685* to determine which values are considered active. If the caller requested 1686* that it be set to the system default, the value is set from the OPTIONS 1687* table. General column and specific column values from this table 1688* sometimes need the actual value computed based on the current set of 1689* columns. These values are recognizable because they begin with a left 1690* bracket. The procs get_general_column_default_value and 1691* get_specific_column_default_value are called to compute the value. There 1692* is a dependency between the -group option and the two options 1693* -group_footer_trigger and -group_header_trigger. If the -group option 1694* is being set back to the default then the function valid_option_value is 1695* invoked to make sure the other two are set back to their defaults. 1696* 1697**/ 1698 1699 dcl sv_code_parm fixed bin (35) parm; 1700 dcl sv_force_group_triggers_consistency bit (1); 1701 1702 sv_code_parm = 0; 1703 1704 if ^stv_system_default_parm 1705 then do; 1706 sv_option_value = stv_option_value_parm; 1707 if ^valid_option_value (stv_option_name_parm, sv_option_value) 1708 then do; 1709 stv_code_parm = rw_error_$bad_option_value; 1710 return; 1711 end; 1712 else; 1713 end; 1714 else do; 1715 if option_type = GENERAL_REPORT_OPTION 1716 then do; 1717 sv_option_value 1718 = OPTIONS.GENERAL_REPORT.VALUE (option_table_index); 1719 report_control_info.format_options_flags. 1720 general_report_default_value (option_table_index) = ON; 1721 end; 1722 else if option_type = GENERAL_COLUMN_OPTION 1723 then do; 1724 sv_option_value 1725 = OPTIONS.GENERAL_COLUMN.VALUE (option_table_index); 1726 if length (sv_option_value) > 0 1727 then if substr (sv_option_value, 1, 1) = LEFT_BRACKET 1728 then call get_general_column_default_value ( 1729 stv_option_name_parm, sv_option_value); 1730 else; 1731 else if stv_option_name_parm = OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_GROUP) 1732 then sv_force_group_triggers_consistency 1733 = valid_option_value (stv_option_name_parm, sv_option_value); 1734 else; 1735 report_control_info.format_options_flags. 1736 general_column_default_value (option_table_index) = ON; 1737 end; 1738 else do; 1739 sv_option_value = 1740 OPTIONS.SPECIFIC_COLUMN.VALUE (option_table_index); 1741 if length (sv_option_value) > 0 1742 then if substr (sv_option_value, 1, 1) = LEFT_BRACKET 1743 then do; 1744 sv_spare_option_identifier 1745 = after (normalized_option_name, BLANK); 1746 call get_specific_column_default_value ( 1747 stv_option_name_parm, 1748 sv_spare_option_identifier, 1749 sv_option_value); 1750 end; 1751 else; 1752 else; 1753 end; 1754 if sv_option_value = "ERROR" 1755 then call ssu_$abort_line (sci_ptr, 0, 1756 "Unable to set the value of ^a to the system default.", 1757 normalized_option_name); 1758 end; 1759 1760 call value_$set (value_seg_ptr, PERMANENT, 1761 normalized_option_name, sv_option_value, 1762 returned_option_value, code); 1763 1764 if code ^= 0 1765 then call ssu_$abort_line (sci_ptr, code, 1766 "While trying to set the value ^a for ^a.", 1767 sv_option_value, normalized_option_name); 1768 1769 report_control_info.options_identifier = 1770 report_control_info.options_identifier + 1; 1771 1772 if stv_system_default_parm 1773 | option_type = SPECIFIC_COLUMN_OPTION 1774 then return; 1775 1776 if option_type = GENERAL_REPORT_OPTION 1777 then do; 1778 if sv_option_value 1779 = OPTIONS.GENERAL_REPORT.VALUE (option_table_index) 1780 then report_control_info.format_options_flags. 1781 general_report_default_value (option_table_index) = ON; 1782 else report_control_info.format_options_flags. 1783 general_report_default_value (option_table_index) = OFF; 1784 end; 1785 else do; 1786 stv_value_has_been_tested = OFF; 1787 if length (sv_option_value) > 0 1788 & length (OPTIONS.GENERAL_COLUMN.VALUE (option_table_index)) > 0 1789 then if substr (OPTIONS.GENERAL_COLUMN.VALUE ( 1790 option_table_index), 1, 1) = LEFT_BRACKET 1791 then do; 1792 call get_general_column_default_value ( 1793 stv_option_name_parm, sv_spare_option_value); 1794 if sv_spare_option_value = "ERROR" 1795 then call ssu_$abort_line (sci_ptr, 0, 1796 "Unable to get the default value of ^a.", 1797 stv_option_name_parm); 1798 else; 1799 stv_value_has_been_tested = ON; 1800 if sv_option_value = sv_spare_option_value 1801 then report_control_info.format_options_flags. 1802 general_column_default_value (option_table_index) = ON; 1803 else report_control_info.format_options_flags. 1804 general_column_default_value (option_table_index) = OFF; 1805 end; 1806 else; 1807 else; 1808 if ^stv_value_has_been_tested 1809 then if sv_option_value 1810 = OPTIONS.GENERAL_COLUMN.VALUE (option_table_index) 1811 then report_control_info.format_options_flags. 1812 general_column_default_value (option_table_index) = ON; 1813 else report_control_info.format_options_flags. 1814 general_column_default_value (option_table_index) = OFF; 1815 else; 1816 end; 1817 1818 return; 1819 1820 end set_value; 1821 1822 end set_the_values; 1823 1824 valid_option_value: proc ( 1825 1826 vov_option_name_parm, /* input: option name */ 1827 vov_option_value_parm /* input: option value */ 1828 ) returns (bit (1)); 1829 1830 /* 1831* 1832* This function is invoked to check the value for an option. It expects 1833* that vov_option_name_parm contains a valid option name which has been 1834* expanded, and that vov_option_value_parm contains the value to check for 1835* validity. This function calls an internal procedure to do the checking. 1836* These internal procedures are declared in the three tables immediately 1837* following this description. If it is a valid value, "1"b is returned. 1838* "0"b indicates an invalid value. 1839* 1840**/ 1841 1842 dcl vov_any_or_all bit (1) aligned; 1843 dcl vov_check_result_bit bit (1) aligned; 1844 1845 dcl vov_check_procs_for_general_report_options (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) entry init ( 1846 1847 check_any_single_printable_character, /* "-delimiter" */ 1848 check_on_or_off, /* "-format_document_controls" */ 1849 check_on_or_off, /* "-hyphenation" */ 1850 check_any_character_string, /* "-page_footer_value" */ 1851 check_any_character_string, /* "-page_header_value" */ 1852 check_zero_or_greater_than_six, /* "-page_length" */ 1853 check_zero_or_any_positive_integer, /* "-page_width" */ 1854 check_on_or_off, /* "-title_line" */ 1855 check_any_printable_string_no_NL /* "-truncation" */ 1856 ); 1857 1858 dcl vov_check_procs_for_general_column_options (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) entry init ( 1859 1860 check_all_column_names_eventually, /* "-column_order" */ 1861 check_any_column_names_or_none, /* "-count" */ 1862 check_any_column_names_or_none, /* "-exclude" */ 1863 check_and_keep_triggers_consistent, /* "-group" */ 1864 check_any_valid_group_list, /* "-group_footer_trigger" */ 1865 check_any_character_string, /* "-group_footer_value" */ 1866 check_any_valid_group_list, /* "-group_header_trigger" */ 1867 check_any_character_string, /* "-group_header_value" */ 1868 check_any_column_names_or_none, /* "-outline" */ 1869 check_any_column_names_or_none, /* "-page_break" */ 1870 check_any_character_string, /* "-row_footer_value" */ 1871 check_any_character_string, /* "-row_header_value" */ 1872 check_subcount_list_or_none, /* "-subcount" */ 1873 check_subtotal_list_or_none, /* "-subtotal" */ 1874 check_any_column_names_or_none /* "-total" */ 1875 ); 1876 1877 dcl vov_check_procs_for_specific_column_options (NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE) entry init ( 1878 1879 check_any_alignment_mode, /* "-alignment" */ 1880 check_any_character_string, /* "-editing" */ 1881 check_any_folding_action, /* "-folding" */ 1882 check_any_printable_string_no_NL, /* "-separator" */ 1883 check_any_character_string, /* "-title" */ 1884 check_any_positive_integer /* "-width" */ 1885 ); 1886 1887 dcl vov_character_string char (80) varying; 1888 dcl vov_complete_the_list bit (1) aligned; 1889 dcl vov_loop fixed bin; 1890 dcl vov_loop_limit fixed bin; 1891 dcl vov_number_tester fixed bin; 1892 dcl vov_one_to_nine_found bit (1) aligned; 1893 dcl vov_option_name_parm char (*) varying parm; 1894 dcl vov_option_value_parm char (*) varying parm; 1895 dcl vov_target_character char (1); 1896 1897 vov_check_result_bit = OFF; 1898 1899 call lookup_option_number (vov_option_name_parm, 1900 option_type, option_table_index); 1901 if option_table_index = 0 1902 then return (OFF); 1903 1904 if option_type = GENERAL_REPORT_OPTION 1905 then call vov_check_procs_for_general_report_options (option_table_index); 1906 else if option_type = GENERAL_COLUMN_OPTION 1907 then call vov_check_procs_for_general_column_options (option_table_index); 1908 else call vov_check_procs_for_specific_column_options (option_table_index); 1909 1910 return (vov_check_result_bit); 1911 1912 check_all_column_names_eventually: proc; 1913 1914 vov_any_or_all = ANY; 1915 vov_complete_the_list = ON; 1916 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 1917 1918 return; 1919 1920 end check_all_column_names_eventually; 1921 1922 check_and_keep_triggers_consistent: proc; 1923 1924 dcl caktc_group_list_ptr ptr; 1925 dcl caktc_inner_loop fixed bin; 1926 dcl caktc_loop fixed bin; 1927 1928 if vov_option_value_parm = "" 1929 then do; 1930 do caktc_loop = INDEX_FOR_GROUP_HEADER_TRIGGER, INDEX_FOR_GROUP_FOOTER_TRIGGER; 1931 call value_$set (value_seg_ptr, PERMANENT, 1932 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 1933 OPTIONS.GENERAL_COLUMN.VALUE (caktc_loop), 1934 returned_option_value, code); 1935 if code ^= 0 1936 then call ssu_$abort_line (sci_ptr, code, 1937 "While trying to set the value ^a for ^a.", 1938 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 1939 OPTIONS.GENERAL_COLUMN.VALUE (caktc_loop)); 1940 report_control_info.format_options_flags. 1941 general_column_default_value (caktc_loop) = ON; 1942 end; 1943 vov_check_result_bit = ON; 1944 return; 1945 end; 1946 1947 vov_any_or_all = ANY; 1948 vov_complete_the_list = OFF; 1949 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 1950 if ^vov_check_result_bit 1951 then return; 1952 1953 caktc_group_list_ptr = judgement_table_ptr; 1954 caktc_option_value = vov_option_value_parm; 1955 do caktc_loop = INDEX_FOR_GROUP_HEADER_TRIGGER, INDEX_FOR_GROUP_FOOTER_TRIGGER; 1956 call value_$get (value_seg_ptr, PERMANENT, OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), 1957 vov_option_value_parm, code); 1958 if code ^= 0 1959 then call ssu_$abort_line (sci_ptr, code, 1960 "While trying to get the value of ^a.", 1961 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop)); 1962 if vov_option_value_parm ^= "" 1963 then do; 1964 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 1965 do caktc_inner_loop = 1 to number_of_defined_columns; 1966 if judgement_table.present (caktc_inner_loop) 1967 then if ^(caktc_group_list_ptr -> judgement_table.present (caktc_inner_loop)) 1968 then judgement_table.present (caktc_inner_loop) = OFF; 1969 else; 1970 else; 1971 end; 1972 vov_option_value_parm = ""; 1973 do caktc_inner_loop = 1 to number_of_defined_columns; 1974 if judgement_table.present (caktc_inner_loop) 1975 then vov_option_value_parm = vov_option_value_parm 1976 || table_info.columns (caktc_inner_loop).column_name || BLANK; 1977 else; 1978 end; 1979 vov_option_value_parm = rtrim (vov_option_value_parm); 1980 call value_$set (value_seg_ptr, PERMANENT, 1981 OPTIONS.GENERAL_COLUMN.NAME (caktc_loop), vov_option_value_parm, 1982 returned_option_value, code); 1983 if code ^= 0 1984 then call ssu_$abort_line (sci_ptr, code, 1985 "While trying to set the value ^a for ^a.", 1986 vov_option_value_parm, OPTIONS.GENERAL_COLUMN.NAME (caktc_loop)); 1987 if vov_option_value_parm = "" 1988 then report_control_info.format_options_flags. 1989 general_column_default_value (caktc_loop) = ON; 1990 end; 1991 end; 1992 1993 vov_check_result_bit = ON; 1994 vov_option_value_parm = caktc_option_value; 1995 1996 return; 1997 1998 end check_and_keep_triggers_consistent; 1999 2000 check_any_alignment_mode: proc; 2001 2002 if vov_option_value_parm = RIGHT 2003 | vov_option_value_parm = LEFT 2004 | vov_option_value_parm = CENTER 2005 | vov_option_value_parm = BOTH 2006 then vov_check_result_bit = ON; 2007 else do; 2008 vov_character_string = before (vov_option_value_parm, BLANK); 2009 if vov_character_string ^= DECIMAL 2010 then return; 2011 vov_character_string 2012 = ltrim (rtrim (after (vov_option_value_parm, DECIMAL))); 2013 if verify (vov_character_string, DIGITS) = 0 2014 then if convert (based_fixed_bin_71, vov_character_string) > 0 2015 & convert (based_fixed_bin_71, vov_character_string) < 60 2016 then vov_check_result_bit = ON; 2017 else; 2018 else; 2019 end; 2020 2021 return; 2022 2023 end check_any_alignment_mode; 2024 2025 check_any_character_string: proc; 2026 2027 vov_check_result_bit = ON; 2028 2029 return; 2030 2031 end check_any_character_string; 2032 2033 check_any_column_names_or_none: proc; 2034 2035 if vov_option_value_parm = "" 2036 then do; 2037 vov_check_result_bit = ON; 2038 return; 2039 end; 2040 vov_any_or_all = ANY; 2041 vov_complete_the_list = OFF; 2042 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2043 2044 return; 2045 2046 end check_any_column_names_or_none; 2047 2048 check_any_folding_action: proc; 2049 2050 if vov_option_value_parm = FILL 2051 | vov_option_value_parm = TRUNCATE 2052 then vov_check_result_bit = ON; 2053 2054 return; 2055 2056 end check_any_folding_action; 2057 2058 check_any_printable_string_no_NL: proc; 2059 2060 vov_loop_limit = length (vov_option_value_parm); 2061 if vov_loop_limit = 0 2062 then do; 2063 vov_check_result_bit = ON; 2064 return; 2065 end; 2066 do vov_loop = 1 to vov_loop_limit; 2067 vov_target_character = substr (vov_option_value_parm, vov_loop, 1); 2068 if vov_target_character < BLANK 2069 | vov_target_character > TILDE 2070 then return; 2071 end; 2072 vov_check_result_bit = ON; 2073 2074 return; 2075 2076 end check_any_printable_string_no_NL; 2077 2078 check_any_single_printable_character: proc; 2079 2080 if length (vov_option_value_parm) = 1 2081 then if vov_option_value_parm >= BLANK 2082 & vov_option_value_parm <= TILDE 2083 then vov_check_result_bit = ON; 2084 else; 2085 else; 2086 2087 return; 2088 2089 end check_any_single_printable_character; 2090 2091 check_any_positive_integer: proc; 2092 2093 vov_loop_limit = length (vov_option_value_parm); 2094 if vov_loop_limit = 0 2095 then return; 2096 vov_one_to_nine_found = OFF; 2097 do vov_loop = 1 to vov_loop_limit; 2098 vov_target_character = substr (vov_option_value_parm, vov_loop, 1); 2099 if vov_target_character < ZERO 2100 | vov_target_character > NINE 2101 then return; 2102 if vov_target_character ^= ZERO 2103 then vov_one_to_nine_found = ON; 2104 end; 2105 2106 if convert (based_fixed_bin_71, vov_option_value_parm) 2107 <= LARGEST_FIXED_BIN_17_NUMBER 2108 then if vov_one_to_nine_found 2109 then vov_check_result_bit = ON; 2110 2111 return; 2112 2113 end check_any_positive_integer; 2114 2115 check_any_valid_group_list: proc; 2116 2117 dcl cavgl_group_list_judgement_table_ptr ptr; 2118 dcl cavgl_loop fixed bin; 2119 2120 if vov_option_value_parm = "" 2121 then do; 2122 vov_check_result_bit = ON; 2123 return; 2124 end; 2125 vov_any_or_all = ANY; 2126 vov_complete_the_list = OFF; 2127 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2128 if ^vov_check_result_bit 2129 then return; 2130 cavgl_group_list_judgement_table_ptr = judgement_table_ptr; 2131 cavgl_save_option_value = vov_option_value_parm; 2132 call value_$get (value_seg_ptr, PERMANENT, OPTIONS.GENERAL_COLUMN.NAME 2133 (INDEX_FOR_GROUP), vov_option_value_parm, code); 2134 if code ^= 0 2135 then call ssu_$abort_line (sci_ptr, code, 2136 "While trying to get the value of ^a.", 2137 OPTIONS.GENERAL_COLUMN.NAME (INDEX_FOR_GROUP)); 2138 vov_check_result_bit = replace_column_list_after_checking (judgement_table_ptr); 2139 if ^vov_check_result_bit 2140 then return; 2141 vov_option_value_parm = cavgl_save_option_value; 2142 vov_check_result_bit = OFF; 2143 2144 do cavgl_loop = 1 to number_of_defined_columns; 2145 if cavgl_group_list_judgement_table_ptr -> judgement_table.present (cavgl_loop) 2146 then if ^judgement_table.present (cavgl_loop) 2147 then return; 2148 else; 2149 else; 2150 end; 2151 vov_check_result_bit = ON; 2152 2153 return; 2154 2155 end check_any_valid_group_list; 2156 2157 check_on_or_off: proc; 2158 2159 if vov_option_value_parm = "on" 2160 | vov_option_value_parm = "off" 2161 then vov_check_result_bit = ON; 2162 2163 return; 2164 2165 end check_on_or_off; 2166 2167 check_subcount_list_or_none: proc; 2168 2169 if vov_option_value_parm = "" 2170 then do; 2171 vov_check_result_bit = ON; 2172 return; 2173 end; 2174 2175 vov_check_result_bit = replace_subtotal_list_after_checking (ALLOW_DUPLICATES); 2176 2177 return; 2178 2179 end check_subcount_list_or_none; 2180 2181 check_subtotal_list_or_none: proc; 2182 2183 if vov_option_value_parm = "" 2184 then do; 2185 vov_check_result_bit = ON; 2186 return; 2187 end; 2188 2189 vov_check_result_bit = replace_subtotal_list_after_checking (DONT_ALLOW_DUPLICATES); 2190 2191 return; 2192 2193 end check_subtotal_list_or_none; 2194 2195 check_zero_or_any_positive_integer: proc; 2196 2197 if verify (vov_option_value_parm, DIGITS) = 0 2198 then if convert (based_fixed_bin_71, vov_option_value_parm) 2199 <= LARGEST_FIXED_BIN_17_NUMBER 2200 then vov_check_result_bit = ON; 2201 2202 return; 2203 2204 end check_zero_or_any_positive_integer; 2205 2206 check_zero_or_greater_than_six: proc; 2207 2208 if verify (vov_option_value_parm, DIGITS) = 0 2209 then if convert (based_fixed_bin_71, vov_option_value_parm) 2210 <= LARGEST_FIXED_BIN_17_NUMBER 2211 then do; 2212 vov_number_tester = convert (vov_number_tester, 2213 vov_option_value_parm); 2214 if vov_number_tester = 0 2215 | vov_number_tester > 6 2216 then vov_check_result_bit = ON; 2217 end; 2218 else; 2219 else; 2220 2221 return; 2222 2223 end check_zero_or_greater_than_six; 2224 2225 replace_column_list_after_checking: proc ( 2226 rclac_judgement_table_ptr_parm /* output: points to the judgement table */ 2227 ) returns (bit(1)); 2228 2229 /* 2230* 2231* This proc is called to check a list of columns, which may be given as 2232* column names or numbers, and then create a new list containing only column 2233* names if the check proved sucessful. It expects that 2234* vov_option_value_parm contains the list of columns. The variable 2235* vov_any_or_all_parm dictates what type of checking is done. Since the 2236* time when this code was written the restriction of having all columns 2237* named in a "-column_order" option was removed, but this subroutine still 2238* provides the service of validating that all columns are present in a list 2239* because it is felt an additional option which has this requirement may 2240* be added sometime in the future. If the check proves sucessfull, 2241* vov_option_value_parm is replaced with a list of column names, and "1"b is 2242* returned. An unsucessful check returns "0"b and the value of 2243* vov_option_value_parm isn't set. If the variable vov_complete_the_list 2244* is on the list is filled in with any missing columns; if it is off the 2245* list will only contain the names of the columns found. The judgment_table 2246* structure if filled in to describe the original list found. Each bit 2247* turned on indicates that particular column was found in the list and the 2248* number field of the structure indicates where in the list it was found. 2249* 2250**/ 2251 2252 dcl rclac_code fixed bin (35); 2253 dcl rclac_column_name_length fixed bin; 2254 dcl rclac_current_position fixed bin; 2255 dcl rclac_finished bit (1) aligned; 2256 dcl rclac_first_blank fixed bin; 2257 dcl rclac_hit bit (1) aligned; 2258 dcl rclac_inner_loop fixed bin; 2259 dcl 1 rclac_judgement_table (number_of_defined_columns) like judgement_table based (rclac_judgement_table_ptr); 2260 dcl rclac_judgement_table_ptr ptr; 2261 dcl rclac_judgement_table_ptr_parm ptr parm; 2262 dcl rclac_loop fixed bin; 2263 dcl rclac_no_of_claimed_digits fixed bin; 2264 dcl rclac_spare_option_value_length fixed bin; 2265 dcl rclac_still_skipping_blanks bit (1) aligned; 2266 dcl rclac_target_character char (1); 2267 2268 rclac_judgement_table_ptr_parm = null (); 2269 if vov_option_value_parm = "" 2270 then return (OFF); 2271 2272 rclac_spare_option_value = ltrim (rtrim (translate 2273 (vov_option_value_parm, BLANK, TAB))) || BLANK; 2274 rclac_spare_option_value_length = length (rclac_spare_option_value); 2275 rclac_current_position = 1; 2276 2277 allocate rclac_judgement_table in (names_and_values_area) 2278 set (rclac_judgement_table_ptr); 2279 unspec (rclac_judgement_table) = OFF; 2280 2281 rclac_finished = OFF; 2282 2283 do rclac_loop = 1 to number_of_defined_columns while (^rclac_finished); 2284 2285 rclac_first_blank = index (substr (rclac_spare_option_value, 2286 rclac_current_position), BLANK) 2287 + rclac_current_position - 1; 2288 if rclac_first_blank >= rclac_spare_option_value_length 2289 then if rclac_loop ^= number_of_defined_columns 2290 & vov_any_or_all = ALL 2291 then return (OFF); 2292 else rclac_finished = ON; 2293 else; 2294 2295 rclac_target_character = substr (rclac_spare_option_value, 2296 rclac_current_position, 1); 2297 if rclac_target_character >= ZERO 2298 & rclac_target_character <= NINE 2299 then do; 2300 rclac_no_of_claimed_digits 2301 = rclac_first_blank - rclac_current_position; 2302 if rclac_no_of_claimed_digits < 1 2303 then return (OFF); 2304 2305 rclac_judgement_table.number (rclac_loop) = cv_dec_check_ 2306 (substr (rclac_spare_option_value, rclac_current_position, 2307 rclac_no_of_claimed_digits), rclac_code); 2308 if rclac_code ^= 0 2309 then return (OFF); 2310 2311 if rclac_judgement_table.number (rclac_loop) < 1 2312 | rclac_judgement_table.number (rclac_loop) > number_of_defined_columns 2313 then return (OFF); 2314 end; 2315 else do; 2316 rclac_hit = OFF; 2317 rclac_column_name_length 2318 = rclac_first_blank - rclac_current_position; 2319 2320 do rclac_inner_loop = 1 to number_of_defined_columns while (^rclac_hit); 2321 if substr (rclac_spare_option_value, 2322 rclac_current_position, rclac_column_name_length) 2323 = table_info.columns.column_name (rclac_inner_loop) 2324 then rclac_hit = ON; 2325 end; 2326 2327 if ^rclac_hit 2328 then return (OFF); 2329 else rclac_judgement_table.number (rclac_loop) 2330 = rclac_inner_loop - 1; 2331 end; 2332 2333 if rclac_judgement_table.present (rclac_judgement_table.number (rclac_loop)) 2334 then return (OFF); 2335 2336 rclac_judgement_table.present ( 2337 rclac_judgement_table.number (rclac_loop)) = ON; 2338 2339 if ^rclac_finished 2340 then do; 2341 rclac_still_skipping_blanks = ON; 2342 rclac_current_position = rclac_first_blank + 1; 2343 do while (rclac_still_skipping_blanks); 2344 if substr (rclac_spare_option_value, 2345 rclac_current_position, 1) ^= BLANK 2346 then rclac_still_skipping_blanks = OFF; 2347 else rclac_current_position 2348 = rclac_current_position + 1; 2349 end; 2350 if rclac_current_position < rclac_spare_option_value_length 2351 & rclac_loop >= number_of_defined_columns 2352 then return (OFF); 2353 end; 2354 end; 2355 2356 if vov_any_or_all = ALL 2357 then do rclac_loop = 1 to number_of_defined_columns; 2358 if ^rclac_judgement_table.present (rclac_loop) 2359 then return (OFF); 2360 end; 2361 2362 rclac_spare_option_value = ""; 2363 2364 do rclac_loop = 1 to number_of_defined_columns; 2365 if rclac_judgement_table.number (rclac_loop) ^= 0 2366 then rclac_spare_option_value = rclac_spare_option_value 2367 || table_info.columns.column_name ( 2368 rclac_judgement_table.number (rclac_loop)) || BLANK; 2369 end; 2370 2371 if vov_complete_the_list 2372 then do rclac_loop = 1 to number_of_defined_columns; 2373 if ^rclac_judgement_table.present (rclac_loop) 2374 then rclac_spare_option_value = rclac_spare_option_value 2375 || table_info.columns.column_name (rclac_loop) || BLANK; 2376 end; 2377 2378 vov_option_value_parm = rtrim (rclac_spare_option_value); 2379 rclac_judgement_table_ptr_parm = rclac_judgement_table_ptr; 2380 2381 return (ON); 2382 2383 end replace_column_list_after_checking; 2384 2385 replace_subtotal_list_after_checking: proc (rslac_allow_duplicates_parm) returns (bit(1)); 2386 2387 /* 2388* 2389* This proc is called to check a list of subtotal triplets, and then 2390* create a new list if the check proved successful. The syntax of a 2391* triplet is "column_1,column_2{,reset|running}". Each triplet is 2392* separated by whitespace. column_N can be given as a column name or 2393* column number. It expects that vov_option_value_parm contains the 2394* list of subtotal triplets. If the check proves successful, 2395* vov_option_value_parm is replaced with a list of triplets which has 2396* each column number replaced by the column name, and the optional 2397* third portion of a triplet filled in. A single blank separates each 2398* triplet in the new list. 2399* 2400**/ 2401 2402 dcl rslac_allow_duplicates_parm bit (1) aligned parm; 2403 dcl rslac_blank_position fixed bin; 2404 dcl rslac_code fixed bin (35); 2405 dcl rslac_current_position fixed bin; 2406 dcl rslac_original_option_value_length fixed bin; 2407 dcl rslac_still_parsing bit (1) aligned; 2408 2409 if vov_option_value_parm = "" 2410 then return (OFF); 2411 2412 rslac_original_option_value = ltrim (rtrim (translate 2413 (vov_option_value_parm, BLANK, TAB))) || BLANK; 2414 rslac_original_option_value_length 2415 = length (rslac_original_option_value); 2416 rslac_result_option_value = ""; 2417 rslac_current_position = 1; 2418 rslac_still_parsing = ON; 2419 2420 do while (rslac_still_parsing); 2421 call get_triplet (rslac_code); 2422 if rslac_code = 0 2423 then call parse_triplet (rslac_allow_duplicates_parm, rslac_code); 2424 end; 2425 2426 if rslac_code ^= 0 2427 then return (OFF); 2428 2429 vov_option_value_parm = rtrim (rslac_result_option_value); 2430 2431 return (ON); 2432 2433 get_triplet: proc (gt_code_parm); 2434 2435 dcl gt_code_parm fixed bin (35) parm; 2436 dcl gt_still_skipping_blanks bit (1) aligned; 2437 2438 gt_code_parm = 0; 2439 rslac_blank_position 2440 = index (substr (rslac_original_option_value, 2441 rslac_current_position), BLANK); 2442 rslac_triplet = substr (rslac_original_option_value, 2443 rslac_current_position, rslac_blank_position - 1); 2444 rslac_current_position 2445 = rslac_current_position + rslac_blank_position; 2446 2447 if rslac_current_position >= rslac_original_option_value_length 2448 then rslac_still_parsing = OFF; 2449 else do; 2450 gt_still_skipping_blanks = ON; 2451 do while (gt_still_skipping_blanks); 2452 if substr (rslac_original_option_value, 2453 rslac_current_position, 1) = BLANK 2454 then rslac_current_position = rslac_current_position + 1; 2455 else gt_still_skipping_blanks = OFF; 2456 end; 2457 end; 2458 2459 return; 2460 2461 end get_triplet; 2462 2463 parse_triplet: proc ( 2464 pt_allow_duplicates_parm, /* input: on means allow duplicate definitions, 2465* a subtotal can also "watch" itself */ 2466 pt_code_parm /* output: success or failure */ 2467 ); 2468 2469 dcl pt_allow_duplicates_parm bit (1) aligned parm; 2470 dcl pt_character_string char (80) varying; 2471 dcl pt_code_parm fixed bin (35) parm; 2472 dcl pt_column_number fixed bin; 2473 dcl pt_comma_position fixed bin; 2474 dcl pt_current_position fixed bin; 2475 dcl pt_first_column_found fixed bin; 2476 dcl pt_hit bit (1) aligned; 2477 dcl pt_inner_loop fixed bin; 2478 dcl pt_loop fixed bin; 2479 dcl pt_second_column_found fixed bin; 2480 dcl pt_triplet_length fixed bin; 2481 2482 pt_code_parm = 1; 2483 pt_triplet_length = length (rslac_triplet); 2484 pt_current_position = 1; 2485 2486 do pt_loop = 1 to 2; 2487 pt_comma_position = index (substr (rslac_triplet, 2488 pt_current_position), COMMA); 2489 if pt_comma_position = 0 2490 then if pt_loop = 1 2491 then return; 2492 else pt_comma_position 2493 = pt_triplet_length + 2 - pt_current_position; 2494 else; 2495 pt_character_string = substr (rslac_triplet, 2496 pt_current_position, pt_comma_position - 1); 2497 pt_current_position = pt_current_position + pt_comma_position; 2498 if pt_current_position > pt_triplet_length & pt_loop = 1 2499 then return; 2500 if verify (pt_character_string, DIGITS) = 0 2501 then do; 2502 if convert (based_fixed_bin_71, pt_character_string) > LARGEST_FIXED_BIN_17_NUMBER 2503 then return; 2504 pt_column_number = convert (pt_column_number, pt_character_string); 2505 if pt_column_number < 1 2506 | pt_column_number > number_of_defined_columns 2507 then return; 2508 else; 2509 rslac_result_option_value 2510 = rslac_result_option_value 2511 || table_info.columns.column_name (pt_column_number) || COMMA; 2512 if pt_loop = 1 2513 then pt_first_column_found = pt_column_number; 2514 else pt_second_column_found = pt_column_number; 2515 end; 2516 else do; 2517 pt_hit = OFF; 2518 do pt_inner_loop = 1 to number_of_defined_columns while (^pt_hit); 2519 if pt_character_string 2520 = table_info.columns.column_name (pt_inner_loop) 2521 then do; 2522 pt_hit = ON; 2523 pt_column_number = pt_inner_loop; 2524 end; 2525 end; 2526 if ^pt_hit 2527 then return; 2528 else; 2529 if pt_loop = 1 2530 then pt_first_column_found = pt_column_number; 2531 else pt_second_column_found = pt_column_number; 2532 rslac_result_option_value 2533 = rslac_result_option_value 2534 || pt_character_string || COMMA; 2535 end; 2536 end; 2537 2538 if ^pt_allow_duplicates_parm 2539 then if pt_first_column_found = pt_second_column_found 2540 then return; 2541 else; 2542 else; 2543 2544 if pt_current_position >= pt_triplet_length 2545 then rslac_result_option_value 2546 = rslac_result_option_value || RESET || BLANK; 2547 else do; 2548 pt_character_string = substr (rslac_triplet, 2549 pt_current_position); 2550 if pt_character_string = RESET 2551 then rslac_result_option_value 2552 = rslac_result_option_value || RESET || BLANK; 2553 else if pt_character_string = RUNNING 2554 then rslac_result_option_value 2555 = rslac_result_option_value || RUNNING || BLANK; 2556 else return; 2557 end; 2558 2559 pt_code_parm = 0; 2560 2561 return; 2562 2563 end parse_triplet; 2564 2565 end replace_subtotal_list_after_checking; 2566 2567 end valid_option_value; 2568 2569 2570 dcl ALL bit (1) aligned static int options (constant) init ("1"b); 2571 dcl ALLOW_DUPLICATES bit (1) aligned static int options (constant) init ("1"b); 2572 dcl ANY bit (1) aligned static int options (constant) init ("0"b); 2573 2574 dcl BLANK char (1) static int options (constant) init (" "); 2575 dcl BOTH char (4) static int options (constant) init ("both"); 2576 2577 dcl CENTER char (6) static int options (constant) init ("center"); 2578 dcl COMMA char (1) static int options (constant) init (","); 2579 2580 dcl DECIMAL char (7) static int options (constant) init ("decimal"); 2581 dcl DIGITS char (10) static int options (constant) init ("0123456789"); 2582 dcl DONT_ALLOW_DUPLICATES bit (1) aligned static int options (constant) init ("0"b); 2583 2584 dcl FILL char (4) static int options (constant) init ("fill"); 2585 2586 dcl LARGEST_FIXED_BIN_17_NUMBER fixed bin (21) internal static options (constant) init (131070); 2587 dcl LEFT char (4) static int options (constant) init ("left"); 2588 dcl LEFT_BRACKET char (1) static int options (constant) init ("["); 2589 2590 dcl NINE char (1) static int options (constant) init ("9"); 2591 2592 dcl OFF bit (1) aligned static int options (constant) init ("0"b); 2593 dcl ON bit (1) aligned static int options (constant) init ("1"b); 2594 2595 dcl PERMANENT bit (36) aligned static int options (constant) init ("01"b); 2596 2597 dcl RESET char (5) static int options (constant) init ("reset"); 2598 dcl RIGHT char (5) static int options (constant) init ("right"); 2599 dcl RUNNING char (7) static int options (constant) init ("running"); 2600 2601 dcl STAR_OR_QUESTION_MARK char (2) static int options (constant) init ("*?"); 2602 dcl STAR_DOT_STAR_STAR char (4) static int options (constant) init ("*.**"); 2603 2604 dcl TAB char (1) static int options (constant) init (" "); 2605 dcl TILDE char (1) static int options (constant) init ("~"); 2606 dcl TRUNCATE char (8) static int options (constant) init ("truncate"); 2607 2608 dcl ZERO char (1) static int options (constant) init ("0"); 2609 2610 dcl addr builtin; 2611 dcl after builtin; 2612 2613 dcl based_fixed_bin_71 fixed bin (71) based; 2614 dcl before builtin; 2615 2616 dcl caktc_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2617 dcl cavgl_save_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2618 dcl char builtin; 2619 dcl code fixed bin (35); 2620 dcl column_map (number_of_defined_columns) bit (1) based (column_map_ptr); 2621 dcl column_map_ptr ptr; 2622 dcl convert builtin; 2623 dcl cv_dec_check_ entry (char(*), fixed bin(35)) returns(fixed bin(35)); 2624 2625 dcl divide builtin; 2626 2627 dcl error_table_$nomatch fixed bin(35) ext static; 2628 dcl error_table_$nostars fixed bin(35) ext static; 2629 dcl error_table_$oldnamerr fixed bin(35) ext static; 2630 2631 dcl general_columns_names_and_values_info_ptr ptr; 2632 dcl general_report_names_and_values_info_ptr ptr; 2633 2634 dcl hbound builtin; 2635 2636 dcl index builtin; 2637 2638 dcl 1 judgement_table (number_of_defined_columns) aligned based (judgement_table_ptr), 2639 2 present bit (1), 2640 2 number fixed bin (35); 2641 dcl judgement_table_ptr ptr; 2642 2643 dcl length builtin; 2644 dcl 1 like_name_value_info (no_of_active_names_and_values) based (like_names_and_values_info_ptr) like name_value_info; 2645 dcl like_names_and_values_info_ptr ptr; 2646 dcl long_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2647 dcl ltrim builtin; 2648 dcl lvswcd_option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2649 dcl lvswcd_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2650 dcl lvswcd_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2651 2652 dcl max builtin; 2653 dcl me char (64); 2654 2655 dcl names_and_values_area area (sys_info$max_seg_size) based (names_and_values_area_ptr); 2656 dcl names_and_values_area_ptr ptr; 2657 dcl names_and_values_bit_map (no_of_names_and_values_in_bit_map) bit (1) based (names_and_values_bit_map_ptr); 2658 dcl names_and_values_bit_map_ptr ptr; 2659 dcl names_and_values_temp_seg_ptr ptr; 2660 dcl normalized_option_name char (MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH) varying; 2661 dcl no_of_active_names_and_values fixed bin; 2662 dcl no_of_names_and_values_in_bit_map fixed bin; 2663 dcl null builtin; 2664 dcl number_of_defined_columns fixed bin; 2665 2666 dcl option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2667 dcl option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 2668 dcl option_table_index fixed bin; 2669 dcl option_type fixed bin; 2670 dcl option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2671 2672 dcl returned_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2673 dcl rclac_spare_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2674 dcl rslac_original_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2675 dcl rslac_result_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2676 dcl rslac_triplet char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2677 dcl rtrim builtin; 2678 dcl rw_error_$bad_option_identifier fixed bin(35) ext static; 2679 dcl rw_error_$bad_option_name fixed bin(35) ext static; 2680 dcl rw_error_$bad_option_value fixed bin(35) ext static; 2681 dcl rw_error_$no_columns_defined fixed bin(35) ext static; 2682 dcl match_star_name_ entry (char(*), char(*), fixed bin(35)); 2683 2684 dcl sci_ptr ptr; 2685 dcl search builtin; 2686 dcl specific_columns_names_and_values_info_ptr ptr; 2687 dcl 1 star_name_info based (star_name_info_ptr), 2688 2 maximum_number_of_star_names fixed bin, 2689 2 number_of_star_names fixed bin, 2690 2 star_name_map (maximum_number_of_star_names) bit (1), 2691 2 column_maps_info (number_of_star_names), 2692 3 number_of_matches fixed bin, 2693 3 column_bit_map (number_of_defined_columns) bit (1); 2694 dcl star_name_info_ptr ptr; 2695 dcl ssu_$abort_line entry() options(variable); 2696 dcl substr builtin; 2697 dcl sv_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2698 dcl sv_spare_option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 2699 dcl sv_spare_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 2700 dcl sys_info$max_seg_size fixed bin(35) ext static; 2701 dcl system_default bit (1) aligned; 2702 2703 dcl translate builtin; 2704 2705 dcl unspec builtin; 2706 2707 dcl valid_select bit (1) aligned; 2708 dcl value_seg_ptr ptr; 2709 dcl value_$delete entry (ptr, bit(36) aligned, char(*), fixed bin(35)); 2710 dcl value_$get entry() options(variable); 2711 dcl value_$list entry (ptr, bit(36) aligned, ptr, ptr, ptr, fixed bin(35)); 2712 dcl value_$set entry() options(variable); 2713 dcl verify builtin; 2714 2715 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 */ 2716 2717 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 */ 2718 2719 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 */ 2720 2721 4 1 /* BEGIN INCLUDE FILE rw_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", /* "0" */ 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 "0", /* "-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 rw_format_options */ 2722 2723 5 1 /* BEGIN INCLUDE FILE ... rw_names_and_values.incl.pl1 5 2* 5 3* Names and values used for producing reports. These structures provide for 5 4* the passing of format report option names and values between requests and 5 5* the "rw_options" subroutine. The caller (usually a request) fills in the 5 6* "option_name_table" structure, or calls a bulk load entry point such as 5 7* rw_options$get_all. The rw_options subroutine uses the 5 8* "name_value_info" structure and the "names_and_values" character string to 5 9* return the requested names and values. 5 10* 5 11* Al Dupuis - August 1983 5 12**/ 5 13 /* format: off */ 5 14 5 15 /* Describes the "names_and_values" character string below. */ 5 16 5 17 dcl 1 name_value_info (no_of_names_and_values) aligned based (names_and_values_info_ptr), 5 18 2 name, /* location and length in temp seg */ 5 19 3 index fixed bin (21), 5 20 3 length fixed bin (21), 5 21 2 value, /* location and length in temp seg */ 5 22 3 index fixed bin (21), 5 23 3 length fixed bin (21); 5 24 5 25 /* Described by "name_value_info" structure above. */ 5 26 5 27 dcl names_and_values char (size_of_names_and_values) based (names_and_values_ptr); 5 28 5 29 dcl names_and_values_info_ptr ptr init (null()); 5 30 dcl names_and_values_ptr ptr init (null()); 5 31 dcl no_of_names_and_values fixed bin (21); 5 32 dcl size_of_names_and_values fixed bin (21); 5 33 5 34 /* Filled in by the caller (i.e. "list_format_options" request) */ 5 35 5 36 dcl 1 option_name_table (no_of_options_in_name_table) based (option_name_table_ptr), 5 37 2 the_name char (32) varying, /* option name */ 5 38 2 the_identifier char (32) varying; /* null, column name, or star name */ 5 39 5 40 dcl no_of_options_in_name_table fixed bin (21); 5 41 dcl option_name_table_ptr ptr init (null()); 5 42 5 43 /* END INCLUDE FILE rw_names_and_values.incl.pl1 */ 2724 2725 6 1 /* BEGIN INCLUDE FILE rw_options_extents.incl.pl1 6 2* 6 3* Extents for the formatting options used for producing reports. 6 4* Kept as a separate include so that some programs may include this 6 5* file without including rw_format_options.incl.pl1 6 6* 6 7* Al Dupuis - August 1983 6 8* 6 9**/ 6 10 /* format: off */ 6 11 6 12 /* The three types of format options that we have. */ 6 13 6 14 dcl GENERAL_REPORT_OPTION fixed bin static int options (constant) init (1); 6 15 dcl GENERAL_COLUMN_OPTION fixed bin static int options (constant) init (2); 6 16 dcl SPECIFIC_COLUMN_OPTION fixed bin static int options (constant) init (3); 6 17 6 18 /* Used to determine how big the tables are without doing a hbound on it. */ 6 19 6 20 dcl NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (15); 6 21 dcl NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE fixed bin static int options (constant) init (9); 6 22 dcl NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (6); 6 23 6 24 /* Used to determine how much space is needed to list them. */ 6 25 6 26 dcl LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (10); /* -alignment */ 6 27 dcl LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH fixed bin static int options (constant) init (25); /* -format_document_controls */ 6 28 dcl LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (21); /* -group_footer_trigger */ 6 29 6 30 /* MAXIMUM_OPTION_IDENTIFIER_LENGTH + MAXIMUM_OPTION_NAME_LENGTH */ 6 31 6 32 dcl MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH fixed bin static int options (constant) init (101); 6 33 6 34 dcl MAXIMUM_OPTION_IDENTIFIER_LENGTH fixed bin static int options (constant) init (69); 6 35 dcl MAXIMUM_OPTION_NAME_LENGTH fixed bin static int options (constant) init (32); 6 36 dcl MAXIMUM_OPTION_VALUE_LENGTH fixed bin static int options (constant) init (4096); 6 37 6 38 /* Used to index into the OPTIONS tables defined in rw_format_options.incl.pl1. */ 6 39 6 40 dcl INDEX_FOR_DELIMITER fixed bin static int options (constant) init (1); 6 41 dcl INDEX_FOR_FORMAT_DOCUMENT_CONTROLS fixed bin static int options (constant) init (2); 6 42 dcl INDEX_FOR_HYPHENATION fixed bin static int options (constant) init (3); 6 43 dcl INDEX_FOR_PAGE_FOOTER_VALUE fixed bin static int options (constant) init (4); 6 44 dcl INDEX_FOR_PAGE_HEADER_VALUE fixed bin static int options (constant) init (5); 6 45 dcl INDEX_FOR_PAGE_LENGTH fixed bin static int options (constant) init (6); 6 46 dcl INDEX_FOR_PAGE_WIDTH fixed bin static int options (constant) init (7); 6 47 dcl INDEX_FOR_TITLE_LINE fixed bin static int options (constant) init (8); 6 48 dcl INDEX_FOR_TRUNCATION fixed bin static int options (constant) init (9); 6 49 6 50 dcl INDEX_FOR_COLUMN_ORDER fixed bin static int options (constant) init (1); 6 51 dcl INDEX_FOR_COUNT fixed bin static int options (constant) init (2); 6 52 dcl INDEX_FOR_EXCLUDE fixed bin static int options (constant) init (3); 6 53 dcl INDEX_FOR_GROUP fixed bin static int options (constant) init (4); 6 54 dcl INDEX_FOR_GROUP_FOOTER_TRIGGER fixed bin static int options (constant) init (5); 6 55 dcl INDEX_FOR_GROUP_FOOTER_VALUE fixed bin static int options (constant) init (6); 6 56 dcl INDEX_FOR_GROUP_HEADER_TRIGGER fixed bin static int options (constant) init (7); 6 57 dcl INDEX_FOR_GROUP_HEADER_VALUE fixed bin static int options (constant) init (8); 6 58 dcl INDEX_FOR_OUTLINE fixed bin static int options (constant) init (9); 6 59 dcl INDEX_FOR_PAGE_BREAK fixed bin static int options (constant) init (10); 6 60 dcl INDEX_FOR_ROW_FOOTER_VALUE fixed bin static int options (constant) init (11); 6 61 dcl INDEX_FOR_ROW_HEADER_VALUE fixed bin static int options (constant) init (12); 6 62 dcl INDEX_FOR_SUBCOUNT fixed bin static int options (constant) init (13); 6 63 dcl INDEX_FOR_SUBTOTAL fixed bin static int options (constant) init (14); 6 64 dcl INDEX_FOR_TOTAL fixed bin static int options (constant) init (15); 6 65 6 66 dcl INDEX_FOR_ALIGNMENT fixed bin static int options (constant) init (1); 6 67 dcl INDEX_FOR_EDITING fixed bin static int options (constant) init (2); 6 68 dcl INDEX_FOR_FOLDING fixed bin static int options (constant) init (3); 6 69 dcl INDEX_FOR_SEPARATOR fixed bin static int options (constant) init (4); 6 70 dcl INDEX_FOR_TITLE fixed bin static int options (constant) init (5); 6 71 dcl INDEX_FOR_WIDTH fixed bin static int options (constant) init (6); 6 72 6 73 /* END INCLUDE FILE rw_options_extents */ 2726 2727 7 1 /* BEGIN INCLUDE FILE rw_report_info.incl.pl1 7 2* Information needed to control the report environment. 7 3* Al Dupuis - August 1983 7 4**/ 7 5 /* format: off */ 7 6 7 7 dcl 1 report_control_info aligned based (report_cip), 7 8 2 flags, 7 9 3 report_is_paginated bit (1) unaligned, /* paged or one continous stream */ 7 10 3 table_has_been_started bit (1) unaligned, /* table clean up is necessary */ 7 11 3 table_is_full bit (1) unaligned, /* no more retrieves are necessary */ 7 12 3 report_has_been_started bit (1) unaligned, /* report clean up is necessary */ 7 13 3 report_is_formatted bit (1) unaligned, /* no more formatting is necessary */ 7 14 3 permanent_report bit (1) unaligned, /* or disposable */ 7 15 3 permanent_table bit (1) unaligned, /* or disposable */ 7 16 3 report_has_just_been_completed bit (1) unaligned, /* used for printing timers */ 7 17 3 table_has_just_been_loaded bit (1) unaligned, /* used for printing timers */ 7 18 3 multi_pass_mode bit (1) unaligned, /* on if we are to do more than 1 pass */ 7 19 3 available bit (26) unaligned, 7 20 2 format_options_flags, /* used to determine if value is default */ 7 21 3 general_report_default_value (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) bit (1) unaligned, 7 22 3 general_column_default_value (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) bit (1) unaligned, 7 23 2 value_seg_ptr ptr, /* the options value seg */ 7 24 2 table_information_ptr ptr, /* points to table_info */ 7 25 2 table_control_info_ptr ptr, /* points to table_control_info */ 7 26 2 row_value_temp_segment_ptr ptr, /* points to a segment for the row value */ 7 27 2 general_work_area_ptr ptr, /* a freeing work area */ 7 28 2 name_value_area_ptr ptr, /* area for name-value allocations */ 7 29 2 subsystem_control_info_ptr ptr, /* ptr for ssu_ info structure */ 7 30 2 subsystems_info_ptr ptr, /* points to subsystems info structure */ 7 31 2 name_value_temp_seg_ptr ptr, /* temp seg for name-value space */ 7 32 2 report_temp_seg_ptr ptr, /* report workspace */ 7 33 2 report_work_area_ptr ptr, /* report workspace */ 7 34 2 format_report_info_ptr ptr, /* info needed to create a report */ 7 35 2 input_string_temp_seg_ptr ptr, /* report workspace */ 7 36 2 output_string_temp_seg_ptr ptr, /* report workspace */ 7 37 2 editing_strings_temp_seg_ptr ptr, /* report workspace */ 7 38 2 headers_temp_seg_ptr ptr, /* report workspace */ 7 39 2 display_iocb_ptr ptr, /* report is displayed through this */ 7 40 2 area_info_ptr ptr, /* points to area_info structure */ 7 41 2 table_manager_delete_table_entry variable entry (ptr, fixed bin (35)), /* entry who deletes the table */ 7 42 2 table_manager_get_query_entry variable entry (ptr, ptr, fixed bin (21), fixed bin (35)), /* entry who gets the query */ 7 43 2 table_manager_get_row_entry variable entry (ptr, fixed bin (35)), /* entry who loads rows */ 7 44 2 table_manager_create_table_entry variable entry (ptr, fixed bin (35)), /* entry who makes a new table */ 7 45 2 options_identifier fixed bin, /* current set of options */ 7 46 2 report_identifier fixed bin, /* current report */ 7 47 2 no_of_rows_retrieved fixed bin (35), /* current no of rows */ 7 48 2 no_of_formatted_pages fixed bin (21), /* current no of pages */ 7 49 2 number_of_passes fixed bin, /* number of times report will be formatted */ 7 50 2 table_loading_time float bin (63), 7 51 2 table_sorting_time float bin (63), 7 52 2 table_deletion_time float bin (63), 7 53 2 report_setup_time float bin (63), 7 54 2 report_formatting_time float bin (63), 7 55 2 report_display_time float bin (63), 7 56 2 report_deletion_time float bin (63), 7 57 2 ssu_evaluate_active_string_time float bin (63), 7 58 2 temp_dir_unique_id bit (36), /* uid of temp dir */ 7 59 2 subsystems_ec_suffix char (32), /* suffix for saving and restoring ecs */ 7 60 2 temp_dir_name char (168) unaligned; /* the dir where we place the retrieved table and report */ 7 61 dcl report_cip ptr init (null ()); 7 62 7 63 /* END INCLUDE FILE rw_report_info.incl.pl1 */ 2728 2729 8 1 /* BEGIN INCLUDE FILE rw_table_info.incl.pl1 8 2* 8 3* Written - Al Dupuis 8 4**/ 8 5 /* format: off */ 8 6 8 7 dcl 1 table_info aligned based (table_ip), 8 8 2 version char (8), 8 9 2 column_count fixed bin, 8 10 2 maximum_column_name_length fixed bin, 8 11 2 maximum_column_value_length fixed bin, 8 12 2 row_value_length fixed bin (21), 8 13 2 row_value_ptr ptr, 8 14 2 columns (ti_init_column_count refer (table_info.column_count)), 8 15 3 column_name char (69) varying, 8 16 3 column_data_type bit (36), 8 17 3 column_length fixed bin (21), 8 18 3 column_index fixed bin (21); 8 19 8 20 dcl table_ip ptr; 8 21 dcl ti_init_column_count fixed bin; 8 22 dcl TABLE_INFO_VERSION_1 char (8) internal static options (constant) init ("rwti_001"); 8 23 8 24 /* END INCLUDE FILE view_master_table_info.incl.pl1 */ 2730 2731 9 1 /* BEGIN INCLUDE FILE rw_table_control_info.incl.pl1 9 2* 9 3* Written - Al Dupuis 9 4**/ 9 5 /* format: off */ 9 6 9 7 dcl 1 row_ptrs aligned based (row_ptrs_ptr), 9 8 2 number_of_ptrs_in_this_segment fixed bin (21), 9 9 2 row_value_ptr (row_ptrs.number_of_ptrs_in_this_segment) ptr unaligned; 9 10 9 11 dcl 1 table_control_info aligned based (table_control_ip), 9 12 2 row_count fixed bin (35), 9 13 2 number_of_components fixed bin, 9 14 2 maximum_number_of_rows_per_segment fixed bin (21), 9 15 2 current_segment_row_count fixed bin (21), 9 16 2 table_information_ptr ptr, 9 17 2 table_segments_info_ptr ptr, 9 18 2 msf_file_control_block_ptr ptr, 9 19 2 current_component_ptr ptr, 9 20 2 general_work_area_ptr ptr, 9 21 2 temp_seg_info_ptr ptr, 9 22 2 subsystem_control_info_ptr ptr, 9 23 2 msf_file_name char (32) unaligned, 9 24 2 msf_directory_name char (168) unaligned; 9 25 9 26 dcl 1 table_segments_info aligned based (table_segments_ip), 9 27 2 maximum_number_of_segments fixed bin, 9 28 2 maximum_number_of_ptrs_per_segment fixed bin (21), 9 29 2 current_number_of_segments fixed bin, 9 30 2 segment_ptrs (tsi_init_maximum_number_of_segments refer 9 31 (table_segments_info.maximum_number_of_segments)) ptr; 9 32 9 33 dcl row_ptrs_ptr ptr; 9 34 dcl table_segments_ip ptr; 9 35 dcl table_control_ip ptr; 9 36 dcl tsi_init_maximum_number_of_segments fixed bin (21); 9 37 9 38 /* END INCLUDE FILE rw_table_control_info.incl.pl1 */ 2732 2733 10 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 10 2 10 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 10 4 10 5 /* This include file contains branch and link structures returned by 10 6* hcs_$status_ and hcs_$status_long. */ 10 7 10 8 dcl 1 status_branch aligned based (status_ptr), 10 9 2 short aligned, 10 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 10 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 10 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 10 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 10 14 3 dtu bit (36) unaligned, /* date/time last used */ 10 15 3 mode bit (5) unaligned, /* caller's effective access */ 10 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 10 17 3 pad1 bit (8) unaligned, 10 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 10 19 10 20 /* Limit of information returned by hcs_$status_ */ 10 21 10 22 2 long aligned, 10 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 10 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 10 25 3 lvid bit (36) unaligned, /* logical volume ID */ 10 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 10 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 10 28 3 pad2 bit (8) unaligned, 10 29 3 copy_switch bit (1) unaligned, /* copy switch */ 10 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 10 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 10 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 10 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 10 34 3 pad3 bit (5) unaligned, 10 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 10 36 3 uid bit (36) unaligned; /* unique ID */ 10 37 10 38 dcl 1 status_link aligned based (status_ptr), 10 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 10 40 2 nnames fixed bin (16) unaligned unsigned, 10 41 2 names_relp bit (18) unaligned, 10 42 2 dtem bit (36) unaligned, 10 43 2 dtd bit (36) unaligned, 10 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 10 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 10 46 10 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 10 48 based (pointer (status_area_ptr, status_branch.names_relp)), 10 49 /* array of names returned */ 10 50 status_pathname character (status_link.pathname_length) aligned 10 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 10 52 /* link target path */ 10 53 status_area_ptr pointer, 10 54 status_ptr pointer; 10 55 10 56 dcl (Link initial (0), 10 57 Segment initial (1), 10 58 Directory initial (2)) fixed bin internal static options (constant); 10 59 /* values for type fields declared above */ 10 60 10 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 2734 2735 11 1 /* BEGIN value_structures.incl.pl1 */ 11 2 11 3 dcl (match_info_ptr, value_list_info_ptr) ptr; 11 4 dcl (alloc_name_count, alloc_pair_count) fixed bin; 11 5 dcl (alloc_max_name_len, alloc_chars_len) fixed bin (21); 11 6 11 7 dcl 1 match_info aligned based (match_info_ptr), 11 8 2 version fixed bin, /* = 1 */ 11 9 2 name_count fixed bin, 11 10 2 max_name_len fixed bin (21), 11 11 2 name_array (alloc_name_count refer (match_info.name_count)), 11 12 3 exclude_sw bit (1) unaligned, /* ON for -exclude, OFF for -match */ 11 13 3 regexp_sw bit (1) unaligned, /* ON for regular exp. without the //, OFF for starname */ 11 14 3 pad bit (34) unaligned, 11 15 3 name char (alloc_max_name_len refer (match_info.max_name_len)) varying; 11 16 11 17 dcl 1 value_list_info aligned based (value_list_info_ptr), 11 18 2 version fixed bin, /* = 1 */ 11 19 2 pair_count fixed bin, 11 20 2 chars_len fixed bin (21), 11 21 2 pairs (alloc_pair_count refer (value_list_info.pair_count)), 11 22 3 type_switches bit (36), /* correspond to the selection switches arg */ 11 23 3 (name_index, name_len) fixed bin (21), 11 24 3 (value_index, value_len) fixed bin (21), 11 25 2 chars char (alloc_chars_len refer (value_list_info.chars_len)); 11 26 11 27 dcl (match_info_version_1, value_list_info_version_1) fixed bin int static options (constant) init (1); 11 28 11 29 /* END OF value_structures.incl.pl1 */ 2736 2737 2738 end rw_options; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1142.8 rw_options.pl1 >udd>sm>ds>w>ml>rw_options.pl1 2716 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 2718 2 11/02/83 1945.0 arg_descriptor.incl.pl1 >ldd>incl>arg_descriptor.incl.pl1 2720 3 08/05/86 0956.8 arg_list.incl.pl1 >ldd>incl>arg_list.incl.pl1 2722 4 11/16/84 1518.1 rw_format_options.incl.pl1 >ldd>incl>rw_format_options.incl.pl1 2724 5 11/16/84 1518.1 rw_names_and_values.incl.pl1 >ldd>incl>rw_names_and_values.incl.pl1 2726 6 11/16/84 1518.1 rw_options_extents.incl.pl1 >ldd>incl>rw_options_extents.incl.pl1 2728 7 11/16/84 1518.0 rw_report_info.incl.pl1 >ldd>incl>rw_report_info.incl.pl1 2730 8 11/16/84 1518.0 rw_table_info.incl.pl1 >ldd>incl>rw_table_info.incl.pl1 2732 9 11/16/84 1518.0 rw_table_control_info.incl.pl1 >ldd>incl>rw_table_control_info.incl.pl1 2734 10 11/22/82 1055.7 status_structures.incl.pl1 >ldd>incl>status_structures.incl.pl1 2736 11 06/24/81 1843.9 value_structures.incl.pl1 >ldd>incl>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 002247 constant bit(1) initial dcl 2570 ref 2288 2356 ALLOW_DUPLICATES 002247 constant bit(1) initial dcl 2571 set ref 2175* ANY constant bit(1) initial dcl 2572 ref 1914 1947 2040 2125 BLANK 021712 constant char(1) initial packed unaligned dcl 2574 ref 519 541 794 804 947 1011 1085 1144 1156 1277 1568 1582 1595 1658 1744 1974 2008 2068 2080 2272 2272 2285 2344 2365 2373 2412 2412 2439 2452 2544 2550 2553 BOTH 002246 constant char(4) initial packed unaligned dcl 2575 ref 2002 CENTER 002244 constant char(6) initial packed unaligned dcl 2577 ref 2002 COMMA 021711 constant char(1) initial packed unaligned dcl 2578 ref 2487 2509 2532 DECIMAL 002242 constant char(7) initial packed unaligned dcl 2580 ref 1011 2009 2011 DIGITS 002237 constant char(10) initial packed unaligned dcl 2581 ref 1573 2013 2197 2208 2500 DONT_ALLOW_DUPLICATES 002305 constant bit(1) initial dcl 2582 set ref 2189* FILL 002236 constant char(4) initial packed unaligned dcl 2584 ref 2050 GENERAL_COLUMN 242 000000 constant structure array level 2 unaligned dcl 4-9 GENERAL_COLUMN_OPTION constant fixed bin(17,0) initial dcl 6-15 ref 192 1384 1549 1558 1722 1906 GENERAL_REPORT 000000 constant structure array level 2 unaligned dcl 4-9 GENERAL_REPORT_OPTION constant fixed bin(17,0) initial dcl 6-14 ref 1377 1558 1715 1776 1904 INDEX_FOR_ALIGNMENT constant fixed bin(17,0) initial dcl 6-66 ref 1002 INDEX_FOR_COLUMN_ORDER constant fixed bin(17,0) initial dcl 6-50 ref 940 INDEX_FOR_GROUP constant fixed bin(17,0) initial dcl 6-53 ref 1731 2132 2134 INDEX_FOR_GROUP_FOOTER_TRIGGER constant fixed bin(17,0) initial dcl 6-54 ref 1930 1955 INDEX_FOR_GROUP_HEADER_TRIGGER constant fixed bin(17,0) initial dcl 6-56 ref 1930 1955 INDEX_FOR_TITLE constant fixed bin(17,0) initial dcl 6-70 ref 1026 INDEX_FOR_WIDTH constant fixed bin(17,0) initial dcl 6-71 ref 1030 LARGEST_FIXED_BIN_17_NUMBER constant fixed bin(21,0) initial dcl 2586 ref 1573 2106 2197 2208 2502 LEFT 002235 constant char(4) initial packed unaligned dcl 2587 ref 1020 2002 LEFT_BRACKET constant char(1) initial packed unaligned dcl 2588 ref 1246 1280 1726 1741 1787 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-28 ref 519 771 LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-27 ref 744 LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-26 ref 519 794 LONG_NAME 001034 constant varying char(32) initial array level 2 dcl 4-101 set ref 611* LONG_NAME_IN_SHORT_NAME_ORDER 14 001034 constant varying char(32) initial array level 2 dcl 4-101 ref 606 MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-32 ref 1066 2660 MAXIMUM_OPTION_IDENTIFIER_LENGTH constant fixed bin(17,0) initial dcl 6-34 ref 2648 2666 2698 MAXIMUM_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-35 ref 1068 2646 2649 2667 MAXIMUM_OPTION_VALUE_LENGTH constant fixed bin(17,0) initial dcl 6-36 ref 2616 2617 2650 2670 2672 2673 2674 2675 2676 2697 2699 NAME 242 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" set ref 232* 236* 489* 493* 530 780 940 1244 1399 1731 1931* 1935* 1956* 1958* 1980* 1983* 2132* 2134* NAME 660 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" ref 541 804 1002 1026 1030 1271 1425 NAME 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" set ref 752 1330* 1334* 1412 NINE constant char(1) initial packed unaligned dcl 2590 ref 2099 2297 NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-20 ref 7-7 517 526 535 689 770 776 874 1242 1398 1858 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-21 ref 7-7 674 688 743 748 849 869 1328 1411 1845 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-22 ref 517 537 793 800 897 1269 1424 1877 OFF constant bit(1) initial dcl 2592 ref 173 528 529 539 540 672 707 750 751 778 779 802 803 985 1073 1136 1137 1217 1462 1782 1786 1803 1813 1897 1901 1948 1966 2041 2096 2126 2142 2269 2279 2281 2288 2302 2308 2311 2316 2327 2333 2344 2350 2358 2409 2426 2447 2455 2517 ON constant bit(1) initial dcl 2593 ref 188 679 693 991 1103 1221 1309 1344 1479 1719 1735 1778 1799 1800 1808 1915 1940 1943 1987 1993 2002 2013 2027 2037 2050 2063 2072 2080 2102 2106 2122 2151 2159 2171 2185 2197 2214 2292 2321 2336 2341 2381 2418 2431 2450 2522 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 002234 constant bit(36) initial dcl 2595 set ref 232* 290* 489* 548* 556* 757* 785* 810* 1167* 1260* 1295* 1330* 1760* 1931* 1956* 1980* 2132* RESET 002232 constant char(5) initial packed unaligned dcl 2597 ref 2544 2550 2550 RIGHT 002230 constant char(5) initial packed unaligned dcl 2598 ref 1008 1019 2002 RUNNING 002226 constant char(7) initial packed unaligned dcl 2599 ref 2553 2553 SHORT_NAME 11 001034 constant varying char(5) initial array level 2 dcl 4-101 set ref 602* SPECIFIC_COLUMN 660 000000 constant structure array level 2 unaligned dcl 4-9 SPECIFIC_COLUMN_OPTION constant fixed bin(17,0) initial dcl 6-16 ref 188 192 1085 1389 1549 1772 STAR_DOT_STAR_STAR 002224 constant char(4) initial packed unaligned dcl 2602 ref 519 541 794 804 STAR_OR_QUESTION_MARK constant char(2) initial packed unaligned dcl 2601 ref 1565 TAB constant char(1) initial packed unaligned dcl 2604 ref 2272 2412 TILDE 021710 constant char(1) initial packed unaligned dcl 2605 ref 2068 2080 TRUNCATE 002222 constant char(8) initial packed unaligned dcl 2606 ref 2050 VALUE 671 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" ref 1279 1739 VALUE 253 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" set ref 1245 1724 1787 1787 1808 1931* 1935* VALUE 11 000000 constant varying char(32) initial array level 3 in structure "OPTIONS" dcl 4-9 in procedure "rw_options" set ref 1330* 1334* 1717 1778 ZERO constant char(1) initial packed unaligned dcl 2608 ref 2099 2102 2297 addr builtin function dcl 2610 ref 1005 1150 after builtin function dcl 2611 ref 1085 1744 2011 alloc_max_name_len 000213 automatic fixed bin(21,0) dcl 11-5 set ref 519* 522 522 744* 745 745 771* 772 772 794* 796 796 1066* 1068* 1129 1129 alloc_name_count 000212 automatic fixed bin(17,0) dcl 11-4 set ref 517* 522 522 743* 745 745 770* 772 772 793* 796 796 1065* 1100* 1100 1129 1129 arg_descriptor based structure level 1 dcl 2-6 arg_descriptor_ptr 000162 automatic pointer dcl 2-34 set ref 1005* 1007 1011 1011 based_fixed_bin_71 based fixed bin(71,0) dcl 2613 ref 1573 2013 2013 2106 2197 2208 2502 before builtin function dcl 2614 ref 2008 caktc_group_list_ptr 000100 automatic pointer dcl 1924 set ref 1953* 1966 caktc_inner_loop 000102 automatic fixed bin(17,0) dcl 1925 set ref 1965* 1966 1966 1966* 1973* 1974 1974* caktc_loop 000103 automatic fixed bin(17,0) dcl 1926 set ref 1930* 1931 1931 1935 1935 1940* 1955* 1956 1958 1980 1983 1987* caktc_option_value 000100 automatic varying char dcl 2616 set ref 1954* 1994 cavgl_group_list_judgement_table_ptr 000100 automatic pointer dcl 2117 set ref 2130* 2145 cavgl_loop 000102 automatic fixed bin(17,0) dcl 2118 set ref 2144* 2145 2145* cavgl_save_option_value 000100 automatic varying char dcl 2617 set ref 2131* 2141 char builtin function dcl 2618 ref 1011 1030 chars based char level 2 dcl 11-17 ref 556 556 560 560 846 871 894 1192 chars_len 2 based fixed bin(21,0) level 2 dcl 11-17 ref 556 556 560 560 822 822 822 827 846 846 868 871 871 891 894 894 1189 1192 code 000100 automatic fixed bin(35,0) dcl 2619 set ref 139* 141 178* 179 181 232* 234 236 236* 280* 283 285 290* 292 292* 412* 413 413 457* 459 489* 491 493 493* 548* 550 550* 556* 560 560* 757* 759 759* 785* 787 787* 810* 812 812* 1167* 1169 1169* 1260* 1262 1262* 1295* 1298 1298* 1330* 1334 1334* 1553* 1760* 1764 1764* 1931* 1935 1935* 1956* 1958 1958* 1980* 1983 1983* 2132* 2134 2134* code_parm parameter fixed bin(35,0) dcl 90 set ref 108 135* 141* 146 174* 181* 192* 248 276* 285* 302 327* 341 366* 379 408* 413* 424 453* 459* 463 481* column_bit_map based bit(1) array level 3 packed packed unaligned dcl 2687 set ref 1107* 1150 column_count 2 based fixed bin(17,0) level 2 dcl 8-7 ref 897 1222 column_data_type 33 based bit(36) array level 3 dcl 8-7 set ref 1005 column_length 34 based fixed bin(21,0) array level 3 dcl 8-7 ref 1011 1030 column_map based bit(1) array packed unaligned dcl 2620 set ref 1076 1092* 1107 1154 1647 1649* 1656 column_map_ptr 000102 automatic pointer dcl 2621 set ref 1076* 1092 1107 1150* 1154 1647* 1649 1656 column_maps_info based structure array level 2 unaligned dcl 2687 column_name 10 based varying char(69) array level 3 dcl 8-7 ref 943 947 988 1026 1156 1275 1474 1582 1593 1658 1974 2321 2365 2373 2509 2519 columns 10 based structure array level 2 dcl 8-7 convert builtin function dcl 2622 ref 1573 1577 2013 2013 2106 2197 2208 2212 2502 2504 cv_dec_check_ 000010 constant entry external dcl 2623 ref 2305 dco_inner_loop 000434 automatic fixed bin(17,0) dcl 514 set ref 535* 539 540 541 544* 544 dco_loop 000435 automatic fixed bin(17,0) dcl 515 set ref 526* 528 529 530 530* 537* 541* 554* 556 556 556 556 560 560 560 560* divide builtin function dcl 2625 ref 636 eafa_inner_loop 000472 automatic fixed bin(17,0) dcl 664 set ref 688* 693 697* 697 704* 709 711 713 715 717* 717 eafa_loop 000473 automatic fixed bin(17,0) dcl 665 set ref 674* 676 679* 689* 690* 706* 707 709 711 713 715* error_table_$nomatch 000012 external static fixed bin(35,0) dcl 2627 ref 1482 error_table_$nostars 000014 external static fixed bin(35,0) dcl 2628 ref 1090 1567 1644 error_table_$oldnamerr 000016 external static fixed bin(35,0) dcl 2629 ref 236 493 eson_code_parm parameter fixed bin(35,0) dcl 594 set ref 576 600* 615* eson_long_option_name_parm parameter varying char dcl 595 set ref 576 599* 606* 613* eson_option_name_parm parameter varying char dcl 596 set ref 576 602* 611* 613 eson_table_index 000450 automatic fixed bin(17,0) dcl 597 set ref 602* 604 606 611* 613 exclude_sw 3 based bit(1) array level 3 packed packed unaligned dcl 11-7 set ref 528* 539* 750* 778* 802* 1136* extended_arg_type 000164 automatic fixed bin(17,0) initial dcl 2-36 set ref 2-36* fixed_arg_descriptor based structure level 1 dcl 2-13 format_options_flags 1 based structure level 2 dcl 7-7 ganav_inner_loop 000506 automatic fixed bin(17,0) dcl 736 set ref 869* 876 879 882 885 887* 887 902 905 908 911 913* 913 ganav_loop 000507 automatic fixed bin(17,0) dcl 737 set ref 748* 750 751 752 752* 776* 778 779 780 780* 800* 802 803 804 804* 849* 851 851 853 853 855 855 857 857* 874* 876 879 882 885* 900* 902 905 908 911* ganav_loop_limit 000510 automatic fixed bin(17,0) dcl 738 set ref 897* 900 ganav_no_of_chars_already_done 000511 automatic fixed bin(21,0) dcl 739 set ref 868* 871 876 882 891* 891 894 902 908 general_column_default_value 1(09) based bit(1) array level 3 packed packed unaligned dcl 7-7 set ref 690 1309* 1735* 1800* 1803* 1808* 1813* 1940* 1987* general_columns_names_and_values_info_ptr 000104 automatic pointer dcl 2631 set ref 791* 822 832 870 general_report_default_value 1 based bit(1) array level 3 packed packed unaligned dcl 7-7 set ref 676 1344* 1719* 1778* 1782* general_report_names_and_values_info_ptr 000106 automatic pointer dcl 2632 set ref 763* 822 827 832 837 845 ggcdv_loop 000526 automatic fixed bin(17,0) dcl 936 set ref 946* 947* ggcdv_option_name_parm parameter varying char dcl 937 ref 921 940 ggcdv_option_value_parm parameter varying char dcl 938 set ref 921 943* 947* 947 951* gnv_code_parm parameter fixed bin(35,0) dcl 1056 set ref 1038 1063* 1080* 1085 1090 1092* 1095 1095* 1113 1113* 1117 1117* 1122* gnv_current_star_name 000552 automatic fixed bin(17,0) dcl 1057 set ref 1133* 1150 1162* 1162 gnv_inner_loop 000553 automatic fixed bin(17,0) dcl 1058 set ref 1153* 1154 1156* gnv_loop 000554 automatic fixed bin(17,0) dcl 1059 set ref 1078* 1080 1080 1085 1089 1092 1095 1103 1113 1117 1117* 1134* 1139 1141 1141 1144 1144 1156* 1178* 1179 1179 1181 1181 1183 1183 1185 1185* gnv_match_info_index 000555 automatic fixed bin(17,0) dcl 1060 set ref 1132* 1136 1137 1141 1144 1147* 1147 1156 1159* 1159 gnv_number_of_matches 000556 automatic fixed bin(17,0) dcl 1061 set ref 1092* 1100 1100 1104 gscdv_column_option_number 000536 automatic fixed bin(17,0) dcl 977 set ref 992* 1005 1011 1026 1030 gscdv_column_type 000537 automatic fixed bin(6,0) packed unsigned unaligned dcl 978 set ref 1007* 1008 1008 1008 1008 1011 1011 1011 1011 1011 1011 1011 1011 1020 1020 1022* gscdv_hit 000540 automatic bit(1) dcl 979 set ref 985* 987 991* 996 gscdv_loop 000541 automatic fixed bin(17,0) dcl 980 set ref 987* 988 992* gscdv_option_identifier_parm parameter varying char dcl 981 ref 957 988 gscdv_option_name_parm parameter varying char dcl 982 ref 957 1002 1026 1030 gscdv_option_value_parm parameter varying char dcl 983 set ref 957 998* 1008* 1011* 1019* 1020* 1026* 1030* 1034* gt_code_parm parameter fixed bin(35,0) dcl 2435 set ref 2433 2438* gt_still_skipping_blanks 000114 automatic bit(1) dcl 2436 set ref 2450* 2451 2455* hbound builtin function dcl 2634 ref 632 1466 identifier_needed_parm parameter bit(1) dcl 91 set ref 146 173* 188* index 2 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2644 in procedure "rw_options" set ref 713* index builtin function dcl 2636 in procedure "rw_options" ref 2285 2439 2487 index 2 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "rw_options" set ref 713 855* 882* 908* 1185* index based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "rw_options" set ref 709 851* 876* 902* 1181* index based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2644 in procedure "rw_options" set ref 709* judgement_table based structure array level 1 dcl 2638 judgement_table_ptr 000110 automatic pointer dcl 2641 set ref 1916* 1949* 1953 1964* 1966 1966 1974 2042* 2127* 2130 2138* 2145 length 3 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2644 in procedure "rw_options" set ref 715* length 1 based fixed bin(21,0) array level 3 in structure "like_name_value_info" dcl 2644 in procedure "rw_options" set ref 711* length 3 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "rw_options" set ref 715 857* 885* 911* 1183* length 1 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "rw_options" set ref 711 853* 879* 905* 1179* length builtin function dcl 2643 in procedure "rw_options" ref 519 519 794 794 1246 1280 1726 1741 1787 1787 2060 2080 2093 2274 2414 2483 like_name_value_info based structure array level 1 unaligned dcl 2644 set ref 701 like_names_and_values_info_ptr 000112 automatic pointer dcl 2645 set ref 334 701* 709 711 713 715 lnft_loop1 000460 automatic fixed bin(17,0) dcl 625 set ref 631* 634 636 642* lnft_loop2 000461 automatic fixed bin(17,0) dcl 626 set ref 632* 634 636 640* lnft_loop3 000462 automatic fixed bin(17,0) dcl 627 set ref 636* 637 637 640 640 642 lnft_name_parm parameter varying char dcl 628 ref 619 637 640 lnft_table_parm parameter varying char array dcl 629 ref 619 632 637 640 lon_loop 000100 automatic fixed bin(17,0) dcl 1367 set ref 1398* 1399 1399* 1411* 1412 1412* 1424* 1425 1425* lon_option_index_parm parameter fixed bin(17,0) dcl 1370 set ref 1350 1374* 1375 1381* 1382 1388* 1389 lon_option_name_parm parameter varying char dcl 1368 ref 1350 1399 1412 1425 lon_option_type_parm parameter fixed bin(17,0) dcl 1369 set ref 1350 1372* 1377* 1384* 1389* long_option_name 000114 automatic varying char dcl 2646 set ref 178* 184 186* long_option_name_parm parameter varying char dcl 92 set ref 146 172* 184* ltrim builtin function dcl 2647 ref 1011 1030 2011 2272 2412 lvswcd_inner_loop 000600 automatic fixed bin(17,0) dcl 1239 set ref 1273* 1275* lvswcd_loop 000601 automatic fixed bin(17,0) dcl 1240 set ref 1242* 1244 1245* 1269* 1271 1279* lvswcd_option_identifier 000114 automatic varying char dcl 2648 set ref 1275* 1277 1283* lvswcd_option_name 000114 automatic varying char dcl 2649 set ref 1244* 1249* 1251* 1260* 1262* 1271* 1277 1283* lvswcd_option_value 000114 automatic varying char dcl 2650 set ref 1245* 1246 1246 1249* 1251 1260* 1262* 1279* 1280 1280 1283* 1286 1295* 1298* lvswrd_loop 000614 automatic fixed bin(17,0) dcl 1326 set ref 1328* 1330 1330 1334 1334* match_info based structure level 1 dcl 11-7 set ref 522 745 772 796 1129 match_info_ptr 000206 automatic pointer dcl 11-3 set ref 522* 524 528 529 530 539 540 541 548* 745* 746 750 751 752 757* 772* 774 778 779 780 785* 796* 798 802 803 804 810* 1129* 1130 1136 1137 1141 1144 1156 1167* match_info_version_1 constant fixed bin(17,0) initial dcl 11-27 ref 524 746 774 798 1130 match_star_name_ 000030 constant entry external dcl 2682 ref 1474 max builtin function dcl 2652 ref 519 max_name_len 2 based fixed bin(21,0) level 2 dcl 11-7 set ref 522* 528 528 529 529 530 530 530 539 539 540 540 541 541 541 745* 750 750 751 751 752 752 752 772* 778 778 779 779 780 780 780 796* 802 802 803 803 804 804 804 1129* 1136 1136 1137 1137 1141 1141 1141 1144 1144 1144 1156 1156 1156 maximum_number_of_star_names based fixed bin(17,0) level 2 dcl 2687 set ref 1071* 1073 1104 1107 1107 1150 mcn_code_parm parameter fixed bin(35,0) dcl 1455 set ref 1435 1464* 1474* 1477 1482 1490* mcn_column_map_parm parameter bit(1) array packed unaligned dcl 1457 set ref 1435 1462* 1466 1479* mcn_loop 000626 automatic fixed bin(17,0) dcl 1456 set ref 1473* 1474 1479* mcn_number_of_matches 000627 automatic fixed bin(17,0) dcl 1458 set ref 1472* 1480* 1480 1487 1489 mcn_number_of_matches_parm parameter fixed bin(17,0) dcl 1459 set ref 1435 1463* 1489* mcn_star_name_parm parameter varying char dcl 1460 ref 1435 1474 me 000114 automatic char(64) packed unaligned dcl 2653 set ref 130* 169* 236* 268* 321* 360* 400* 447* 479* 493* 1466* name 4 based varying char array level 3 in structure "match_info" dcl 11-7 in procedure "rw_options" set ref 530* 541* 752* 780* 804* 1141* 1144* 1156* name based structure array level 2 in structure "name_value_info" dcl 5-17 in procedure "rw_options" name based structure array level 2 in structure "like_name_value_info" unaligned dcl 2644 in procedure "rw_options" name_array 3 based structure array level 2 dcl 11-7 name_count 1 based fixed bin(17,0) level 2 dcl 11-7 set ref 522* 745* 772* 796* 1129* name_index 4 based fixed bin(21,0) array level 3 dcl 11-17 ref 556 556 560 560 851 876 902 1181 name_len 5 based fixed bin(21,0) array level 3 dcl 11-17 ref 556 556 560 560 853 879 905 1179 name_value_area_ptr 14 based pointer level 2 dcl 7-7 ref 1210 name_value_info based structure array level 1 dcl 5-17 set ref 839 1175 name_value_temp_seg_ptr 22 based pointer level 2 dcl 7-7 ref 1211 names_and_values based char packed unaligned dcl 5-27 set ref 829 846* 871* 894* 1190 1192* names_and_values_area based area dcl 2655 ref 522 670 701 745 772 796 829 839 1076 1129 1175 1190 1647 2277 names_and_values_area_ptr 000134 automatic pointer dcl 2656 set ref 522 548* 670 701 745 757* 772 785* 796 810* 829 839 1076 1129 1167* 1175 1190 1210* 1647 2277 names_and_values_bit_map based bit(1) array packed unaligned dcl 2657 set ref 670 672* 679* 693* 707 names_and_values_bit_map_ptr 000136 automatic pointer dcl 2658 set ref 670* 672 679 693 707 names_and_values_info_ptr 000166 automatic pointer initial dcl 5-29 set ref 372 416 5-29* 709 711 713 715 839* 851 853 855 857 876 879 882 885 902 905 908 911 1175* 1179 1181 1183 1185 names_and_values_info_ptr_parm parameter pointer dcl 93 set ref 302 323* 334* 341 362* 372* 379 404* 416* names_and_values_ptr 000170 automatic pointer initial dcl 5-30 set ref 336 374 418 5-30* 829* 846 871 894 1190* 1192 names_and_values_ptr_parm parameter pointer dcl 94 set ref 302 325* 336* 341 364* 374* 379 406* 418* names_and_values_temp_seg_ptr 000140 automatic pointer dcl 2659 set ref 1070 1211* no_of_active_names_and_values 000142 automatic fixed bin(17,0) dcl 2661 set ref 335 668* 680* 680 694* 694 701 no_of_names_and_values 000172 automatic fixed bin(21,0) dcl 5-31 set ref 373 417 667 668 832* 837* 839 1174* 1175 1178 no_of_names_and_values_in_bit_map 000143 automatic fixed bin(17,0) dcl 2662 set ref 667* 670 672 706 no_of_names_and_values_parm parameter fixed bin(21,0) dcl 95 set ref 302 324* 335* 341 363* 373* 379 405* 417* no_of_options_in_name_table 000174 automatic fixed bin(21,0) dcl 5-40 set ref 403* 1065 1071 1078 1134 no_of_options_in_name_table_parm parameter fixed bin(21,0) dcl 96 ref 379 403 non_code_parm parameter fixed bin(35,0) dcl 1529 set ref 1498 1539* 1545* 1567* 1579* 1587* 1601* non_column_option_number 000640 automatic fixed bin(17,0) dcl 1530 set ref 1577* 1577 1579 1579 1582 non_loop 000641 automatic fixed bin(17,0) dcl 1531 set ref 1592* 1593* non_normalized_option_name_parm parameter varying char dcl 1532 set ref 1498 1538* 1561* 1568* 1582* 1595* non_option_identifier_parm parameter varying char dcl 1533 ref 1498 1565 1568 1573 1573 1577 1593 1595 non_option_name_parm parameter varying char dcl 1534 set ref 1498 1541* 1561 1568 1582 1595 non_option_table_index_parm parameter fixed bin(17,0) dcl 1535 set ref 1498 1541* 1543 non_option_type_parm parameter fixed bin(17,0) dcl 1536 set ref 1498 1541* 1549 1549 1558 1558 normalized_option_name 000142 automatic varying char dcl 2660 set ref 139* 142 280* 290* 292* 297 1080* 1085 1277* 1286* 1295* 1298* 1636* 1658* 1744 1754* 1760* 1764* normalized_option_name_parm parameter varying char dcl 97 set ref 108 134* 142* 248 274* 297* null builtin function dcl 2663 ref 323 325 362 364 404 406 5-29 5-30 5-41 7-61 1215 2268 number 1 based fixed bin(35,0) array level 2 dcl 2259 set ref 2305* 2311 2311 2329* 2333 2336 2365 2365 number_of_defined_columns 000144 automatic fixed bin(17,0) dcl 2664 set ref 944 946 987 1076 1092 1104 1104 1107 1107 1107 1107 1107 1107 1150 1150 1153 1218* 1222* 1273 1466 1473 1579 1592 1647 1649 1654 1965 1973 2144 2277 2279 2283 2288 2311 2320 2350 2356 2364 2371 2505 2518 number_of_matches based fixed bin(17,0) array level 3 dcl 2687 set ref 1104* number_of_star_names 1 based fixed bin(17,0) level 2 dcl 2687 set ref 1074* 1104 1107 1110* 1110 1126* 1126 option_identifier 000145 automatic varying char dcl 2666 set ref 133* 139* 272* 280* 450* 457* option_identifier_parm parameter varying char dcl 98 ref 108 133 248 272 424 450 option_name 000145 automatic varying char dcl 2667 set ref 132* 139* 171* 178* 271* 280* 449* 457* option_name_parm parameter varying char dcl 99 ref 108 132 146 171 248 271 424 449 option_name_table based structure array level 1 unaligned dcl 5-36 option_name_table_ptr 000176 automatic pointer initial dcl 5-41 set ref 402* 5-41* 1080 1080 1085 1089 1092 1095 1113 1117 1117 1141 1141 1144 1144 1156 option_name_table_ptr_parm parameter pointer dcl 100 ref 379 402 option_table_index 000145 automatic fixed bin(17,0) dcl 2668 set ref 139* 186* 280* 1080* 1636* 1717 1719 1724 1735 1739 1778 1778 1782 1787 1787 1800 1803 1808 1808 1813 1899* 1901 1904 1906 1908 option_type 000146 automatic fixed bin(17,0) dcl 2669 set ref 139* 186* 188 192 192 280* 1080* 1085 1636* 1715 1722 1772 1776 1899* 1904 1906 option_value 000147 automatic varying char dcl 2670 set ref 290* 298 451* 457* option_value_parm parameter varying char dcl 101 set ref 248 275* 298* 424 451 options_identifier 66 based fixed bin(17,0) level 2 dcl 7-7 set ref 569* 569 1307* 1307 1342* 1342 1769* 1769 pair_count 1 based fixed bin(17,0) level 2 dcl 11-17 ref 554 556 556 560 560 832 832 832 837 846 871 894 1174 1192 pairs 3 based structure array level 2 dcl 11-17 present based bit(1) array level 2 in structure "rclac_judgement_table" packed packed unaligned dcl 2259 in procedure "replace_column_list_after_checking" set ref 2333 2336* 2358 2373 present based bit(1) array level 2 in structure "judgement_table" dcl 2638 in procedure "rw_options" set ref 1966 1966 1966* 1974 2145 2145 pt_allow_duplicates_parm parameter bit(1) dcl 2469 ref 2463 2538 pt_character_string 000124 automatic varying char(80) dcl 2470 set ref 2495* 2500 2502 2504 2519 2532 2548* 2550 2553 pt_code_parm parameter fixed bin(35,0) dcl 2471 set ref 2463 2482* 2559* pt_column_number 000151 automatic fixed bin(17,0) dcl 2472 set ref 2504* 2504 2505 2505 2509 2512 2514 2523* 2529 2531 pt_comma_position 000152 automatic fixed bin(17,0) dcl 2473 set ref 2487* 2489 2492* 2495 2497 pt_current_position 000153 automatic fixed bin(17,0) dcl 2474 set ref 2484* 2487 2492 2495 2497* 2497 2498 2544 2548 pt_first_column_found 000154 automatic fixed bin(17,0) dcl 2475 set ref 2512* 2529* 2538 pt_hit 000155 automatic bit(1) dcl 2476 set ref 2517* 2518 2522* 2526 pt_inner_loop 000156 automatic fixed bin(17,0) dcl 2477 set ref 2518* 2519 2523* pt_loop 000157 automatic fixed bin(17,0) dcl 2478 set ref 2486* 2489 2498 2512 2529* pt_second_column_found 000160 automatic fixed bin(17,0) dcl 2479 set ref 2514* 2531* 2538 pt_triplet_length 000161 automatic fixed bin(17,0) dcl 2480 set ref 2483* 2492 2498 2544 rclac_code 000100 automatic fixed bin(35,0) dcl 2252 set ref 2305* 2308 rclac_column_name_length 000101 automatic fixed bin(17,0) dcl 2253 set ref 2317* 2321 rclac_current_position 000102 automatic fixed bin(17,0) dcl 2254 set ref 2275* 2285 2285 2295 2300 2305 2305 2317 2321 2342* 2344 2347* 2347 2350 rclac_finished 000103 automatic bit(1) dcl 2255 set ref 2281* 2283 2292* 2339 rclac_first_blank 000104 automatic fixed bin(17,0) dcl 2256 set ref 2285* 2288 2300 2317 2342 rclac_hit 000105 automatic bit(1) dcl 2257 set ref 2316* 2320 2321* 2327 rclac_inner_loop 000106 automatic fixed bin(17,0) dcl 2258 set ref 2320* 2321* 2329 rclac_judgement_table based structure array level 1 unaligned dcl 2259 set ref 2277 2279* rclac_judgement_table_ptr 000110 automatic pointer dcl 2260 set ref 2277* 2279 2305 2311 2311 2329 2333 2333 2336 2336 2358 2365 2365 2373 2379 rclac_judgement_table_ptr_parm parameter pointer dcl 2261 set ref 2225 2268* 2379* rclac_loop 000112 automatic fixed bin(17,0) dcl 2262 set ref 2283* 2288 2305 2311 2311 2329 2333 2336 2350* 2356* 2358* 2364* 2365 2365* 2371* 2373 2373* rclac_no_of_claimed_digits 000113 automatic fixed bin(17,0) dcl 2263 set ref 2300* 2302 2305 2305 rclac_spare_option_value 000147 automatic varying char dcl 2673 set ref 2272* 2274 2285 2295 2305 2305 2321 2344 2362* 2365* 2365 2373* 2373 2378 rclac_spare_option_value_length 000114 automatic fixed bin(17,0) dcl 2264 set ref 2274* 2288 2350 rclac_still_skipping_blanks 000115 automatic bit(1) dcl 2265 set ref 2341* 2343 2344* rclac_target_character 000116 automatic char(1) packed unaligned dcl 2266 set ref 2295* 2297 2297 regexp_sw 3(01) based bit(1) array level 3 packed packed unaligned dcl 11-7 set ref 529* 540* 751* 779* 803* 1137* report_cip 000200 automatic pointer initial dcl 7-61 set ref 131* 170* 270* 322* 361* 401* 448* 480* 7-61* 569 569 676 690 1207* 1208 1209 1210 1211 1213 1214 1307 1307 1309 1342 1342 1344 1719 1735 1769 1769 1778 1782 1800 1803 1808 1813 1940 1987 report_cip_parm parameter pointer dcl 102 ref 108 131 146 170 201 248 270 302 322 341 361 379 401 424 448 463 480 1207 report_control_info based structure level 1 dcl 7-7 returned_option_value 000147 automatic varying char dcl 2672 set ref 232* 489* 1260* 1295* 1330* 1760* 1931* 1980* rslac_allow_duplicates_parm parameter bit(1) dcl 2402 set ref 2385 2422* rslac_blank_position 000100 automatic fixed bin(17,0) dcl 2403 set ref 2439* 2442 2444 rslac_code 000101 automatic fixed bin(35,0) dcl 2404 set ref 2421* 2422 2422* 2426 rslac_current_position 000102 automatic fixed bin(17,0) dcl 2405 set ref 2417* 2439 2442 2444* 2444 2447 2452 2452* 2452 rslac_original_option_value 000147 automatic varying char dcl 2674 set ref 2412* 2414 2439 2442 2452 rslac_original_option_value_length 000103 automatic fixed bin(17,0) dcl 2406 set ref 2414* 2447 rslac_result_option_value 000147 automatic varying char dcl 2675 set ref 2416* 2429 2509* 2509 2532* 2532 2544* 2544 2550* 2550 2553* 2553 rslac_still_parsing 000104 automatic bit(1) dcl 2407 set ref 2418* 2420 2447* rslac_triplet 000147 automatic varying char dcl 2676 set ref 2442* 2483 2487 2495 2548 rtrim builtin function dcl 2677 ref 1979 2011 2272 2378 2412 2429 rw_error_$bad_option_identifier 000020 external static fixed bin(35,0) dcl 2678 ref 1117 1579 1587 1601 rw_error_$bad_option_name 000022 external static fixed bin(35,0) dcl 2679 ref 615 1113 1545 rw_error_$bad_option_value 000024 external static fixed bin(35,0) dcl 2680 ref 1709 rw_error_$no_columns_defined 000026 external static fixed bin(35,0) dcl 2681 ref 192 1553 scale 0(12) based fixed bin(11,0) level 2 packed packed unaligned dcl 2-13 ref 1011 1011 sci_ptr 000150 automatic pointer dcl 2684 set ref 236* 292* 493* 550* 560* 759* 787* 812* 1022* 1095* 1113* 1117* 1122* 1169* 1208* 1251* 1262* 1286* 1298* 1334* 1466* 1754* 1764* 1794* 1935* 1958* 1983* 2134* search builtin function dcl 2685 ref 1565 size_of_names_and_values 000173 automatic fixed bin(21,0) dcl 5-32 set ref 337 375 419 822* 827* 829 829 846 871 894 1189* 1190 1190 1192 size_of_names_and_values_parm parameter fixed bin(21,0) dcl 103 set ref 302 326* 337* 341 365* 375* 379 407* 419* specific_columns_names_and_values_info_ptr 000152 automatic pointer dcl 2686 set ref 816* 822 832 893 ssu_$abort_line 000032 constant entry external dcl 2695 ref 236 292 493 550 560 759 787 812 1022 1095 1113 1117 1122 1169 1251 1262 1286 1298 1334 1466 1754 1764 1794 1935 1958 1983 2134 star_name_info based structure level 1 unaligned dcl 2687 star_name_info_ptr 000154 automatic pointer dcl 2694 set ref 1070* 1071 1073 1073 1074 1103 1104 1104 1104 1107 1107 1107 1107 1110 1110 1126 1126 1139 1150 1150 star_name_map 2 based bit(1) array level 2 packed packed unaligned dcl 2687 set ref 1073* 1103* 1139 stv_code_parm parameter fixed bin(35,0) dcl 1627 set ref 1607 1636* 1639 1641* 1644 1649* 1651 1660* 1661 1709* stv_loop 000652 automatic fixed bin(17,0) dcl 1628 set ref 1654* 1656 1658* stv_number_of_matches 000653 automatic fixed bin(17,0) dcl 1629 set ref 1649* stv_option_identifier_parm parameter varying char dcl 1631 set ref 1607 1636* 1649* stv_option_name_parm parameter varying char dcl 1630 set ref 1607 1636* 1658 1707* 1726* 1731 1731* 1746* 1792* 1794* stv_option_value_parm parameter varying char dcl 1632 ref 1607 1706 stv_system_default_parm parameter bit(1) dcl 1633 ref 1607 1704 1772 stv_value_has_been_tested 000654 automatic bit(1) dcl 1634 set ref 1786* 1799* 1808 substr builtin function dcl 2696 set ref 556 556 560 560 846* 871* 894* 1246 1280 1726 1741 1787 2067 2098 2285 2295 2305 2305 2321 2344 2439 2442 2452 2487 2495 2548 subsystem_control_info_ptr 16 based pointer level 2 dcl 7-7 ref 1208 sv_code_parm parameter fixed bin(35,0) dcl 1699 set ref 1669 1702* sv_force_group_triggers_consistency 000664 automatic bit(1) packed unaligned dcl 1700 set ref 1731* sv_option_value 000156 automatic varying char dcl 2697 set ref 1706* 1707* 1717* 1724* 1726 1726 1726* 1731* 1739* 1741 1741 1746* 1754 1760* 1764* 1778 1787 1800 1808 sv_spare_option_identifier 000156 automatic varying char dcl 2698 set ref 1744* 1746* sv_spare_option_value 000156 automatic varying char dcl 2699 set ref 1792* 1794 1800 system_default 000156 automatic bit(1) dcl 2701 set ref 452* 457* system_default_parm parameter bit(1) dcl 104 ref 424 452 table_control_info_ptr 6 based pointer level 2 dcl 7-7 ref 1213 table_control_ip 000204 automatic pointer dcl 9-35 set ref 1213* table_info based structure level 1 dcl 8-7 table_information_ptr 4 based pointer level 2 dcl 7-7 ref 1214 table_ip 000202 automatic pointer dcl 8-20 set ref 897 943 947 988 1005 1011 1026 1030 1156 1214* 1215 1222 1275 1474 1582 1593 1658 1974 2321 2365 2373 2509 2519 the_identifier 11 based varying char(32) array level 2 dcl 5-36 set ref 1080* 1085* 1089* 1092* 1095* 1117* 1141 1144 the_name based varying char(32) array level 2 dcl 5-36 set ref 1080* 1113* 1117* 1141 1144 1156 translate builtin function dcl 2703 ref 2272 2412 type 0(01) based fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 2-6 ref 1007 unspec builtin function dcl 2705 set ref 672* 2279* valid_select 000157 automatic bit(1) dcl 2707 set ref 192 230 243 486 686 767 822 832 862 1066 1217* 1221* 1549 value 2 based structure array level 2 in structure "name_value_info" dcl 5-17 in procedure "rw_options" value 2 based structure array level 2 in structure "like_name_value_info" unaligned dcl 2644 in procedure "rw_options" value_$delete 000034 constant entry external dcl 2709 ref 556 value_$get 000036 constant entry external dcl 2710 ref 232 290 489 1956 2132 value_$list 000040 constant entry external dcl 2711 ref 548 757 785 810 1167 value_$set 000042 constant entry external dcl 2712 ref 1260 1295 1330 1760 1931 1980 value_index 6 based fixed bin(21,0) array level 3 dcl 11-17 ref 855 882 908 1185 value_len 7 based fixed bin(21,0) array level 3 dcl 11-17 ref 857 885 911 1183 value_list_info based structure level 1 dcl 11-17 value_list_info_ptr 000210 automatic pointer dcl 11-3 set ref 548* 554 556 556 556 556 556 556 560 560 560 560 560 560 757* 763 785* 791 810* 816 845* 846 846 851 853 855 857 868 870* 871 871 876 879 882 885 891 893* 894 894 902 905 908 911 1167* 1174 1179 1181 1183 1185 1189 1192 value_seg_ptr 000160 automatic pointer dcl 2708 in procedure "rw_options" set ref 232* 290* 489* 548* 556* 757* 785* 810* 1167* 1209* 1260* 1295* 1330* 1760* 1931* 1956* 1980* 2132* value_seg_ptr 2 based pointer level 2 in structure "report_control_info" dcl 7-7 in procedure "rw_options" ref 1209 verify builtin function dcl 2713 ref 1573 2013 2197 2208 2500 version based fixed bin(17,0) level 2 dcl 11-7 set ref 524* 746* 774* 798* 1130* vov_any_or_all 000100 automatic bit(1) dcl 1842 set ref 1914* 1947* 2040* 2125* 2288 2356 vov_character_string 000102 automatic varying char(80) dcl 1887 set ref 2008* 2009 2011* 2013 2013 2013 vov_check_procs_for_general_column_options 000102 automatic entry variable initial array dcl 1858 set ref 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1858* 1906 vov_check_procs_for_general_report_options 000102 automatic entry variable initial array dcl 1845 set ref 1845* 1845* 1845* 1845* 1845* 1845* 1845* 1845* 1845* 1904 vov_check_procs_for_specific_column_options 000102 automatic entry variable initial array dcl 1877 set ref 1877* 1877* 1877* 1877* 1877* 1877* 1908 vov_check_result_bit 000101 automatic bit(1) dcl 1843 set ref 1897* 1910 1916* 1943* 1949* 1950 1964* 1993* 2002* 2013* 2027* 2037* 2042* 2050* 2063* 2072* 2080* 2106* 2122* 2127* 2128 2138* 2139 2142* 2151* 2159* 2171* 2175* 2185* 2189* 2197* 2214* vov_complete_the_list 000127 automatic bit(1) dcl 1888 set ref 1915* 1948* 2041* 2126* 2371 vov_loop 000130 automatic fixed bin(17,0) dcl 1889 set ref 2066* 2067* 2097* 2098* vov_loop_limit 000131 automatic fixed bin(17,0) dcl 1890 set ref 2060* 2061 2066 2093* 2094 2097 vov_number_tester 000132 automatic fixed bin(17,0) dcl 1891 set ref 2212* 2212 2214 2214 vov_one_to_nine_found 000133 automatic bit(1) dcl 1892 set ref 2096* 2102* 2106 vov_option_name_parm parameter varying char dcl 1893 set ref 1824 1899* vov_option_value_parm parameter varying char dcl 1894 set ref 1824 1928 1954 1956* 1962 1972* 1974* 1974 1979* 1979 1980* 1983* 1987 1994* 2002 2002 2002 2002 2008 2011 2035 2050 2050 2060 2067 2080 2080 2080 2093 2098 2106 2120 2131 2132* 2141* 2159 2159 2169 2183 2197 2197 2208 2208 2212 2269 2272 2378* 2409 2412 2429* vov_target_character 000134 automatic char(1) packed unaligned dcl 1895 set ref 2067* 2068 2068 2098* 2099 2099 2102 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Directory internal static fixed bin(17,0) initial dcl 10-56 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Envptr_supplied_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 INDEX_FOR_COUNT internal static fixed bin(17,0) initial dcl 6-51 INDEX_FOR_DELIMITER internal static fixed bin(17,0) initial dcl 6-40 INDEX_FOR_EDITING internal static fixed bin(17,0) initial dcl 6-67 INDEX_FOR_EXCLUDE internal static fixed bin(17,0) initial dcl 6-52 INDEX_FOR_FOLDING internal static fixed bin(17,0) initial dcl 6-68 INDEX_FOR_FORMAT_DOCUMENT_CONTROLS internal static fixed bin(17,0) initial dcl 6-41 INDEX_FOR_GROUP_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 6-55 INDEX_FOR_GROUP_HEADER_VALUE internal static fixed bin(17,0) initial dcl 6-57 INDEX_FOR_HYPHENATION internal static fixed bin(17,0) initial dcl 6-42 INDEX_FOR_OUTLINE internal static fixed bin(17,0) initial dcl 6-58 INDEX_FOR_PAGE_BREAK internal static fixed bin(17,0) initial dcl 6-59 INDEX_FOR_PAGE_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 6-43 INDEX_FOR_PAGE_HEADER_VALUE internal static fixed bin(17,0) initial dcl 6-44 INDEX_FOR_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 6-45 INDEX_FOR_PAGE_WIDTH internal static fixed bin(17,0) initial dcl 6-46 INDEX_FOR_ROW_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 6-60 INDEX_FOR_ROW_HEADER_VALUE internal static fixed bin(17,0) initial dcl 6-61 INDEX_FOR_SEPARATOR internal static fixed bin(17,0) initial dcl 6-69 INDEX_FOR_SUBCOUNT internal static fixed bin(17,0) initial dcl 6-62 INDEX_FOR_SUBTOTAL internal static fixed bin(17,0) initial dcl 6-63 INDEX_FOR_TITLE_LINE internal static fixed bin(17,0) initial dcl 6-47 INDEX_FOR_TOTAL internal static fixed bin(17,0) initial dcl 6-64 INDEX_FOR_TRUNCATION internal static fixed bin(17,0) initial dcl 6-48 Interseg_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 Link internal static fixed bin(17,0) initial dcl 10-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-54 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Segment internal static fixed bin(17,0) initial dcl 10-56 TABLE_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 8-22 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 alloc_chars_len automatic fixed bin(21,0) dcl 11-5 alloc_pair_count automatic fixed bin(17,0) dcl 11-4 arg_list based structure level 1 dcl 3-14 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 row_ptrs based structure level 1 dcl 9-7 row_ptrs_ptr automatic pointer dcl 9-33 status_area_ptr automatic pointer dcl 10-47 status_branch based structure level 1 dcl 10-8 status_entry_names based char(32) array dcl 10-47 status_link based structure level 1 dcl 10-38 status_pathname based char dcl 10-47 status_ptr automatic pointer dcl 10-47 sys_info$max_seg_size external static fixed bin(35,0) dcl 2700 table_control_info based structure level 1 dcl 9-11 table_segments_info based structure level 1 dcl 9-26 table_segments_ip automatic pointer dcl 9-34 ti_init_column_count automatic fixed bin(17,0) dcl 8-21 tsi_init_maximum_number_of_segments automatic fixed bin(21,0) dcl 9-36 value_list_info_version_1 internal static fixed bin(17,0) initial dcl 11-27 NAMES DECLARED BY EXPLICIT CONTEXT. check_all_column_names_eventually 014762 constant entry internal dcl 1912 ref 1858 check_and_keep_triggers_consistent 015013 constant entry internal dcl 1922 ref 1858 check_any_alignment_mode 015673 constant entry internal dcl 2000 ref 1877 check_any_character_string 016065 constant entry internal dcl 2025 ref 1845 1845 1858 1858 1858 1858 1877 1877 check_any_column_names_or_none 016077 constant entry internal dcl 2033 ref 1858 1858 1858 1858 1858 check_any_folding_action 016141 constant entry internal dcl 2048 ref 1877 check_any_positive_integer 016270 constant entry internal dcl 2091 ref 1877 check_any_printable_string_no_NL 016167 constant entry internal dcl 2058 ref 1845 1877 check_any_single_printable_character 016236 constant entry internal dcl 2078 ref 1845 check_any_valid_group_list 016364 constant entry internal dcl 2115 ref 1858 1858 check_identifier 003511 constant entry external dcl 108 check_name 003662 constant entry external dcl 146 check_on_or_off 016624 constant entry internal dcl 2157 ref 1845 1845 1845 check_subcount_list_or_none 016652 constant entry internal dcl 2167 ref 1858 check_subtotal_list_or_none 016711 constant entry internal dcl 2181 ref 1858 check_zero_or_any_positive_integer 016750 constant entry internal dcl 2195 ref 1845 check_zero_or_greater_than_six 017016 constant entry internal dcl 2206 ref 1845 define_new_column_options 004037 constant entry external dcl 201 delete_column_options 005165 constant entry internal dcl 503 ref 234 491 expand_short_option_name 005607 constant entry internal dcl 576 ref 178 extract_active_from_all 006031 constant entry internal dcl 652 ref 332 get 004156 constant entry external dcl 248 get_active 004451 constant entry external dcl 302 get_all 004525 constant entry external dcl 341 get_all_names_and_values 006176 constant entry internal dcl 725 ref 331 370 get_general_column_default_value 007154 constant entry internal dcl 921 ref 1249 1726 1792 get_named 004605 constant entry external dcl 379 get_named_values 007761 constant entry internal dcl 1038 ref 412 get_specific_column_default_value 007311 constant entry internal dcl 957 ref 1283 1746 get_triplet 020250 constant entry internal dcl 2433 ref 2421 housekeeping 011154 constant entry internal dcl 1198 ref 137 176 219 278 329 368 410 455 483 load_value_seg_with_column_defaults 011211 constant entry internal dcl 1229 ref 243 499 load_value_seg_with_report_defaults 011774 constant entry internal dcl 1316 ref 484 lookup_general_column_option 012210 constant entry internal dcl 1394 ref 1381 lookup_general_report_option 012245 constant entry internal dcl 1407 ref 1374 lookup_name_from_table 005737 constant entry internal dcl 619 ref 602 611 lookup_option_number 012127 constant entry internal dcl 1350 ref 186 1541 1899 lookup_specific_column_option 012303 constant entry internal dcl 1420 ref 1388 match_column_names 012341 constant entry internal dcl 1435 ref 1092 1649 normalize_option_name 012604 constant entry internal dcl 1498 ref 139 280 1080 1636 parse_triplet 020337 constant entry internal dcl 2463 ref 2422 replace_column_list_after_checking 017102 constant entry internal dcl 2225 ref 1916 1949 1964 2042 2127 2138 replace_subtotal_list_after_checking 020045 constant entry internal dcl 2385 ref 2175 2189 rw_options 003475 constant entry external dcl 19 set_all_to_system_defaults 005042 constant entry external dcl 463 set_and_check 004676 constant entry external dcl 424 set_the_values 013216 constant entry internal dcl 1607 ref 457 set_value 013463 constant entry internal dcl 1669 ref 1641 1660 valid_option_value 014334 constant entry internal dcl 1824 ref 1707 1731 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 22512 22556 21714 22522 Length 23332 21714 44 540 575 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rw_options 1186 external procedure is an external procedure. delete_column_options internal procedure shares stack frame of external procedure rw_options. expand_short_option_name internal procedure shares stack frame of external procedure rw_options. lookup_name_from_table internal procedure shares stack frame of external procedure rw_options. extract_active_from_all internal procedure shares stack frame of external procedure rw_options. get_all_names_and_values internal procedure shares stack frame of external procedure rw_options. get_general_column_default_value internal procedure shares stack frame of external procedure rw_options. get_specific_column_default_value internal procedure shares stack frame of external procedure rw_options. get_named_values internal procedure shares stack frame of external procedure rw_options. housekeeping internal procedure shares stack frame of external procedure rw_options. load_value_seg_with_column_defaults internal procedure shares stack frame of external procedure rw_options. load_value_seg_with_report_defaults internal procedure shares stack frame of external procedure rw_options. lookup_option_number 99 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 rw_options. normalize_option_name internal procedure shares stack frame of external procedure rw_options. set_the_values internal procedure shares stack frame of external procedure rw_options. set_value internal procedure shares stack frame of external procedure rw_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 228 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 228 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 226 internal procedure is assigned to an entry variable. check_zero_or_greater_than_six 226 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 293 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 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 rw_options 000100 caktc_option_value rw_options 000100 code rw_options 000100 cavgl_save_option_value rw_options 000102 column_map_ptr rw_options 000104 general_columns_names_and_values_info_ptr rw_options 000106 general_report_names_and_values_info_ptr rw_options 000110 judgement_table_ptr rw_options 000112 like_names_and_values_info_ptr rw_options 000114 lvswcd_option_identifier rw_options 000114 me rw_options 000114 long_option_name rw_options 000114 lvswcd_option_name rw_options 000114 lvswcd_option_value rw_options 000134 names_and_values_area_ptr rw_options 000136 names_and_values_bit_map_ptr rw_options 000140 names_and_values_temp_seg_ptr rw_options 000142 no_of_active_names_and_values rw_options 000142 normalized_option_name rw_options 000143 no_of_names_and_values_in_bit_map rw_options 000144 number_of_defined_columns rw_options 000145 option_identifier rw_options 000145 option_table_index rw_options 000145 option_name rw_options 000146 option_type rw_options 000147 rclac_spare_option_value rw_options 000147 returned_option_value rw_options 000147 option_value rw_options 000147 rslac_original_option_value rw_options 000147 rslac_result_option_value rw_options 000147 rslac_triplet rw_options 000150 sci_ptr rw_options 000152 specific_columns_names_and_values_info_ptr rw_options 000154 star_name_info_ptr rw_options 000156 system_default rw_options 000156 sv_option_value rw_options 000156 sv_spare_option_identifier rw_options 000156 sv_spare_option_value rw_options 000157 valid_select rw_options 000160 value_seg_ptr rw_options 000162 arg_descriptor_ptr rw_options 000164 extended_arg_type rw_options 000166 names_and_values_info_ptr rw_options 000170 names_and_values_ptr rw_options 000172 no_of_names_and_values rw_options 000173 size_of_names_and_values rw_options 000174 no_of_options_in_name_table rw_options 000176 option_name_table_ptr rw_options 000200 report_cip rw_options 000202 table_ip rw_options 000204 table_control_ip rw_options 000206 match_info_ptr rw_options 000210 value_list_info_ptr rw_options 000212 alloc_name_count rw_options 000213 alloc_max_name_len rw_options 000434 dco_inner_loop delete_column_options 000435 dco_loop delete_column_options 000450 eson_table_index expand_short_option_name 000460 lnft_loop1 lookup_name_from_table 000461 lnft_loop2 lookup_name_from_table 000462 lnft_loop3 lookup_name_from_table 000472 eafa_inner_loop extract_active_from_all 000473 eafa_loop extract_active_from_all 000506 ganav_inner_loop get_all_names_and_values 000507 ganav_loop get_all_names_and_values 000510 ganav_loop_limit get_all_names_and_values 000511 ganav_no_of_chars_already_done get_all_names_and_values 000526 ggcdv_loop get_general_column_default_value 000536 gscdv_column_option_number get_specific_column_default_value 000537 gscdv_column_type get_specific_column_default_value 000540 gscdv_hit get_specific_column_default_value 000541 gscdv_loop get_specific_column_default_value 000552 gnv_current_star_name get_named_values 000553 gnv_inner_loop get_named_values 000554 gnv_loop get_named_values 000555 gnv_match_info_index get_named_values 000556 gnv_number_of_matches get_named_values 000600 lvswcd_inner_loop load_value_seg_with_column_defaults 000601 lvswcd_loop load_value_seg_with_column_defaults 000614 lvswrd_loop load_value_seg_with_report_defaults 000626 mcn_loop match_column_names 000627 mcn_number_of_matches match_column_names 000640 non_column_option_number normalize_option_name 000641 non_loop normalize_option_name 000652 stv_loop set_the_values 000653 stv_number_of_matches set_the_values 000654 stv_value_has_been_tested set_the_values 000664 sv_force_group_triggers_consistency set_value 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_ match_star_name_ ssu_$abort_line value_$delete value_$get value_$list value_$set THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$nomatch error_table_$nostars error_table_$oldnamerr rw_error_$bad_option_identifier rw_error_$bad_option_name rw_error_$bad_option_value rw_error_$no_columns_defined LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2616 003012 2617 003022 2646 003032 2648 003042 2649 003052 2650 003062 2660 003072 2666 003102 2667 003112 2670 003122 2672 003132 2673 003142 2674 003152 2675 003162 2676 003172 2697 003202 2698 003212 2699 003222 2 36 003232 5 29 003234 5 30 003236 5 41 003237 7 61 003240 139 003241 178 003252 186 003260 232 003263 280 003266 290 003277 292 003305 457 003310 489 003321 1080 003324 1249 003327 1251 003335 1260 003340 1262 003351 1283 003357 1286 003370 1295 003373 1298 003404 1330 003412 1636 003415 1707 003420 1726 003423 1731 003426 1746 003431 1754 003437 1760 003442 1764 003453 1792 003461 1931 003464 1980 003467 19 003474 106 003503 108 003504 130 003542 131 003545 132 003551 133 003563 134 003575 135 003577 137 003600 139 003601 141 003637 142 003641 144 003654 146 003655 169 003706 170 003711 171 003715 172 003727 173 003731 174 003732 176 003733 178 003734 179 003756 181 003760 182 003761 184 003762 186 003775 188 004014 192 004022 199 004033 201 004034 219 004045 230 004046 232 004050 234 004102 236 004106 243 004144 246 004147 248 004150 268 004213 270 004216 271 004222 272 004234 274 004246 275 004250 276 004256 278 004257 280 004260 283 004316 285 004320 286 004321 290 004322 292 004355 297 004410 298 004423 300 004442 302 004443 321 004472 322 004475 323 004501 324 004503 325 004504 326 004505 327 004506 329 004507 331 004510 332 004511 334 004512 335 004514 336 004516 337 004520 339 004522 341 004523 360 004546 361 004551 362 004555 363 004557 364 004560 365 004561 366 004562 368 004563 370 004564 372 004565 373 004567 374 004571 375 004573 377 004575 379 004576 400 004626 401 004631 402 004635 403 004640 404 004642 405 004644 406 004645 407 004646 408 004647 410 004650 412 004651 413 004653 416 004657 417 004661 418 004663 419 004665 422 004667 424 004670 447 004726 448 004731 449 004735 450 004747 451 004761 452 004773 453 004776 455 004777 457 005000 459 005033 461 005035 463 005036 479 005053 480 005056 481 005062 483 005063 484 005064 486 005065 489 005067 491 005121 493 005125 499 005163 501 005164 503 005165 517 005166 519 005170 522 005176 524 005214 526 005216 528 005225 529 005240 530 005246 533 005263 535 005265 537 005267 539 005277 540 005312 541 005320 544 005361 546 005363 548 005365 550 005406 554 005442 556 005453 560 005524 567 005601 569 005604 572 005606 576 005607 599 005625 600 005630 602 005631 604 005652 606 005654 608 005671 611 005672 613 005714 615 005732 617 005736 619 005737 631 005755 632 005757 634 005762 636 005765 637 005770 640 006015 642 006022 644 006025 646 006026 652 006031 667 006032 668 006034 670 006035 672 006044 674 006050 676 006057 679 006064 680 006070 684 006072 686 006074 688 006076 689 006100 690 006107 693 006114 694 006121 697 006123 698 006124 701 006126 704 006134 706 006136 707 006145 709 006152 711 006164 713 006166 715 006170 717 006172 719 006173 721 006175 725 006176 743 006177 744 006201 745 006203 746 006221 748 006223 750 006233 751 006246 752 006254 755 006271 757 006273 759 006314 763 006342 767 006344 770 006346 771 006350 772 006352 774 006370 776 006372 778 006401 779 006414 780 006422 783 006437 785 006441 787 006462 791 006510 793 006512 794 006514 796 006516 798 006534 800 006536 802 006545 803 006560 804 006566 808 006627 810 006632 812 006653 816 006701 822 006703 827 006715 829 006720 832 006727 837 006741 839 006744 845 006752 846 006754 849 006765 851 006775 853 007006 855 007010 857 007012 860 007014 862 007016 868 007021 869 007024 870 007026 871 007030 874 007042 876 007051 879 007063 882 007065 885 007070 887 007072 889 007073 891 007075 893 007100 894 007102 897 007114 900 007120 902 007127 905 007141 908 007143 911 007146 913 007150 915 007151 917 007153 921 007154 940 007172 943 007205 944 007217 946 007223 947 007231 949 007273 950 007276 951 007277 953 007310 957 007311 985 007334 987 007335 988 007347 991 007363 992 007365 994 007367 996 007371 998 007373 999 007405 1002 007406 1005 007421 1007 007426 1008 007433 1011 007457 1019 007565 1020 007600 1022 007616 1025 007647 1026 007650 1030 007700 1034 007747 1036 007760 1038 007761 1063 007763 1065 007764 1066 007766 1068 007773 1070 007775 1071 007777 1073 010001 1074 010017 1076 010021 1078 010030 1080 010037 1085 010102 1089 010142 1090 010147 1092 010152 1095 010213 1100 010253 1103 010261 1104 010266 1107 010306 1110 010357 1112 010361 1113 010362 1117 010421 1122 010465 1124 010501 1126 010503 1129 010506 1130 010524 1132 010526 1133 010530 1134 010531 1136 010541 1137 010554 1139 010562 1141 010570 1144 010620 1147 010662 1148 010664 1150 010665 1153 010710 1154 010717 1156 010724 1159 011010 1161 011012 1162 011014 1165 011015 1167 011017 1169 011040 1174 011066 1175 011071 1178 011077 1179 011107 1181 011117 1183 011122 1185 011124 1187 011126 1189 011130 1190 011133 1192 011142 1194 011153 1198 011154 1207 011155 1208 011161 1209 011163 1210 011165 1211 011167 1213 011171 1214 011173 1215 011175 1217 011201 1218 011202 1219 011203 1221 011204 1222 011206 1225 011210 1229 011211 1242 011212 1244 011221 1245 011235 1246 011247 1249 011255 1251 011271 1260 011331 1262 011371 1267 011431 1269 011433 1271 011443 1273 011457 1275 011467 1277 011504 1279 011542 1280 011560 1283 011566 1286 011607 1295 011647 1298 011707 1303 011747 1305 011751 1307 011753 1309 011755 1312 011773 1316 011774 1328 011775 1330 012005 1334 012044 1340 012103 1342 012105 1344 012107 1346 012125 1350 012126 1372 012142 1374 012144 1375 012152 1377 012155 1378 012157 1381 012160 1382 012166 1384 012171 1385 012173 1388 012174 1389 012202 1392 012207 1394 012210 1398 012212 1399 012221 1401 012240 1403 012242 1407 012245 1411 012247 1412 012257 1414 012276 1416 012300 1420 012303 1424 012305 1425 012315 1427 012334 1429 012336 1435 012341 1462 012352 1463 012411 1464 012412 1466 012413 1472 012466 1473 012467 1474 012477 1477 012546 1479 012552 1480 012566 1481 012567 1482 012570 1485 012574 1487 012576 1489 012600 1490 012602 1494 012603 1498 012604 1538 012627 1539 012632 1541 012633 1543 012653 1545 012656 1546 012661 1549 012662 1553 012673 1554 012676 1558 012677 1561 012703 1562 012715 1565 012716 1567 012732 1568 012735 1570 012773 1573 012775 1577 013026 1579 013037 1582 013051 1584 013114 1587 013116 1588 013122 1592 013123 1593 013133 1595 013147 1597 013205 1599 013207 1601 013211 1603 013215 1607 013216 1636 013241 1639 013277 1641 013302 1642 013310 1644 013311 1647 013315 1649 013324 1651 013362 1654 013366 1656 013375 1658 013402 1660 013445 1661 013454 1665 013460 1667 013462 1669 013463 1702 013465 1704 013466 1706 013472 1707 013504 1709 013530 1710 013534 1713 013535 1715 013536 1717 013541 1719 013556 1721 013563 1722 013564 1724 013566 1726 013603 1730 013626 1731 013627 1735 013661 1737 013666 1739 013667 1741 013704 1744 013712 1746 013737 1754 013760 1760 014020 1764 014060 1769 014120 1772 014122 1776 014132 1778 014134 1782 014154 1784 014160 1786 014161 1787 014162 1792 014176 1794 014214 1799 014255 1800 014257 1803 014275 1808 014302 1813 014325 1818 014332 1824 014333 1845 014354 1858 014447 1877 014605 1897 014660 1899 014661 1901 014703 1904 014714 1906 014730 1908 014743 1910 014753 1912 014761 1914 014767 1915 014771 1916 014773 1918 015011 1922 015012 1928 015020 1930 015030 1931 015034 1935 015077 1940 015140 1942 015147 1943 015155 1944 015160 1947 015161 1948 015162 1949 015163 1950 015201 1953 015202 1954 015205 1955 015222 1956 015226 1958 015267 1962 015324 1964 015334 1965 015352 1966 015363 1971 015376 1972 015400 1973 015404 1974 015415 1977 015473 1978 015474 1979 015476 1980 015517 1983 015562 1987 015626 1991 015644 1993 015652 1994 015655 1996 015671 2000 015672 2002 015700 2008 015732 2009 015747 2011 015754 2013 016027 2021 016063 2025 016064 2027 016072 2029 016075 2033 016076 2035 016104 2037 016114 2038 016116 2040 016117 2041 016120 2042 016121 2044 016137 2048 016140 2050 016146 2054 016165 2058 016166 2060 016174 2061 016201 2063 016202 2064 016204 2066 016205 2067 016214 2068 016222 2071 016230 2072 016232 2074 016234 2078 016235 2080 016243 2087 016266 2091 016267 2093 016275 2094 016302 2096 016303 2097 016304 2098 016314 2099 016322 2102 016330 2104 016334 2106 016336 2111 016362 2115 016363 2120 016371 2122 016401 2123 016403 2125 016404 2126 016405 2127 016406 2128 016424 2130 016425 2131 016430 2132 016445 2134 016501 2138 016536 2139 016555 2141 016556 2142 016572 2144 016574 2145 016603 2150 016615 2151 016617 2153 016622 2157 016623 2159 016631 2163 016650 2167 016651 2169 016657 2171 016667 2172 016671 2175 016672 2177 016707 2181 016710 2183 016716 2185 016726 2186 016730 2189 016731 2191 016746 2195 016747 2197 016755 2202 017014 2206 017015 2208 017023 2212 017057 2214 017071 2221 017100 2225 017101 2268 017107 2269 017112 2272 017127 2274 017211 2275 017214 2277 017216 2279 017226 2281 017240 2283 017241 2285 017253 2288 017277 2292 017316 2295 017320 2297 017324 2300 017332 2302 017335 2305 017345 2308 017377 2311 017410 2314 017427 2316 017430 2317 017431 2320 017434 2321 017445 2325 017465 2327 017467 2329 017477 2333 017506 2336 017525 2339 017527 2341 017531 2342 017533 2343 017536 2344 017540 2347 017552 2349 017553 2350 017554 2354 017572 2356 017574 2358 017611 2360 017625 2362 017627 2364 017632 2365 017641 2369 017711 2371 017714 2373 017727 2376 020001 2378 020004 2379 020034 2381 020037 2385 020044 2409 020052 2412 020070 2414 020152 2416 020155 2417 020156 2418 020160 2420 020162 2421 020164 2422 020166 2424 020201 2426 020202 2429 020212 2431 020242 2433 020250 2438 020252 2439 020253 2442 020275 2444 020306 2447 020310 2450 020315 2451 020317 2452 020322 2455 020334 2456 020335 2459 020336 2463 020337 2482 020341 2483 020343 2484 020347 2486 020351 2487 020355 2489 020377 2492 020404 2495 020410 2497 020420 2498 020422 2500 020431 2502 020444 2504 020463 2505 020473 2509 020503 2512 020544 2514 020553 2515 020555 2517 020556 2518 020557 2519 020571 2522 020605 2523 020607 2525 020611 2526 020613 2529 020616 2531 020624 2532 020626 2535 020665 2536 020666 2538 020670 2544 020700 2547 020742 2548 020743 2550 020762 2553 021024 2556 021067 2559 021071 2561 021072 ----------------------------------------------------------- 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