COMPILATION LISTING OF SEGMENT linus_save_format_options Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 0958.5 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: off */ 7 8 /* This is the main level procedure called by ssu_ to implement the 9* linus save_format_options request. Description and usage follows. 10* 11* Description: 12* 13* This request does EITHER 1, 2 or 3 listed below. 14* 15* 1) Saves the ACTIVE option names and values. 16* 17* 2) Saves ALL the option names and values. 18* 19* 3) Saves USER SPECIFIED option names and values. 20* 21* Usage (1): "svfo path {-query}" or 22* "svfo path {-query} -active" 23* 24* Only the active option names and values are saved to the 25* file specifed by path. The query is optionally saved 26* also. 27* 28* Usage (2): "svfo path {-query} -all" 29* 30* All of the formatting option names and values are saved to 31* the file specifed by path. The query is optionally saved 32* also. 33* 34* Usage (3): "svfo path {-query} -format_option_args" 35* 36* Where -format_option_args are the names of the formatting options whose 37* values are to be saved to the file specifed by path. The query 38* is optionally saved also. 39* 40* The formatting option names and values are saved to the file as an 41* exec_com. The counterpart to this request, restore_format_options, does a 42* subsystem exec_com on this file to accomplish the restoring. 43* 44* The old control argument of -selection_expression | -se is still accepted 45* but not documented. 46* 47* Both parameters are passed to this request by ssu_. 48* 49* 50* Known Bugs: 51* 52* Other Problems: 53* 54* History: 55* 56* Written - Al Dupuis - August 1983 57* 58**/ 59 60 linus_save_format_options: proc (sci_ptr_parm, lcb_ptr_parm); 61 62 dcl sci_ptr_parm ptr parm; /* ptr to the subsystem control info structure */ 63 dcl lcb_ptr_parm ptr parm; /* ptr to the linus control block info structure */ 64 65 /* 66* Mainline Processing Overview. 67* 68* (1) Determine requested usage. 69* 70* (2) Write the exec_com header and optionally the selection 71* expression. 72* 73* (3) Get the option names and values. Either all of them, the 74* active ones, or user provided ones. 75* 76* (4) Write the option names and values. 77* 78* (5) Write the exec_com footer. 79**/ 80 81 82 cleanup_signalled = OFF; 83 84 on cleanup begin; 85 cleanup_signalled = ON; 86 call terminate; 87 end; 88 89 call initialize; 90 call write_exec_com_header; 91 92 if usage_1 93 then call linus_options$get_active (lcb_ptr, 94 names_and_values_info_ptr, no_of_names_and_values, 95 names_and_values_ptr, size_of_names_and_values, code); 96 else if usage_2 97 then call linus_options$get_all (lcb_ptr, 98 names_and_values_info_ptr, no_of_names_and_values, 99 names_and_values_ptr, size_of_names_and_values, code); 100 else do; 101 call get_user_specified_option_names; 102 call linus_options$get_named (lcb_ptr, 103 option_name_table_ptr, no_of_options_in_name_table, 104 names_and_values_info_ptr, no_of_names_and_values, 105 names_and_values_ptr, size_of_names_and_values, code); 106 end; 107 108 if code ^= 0 109 then call ssu_$abort_line (sci_ptr, code); 110 111 call write_the_names_and_values; 112 call write_exec_com_footer; 113 call terminate; 114 115 return; 116 117 get_user_specified_option_names: proc; 118 119 /* 120* Load up the table with format option names and identifiers. The 121* variable number_of_format_option_names has been set back in the 122* initialize procedure when the first pass through the control args 123* was made. If the format option names and identifiers were specified 124* correctly then the table will be the exact size needed. If they 125* were incorrectly specified it will be diagnosed here before the 126* table can overflow. 127**/ 128 129 report_cip = lcb.report_control_info_ptr; 130 names_and_values_area_ptr = report_control_info.name_value_area_ptr; 131 no_of_options_in_name_table = number_of_format_option_names; 132 133 allocate option_name_table in (names_and_values_area) 134 set (option_name_table_ptr); 135 136 current_arg = 2; 137 call get_next_format_option_arg (code); 138 if code = NO_MORE_FORMAT_OPTION_ARGS 139 then call ssu_$abort_line (sci_ptr, 0, 140 "Logic error while processing the format option arguments."); 141 142 still_processing_args = ON; 143 loop = 1; 144 145 do while (still_processing_args); 146 147 option_name = arg; 148 call linus_options$check_name (lcb_ptr, option_name, 149 long_option_name, identifier_needed, code); 150 if code ^= 0 151 then if code = linus_error_$bad_option_name 152 then call ssu_$abort_line (sci_ptr, code, 153 "^/^a is not a valid option name.", option_name); 154 else if code = linus_error_$no_lila_expr_processed 155 then call ssu_$abort_line (sci_ptr, code, 156 "^/There must be columns defined before the value of ^a can be saved.", 157 long_option_name); 158 else call ssu_$abort_line (sci_ptr, code); 159 else; 160 option_name_table.the_name (loop) = long_option_name; 161 162 if identifier_needed 163 then do; 164 call get_next_format_option_arg (code); 165 if code = NO_MORE_FORMAT_OPTION_ARGS 166 then call ssu_$abort_line (sci_ptr, 0, 167 "The option name ^a was not followed by an identifier.", 168 option_name); 169 else option_name_table.the_identifier (loop) = arg; 170 call linus_options$check_identifier (lcb_ptr, 171 option_name_table.the_name (loop), 172 option_name_table.the_identifier (loop), 173 normalized_option_name, code); 174 if code ^= 0 175 then if code = linus_error_$bad_option_identifier 176 then call ssu_$abort_line (sci_ptr, code, 177 "^/^a is not a valid column identifier for ^a.", 178 option_name_table.the_identifier (loop), 179 option_name_table.the_name (loop)); 180 else if code ^= error_table_$nostars 181 then call ssu_$abort_line (sci_ptr, code); 182 else; 183 else; 184 end; 185 else option_name_table.the_identifier (loop) = ""; 186 187 loop = loop + 1; 188 call get_next_format_option_arg (code); 189 if code = NO_MORE_FORMAT_OPTION_ARGS 190 then still_processing_args = OFF; 191 192 if still_processing_args 193 then if loop 194 > no_of_options_in_name_table 195 then call ssu_$abort_line (sci_ptr, 0, 196 "A format option name or column identifier was incorrectly specified."); 197 else; 198 else; 199 200 end; 201 202 return; 203 204 get_next_format_option_arg: proc (code_parm); 205 206 /* 207* Skip over the control args and get to the format option arg. Set 208* code if there isn't any left. 209**/ 210 211 dcl code_parm fixed bin (35) parm; 212 213 code_parm = 0; 214 215 do while (this_is_a_control_arg (current_arg)); 216 current_arg = current_arg + 1; 217 end; 218 219 if current_arg > no_of_args_supplied 220 then do; 221 code_parm = NO_MORE_FORMAT_OPTION_ARGS; 222 return; 223 end; 224 225 call ssu_$arg_ptr (sci_ptr, current_arg, arg_ptr, arg_length); 226 current_arg = current_arg + 1; 227 228 return; 229 230 end get_next_format_option_arg; 231 232 end get_user_specified_option_names; 233 234 initialize: proc; 235 236 sci_ptr = sci_ptr_parm; 237 lcb_ptr = lcb_ptr_parm; 238 239 usage_1 = OFF; 240 usage_2 = OFF; 241 usage_3 = OFF; 242 243 selection_expression_flag = OFF; 244 file_needs_terminating = OFF; 245 unspec (this_is_a_control_arg) = OFF; 246 number_of_control_args_found = 0; 247 248 /* Make sure the format options are up to date. */ 249 250 call linus_options$initialize (lcb_ptr, code); 251 if code ^= 0 252 then call ssu_$abort_line (sci_ptr, code); 253 254 /* 255* 256* If no args are given then it is an error. The first arg must be 257* pathname. If no additional args are given then usage (1) has been 258* requested. If "-active" is given, then usage (1) has been 259* requested by explicitely stating the default. If -active and -all 260* are given the last one supplied is used. -active and -all cannot 261* be used with the format_option_args. If -all is used correctly 262* then usage (2) has been requested. If -active and -all are not 263* found, then usage (3) is assumed, and invalid option names are 264* reported as they are encountered. 265* 266**/ 267 268 call ssu_$arg_count (sci_ptr, no_of_args_supplied); 269 270 if no_of_args_supplied = 0 271 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 272 "^/Usage: save_format_options path {-format_options_args} {-control_args}."); 273 else; 274 275 /* Get the mandatory, positional pathname argument. */ 276 277 call ssu_$arg_ptr (sci_ptr, 1, arg_ptr, arg_length); 278 pathname = arg; 279 280 /* 281* Determine which usage was intended and count the number of 282* user supplied format option names so the table 283* to hold them can be allocated. 284**/ 285 286 number_of_format_option_names = 0; 287 if no_of_args_supplied = 1 288 then usage_1 = ON; 289 else do loop = 2 to no_of_args_supplied; 290 call ssu_$arg_ptr (sci_ptr, loop, arg_ptr, arg_length); 291 if arg = "-all" | arg = "-a" 292 | arg = "-active" | arg = "-act" 293 | arg = "-selection_expression" | arg = "-se" | arg = "-query" 294 then do; 295 this_is_a_control_arg (loop) = ON; 296 number_of_control_args_found 297 = number_of_control_args_found + 1; 298 if arg = "-all" | arg = "-a" 299 then do; 300 usage_2 = ON; 301 usage_1 = OFF; 302 end; 303 else if arg = "-active" | arg = "-act" 304 then do; 305 usage_1 = ON; 306 usage_2 = OFF; 307 end; 308 else selection_expression_flag = ON; 309 end; 310 else do; 311 usage_3 = ON; 312 if substr (arg, 1, 1) = "-" 313 then number_of_format_option_names 314 = number_of_format_option_names + 1; 315 else; 316 end; 317 end; 318 319 if ^usage_1 & ^usage_2 & ^usage_3 320 then usage_1 = ON; 321 322 /* Check for inconsistent combinations of control args. */ 323 324 if (usage_3 & (usage_1 | usage_2)) 325 | ((usage_1 | usage_2) & (number_of_format_option_names > 0)) 326 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 327 "^/When ^[-all^;-active^] is used no format option args can be specified.", 328 fixed (usage_1 || usage_2)); 329 else if usage_3 & number_of_format_option_names ^> 0 330 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 331 "^/At least one format option name must be specified."); 332 else; 333 334 /* Make sure a selection expression is available if the user 335* asked for it to be saved with the file. */ 336 337 if selection_expression_flag 338 then do; 339 call linus_table$info (lcb_ptr, table_ip, code); 340 if code = linus_error_$no_lila_expr_processed 341 then call ssu_$abort_line (sci_ptr, linus_error_$no_lila_expr_processed, 342 "^/The format was not saved."); 343 end; 344 345 /* Ready the file, truncate it if it exists. */ 346 347 call expand_pathname_$add_suffix (pathname, "fo.lec", 348 dir_name, entry_name, code); 349 if code ^= 0 350 then call ssu_$abort_line (sci_ptr, code, 351 "^/While trying to expand ^a.", pathname); 352 353 switch_name = unique_chars_ ("0"b) || ".linus_svfo"; 354 355 call iox_$attach_name (switch_name, iocb_ptr, 356 "vfile_ " || rtrim (dir_name) || ">" || entry_name, null (), code); 357 if code ^= 0 358 then call ssu_$abort_line (sci_ptr, code, 359 "^/While trying to attach ^a.", pathname); 360 361 file_needs_terminating = ON; 362 363 call iox_$open (iocb_ptr, Stream_output, "0"b, code); 364 if code ^= 0 365 then call ssu_$abort_line (sci_ptr, code, 366 "^/While trying to open ^a.", pathname); 367 368 return; 369 370 end initialize; 371 372 terminate: proc; 373 374 if file_needs_terminating 375 then do; 376 call iox_$close (iocb_ptr, code); 377 call iox_$detach_iocb (iocb_ptr, code); 378 call iox_$destroy_iocb (iocb_ptr, code); 379 if cleanup_signalled 380 then call delete_$path (dir_name, entry_name, "100111"b, 381 ME, code); 382 end; 383 384 return; 385 386 end terminate; 387 388 write_exec_com_footer: proc; 389 390 call ioa_$ioa_switch (iocb_ptr, "&detach^/&quit"); 391 392 return; 393 394 end write_exec_com_footer; 395 396 write_exec_com_header: proc; 397 398 /* First the necessary exec_com statements. */ 399 400 call ioa_$ioa_switch (iocb_ptr, 401 "&version 2^/&trace off^/&attach"); 402 403 /* Then the selection expression if requested. */ 404 405 if ^selection_expression_flag 406 then return; 407 408 call linus_query_mgr$get (lcb_ptr, query_segment_ptr, 409 query_segment_length, code); 410 if code ^= 0 411 then call ssu_$abort_line (sci_ptr, code); 412 413 call ioa_$ioa_switch (iocb_ptr, "input_query -force -brief -terminal_input"); 414 query_segment_current_position = 1; 415 still_processing_lila_lines = ON; 416 417 do while (still_processing_lila_lines); 418 query_segment_newline_index = index (substr (query_segment, 419 query_segment_current_position), NEWLINE); 420 if query_segment_newline_index = 0 421 then call ssu_$abort_line (sci_ptr, 0, 422 "Logic error while trying to save the selection expression."); 423 ampersand_position = index (substr (query_segment, 424 query_segment_current_position, query_segment_newline_index), AMPERSAND); 425 if ampersand_position = 0 426 then call ioa_$ioa_switch (iocb_ptr, "^a", substr (query_segment, 427 query_segment_current_position, query_segment_newline_index - 1)); 428 else do; 429 line_buffer = substr (query_segment, query_segment_current_position, query_segment_newline_index - 1); 430 starting_position = 1; 431 still_quoting_ampersands = ON; 432 do while (still_quoting_ampersands); 433 line_buffer = substr (line_buffer, 434 1, ampersand_position - 1) 435 || AMPERSAND || substr (line_buffer, ampersand_position); 436 starting_position = ampersand_position + 2; 437 if starting_position ^> length (line_buffer) 438 then do; 439 ampersand_position = index (substr 440 (line_buffer, starting_position), AMPERSAND); 441 if ampersand_position = 0 442 then still_quoting_ampersands = OFF; 443 else ampersand_position 444 = ampersand_position + starting_position - 1; 445 end; 446 else still_quoting_ampersands = OFF; 447 end; 448 call ioa_$ioa_switch (iocb_ptr, "^a", line_buffer); 449 end; 450 query_segment_current_position = query_segment_current_position 451 + query_segment_newline_index; 452 if query_segment_current_position > query_segment_length 453 then still_processing_lila_lines = OFF; 454 else; 455 end; 456 457 call ioa_$ioa_switch (iocb_ptr, ".^/translate_query"); 458 459 return; 460 461 end write_exec_com_header; 462 463 write_the_names_and_values: proc; 464 465 /* 466* If the linus_options$get_active entry was called there may not be 467* any format option values to save. 468**/ 469 470 if no_of_names_and_values = 0 471 then call ssu_$abort_line (sci_ptr, 0, "^/^a^/^a", 472 "All of the formatting options are set to their default values.", 473 "There are no column options defined. The format was not saved."); 474 475 /* 476* 477* Loop through the names and values writing them out to the exec_com 478* file as linus set_format_options requests. The values must be special 479* cased in the following way. Version 2 exec_com strips leading and 480* trailing whitespace, so it must be protected. Version 2 ec also barfs 481* if the value contains an ampersand, so they must be protected. The 482* ssu_ request processor does quote stripping, active function 483* evaluation, etc. so all of these things must be protected. The 484* set_format_options request has a number of control args it takes, so 485* if the value is the same as any of these control args it must be 486* protected. If the value is a zero length character string then it 487* must be translated to the request language zero length string "". 488* And finally, single line values do not have a trailing 489* newline character, so if it is going to be protected for any of the 490* previous reasons, it must have a newline added. 491* 492**/ 493 494 do loop = 1 to no_of_names_and_values; 495 496 normalized_option_name = substr (names_and_values, 497 name_value_info.name.index (loop), 498 name_value_info.name.length (loop)); 499 500 option_value = substr (names_and_values, 501 name_value_info.value.index (loop), 502 name_value_info.value.length (loop)); 503 504 special_characters_in_option_value = OFF; 505 newline_needed = OFF; 506 requoting_needed = OFF; 507 508 option_value_length = length (option_value); 509 if option_value_length = 0 510 then do; 511 option_value = """"""; 512 option_value_length = 2; 513 end; 514 else do; 515 if substr (option_value, option_value_length) ^= NEWLINE 516 then newline_needed = ON; 517 else; 518 if search (option_value, SPECIAL_CHARACTERS) ^= 0 519 then special_characters_in_option_value = ON; 520 else; 521 if substr (option_value, 1, 1) = "-" 522 then if option_value = "-reset" | option_value = "-rs" 523 | option_value = "-no_reset" | option_value = "-nrs" 524 | option_value = "-long" | option_value = "-lg" 525 | option_value = "-brief" | option_value = "-bf" 526 | option_value = "-prompt" | option_value = "-default" 527 then special_characters_in_option_value = ON; 528 else; 529 else; 530 if search (option_value, AMPERSAND_BLANK_OR_TAB) ^= 0 531 then requoting_needed = ON; 532 else; 533 end; 534 535 /* 536* 537* Do special exec_com quoting first. Handle the easiest case first, 538* when it is just a one line value that needs a newline character after 539* exec_com quotes are added. Values which are several lines long 540* must be quoted separately, as quoted strings that contain a 541* newline are not legal exec_com statements. 542* 543**/ 544 545 if requoting_needed 546 then do; 547 if newline_needed 548 then option_value = AMPERSAND || requote_string_ 549 (substr (option_value, 1)) || NEWLINE; 550 else do; 551 spare_option_value = ""; 552 still_creating_lines = ON; 553 starting_position = 1; 554 do while (still_creating_lines); 555 newline_position = index (substr (option_value, 556 starting_position), NEWLINE); 557 if newline_position ^= 0 558 then do; 559 line_buffer = substr (option_value, 560 starting_position, newline_position - 1); 561 spare_option_value = spare_option_value || AMPERSAND 562 || requote_string_ (substr (line_buffer, 1)) || NEWLINE; 563 starting_position = starting_position + newline_position; 564 if starting_position > option_value_length 565 then still_creating_lines = OFF; 566 end; 567 else do; 568 spare_option_value = spare_option_value || AMPERSAND 569 || requote_string_ (substr (option_value, 570 starting_position)) || NEWLINE; 571 still_creating_lines = OFF; 572 end; 573 end; 574 option_value = spare_option_value; 575 end; 576 end; 577 else if newline_needed & special_characters_in_option_value 578 then option_value = option_value || NEWLINE; 579 else; 580 581 if special_characters_in_option_value 582 then call ioa_$ioa_switch (iocb_ptr, "^a^x^a^x^a^/^a^a", 583 "set_format_options", normalized_option_name, 584 "-prompt -brief", option_value, "."); 585 else call ioa_$ioa_switch (iocb_ptr, "^a^x^a^x^a", 586 "set_format_options", normalized_option_name, option_value); 587 588 end; 589 590 return; 591 592 end write_the_names_and_values; 593 594 dcl AMPERSAND char (1) static int options (constant) init ("&"); 595 dcl AMPERSAND_BLANK_OR_TAB char (3) static int options (constant) init ("& "); 596 dcl OFF bit (1) aligned static int options (constant) init ("0"b); 597 dcl ON bit (1) aligned static int options (constant) init ("1"b); 598 dcl ME char (19) static int options (constant) init ("save_format_options"); 599 dcl NEWLINE char (1) static int options (constant) init (" 600 "); 601 dcl NO_MORE_FORMAT_OPTION_ARGS fixed bin (35) static int options (constant) init (1); 602 /* SPECIAL_CHARACTERS are blank, tab, left and right bracket, left and right paraen, ampersand, quote, and newline */ 603 dcl SPECIAL_CHARACTERS char (9) static int options (constant) init ( 604 " []()&"" 605 "); 606 607 dcl addr builtin; 608 dcl ampersand_position fixed bin; 609 dcl arg char (arg_length) based (arg_ptr); 610 dcl arg_length fixed bin (21); 611 dcl arg_ptr ptr; 612 613 dcl cleanup condition; 614 dcl cleanup_signalled bit (1) aligned; 615 dcl code fixed bin (35); 616 dcl current_arg fixed bin; 617 618 dcl delete_$path entry (char(*), char(*), bit(6), char(*), fixed bin(35)); 619 dcl dir_name char (168); 620 621 dcl entry_name char (32); 622 dcl error_table_$inconsistent fixed bin(35) ext static; 623 dcl error_table_$noarg fixed bin(35) ext static; 624 dcl error_table_$nostars fixed bin(35) ext static; 625 dcl expand_pathname_$add_suffix entry (char(*), char(*), char(*), char(*), fixed bin(35)); 626 627 dcl file_needs_terminating bit (1) aligned; 628 dcl fixed builtin; 629 630 dcl identifier_needed bit (1) aligned; 631 dcl index builtin; 632 dcl ioa_$ioa_switch entry() options(variable); 633 dcl iocb_ptr ptr; 634 dcl iox_$attach_name entry (char(*), ptr, char(*), ptr, fixed bin(35)); 635 dcl iox_$close entry (ptr, fixed bin(35)); 636 dcl iox_$destroy_iocb entry (ptr, fixed bin(35)); 637 dcl iox_$detach_iocb entry (ptr, fixed bin(35)); 638 dcl iox_$open entry (ptr, fixed bin, bit(1) aligned, fixed bin(35)); 639 640 dcl length builtin; 641 dcl line_buffer char (4096) varying; 642 dcl linus_error_$bad_option_identifier fixed bin(35) ext static; 643 dcl linus_error_$bad_option_name fixed bin(35) ext static; 644 dcl linus_error_$no_lila_expr_processed fixed bin(35) ext static; 645 dcl linus_options$check_identifier entry (ptr, char(*) var, char(*) var, char(*) var, fixed bin(35)); 646 dcl linus_options$check_name entry (ptr, char(*) var, char(*) var, bit(1) aligned, fixed bin(35)); 647 dcl linus_options$get_active entry (ptr, ptr, fixed bin(21), ptr, fixed bin(21), fixed bin(35)); 648 dcl linus_options$get_all entry (ptr, ptr, fixed bin(21), ptr, fixed bin(21), fixed bin(35)); 649 dcl linus_options$get_named entry (ptr, ptr, fixed bin(21), ptr, fixed bin(21), ptr, fixed bin(21), fixed bin(35)); 650 dcl linus_options$initialize entry (ptr, fixed bin(35)); 651 dcl linus_query_mgr$get entry (ptr, ptr, fixed bin(21), fixed bin(35)); 652 dcl linus_table$info entry (ptr, ptr, fixed bin(35)); 653 dcl long_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 654 dcl loop fixed bin; 655 656 dcl names_and_values_area area (sys_info$max_seg_size) based (names_and_values_area_ptr); 657 dcl names_and_values_area_ptr ptr; 658 dcl newline_needed bit (1) aligned; 659 dcl newline_position fixed bin; 660 dcl no_of_args_supplied fixed bin; 661 dcl normalized_option_name char (MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH) varying; 662 dcl number_of_control_args_found fixed bin; 663 dcl number_of_format_option_names fixed bin; 664 dcl null builtin; 665 666 dcl option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 667 dcl option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 668 dcl option_value_length fixed bin; 669 670 dcl pathname char (168); 671 672 dcl query_segment char (query_segment_length) based (query_segment_ptr); 673 dcl query_segment_current_position fixed bin (21); 674 dcl query_segment_length fixed bin (21); 675 dcl query_segment_newline_index fixed bin (21); 676 dcl query_segment_ptr ptr; 677 678 dcl rel builtin; 679 dcl requote_string_ entry (char(*)) returns(char(*)); 680 dcl requoting_needed bit (1) aligned; 681 dcl rtrim builtin; 682 683 dcl sci_ptr ptr; 684 dcl search builtin; 685 dcl selection_expression_flag bit (1) aligned; 686 dcl spare_option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 687 dcl special_characters_in_option_value bit (1) aligned; 688 dcl ssu_$abort_line entry() options(variable); 689 dcl ssu_$arg_count entry (ptr, fixed bin); 690 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 691 dcl starting_position fixed bin; 692 dcl still_creating_lines bit (1) aligned; 693 dcl still_processing_args bit (1) aligned; 694 dcl still_quoting_ampersands bit (1) aligned; 695 dcl still_processing_lila_lines bit (1) aligned; 696 dcl substr builtin; 697 dcl switch_name char (32); 698 dcl sys_info$max_seg_size fixed bin(35) ext static; 699 700 dcl this_is_a_control_arg (360) bit (1) unaligned; 701 702 dcl unique_chars_ entry (bit(*)) returns(char(15)); 703 dcl unspec builtin; 704 dcl usage_1 bit (1) aligned; 705 dcl usage_2 bit (1) aligned; 706 dcl usage_3 bit (1) aligned; 707 1 1 /* BEGIN INCLUDE FILE ... arg_descriptor.incl.pl1 1 2* 1 3* James R. Davis 1 Mar 79 */ 1 4 /* Modified June 83 JMAthane for extended arg descriptor format */ 1 5 1 6 dcl 1 arg_descriptor based (arg_descriptor_ptr) aligned, 1 7 2 flag bit (1) unal, 1 8 2 type fixed bin (6) unsigned unal, 1 9 2 packed bit (1) unal, 1 10 2 number_dims fixed bin (4) unsigned unal, 1 11 2 size fixed bin (24) unsigned unal; 1 12 1 13 dcl 1 fixed_arg_descriptor based (arg_descriptor_ptr) aligned, 1 14 2 flag bit (1) unal, 1 15 2 type fixed bin (6) unsigned unal, 1 16 2 packed bit (1) unal, 1 17 2 number_dims fixed bin (4) unsigned unal, 1 18 2 scale fixed bin (11) unal, 1 19 2 precision fixed bin (12) unsigned unal; 1 20 1 21 dcl 1 extended_arg_descriptor based (arg_descriptor_ptr) aligned, 1 22 2 flag bit (1) unal, /* = "1"b */ 1 23 2 type fixed bin (6) unsigned unal, /* = 58 */ 1 24 2 packed bit (1) unal, /* significant if number_dims ^= 0 */ 1 25 2 number_dims fixed (4) unsigned unal,/* number of variable dimensions */ 1 26 2 size bit (24) unal, 1 27 2 dims (0 refer (extended_arg_descriptor.number_dims)), /* part referenced by called generated code */ 1 28 3 low fixed bin (35), 1 29 3 high fixed bin (35), 1 30 3 multiplier fixed bin (35), /* in bits if packed, in words if not */ 1 31 2 real_type fixed bin (18) unsigned unal, 1 32 2 type_offset fixed bin (18) unsigned unal; /* offset rel to symbol tree to symbol node for type, if any */ 1 33 1 34 dcl arg_descriptor_ptr ptr; 1 35 1 36 dcl extended_arg_type fixed bin init (58); 1 37 1 38 /* END INCLUDE file .... arg_descriptor.incl.pl1 */ 708 709 2 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 2 2* 2 3* James R. Davis 10 May 79 */ 2 4 2 5 dcl 1 arg_list aligned based, 2 6 2 header, 2 7 3 arg_count fixed bin (17) unsigned unal, 2 8 3 pad1 bit (1) unal, 2 9 3 call_type fixed bin (18) unsigned unal, 2 10 3 desc_count fixed bin (17) unsigned unal, 2 11 3 pad2 bit (19) unal, 2 12 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 2 13 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 2 14 2 15 2 16 2 17 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 2 18 2 header, 2 19 3 arg_count fixed bin (17) unsigned unal, 2 20 3 pad1 bit (1) unal, 2 21 3 call_type fixed bin (18) unsigned unal, 2 22 3 desc_count fixed bin (17) unsigned unal, 2 23 3 pad2 bit (19) unal, 2 24 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 2 25 2 envptr ptr, 2 26 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 2 27 2 28 2 29 dcl ( 2 30 Quick_call_type init (0), 2 31 Interseg_call_type init (4), 2 32 Envptr_supplied_call_type 2 33 init (8) 2 34 ) fixed bin (18) unsigned unal int static options (constant); 2 35 2 36 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 2 37* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 2 38* an argument list of the proper size in the user's stack 2 39* 2 40**/ 2 41 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 710 711 3 1 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 712 713 4 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 4 7* install(86-07-29,MR12.0-1106): 4 8* Added general_work_area_ptr and renamed sfr_ptr to 4 9* force_retrieve_scope_ptr. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* HISTORY: 4 14* 4 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 4 16* 4 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 4 18* a part of the attribute level control work. 4 19* 4 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 4 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 4 22* scope information. 4 23* 4 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 4 25* retaining various vcpu times to be collected when in timing mode. The 4 26* times to be collected are: LINUS parsing time, LINUS processing time, and 4 27* MRDS processing time. 4 28* 4 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 4 30* part of the line numbering implementation. This allows for possible later 4 31* LINUS control of the build defaults. 4 32* 4 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 4 34* information is now retained by ssu_. Removed parse_timer as no longer 4 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 4 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 4 37* 4 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 4 39* subsystem_invocation_level, and selection_expression_identifier. 4 40* 4 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 4 42* table_control_info_ptr. 4 43* 4 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 4 45* 4 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 4 47* 4 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 4 49* 4 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 4 51**/ 4 52 4 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 4 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 4 55 2 rb_len fixed bin (21), /* length of request buffer */ 4 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 4 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 4 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 4 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 4 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 4 61 2 test_flag bit (1) unal, /* on if in test mode */ 4 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 4 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 4 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 4 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 4 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 4 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 4 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 4 69 2 reserved bit (27) unal, 4 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 4 71 2 rb_ptr ptr, /* ptr to request buffer */ 4 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 4 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 4 74 2 ttn_ptr ptr, /* pointer to table info structure */ 4 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 4 76 2 lv_ptr ptr, /* pointer linus variables */ 4 77 2 si_ptr ptr, /* pointer to select_info structure */ 4 78 2 setfi_ptr ptr, /* pointer to set function information */ 4 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 4 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 4 81 2 lit_ptr ptr, /* pointer to literal pool */ 4 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 4 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 4 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 4 85* (MR7.0) */ 4 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 4 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 4 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 4 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 4 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 4 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 4 92* for current lila expression */ 4 93 2 unused_timer float bin (63), /* future expansion */ 4 94 2 request_time float bin (63), /* How much request time was spent 4 95* in LINUS. (-1 = user has just enabled 4 96* timing, do not report) */ 4 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 4 98 2 build_increment fixed bin, /* default increment for build mode */ 4 99 2 build_start fixed bin, /* default start count for build mode */ 4 100 2 linus_version char (4), /* current version of LINUS */ 4 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 4 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 4 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 4 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 4 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 4 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 4 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 4 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 4 109 2 word_pad (6) bit (36) unal, 4 110 /* procedures that will be optionally */ 4 111 /* replaced by the user. Saved so they */ 4 112 /* can be reinstated if desired. */ 4 113 2 ssu_abort_line entry options (variable), 4 114 2 ssu_post_request_line variable entry (ptr), 4 115 2 ssu_pre_request_line variable entry (ptr), 4 116 4 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 4 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 4 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 4 120 4 121 dcl lcb_ptr ptr; 4 122 4 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 714 715 5 1 /* BEGIN INCLUDE FILE ... linus_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 "linus_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* linus_options$get_all. The linus_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 linus_names_and_values.incl.pl1 */ 716 717 6 1 /* BEGIN INCLUDE FILE linus_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 linus_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 linus_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 linus_options_extents */ 718 719 7 1 /* BEGIN INCLUDE FILE linus_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 name_value_area_ptr ptr, /* area for name-value allocations */ 7 25 2 name_value_temp_seg_ptr ptr, /* temp seg for name-value space */ 7 26 2 display_work_area_ptr ptr, /* display workspace */ 7 27 2 report_temp_seg_ptr ptr, /* report workspace */ 7 28 2 report_work_area_ptr ptr, /* report workspace */ 7 29 2 format_report_info_ptr ptr, /* info needed to create a report */ 7 30 2 input_string_temp_seg_ptr ptr, /* report workspace */ 7 31 2 output_string_temp_seg_ptr ptr, /* report workspace */ 7 32 2 editing_strings_temp_seg_ptr ptr, /* report workspace */ 7 33 2 headers_temp_seg_ptr ptr, /* report workspace */ 7 34 2 display_iocb_ptr ptr, /* report is displayed through this */ 7 35 2 selection_expression_identifier fixed bin, /* current selection expression */ 7 36 2 options_identifier fixed bin, /* current set of options */ 7 37 2 report_identifier fixed bin, /* current report */ 7 38 2 retrieval_identifier fixed bin, /* current retrieval */ 7 39 2 no_of_rows_retrieved fixed bin (35), /* current no of rows */ 7 40 2 no_of_formatted_pages fixed bin (21), /* current no of pages */ 7 41 2 number_of_passes fixed bin, /* number of times report will be formatted */ 7 42 2 table_loading_time float bin (63), 7 43 2 table_sorting_time float bin (63), 7 44 2 table_deletion_time float bin (63), 7 45 2 report_setup_time float bin (63), 7 46 2 report_formatting_time float bin (63), 7 47 2 report_display_time float bin (63), 7 48 2 report_deletion_time float bin (63), 7 49 2 ssu_evaluate_active_string_time float bin (63), 7 50 2 temp_dir_unique_id bit (36), /* uid of temp dir */ 7 51 2 temp_dir_name char (168) unaligned; /* the dir where we place the retrieved table and report */ 7 52 dcl report_cip ptr init (null ()); 7 53 7 54 /* END INCLUDE FILE linus_report_info.incl.pl1 */ 720 721 8 1 /* BEGIN INCLUDE FILE linus_table_info.incl.pl1 -- Dave Schimke 1/5/83 */ 8 2 /* 8 3*09/28/83 Al Dupuis: Added the store_args_ptr variable and the store_args structure. 8 4**/ 8 5 dcl 1 table_info aligned based (table_ip), /* info on displayable table */ 8 6 2 retrieval_identifier fixed bin , /* current retrieval id */ 8 7 2 row_count fixed bin(35), /* number of rows in table */ 8 8 2 column_count fixed bin, /* number of columns in table */ 8 9 2 maximum_column_name_length fixed bin, 8 10 /* largest column name */ 8 11 2 maximum_column_value_length fixed bin, 8 12 /* largest column length */ 8 13 2 row_value_length fixed bin (21), /* length of entire row */ 8 14 /* (sum of column lengths) */ 8 15 2 row_segs_info_ptr ptr init (null), /* ptr to the row segs info */ 8 16 2 store_args_ptr ptr, /* ptr to the arg list for storing rows */ 8 17 2 columns (ti_init_column_count refer (table_info.column_count)), 8 18 /* column info */ 8 19 3 column_name char (69) var, /* column header name */ 8 20 3 column_data_type bit (36), /* original data descriptor */ 8 21 3 column_length fixed bin (21), /* length of column in chars */ 8 22 3 column_index fixed bin (21); /* index of start of column in */ 8 23 /* row value */ 8 24 8 25 dcl 1 row_segs_info aligned based (row_segs_ip), 8 26 2 max_number_of_seg_ptrs fixed bin, 8 27 2 max_number_of_ptrs_per_seg fixed bin(21), 8 28 2 number_of_seg_ptrs fixed bin, 8 29 2 seg_ptr (rsi_init_max_number_of_seg_ptrs refer (row_segs_info. 8 30 max_number_of_seg_ptrs)) ptr unal; 8 31 8 32 dcl 1 row_ptrs aligned based (row_ptrs_p), 8 33 2 number_of_ptrs_this_seg fixed bin(21), 8 34 2 row_value_ptr (row_ptrs.number_of_ptrs_this_seg) ptr unal; 8 35 8 36 dcl row_value char (table_info.row_value_length) based (row_value_p); 8 37 dcl row_value_p ptr unal; /* ptr to the current row value */ 8 38 8 39 dcl row_segs_ip ptr; /* ptr to the seg of ptrs to */ 8 40 /* the arrays of row_value_ptrs */ 8 41 dcl row_ptrs_p ptr; /* ptr to an array of */ 8 42 /* row_value_ptrs */ 8 43 8 44 dcl 1 store_args aligned based (store_ap), 8 45 2 table_name char (30), 8 46 2 error_code fixed bin (35), 8 47 2 number_of_descriptors fixed bin, 8 48 2 header like arg_list.header, 8 49 2 arg_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 8 50 2 desc_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 8 51 2 argument_list_descriptors (init_number_of_descriptors refer 8 52 (store_args.number_of_descriptors)) like arg_descriptor; 8 53 8 54 dcl init_number_of_descriptors; 8 55 dcl rsi_init_max_number_of_seg_ptrs fixed bin; 8 56 dcl store_ap ptr; 8 57 dcl table_ip ptr; 8 58 dcl ti_init_column_count fixed bin; 8 59 8 60 /* END INCLUDE FILE linus_table_info.incl.pl1 */ 722 723 724 end linus_save_format_options; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0939.7 linus_save_format_options.pl1 >special_ldd>install>MR12.0-1106>linus_save_format_options.pl1 708 1 11/02/83 1845.0 arg_descriptor.incl.pl1 >ldd>include>arg_descriptor.incl.pl1 710 2 10/23/81 1948.6 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 712 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 714 4 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 716 5 09/16/83 1338.0 linus_names_and_values.incl.pl1 >ldd>include>linus_names_and_values.incl.pl1 718 6 09/16/83 1338.0 linus_options_extents.incl.pl1 >ldd>include>linus_options_extents.incl.pl1 720 7 09/16/83 1338.1 linus_report_info.incl.pl1 >ldd>include>linus_report_info.incl.pl1 722 8 10/06/83 1219.0 linus_table_info.incl.pl1 >ldd>include>linus_table_info.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. AMPERSAND 005021 constant char(1) initial unaligned dcl 594 ref 423 433 439 547 561 568 AMPERSAND_BLANK_OR_TAB 000010 constant char(3) initial unaligned dcl 595 ref 530 MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-32 ref 661 MAXIMUM_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 6-35 ref 653 666 MAXIMUM_OPTION_VALUE_LENGTH constant fixed bin(17,0) initial dcl 6-36 ref 667 686 ME 000003 constant char(19) initial unaligned dcl 598 set ref 379* NEWLINE 005020 constant char(1) initial unaligned dcl 599 ref 418 515 547 555 561 568 577 NO_MORE_FORMAT_OPTION_ARGS constant fixed bin(35,0) initial dcl 601 ref 138 165 189 221 NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-20 ref 130 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-21 ref 130 OFF constant bit(1) initial dcl 596 ref 82 189 239 240 241 243 244 245 301 306 441 446 452 504 505 506 564 571 ON constant bit(1) initial dcl 597 ref 85 142 287 295 300 305 308 311 319 361 415 431 515 518 521 530 552 SPECIAL_CHARACTERS 000000 constant char(9) initial unaligned dcl 603 ref 518 Stream_output 000063 constant fixed bin(17,0) initial dcl 3-15 set ref 363* ampersand_position 000100 automatic fixed bin(17,0) dcl 608 set ref 423* 425 433 433 436 439* 441 443* 443 arg based char unaligned dcl 609 ref 147 169 278 291 291 291 291 291 291 291 298 298 303 303 312 arg_descriptor based structure level 1 dcl 1-6 arg_length 000101 automatic fixed bin(21,0) dcl 610 set ref 147 169 225* 277* 278 290* 291 291 291 291 291 291 291 298 298 303 303 312 arg_list based structure level 1 dcl 2-5 arg_ptr 000102 automatic pointer dcl 611 set ref 147 169 225* 277* 278 290* 291 291 291 291 291 291 291 298 298 303 303 312 cleanup 000104 stack reference condition dcl 613 ref 84 cleanup_signalled 000112 automatic bit(1) dcl 614 set ref 82* 85* 379 code 000113 automatic fixed bin(35,0) dcl 615 set ref 92* 96* 102* 108 108* 137* 138 148* 150 150 150* 154 154* 158* 164* 165 170* 174 174 174* 180 180* 188* 189 250* 251 251* 339* 340 347* 349 349* 355* 357 357* 363* 364 364* 376* 377* 378* 379* 408* 410 410* code_parm parameter fixed bin(35,0) dcl 211 set ref 204 213* 221* current_arg 000114 automatic fixed bin(17,0) dcl 616 set ref 136* 215 216* 216 219 225* 226* 226 delete_$path 000010 constant entry external dcl 618 ref 379 dir_name 000115 automatic char(168) unaligned dcl 619 set ref 347* 355 379* entry_name 000167 automatic char(32) unaligned dcl 621 set ref 347* 355 379* error_table_$inconsistent 000012 external static fixed bin(35,0) dcl 622 set ref 324* 329* error_table_$noarg 000014 external static fixed bin(35,0) dcl 623 set ref 270* error_table_$nostars 000016 external static fixed bin(35,0) dcl 624 ref 180 expand_pathname_$add_suffix 000020 constant entry external dcl 625 ref 347 extended_arg_type 002336 automatic fixed bin(17,0) initial dcl 1-36 set ref 1-36* file_needs_terminating 000177 automatic bit(1) dcl 627 set ref 244* 361* 374 fixed builtin function dcl 628 ref 324 324 header based structure level 2 dcl 2-5 identifier_needed 000200 automatic bit(1) dcl 630 set ref 148* 162 index builtin function dcl 631 in procedure "linus_save_format_options" ref 418 423 439 555 index 2 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "linus_save_format_options" ref 500 index based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "linus_save_format_options" ref 496 ioa_$ioa_switch 000022 constant entry external dcl 632 ref 390 400 413 425 448 457 581 585 iocb_ptr 000202 automatic pointer dcl 633 set ref 355* 363* 376* 377* 378* 390* 400* 413* 425* 448* 457* 581* 585* iox_$attach_name 000024 constant entry external dcl 634 ref 355 iox_$close 000026 constant entry external dcl 635 ref 376 iox_$destroy_iocb 000030 constant entry external dcl 636 ref 378 iox_$detach_iocb 000032 constant entry external dcl 637 ref 377 iox_$open 000034 constant entry external dcl 638 ref 363 lcb based structure level 1 dcl 4-53 lcb_ptr 002340 automatic pointer dcl 4-121 set ref 92* 96* 102* 129 148* 170* 237* 250* 339* 408* lcb_ptr_parm parameter pointer dcl 63 ref 60 237 length 3 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "linus_save_format_options" ref 500 length builtin function dcl 640 in procedure "linus_save_format_options" ref 437 508 length 1 based fixed bin(21,0) array level 3 in structure "name_value_info" dcl 5-17 in procedure "linus_save_format_options" ref 496 line_buffer 000204 automatic varying char(4096) dcl 641 set ref 429* 433* 433 433 437 439 448* 559* 561 561 linus_error_$bad_option_identifier 000036 external static fixed bin(35,0) dcl 642 ref 174 linus_error_$bad_option_name 000040 external static fixed bin(35,0) dcl 643 ref 150 linus_error_$no_lila_expr_processed 000042 external static fixed bin(35,0) dcl 644 set ref 154 340 340* linus_options$check_identifier 000044 constant entry external dcl 645 ref 170 linus_options$check_name 000046 constant entry external dcl 646 ref 148 linus_options$get_active 000050 constant entry external dcl 647 ref 92 linus_options$get_all 000052 constant entry external dcl 648 ref 96 linus_options$get_named 000054 constant entry external dcl 649 ref 102 linus_options$initialize 000056 constant entry external dcl 650 ref 250 linus_query_mgr$get 000060 constant entry external dcl 651 ref 408 linus_table$info 000062 constant entry external dcl 652 ref 339 long_option_name 002205 automatic varying char dcl 653 set ref 148* 154* 160 loop 002205 automatic fixed bin(17,0) dcl 654 set ref 143* 160 169 170 170 174 174 185 187* 187 192 289* 290* 295* 494* 496 496 500 500* name based structure array level 2 dcl 5-17 name_value_area_ptr based pointer level 2 dcl 7-7 ref 130 name_value_info based structure array level 1 dcl 5-17 names_and_values based char unaligned dcl 5-27 ref 496 500 names_and_values_area based area dcl 656 ref 133 names_and_values_area_ptr 002206 automatic pointer dcl 657 set ref 130* 133 names_and_values_info_ptr 002342 automatic pointer initial dcl 5-29 set ref 92* 96* 102* 5-29* 496 496 500 500 names_and_values_ptr 002344 automatic pointer initial dcl 5-30 set ref 92* 96* 102* 5-30* 496 500 newline_needed 002210 automatic bit(1) dcl 658 set ref 505* 515* 547 577 newline_position 002211 automatic fixed bin(17,0) dcl 659 set ref 555* 557 559 563 no_of_args_supplied 002212 automatic fixed bin(17,0) dcl 660 set ref 219 268* 270 287 289 no_of_names_and_values 002346 automatic fixed bin(21,0) dcl 5-31 set ref 92* 96* 102* 470 494 no_of_options_in_name_table 002350 automatic fixed bin(21,0) dcl 5-40 set ref 102* 131* 133 192 normalized_option_name 002213 automatic varying char dcl 661 set ref 170* 496* 581* 585* null builtin function dcl 664 ref 5-29 5-30 5-41 7-52 355 355 number_of_control_args_found 002213 automatic fixed bin(17,0) dcl 662 set ref 246* 296* 296 number_of_format_option_names 002214 automatic fixed bin(17,0) dcl 663 set ref 131 286* 312* 312 324 329 option_name 002215 automatic varying char dcl 666 set ref 147* 148* 150* 165* option_name_table based structure array level 1 unaligned dcl 5-36 set ref 133 option_name_table_ptr 002352 automatic pointer initial dcl 5-41 set ref 102* 5-41* 133* 160 169 170 170 174 174 185 option_value 002215 automatic varying char dcl 667 set ref 500* 508 511* 515 518 521 521 521 521 521 521 521 521 521 521 521 530 547* 547 547 555 559 568 568 574* 577* 577 581* 585* option_value_length 002215 automatic fixed bin(17,0) dcl 668 set ref 508* 509 512* 515 564 pathname 002216 automatic char(168) unaligned dcl 670 set ref 278* 347* 349* 357* 364* query_segment based char unaligned dcl 672 ref 418 423 425 425 429 query_segment_current_position 002270 automatic fixed bin(21,0) dcl 673 set ref 414* 418 423 425 425 429 450* 450 452 query_segment_length 002271 automatic fixed bin(21,0) dcl 674 set ref 408* 418 423 425 425 429 452 query_segment_newline_index 002272 automatic fixed bin(21,0) dcl 675 set ref 418* 420 423 425 425 429 450 query_segment_ptr 002274 automatic pointer dcl 676 set ref 408* 418 423 425 425 429 report_cip 002354 automatic pointer initial dcl 7-52 set ref 7-52* 129* 130 report_control_info based structure level 1 dcl 7-7 report_control_info_ptr 106 based pointer level 2 dcl 4-53 ref 129 requote_string_ 000064 constant entry external dcl 679 ref 547 561 568 requoting_needed 002276 automatic bit(1) dcl 680 set ref 506* 530* 545 rtrim builtin function dcl 681 ref 355 sci_ptr 002300 automatic pointer dcl 683 set ref 108* 138* 150* 154* 158* 165* 174* 180* 192* 225* 236* 251* 268* 270* 277* 290* 324* 329* 340* 349* 357* 364* 410* 420* 470* sci_ptr_parm parameter pointer dcl 62 ref 60 236 search builtin function dcl 684 ref 518 530 selection_expression_flag 002302 automatic bit(1) dcl 685 set ref 243* 308* 337 405 size_of_names_and_values 002347 automatic fixed bin(21,0) dcl 5-32 set ref 92* 96* 102* 496 500 spare_option_value 002303 automatic varying char dcl 686 set ref 551* 561* 561 568* 568 574 special_characters_in_option_value 002303 automatic bit(1) dcl 687 set ref 504* 518* 521* 577 581 ssu_$abort_line 000066 constant entry external dcl 688 ref 108 138 150 154 158 165 174 180 192 251 270 324 329 340 349 357 364 410 420 470 ssu_$arg_count 000070 constant entry external dcl 689 ref 268 ssu_$arg_ptr 000072 constant entry external dcl 690 ref 225 277 290 starting_position 002304 automatic fixed bin(17,0) dcl 691 set ref 430* 436* 437 439 443 553* 555 559 563* 563 564 568 568 still_creating_lines 002305 automatic bit(1) dcl 692 set ref 552* 554 564* 571* still_processing_args 002306 automatic bit(1) dcl 693 set ref 142* 145 189* 192 still_processing_lila_lines 002310 automatic bit(1) dcl 695 set ref 415* 417 452* still_quoting_ampersands 002307 automatic bit(1) dcl 694 set ref 431* 432 441* 446* substr builtin function dcl 696 ref 312 418 423 425 425 429 433 433 439 496 500 515 521 547 547 555 559 561 561 568 568 switch_name 002311 automatic char(32) unaligned dcl 697 set ref 353* 355* table_ip 002356 automatic pointer dcl 8-57 set ref 339* the_identifier 11 based varying char(32) array level 2 dcl 5-36 set ref 169* 170* 174* 185* the_name based varying char(32) array level 2 dcl 5-36 set ref 160* 170* 174* this_is_a_control_arg 002321 automatic bit(1) array unaligned dcl 700 set ref 215 245* 295* unique_chars_ 000074 constant entry external dcl 702 ref 353 unspec builtin function dcl 703 set ref 245* usage_1 002333 automatic bit(1) dcl 704 set ref 92 239* 287* 301* 305* 319 319* 324 324 324 324 usage_2 002334 automatic bit(1) dcl 705 set ref 96 240* 300* 306* 319 324 324 324 324 usage_3 002335 automatic bit(1) dcl 706 set ref 241* 311* 319 324 329 value 2 based structure array level 2 dcl 5-17 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 GENERAL_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 6-15 GENERAL_REPORT_OPTION internal static fixed bin(17,0) initial dcl 6-14 INDEX_FOR_ALIGNMENT internal static fixed bin(17,0) initial dcl 6-66 INDEX_FOR_COLUMN_ORDER internal static fixed bin(17,0) initial dcl 6-50 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 internal static fixed bin(17,0) initial dcl 6-53 INDEX_FOR_GROUP_FOOTER_TRIGGER internal static fixed bin(17,0) initial dcl 6-54 INDEX_FOR_GROUP_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 6-55 INDEX_FOR_GROUP_HEADER_TRIGGER internal static fixed bin(17,0) initial dcl 6-56 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 internal static fixed bin(17,0) initial dcl 6-70 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 INDEX_FOR_WIDTH internal static fixed bin(17,0) initial dcl 6-71 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 6-28 LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 6-27 LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 6-26 MAXIMUM_OPTION_IDENTIFIER_LENGTH internal static fixed bin(17,0) initial dcl 6-34 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 6-22 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 SPECIFIC_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 6-16 Sequential_input internal static fixed bin(17,0) initial dcl 3-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 Stream_input_output internal static fixed bin(17,0) initial dcl 3-15 addr builtin function dcl 607 arg_descriptor_ptr automatic pointer dcl 1-34 arg_list_with_envptr based structure level 1 dcl 2-17 extended_arg_descriptor based structure level 1 dcl 1-21 fixed_arg_descriptor based structure level 1 dcl 1-13 init_number_of_descriptors automatic fixed bin(17,0) dcl 8-54 iox_modes internal static char(24) initial array dcl 3-6 rel builtin function dcl 678 row_ptrs based structure level 1 dcl 8-32 row_ptrs_p automatic pointer dcl 8-41 row_segs_info based structure level 1 dcl 8-25 row_segs_ip automatic pointer dcl 8-39 row_value based char unaligned dcl 8-36 row_value_p automatic pointer unaligned dcl 8-37 rsi_init_max_number_of_seg_ptrs automatic fixed bin(17,0) dcl 8-55 short_iox_modes internal static char(4) initial array dcl 3-12 store_ap automatic pointer dcl 8-56 store_args based structure level 1 dcl 8-44 sys_info$max_seg_size external static fixed bin(35,0) dcl 698 table_info based structure level 1 dcl 8-5 ti_init_column_count automatic fixed bin(17,0) dcl 8-58 NAMES DECLARED BY EXPLICIT CONTEXT. get_next_format_option_arg 001561 constant entry internal dcl 204 ref 137 164 188 get_user_specified_option_names 001030 constant entry internal dcl 117 ref 101 initialize 001621 constant entry internal dcl 234 ref 89 linus_save_format_options 000532 constant entry external dcl 60 terminate 002623 constant entry internal dcl 372 ref 86 113 write_exec_com_footer 002726 constant entry internal dcl 388 ref 112 write_exec_com_header 002753 constant entry internal dcl 396 ref 90 write_the_names_and_values 003402 constant entry internal dcl 463 ref 111 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5400 5476 5026 5410 Length 6130 5026 76 416 351 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_save_format_options 1718 external procedure is an external procedure. on unit on line 84 64 on unit get_user_specified_option_names internal procedure shares stack frame of external procedure linus_save_format_options. get_next_format_option_arg internal procedure shares stack frame of external procedure linus_save_format_options. initialize internal procedure shares stack frame of external procedure linus_save_format_options. terminate 94 internal procedure is called by several nonquick procedures. write_exec_com_footer internal procedure shares stack frame of external procedure linus_save_format_options. write_exec_com_header internal procedure shares stack frame of external procedure linus_save_format_options. write_the_names_and_values internal procedure shares stack frame of external procedure linus_save_format_options. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_save_format_options 000100 ampersand_position linus_save_format_options 000101 arg_length linus_save_format_options 000102 arg_ptr linus_save_format_options 000112 cleanup_signalled linus_save_format_options 000113 code linus_save_format_options 000114 current_arg linus_save_format_options 000115 dir_name linus_save_format_options 000167 entry_name linus_save_format_options 000177 file_needs_terminating linus_save_format_options 000200 identifier_needed linus_save_format_options 000202 iocb_ptr linus_save_format_options 000204 line_buffer linus_save_format_options 002205 loop linus_save_format_options 002205 long_option_name linus_save_format_options 002206 names_and_values_area_ptr linus_save_format_options 002210 newline_needed linus_save_format_options 002211 newline_position linus_save_format_options 002212 no_of_args_supplied linus_save_format_options 002213 number_of_control_args_found linus_save_format_options 002213 normalized_option_name linus_save_format_options 002214 number_of_format_option_names linus_save_format_options 002215 option_value_length linus_save_format_options 002215 option_name linus_save_format_options 002215 option_value linus_save_format_options 002216 pathname linus_save_format_options 002270 query_segment_current_position linus_save_format_options 002271 query_segment_length linus_save_format_options 002272 query_segment_newline_index linus_save_format_options 002274 query_segment_ptr linus_save_format_options 002276 requoting_needed linus_save_format_options 002300 sci_ptr linus_save_format_options 002302 selection_expression_flag linus_save_format_options 002303 special_characters_in_option_value linus_save_format_options 002303 spare_option_value linus_save_format_options 002304 starting_position linus_save_format_options 002305 still_creating_lines linus_save_format_options 002306 still_processing_args linus_save_format_options 002307 still_quoting_ampersands linus_save_format_options 002310 still_processing_lila_lines linus_save_format_options 002311 switch_name linus_save_format_options 002321 this_is_a_control_arg linus_save_format_options 002333 usage_1 linus_save_format_options 002334 usage_2 linus_save_format_options 002335 usage_3 linus_save_format_options 002336 extended_arg_type linus_save_format_options 002340 lcb_ptr linus_save_format_options 002342 names_and_values_info_ptr linus_save_format_options 002344 names_and_values_ptr linus_save_format_options 002346 no_of_names_and_values linus_save_format_options 002347 size_of_names_and_values linus_save_format_options 002350 no_of_options_in_name_table linus_save_format_options 002352 option_name_table_ptr linus_save_format_options 002354 report_cip linus_save_format_options 002356 table_ip linus_save_format_options THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return alloc_auto_adj enable shorten_stack ext_entry int_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. delete_$path expand_pathname_$add_suffix ioa_$ioa_switch iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open linus_options$check_identifier linus_options$check_name linus_options$get_active linus_options$get_all linus_options$get_named linus_options$initialize linus_query_mgr$get linus_table$info requote_string_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent error_table_$noarg error_table_$nostars linus_error_$bad_option_identifier linus_error_$bad_option_name linus_error_$no_lila_expr_processed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 60 000526 653 000537 661 000547 666 000557 667 000567 686 000577 1 36 000607 5 29 000611 5 30 000613 5 41 000614 7 52 000615 148 000616 150 000624 154 000627 165 000632 170 000635 581 000640 585 000646 82 000654 84 000655 85 000671 86 000674 87 000701 89 000702 90 000703 92 000704 96 000730 101 000754 102 000755 108 001002 111 001021 112 001022 113 001023 115 001027 117 001030 129 001031 130 001034 131 001044 133 001046 136 001054 137 001056 138 001060 142 001110 143 001112 145 001114 147 001116 148 001130 150 001162 154 001220 158 001253 160 001267 162 001305 164 001311 165 001313 169 001351 170 001367 174 001427 180 001476 184 001514 185 001515 187 001516 188 001517 189 001521 192 001525 200 001557 202 001560 204 001561 213 001563 215 001564 216 001571 217 001572 219 001573 221 001576 222 001601 225 001602 226 001617 228 001620 234 001621 236 001622 237 001626 239 001631 240 001632 241 001633 243 001634 244 001635 245 001636 246 001641 250 001642 251 001653 268 001672 270 001703 277 001731 278 001750 286 001755 287 001756 289 001764 290 001773 291 002010 295 002061 296 002065 298 002066 300 002070 301 002072 302 002073 303 002074 305 002100 306 002102 307 002103 308 002104 309 002106 311 002107 312 002111 317 002116 319 002120 324 002130 329 002200 337 002230 339 002232 340 002245 347 002274 349 002326 353 002360 355 002412 357 002513 361 002546 363 002550 364 002567 368 002621 372 002622 374 002630 376 002633 377 002643 378 002655 379 002667 384 002725 388 002726 390 002727 392 002752 396 002753 400 002754 405 002774 408 002777 410 003014 413 003033 414 003053 415 003055 417 003057 418 003062 420 003102 423 003130 425 003144 428 003203 429 003204 430 003215 431 003217 432 003221 433 003224 436 003267 437 003273 439 003275 441 003313 443 003316 445 003321 446 003322 447 003323 448 003324 450 003347 452 003351 455 003355 457 003356 459 003401 463 003402 470 003403 494 003446 496 003455 500 003473 504 003505 505 003506 506 003507 508 003510 509 003512 511 003513 512 003523 513 003525 515 003526 518 003541 521 003556 530 003646 545 003663 547 003665 550 003755 551 003756 552 003757 553 003761 554 003763 555 003766 557 004007 559 004010 561 004020 563 004120 564 004123 566 004127 568 004130 571 004227 573 004231 574 004232 576 004244 577 004245 581 004260 585 004347 588 004411 590 004413 ----------------------------------------------------------- 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