COMPILATION LISTING OF SEGMENT linus_display_scroll Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/01/84 1407.3 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: off */ 7 8 /* This is the subroutine called by the display request to implement the 9* linus display scrolling feature. Description and usage follows. 10* 11* Description: 12* 13* This module provides for the display of paginated and unpaginated 14* reports through the video system. It also provides the function of 15* setting a scroll function to a provided key sequence. This program 16* operates in conjunction with linus_display_process_args (initial 17* setup of the scroll_info structure) and linus_display (the caller of 18* this subroutine). 19* 20* Usage: 21* 22* See the entrypoints for parameter descriptions. The entrypoint set_fkey 23* is called by linus_display_process_args to set any functions to key 24* sequences provided on the request line when the display request is given. 25* The start, continue, and stop entrypoints are called by the linus_display 26* module for setup, scrolling, and termination respectively. 27* 28* Known Bugs: 29* 30* Other Problems: 31* 32* History: 33* 34* Written - Al Dupuis - August 1983 35* 36**/ 37 38 linus_display_scroll: proc; 39 40 /* These parameters are described at each entry where they are used. */ 41 42 dcl code_parm fixed bin (35) parm; 43 dcl display_arg_results_ptr_parm ptr parm; 44 dcl function_name_parm char (*) parm; 45 dcl function_key_sequence_parm char (*) parm; 46 dcl rci_ptr_parm ptr parm; 47 dcl sci_ptr_parm ptr parm; 48 dcl scroll_info_ptr_parm ptr parm; 49 dcl work_area_ptr_parm ptr parm; 50 51 RETURN_TO_CALLING_PROGRAM: 52 53 return; 54 55 continue: entry ( 56 57 scroll_info_ptr_parm, /* input: ptr to the scroll_info structure */ 58 code_parm /* output: success, failure, or user quit (error_table_$end_of_info) */ 59 ); 60 61 /* 62* 63* Mainline Processing Overview 64* 65* (1) Perform initialization. 66* 67* (2) Display a portion of the current page or buffer. Signal 68* display_buffer_empty if we cross a buffer boundary in the 69* middle of the display (unpaginated reports only). 70* 71* (3) Read a key sequence which tells us what to do next. 72* 73* (4) Perform the function the user has requested (e.g. forward). 74* 75* (5) Repeat 2 through 4 if we're still in the current page or buffer. 76* Return to caller if we're outside of it, or if we crossed a 77* buffer boundary during the display. 78* 79**/ 80 81 scroll_ip = scroll_info_ptr_parm; 82 code_parm = 0; 83 call housekeeping; 84 call scroll_the_report; 85 code_parm = code; 86 87 return; 88 89 set_fkey: entry ( 90 91 scroll_info_ptr_parm, /* input: ptr to the scroll_info strucure */ 92 function_name_parm, /* input: function to set the key to */ 93 function_key_sequence_parm, /* input: the key sequence */ 94 code_parm /* output: success or failure */ 95 ); 96 97 /* 98* 99* Mainline Processing Overview 100* 101* (1) Translate any mnemonic key sequences into the characters 102* the terminal generates ("escape-", "esc-", "control-" and 103* "ctl-" are translated). 104* 105* (2) Translate key sequences given as mnemonics into the characters 106* the terminal generates (i.e. translate "up_arrow" into whatever 107* the particular terminal generates when the up arrow is pressed). 108* 109* (3) Assign the translated key sequence to the table entry for that 110* particular function. 111* 112**/ 113 114 scroll_ip = scroll_info_ptr_parm; 115 function_key_data_ptr = scroll_info.function_key_data_pointer; 116 function_name = function_name_parm; 117 function_key_sequence = function_key_sequence_parm; 118 call set_function_key (function_name, function_key_sequence, code); 119 code_parm = code; 120 121 return; 122 123 start: entry ( 124 125 sci_ptr_parm, /* input: ptr to the subsystem control info structure */ 126 rci_ptr_parm, /* input: ptr to the report_control_info structure */ 127 display_arg_results_ptr_parm, /* input: ptr to the display_arg_results structure */ 128 work_area_ptr_parm /* input: ptr to a work area */ 129 ); 130 131 /* 132* 133* Mainline Processing Overview 134* 135* (1) Allocate various structures needed for the video system. 136* 137* (2) Turn on the video system if it's not already on. 138* 139* (3) If window was specified by the user check it out to make sure it 140* meets the requirements. If window wasn't specified, then set 141* one up and shrink user_i/o. 142* 143* (4) Setup the format_document_options structure for filling of help 144* strings to the window width. 145* 146**/ 147 148 sci_ptr = sci_ptr_parm; 149 report_cip = rci_ptr_parm; 150 display_results_ptr = display_arg_results_ptr_parm; 151 work_area_ptr = work_area_ptr_parm; 152 call setup_scroll; 153 154 return; 155 156 stop: entry ( 157 158 scroll_info_ptr_parm /* input: ptr to the scroll_info structure */ 159 ); 160 161 /* 162* 163* Mainline Processing Overview 164* 165* (1) If window wasn't specified by the user then destroy the 166* window we created and put back user_i/o to the same state 167* as we found it. 168* 169* (2) Turn off the video system if we turned it on. 170* 171**/ 172 173 if scroll_info_ptr_parm = null () 174 then return; 175 scroll_ip = scroll_info_ptr_parm; 176 call housekeeping; 177 call terminate_scroll; 178 179 return; 180 181 abort_line: proc ( 182 183 code_parm, /* input: the code that caused the error */ 184 message_parm /* input: additional information */ 185 ); 186 187 dcl code_parm fixed bin (35) parm; 188 dcl message_parm_length fixed bin; 189 dcl message_parm char (*) parm; 190 191 if code_parm ^= 0 192 then do; 193 call convert_status_code_ (code_parm, short_message, long_message); 194 error_message = "^/" || rtrim (long_message); 195 end; 196 else error_message = ""; 197 198 message_parm_length = length (rtrim (message_parm)); 199 if message_parm_length > 0 200 then error_message = error_message || "^/" || rtrim (message_parm); 201 202 call ssu_$abort_line (sci_ptr, linus_error_$bad_report_display, error_message); 203 204 end abort_line; 205 206 check_code: proc; 207 208 /* 209* 210* It is only valid to call this proc if the entrypoint "continue" 211* was called. This proc takes care of the details of hiding the 212* "window_status_pending" error code returned by any of the many, 213* many different window_ entrypoints this subroutine calls. When this 214* ugly error code is returned there is not enough information that 215* can be gotten to do anything reasonable. For example, if we could 216* determine from the video system where in the window the asyncronous 217* output was written to, we could at least write around it or prompt 218* the user to see if she has read it. But there isn't anything like 219* that. Instead we get two bits, saying if there was asyncronous 220* output or that the screen is invalid. This proc does a 221* get_window_status control order, returns to linus_display, who 222* immediately calls back here, resulting in a redisplay of the window. 223* Invalid screens are the only thing we get in the default case, so 224* this is always the correct action. In the case of the experienced 225* user who has set up her own windows, if she has missed a message 226* through this redisplay she can see them again with the multics_mode 227* function or set up her windows more intelligently next time. 228* 229**/ 230 231 if code = 0 232 then return; 233 234 if code = video_et_$window_status_pending 235 then call iox_$control (window_iocb_ptr, "get_window_status", 236 window_status_info_ptr, code); 237 238 code_parm = code; 239 goto RETURN_TO_CALLING_PROGRAM; 240 241 end check_code; 242 243 display_chunk_of_page: proc; 244 245 dcl dcop_buffer_empty_pending bit (1) aligned; 246 dcl dcop_current_line_on_page fixed bin; 247 dcl dcop_current_line_on_screen fixed bin; 248 dcl dcop_number_of_chars_to_write fixed bin; 249 dcl dcop_loop fixed bin; 250 dcl dcop_loop_limit fixed bin; 251 dcl display_buffer_empty condition; 252 253 dcop_buffer_empty_pending = OFF; 254 call window_$clear_window (window_iocb_ptr, code); 255 call check_code; 256 257 /* Set the width so we don't exceed the portion of the page left or the window width. */ 258 259 if page_info.width - 1 <= report_output_window_position_info.width 260 then; 261 else if scroll_info.left_vertical_position + report_output_window_position_info.width > page_info.width 262 then scroll_info.left_vertical_position = page_info.width - report_output_window_position_info.width; 263 dcop_number_of_chars_to_write = min (page_info.width - scroll_info.left_vertical_position, 264 report_output_window_position_info.width); 265 266 /* target_line_number can be less than 1 or greater than the page length. Adjust accordingly. */ 267 268 if scroll_info.target_line_number < 1 269 then scroll_info.target_line_number = 1; 270 else if report_control_info.flags.report_is_paginated 271 then if scroll_info.target_line_number > page_info.length 272 then scroll_info.target_line_number 273 = max (1, page_info.length - scroll_info.vertical_scroll_distance); 274 else; 275 else; 276 277 /* Simulate the line printer software's 3 blank lines if appropriate. */ 278 279 if scroll_info.target_line_number = 1 280 & (report_control_info.flags.report_is_paginated | scroll_info.target_page_number = 1) 281 then scroll_info.top_margin_offset = 3; 282 else scroll_info.top_margin_offset = 0; 283 284 /* Set limits, prepare to hit a buffer boundary for unpaginated reports in the middle of the display. */ 285 286 dcop_current_line_on_page = scroll_info.target_line_number; 287 dcop_current_line_on_screen = scroll_info.top_margin_offset + 1; 288 dcop_loop_limit = min ( 289 report_output_window_position_info.height - dcop_current_line_on_screen + 1, 290 page_info.length - dcop_current_line_on_page + 1); 291 292 if ^report_control_info.flags.report_is_paginated 293 then if (page_info.length - dcop_current_line_on_page + 1 294 < report_output_window_position_info.height - dcop_current_line_on_screen + 1) 295 & (^report_control_info.flags.report_is_formatted 296 | (report_control_info.flags.report_is_formatted 297 & scroll_info.target_page_number ^= report_control_info.no_of_formatted_pages)) 298 then do; 299 dcop_loop_limit = report_output_window_position_info.height - dcop_current_line_on_screen + 1; 300 dcop_buffer_empty_pending = ON; 301 end; 302 else; 303 else; 304 305 /* Do the display, don't bother to write blank lines. */ 306 307 do dcop_loop = 1 to dcop_loop_limit; 308 call window_$position_cursor (window_iocb_ptr, dcop_current_line_on_screen, 1, code); 309 call check_code; 310 if substr (page_defined_as_lines (dcop_current_line_on_page), 311 scroll_info.left_vertical_position, dcop_number_of_chars_to_write) = BLANK 312 then; 313 else do; 314 call window_$overwrite_text (window_iocb_ptr, 315 substr (page_defined_as_lines (dcop_current_line_on_page), 316 scroll_info.left_vertical_position, dcop_number_of_chars_to_write), code); 317 call check_code; 318 end; 319 dcop_current_line_on_screen = dcop_current_line_on_screen + 1; 320 dcop_current_line_on_page = dcop_current_line_on_page + 1; 321 if dcop_buffer_empty_pending 322 then if dcop_current_line_on_page > page_info.length 323 then do; 324 scroll_info.target_page_number = scroll_info.target_page_number + 1; 325 scroll_info.last_line_number_in_previous_buffer = page_info.length; 326 signal display_buffer_empty; 327 scroll_info.flags.buffer_boundary_just_crossed = ON; 328 scroll_info.target_page_number = scroll_info.target_page_number - 1; 329 dcop_current_line_on_page = 1; 330 page_ip = scroll_info.page_info_pointer; 331 end; 332 else; 333 else; 334 end; 335 336 /* Position cursor to bottom right hand side of window. */ 337 338 call window_$position_cursor (window_iocb_ptr, 339 report_output_window_position_info.height, 340 report_output_window_position_info.width, code); 341 call check_code; 342 343 return; 344 345 end display_chunk_of_page; 346 347 get_users_response: proc (gur_buffer_parm); 348 349 dcl gur_buffer_parm char (*) parm; 350 dcl gur_character_read char (1) varying; 351 dcl gur_loop fixed bin; 352 dcl gur_partial_match bit (1) aligned; 353 354 /* Keep reading characters until we get a match, get a mis-match, or fill the buffer. */ 355 356 gur_buffer_parm = ""; 357 gur_partial_match = ON; 358 359 do gur_loop = 1 to length (gur_buffer_parm) 360 while (gur_partial_match); 361 call window_$get_one_unechoed_char (window_iocb_ptr, gur_character_read, ON, code); 362 call check_code; 363 substr (gur_buffer_parm, gur_loop, 1) = gur_character_read; 364 if (gur_buffer_parm = scroll_info.keys.forward) 365 | (gur_buffer_parm = scroll_info.keys.backward) 366 | (gur_buffer_parm = scroll_info.keys.left) 367 | (gur_buffer_parm = scroll_info.keys.right) 368 | (gur_buffer_parm = scroll_info.keys.help) 369 | (gur_buffer_parm = scroll_info.keys.set_key) 370 | (gur_buffer_parm = scroll_info.keys.set_scroll_increment) 371 | (gur_buffer_parm = scroll_info.keys.quit) 372 | (gur_buffer_parm = scroll_info.keys.redisplay) 373 | (gur_buffer_parm = scroll_info.keys.start_of_report) 374 | (gur_buffer_parm = scroll_info.keys.end_of_report) 375 | (gur_buffer_parm = scroll_info.keys.multics_mode) 376 | (gur_buffer_parm = scroll_info.keys.goto) 377 then return; 378 gur_partial_match 379 = (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.forward, 1, gur_loop)) 380 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.backward, 1, gur_loop)) 381 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.left, 1, gur_loop)) 382 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.right, 1, gur_loop)) 383 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.help, 1, gur_loop)) 384 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.set_key, 1, gur_loop)) 385 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.set_scroll_increment, 1, gur_loop)) 386 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.quit, 1, gur_loop)) 387 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.redisplay, 1, gur_loop)) 388 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.start_of_report, 1, gur_loop)) 389 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.end_of_report, 1, gur_loop)) 390 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.multics_mode, 1, gur_loop)) 391 | (substr (gur_buffer_parm, 1, gur_loop) = substr (scroll_info.keys.goto, 1, gur_loop)); 392 end; 393 394 return; 395 396 end get_users_response; 397 398 housekeeping: proc; 399 400 /* Move the pointers for our needed structures. */ 401 402 display_results_ptr = scroll_info.display_arg_results_ptr; 403 report_cip = scroll_info.report_control_info_ptr; 404 work_area_ptr = scroll_info.area_ptr; 405 user_io_window_position_ip = scroll_info.user_io_window_position_info_ptr; 406 report_output_window_position_ip = scroll_info.report_output_window_position_info_ptr; 407 sci_ptr = scroll_info.ssu_info_ptr; 408 window_iocb_ptr = report_control_info.display_iocb_ptr; 409 page_ip = scroll_info.page_info_pointer; 410 window_status_info_ptr = scroll_info.window_status_info_pointer; 411 function_key_data_ptr = scroll_info.function_key_data_pointer; 412 format_document_options_ptr = scroll_info.format_document_op; 413 414 return; 415 416 end housekeeping; 417 418 prompt_for_more: proc ( 419 420 pfm_line_in_window_parm, /* input: where to write the prompt */ 421 pfm_user_wants_more_parm /* output: on if user wants more */ 422 ); 423 424 dcl pfm_break_character char (1) varying; 425 dcl pfm_buffer char (1); 426 dcl pfm_line_in_window_parm fixed bin parm; 427 dcl pfm_number_of_chars_read fixed bin (21); 428 dcl pfm_still_looking_for_a_valid_response bit (1) aligned; 429 dcl pfm_user_wants_more_parm bit (1) aligned parm; 430 431 /* Write the more prompt on caller designated line. Accept CR and DEL and mark parm accordingly. */ 432 433 pfm_still_looking_for_a_valid_response = ON; 434 435 do while (pfm_still_looking_for_a_valid_response); 436 pfm_still_looking_for_a_valid_response = OFF; 437 call window_$position_cursor (window_iocb_ptr, pfm_line_in_window_parm, 1, code); 438 call check_code; 439 call window_$clear_to_end_of_line (window_iocb_ptr, code); 440 call check_code; 441 call window_$write_sync_read (window_iocb_ptr, MORE_PROMPT, 1, 442 pfm_buffer, pfm_number_of_chars_read, pfm_break_character, code); 443 call check_code; 444 if pfm_number_of_chars_read = 0 445 then if pfm_break_character = CARRIAGE_RETURN 446 then pfm_user_wants_more_parm = ON; 447 else if pfm_break_character = DEL 448 then pfm_user_wants_more_parm = OFF; 449 else pfm_still_looking_for_a_valid_response = ON; 450 else pfm_still_looking_for_a_valid_response = ON; 451 if pfm_still_looking_for_a_valid_response 452 then do; 453 call window_$bell (window_iocb_ptr, code); 454 call check_code; 455 end; 456 end; 457 458 return; 459 460 end prompt_for_more; 461 462 prompt_user: proc ( 463 464 pu_prompt_parm, /* input: the prompt */ 465 pu_number_parm, /* output: the numeric response, or, */ 466 pu_response_parm, /* output: the character response */ 467 pu_numeric_parm /* input: if on a numeric response is required */ 468 ); 469 470 dcl pu_number_of_chars_read fixed bin (21); 471 dcl pu_number_parm fixed bin (35) parm; 472 dcl pu_numeric_parm bit (1) aligned parm; 473 dcl pu_prompt_parm char (*) parm; 474 dcl pu_response_buffer char (256); 475 dcl pu_response_line fixed bin; 476 dcl pu_response_parm char (*) parm; 477 dcl pu_still_looking_for_a_valid_response bit (1) aligned; 478 dcl pu_window_status_pending condition; 479 dcl pu_window_status_pending_flag bit (1) aligned; 480 481 /* 482* Prompt the user with the supplied prompt in the last line of the 483* window. Accept a numeric or character response depending on the 484* setting of pu_numeric_parm. Keep prompting until we get a valid 485* response. If we get a window_status_pending then re-write prompt 486* on the first line of the window after doing a get_window_status 487* control order. Use the iox_ entry point rather than a window_ 488* entrypoint because the window_ system still doesn't have an 489* equivalent. Note that the horrid window_status_pending never 490* comes back from the iox_ entrypoint. 491**/ 492 493 pu_window_status_pending_flag = OFF; 494 495 on pu_window_status_pending begin; 496 pu_window_status_pending_flag = ON; 497 pu_response_line = 1; 498 call write_prompt; 499 end; 500 501 pu_number_parm = 0; 502 pu_response_parm = ""; 503 pu_still_looking_for_a_valid_response = ON; 504 pu_response_line = report_output_window_position_info.height; 505 506 do while (pu_still_looking_for_a_valid_response); 507 call write_prompt; 508 call iox_$get_line (window_iocb_ptr, addr (pu_response_buffer), 509 length (pu_response_buffer), pu_number_of_chars_read, code); 510 if code ^= 0 511 then if code = error_table_$long_record 512 then; 513 else call abort_line (code, "Unable to read prompt response."); 514 else do; 515 pu_number_of_chars_read = pu_number_of_chars_read - 1; 516 if pu_numeric_parm 517 then if pu_number_of_chars_read > 0 & pu_number_of_chars_read < 10 518 then pu_still_looking_for_a_valid_response 519 = (verify (substr (pu_response_buffer, 1, pu_number_of_chars_read), DIGITS) ^= 0); 520 else; 521 else pu_still_looking_for_a_valid_response = OFF; 522 end; 523 if pu_still_looking_for_a_valid_response 524 then do; 525 call window_$bell (window_iocb_ptr, code); 526 if code ^= 0 527 then signal pu_window_status_pending; 528 else; 529 end; 530 end; 531 532 if pu_numeric_parm 533 then pu_number_parm = convert (pu_number_parm, 534 substr (pu_response_buffer, 1, pu_number_of_chars_read)); 535 else pu_response_parm = substr (pu_response_buffer, 1, pu_number_of_chars_read); 536 537 return; 538 539 write_prompt: proc; 540 541 /* Repeat the sequence until we correctly write the prompt. */ 542 543 if pu_window_status_pending_flag 544 then do; 545 call iox_$control (window_iocb_ptr, "get_window_status", 546 window_status_info_ptr, code); 547 if code ^= 0 548 then call abort_line (code, "Unable to peform a get_window_status control order."); 549 pu_window_status_pending_flag = OFF; 550 end; 551 552 call window_$position_cursor (window_iocb_ptr, pu_response_line, 1, code); 553 call window_$clear_to_end_of_line (window_iocb_ptr, code); 554 call window_$overwrite_text (window_iocb_ptr, 555 rtrim (pu_prompt_parm) || " (end with RETURN) ->", code); 556 557 if code ^= 0 558 then if code = video_et_$window_status_pending 559 then signal pu_window_status_pending; 560 else call abort_line (code, "Unable to write the prompt."); 561 else; 562 563 return; 564 565 end write_prompt; 566 567 end prompt_user; 568 569 scroll_the_report: proc; 570 571 /* 572* Display a chunk of the page or buffer. Perform the scrolling 573* function requested by the user. Return to the caller if we're 574* outside of the current page, or if we just crossed a buffer boundary. 575**/ 576 577 still_in_the_scrolling_business = ON; 578 579 do while (still_in_the_scrolling_business); 580 call display_chunk_of_page; 581 call setup_for_next_chunk; 582 end; 583 584 return; 585 586 end scroll_the_report; 587 588 set_function_key: proc ( 589 590 sfk_function_name_parm, /* input: function to set key to */ 591 sfk_function_key_sequence_parm, /* input: key sequence to set */ 592 sfk_code_parm /* output: success or failure */ 593 ); 594 595 dcl sfk_char_10 char (10); 596 dcl sfk_character_loop char (length (CONTROL_HYPHEN)); 597 dcl sfk_code_parm fixed bin (35) parm; 598 dcl sfk_function_name_parm char (*) parm; 599 dcl sfk_function_key_sequence_parm char (*) parm; 600 dcl sfk_function_key_sequence char (32); 601 dcl sfk_function_key_sequence_buffer char (32); 602 dcl sfk_loop fixed bin; 603 dcl sfk_no_match bit (1) aligned; 604 605 /* 606* Translate "escape-", "esc-", "control-X", "ctl-X", to the sequence 607* the terminal generates, where X is the character following the 608* "control-" or "ctl-" mnemonic. Next translate any of the recognized 609* mnemonics in the provided key sequence to what the terminal generates 610* (i.e. translate "down_arrow" into whatever the terminal generates). 611* Look up the supplied scrolling function name and assign the key 612* sequence to the slot in the table. Assign the mnemonic key sequence 613* to the slot in another table for it's display when help is invoked. 614**/ 615 616 sfk_code_parm = 0; 617 if index (sfk_function_key_sequence_parm, ESCAPE_HYPHEN) = 0 618 & index (sfk_function_key_sequence_parm, ESC_HYPHEN) = 0 619 & index (sfk_function_key_sequence_parm, CONTROL_HYPHEN) = 0 620 & index (sfk_function_key_sequence_parm, CTL_HYPHEN) = 0 621 then sfk_function_key_sequence = sfk_function_key_sequence_parm; 622 else do; 623 sfk_function_key_sequence = sfk_function_key_sequence_parm; 624 do sfk_character_loop = ESCAPE_HYPHEN, ESC_HYPHEN, CONTROL_HYPHEN, CTL_HYPHEN; 625 call translate_mnemonics (sfk_function_key_sequence, 626 sfk_character_loop, sfk_function_key_sequence_buffer, sfk_code_parm); 627 if sfk_code_parm ^= 0 628 then return; 629 sfk_function_key_sequence = sfk_function_key_sequence_buffer; 630 end; 631 end; 632 633 if sfk_function_key_sequence = KEY_MNEMONICS.FORWARD 634 then sfk_function_key_sequence = substr (function_key_seqs, 635 function_key_data.cursor_motion_keys.down (KEY_PLAIN).sequence_index, 636 function_key_data.cursor_motion_keys.down (KEY_PLAIN).sequence_length); 637 else if sfk_function_key_sequence = KEY_MNEMONICS.BACKWARD 638 then sfk_function_key_sequence = substr (function_key_seqs, 639 function_key_data.cursor_motion_keys.up (KEY_PLAIN).sequence_index, 640 function_key_data.cursor_motion_keys.up (KEY_PLAIN).sequence_length); 641 else if sfk_function_key_sequence = KEY_MNEMONICS.LEFT 642 then sfk_function_key_sequence = substr (function_key_seqs, 643 function_key_data.cursor_motion_keys.left (KEY_PLAIN).sequence_index, 644 function_key_data.cursor_motion_keys.left (KEY_PLAIN).sequence_length); 645 else if sfk_function_key_sequence = KEY_MNEMONICS.RIGHT 646 then sfk_function_key_sequence = substr (function_key_seqs, 647 function_key_data.cursor_motion_keys.right (KEY_PLAIN).sequence_index, 648 function_key_data.cursor_motion_keys.right (KEY_PLAIN).sequence_length); 649 else if sfk_function_key_sequence = HOME 650 then sfk_function_key_sequence = substr (function_key_seqs, 651 function_key_data.cursor_motion_keys.home (KEY_PLAIN).sequence_index, 652 function_key_data.cursor_motion_keys.home (KEY_PLAIN).sequence_length); 653 else do; 654 sfk_no_match = ON; 655 do sfk_loop = 0 to hbound (function_key_data.function_keys, 1) 656 while (sfk_no_match); 657 if sfk_function_key_sequence 658 = "f" || ltrim (convert (sfk_char_10, sfk_loop)) 659 then do; 660 sfk_function_key_sequence = substr (function_key_seqs, 661 function_key_data.function_keys (sfk_loop, KEY_PLAIN).sequence_index, 662 function_key_data.function_keys (sfk_loop, KEY_PLAIN).sequence_length); 663 sfk_no_match = OFF; 664 end; 665 end; 666 end; 667 668 do sfk_loop = 1 to HIGHEST_DISPLAY_FUNCTION_NUMBER; 669 if sfk_function_name_parm = FUNCTION_NAMES_AS_A_TABLE (sfk_loop) 670 then do; 671 keys_as_a_table (sfk_loop) = sfk_function_key_sequence; 672 mnemonic_key_sequences_as_a_table (sfk_loop) 673 = sfk_function_key_sequence_parm; 674 return; 675 end; 676 end; 677 678 sfk_code_parm = linus_error_$bad_fkey_name; 679 680 return; 681 682 translate_mnemonics: proc ( 683 684 tm_string_in_parm, /* input: string to be translated */ 685 tm_mnemonic_parm, /* input: the mnemonic to be translated */ 686 tm_string_out_parm, /* output: the translated string */ 687 tm_code_parm /* output: success or failure */ 688 ); 689 690 dcl tm_code_parm fixed bin (35) parm; 691 dcl tm_current_position fixed bin; 692 dcl tm_escape_is_replacement_char bit (1) aligned; 693 dcl tm_mnemonic_length fixed bin; 694 dcl tm_mnemonic char (32) varying; 695 dcl tm_mnemonic_parm char (*) parm; 696 dcl tm_still_translating bit (1) aligned; 697 dcl tm_string_in_parm char (*) parm; 698 dcl tm_string_index fixed bin; 699 dcl tm_string_length fixed bin; 700 dcl tm_string_out_parm char (*) parm; 701 dcl tm_string_varying char (32) varying; 702 dcl tm_target_character_index fixed bin; 703 dcl tm_translation_index fixed bin; 704 705 /* 706* Translate "escape-", "esc-", "control-X", and "ctl-X" into the 707* sequence the terminal generates. The "control-" or "ctl-" 708* mnemonic has to be followed by another character, as a terminal 709* can't generate control without pressing some other key. 710**/ 711 712 tm_code_parm = 0; 713 tm_mnemonic = rtrim (tm_mnemonic_parm); 714 715 if index (tm_string_in_parm, tm_mnemonic) = 0 716 then do; 717 tm_string_out_parm = tm_string_in_parm; 718 return; 719 end; 720 721 tm_mnemonic_length = length (tm_mnemonic); 722 tm_escape_is_replacement_char = (tm_mnemonic = ESCAPE_HYPHEN | tm_mnemonic = ESC_HYPHEN); 723 tm_string_varying = ""; 724 tm_still_translating = ON; 725 tm_string_length = length (rtrim (tm_string_in_parm)); 726 tm_current_position = 1; 727 728 do while (tm_still_translating); 729 tm_string_index = index (substr (tm_string_in_parm, tm_current_position), tm_mnemonic); 730 if tm_string_index ^= 0 731 then do; 732 if tm_current_position < tm_string_index 733 then tm_string_varying = tm_string_varying || substr (tm_string_in_parm, 734 tm_current_position, tm_string_index - tm_current_position); 735 if tm_escape_is_replacement_char 736 then do; 737 tm_string_varying = tm_string_varying || ESCAPE; 738 tm_current_position = tm_current_position + tm_string_index + tm_mnemonic_length - 1; 739 end; 740 else do; 741 tm_target_character_index = tm_current_position + tm_string_index + tm_mnemonic_length - 1; 742 if tm_target_character_index > tm_string_length 743 then do; 744 tm_code_parm = linus_error_$bad_fkey_sequence; 745 return; 746 end; 747 tm_translation_index = index (TRANSLATION_TABLE, 748 substr (tm_string_in_parm, tm_target_character_index, 1)); 749 if tm_translation_index = 0 750 then do; 751 tm_code_parm = linus_error_$bad_fkey_sequence; 752 return; 753 end; 754 if tm_translation_index > 32 755 then tm_translation_index = tm_translation_index - 32; 756 tm_string_varying = tm_string_varying || byte (tm_translation_index - 1); 757 tm_current_position = tm_target_character_index + 1; 758 end; 759 if tm_current_position > tm_string_length 760 then tm_still_translating = OFF; 761 end; 762 else do; 763 if tm_string_length >= tm_current_position 764 then tm_string_varying = tm_string_varying 765 || substr (tm_string_in_parm, tm_current_position); 766 tm_still_translating = OFF; 767 end; 768 end; 769 770 tm_string_out_parm = tm_string_varying; 771 772 return; 773 774 end translate_mnemonics; 775 776 end set_function_key; 777 778 setup_for_next_chunk: proc; 779 780 dcl sfnc_function_key_procs (HIGHEST_DISPLAY_FUNCTION_NUMBER) entry init ( 781 fkp_forward, 782 fkp_backward, 783 fkp_left, 784 fkp_right, 785 fkp_help, 786 fkp_set_key, 787 fkp_set_scroll_increment, 788 fkp_quit, 789 fkp_redisplay, 790 fkp_start_of_report, 791 fkp_end_of_report, 792 fkp_multics_mode, 793 fkp_goto); 794 dcl sfnc_function_number fixed bin; 795 dcl sfnc_loop fixed bin; 796 dcl sfnc_still_looking_for_a_valid_response bit (1) aligned; 797 dcl sfnc_users_response char (32); 798 799 /* Get a valid user response for a scroll function. Perform the function. */ 800 801 sfnc_still_looking_for_a_valid_response = ON; 802 803 do while (sfnc_still_looking_for_a_valid_response); 804 call get_users_response (sfnc_users_response); 805 806 do sfnc_loop = 1 to HIGHEST_DISPLAY_FUNCTION_NUMBER 807 while (sfnc_still_looking_for_a_valid_response); 808 if sfnc_users_response = keys_as_a_table (sfnc_loop) 809 then do; 810 sfnc_function_number = sfnc_loop; 811 sfnc_still_looking_for_a_valid_response = OFF; 812 end; 813 end; 814 815 if ^sfnc_still_looking_for_a_valid_response 816 then call sfnc_function_key_procs (sfnc_function_number); 817 if sfnc_still_looking_for_a_valid_response 818 then do; 819 call window_$bell (window_iocb_ptr, code); 820 call check_code; 821 end; 822 823 end; 824 825 return; 826 827 fkp_backward: proc; 828 829 dcl fb_beginning_line_number fixed bin; 830 831 /* 832* Make sure we don't try to go backward if we're at the beginning 833* of the report. If we're at the first line of a page then set the 834* page number back one and return to linus_display, and set the line 835* number very large so display_chunk_of_page can determine what the 836* last line of the previous page is once that information is available 837* (when we are called again). If we're not on the first line of a page 838* then decrement the current line number and return. 839**/ 840 841 if scroll_info.target_line_number = 1 842 then if scroll_info.target_page_number = 1 843 then do; 844 sfnc_still_looking_for_a_valid_response = ON; 845 return; 846 end; 847 else if report_control_info.flags.report_is_paginated 848 then do; 849 scroll_info.target_page_number = scroll_info.target_page_number - 1; 850 scroll_info.target_line_number = 99999; 851 still_in_the_scrolling_business = OFF; 852 return; 853 end; 854 else; 855 else if report_control_info.flags.report_is_paginated 856 then do; 857 scroll_info.target_line_number 858 = scroll_info.target_line_number - scroll_info.vertical_scroll_distance; 859 return; 860 end; 861 862 /* 863* We only make it this far if it's an unpaginated report. If the 864* beginning line number is less than 1 then return to linus_display 865* so it can get us the previous buffer. 866**/ 867 868 fb_beginning_line_number 869 = scroll_info.target_line_number - scroll_info.vertical_scroll_distance; 870 if fb_beginning_line_number < 1 871 then if scroll_info.target_page_number = 1 872 then do; 873 scroll_info.target_line_number = 1; 874 return; 875 end; 876 else do; 877 scroll_info.target_line_number 878 = scroll_info.last_line_number_in_previous_buffer 879 + scroll_info.target_line_number - scroll_info.vertical_scroll_distance; 880 still_in_the_scrolling_business = OFF; 881 scroll_info.target_page_number = scroll_info.target_page_number - 1; 882 return; 883 end; 884 else; 885 886 /* 887* Return to linus_display to get us the previous buffer if we 888* used two buffers for the previous display. 889**/ 890 891 scroll_info.target_line_number = fb_beginning_line_number; 892 if scroll_info.flags.buffer_boundary_just_crossed 893 then do; 894 scroll_info.flags.buffer_boundary_just_crossed = OFF; 895 still_in_the_scrolling_business = OFF; 896 end; 897 898 return; 899 900 end fkp_backward; 901 902 fkp_end_of_report: proc; 903 904 /* 905* If the report is paginated then set the page number very large. If 906* the report is unpaginated then set the goto_line_number_pending 907* flag and set the line number very large. Return to linus_display. 908**/ 909 910 still_in_the_scrolling_business = OFF; 911 912 if report_control_info.flags.report_is_paginated 913 then do; 914 scroll_info.target_page_number = LARGEST_PAGE_NUMBER; 915 scroll_info.target_line_number = 1; 916 end; 917 else do; 918 scroll_info.flags.goto_line_number_pending = ON; 919 scroll_info.target_line_number = LARGEST_LINE_NUMBER; 920 end; 921 922 return; 923 924 end fkp_end_of_report; 925 926 fkp_forward: proc; 927 928 dcl ff_beginning_line_number fixed bin; 929 dcl ff_number_of_left_over_lines fixed bin; 930 931 /* 932* Handle unpaginated reports first. If we just crossed a buffer 933* boundary and the first line to be displayed is in the first 934* buffer then return to linus_display so it can get it. Otherwise 935* we have just moved to the buffer we currently have. 936**/ 937 938 if scroll_info.flags.buffer_boundary_just_crossed 939 then do; 940 scroll_info.flags.buffer_boundary_just_crossed = OFF; 941 ff_number_of_left_over_lines 942 = scroll_info.last_line_number_in_previous_buffer - scroll_info.target_line_number + 1; 943 if ff_number_of_left_over_lines > scroll_info.vertical_scroll_distance 944 then do; 945 scroll_info.target_line_number = scroll_info.target_line_number 946 + scroll_info.vertical_scroll_distance; 947 still_in_the_scrolling_business = OFF; 948 return; 949 end; 950 scroll_info.target_line_number = scroll_info.vertical_scroll_distance - ff_number_of_left_over_lines + 1; 951 scroll_info.target_page_number = scroll_info.target_page_number + 1; 952 return; 953 end; 954 955 /* 956* This code does paginated reports. Advance line number. Make sure 957* we don't move off the end of the report. Return to linus_display 958* if we move off the current page. 959**/ 960 961 ff_beginning_line_number = scroll_info.target_line_number 962 + scroll_info.vertical_scroll_distance - scroll_info.top_margin_offset; 963 if ff_beginning_line_number > page_info.length 964 then if report_control_info.flags.report_is_formatted 965 & scroll_info.target_page_number = report_control_info.no_of_formatted_pages 966 then sfnc_still_looking_for_a_valid_response = ON; 967 else do; 968 scroll_info.target_page_number = scroll_info.target_page_number + 1; 969 scroll_info.target_line_number = 1; 970 still_in_the_scrolling_business = OFF; 971 end; 972 else scroll_info.target_line_number = ff_beginning_line_number; 973 974 return; 975 976 end fkp_forward; 977 978 fkp_goto: proc; 979 980 dcl fg_prompt char (11); 981 dcl fg_line_or_page_number fixed bin (35); 982 dcl fg_still_looking_for_a_valid_response bit (1) aligned; 983 984 /* 985* Prompt for page or line number. Accept only a positive integer. 986* Return to linus_display to get the page or buffer. 987**/ 988 989 if report_control_info.flags.report_is_paginated 990 then fg_prompt = "Page number"; 991 else fg_prompt = "Line number"; 992 993 fg_still_looking_for_a_valid_response = ON; 994 do while (fg_still_looking_for_a_valid_response); 995 call prompt_user (fg_prompt, fg_line_or_page_number, 996 users_response, NUMERIC_RESPONSE); 997 if fg_line_or_page_number ^= 0 998 then do; 999 if report_control_info.flags.report_is_paginated 1000 then do; 1001 scroll_info.target_page_number = fg_line_or_page_number; 1002 scroll_info.target_line_number = 1; 1003 end; 1004 else do; 1005 scroll_info.flags.goto_line_number_pending = ON; 1006 scroll_info.target_line_number = fg_line_or_page_number; 1007 end; 1008 fg_still_looking_for_a_valid_response = OFF; 1009 still_in_the_scrolling_business = OFF; 1010 end; 1011 else do; 1012 call window_$bell (window_iocb_ptr, code); 1013 call check_code; 1014 end; 1015 end; 1016 1017 return; 1018 1019 end fkp_goto; 1020 1021 fkp_help: proc; 1022 1023 dcl fh_character_read char (1) varying; 1024 dcl fh_help_string char (1024); 1025 dcl fh_help_string_length fixed bin (21); 1026 dcl fh_number_of_chars_read fixed bin (21); 1027 dcl fh_still_looking_for_a_valid_response bit (1) aligned; 1028 dcl fh_returned_help_list char (512); 1029 dcl fh_still_helpful bit (1) aligned; 1030 dcl fh_users_response char (256); 1031 1032 /* 1033* Format and write the general help message. Format and write the 1034* mnemonic key sequences and function names list, or, the specific 1035* help string for one of the functions. Repeat if user wants more help. 1036**/ 1037 1038 fh_still_helpful = ON; 1039 1040 do while (fh_still_helpful); 1041 call format_document_$string (GENERAL_HELP_MESSAGE, fh_help_string, 1042 fh_help_string_length, format_document_options_ptr, code); 1043 if code ^= 0 1044 then call abort_line (code, ""); 1045 fh_still_looking_for_a_valid_response = ON; 1046 1047 do while (fh_still_looking_for_a_valid_response); 1048 fh_still_looking_for_a_valid_response = OFF; 1049 call write_help_string (NO_PROMPT, fh_character_read); 1050 call iox_$get_line (window_iocb_ptr, addr (fh_users_response), 1051 length (fh_users_response), fh_number_of_chars_read, code); 1052 if code ^= 0 1053 then call abort_line (code, ""); 1054 if fh_number_of_chars_read ^> 1 1055 then fh_still_looking_for_a_valid_response = ON; 1056 else do; 1057 fh_number_of_chars_read = fh_number_of_chars_read - 1; 1058 if substr (fh_users_response, 1, fh_number_of_chars_read) = GENERAL_HELP_LIST 1059 then do; 1060 call ioa_$rsnnl (GENERAL_HELP_LIST_MESSAGE, fh_help_string, 1061 fh_help_string_length, mnemonic_key_sequences.forward, 1062 mnemonic_key_sequences.backward, mnemonic_key_sequences.left, 1063 mnemonic_key_sequences.right, mnemonic_key_sequences.help, 1064 mnemonic_key_sequences.set_key, mnemonic_key_sequences.set_scroll_increment, 1065 mnemonic_key_sequences.quit, mnemonic_key_sequences.redisplay, 1066 mnemonic_key_sequences.start_of_report, mnemonic_key_sequences.end_of_report, 1067 mnemonic_key_sequences.multics_mode, mnemonic_key_sequences.goto); 1068 call write_help_string (PROMPT, fh_character_read); 1069 end; 1070 else call help_for_function (fh_still_looking_for_a_valid_response); 1071 end; 1072 if fh_still_looking_for_a_valid_response 1073 then do; 1074 call window_$bell (window_iocb_ptr, code); 1075 call check_code; 1076 end; 1077 end; 1078 1079 if fh_character_read ^= "h" 1080 then fh_still_helpful = OFF; 1081 1082 end; 1083 1084 return; 1085 1086 help_for_function: proc ( 1087 1088 hff_invalid_function_parm /* output: off if it was a valid function */ 1089 ); 1090 1091 dcl hff_function_number fixed bin; 1092 dcl hff_invalid_function_parm bit (1) aligned parm; 1093 dcl hff_loop fixed bin; 1094 dcl hff_target_function char (32); 1095 1096 /* 1097* Find the scroll function by name or mnemonic key sequence. Write 1098* the help string for it. 1099**/ 1100 1101 hff_invalid_function_parm = ON; 1102 hff_target_function = substr (fh_users_response, 1, fh_number_of_chars_read); 1103 1104 do hff_loop = 1 to HIGHEST_DISPLAY_FUNCTION_NUMBER 1105 while (hff_invalid_function_parm); 1106 if hff_target_function = FUNCTION_NAMES_AS_A_TABLE (hff_loop) 1107 | hff_target_function = mnemonic_key_sequences_as_a_table (hff_loop) 1108 then do; 1109 hff_invalid_function_parm = OFF; 1110 hff_function_number = hff_loop; 1111 end; 1112 end; 1113 1114 if hff_invalid_function_parm 1115 then return; 1116 1117 call ioa_$rsnnl (HELP_HEADER_CONTROL_STRING, fh_returned_help_list, 1118 fh_number_of_chars_read, FUNCTION_NAMES_AS_A_TABLE (hff_function_number), 1119 mnemonic_key_sequences_as_a_table (hff_function_number), HELP_MESSAGES (hff_function_number)); 1120 call format_document_$string (fh_returned_help_list, fh_help_string, 1121 fh_help_string_length, format_document_options_ptr, code); 1122 if code ^= 0 1123 then call abort_line (code, ""); 1124 call write_help_string (PROMPT, fh_character_read); 1125 1126 return; 1127 1128 end help_for_function; 1129 1130 write_help_string: proc ( 1131 1132 whs_prompt_parm, /* input: on means prompt to make sure user has seen it */ 1133 whs_char_read_parm /* output: the char read if above bit is on */ 1134 ); 1135 1136 dcl whs_char_read_parm char (1) varying parm; 1137 dcl whs_current_position fixed bin; 1138 dcl whs_current_line_on_screen fixed bin; 1139 dcl whs_new_line_position fixed bin; 1140 dcl whs_prompt_parm bit (1) aligned parm; 1141 dcl whs_still_filling bit (1) aligned; 1142 dcl whs_wants_more bit (1) aligned; 1143 1144 /* Fill and write the help string with optional prompt. */ 1145 1146 whs_still_filling = ON; 1147 whs_current_position = 1; 1148 whs_current_line_on_screen = 1; 1149 if whs_prompt_parm 1150 then do; 1151 substr (fh_help_string, fh_help_string_length + 1) = HOW_TO_END_DISPLAY_MESSAGE; 1152 fh_help_string_length = fh_help_string_length + length (HOW_TO_END_DISPLAY_MESSAGE) + 1; 1153 end; 1154 else whs_char_read_parm = ""; 1155 call window_$clear_window (window_iocb_ptr, code); 1156 call check_code; 1157 1158 do while (whs_still_filling); 1159 whs_new_line_position = index (substr (fh_help_string, whs_current_position), NEWLINE); 1160 if whs_new_line_position = 0 1161 then whs_still_filling = OFF; 1162 else do; 1163 if whs_current_line_on_screen = report_output_window_position_info.height 1164 then do; 1165 call prompt_for_more (whs_current_line_on_screen, whs_wants_more); 1166 if ^whs_wants_more 1167 then do; 1168 call fkp_redisplay; 1169 return; 1170 end; 1171 else whs_current_line_on_screen = 1; 1172 end; 1173 call window_$position_cursor (window_iocb_ptr, whs_current_line_on_screen, 1, code); 1174 call check_code; 1175 call window_$clear_to_end_of_line (window_iocb_ptr, code); 1176 call check_code; 1177 call window_$overwrite_text (window_iocb_ptr, 1178 substr (fh_help_string, whs_current_position, whs_new_line_position - 1), code); 1179 call check_code; 1180 whs_current_line_on_screen = whs_current_line_on_screen + 1; 1181 whs_current_position = whs_current_position + whs_new_line_position; 1182 if whs_current_position > fh_help_string_length 1183 then whs_still_filling = OFF; 1184 end; 1185 end; 1186 1187 if whs_prompt_parm 1188 then do; 1189 call window_$get_one_unechoed_char (window_iocb_ptr, whs_char_read_parm, ON, code); 1190 call check_code; 1191 end; 1192 1193 return; 1194 1195 end write_help_string; 1196 1197 end fkp_help; 1198 1199 fkp_left: proc; 1200 1201 /* 1202* Make sure we don't go left if we're at character position 1. Move 1203* left and adjust if we're too far left. If we've used two buffers 1204* in the previous display return to linus_display so it can get us 1205* back to the first. 1206**/ 1207 1208 if scroll_info.left_vertical_position = 1 1209 then do; 1210 sfnc_still_looking_for_a_valid_response = ON; 1211 return; 1212 end; 1213 1214 scroll_info.left_vertical_position = max ( 1215 scroll_info.left_vertical_position - scroll_info.horizontal_scroll_distance, 1); 1216 1217 if scroll_info.flags.buffer_boundary_just_crossed 1218 then do; 1219 still_in_the_scrolling_business = OFF; 1220 scroll_info.flags.buffer_boundary_just_crossed = OFF; 1221 end; 1222 1223 return; 1224 1225 end fkp_left; 1226 1227 fkp_multics_mode: proc; 1228 1229 /* 1230* If window is user_i/o then clear it. Write message telling user how 1231* to get back to display. Get to Multics level. Do a redisplay. 1232**/ 1233 1234 if window_iocb_ptr = iox_$user_io | window_iocb_ptr = iox_$user_output 1235 then call window_$clear_window (window_iocb_ptr, code); 1236 call check_code; 1237 call window_$position_cursor (window_iocb_ptr, 1, 1, code); 1238 call check_code; 1239 call window_$clear_to_end_of_line (window_iocb_ptr, code); 1240 call check_code; 1241 call window_$overwrite_text (window_iocb_ptr, HOW_TO_GET_BACK_MESSAGE, code); 1242 call check_code; 1243 if window_iocb_ptr = iox_$user_io | window_iocb_ptr = iox_$user_output 1244 then do; 1245 call window_$position_cursor (window_iocb_ptr, 2, 1, code); 1246 call check_code; 1247 end; 1248 1249 unspec (command_level_flags) = OFF; 1250 call cu_$cl (command_level_flags); 1251 call fkp_redisplay; 1252 1253 return; 1254 1255 end fkp_multics_mode; 1256 1257 fkp_quit: proc; 1258 1259 /* Thank you for using this product. Come back y'all. */ 1260 1261 code = error_table_$end_of_info; 1262 still_in_the_scrolling_business = OFF; 1263 1264 return; 1265 1266 end fkp_quit; 1267 1268 fkp_redisplay: proc; 1269 1270 /* This is all it takes to get a redisplay. Pretty simple huh? */ 1271 1272 still_in_the_scrolling_business = OFF; 1273 1274 return; 1275 1276 end fkp_redisplay; 1277 1278 fkp_right: proc; 1279 1280 /* 1281* Make sure we son't go too far right. If we used two buffers during 1282* the last display then return to linus_display so it can get us 1283* back the first one. 1284**/ 1285 1286 if scroll_info.left_vertical_position + report_output_window_position_info.width >= page_info.width 1287 then do; 1288 sfnc_still_looking_for_a_valid_response = ON; 1289 return; 1290 end; 1291 1292 scroll_info.left_vertical_position 1293 = scroll_info.left_vertical_position + scroll_info.horizontal_scroll_distance; 1294 1295 if scroll_info.flags.buffer_boundary_just_crossed 1296 then do; 1297 still_in_the_scrolling_business = OFF; 1298 scroll_info.flags.buffer_boundary_just_crossed = OFF; 1299 end; 1300 1301 return; 1302 1303 end fkp_right; 1304 1305 fkp_set_key: proc; 1306 1307 dcl fkp_valid_response bit (1) aligned; 1308 dcl fkp_prompt char (21); 1309 1310 /* 1311* Prompt for function name and mnemonic key sequence. Assign the 1312* key sequence to the function. 1313**/ 1314 1315 fkp_prompt = "Function name"; 1316 fkp_valid_response = OFF; 1317 1318 do while (^fkp_valid_response); 1319 call prompt_user (fkp_prompt, 0, users_response, NON_NUMERIC_RESPONSE); 1320 function_name = users_response; 1321 fkp_valid_response = valid_function_name (function_name); 1322 if ^fkp_valid_response 1323 then call window_$bell (window_iocb_ptr, code); 1324 call check_code; 1325 end; 1326 1327 fkp_prompt = "Mnemonic key sequence"; 1328 fkp_valid_response = OFF; 1329 1330 do while (^fkp_valid_response); 1331 call prompt_user (fkp_prompt, 0, 1332 users_response, NON_NUMERIC_RESPONSE); 1333 call set_function_key (function_name, users_response, code); 1334 fkp_valid_response = (code = 0); 1335 if ^fkp_valid_response 1336 then call window_$bell (window_iocb_ptr, code); 1337 call check_code; 1338 end; 1339 1340 return; 1341 1342 end fkp_set_key; 1343 1344 fkp_set_scroll_increment: proc; 1345 1346 call set_scroll_height_or_width; 1347 1348 return; 1349 1350 end fkp_set_scroll_increment; 1351 1352 fkp_start_of_report: proc; 1353 1354 /* Return to linus_display so it can get us page 1 or buffer 1. */ 1355 1356 still_in_the_scrolling_business = OFF; 1357 scroll_info.target_page_number = 1; 1358 scroll_info.target_line_number = 1; 1359 1360 return; 1361 1362 end fkp_start_of_report; 1363 1364 set_scroll_height_or_width: proc; 1365 1366 dcl sshow_height bit (1) aligned; 1367 dcl sshow_prompt char (42); 1368 dcl sshow_scroll_height_or_width fixed bin (35); 1369 dcl sshow_still_looking_for_a_valid_response bit (1) aligned; 1370 1371 /* Set the scroll increment for height or width. */ 1372 1373 sshow_prompt = """h"" for height, anything else for width"; 1374 call prompt_user (sshow_prompt, sshow_scroll_height_or_width, 1375 users_response, NON_NUMERIC_RESPONSE); 1376 sshow_height = (users_response = "h"); 1377 if sshow_height 1378 then sshow_prompt = "New scroll height"; 1379 else sshow_prompt = "New scroll width"; 1380 1381 sshow_still_looking_for_a_valid_response = ON; 1382 1383 do while (sshow_still_looking_for_a_valid_response); 1384 sshow_still_looking_for_a_valid_response = OFF; 1385 call prompt_user (sshow_prompt, sshow_scroll_height_or_width, 1386 users_response, NUMERIC_RESPONSE); 1387 if sshow_height 1388 then if sshow_scroll_height_or_width > page_info.length 1389 | sshow_scroll_height_or_width < TOP_MARGIN_HEIGHT 1390 then sshow_still_looking_for_a_valid_response = ON; 1391 else; 1392 else if sshow_scroll_height_or_width > page_info.width 1393 then sshow_still_looking_for_a_valid_response = ON; 1394 else; 1395 if ^sshow_still_looking_for_a_valid_response 1396 then if sshow_height 1397 then scroll_info.vertical_scroll_distance = sshow_scroll_height_or_width; 1398 else scroll_info.horizontal_scroll_distance = sshow_scroll_height_or_width; 1399 else; 1400 if ^sshow_still_looking_for_a_valid_response 1401 then call fkp_redisplay; 1402 else do; 1403 call window_$bell (window_iocb_ptr, code); 1404 call check_code; 1405 end; 1406 end; 1407 1408 return; 1409 1410 end set_scroll_height_or_width; 1411 1412 end setup_for_next_chunk; 1413 1414 setup_scroll: proc; 1415 1416 /* Set the pointers we will need. */ 1417 1418 scroll_ip = display_results.scroll_info_ptr; 1419 scroll_info.display_arg_results_ptr = display_results_ptr; 1420 scroll_info.report_control_info_ptr = report_cip; 1421 scroll_info.area_ptr = work_area_ptr; 1422 scroll_info.ssu_info_ptr = sci_ptr; 1423 1424 /* Allocate the structures for the user_i/o and report windows, and the window_status_info. */ 1425 1426 allocate user_io_window_position_info in (work_area) 1427 set (user_io_window_position_ip); 1428 scroll_info.user_io_window_position_info_ptr 1429 = user_io_window_position_ip; 1430 unspec (user_io_window_position_info) = OFF; 1431 user_io_window_position_info.version = window_position_info_version_1; 1432 1433 allocate report_output_window_position_info in (work_area) 1434 set (report_output_window_position_ip); 1435 scroll_info.report_output_window_position_info_ptr 1436 = report_output_window_position_ip; 1437 report_output_window_position_info = user_io_window_position_info; 1438 1439 allocate window_status_info in (work_area) set (window_status_info_ptr); 1440 window_status_info.version = window_status_version_1; 1441 scroll_info.window_status_info_pointer = window_status_info_ptr; 1442 1443 /* Turn on the video system if it's not already on. */ 1444 1445 if video_data_$terminal_iocb = null () 1446 then do; 1447 scroll_info.flags.video_was_already_on = OFF; 1448 call video_utils_$turn_on_login_channel (code, reason); 1449 if code ^= 0 1450 then call abort_line (code, reason); 1451 end; 1452 else scroll_info.flags.video_was_already_on = ON; 1453 1454 /* 1455* If -window was specified by the user make sure it meets the 1456* requirements. If it wasn't setup a shriek named window and 1457* shrink user_i/o. 1458**/ 1459 1460 if display_results.window_flag 1461 then do; 1462 call iox_$look_iocb (display_results.window_name, window_iocb_ptr, code); 1463 if code ^= 0 1464 then call abort_line (code, "The window " || rtrim (display_results.window_name) || " doesn't exist."); 1465 if window_iocb_ptr -> iocb.attach_descrip_ptr ^= null () 1466 then if window_iocb_ptr -> iocb.open_descrip_ptr = null () 1467 then call abort_line (0, "The output switch " 1468 || rtrim (display_results.window_name) || " is attached but not open."); 1469 else; 1470 else call abort_line (0, "The output switch " 1471 || rtrim (display_results.window_name) || " is not attached."); 1472 scroll_info.flags.user_io_was_shrunk = OFF; 1473 call iox_$control (window_iocb_ptr, "get_window_info", 1474 report_output_window_position_ip, code); 1475 if code ^= 0 1476 then call abort_line (code, "Unable to get the window information."); 1477 if report_output_window_position_info.height < MINIMUM_WINDOW_SIZE 1478 then call abort_line (0, MINIMUM_WINDOW_SIZE_ERROR_MESSAGE); 1479 end; 1480 else do; 1481 scroll_info.flags.user_io_was_shrunk = ON; 1482 call iox_$control (iox_$user_io, "get_window_info", 1483 user_io_window_position_ip, code); 1484 if code ^= 0 1485 then call abort_line (code, "Unable to get the window information."); 1486 if user_io_window_position_info.height < MINIMUM_LINES_NEEDED 1487 then call abort_line (video_et_$insuff_room_for_window, 1488 MINIMUM_LINES_NEEDED_ERROR_MESSAGE); 1489 call window_$clear_window (iox_$user_io, code); 1490 if code ^= 0 1491 then call abort_line (code, "Unable to clear the user_i/o window."); 1492 report_output_window_position_info = user_io_window_position_info; 1493 user_io_window_position_info.line = user_io_window_position_info.line 1494 + user_io_window_position_info.height - USER_IO_WINDOW_HEIGHT; 1495 user_io_window_position_info.height = USER_IO_WINDOW_HEIGHT; 1496 call iox_$control (iox_$user_io, "set_window_info", 1497 user_io_window_position_ip, code); 1498 if code ^= 0 1499 then call abort_line (code, "Unable to set the window info for user_i/o."); 1500 switch_name = unique_chars_ ("0"b) || ".linus_display"; 1501 call iox_$find_iocb (switch_name, window_iocb_ptr, code); 1502 if code ^= 0 1503 then call abort_line (code, "Unable to find the io control block for " 1504 || rtrim (switch_name) || "."); 1505 report_output_window_position_info.height 1506 = report_output_window_position_info.height - USER_IO_WINDOW_HEIGHT; 1507 call window_$create (video_data_$terminal_iocb, 1508 report_output_window_position_ip, window_iocb_ptr, code); 1509 if code ^= 0 1510 then call abort_line (code, "Unable to create the window for the report."); 1511 end; 1512 1513 /* Fill in the scroll_info and format_document_options structures. */ 1514 1515 report_control_info.display_iocb_ptr = window_iocb_ptr; 1516 1517 scroll_info.number_of_lines_for_report_display = report_output_window_position_info.height; 1518 scroll_info.vertical_scroll_distance = report_output_window_position_info.height - 1; 1519 scroll_info.horizontal_scroll_distance = report_output_window_position_info.width - 10; 1520 scroll_info.target_page_number = 1; 1521 scroll_info.target_line_number = 1; 1522 scroll_info.left_vertical_position = 1; 1523 1524 allocate format_document_options in (work_area) set (format_document_options_ptr); 1525 unspec (format_document_options) = OFF; 1526 format_document_options.version_number = format_document_version_2; 1527 format_document_options.switches.galley_sw = ON; 1528 format_document_options.switches.break_word_sw = ON; 1529 format_document_options.switches.max_line_length_sw = ON; 1530 format_document_options.switches.sub_err_sw = ON; 1531 format_document_options.switches.literal_sw = ON; 1532 format_document_options.switches.dont_compress_sw = ON; 1533 format_document_options.line_length = report_output_window_position_info.width; 1534 format_document_options.switches.adj_sw = OFF; 1535 scroll_info.format_document_op = format_document_options_ptr; 1536 1537 return; 1538 1539 end setup_scroll; 1540 1541 terminate_scroll: proc; 1542 1543 /* 1544* Clear the window. Destroy the window and restore user_i/o back to 1545* it's original size if -window wasn't given by the user. Turn off 1546* the video system if we turned it on. 1547**/ 1548 1549 call window_$clear_window (window_iocb_ptr, code); 1550 if code ^= 0 1551 then call ssu_$print_message (sci_ptr, code); 1552 1553 if ^display_results.window_flag 1554 then do; 1555 call window_$destroy (window_iocb_ptr, code); 1556 if code ^= 0 1557 then call ssu_$print_message (sci_ptr, code); 1558 user_io_window_position_info.line 1559 = report_output_window_position_info.line; 1560 user_io_window_position_info.height 1561 = report_output_window_position_info.height 1562 + user_io_window_position_info.height; 1563 call iox_$control (iox_$user_io, "set_window_info", 1564 user_io_window_position_info_ptr, code); 1565 if code ^= 0 1566 then call ssu_$print_message (sci_ptr, code); 1567 call iox_$destroy_iocb (window_iocb_ptr, code); 1568 if code ^= 0 1569 then call ssu_$print_message (sci_ptr, code); 1570 end; 1571 1572 if ^scroll_info.flags.video_was_already_on 1573 then do; 1574 call video_utils_$turn_off_login_channel (code); 1575 if code ^= 0 1576 then call ssu_$print_message (sci_ptr, code); 1577 end; 1578 1579 return; 1580 1581 end terminate_scroll; 1582 1583 valid_function_name: proc ( 1584 1585 vfn_function_name_parm) /* input: function name */ 1586 1587 returns (bit (1) aligned); 1588 1589 dcl vfn_function_name_parm char (*) parm; 1590 1591 /* Return true if it's a valid function name. */ 1592 1593 return ((vfn_function_name_parm = FUNCTION_NAMES.FORWARD) 1594 | (vfn_function_name_parm = FUNCTION_NAMES.BACKWARD) 1595 | (vfn_function_name_parm = FUNCTION_NAMES.LEFT) 1596 | (vfn_function_name_parm = FUNCTION_NAMES.RIGHT) 1597 | (vfn_function_name_parm = FUNCTION_NAMES.HELP) 1598 | (vfn_function_name_parm = FUNCTION_NAMES.SET_KEY) 1599 | (vfn_function_name_parm = FUNCTION_NAMES.SET_SCROLL_INCREMENT) 1600 | (vfn_function_name_parm = FUNCTION_NAMES.QUIT) 1601 | (vfn_function_name_parm = FUNCTION_NAMES.REDISPLAY) 1602 | (vfn_function_name_parm = FUNCTION_NAMES.START_OF_REPORT) 1603 | (vfn_function_name_parm = FUNCTION_NAMES.END_OF_REPORT) 1604 | (vfn_function_name_parm = FUNCTION_NAMES.MULTICS_MODE) 1605 | (vfn_function_name_parm = FUNCTION_NAMES.GOTO)); 1606 1607 end valid_function_name; 1608 1609 dcl BLANK char (1) static internal options (constant) init (" "); 1610 1611 dcl CARRIAGE_RETURN char (1) static internal options (constant) init (" "); 1612 dcl CONTROL_HYPHEN char (8) static internal options (constant) init ("control-"); 1613 dcl CTL_HYPHEN char (4) static internal options (constant) init ("ctl-"); 1614 1615 dcl DEL char (1) static internal options (constant) init (""); 1616 dcl DIGITS char (10) static int options (constant) init ("0123456789"); 1617 1618 dcl ESCAPE char (1) static internal options (constant) init (""); 1619 dcl ESC_HYPHEN char (4) static internal options (constant) init ("esc-"); 1620 dcl ESCAPE_HYPHEN char (7) static internal options (constant) init ("escape-"); 1621 1622 dcl GENERAL_HELP_MESSAGE char (128) static internal options (constant) init ( 1623 "Type the function name or mnemonic key sequence, or type ?? for a list of function names and key sequences. (end with RETURN) ->"); 1624 dcl GENERAL_HELP_LIST char (2) static internal options (constant) init ("??"); 1625 dcl GENERAL_HELP_LIST_MESSAGE char (203) static internal options (constant) init ( 1626 "forward (^a)^/backward (^a)^/left (^a)^/right (^a)^/help (^a)^/set_key (^a)^/set_scroll_increment (^a)^/quit (^a)^/redisplay (^a)^/start_of_report (^a)^/end_of_report (^a)^/multics_mode (^a)^/goto (^a)^/"); 1627 1628 dcl HOME char (4) static internal options (constant) init ("home"); 1629 dcl HELP_HEADER_CONTROL_STRING char (15) internal static options (constant) init ("^a^x(^a)^2/^a^/"); 1630 dcl HELP_MESSAGES (13) char (254) internal static options (constant) init ( 1631 1632 "The forward function moves the window forward into the report. The scroll height controls how many lines forward the window moves. The set_scroll_increment function can be used to change the scroll height.", 1633 1634 "The backward function moves the window backward into the report. The scroll height controls how many lines backward the window moves. The set_scroll_increment function can be used to change the scroll height.", 1635 1636 "The left function moves the window left in the report. The scroll width controls how many characters left the window moves. The set_scroll_increment function can be used to change the scroll width.", 1637 1638 "The right function moves the window right in the report. The scroll width controls how many characters right the window moves. The set_scroll_increment function can be used to change the scroll width.", 1639 1640 "The help function provides general information on the display function names and key sequences used to invoke the functions, or, more detailed help on any specific display function.", 1641 1642 "The set_key function provides a way to associate key sequences with display functions. The function name and mnemonic key sequences are prompted for.", 1643 1644 "The set_scroll_increment function provides a way to change the scroll height and width. Height is the number of lines forward or backward that the window will move; width is the number of characters left or right that the window will move.", 1645 1646 "The quit function terminates the current invocation of the display request.", 1647 1648 "The redisplay function redisplays the contents of the window. This is useful after the window contents have become invalid due to line noise, interactive messages, etc.", 1649 1650 "The start_of_report function provides a way to get back to the start of the report from any arbitrary place in the report.", 1651 1652 "The end_of_report function provides a way to get to the end of the report from any arbitrary place in the report.", 1653 1654 "The multics_mode function provides a way to suspend the current invocation of display and use other Multics facilities. Typing ""start"" resumes the suspended invocation of display.", 1655 1656 "The goto function provides a means to go directly to any page within a paginated report, or, directly to any line number within an unpaginated report." 1657 ); 1658 dcl HOW_TO_END_DISPLAY_MESSAGE char (62) static internal options (constant) init ("Type any single character for redisplay or h for more help -> 1659 "); 1660 dcl HOW_TO_GET_BACK_MESSAGE char (38) static internal options (constant) init ( 1661 "Type ""start"" to get back to display."); 1662 1663 dcl LARGEST_LINE_NUMBER fixed bin (35) static internal options (constant) init (34359738365); 1664 dcl LARGEST_PAGE_NUMBER fixed bin (21) static internal options (constant) init (2097151); 1665 1666 dcl MINIMUM_LINES_NEEDED fixed bin static internal options (constant) init (9); 1667 dcl MINIMUM_LINES_NEEDED_ERROR_MESSAGE char (45) static internal options (constant) init ("The user_i/o window must be at least 9 lines."); 1668 dcl MINIMUM_WINDOW_SIZE fixed bin static internal options (constant) init (5); 1669 dcl MINIMUM_WINDOW_SIZE_ERROR_MESSAGE char (45) static internal options (constant) init ( 1670 "The provided window must be at least 5 lines."); 1671 dcl MORE_PROMPT char (47) static internal options (constant) init ( 1672 "More? (RETURN for more; DEL to discard output.)"); 1673 1674 dcl NEWLINE char (1) static internal options (constant) init (" 1675 "); 1676 dcl NO_PROMPT bit (1) aligned internal static options (constant) init ("0"b); 1677 dcl NON_NUMERIC_RESPONSE bit (1) aligned static int options (constant) init ("0"b); 1678 dcl NUMERIC_RESPONSE bit (1) aligned static int options (constant) init ("1"b); 1679 1680 dcl OFF bit (1) aligned static internal options (constant) init ("0"b); 1681 dcl ON bit (1) aligned static internal options (constant) init ("1"b); 1682 1683 dcl PROMPT bit (1) aligned internal static options (constant) init ("1"b); 1684 1685 dcl TRANSLATION_TABLE char (63) internal static options (constant) init ( 1686 "@ABCDEFGHIJKLMNOPQRSTUVWXYZ1\]^_`abcdefghijklmnopqrstuvwxyz{|}~"); 1687 dcl TOP_MARGIN_HEIGHT fixed bin static int options (constant) init (4); 1688 1689 dcl USER_IO_WINDOW_HEIGHT fixed bin static int options (constant) init (4); 1690 1691 dcl addr builtin; 1692 1693 dcl byte builtin; 1694 1695 dcl code fixed bin (35); 1696 dcl 1 command_level_flags aligned, 1697 2 reset_sw bit (1) unaligned, 1698 2 mbx bit (35) unaligned; 1699 dcl convert builtin; 1700 dcl convert_status_code_ entry (fixed bin(35), char(8) aligned, char(100) aligned); 1701 dcl cu_$cl entry (1 aligned, 2 bit(1) unal, 2 bit(35) unal); 1702 1703 dcl 1 display_results like display_arg_results based (display_results_ptr); 1704 dcl display_results_ptr ptr; 1705 1706 dcl error_message char (256) varying; 1707 dcl error_table_$end_of_info fixed bin(35) ext static; 1708 dcl error_table_$long_record fixed bin(35) ext static; 1709 1710 dcl format_document_$string entry (char(*), char(*), fixed bin(21), ptr, fixed bin(35)); 1711 dcl function_name char (32); 1712 dcl function_key_sequence char (32); 1713 1714 dcl hbound builtin; 1715 1716 dcl index builtin; 1717 dcl ioa_$rsnnl entry() options(variable); 1718 1719 dcl length builtin; 1720 dcl linus_error_$bad_fkey_name fixed bin(35) ext static; 1721 dcl linus_error_$bad_fkey_sequence fixed bin(35) ext static; 1722 dcl linus_error_$bad_report_display fixed bin(35) ext static; 1723 dcl long_message char (100) aligned; 1724 dcl ltrim builtin; 1725 1726 dcl max builtin; 1727 dcl min builtin; 1728 1729 dcl null builtin; 1730 1731 dcl reason char (64); 1732 dcl 1 report_output_window_position_info like window_position_info based (report_output_window_position_ip); 1733 dcl report_output_window_position_ip ptr; 1734 dcl rtrim builtin; 1735 1736 dcl sci_ptr ptr; 1737 dcl short_message char (8) aligned; 1738 dcl ssu_$abort_line entry() options(variable); 1739 dcl ssu_$print_message entry() options(variable); 1740 dcl still_in_the_scrolling_business bit (1) aligned; 1741 dcl substr builtin; 1742 dcl switch_name char (42); 1743 dcl sys_info$max_seg_size fixed bin(35) ext static; 1744 1745 dcl unique_chars_ entry (bit(*)) returns(char(15)); 1746 dcl unspec builtin; 1747 dcl 1 user_io_window_position_info like window_position_info based (user_io_window_position_ip); 1748 dcl user_io_window_position_ip ptr; 1749 dcl users_response char (32); 1750 1751 dcl verify builtin; 1752 dcl video_data_$terminal_iocb ptr static external; 1753 dcl video_et_$insuff_room_for_window fixed bin(35) ext static; 1754 dcl video_et_$window_status_pending fixed bin(35) ext static; 1755 dcl video_utils_$turn_on_login_channel entry (fixed bin(35), char(*)); 1756 dcl video_utils_$turn_off_login_channel entry (fixed bin(35)); 1757 1758 dcl window_iocb_ptr ptr; 1759 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 1760 dcl work_area_ptr ptr; 1761 1 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 1 2* 1 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 1 4* to version_2. 1 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 1 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 1 7* Modified 83.03.03 by PWB to add sub_err_sw. 1 8* Modified 83.06.07 by PWB to add dont_fill_sw. 1 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 1 10**/ 1 11 1 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 1 13 2 version_number fixed bin, /* input */ 1 14 /* must be format_document_version_2 */ 1 15 2 indentation fixed bin, /* input */ 1 16 /* all lines must be indented by this value */ 1 17 2 line_length fixed bin, /* input */ 1 18 /* initial line length */ 1 19 2 switches, 1 20 3 pgno_sw bit (1) unal, /* input */ 1 21 /* end each page with a centered page number */ 1 22 3 adj_sw bit (1) unal, /* input */ 1 23 /* adjust mode initially on */ 1 24 /* only meaningful if dont_fill_sw = "0"b */ 1 25 3 galley_sw bit (1) unal, /* input */ 1 26 /* galley mode -- no page breaks */ 1 27 3 error_sw bit (1) unal, /* input */ 1 28 /* report all errors on error_output */ 1 29 3 literal_sw bit (1) unal, /* input */ 1 30 /* "1"b - interpret all lines as text */ 1 31 /* "0"b - lines that start with "." are controls */ 1 32 3 file_sw bit (1) unal, /* output */ 1 33 /* has meaning for non-zero storage system status codes */ 1 34 /* "1"b code refers to output file */ 1 35 /* "0"b code refers to input file */ 1 36 3 dont_compress_sw bit (1) unal, /* input */ 1 37 /* "1"b - don't compress white space */ 1 38 /* "0"b - compress white space when filling */ 1 39 3 break_word_sw bit (1) unal, /* input */ 1 40 /* "1"b - break a word rather than exceed line_length */ 1 41 /* "0"b - write an overlength line if no spaces found */ 1 42 3 max_line_length_sw bit (1) unal, /* input */ 1 43 /* "1"b - line_length cannot be exceeded */ 1 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 1 45 3 dont_break_indented_lines_sw /* input */ 1 46 bit (1) unal, /* don't break a line that begins with whitespace */ 1 47 /* when it is the last line, or the next line is */ 1 48 /* null or the next line begins with whitespace */ 1 49 3 sub_err_sw bit (1) unal, /* input */ 1 50 /* quietly call sub_err_ with diagnostic errors */ 1 51 3 dont_fill_sw bit (1) unal, /* input */ 1 52 /* "1"b - fill mode off initially */ 1 53 /* "0"b - fill mode on initially */ 1 54 3 hyphenation_sw bit (1) unal, 1 55 3 mbz bit (23) unal, /* input */ 1 56 /* MUST be zero */ 1 57 2 syllable_size 1 58 fixed bin; /* input */ 1 59 /* smallest portion of word */ 1 60 /* to be left by hyphenation */ 1 61 1 62 dcl format_document_options_ptr ptr; 1 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 1 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 1 65 1 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 1762 1763 2 1 /* BEGIN INCLUDE FILE ... function_key_data.incl.pl1 2 2* 2 3* This include file defines the structure used for ttt_info_$function_key_data 2 4* MCR 4671 James R. Davis Sept 80 2 5**/ 2 6 2 7 dcl 1 function_key_data aligned based (function_key_data_ptr), 2 8 2 version fixed bin, 2 9 2 highest fixed bin, /* highest fkey */ 2 10 2 sequence, /* string of all seqs. */ 2 11 3 seq_ptr pointer, 2 12 3 seq_len fixed bin (21), 2 13 2 cursor_motion_keys, 2 14 3 home (0:3) like key_info, 2 15 3 left (0:3) like key_info, 2 16 3 up (0:3) like key_info, 2 17 3 right (0:3) like key_info, 2 18 3 down (0:3) like key_info, 2 19 2 function_keys (0:function_key_data_highest refer 2 20 (function_key_data.highest), 0:3) like key_info; 2 21 2 22 dcl (KEY_PLAIN init (0), 2 23 KEY_SHIFT init (1), 2 24 KEY_CTRL init (2), 2 25 KEY_CTRL_AND_SHIFT init (3) 2 26 ) fixed bin internal static options (constant); 2 27 2 28 dcl 1 key_info unaligned based (key_info_ptr), 2 29 2 sequence_index fixed bin (12) unsigned unaligned, 2 30 2 sequence_length fixed bin (6) unsigned unaligned; /* 0 -> not exist */ 2 31 2 32 dcl function_key_seqs char (function_key_data.sequence.seq_len) 2 33 based (function_key_data.sequence.seq_ptr); 2 34 dcl function_key_data_ptr ptr; 2 35 dcl function_key_data_highest fixed bin; 2 36 dcl function_key_data_version_1 2 37 fixed bin internal static options (constant) init (1); 2 38 dcl key_info_ptr ptr; 2 39 2 40 2 41 /* END INCLUDE FILE ... function_key_data.incl.pl1 */ 1764 1765 3 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 3 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 3 3* version number to IOX2. */ 3 4 /* format: style2 */ 3 5 3 6 dcl 1 iocb aligned based, /* I/O control block. */ 3 7 2 version character (4) aligned, /* IOX2 */ 3 8 2 name char (32), /* I/O name of this block. */ 3 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 3 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 3 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 3 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 3 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 3 14 2 reserved bit (72), /* Reserved for future use. */ 3 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 3 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 3 17 /* open(p,mode,not_used,s) */ 3 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 3 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 20 /* get_line(p,bufptr,buflen,actlen,s) */ 3 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 3 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 3 24 /* put_chars(p,bufptr,buflen,s) */ 3 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 3 26 /* modes(p,newmode,oldmode,s) */ 3 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 3 28 /* position(p,u1,u2,s) */ 3 29 2 control entry (ptr, char (*), ptr, fixed (35)), 3 30 /* control(p,order,infptr,s) */ 3 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 32 /* read_record(p,bufptr,buflen,actlen,s) */ 3 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 3 34 /* write_record(p,bufptr,buflen,s) */ 3 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 3 36 /* rewrite_record(p,bufptr,buflen,s) */ 3 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 3 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 3 39 /* seek_key(p,key,len,s) */ 3 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 3 41 /* read_key(p,key,len,s) */ 3 42 2 read_length entry (ptr, fixed (21), fixed (35)), 3 43 /* read_length(p,len,s) */ 3 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 3 45 /* open_file(p,mode,desc,not_used,s) */ 3 46 2 close_file entry (ptr, char (*), fixed bin (35)), 3 47 /* close_file(p,desc,s) */ 3 48 2 detach entry (ptr, char (*), fixed bin (35)); 3 49 /* detach(p,desc,s) */ 3 50 3 51 declare iox_$iocb_version_sentinel 3 52 character (4) aligned external static; 3 53 3 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 1766 1767 4 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 4 2 4 3 /* Written 05/04/78 by C. D. Tavares */ 4 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 4 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 4 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 4 7 4 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 4 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 4 10 iox_$close entry (pointer, fixed bin (35)), 4 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 4 12 iox_$delete_record entry (pointer, fixed bin (35)), 4 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 4 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 4 15 iox_$err_not_attached entry options (variable), 4 16 iox_$err_not_closed entry options (variable), 4 17 iox_$err_no_operation entry options (variable), 4 18 iox_$err_not_open entry options (variable), 4 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 4 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 4 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 4 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 4 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 4 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 4 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 4 28 iox_$propagate entry (pointer), 4 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 4 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 4 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 4 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 4 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 4 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 4 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 4 40 4 41 dcl (iox_$user_output, 4 42 iox_$user_input, 4 43 iox_$user_io, 4 44 iox_$error_output) external static pointer; 4 45 4 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 1768 1769 5 1 /* BEGIN INCLUDE FILE linus_display_arg_list.incl.pl1 5 2* 5 3* Shared structure between the linus_display request and 5 4* its argument processor, linus_display_process_args. 5 5* 5 6* Al Dupuis - August 1983 5 7**/ 5 8 /* format: off */ 5 9 5 10 dcl 1 display_arg_results aligned, 5 11 5 12 2 flags, 5 13 3 all_flag bit (1) aligned, /* DEFAULT */ 5 14 3 character_positions_flag bit (1) aligned, 5 15 3 debug_flag bit (1) aligned, 5 16 3 keep_report_flag bit (1) aligned, 5 17 3 keep_retrieval_flag bit (1) aligned, 5 18 3 long_flag bit (1) aligned, /* DEFAULT */ 5 19 3 new_report_flag bit (1) aligned, /* DEFAULT */ 5 20 3 new_retrieval_flag bit (1) aligned, /* DEFAULT */ 5 21 3 output_file_flag bit (1) aligned, 5 22 3 output_switch_flag bit (1) aligned, 5 23 3 truncate_flag bit (1) aligned, /* DEFAULT */ 5 24 3 pages_flag bit (1) aligned, 5 25 3 last_page_flag bit (1) aligned, 5 26 3 scroll_flag bit (1) aligned, 5 27 3 sort_flag bit (1) aligned, 5 28 3 temp_dir_flag bit (1) aligned, 5 29 3 time_flag bit (1) aligned, 5 30 3 window_flag bit (1) aligned, 5 31 3 passes_flag bit (1) aligned, 5 32 5 33 2 pathnames, 5 34 3 output_switch_name char (32) unal, /* -output_switch */ 5 35 3 output_file_directory_name char (168) unal, /* -output_file */ 5 36 3 output_file_entry_name char (32) unal, /* -output_file */ 5 37 3 output_file_pathname char (168) unal, /* -output_file */ 5 38 3 temp_dir_pathname char (168) unal, /* -temp_dir */ 5 39 3 window_name char (32) unal, /* -window */ 5 40 5 41 2 miscellaneous, 5 42 3 left_margin_position fixed bin, /* -character_positions */ 5 43 3 right_margin_position fixed bin, /* -character_positions */ 5 44 3 number_of_passes fixed bin, /* -passes */ 5 45 3 sort_information_ptr ptr, /* -sort */ 5 46 3 scroll_info_ptr ptr, /* -scroll */ 5 47 3 specified_pages (NUMBER_OF_ALLOWED_SPECIFIED_PAGES) bit (1) unal; /* -pages */ 5 48 5 49 dcl NUMBER_OF_ALLOWED_SPECIFIED_PAGES static internal options (constant) init (10000); 5 50 /* END INCLUDE FILE linus_display_arg_list.incl.pl1 */ 1770 1771 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 */ 1772 1773 7 1 /* BEGIN INCLUDE FILE linus_page_info.incl.pl1 7 2* 7 3* Written - Al Dupuis - August 1983 7 4**/ 7 5 /* format: off */ 7 6 7 7 dcl 1 formatted_page_info aligned based (formatted_page_ip), 7 8 2 maximum_number_of_detail_blocks fixed bin, /* the most that can appear on a page */ 7 9 2 page_header_length fixed bin, /* page header in lines */ 7 10 2 title_block_length fixed bin, /* titles in lines */ 7 11 2 page_footer_length fixed bin, /* page footer in lines */ 7 12 2 number_of_detail_blocks fixed bin, 7 13 2 detail_blocks (fpi_init_maximum_number_of_detail_blocks 7 14 refer (formatted_page_info.maximum_number_of_detail_blocks)), 7 15 3 row_number fixed bin (35), /* position in the table */ 7 16 3 beginning_line_number fixed bin, /* beginning line on page */ 7 17 3 group_header_length fixed bin, /* group header length in lines */ 7 18 3 row_header_length fixed bin, /* row header in lines */ 7 19 3 row_length fixed bin, /* row value in lines */ 7 20 3 subtotal_length fixed bin, /* subtotal in lines */ 7 21 3 subcount_length fixed bin, /* subcount in lines */ 7 22 3 total_length fixed bin, /* total in lines */ 7 23 3 count_length fixed bin, /* count in lines */ 7 24 3 row_footer_length fixed bin, /* row footer in lines */ 7 25 3 group_footer_length fixed bin; /* group footer length in lines */ 7 26 dcl formatted_page_ip ptr; 7 27 dcl fpi_init_maximum_number_of_detail_blocks fixed bin; 7 28 7 29 dcl 1 page_info aligned based (page_ip), 7 30 2 width fixed bin, /* width in chars */ 7 31 2 length fixed bin, /* length in lines */ 7 32 2 total_characters fixed bin (21), /* width * length */ 7 33 2 page_info_size fixed bin, /* size of this structure in words */ 7 34 2 page_ptr ptr, /* points to the actual page */ 7 35 2 page_overstrike_info_ptr ptr, /* points to the overstrike info */ 7 36 2 formatted_page_info_ptr ptr; /* points to formatted_page_info */ 7 37 7 38 dcl page_defined_as_chars (page_info.total_characters) char (1) based (page_info.page_ptr); 7 39 dcl page_defined_as_lines (page_info.length) char (page_info.width) based (page_info.page_ptr); 7 40 dcl page_defined_as_a_string char (page_info.total_characters) based (page_info.page_ptr); 7 41 dcl page_ip ptr; 7 42 7 43 dcl 1 page_overstrike_info aligned based (page_overstrike_ip), 7 44 2 number_of_bits_or_chars fixed bin (21), /* number of chars in the page */ 7 45 2 bit_map (page_info.total_characters /* on means this char on the page is overstruck */ 7 46 refer (page_overstrike_info.number_of_bits_or_chars)) bit (1) unaligned, 7 47 2 chars (page_info.total_characters /* this is the overstrike character */ 7 48 refer (page_overstrike_info.number_of_bits_or_chars)) char (1) unaligned; 7 49 dcl page_overstrike_ip ptr; 7 50 7 51 dcl 1 page_overstrike_info_redefined aligned based (page_overstrike_ip), 7 52 2 number_of_bits_or_chars fixed bin (21), 7 53 2 bit_map bit (page_overstrike_info_redefined.number_of_bits_or_chars) unaligned, 7 54 2 chars char (page_overstrike_info_redefined.number_of_bits_or_chars) unaligned; 7 55 7 56 /* END INCLUDE FILE linus_page_info.incl.pl1 */ 1774 1775 8 1 /* BEGIN INCLUDE FILE linus_report_info.incl.pl1 8 2* Information needed to control the report environment. 8 3* Al Dupuis - August 1983 8 4**/ 8 5 /* format: off */ 8 6 8 7 dcl 1 report_control_info aligned based (report_cip), 8 8 2 flags, 8 9 3 report_is_paginated bit (1) unaligned, /* paged or one continous stream */ 8 10 3 table_has_been_started bit (1) unaligned, /* table clean up is necessary */ 8 11 3 table_is_full bit (1) unaligned, /* no more retrieves are necessary */ 8 12 3 report_has_been_started bit (1) unaligned, /* report clean up is necessary */ 8 13 3 report_is_formatted bit (1) unaligned, /* no more formatting is necessary */ 8 14 3 permanent_report bit (1) unaligned, /* or disposable */ 8 15 3 permanent_table bit (1) unaligned, /* or disposable */ 8 16 3 report_has_just_been_completed bit (1) unaligned, /* used for printing timers */ 8 17 3 table_has_just_been_loaded bit (1) unaligned, /* used for printing timers */ 8 18 3 multi_pass_mode bit (1) unaligned, /* on if we are to do more than 1 pass */ 8 19 3 available bit (26) unaligned, 8 20 2 format_options_flags, /* used to determine if value is default */ 8 21 3 general_report_default_value (NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE) bit (1) unaligned, 8 22 3 general_column_default_value (NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE) bit (1) unaligned, 8 23 2 value_seg_ptr ptr, /* the options value seg */ 8 24 2 name_value_area_ptr ptr, /* area for name-value allocations */ 8 25 2 name_value_temp_seg_ptr ptr, /* temp seg for name-value space */ 8 26 2 display_work_area_ptr ptr, /* display workspace */ 8 27 2 report_temp_seg_ptr ptr, /* report workspace */ 8 28 2 report_work_area_ptr ptr, /* report workspace */ 8 29 2 format_report_info_ptr ptr, /* info needed to create a report */ 8 30 2 input_string_temp_seg_ptr ptr, /* report workspace */ 8 31 2 output_string_temp_seg_ptr ptr, /* report workspace */ 8 32 2 editing_strings_temp_seg_ptr ptr, /* report workspace */ 8 33 2 headers_temp_seg_ptr ptr, /* report workspace */ 8 34 2 display_iocb_ptr ptr, /* report is displayed through this */ 8 35 2 selection_expression_identifier fixed bin, /* current selection expression */ 8 36 2 options_identifier fixed bin, /* current set of options */ 8 37 2 report_identifier fixed bin, /* current report */ 8 38 2 retrieval_identifier fixed bin, /* current retrieval */ 8 39 2 no_of_rows_retrieved fixed bin (35), /* current no of rows */ 8 40 2 no_of_formatted_pages fixed bin (21), /* current no of pages */ 8 41 2 number_of_passes fixed bin, /* number of times report will be formatted */ 8 42 2 table_loading_time float bin (63), 8 43 2 table_sorting_time float bin (63), 8 44 2 table_deletion_time float bin (63), 8 45 2 report_setup_time float bin (63), 8 46 2 report_formatting_time float bin (63), 8 47 2 report_display_time float bin (63), 8 48 2 report_deletion_time float bin (63), 8 49 2 ssu_evaluate_active_string_time float bin (63), 8 50 2 temp_dir_unique_id bit (36), /* uid of temp dir */ 8 51 2 temp_dir_name char (168) unaligned; /* the dir where we place the retrieved table and report */ 8 52 dcl report_cip ptr init (null ()); 8 53 8 54 /* END INCLUDE FILE linus_report_info.incl.pl1 */ 1776 1777 9 1 /* BEGIN INCLUDE FILE linus_scroll_info.incl.pl1 9 2* 9 3* Written - Al Dupuis - August 1983 9 4**/ 9 5 /* format: off */ 9 6 9 7 dcl 1 ESCAPE_KEYS aligned static internal options (constant), 9 8 2 FORWARD char (2) init ("f"), 9 9 2 BACKWARD char (2) init ("b"), 9 10 2 LEFT char (2) init ("l"), 9 11 2 RIGHT char (2) init ("r"), 9 12 2 HELP char (2) init ("?"), 9 13 2 SET_KEY char (2) init ("k"), 9 14 2 SET_SCROLL_INCREMENT char (2) init ("i"), 9 15 2 QUIT char (2) init ("q"), 9 16 2 REDISPLAY char (2) init ("d"), 9 17 2 START_OF_REPORT char (2) init ("s"), 9 18 2 END_OF_REPORT char (2) init ("e"), 9 19 2 MULTICS_MODE char (2) init ("m"), 9 20 2 GOTO char (2) init ("g"); 9 21 9 22 dcl ESCAPE_KEYS_AS_A_TABLE (HIGHEST_DISPLAY_FUNCTION_NUMBER) aligned char (2) based (addr (ESCAPE_KEYS)); 9 23 9 24 dcl 1 ESCAPE_KEY_MNEMONICS aligned static internal options (constant), 9 25 2 FORWARD char (5) init ("esc-f"), 9 26 2 BACKWARD char (5) init ("esc-b"), 9 27 2 LEFT char (5) init ("esc-l"), 9 28 2 RIGHT char (5) init ("esc-r"), 9 29 2 HELP char (5) init ("esc-?"), 9 30 2 SET_KEY char (5) init ("esc-k"), 9 31 2 SET_SCROLL_INCREMENT char (5) init ("esc-i"), 9 32 2 QUIT char (5) init ("esc-q"), 9 33 2 REDISPLAY char (5) init ("esc-d"), 9 34 2 START_OF_REPORT char (5) init ("esc-s"), 9 35 2 END_OF_REPORT char (5) init ("esc-e"), 9 36 2 MULTICS_MODE char (5) init ("esc-m"), 9 37 2 GOTO char (5) init ("esc-g"); 9 38 9 39 dcl ESCAPE_KEY_MNEMONICS_AS_A_TABLE (HIGHEST_DISPLAY_FUNCTION_NUMBER) aligned char (5) based (addr (ESCAPE_KEY_MNEMONICS)); 9 40 9 41 dcl 1 FUNCTION_NAMES aligned static internal options (constant), 9 42 2 FORWARD char (32) init ("forward"), 9 43 2 BACKWARD char (32) init ("backward"), 9 44 2 LEFT char (32) init ("left"), 9 45 2 RIGHT char (32) init ("right"), 9 46 2 HELP char (32) init ("help"), 9 47 2 SET_KEY char (32) init ("set_key"), 9 48 2 SET_SCROLL_INCREMENT char (32) init ("set_scroll_increment"), 9 49 2 QUIT char (32) init ("quit"), 9 50 2 REDISPLAY char (32) init ("redisplay"), 9 51 2 START_OF_REPORT char (32) init ("start_of_report"), 9 52 2 END_OF_REPORT char (32) init ("end_of_report"), 9 53 2 MULTICS_MODE char (32) init ("multics_mode"), 9 54 2 GOTO char (32) init ("goto"); 9 55 9 56 dcl FUNCTION_NAMES_AS_A_TABLE (HIGHEST_DISPLAY_FUNCTION_NUMBER) aligned char (32) based (addr (FUNCTION_NAMES)); 9 57 9 58 dcl HIGHEST_DISPLAY_FUNCTION_NUMBER fixed bin static int options (constant) init (13); 9 59 9 60 dcl HIGHEST_NUMBERED_FUNCTION_KEY_NEEDED fixed bin static int options (constant) init (9); 9 61 9 62 dcl 1 KEY_MNEMONICS aligned static internal options (constant), 9 63 2 FORWARD char (12) init ("down_arrow"), 9 64 2 BACKWARD char (12) init ("up_arrow"), 9 65 2 LEFT char (12) init ("left_arrow"), 9 66 2 RIGHT char (12) init ("right_arrow"), 9 67 2 HELP char (12) init ("f1"), 9 68 2 SET_KEY char (12) init ("f2"), 9 69 2 SET_SCROLL_INCREMENT char (12) init ("f3"), 9 70 2 QUIT char (12) init ("f4"), 9 71 2 REDISPLAY char (12) init ("f5"), 9 72 2 START_OF_REPORT char (12) init ("f6"), 9 73 2 END_OF_REPORT char (12) init ("f7"), 9 74 2 MULTICS_MODE char (12) init ("f8"), 9 75 2 GOTO char (12) init ("f9"); 9 76 9 77 dcl KEY_MNEMONICS_AS_A_TABLE (HIGHEST_DISPLAY_FUNCTION_NUMBER) aligned char (12) based (addr (KEY_MNEMONICS)); 9 78 9 79 dcl 1 function_key_info aligned, 9 80 2 forward char (32), /* down arrow or esc-f */ 9 81 2 backward char (32), /* up arrow or esc-b */ 9 82 2 left char (32), /* left arrow or esc-l */ 9 83 2 right char (32), /* right arrow or esc-r */ 9 84 2 help char (32), /* F1 or esc-? */ 9 85 2 set_key char (32), /* F2 or esc-k */ 9 86 2 set_scroll_increment char (32), /* F3 or esc-i */ 9 87 2 quit char (32), /* F4 or esc-q */ 9 88 2 redisplay char (32), /* F5 or esc-d */ 9 89 2 start_of_report char (32), /* F6 or esc-s */ 9 90 2 end_of_report char (32), /* F7 or esc-e */ 9 91 2 multics_mode char (32), /* F8 or esc-m */ 9 92 2 goto char (32); /* F9 or esc-g */ 9 93 9 94 dcl keys_as_a_table (HIGHEST_DISPLAY_FUNCTION_NUMBER) char (32) based (addr (scroll_info.keys)); 9 95 9 96 dcl mnemonic_key_sequences_as_a_table (HIGHEST_DISPLAY_FUNCTION_NUMBER) aligned char (32) based (addr (scroll_info.mnemonic_key_sequences)); 9 97 9 98 dcl 1 scroll_info aligned based (scroll_ip), 9 99 2 flags, 9 100 3 video_was_already_on bit (1) unaligned, 9 101 3 user_io_was_shrunk bit (1) unaligned, 9 102 3 escapes_in_use bit (1) unaligned, 9 103 3 on_the_last_page bit (1) unaligned, 9 104 3 buffer_boundary_just_crossed bit (1) unaligned, 9 105 3 goto_line_number_pending bit (1) unaligned, 9 106 3 available bit (30) unaligned, 9 107 2 number_of_lines_for_report_display fixed bin, 9 108 2 target_page_number fixed bin (21), 9 109 2 target_line_number fixed bin (35), 9 110 2 left_vertical_position fixed bin, 9 111 2 top_margin_offset fixed bin, 9 112 2 horizontal_scroll_distance fixed bin, 9 113 2 vertical_scroll_distance fixed bin, 9 114 2 last_line_number_in_previous_buffer fixed bin, 9 115 2 user_io_window_position_info_ptr ptr, 9 116 2 report_output_window_position_info_ptr ptr, 9 117 2 display_arg_results_ptr ptr, 9 118 2 area_ptr ptr, 9 119 2 report_control_info_ptr ptr, 9 120 2 function_key_data_pointer ptr, 9 121 2 window_status_info_pointer ptr, 9 122 2 page_info_pointer ptr, 9 123 2 ssu_info_ptr ptr, 9 124 2 format_document_op ptr, 9 125 2 keys like function_key_info, 9 126 2 mnemonic_key_sequences like function_key_info; 9 127 9 128 dcl scroll_ip ptr; 9 129 9 130 /* END INCLUDE FILE linus_sroll_info.incl.pl1 */ 1778 1779 10 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 10 2 /* format: style3 */ 10 3 10 4 /* Modified 26 January 1982 by William York to add the set_more_handler 10 5* and reset_more_handler control orders. */ 10 6 /* Modified October 1982 by WMY to add set and get_token_characters, 10 7* set and get_more_prompt. */ 10 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 10 9* structure. */ 10 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 10 11* partial screen width windows. */ 10 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 10 13* This should be removed when window_info.incl.pl1 is created. */ 10 14 /* Modified 29 February 1984 by Barmar to add version 1 10 15* get_editor_key_bindings_info. */ 10 16 /* Modified 1 March 1984 by Barmar to add version 1 10 17* set_editor_key_bindings_info. */ 10 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 10 19* line_editor_key_bindings_info, which includes the name, description, and 10 20* info path */ 10 21 10 22 /* structure for the set_window_info and get_window_info 10 23* control orders. */ 10 24 10 25 dcl 1 window_position_info 10 26 based (window_position_info_ptr), 10 27 2 version fixed bin, 10 28 2 origin, 10 29 3 column fixed bin, 10 30 3 line fixed bin, 10 31 2 extent, 10 32 3 width fixed bin, 10 33 3 height fixed bin; 10 34 10 35 dcl (window_position_info_version, window_position_info_version_1) 10 36 fixed bin internal static init (1) options (constant); 10 37 dcl window_position_info_ptr 10 38 pointer; 10 39 10 40 /* structure for the set_window_status and get_window_status 10 41* control orders */ 10 42 10 43 declare window_status_info_ptr 10 44 pointer; 10 45 declare 1 window_status_info 10 46 aligned based (window_status_info_ptr), 10 47 2 version fixed bin, 10 48 2 status_string bit (36) aligned; /* string (window_status) */ 10 49 /* see window_status.incl.pl1 for the contents of this string */ 10 50 10 51 10 52 declare (window_status_version, window_status_version_1) 10 53 fixed bin internal static init (1) options (constant); 10 54 10 55 /* info structure for the set_more_responses and get_more_responses control 10 56* orders */ 10 57 10 58 10 59 dcl 1 more_responses_info 10 60 aligned based (more_responses_info_ptr), 10 61 2 version fixed bin, 10 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 10 63 2 n_noes fixed bin, 10 64 2 yeses char (32) unaligned, 10 65 2 noes char (32) unaligned; 10 66 10 67 dcl (more_responses_info_version_1, more_responses_version) 10 68 fixed bin internal static init (1) options (constant); 10 69 dcl more_responses_info_ptr 10 70 pointer; 10 71 10 72 /* structure for the set_break_table and get_break_table 10 73* control orders */ 10 74 10 75 declare break_table_ptr pointer; 10 76 declare 1 break_table_info aligned based (break_table_ptr), 10 77 2 version fixed bin, 10 78 2 breaks (0:127) bit (1) unaligned; 10 79 10 80 declare (break_table_info_version, break_table_info_version_1) 10 81 fixed bin init (1) internal static options (constant); 10 82 10 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 10 84 2 version fixed bin, 10 85 2 flags unaligned, 10 86 3 old_handler_valid 10 87 bit(1), 10 88 3 pad bit(35), 10 89 2 more_handler entry (pointer, bit(1) aligned), 10 90 2 old_more_handler entry (pointer, bit(1) aligned); 10 91 10 92 declare more_handler_info_ptr pointer; 10 93 10 94 declare (more_handler_info_version, more_handler_info_version_3) 10 95 fixed bin internal static options (constant) init (3); 10 96 10 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 10 98 2 version char(8), 10 99 2 token_character_count 10 100 fixed bin, 10 101 2 token_characters 10 102 char (128) unaligned; 10 103 10 104 declare token_characters_info_ptr pointer; 10 105 10 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 10 107 10 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 10 109 2 version char(8), 10 110 2 more_prompt char(80); 10 111 10 112 declare more_prompt_info_ptr pointer; 10 113 10 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 10 115 10 116 /* Line editor stuff ... */ 10 117 10 118 dcl line_editor_key_binding_info_ptr 10 119 pointer; 10 120 10 121 dcl line_editor_binding_count 10 122 fixed bin; 10 123 dcl line_editor_longest_sequence 10 124 fixed bin; 10 125 /* For each binding, action defines what to do for that sequence. Constants 10 126* are defined in window_editor_values.incl.pl1. Only if action is set to 10 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 10 128 10 129 dcl 1 line_editor_key_binding_info 10 130 aligned based (line_editor_key_binding_info_ptr), 10 131 2 version char(8), 10 132 2 binding_count fixed bin, 10 133 2 longest_sequence fixed bin, 10 134 2 bindings (line_editor_binding_count refer 10 135 (line_editor_key_binding_info.binding_count)), 10 136 3 sequence char(line_editor_longest_sequence refer 10 137 (line_editor_key_binding_info.longest_sequence)) varying, 10 138 3 action fixed bin, 10 139 3 numarg_action fixed binary, 10 140 3 editor_routine entry (pointer, fixed bin(35)), 10 141 3 name char (64) varying unaligned, 10 142 3 description char (256) varying unaligned, 10 143 3 info_path unaligned, 10 144 4 info_dir char (168), 10 145 4 info_entry char (32); 10 146 10 147 10 148 dcl line_editor_key_binding_info_version_3 10 149 char(8) static options (constant) init ("lekbi003"); 10 150 10 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 10 152 2 version char (8), 10 153 2 flags, 10 154 3 entire_state bit (1) unaligned, 10 155 3 mbz bit (35) unaligned, 10 156 2 key_binding_info_ptr ptr, 10 157 2 entire_state_ptr ptr; 10 158 10 159 dcl get_editor_key_bindings_info_ptr ptr; 10 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 10 161 10 162 dcl 1 set_editor_key_bindings_info aligned 10 163 based (set_editor_key_bindings_info_ptr), 10 164 2 version char (8), 10 165 2 flags, 10 166 3 replace bit (1) unaligned, 10 167 3 update bit (1) unaligned, 10 168 3 mbz bit (34) unaligned, 10 169 2 key_binding_info_ptr ptr; 10 170 10 171 dcl set_editor_key_bindings_info_ptr ptr; 10 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 10 173 10 174 /* This should be moved to window_info.incl.pl1 when that include file is 10 175* created. JR 2/1/84 */ 10 176 10 177 dcl 1 window_edit_line_info 10 178 based (window_edit_line_info_ptr), 10 179 2 version char (8), 10 180 2 line_ptr ptr, 10 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 10 182 10 183 dcl window_edit_line_info_version_1 10 184 char (8) static options (constant) init ("wedl0001"); 10 185 10 186 dcl window_edit_line_info_ptr 10 187 ptr; 10 188 10 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 1780 1781 11 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 11 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 11 3 11 4 /* format: style3 */ 11 5 11 6 declare window_$bell entry (pointer, fixed binary (35)); 11 7 declare window_$clear_region 11 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 11 9 declare window_$clear_to_end_of_line 11 10 entry (pointer, fixed binary (35)); 11 11 declare window_$clear_to_end_of_window 11 12 entry (pointer, fixed binary (35)); 11 13 declare window_$clear_window 11 14 entry (pointer, fixed binary (35)); 11 15 declare window_$delete_chars 11 16 entry (pointer, fixed binary, fixed binary (35)); 11 17 declare window_$get_cursor_position 11 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 19 11 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 11 21 11 22 declare window_$get_echoed_chars 11 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 11 24 fixed binary (35)); 11 25 declare window_$get_unechoed_chars 11 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 11 27 fixed binary (35)); 11 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 11 29 declare window_$overwrite_text 11 30 entry (pointer, character (*), fixed binary (35)); 11 31 declare window_$position_cursor 11 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 33 11 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 11 35 11 36 declare window_$position_cursor_rel 11 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 11 38 11 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 11 40* code); */ 11 41 11 42 declare window_$scroll_region 11 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 11 44 declare window_$sync entry (pointer, fixed binary (35)); 11 45 11 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 11 47 11 48 declare window_$write_raw_text 11 49 entry (pointer, character (*), fixed binary (35)); 11 50 11 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 11 52 11 53 declare window_$write_sync_read 11 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 11 55 character (1) var, fixed binary (35)); 11 56 11 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 11 58 11 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 11 60 11 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 11 62 11 63 declare window_$change_column 11 64 entry (pointer, fixed binary, fixed binary (35)); 11 65 11 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 11 67 declare ( 11 68 window_$get_one_unechoed, 11 69 window_$get_one_unechoed_char 11 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 11 71 11 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 11 73 11 74 declare window_$destroy entry (pointer, fixed binary (35)); 11 75 11 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 11 77 11 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 11 79* buffer_len, n_returned, code); */ 11 80 11 81 11 82 /* end include file window_dcls.incl.pl1 */ 1782 1783 1784 end linus_display_scroll; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/01/84 1304.1 linus_display_scroll.pl1 >special_ldd>online>6675-11/01/84>linus_display_scroll.pl1 1762 1 11/01/84 1301.3 format_document_options.incl.pl1 >special_ldd>online>6675-11/01/84>format_document_options.incl.pl1 1764 2 02/23/81 2146.3 function_key_data.incl.pl1 >ldd>include>function_key_data.incl.pl1 1766 3 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 1768 4 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 1770 5 09/16/83 1338.0 linus_display_arg_list.incl.pl1 >ldd>include>linus_display_arg_list.incl.pl1 1772 6 09/16/83 1338.0 linus_options_extents.incl.pl1 >ldd>include>linus_options_extents.incl.pl1 1774 7 09/16/83 1338.1 linus_page_info.incl.pl1 >ldd>include>linus_page_info.incl.pl1 1776 8 09/16/83 1338.1 linus_report_info.incl.pl1 >ldd>include>linus_report_info.incl.pl1 1778 9 09/16/83 1338.1 linus_scroll_info.incl.pl1 >ldd>include>linus_scroll_info.incl.pl1 1780 10 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 1782 11 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.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. BACKWARD 3 000150 constant char(12) initial level 2 in structure "KEY_MNEMONICS" dcl 9-62 in procedure "linus_display_scroll" ref 637 BACKWARD 10 000000 constant char(32) initial level 2 in structure "FUNCTION_NAMES" dcl 9-41 in procedure "linus_display_scroll" set ref 1593 BLANK 012736 constant char(1) initial unaligned dcl 1609 ref 310 CARRIAGE_RETURN 012735 constant char(1) initial unaligned dcl 1611 ref 444 CONTROL_HYPHEN 002172 constant char(8) initial unaligned dcl 1612 ref 596 617 624 CTL_HYPHEN 002170 constant char(4) initial unaligned dcl 1613 ref 617 624 DEL 012734 constant char(1) initial unaligned dcl 1615 ref 447 DIGITS 002165 constant char(10) initial unaligned dcl 1616 ref 516 END_OF_REPORT 120 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 ESCAPE 012733 constant char(1) initial unaligned dcl 1618 ref 737 ESCAPE_HYPHEN 002162 constant char(7) initial unaligned dcl 1620 ref 617 624 722 ESC_HYPHEN 002164 constant char(4) initial unaligned dcl 1619 ref 617 624 722 FORWARD 000000 constant char(32) initial level 2 in structure "FUNCTION_NAMES" dcl 9-41 in procedure "linus_display_scroll" set ref 1593 FORWARD 000150 constant char(12) initial level 2 in structure "KEY_MNEMONICS" dcl 9-62 in procedure "linus_display_scroll" ref 633 FUNCTION_NAMES 000000 constant structure level 1 dcl 9-41 set ref 669 1106 1117 FUNCTION_NAMES_AS_A_TABLE based char(32) array dcl 9-56 set ref 669 1106 1117* GENERAL_HELP_LIST 012732 constant char(2) initial unaligned dcl 1624 ref 1058 GENERAL_HELP_LIST_MESSAGE 002037 constant char(203) initial unaligned dcl 1625 set ref 1060* GENERAL_HELP_MESSAGE 002122 constant char(128) initial unaligned dcl 1622 set ref 1041* GOTO 140 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 HELP 40 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 HELP_HEADER_CONTROL_STRING 002032 constant char(15) initial unaligned dcl 1629 set ref 1117* HELP_MESSAGES 000340 constant char(254) initial array unaligned dcl 1630 set ref 1117* HIGHEST_DISPLAY_FUNCTION_NUMBER constant fixed bin(17,0) initial dcl 9-58 ref 668 780 806 1104 HOME 002036 constant char(4) initial unaligned dcl 1628 ref 649 HOW_TO_END_DISPLAY_MESSAGE 000320 constant char(62) initial unaligned dcl 1658 ref 1151 1152 HOW_TO_GET_BACK_MESSAGE 000306 constant char(38) initial unaligned dcl 1660 set ref 1241* KEY_MNEMONICS 000150 constant structure level 1 dcl 9-62 KEY_PLAIN constant fixed bin(17,0) initial dcl 2-22 ref 633 633 637 637 641 641 645 645 649 649 660 660 LARGEST_LINE_NUMBER 000305 constant fixed bin(35,0) initial dcl 1663 ref 919 LARGEST_PAGE_NUMBER 000304 constant fixed bin(21,0) initial dcl 1664 ref 914 LEFT 6 000150 constant char(12) initial level 2 in structure "KEY_MNEMONICS" dcl 9-62 in procedure "linus_display_scroll" ref 641 LEFT 20 000000 constant char(32) initial level 2 in structure "FUNCTION_NAMES" dcl 9-41 in procedure "linus_display_scroll" set ref 1593 MINIMUM_LINES_NEEDED constant fixed bin(17,0) initial dcl 1666 ref 1486 MINIMUM_LINES_NEEDED_ERROR_MESSAGE 000270 constant char(45) initial unaligned dcl 1667 set ref 1486* MINIMUM_WINDOW_SIZE constant fixed bin(17,0) initial dcl 1668 ref 1477 MINIMUM_WINDOW_SIZE_ERROR_MESSAGE 000254 constant char(45) initial unaligned dcl 1669 set ref 1477* MORE_PROMPT 000240 constant char(47) initial unaligned dcl 1671 set ref 441* MULTICS_MODE 130 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 NEWLINE constant char(1) initial unaligned dcl 1674 ref 1159 NON_NUMERIC_RESPONSE 002231 constant bit(1) initial dcl 1677 set ref 1319* 1331* 1374* NO_PROMPT constant bit(1) initial dcl 1676 set ref 1049* NUMBER_OF_ALLOWED_SPECIFIED_PAGES constant fixed bin(17,0) initial dcl 5-49 ref 5-10 NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-20 ref 292 408 963 1515 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE constant fixed bin(17,0) initial dcl 6-21 ref 292 408 963 1515 NUMERIC_RESPONSE 000237 constant bit(1) initial dcl 1678 set ref 995* 1385* OFF constant bit(1) initial dcl 1680 ref 253 436 447 493 521 549 663 759 766 811 851 880 894 895 910 940 947 970 1008 1009 1048 1079 1109 1160 1182 1219 1220 1249 1262 1272 1297 1298 1316 1328 1356 1384 1430 1447 1472 1525 1534 ON 000237 constant bit(1) initial dcl 1681 set ref 300 327 357 361* 433 444 449 450 496 503 577 654 724 801 844 918 963 993 1005 1038 1045 1054 1101 1146 1189* 1210 1288 1381 1387 1392 1452 1481 1527 1528 1529 1530 1531 1532 PROMPT constant bit(1) initial dcl 1683 set ref 1068* 1124* QUIT 70 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 REDISPLAY 100 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 RIGHT 11 000150 constant char(12) initial level 2 in structure "KEY_MNEMONICS" dcl 9-62 in procedure "linus_display_scroll" ref 645 RIGHT 30 000000 constant char(32) initial level 2 in structure "FUNCTION_NAMES" dcl 9-41 in procedure "linus_display_scroll" set ref 1593 SET_KEY 50 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 SET_SCROLL_INCREMENT 60 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 START_OF_REPORT 110 000000 constant char(32) initial level 2 dcl 9-41 set ref 1593 TOP_MARGIN_HEIGHT constant fixed bin(17,0) initial dcl 1687 ref 1387 TRANSLATION_TABLE 000217 constant char(63) initial unaligned dcl 1685 ref 747 USER_IO_WINDOW_HEIGHT constant fixed bin(17,0) initial dcl 1689 ref 1493 1495 1505 addr builtin function dcl 1691 ref 508 508 669 671 672 808 1050 1050 1106 1106 1117 1117 adj_sw 3(01) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1534* area_ptr 20 based pointer level 2 dcl 9-98 set ref 404 1421* attach_descrip_ptr 14 based pointer level 2 dcl 3-6 ref 1465 backward 46 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 backward 216 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* break_word_sw 3(07) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1528* buffer_boundary_just_crossed 0(04) based bit(1) level 3 packed unaligned dcl 9-98 set ref 327* 892 894* 938 940* 1217 1220* 1295 1298* byte builtin function dcl 1693 ref 756 code 000100 automatic fixed bin(35,0) dcl 1695 set ref 85 118* 119 231 234 234* 238 254* 308* 314* 338* 361* 437* 439* 441* 453* 508* 510 510 513* 525* 526 545* 547 547* 552* 553* 554* 557 557 560* 819* 1012* 1041* 1043 1043* 1050* 1052 1052* 1074* 1120* 1122 1122* 1155* 1173* 1175* 1177* 1189* 1234* 1237* 1239* 1241* 1245* 1261* 1322* 1333* 1334 1335* 1403* 1448* 1449 1449* 1462* 1463 1463* 1473* 1475 1475* 1482* 1484 1484* 1489* 1490 1490* 1496* 1498 1498* 1501* 1502 1502* 1507* 1509 1509* 1549* 1550 1550* 1555* 1556 1556* 1563* 1565 1565* 1567* 1568 1568* 1574* 1575 1575* code_parm parameter fixed bin(35,0) dcl 187 in procedure "abort_line" set ref 181 191 193* code_parm parameter fixed bin(35,0) dcl 42 in procedure "linus_display_scroll" set ref 55 82* 85* 89 119* 238* command_level_flags 000101 automatic structure level 1 dcl 1696 set ref 1249* 1250* convert builtin function dcl 1699 ref 532 657 convert_status_code_ 000010 constant entry external dcl 1700 ref 193 cu_$cl 000012 constant entry external dcl 1701 ref 1250 cursor_motion_keys 5 based structure level 2 dcl 2-7 dcop_buffer_empty_pending 000534 automatic bit(1) dcl 245 set ref 253* 300* 321 dcop_current_line_on_page 000535 automatic fixed bin(17,0) dcl 246 set ref 286* 288 292 310 314 314 320* 320 321 329* dcop_current_line_on_screen 000536 automatic fixed bin(17,0) dcl 247 set ref 287* 288 292 299 308* 319* 319 dcop_loop 000540 automatic fixed bin(17,0) dcl 249 set ref 307* dcop_loop_limit 000541 automatic fixed bin(17,0) dcl 250 set ref 288* 299* 307 dcop_number_of_chars_to_write 000537 automatic fixed bin(17,0) dcl 248 set ref 263* 310 314 314 display_arg_results 000342 automatic structure level 1 dcl 5-10 display_arg_results_ptr 16 based pointer level 2 dcl 9-98 set ref 402 1419* display_arg_results_ptr_parm parameter pointer dcl 43 ref 123 150 display_buffer_empty 000542 stack reference condition dcl 251 ref 326 display_iocb_ptr based pointer level 2 dcl 8-7 set ref 408 1515* display_results based structure level 1 unaligned dcl 1703 display_results_ptr 000102 automatic pointer dcl 1704 set ref 150* 402* 1418 1419 1460 1462 1463 1465 1470 1553 dont_compress_sw 3(06) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1532* down 25 based structure array level 3 dcl 2-7 end_of_report 326 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* end_of_report 156 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 error_message 000104 automatic varying char(256) dcl 1706 set ref 194* 196* 199* 199 202* error_table_$end_of_info 000014 external static fixed bin(35,0) dcl 1707 ref 1261 error_table_$long_record 000016 external static fixed bin(35,0) dcl 1708 ref 510 extent 3 based structure level 2 in structure "user_io_window_position_info" unaligned dcl 1747 in procedure "linus_display_scroll" extent 3 based structure level 2 in structure "report_output_window_position_info" unaligned dcl 1732 in procedure "linus_display_scroll" fb_beginning_line_number 000100 automatic fixed bin(17,0) dcl 829 set ref 868* 870 891 ff_beginning_line_number 000100 automatic fixed bin(17,0) dcl 928 set ref 961* 963 972 ff_number_of_left_over_lines 000101 automatic fixed bin(17,0) dcl 929 set ref 941* 943 950 fg_line_or_page_number 000103 automatic fixed bin(35,0) dcl 981 set ref 995* 997 1001 1006 fg_prompt 000100 automatic char(11) unaligned dcl 980 set ref 989* 991* 995* fg_still_looking_for_a_valid_response 000104 automatic bit(1) dcl 982 set ref 993* 994 1008* fh_character_read 000114 automatic varying char(1) dcl 1023 set ref 1049* 1068* 1079 1124* fh_help_string 000116 automatic char(1024) unaligned dcl 1024 set ref 1041* 1060* 1120* 1151* 1159 1177 1177 fh_help_string_length 000516 automatic fixed bin(21,0) dcl 1025 set ref 1041* 1060* 1120* 1151 1152* 1152 1182 fh_number_of_chars_read 000517 automatic fixed bin(21,0) dcl 1026 set ref 1050* 1054 1057* 1057 1058 1102 1117* fh_returned_help_list 000521 automatic char(512) unaligned dcl 1028 set ref 1117* 1120* fh_still_helpful 000721 automatic bit(1) dcl 1029 set ref 1038* 1040 1079* fh_still_looking_for_a_valid_response 000520 automatic bit(1) dcl 1027 set ref 1045* 1047 1048* 1054* 1070* 1072 fh_users_response 000722 automatic char(256) unaligned dcl 1030 set ref 1050 1050 1050 1050 1058 1102 fkp_prompt 000101 automatic char(21) unaligned dcl 1308 set ref 1315* 1319* 1327* 1331* fkp_valid_response 000100 automatic bit(1) dcl 1307 set ref 1316* 1318 1321* 1322 1328* 1330 1334* 1335 flags based structure level 2 in structure "report_control_info" dcl 8-7 in procedure "linus_display_scroll" flags based structure level 2 in structure "display_results" unaligned dcl 1703 in procedure "linus_display_scroll" flags based structure level 2 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" format_document_$string 000020 constant entry external dcl 1710 ref 1041 1120 format_document_op 34 based pointer level 2 dcl 9-98 set ref 412 1535* format_document_options based structure level 1 dcl 1-12 set ref 1524 1525* format_document_options_ptr 000336 automatic pointer dcl 1-62 set ref 412* 1041* 1120* 1524* 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 format_document_version_2 constant fixed bin(17,0) initial dcl 1-63 ref 1526 forward 206 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* forward 36 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 function_key_data based structure level 1 dcl 2-7 function_key_data_pointer 24 based pointer level 2 dcl 9-98 ref 115 411 function_key_data_ptr 000340 automatic pointer dcl 2-34 set ref 115* 411* 633 633 633 633 637 637 637 637 641 641 641 641 645 645 645 645 649 649 649 649 655 660 660 660 660 function_key_info 000346 automatic structure level 1 dcl 9-79 function_key_seqs based char unaligned dcl 2-32 ref 633 637 641 645 649 660 function_key_sequence 000215 automatic char(32) unaligned dcl 1712 set ref 117* 118* function_key_sequence_parm parameter char unaligned dcl 45 ref 89 117 function_keys 31 based structure array level 2 dcl 2-7 ref 655 function_name 000205 automatic char(32) unaligned dcl 1711 set ref 116* 118* 1320* 1321* 1333* function_name_parm parameter char unaligned dcl 44 ref 89 116 galley_sw 3(02) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1527* goto 346 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* goto 176 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 goto_line_number_pending 0(05) based bit(1) level 3 packed unaligned dcl 9-98 set ref 918* 1005* gur_buffer_parm parameter char unaligned dcl 349 set ref 347 356* 359 363* 364 364 364 364 364 364 364 364 364 364 364 364 364 378 378 378 378 378 378 378 378 378 378 378 378 378 gur_character_read 000106 automatic varying char(1) dcl 350 set ref 361* 363 gur_loop 000110 automatic fixed bin(17,0) dcl 351 set ref 359* 363 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378* gur_partial_match 000111 automatic bit(1) dcl 352 set ref 357* 359 378* hbound builtin function dcl 1714 ref 655 height 4 based fixed bin(17,0) level 3 in structure "user_io_window_position_info" dcl 1747 in procedure "linus_display_scroll" set ref 1486 1493 1495* 1560* 1560 height 4 based fixed bin(17,0) level 3 in structure "report_output_window_position_info" dcl 1732 in procedure "linus_display_scroll" set ref 288 292 299 338* 504 1163 1477 1505* 1505 1517 1518 1560 help 76 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 help 246 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* hff_function_number 001030 automatic fixed bin(17,0) dcl 1091 set ref 1110* 1117 1117 1117 hff_invalid_function_parm parameter bit(1) dcl 1092 set ref 1086 1101* 1104 1109* 1114 hff_loop 001031 automatic fixed bin(17,0) dcl 1093 set ref 1104* 1106 1106 1110* hff_target_function 001032 automatic char(32) unaligned dcl 1094 set ref 1102* 1106 1106 highest 1 based fixed bin(17,0) level 2 dcl 2-7 ref 655 home 5 based structure array level 3 dcl 2-7 horizontal_scroll_distance 6 based fixed bin(17,0) level 2 dcl 9-98 set ref 1214 1292 1398* 1519* index builtin function dcl 1716 ref 617 617 617 617 715 729 747 1159 ioa_$rsnnl 000022 constant entry external dcl 1717 ref 1060 1117 iocb based structure level 1 dcl 3-6 iox_$control 000052 constant entry external dcl 4-8 ref 234 545 1473 1482 1496 1563 iox_$destroy_iocb 000054 constant entry external dcl 4-8 ref 1567 iox_$find_iocb 000056 constant entry external dcl 4-8 ref 1501 iox_$get_line 000060 constant entry external dcl 4-8 ref 508 1050 iox_$look_iocb 000062 constant entry external dcl 4-8 ref 1462 iox_$user_io 000066 external static pointer dcl 4-41 set ref 1234 1243 1482* 1489* 1496* 1563* iox_$user_output 000064 external static pointer dcl 4-41 ref 1234 1243 key_info based structure level 1 packed unaligned dcl 2-28 keys 36 based structure level 2 dcl 9-98 set ref 671 808 keys_as_a_table based char(32) array unaligned dcl 9-94 set ref 671* 808 last_line_number_in_previous_buffer 10 based fixed bin(17,0) level 2 dcl 9-98 set ref 325* 877 941 left 226 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* left 56 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 left 11 based structure array level 3 in structure "function_key_data" dcl 2-7 in procedure "linus_display_scroll" left_vertical_position 4 based fixed bin(17,0) level 2 dcl 9-98 set ref 261 261* 263 310 314 314 1208 1214* 1214 1286 1292* 1292 1522* length 1 based fixed bin(17,0) level 2 in structure "page_info" dcl 7-29 in procedure "linus_display_scroll" ref 270 270 288 292 321 325 963 1387 length builtin function dcl 1719 in procedure "linus_display_scroll" ref 198 359 508 508 596 721 725 1050 1050 1152 line 2 based fixed bin(17,0) level 3 in structure "report_output_window_position_info" dcl 1732 in procedure "linus_display_scroll" set ref 1558 line 2 based fixed bin(17,0) level 3 in structure "user_io_window_position_info" dcl 1747 in procedure "linus_display_scroll" set ref 1493* 1493 1558* line_length 2 based fixed bin(17,0) level 2 dcl 1-12 set ref 1533* linus_error_$bad_fkey_name 000024 external static fixed bin(35,0) dcl 1720 ref 678 linus_error_$bad_fkey_sequence 000026 external static fixed bin(35,0) dcl 1721 ref 744 751 linus_error_$bad_report_display 000030 external static fixed bin(35,0) dcl 1722 set ref 202* literal_sw 3(04) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1531* long_message 000225 automatic char(100) dcl 1723 set ref 193* 194 ltrim builtin function dcl 1724 ref 657 max builtin function dcl 1726 ref 270 1214 max_line_length_sw 3(08) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1529* message_parm parameter char unaligned dcl 189 ref 181 198 199 message_parm_length 000100 automatic fixed bin(17,0) dcl 188 set ref 198* 199 min builtin function dcl 1727 ref 263 288 miscellaneous 252 based structure level 2 unaligned dcl 1703 mnemonic_key_sequences 206 based structure level 2 dcl 9-98 set ref 672 1106 1117 mnemonic_key_sequences_as_a_table based char(32) array dcl 9-96 set ref 672* 1106 1117* multics_mode 336 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* multics_mode 166 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 no_of_formatted_pages based fixed bin(21,0) level 2 dcl 8-7 ref 292 963 null builtin function dcl 1729 ref 173 8-52 1445 1465 1465 number_of_lines_for_report_display 1 based fixed bin(17,0) level 2 dcl 9-98 set ref 1517* open_descrip_ptr 20 based pointer level 2 dcl 3-6 ref 1465 origin 1 based structure level 2 in structure "report_output_window_position_info" unaligned dcl 1732 in procedure "linus_display_scroll" origin 1 based structure level 2 in structure "user_io_window_position_info" unaligned dcl 1747 in procedure "linus_display_scroll" page_defined_as_lines based char array unaligned dcl 7-39 ref 310 314 314 page_info based structure level 1 dcl 7-29 page_info_pointer 30 based pointer level 2 dcl 9-98 ref 330 409 page_ip 000342 automatic pointer dcl 7-41 set ref 259 261 261 263 270 270 288 292 310 310 310 310 314 314 314 314 314 314 314 314 321 325 330* 409* 963 1286 1387 1392 page_ptr 4 based pointer level 2 dcl 7-29 ref 310 314 314 pathnames 23 based structure level 2 packed unaligned dcl 1703 pfm_break_character 000106 automatic varying char(1) dcl 424 set ref 441* 444 447 pfm_buffer 000110 automatic char(1) unaligned dcl 425 set ref 441* pfm_line_in_window_parm parameter fixed bin(17,0) dcl 426 set ref 418 437* pfm_number_of_chars_read 000111 automatic fixed bin(21,0) dcl 427 set ref 441* 444 pfm_still_looking_for_a_valid_response 000112 automatic bit(1) dcl 428 set ref 433* 435 436* 449* 450* 451 pfm_user_wants_more_parm parameter bit(1) dcl 429 set ref 418 444* 447* pu_number_of_chars_read 000100 automatic fixed bin(21,0) dcl 470 set ref 508* 515* 515 516 516 516 532 535 pu_number_parm parameter fixed bin(35,0) dcl 471 set ref 462 501* 532* 532 pu_numeric_parm parameter bit(1) dcl 472 ref 462 516 532 pu_prompt_parm parameter char unaligned dcl 473 ref 462 554 pu_response_buffer 000101 automatic char(256) unaligned dcl 474 set ref 508 508 508 508 516 532 535 pu_response_line 000201 automatic fixed bin(17,0) dcl 475 set ref 497* 504* 552* pu_response_parm parameter char unaligned dcl 476 set ref 462 502* 535* pu_still_looking_for_a_valid_response 000202 automatic bit(1) dcl 477 set ref 503* 506 516* 521* 523 pu_window_status_pending 000204 stack reference condition dcl 478 ref 495 526 557 pu_window_status_pending_flag 000212 automatic bit(1) dcl 479 set ref 493* 496* 543 549* quit 276 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* quit 126 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 rci_ptr_parm parameter pointer dcl 46 ref 123 149 reason 000256 automatic char(64) unaligned dcl 1731 set ref 1448* 1449* redisplay 306 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* redisplay 136 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 report_cip 000344 automatic pointer initial dcl 8-52 set ref 149* 8-52* 270 279 292 292 292 292 403* 408 847 855 912 963 963 989 999 1420 1515 report_control_info based structure level 1 dcl 8-7 report_control_info_ptr 22 based pointer level 2 dcl 9-98 set ref 403 1420* report_is_formatted 0(04) based bit(1) level 3 packed unaligned dcl 8-7 ref 292 292 963 report_is_paginated based bit(1) level 3 packed unaligned dcl 8-7 ref 270 279 292 847 855 912 989 999 report_output_window_position_info based structure level 1 unaligned dcl 1732 set ref 1433 1437* 1492* report_output_window_position_info_ptr 14 based pointer level 2 dcl 9-98 set ref 406 1435* report_output_window_position_ip 000276 automatic pointer dcl 1733 set ref 259 261 261 263 288 292 299 338 338 406* 504 1163 1286 1433* 1435 1437 1473* 1477 1492 1505 1505 1507* 1517 1518 1519 1533 1558 1560 right 66 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 right 236 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* right 21 based structure array level 3 in structure "function_key_data" dcl 2-7 in procedure "linus_display_scroll" rtrim builtin function dcl 1734 ref 194 198 199 554 713 725 1463 1465 1470 1502 sci_ptr 000300 automatic pointer dcl 1736 set ref 148* 202* 407* 1422 1550* 1556* 1565* 1568* 1575* sci_ptr_parm parameter pointer dcl 47 ref 123 148 scroll_info based structure level 1 dcl 9-98 scroll_info_ptr 260 based pointer level 3 dcl 1703 ref 1418 scroll_info_ptr_parm parameter pointer dcl 48 ref 55 81 89 114 156 173 175 scroll_ip 000516 automatic pointer dcl 9-128 set ref 81* 114* 115 175* 261 261 263 268 268 270 270 270 279 279 279 282 286 287 292 310 314 314 324 324 325 327 328 328 330 364 364 364 364 364 364 364 364 364 364 364 364 364 378 378 378 378 378 378 378 378 378 378 378 378 378 402 403 404 405 406 407 409 410 411 412 671 672 808 841 841 849 849 850 857 857 857 868 868 870 873 877 877 877 877 881 881 891 892 894 914 915 918 919 938 940 941 941 943 945 945 945 950 950 951 951 961 961 961 963 968 968 969 972 1001 1002 1005 1006 1060 1060 1060 1060 1060 1060 1060 1060 1060 1060 1060 1060 1060 1106 1117 1208 1214 1214 1214 1217 1220 1286 1292 1292 1292 1295 1298 1357 1358 1395 1398 1418* 1419 1420 1421 1422 1428 1435 1441 1447 1452 1472 1481 1517 1518 1519 1520 1521 1522 1535 1563 1572 seq_len 4 based fixed bin(21,0) level 3 dcl 2-7 ref 633 637 641 645 649 660 seq_ptr 2 based pointer level 3 dcl 2-7 ref 633 637 641 645 649 660 sequence 2 based structure level 2 dcl 2-7 sequence_index 31 based fixed bin(12,0) array level 3 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 660 sequence_index 25 based fixed bin(12,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 633 sequence_index 21 based fixed bin(12,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 645 sequence_index 5 based fixed bin(12,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 649 sequence_index 15 based fixed bin(12,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 637 sequence_index 11 based fixed bin(12,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 641 sequence_length 11(12) based fixed bin(6,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 641 sequence_length 31(12) based fixed bin(6,0) array level 3 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 660 sequence_length 5(12) based fixed bin(6,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 649 sequence_length 21(12) based fixed bin(6,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 645 sequence_length 25(12) based fixed bin(6,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 633 sequence_length 15(12) based fixed bin(6,0) array level 4 in structure "function_key_data" packed unsigned unaligned dcl 2-7 in procedure "linus_display_scroll" ref 637 set_key 106 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 set_key 256 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* set_scroll_increment 116 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 set_scroll_increment 266 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* sfk_char_10 automatic char(10) unaligned dcl 595 ref 657 sfk_character_loop 000100 automatic char unaligned dcl 596 set ref 624* 625* sfk_code_parm parameter fixed bin(35,0) dcl 597 set ref 588 616* 625* 627 678* sfk_function_key_sequence 000100 automatic char(32) unaligned dcl 600 set ref 617* 623* 625* 629* 633 633* 637 637* 641 641* 645 645* 649 649* 657 660* 671 sfk_function_key_sequence_buffer 000110 automatic char(32) unaligned dcl 601 set ref 625* 629 sfk_function_key_sequence_parm parameter char unaligned dcl 599 ref 588 617 617 617 617 617 623 672 sfk_function_name_parm parameter char unaligned dcl 598 ref 588 669 sfk_loop 000120 automatic fixed bin(17,0) dcl 602 set ref 655* 657 660 660* 668* 669 671 672* sfk_no_match 000121 automatic bit(1) dcl 603 set ref 654* 655 663* sfnc_function_key_procs 000114 automatic entry variable initial array dcl 780 set ref 780* 780* 780* 780* 780* 780* 780* 780* 780* 780* 780* 780* 780* 815 sfnc_function_number 000114 automatic fixed bin(17,0) dcl 794 set ref 810* 815 sfnc_loop 000115 automatic fixed bin(17,0) dcl 795 set ref 806* 808 810* sfnc_still_looking_for_a_valid_response 000116 automatic bit(1) dcl 796 set ref 801* 803 806 811* 815 817 844* 963* 1210* 1288* sfnc_users_response 000117 automatic char(32) unaligned dcl 797 set ref 804* 808 short_message 000302 automatic char(8) dcl 1737 set ref 193* sshow_height 000106 automatic bit(1) dcl 1366 set ref 1376* 1377 1387 1395 sshow_prompt 000107 automatic char(42) unaligned dcl 1367 set ref 1373* 1374* 1377* 1379* 1385* sshow_scroll_height_or_width 000122 automatic fixed bin(35,0) dcl 1368 set ref 1374* 1385* 1387 1387 1392 1395 1398 sshow_still_looking_for_a_valid_response 000123 automatic bit(1) dcl 1369 set ref 1381* 1383 1384* 1387* 1392* 1395 1400 ssu_$abort_line 000032 constant entry external dcl 1738 ref 202 ssu_$print_message 000034 constant entry external dcl 1739 ref 1550 1556 1565 1568 1575 ssu_info_ptr 32 based pointer level 2 dcl 9-98 set ref 407 1422* start_of_report 146 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 364 378 start_of_report 316 based char(32) level 3 in structure "scroll_info" dcl 9-98 in procedure "linus_display_scroll" set ref 1060* still_in_the_scrolling_business 000304 automatic bit(1) dcl 1740 set ref 577* 579 851* 880* 895* 910* 947* 970* 1009* 1219* 1262* 1272* 1297* 1356* sub_err_sw 3(10) based bit(1) level 3 packed unaligned dcl 1-12 set ref 1530* substr builtin function dcl 1741 set ref 310 314 314 363* 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 378 516 532 535 633 637 641 645 649 660 729 732 747 763 1058 1102 1151* 1159 1177 1177 switch_name 000305 automatic char(42) unaligned dcl 1742 set ref 1500* 1501* 1502 switches 3 based structure level 2 dcl 1-12 target_line_number 3 based fixed bin(35,0) level 2 dcl 9-98 set ref 268 268* 270 270* 279 286 841 850* 857* 857 868 873* 877* 877 891* 915* 919* 941 945* 945 950* 961 969* 972* 1002* 1006* 1358* 1521* target_page_number 2 based fixed bin(21,0) level 2 dcl 9-98 set ref 279 292 324* 324 328* 328 841 849* 849 870 881* 881 914* 951* 951 963 968* 968 1001* 1357* 1520* tm_code_parm parameter fixed bin(35,0) dcl 690 set ref 682 712* 744* 751* tm_current_position 000142 automatic fixed bin(17,0) dcl 691 set ref 726* 729 732 732 732 738* 738 741 757* 759 763 763 tm_escape_is_replacement_char 000143 automatic bit(1) dcl 692 set ref 722* 735 tm_mnemonic 000145 automatic varying char(32) dcl 694 set ref 713* 715 721 722 722 729 tm_mnemonic_length 000144 automatic fixed bin(17,0) dcl 693 set ref 721* 738 741 tm_mnemonic_parm parameter char unaligned dcl 695 ref 682 713 tm_still_translating 000156 automatic bit(1) dcl 696 set ref 724* 728 759* 766* tm_string_in_parm parameter char unaligned dcl 697 ref 682 715 717 725 729 732 747 763 tm_string_index 000157 automatic fixed bin(17,0) dcl 698 set ref 729* 730 732 732 738 741 tm_string_length 000160 automatic fixed bin(17,0) dcl 699 set ref 725* 742 759 763 tm_string_out_parm parameter char unaligned dcl 700 set ref 682 717* 770* tm_string_varying 000161 automatic varying char(32) dcl 701 set ref 723* 732* 732 737* 737 756* 756 763* 763 770 tm_target_character_index 000172 automatic fixed bin(17,0) dcl 702 set ref 741* 742 747 757 tm_translation_index 000173 automatic fixed bin(17,0) dcl 703 set ref 747* 749 754 754* 754 756 top_margin_offset 5 based fixed bin(17,0) level 2 dcl 9-98 set ref 279* 282* 287 961 unique_chars_ 000036 constant entry external dcl 1745 ref 1500 unspec builtin function dcl 1746 set ref 1249* 1430* 1525* up 15 based structure array level 3 dcl 2-7 user_io_was_shrunk 0(01) based bit(1) level 3 packed unaligned dcl 9-98 set ref 1472* 1481* user_io_window_position_info based structure level 1 unaligned dcl 1747 set ref 1426 1430* 1437 1492 user_io_window_position_info_ptr 12 based pointer level 2 dcl 9-98 set ref 405 1428* 1563* user_io_window_position_ip 000320 automatic pointer dcl 1748 set ref 405* 1426* 1428 1430 1431 1437 1482* 1486 1492 1493 1493 1493 1495 1496* 1558 1560 1560 users_response 000322 automatic char(32) unaligned dcl 1749 set ref 995* 1319* 1320 1331* 1333* 1374* 1376 1385* verify builtin function dcl 1751 ref 516 version based fixed bin(17,0) level 2 in structure "user_io_window_position_info" dcl 1747 in procedure "linus_display_scroll" set ref 1431* version based fixed bin(17,0) level 2 in structure "window_status_info" dcl 10-45 in procedure "linus_display_scroll" set ref 1440* version_number based fixed bin(17,0) level 2 dcl 1-12 set ref 1526* vertical_scroll_distance 7 based fixed bin(17,0) level 2 dcl 9-98 set ref 270 857 868 877 943 945 950 961 1395* 1518* vfn_function_name_parm parameter char unaligned dcl 1589 ref 1583 1593 1593 1593 1593 1593 1593 1593 1593 1593 1593 1593 1593 1593 video_data_$terminal_iocb 000040 external static pointer dcl 1752 set ref 1445 1507* video_et_$insuff_room_for_window 000042 external static fixed bin(35,0) dcl 1753 set ref 1486* video_et_$window_status_pending 000044 external static fixed bin(35,0) dcl 1754 ref 234 557 video_utils_$turn_off_login_channel 000050 constant entry external dcl 1756 ref 1574 video_utils_$turn_on_login_channel 000046 constant entry external dcl 1755 ref 1448 video_was_already_on based bit(1) level 3 packed unaligned dcl 9-98 set ref 1447* 1452* 1572 whs_char_read_parm parameter varying char(1) dcl 1136 set ref 1130 1154* 1189* whs_current_line_on_screen 001053 automatic fixed bin(17,0) dcl 1138 set ref 1148* 1163 1165* 1171* 1173* 1180* 1180 whs_current_position 001052 automatic fixed bin(17,0) dcl 1137 set ref 1147* 1159 1177 1177 1181* 1181 1182 whs_new_line_position 001054 automatic fixed bin(17,0) dcl 1139 set ref 1159* 1160 1177 1177 1181 whs_prompt_parm parameter bit(1) dcl 1140 ref 1130 1149 1187 whs_still_filling 001055 automatic bit(1) dcl 1141 set ref 1146* 1158 1160* 1182* whs_wants_more 001056 automatic bit(1) dcl 1142 set ref 1165* 1166 width 3 based fixed bin(17,0) level 3 in structure "report_output_window_position_info" dcl 1732 in procedure "linus_display_scroll" set ref 259 261 261 263 338* 1286 1519 1533 width based fixed bin(17,0) level 2 in structure "page_info" dcl 7-29 in procedure "linus_display_scroll" ref 259 261 261 263 310 310 310 314 314 314 314 314 314 1286 1392 window_$bell 000070 constant entry external dcl 11-6 ref 453 525 819 1012 1074 1322 1335 1403 window_$clear_to_end_of_line 000072 constant entry external dcl 11-9 ref 439 553 1175 1239 window_$clear_window 000074 constant entry external dcl 11-13 ref 254 1155 1234 1489 1549 window_$create 000106 constant entry external dcl 11-72 ref 1507 window_$destroy 000110 constant entry external dcl 11-74 ref 1555 window_$get_one_unechoed_char 000104 constant entry external dcl 11-67 ref 361 1189 window_$overwrite_text 000076 constant entry external dcl 11-29 ref 314 554 1177 1241 window_$position_cursor 000100 constant entry external dcl 11-31 ref 308 338 437 552 1173 1237 1245 window_$write_sync_read 000102 constant entry external dcl 11-53 ref 441 window_flag 21 based bit(1) level 3 dcl 1703 ref 1460 1553 window_iocb_ptr 000332 automatic pointer dcl 1758 set ref 234* 254* 308* 314* 338* 361* 408* 437* 439* 441* 453* 508* 525* 545* 552* 553* 554* 819* 1012* 1050* 1074* 1155* 1173* 1175* 1177* 1189* 1234 1234 1234* 1237* 1239* 1241* 1243 1243 1245* 1322* 1335* 1403* 1462* 1465 1465 1473* 1501* 1507* 1515 1549* 1555* 1567* window_name 241 based char(32) level 3 packed unaligned dcl 1703 set ref 1462* 1463 1465 1470 window_position_info based structure level 1 unaligned dcl 10-25 window_position_info_version_1 constant fixed bin(17,0) initial dcl 10-35 ref 1431 window_status_info based structure level 1 dcl 10-45 set ref 1439 window_status_info_pointer 26 based pointer level 2 dcl 9-98 set ref 410 1441* window_status_info_ptr 000520 automatic pointer dcl 10-43 set ref 234* 410* 545* 1439* 1440 1441 window_status_version_1 constant fixed bin(17,0) initial dcl 10-52 ref 1440 work_area based area dcl 1759 ref 1426 1433 1439 1524 work_area_ptr 000334 automatic pointer dcl 1760 set ref 151* 404* 1421 1426 1433 1439 1524 work_area_ptr_parm parameter pointer dcl 49 ref 123 151 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ESCAPE_KEYS internal static structure level 1 dcl 9-7 ESCAPE_KEYS_AS_A_TABLE based char(2) array dcl 9-22 ESCAPE_KEY_MNEMONICS internal static structure level 1 dcl 9-24 ESCAPE_KEY_MNEMONICS_AS_A_TABLE based char(5) array dcl 9-39 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 HIGHEST_NUMBERED_FUNCTION_KEY_NEEDED internal static fixed bin(17,0) initial dcl 9-60 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 KEY_CTRL internal static fixed bin(17,0) initial dcl 2-22 KEY_CTRL_AND_SHIFT internal static fixed bin(17,0) initial dcl 2-22 KEY_MNEMONICS_AS_A_TABLE based char(12) array dcl 9-77 KEY_SHIFT internal static fixed bin(17,0) initial dcl 2-22 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_NORMALIZED_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 6-32 MAXIMUM_OPTION_IDENTIFIER_LENGTH internal static fixed bin(17,0) initial dcl 6-34 MAXIMUM_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 6-35 MAXIMUM_OPTION_VALUE_LENGTH internal static fixed bin(17,0) initial dcl 6-36 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 6-22 SPECIFIC_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 6-16 break_table_info based structure level 1 dcl 10-76 break_table_info_version internal static fixed bin(17,0) initial dcl 10-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 10-80 break_table_ptr automatic pointer dcl 10-75 format_document_version_1 internal static fixed bin(17,0) initial dcl 1-64 formatted_page_info based structure level 1 dcl 7-7 formatted_page_ip automatic pointer dcl 7-26 fpi_init_maximum_number_of_detail_blocks automatic fixed bin(17,0) dcl 7-27 function_key_data_highest automatic fixed bin(17,0) dcl 2-35 function_key_data_version_1 internal static fixed bin(17,0) initial dcl 2-36 get_editor_key_bindings_info based structure level 1 dcl 10-151 get_editor_key_bindings_info_ptr automatic pointer dcl 10-159 get_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 10-160 iox_$attach_loud 000000 constant entry external dcl 4-8 iox_$attach_name 000000 constant entry external dcl 4-8 iox_$attach_ptr 000000 constant entry external dcl 4-8 iox_$close 000000 constant entry external dcl 4-8 iox_$close_file 000000 constant entry external dcl 4-8 iox_$delete_record 000000 constant entry external dcl 4-8 iox_$detach 000000 constant entry external dcl 4-8 iox_$detach_iocb 000000 constant entry external dcl 4-8 iox_$err_no_operation 000000 constant entry external dcl 4-8 iox_$err_not_attached 000000 constant entry external dcl 4-8 iox_$err_not_closed 000000 constant entry external dcl 4-8 iox_$err_not_open 000000 constant entry external dcl 4-8 iox_$error_output external static pointer dcl 4-41 iox_$find_iocb_n 000000 constant entry external dcl 4-8 iox_$get_chars 000000 constant entry external dcl 4-8 iox_$iocb_version_sentinel external static char(4) dcl 3-51 iox_$modes 000000 constant entry external dcl 4-8 iox_$move_attach 000000 constant entry external dcl 4-8 iox_$open 000000 constant entry external dcl 4-8 iox_$open_file 000000 constant entry external dcl 4-8 iox_$position 000000 constant entry external dcl 4-8 iox_$propagate 000000 constant entry external dcl 4-8 iox_$put_chars 000000 constant entry external dcl 4-8 iox_$read_key 000000 constant entry external dcl 4-8 iox_$read_length 000000 constant entry external dcl 4-8 iox_$read_record 000000 constant entry external dcl 4-8 iox_$rewrite_record 000000 constant entry external dcl 4-8 iox_$seek_key 000000 constant entry external dcl 4-8 iox_$user_input external static pointer dcl 4-41 iox_$write_record 000000 constant entry external dcl 4-8 key_info_ptr automatic pointer dcl 2-38 line_editor_binding_count automatic fixed bin(17,0) dcl 10-121 line_editor_key_binding_info based structure level 1 dcl 10-129 line_editor_key_binding_info_ptr automatic pointer dcl 10-118 line_editor_key_binding_info_version_3 internal static char(8) initial unaligned dcl 10-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 10-123 more_handler_info based structure level 1 dcl 10-83 more_handler_info_ptr automatic pointer dcl 10-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 10-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 10-94 more_prompt_info based structure level 1 dcl 10-108 more_prompt_info_ptr automatic pointer dcl 10-112 more_prompt_info_version_1 internal static char(8) initial unaligned dcl 10-114 more_responses_info based structure level 1 dcl 10-59 more_responses_info_ptr automatic pointer dcl 10-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 10-67 more_responses_version internal static fixed bin(17,0) initial dcl 10-67 page_defined_as_a_string based char unaligned dcl 7-40 page_defined_as_chars based char(1) array unaligned dcl 7-38 page_overstrike_info based structure level 1 dcl 7-43 page_overstrike_info_redefined based structure level 1 dcl 7-51 page_overstrike_ip automatic pointer dcl 7-49 set_editor_key_bindings_info based structure level 1 dcl 10-162 set_editor_key_bindings_info_ptr automatic pointer dcl 10-171 set_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 10-172 sys_info$max_seg_size external static fixed bin(35,0) dcl 1743 token_characters_info based structure level 1 dcl 10-97 token_characters_info_ptr automatic pointer dcl 10-104 token_characters_info_version_1 internal static char(8) initial unaligned dcl 10-106 window_$change_column 000000 constant entry external dcl 11-63 window_$change_line 000000 constant entry external dcl 11-59 window_$clear_region 000000 constant entry external dcl 11-7 window_$clear_to_end_of_window 000000 constant entry external dcl 11-11 window_$delete_chars 000000 constant entry external dcl 11-15 window_$edit_line 000000 constant entry external dcl 11-76 window_$get_cursor_position 000000 constant entry external dcl 11-17 window_$get_echoed_chars 000000 constant entry external dcl 11-22 window_$get_one_unechoed 000000 constant entry external dcl 11-67 window_$get_unechoed_chars 000000 constant entry external dcl 11-25 window_$insert_text 000000 constant entry external dcl 11-28 window_$position_cursor_rel 000000 constant entry external dcl 11-36 window_$scroll_region 000000 constant entry external dcl 11-42 window_$sync 000000 constant entry external dcl 11-44 window_$write_raw_text 000000 constant entry external dcl 11-48 window_edit_line_info based structure level 1 unaligned dcl 10-177 window_edit_line_info_ptr automatic pointer dcl 10-186 window_edit_line_info_version_1 internal static char(8) initial unaligned dcl 10-183 window_position_info_ptr automatic pointer dcl 10-37 window_position_info_version internal static fixed bin(17,0) initial dcl 10-35 window_status_version internal static fixed bin(17,0) initial dcl 10-52 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN_TO_CALLING_PROGRAM 002540 constant label dcl 51 ref 239 abort_line 002742 constant entry internal dcl 181 ref 513 547 560 1043 1052 1122 1449 1463 1465 1470 1475 1477 1484 1486 1490 1498 1502 1509 check_code 003135 constant entry internal dcl 206 ref 255 309 317 341 362 438 440 443 454 820 1013 1075 1156 1174 1176 1179 1190 1236 1238 1240 1242 1246 1324 1337 1404 continue 002545 constant entry external dcl 55 display_chunk_of_page 003203 constant entry internal dcl 243 ref 580 fkp_backward 006316 constant entry internal dcl 827 ref 780 fkp_end_of_report 006431 constant entry internal dcl 902 ref 780 fkp_forward 006461 constant entry internal dcl 926 ref 780 fkp_goto 006570 constant entry internal dcl 978 ref 780 fkp_help 006713 constant entry internal dcl 1021 ref 780 fkp_left 007726 constant entry internal dcl 1199 ref 780 fkp_multics_mode 007762 constant entry internal dcl 1227 ref 780 fkp_quit 010176 constant entry internal dcl 1257 ref 780 fkp_redisplay 010212 constant entry internal dcl 1268 ref 780 1168 1251 1400 fkp_right 010224 constant entry internal dcl 1278 ref 780 fkp_set_key 010257 constant entry internal dcl 1305 ref 780 fkp_set_scroll_increment 010500 constant entry internal dcl 1344 ref 780 fkp_start_of_report 010510 constant entry internal dcl 1352 ref 780 get_users_response 003556 constant entry internal dcl 347 ref 804 help_for_function 007230 constant entry internal dcl 1086 ref 1070 housekeeping 004055 constant entry internal dcl 398 ref 83 176 linus_display_scroll 002532 constant entry external dcl 38 prompt_for_more 004125 constant entry internal dcl 418 ref 1165 prompt_user 004332 constant entry internal dcl 462 ref 995 1319 1331 1374 1385 scroll_the_report 005032 constant entry internal dcl 569 ref 84 set_fkey 002575 constant entry external dcl 89 set_function_key 005050 constant entry internal dcl 588 ref 118 1333 set_scroll_height_or_width 010526 constant entry internal dcl 1364 ref 1346 setup_for_next_chunk 006070 constant entry internal dcl 778 ref 581 setup_scroll 010723 constant entry internal dcl 1414 ref 152 start 002670 constant entry external dcl 123 stop 002720 constant entry external dcl 156 terminate_scroll 012111 constant entry internal dcl 1541 ref 177 translate_mnemonics 005547 constant entry internal dcl 682 ref 625 valid_function_name 012337 constant entry internal dcl 1583 ref 1321 write_help_string 007435 constant entry internal dcl 1130 ref 1049 1068 1124 write_prompt 004601 constant entry internal dcl 539 ref 498 507 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 13632 13744 12743 13642 Length 14542 12743 112 561 667 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_display_scroll 538 external procedure is an external procedure. abort_line 92 internal procedure is called during a stack extension. check_code 88 internal procedure is called by several nonquick procedures. display_chunk_of_page internal procedure shares stack frame of external procedure linus_display_scroll. get_users_response internal procedure shares stack frame of internal procedure setup_for_next_chunk. housekeeping internal procedure shares stack frame of external procedure linus_display_scroll. prompt_for_more internal procedure shares stack frame of internal procedure fkp_help. prompt_user 326 internal procedure enables or reverts conditions. on unit on line 495 64 on unit write_prompt 110 internal procedure is called by several nonquick procedures. scroll_the_report internal procedure shares stack frame of external procedure linus_display_scroll. set_function_key 156 internal procedure uses auto adjustable storage. translate_mnemonics internal procedure shares stack frame of internal procedure set_function_key. setup_for_next_chunk 124 internal procedure uses auto adjustable storage. fkp_backward 65 internal procedure is assigned to an entry variable. fkp_end_of_report 64 internal procedure is assigned to an entry variable. fkp_forward 67 internal procedure is assigned to an entry variable. fkp_goto 90 internal procedure is assigned to an entry variable. fkp_help 756 internal procedure is assigned to an entry variable. help_for_function internal procedure shares stack frame of internal procedure fkp_help. write_help_string internal procedure shares stack frame of internal procedure fkp_help. fkp_left 64 internal procedure is assigned to an entry variable. fkp_multics_mode 96 internal procedure is assigned to an entry variable. fkp_quit 64 internal procedure is assigned to an entry variable. fkp_redisplay 64 internal procedure is assigned to an entry variable. fkp_right 64 internal procedure is assigned to an entry variable. fkp_set_key 113 internal procedure is assigned to an entry variable. fkp_set_scroll_increment 105 internal procedure is assigned to an entry variable. fkp_start_of_report 64 internal procedure is assigned to an entry variable. set_scroll_height_or_width internal procedure shares stack frame of internal procedure fkp_set_scroll_increment. setup_scroll internal procedure shares stack frame of external procedure linus_display_scroll. terminate_scroll internal procedure shares stack frame of external procedure linus_display_scroll. valid_function_name internal procedure shares stack frame of internal procedure fkp_set_key. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME abort_line 000100 message_parm_length abort_line fkp_backward 000100 fb_beginning_line_number fkp_backward fkp_forward 000100 ff_beginning_line_number fkp_forward 000101 ff_number_of_left_over_lines fkp_forward fkp_goto 000100 fg_prompt fkp_goto 000103 fg_line_or_page_number fkp_goto 000104 fg_still_looking_for_a_valid_response fkp_goto fkp_help 000106 pfm_break_character prompt_for_more 000110 pfm_buffer prompt_for_more 000111 pfm_number_of_chars_read prompt_for_more 000112 pfm_still_looking_for_a_valid_response prompt_for_more 000114 fh_character_read fkp_help 000116 fh_help_string fkp_help 000516 fh_help_string_length fkp_help 000517 fh_number_of_chars_read fkp_help 000520 fh_still_looking_for_a_valid_response fkp_help 000521 fh_returned_help_list fkp_help 000721 fh_still_helpful fkp_help 000722 fh_users_response fkp_help 001030 hff_function_number help_for_function 001031 hff_loop help_for_function 001032 hff_target_function help_for_function 001052 whs_current_position write_help_string 001053 whs_current_line_on_screen write_help_string 001054 whs_new_line_position write_help_string 001055 whs_still_filling write_help_string 001056 whs_wants_more write_help_string fkp_set_key 000100 fkp_valid_response fkp_set_key 000101 fkp_prompt fkp_set_key fkp_set_scroll_increment 000106 sshow_height set_scroll_height_or_width 000107 sshow_prompt set_scroll_height_or_width 000122 sshow_scroll_height_or_width set_scroll_height_or_width 000123 sshow_still_looking_for_a_valid_response set_scroll_height_or_width linus_display_scroll 000100 code linus_display_scroll 000101 command_level_flags linus_display_scroll 000102 display_results_ptr linus_display_scroll 000104 error_message linus_display_scroll 000205 function_name linus_display_scroll 000215 function_key_sequence linus_display_scroll 000225 long_message linus_display_scroll 000256 reason linus_display_scroll 000276 report_output_window_position_ip linus_display_scroll 000300 sci_ptr linus_display_scroll 000302 short_message linus_display_scroll 000304 still_in_the_scrolling_business linus_display_scroll 000305 switch_name linus_display_scroll 000320 user_io_window_position_ip linus_display_scroll 000322 users_response linus_display_scroll 000332 window_iocb_ptr linus_display_scroll 000334 work_area_ptr linus_display_scroll 000336 format_document_options_ptr linus_display_scroll 000340 function_key_data_ptr linus_display_scroll 000342 display_arg_results linus_display_scroll 000342 page_ip linus_display_scroll 000344 report_cip linus_display_scroll 000346 function_key_info linus_display_scroll 000516 scroll_ip linus_display_scroll 000520 window_status_info_ptr linus_display_scroll 000534 dcop_buffer_empty_pending display_chunk_of_page 000535 dcop_current_line_on_page display_chunk_of_page 000536 dcop_current_line_on_screen display_chunk_of_page 000537 dcop_number_of_chars_to_write display_chunk_of_page 000540 dcop_loop display_chunk_of_page 000541 dcop_loop_limit display_chunk_of_page prompt_user 000100 pu_number_of_chars_read prompt_user 000101 pu_response_buffer prompt_user 000201 pu_response_line prompt_user 000202 pu_still_looking_for_a_valid_response prompt_user 000212 pu_window_status_pending_flag prompt_user set_function_key 000100 sfk_character_loop set_function_key 000100 sfk_function_key_sequence set_function_key 000110 sfk_function_key_sequence_buffer set_function_key 000120 sfk_loop set_function_key 000121 sfk_no_match set_function_key 000142 tm_current_position translate_mnemonics 000143 tm_escape_is_replacement_char translate_mnemonics 000144 tm_mnemonic_length translate_mnemonics 000145 tm_mnemonic translate_mnemonics 000156 tm_still_translating translate_mnemonics 000157 tm_string_index translate_mnemonics 000160 tm_string_length translate_mnemonics 000161 tm_string_varying translate_mnemonics 000172 tm_target_character_index translate_mnemonics 000173 tm_translation_index translate_mnemonics setup_for_next_chunk 000106 gur_character_read get_users_response 000110 gur_loop get_users_response 000111 gur_partial_match get_users_response 000114 sfnc_function_key_procs setup_for_next_chunk 000114 sfnc_function_number setup_for_next_chunk 000115 sfnc_loop setup_for_next_chunk 000116 sfnc_still_looking_for_a_valid_response setup_for_next_chunk 000117 sfnc_users_response setup_for_next_chunk THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_cs cat_realloc_cs call_var call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext alloc_auto_adj signal enable shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc set_cs_eis index_cs_eis any_to_any_tr alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ cu_$cl format_document_$string ioa_$rsnnl iox_$control iox_$destroy_iocb iox_$find_iocb iox_$get_line iox_$look_iocb ssu_$abort_line ssu_$print_message unique_chars_ video_utils_$turn_off_login_channel video_utils_$turn_on_login_channel window_$bell window_$clear_to_end_of_line window_$clear_window window_$create window_$destroy window_$get_one_unechoed_char window_$overwrite_text window_$position_cursor window_$write_sync_read THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$end_of_info error_table_$long_record iox_$user_io iox_$user_output linus_error_$bad_fkey_name linus_error_$bad_fkey_sequence linus_error_$bad_report_display video_data_$terminal_iocb video_et_$insuff_room_for_window video_et_$window_status_pending LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 5 10 002517 8 52 002525 38 002531 51 002540 55 002541 81 002556 82 002562 83 002563 84 002564 85 002565 87 002567 89 002570 114 002621 115 002625 116 002627 117 002634 118 002641 119 002660 121 002662 123 002663 148 002676 149 002702 150 002705 151 002710 152 002713 154 002714 156 002715 173 002726 175 002733 176 002736 177 002737 179 002740 181 002741 191 002755 193 002760 194 002773 195 003026 196 003030 198 003032 199 003047 202 003110 204 003133 206 003134 231 003142 234 003145 238 003175 239 003200 243 003203 253 003204 254 003205 255 003216 259 003222 261 003230 263 003240 268 003247 270 003255 279 003271 282 003307 286 003310 287 003312 288 003315 292 003333 299 003362 300 003365 307 003367 308 003377 309 003416 310 003422 314 003443 317 003474 319 003501 320 003502 321 003503 324 003511 325 003513 326 003515 327 003520 328 003522 329 003525 330 003527 334 003531 338 003533 341 003551 343 003555 347 003556 356 003567 357 003574 359 003576 361 003613 362 003631 363 003636 364 003645 378 003735 392 004052 394 004054 398 004055 402 004056 403 004061 404 004064 405 004067 406 004072 407 004075 408 004100 409 004110 410 004113 411 004116 412 004121 414 004124 418 004125 433 004127 435 004131 436 004134 437 004135 438 004157 439 004164 440 004177 441 004204 443 004250 444 004255 447 004270 449 004300 450 004303 451 004305 453 004307 454 004322 456 004327 458 004330 462 004331 493 004352 495 004353 496 004367 497 004372 498 004374 499 004401 501 004402 502 004404 503 004411 504 004413 506 004417 507 004422 508 004426 510 004452 513 004461 515 004502 516 004504 520 004527 521 004530 523 004531 525 004533 526 004545 530 004553 532 004554 535 004571 537 004577 539 004600 543 004606 545 004611 547 004640 549 004664 552 004666 553 004706 554 004721 557 004775 560 005011 563 005031 569 005032 577 005033 579 005035 580 005040 581 005041 582 005045 584 005046 588 005047 596 005070 625 005077 616 005102 617 005104 623 005146 624 005153 625 005163 627 005207 629 005212 630 005215 633 005246 637 005270 641 005312 645 005334 649 005356 654 005400 655 005402 657 005415 660 005456 663 005476 665 005477 668 005501 669 005511 671 005523 672 005531 674 005537 676 005540 678 005542 680 005546 682 005547 712 005572 713 005574 715 005616 717 005625 718 005634 721 005635 722 005637 723 005654 724 005655 725 005657 726 005673 728 005675 729 005700 730 005721 732 005722 735 005741 737 005743 738 005752 739 005757 741 005760 742 005765 744 005767 745 005772 747 005773 749 006004 751 006005 752 006010 754 006011 756 006015 757 006030 759 006033 761 006036 763 006037 766 006055 768 006056 770 006057 772 006066 778 006067 780 006075 801 006222 803 006224 804 006226 806 006231 808 006243 810 006253 811 006255 813 006256 815 006260 817 006272 819 006274 820 006306 823 006313 825 006314 827 006315 841 006323 844 006334 845 006337 847 006340 849 006343 850 006345 851 006347 852 006350 854 006351 855 006352 857 006355 859 006363 868 006364 870 006375 873 006402 874 006404 877 006405 880 006414 881 006415 882 006417 891 006420 892 006421 894 006424 895 006426 898 006427 902 006430 910 006436 912 006441 914 006444 915 006447 916 006451 918 006452 919 006454 922 006457 926 006460 938 006466 940 006473 941 006475 943 006505 945 006507 947 006513 948 006514 950 006515 951 006521 952 006522 961 006523 963 006533 968 006560 969 006561 970 006563 971 006564 972 006565 974 006566 978 006567 989 006575 991 006607 993 006612 994 006614 995 006616 997 006645 999 006647 1001 006654 1002 006656 1003 006660 1005 006661 1006 006663 1008 006665 1009 006666 1010 006667 1012 006670 1013 006703 1015 006710 1017 006711 1021 006712 1038 006720 1040 006722 1041 006724 1043 006757 1045 007000 1047 007002 1048 007005 1049 007006 1050 007010 1052 007035 1054 007056 1057 007064 1058 007066 1060 007073 1068 007167 1069 007171 1070 007172 1072 007174 1074 007177 1075 007212 1077 007217 1079 007220 1082 007226 1084 007227 1086 007230 1101 007232 1102 007234 1104 007240 1106 007253 1109 007272 1110 007273 1112 007275 1114 007277 1117 007304 1120 007356 1122 007411 1124 007432 1126 007434 1130 007435 1146 007437 1147 007441 1148 007443 1149 007444 1151 007447 1152 007455 1153 007460 1154 007461 1155 007463 1156 007476 1158 007503 1159 007506 1160 007525 1163 007530 1165 007536 1166 007540 1168 007543 1169 007550 1171 007551 1173 007553 1174 007574 1175 007601 1176 007614 1177 007621 1179 007656 1180 007664 1181 007665 1182 007667 1185 007673 1187 007674 1189 007700 1190 007717 1193 007724 1199 007725 1208 007733 1210 007741 1211 007744 1214 007745 1217 007752 1219 007755 1220 007756 1223 007760 1227 007761 1234 007767 1236 010011 1237 010016 1238 010040 1239 010045 1240 010060 1241 010065 1242 010110 1243 010115 1245 010130 1246 010150 1249 010155 1250 010160 1251 010167 1253 010174 1257 010175 1261 010203 1262 010207 1264 010210 1268 010211 1272 010217 1274 010222 1278 010223 1286 010231 1288 010241 1289 010244 1292 010245 1295 010247 1297 010252 1298 010253 1301 010255 1305 010256 1315 010264 1316 010267 1318 010270 1319 010273 1320 010323 1321 010330 1322 010344 1324 010362 1325 010367 1327 010370 1328 010373 1330 010374 1331 010377 1333 010427 1334 010451 1335 010456 1337 010470 1338 010475 1340 010476 1344 010477 1346 010505 1348 010506 1352 010507 1356 010515 1357 010520 1358 010523 1360 010525 1364 010526 1373 010527 1374 010532 1376 010561 1377 010570 1379 010575 1381 010600 1383 010602 1384 010604 1385 010605 1387 010634 1391 010650 1392 010651 1395 010660 1398 010671 1400 010673 1403 010703 1404 010714 1406 010721 1408 010722 1414 010723 1418 010724 1419 010727 1420 010731 1421 010733 1422 010735 1426 010737 1428 010744 1430 010746 1431 010752 1433 010754 1435 010761 1437 010763 1439 010770 1440 010775 1441 010777 1445 011001 1447 011006 1448 011010 1449 011024 1451 011042 1452 011043 1460 011045 1462 011050 1463 011071 1465 011146 1469 011234 1470 011236 1472 011312 1473 011315 1475 011347 1477 011370 1479 011411 1481 011412 1482 011414 1484 011446 1486 011467 1489 011510 1490 011521 1492 011542 1493 011547 1495 011553 1496 011555 1498 011607 1500 011630 1501 011662 1502 011704 1505 011760 1507 011764 1509 012001 1515 012022 1517 012033 1518 012037 1519 012042 1520 012045 1521 012047 1522 012051 1524 012053 1525 012060 1526 012063 1527 012065 1528 012067 1529 012071 1530 012073 1531 012075 1532 012077 1533 012101 1534 012104 1535 012106 1537 012110 1541 012111 1549 012112 1550 012123 1553 012142 1555 012145 1556 012156 1558 012175 1560 012201 1563 012203 1565 012236 1567 012255 1568 012266 1572 012305 1574 012310 1575 012317 1579 012336 1583 012337 1593 012350 ----------------------------------------------------------- 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