COMPILATION LISTING OF SEGMENT wioctl_ Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/10/89 1200.6 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(87-06-16,LJAdams), approve(87-06-16,MCR7584), 13* audit(87-07-23,Gilcrease), install(87-08-04,MR12.1-1055): 14* Changed editing_chars_version_2 to editing_chars_version_3 which 15* includes the redisplay character (for DSA only). 16* editing_chars_version_2 will still be accepted. 17* 2) change(87-07-10,LJAdams), approve(87-07-10,MCR7742), 18* audit(87-07-23,Gilcrease), install(87-08-04,MR12.1-1055): 19* Changed to accept either scroll or line_count as a valid value for 20* mv.char_value. 21* 3) change(88-02-08,Brunelle), approve(88-02-08,MCR7813), 22* audit(88-10-12,Blair), install(88-10-17,MR12.2-1171): 23* Change to use SPECIAL_VERSION_2 instead of SPECIAL_VERSION of special 24* chars structure. Change set/get_special control orders to automatically 25* handle old(3)/new(15) lengths of special_chars. 26* 4) change(88-10-20,Brunelle), approve(88-10-20,PBF7813), 27* audit(88-10-20,Farley), install(88-10-20,MR12.2-1175): 28* Correct "ptr being referenced but never set" problem. Also altered method 29* used to copy old-version special chars structures from/to new version to 30* use a more efficient manner. 31* 5) change(89-02-27,Lee), approve(89-03-14,MCR8075), audit(89-04-20,Flegel), 32* install(89-05-10,MR12.3-1041): 33* phx19510 (Video 91) - fixed to handle problem with setting of editing 34* chars when the erase and kill characters are being interchanged. 35* END HISTORY COMMENTS */ 36 37 38 /* wioctl_ -- control orders and modes for window_io_ */ 39 /* Benson I. Margulies, sometime in 1981 */ 40 /* Modified 11 December 1981 by Chris Jones to add more_mode=fold */ 41 /* Modified 15 December 1981 by Chris Jones to add set_editing_chars */ 42 /* Modified 11 January 1982 by Chris Jones to clear break table entries 43* on ^erkl and ^esc modes */ 44 /* Modified 26 January 1982 by William York to implement user-settable 45* more handlers. */ 46 /* Modified 3 February 1982 by Chris Jones to fix set_window_info so cursor 47* always lands in the window */ 48 /* Modified 28 April 1982 by WMY to return the current more handler routine 49* (if any) in a set_more_handler call. version 2 of more_handler_info. */ 50 /* Modified 26 August 1982 by WMY to add the send_buffered_output order, and 51* pass any unrecognized order on to tc_ level. */ 52 /* Modified 20 September 1982 by WMY to remove the send_buffered_output 53* control order, since window_$sync is a better mechanism. */ 54 /* Modified 18 October 1982 by WMY to re-allocate the window image when the 55* size of a window is changed via set_window_info. */ 56 /* Modified October 1982 by WMY to add set_ and get_token_characters and 57* set_ and get_more_prompt. */ 58 /* Modified January 1983 by WMY to add io_call support. */ 59 /* Modified February 1983 by WMY to add set_editor_key_bindings. */ 60 /* Modified 8 May 1983 by WMY to add io_call support for set and 61* get_window_status and set and get_token_characters. */ 62 /* Modified 7 June 1983 by WMY to make set_window_info check the elements 63* of the window_position_info structure for reasonable values and 64* actually set the width of the window instead of ignoring the width 65* specified by the caller. */ 66 /* Modified 14 June 1983 by WMY to use version 2 line_editor_key_binding_info 67* structure, and interpret a 0 width specification in a set_window_info 68* order as a full-screen-width window. */ 69 /* Modified 15 June 1983 by WMY to change set_editing_chars to use the 70* set_editor_key_bindings order, and unbind the old editing chars. */ 71 /* Modified 2 August 1983 by Jon A. Rochlis to make get_window_status zero 72* attach_data.status, not just attach_data.status_pending, and to 73* add io_call support for set_window_status */ 74 /* Modified 6 August 1983 by JR to add io_call support for get_more_responses, 75* get_more_prompt, and (set get)_editing_chars. Also to improve error 76* reporting in io_call processing, and to elimitate duplicate error messages 77* by zeroing code before returning if we report the error. Also to remove 78* the special casing of the terminal_info control, since we pass anything 79* unrecognized to tc_ anyway. */ 80 /* Modified 7 August 1983 by JR to add get_more_handler and io_call support 81* for it. */ 82 /* Modified 7-8 August 1983 by JR for better io_call support for 83* set_editor_key_bindings, added -builtin and -numarg control args */ 84 /* Modified 2 September 1983 by JR for case insensitive comparisons of 85* builtin requests and numarg actions for set_editor_key_bindings */ 86 /* Modified 8 October 1983 by JR for partial screen width support. Made 87* set_window_info set the new fields in tc_desk_info, and default column 88* origin to 1 if we get passed 0 (it used to be a mbz). */ 89 /* Modified December 1983 by JR to make get_capabilites set the various 90* flags correctly for partial width windows, and to make get_window_info 91* set window_position.origin.column */ 92 /* Modified 23 December 1983 by JR to support the (set get)_output_conversion 93* and (set get)_special control orders. Merry Christmas!! */ 94 /* Modified 8 January 1983 by JR to explicitly do a get_capabilities to 95* determine if more_mode=SCROLL rather than relying on 96* attach_data.capabilities which is going away. */ 97 /* Modified 1 February 1984 by JR to support the removal of window_io_video_ 98* by adding the get_window_iocb_ptr for window_, and adding support for 99* read_status here, since all roads lead to wioctl_ for control orders. */ 100 /* Modified 29 February 1984 by Barmar to add get_editor_key_bindings 101* control order, and make set_key_binding free dispatch tables that become 102* garbage */ 103 /* Modified 1 March 1984 by Barmar to change "goto error_return" into 104* "call error_exit", and to upgrade set_editor_key_bindings to support 105* the new set_editor_key_bindings info structure. */ 106 /* Modified 9 March 1984 by Barmar - Fixed lots of invalid code, add 107* io_call support for setting name, description, and info_path, 108* implemented io_call get_editor_key_bindings */ 109 /* Modified 22 March 1984 by Barmar - Added (set get)_audit_iocb_ptr control 110* orders. */ 111 /* Modified 28 March 1984 by JR to add support for window_iocb_ptr in 112* tc_desk_info, and to add support to get_window_status for 113* W_STATUS_TTP_CHANGE and W_STATUS_RECONNECTION. */ 114 /* Modified 01 September 1984 by JR to add edited mode. */ 115 116 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 117 wioctl_: 118 procedure; 119 120 declare ( 121 (Old_modes, New_modes, Order) 122 character (*), 123 Code fixed bin (35), 124 Iocb_ptr pointer, 125 Info_ptr pointer 126 ) parameter; 127 128 declare temp_ptr pointer; 129 130 131 declare mode_string_$parse entry (character (*), pointer, pointer, fixed binary (35)); 132 133 declare ioa_$rsnnl entry () options (variable); 134 declare pathname_ entry (char (*), char (*)) returns (char (168)); 135 declare requote_string_ entry (char (*)) returns (char (*)); 136 declare window_io_iox_$reset_more_entry 137 entry (pointer); 138 139 declare target_iocbp pointer; 140 declare modex fixed bin; 141 declare force_mode bit (1) aligned; 142 declare binding_index fixed bin; 143 144 declare 1 auto_capabilities_info 145 aligned like capabilities_info; 146 147 declare 1 desk_info aligned like tc_desk_window_info; 148 149 declare ( 150 video_et_$bad_window_id, 151 video_et_$overlapping_more_responses, 152 video_et_$window_too_big, 153 video_et_$no_more_handler_in_use, 154 error_table_$bad_subr_arg, 155 error_table_$bad_mode_value, 156 error_table_$inconsistent, 157 error_table_$null_info_ptr, 158 error_table_$invalid_array_size 159 ) external static fixed bin (35); 160 declare error_table_$bad_mode fixed bin (35) ext static; 161 declare error_table_$unimplemented_version 162 fixed bin (35) ext static; 163 164 declare (addr, bin, byte, clock, codeptr, copy, hbound, index, lbound, length, max, null, rank, rtrim, search, string, 165 substr, translate, unspec) 166 builtin; 167 dcl cleanup condition; 168 dcl SPACE char (1) static options (constant) init (" "); 169 dcl DEL char (1) static options (constant) init (""); 170 dcl WHITE_SPACE char (5) int static options (constant) initial 171 /* CR, NL, HT, VT, FF */ 172 (" 173 "); 174 175 /* special chars structures to support old/new versions */ 176 dcl 1 special_chars_old aligned based, /* table of special character sequences */ 177 2 nl_seq aligned like c_chars_old, /* new-line sequence */ 178 2 cr_seq aligned like c_chars_old, /* carriage-return sequence */ 179 2 bs_seq aligned like c_chars_old, /* backspace sequence */ 180 2 tab_seq aligned like c_chars_old, /* horizontal tab sequence */ 181 2 vt_seq aligned like c_chars_old, /* vertical tab sequence */ 182 2 ff_seq aligned like c_chars_old, /* form-feed sequence */ 183 2 printer_on aligned like c_chars_old, /* printer-on sequence */ 184 2 printer_off aligned like c_chars_old, /* printer_off sequence */ 185 2 red_ribbon_shift aligned like c_chars_old, /* red ribbon shift sequence */ 186 2 black_ribbon_shift aligned like c_chars_old, /* black ribbon shift sequence */ 187 2 end_of_page aligned like c_chars_old, /* end-of-page warning sequence */ 188 2 escape_length fixed bin, /* number of escape sequences */ 189 2 not_edited_escapes (sc_escape_len refer (special_chars_old.escape_length)) like c_chars_old, 190 /* use in ^edited mode */ 191 2 edited_escapes (sc_escape_len refer (special_chars_old.escape_length)) like c_chars_old, 192 /* use in edited mode */ 193 2 input_escapes aligned, 194 3 len fixed bin (8) unaligned, /* length of string */ 195 3 str char (sc_input_escape_len refer (special_chars_old.input_escapes.len)) unaligned, 196 /* escape sequence characters */ 197 2 input_results aligned, 198 3 pad bit (9) unaligned, /* so that strings will look the same */ 199 3 str char (sc_input_escape_len refer (special_chars_old.input_escapes.len)) unaligned; 200 /* results of escape sequences */ 201 202 203 dcl 1 c_chars_old based (c_chars_ptr) aligned, 204 2 count fixed bin (8) unaligned, 205 2 chars (3) char (1) unaligned; 206 207 dcl 1 special_chars_struc_old 208 aligned based, 209 2 version fixed bin, 210 2 default fixed bin, /* non-zero indicates use default */ 211 2 special_chars, /* same as level-1 above */ 212 /* has to be spelled out instead of using like */ 213 /* because of refer options */ 214 3 nl_seq aligned like c_chars_old, /* new-line sequence */ 215 3 cr_seq aligned like c_chars_old, /* carriage-return sequence */ 216 3 bs_seq aligned like c_chars_old, /* backspace sequence */ 217 3 tab_seq aligned like c_chars_old, /* horizontal tab sequence */ 218 3 vt_seq aligned like c_chars_old, /* vertical tab sequence */ 219 3 ff_seq aligned like c_chars_old, /* form-feed sequence */ 220 3 printer_on aligned like c_chars_old, /* printer-on sequence */ 221 3 printer_off aligned like c_chars_old, /* printer_off sequence */ 222 3 red_ribbon_shift aligned like c_chars_old, /* red ribbon shift sequence */ 223 3 black_ribbon_shift 224 aligned like c_chars_old, /* black ribbon shift sequence */ 225 3 end_of_page aligned like c_chars_old, /* end-of-page warning sequence */ 226 3 escape_length fixed bin, /* number of escape sequences */ 227 3 not_edited_escapes 228 (sc_escape_len refer (special_chars_struc_old.escape_length)) like c_chars_old, 229 /* use in ^edited mode */ 230 3 edited_escapes (sc_escape_len refer (special_chars_struc_old.escape_length)) like c_chars_old, 231 /* use in edited mode */ 232 3 input_escapes aligned, 233 4 len fixed bin (8) unaligned, /* length of string */ 234 4 str char (sc_input_escape_len refer (special_chars_struc_old.input_escapes.len)) unaligned, 235 /* escape sequence characters */ 236 3 input_results aligned, 237 4 pad bit (9) unaligned, /* so that strings will look the same */ 238 4 str char (sc_input_escape_len refer (special_chars_struc_old.input_escapes.len)) unaligned; 239 /* results of escape sequences */ 240 241 242 modes: 243 entry (Iocb_ptr, New_modes, Old_modes, Code); 244 245 call setup; 246 247 Old_modes = ""; 248 call ioa_$rsnnl ( 249 "more_mode=^[scroll^;clear^;wrap^;fold^],^[^^^]more,ll=^d,pl=^d,^[^^^]vertsp,^[^^^]can,^[^^^]erkl,^[^^^]esc,^[^^^]rawo,^[^^^]red,^[^^^]ctl_char,^[^^^]edited", 250 Old_modes, (0), attach_data.more_mode, ^attach_data.more_processing, attach_data.current.columns, 251 attach_data.current.rows, ^attach_data.flags.vertsp, ^attach_data.flags.can, ^attach_data.flags.erkl, 252 ^attach_data.flags.esc, ^attach_data.flags.rawo, ^attach_data.flags.red, ^attach_data.flags.ctl_char, 253 ^attach_data.flags.edited); 254 255 if New_modes = "" then 256 return; 257 call mode_string_$parse (New_modes, get_system_free_area_ (), mode_string_info_ptr, Code); 258 if Code ^= 0 then 259 return; 260 261 force_mode = "0"b; 262 do modex = 1 to hbound (mode_string_info.modes, 1); 263 call set_mode (mode_string_info.modes (modex)); 264 end; 265 266 mode_error_return: 267 free mode_string_info; 268 269 return; 270 271 /* This procedure analyzes a single mode */ 272 set_mode: 273 procedure (mv); 274 dcl 1 mv aligned like mode_value; 275 276 if mv.mode_name = "force" then 277 force_mode = mode_value_boolean (); 278 279 else if mv.mode_name = "more_mode" then do; 280 if ^mv.char_valuep then 281 goto BAD_TYPE; 282 283 if mv.char_value = "scroll" | mv.char_value = "line_count" then do; 284 auto_capabilities_info.version = capabilities_info_version_1; 285 call iox_$control (Iocb_ptr, "get_capabilities", addr (auto_capabilities_info), Code); 286 if Code ^= 0 then 287 return; 288 if ^auto_capabilities_info.scroll_region then 289 go to BAD_VALUE; 290 attach_data.more_mode = MORE_MODE_SCROLL; 291 end; 292 else if mv.char_value = "wrap" then 293 attach_data.more_mode = MORE_MODE_WRAP; 294 else if mv.char_value = "clear" then 295 attach_data.more_mode = MORE_MODE_CLEAR; 296 else if mv.char_value = "fold" then 297 attach_data.more_mode = MORE_MODE_FOLD; 298 else goto BAD_TYPE; 299 end; /* more_mode */ 300 else if mv.mode_name = "more" then 301 attach_data.more_processing = mode_value_boolean (); 302 else if mv.mode_name = "debug" then 303 attach_data.debug = mode_value_boolean (); 304 305 else if mv.mode_name = "ll" then 306 if mv.numeric_value ^= attach_data.current.columns then 307 go to BAD_VALUE; 308 else ; /* read only, but accept truth */ 309 310 else if mv.mode_name = "pl" then 311 if mv.numeric_value ^= attach_data.current.rows then 312 go to BAD_VALUE; 313 else ; 314 315 else if mv.mode_name = "vertsp" then 316 attach_data.flags.vertsp = mode_value_boolean (); 317 else if mv.mode_name = "can" then 318 attach_data.can = mode_value_boolean (); 319 320 /* These two require break tbl changes as well */ 321 else if mv.mode_name = "erkl" then do; 322 attach_data.erkl = mode_value_boolean (); 323 call set_break_table (attach_data.erase_char, attach_data.erkl); 324 call set_break_table (attach_data.kill_char, attach_data.erkl); 325 end; /* erkl mode */ 326 327 else if mv.mode_name = "esc" then do; 328 attach_data.esc = mode_value_boolean (); 329 call set_break_table (attach_data.input_escape_char, attach_data.esc); 330 end; /* esc mode */ 331 332 else if mv.mode_name = "rawo" then 333 begin; 334 declare saved_r bit (1); 335 saved_r = attach_data.rawo; 336 attach_data.rawo = mode_value_boolean (); 337 if ^saved_r & attach_data.rawo & attach_data.cursor_valid then do; 338 attach_data.row_at_rawo = attach_data.line; 339 attach_data.col_at_rawo = attach_data.col; 340 end; 341 else if saved_r & ^attach_data.rawo then do; 342 attach_data.line = attach_data.row_at_rawo; 343 attach_data.col = attach_data.col_at_rawo; 344 attach_data.cursor_valid = "1"b; 345 end; 346 end; 347 348 else if mv.mode_name = "red" then 349 attach_data.red = mode_value_boolean (); 350 else if mv.mode_name = "ctl_char" then 351 attach_data.ctl_char = mode_value_boolean (); 352 else if mv.mode_name = "edited" then 353 attach_data.edited = mode_value_boolean (); 354 355 /* support modes we've never heard of */ 356 else if ^force_mode then do; 357 Code = error_table_$bad_mode; /* Old_modes = mv.mode_name; */ 358 /* this should contain the invalid mode for good error messages */ 359 /* if mv.char_valuep then Old_modes = rtrim(Old_modes) || "=" || mv.char_value; */ 360 go to mode_error_return; 361 end; 362 363 return; 364 365 /* check type and return mode value */ 366 367 mode_value_boolean: 368 procedure returns (bit (1) aligned); /* global mv */ 369 if ^mv.boolean_valuep then 370 goto BAD_TYPE; 371 return (mv.boolean_value); 372 373 mode_value_char: 374 entry returns (char (32) varying); 375 if ^mv.char_valuep then 376 goto BAD_TYPE; 377 return (rtrim (mv.char_value)); 378 379 mode_value_numeric: 380 entry returns (fixed bin (35)); 381 if ^mv.numeric_valuep then 382 goto BAD_TYPE; 383 return (mv.numeric_value); 384 385 end; 386 BAD_TYPE: 387 BAD_VALUE: 388 Code = error_table_$bad_mode_value; 389 goto mode_error_return; 390 end set_mode; 391 392 control: 393 entry (Iocb_ptr, Order, Info_ptr, Code); 394 call setup; 395 396 if Order = "reset_more" then 397 call window_io_iox_$reset_more_entry (Iocb_ptr); 398 399 else if Order = "send_buffered_output" then 400 call window_$sync (Iocb_ptr, Code); 401 402 else if Order = "printer_off" then 403 attach_data.suppress_echo = "1"b; 404 else if Order = "printer_on" then 405 attach_data.suppress_echo = "0"b; 406 407 else if Order = "get_terminal_iocb_ptr" then 408 Info_ptr = target_iocbp; /* This is really very un-iox-like */ 409 410 else if Order = "get_window_iocb_ptr" then 411 Info_ptr = Iocb_ptr -> actual_iocb_ptr; /* If terminal control can do it, then window_ can do it also ... */ 412 413 else if Order = "get_capabilities" then do; 414 call check_null (); 415 call iox_$control (target_iocbp, Order, Info_ptr, Code); 416 if Code ^= 0 then 417 return; 418 419 /* Now map the terminal capabilities into the window capabilities */ 420 if Info_ptr -> capabilities_info.columns ^= attach_data.current.columns then do; 421 /* Illegal operations for non full width windows */ 422 Info_ptr -> capabilities_info.scroll_region = "0"b; 423 Info_ptr -> capabilities_info.insert_chars = "1"b; 424 /* we simulate these if they aren't available */ 425 Info_ptr -> capabilities_info.insert_mode = "1"b; 426 /* ? */ 427 Info_ptr -> capabilities_info.delete_chars = "1"b; 428 end; 429 430 Info_ptr -> capabilities_info.columns = attach_data.current.columns; 431 Info_ptr -> capabilities_info.rows = attach_data.current.rows; 432 return; 433 end; 434 435 else if Order = "get_window_info" then do; 436 call check_null (); 437 window_position_info_ptr = Info_ptr; 438 call require_version (window_position_info.version, window_position_info_version_1); 439 window_position_info.height = attach_data.current.rows; 440 window_position_info.width = attach_data.current.columns; 441 window_position_info.origin.column = attach_data.column_origin; 442 window_position_info.origin.line = attach_data.line_origin; 443 end; 444 445 else if Order = "set_window_info" then do; 446 call check_null (); 447 window_position_info_ptr = Info_ptr; 448 call require_version (window_position_info.version, window_position_info_version_1); 449 450 auto_capabilities_info.version = capabilities_info_version_1; 451 call iox_$control (target_iocbp, "get_capabilities", addr (auto_capabilities_info), Code); 452 if Code ^= 0 then 453 return; 454 455 /* Verify that the new window position and bounds are within 456* the screen bounds */ 457 /* tc_ will verify that start+length-1 is within bounds ... 458* perhaps this should all be done in one place */ 459 460 Code = video_et_$window_too_big; 461 462 if (window_position_info.origin.line > auto_capabilities_info.screensize.rows) 463 | (window_position_info.origin.line < 1) then 464 return; 465 466 if window_position_info.extent.height < 1 then 467 return; 468 469 if (window_position_info.origin.line + window_position_info.extent.height - 1) 470 > auto_capabilities_info.screensize.rows then 471 return; 472 473 if window_position_info.origin.column = 0 then 474 window_position_info.origin.column = 1; 475 476 if window_position_info.origin.column < 1 477 | window_position_info.origin.column > auto_capabilities_info.screensize.columns then 478 return; 479 480 if window_position_info.extent.width > auto_capabilities_info.screensize.columns then 481 return; 482 483 if window_position_info.extent.width = 0 then 484 window_position_info.extent.width = auto_capabilities_info.screensize.columns; 485 486 Code = 0; 487 488 desk_info.window_id = attach_data.window_id; 489 desk_info.first_row = window_position_info.origin.line; 490 desk_info.n_rows = window_position_info.extent.height; 491 desk_info.first_column = window_position_info.origin.column; 492 desk_info.n_columns = window_position_info.extent.width; 493 494 call iox_$control (target_iocbp, "resize_window", addr (desk_info), Code); 495 496 if Code = video_et_$bad_window_id then do; 497 call iox_$control (target_iocbp, "check_out_window", addr (desk_info), (0)); 498 desk_info.window_iocb_ptr = Iocb_ptr -> iocb.actual_iocb_ptr; 499 call iox_$control (target_iocbp, "check_in_window", addr (desk_info), Code); 500 if Code = 0 then 501 attach_data.window_id = desk_info.window_id; 502 end; 503 if Code ^= 0 then 504 return; 505 506 /* Free the old-size window image. */ 507 if attach_data.window_image_ptr ^= null () then 508 free window_image in (attach_data_area); 509 510 rearrange_window: 511 begin; 512 declare origin_change fixed bin; 513 declare bottom_line_change fixed bin; 514 declare old_origin fixed bin; 515 declare old_bottom_line fixed bin; 516 declare new_bottom_line fixed bin; 517 518 declare saved_ignore_status bit (1) aligned; 519 520 declare cleanup condition; 521 522 saved_ignore_status = attach_data.ignore_status; 523 524 on cleanup attach_data.ignore_status = saved_ignore_status; 525 attach_data.ignore_status = "1"b; 526 527 string (attach_data.status) = ""b; 528 attach_data.status_pending = "0"b; 529 530 origin_change = attach_data.current.line_origin - window_position_info.line; 531 /* + if it went up, got new turf */ 532 old_origin = attach_data.current.line_origin; 533 534 new_bottom_line = window_position_info.line + window_position_info.height - 1; 535 old_bottom_line = old_origin + attach_data.current.rows - 1; 536 537 bottom_line_change = new_bottom_line - old_bottom_line; 538 539 attach_data.current.rows = window_position_info.height; 540 attach_data.line_origin = window_position_info.line; 541 542 attach_data.current.columns = window_position_info.width; 543 attach_data.column_origin = window_position_info.column; 544 545 if ^(((attach_data.current.line_origin >= old_origin) 546 /** **/ 547 & (attach_data.current.line_origin <= new_bottom_line)) 548 /* top is within old space */ 549 | ((new_bottom_line >= old_origin) /** **/ 550 & (new_bottom_line <= old_bottom_line))) 551 /* no overlap */ 552 then do; 553 call window_$position_cursor (Iocb_ptr, (1), (1), (0)); 554 call window_io_iox_$reset_more_entry (Iocb_ptr); 555 end; 556 557 else do; /* There is some overlap, clear the new turf */ 558 559 if attach_data.line > attach_data.current.rows then 560 call window_$position_cursor (Iocb_ptr, attach_data.current.rows, (1), (0)); 561 else if origin_change > 0 then 562 call window_$change_line (Iocb_ptr, attach_data.line + origin_change, (0)); 563 /* same place on screen */ 564 565 end; 566 567 attach_data.ignore_status = saved_ignore_status; 568 end rearrange_window; 569 570 call ioa_$rsnnl ("window_io_ ^a -first_line ^i -n_lines ^i -first_column ^i -n_columns ^i", 571 attach_data.attach_description, (0), attach_data.target_iocb_ptr -> iocb.name, 572 attach_data.line_origin, attach_data.current.rows, attach_data.column_origin, 573 attach_data.current.columns); 574 575 attach_data.status_pending = "0"b; 576 string (attach_data.status) = ""b; 577 578 if attach_data.async_count > 0 then do; 579 attach_data.status_pending = "1"b; 580 attach_data.status.screen_invalid = "1"b; 581 end; 582 583 /* Now that all re-sizing is done, allocate new window image. */ 584 allocate window_image in (attach_data_area); 585 586 if ^(attach_data.more_mode = MORE_MODE_SCROLL) then 587 return; 588 589 auto_capabilities_info.version = capabilities_info_version_1; 590 call iox_$control (Iocb_ptr, "get_capabilities", addr (auto_capabilities_info), Code); 591 /* window capabilities */ 592 if Code ^= 0 then 593 return; /* at least we tried */ 594 if ^auto_capabilities_info.scroll_region then 595 attach_data.more_mode = MORE_MODE_WRAP; 596 597 return; 598 end; 599 600 else if Order = "get_editing_chars" then do; 601 call check_null (); 602 editing_chars_ptr = Info_ptr; 603 call require_version (editing_chars.version, editing_chars_version_3); 604 editing_chars.erase = attach_data.erase_char; 605 editing_chars.kill = attach_data.kill_char; 606 end; 607 608 else if Order = "set_editing_chars" then do; 609 call check_null (); 610 editing_chars_ptr = Info_ptr; 611 call require_version (editing_chars.version, editing_chars_version_3); 612 if index (WHITE_SPACE, editing_chars.erase) ^= 0 | index (WHITE_SPACE, editing_chars.kill) ^= 0 613 | editing_chars.erase = editing_chars.kill then 614 Code = error_table_$inconsistent; 615 616 else do; 617 618 begin; 619 dcl 1 lekbi aligned like line_editor_key_binding_info based (sekbi.key_binding_info_ptr); 620 dcl 1 sekbi aligned like set_editor_key_bindings_info; 621 622 sekbi.version = set_editor_key_bindings_info_version_1; 623 sekbi.update = "1"b; 624 sekbi.replace = "0"b; 625 sekbi.mbz = (34)"0"b; 626 sekbi.key_binding_info_ptr = null (); 627 line_editor_binding_count = 4; 628 line_editor_longest_sequence = 1; 629 630 on cleanup 631 begin; 632 if sekbi.key_binding_info_ptr ^= null () then 633 free lekbi in (attach_data_area); 634 end; 635 allocate lekbi in (attach_data_area); 636 637 lekbi.version = line_editor_key_binding_info_version_3; 638 639 /* We may end up setting either character or both */ 640 lekbi.binding_count = 0; 641 642 /* SPACE means don't change that character */ 643 644 /* RL: phx19510 - handle case where both erase and kill are specified and */ 645 /* possibly being interchanged */ 646 if editing_chars.erase ^= SPACE & editing_chars.kill ^= SPACE then do; 647 lekbi.binding_count = lekbi.binding_count + 4; 648 649 /* First unbind the previous erase char, to 650* SELF_INSERT if it is a printing graphic or 651* UNDEFINED if it is not. */ 652 653 if (attach_data.erase_char >= SPACE) & (attach_data.erase_char < DEL) then 654 lekbi.bindings (lekbi.binding_count - 3).action = SELF_INSERT; 655 else lekbi.bindings (lekbi.binding_count - 3).action = UNDEFINED; 656 lekbi.bindings (lekbi.binding_count - 3).sequence = attach_data.erase_char; 657 658 lekbi.bindings (lekbi.binding_count - 1).action = BACKWARD_DELETE_CHARACTER; 659 lekbi.bindings (lekbi.binding_count - 1).sequence = editing_chars.erase; 660 661 attach_data.erase_char = editing_chars.erase; 662 663 if (attach_data.kill_char >= SPACE) & (attach_data.kill_char < DEL) then 664 lekbi.bindings (lekbi.binding_count - 2).action = SELF_INSERT; 665 else lekbi.bindings (lekbi.binding_count - 2).action = UNDEFINED; 666 lekbi.bindings (lekbi.binding_count - 2).sequence = attach_data.kill_char; 667 668 lekbi.bindings (lekbi.binding_count).action = KILL_TO_BEGINNING_OF_LINE; 669 lekbi.bindings (lekbi.binding_count).sequence = editing_chars.kill; 670 671 attach_data.kill_char = editing_chars.kill; 672 673 674 675 end; 676 677 else if editing_chars.erase ^= SPACE then do; 678 lekbi.binding_count = lekbi.binding_count + 2; 679 680 /* First unbind the previous erase char, to 681* SELF_INSERT if it is a printing graphic or 682* UNDEFINED if it is not. */ 683 684 if (attach_data.erase_char >= SPACE) & (attach_data.erase_char < DEL) then 685 lekbi.bindings (lekbi.binding_count - 1).action = SELF_INSERT; 686 else lekbi.bindings (lekbi.binding_count - 1).action = UNDEFINED; 687 lekbi.bindings (lekbi.binding_count - 1).sequence = attach_data.erase_char; 688 689 lekbi.bindings (lekbi.binding_count).action = BACKWARD_DELETE_CHARACTER; 690 lekbi.bindings (lekbi.binding_count).sequence = editing_chars.erase; 691 692 attach_data.erase_char = editing_chars.erase; 693 end; 694 695 else if editing_chars.kill ^= SPACE then do; 696 lekbi.binding_count = lekbi.binding_count + 2; 697 698 /* First unbind the previous kill char, to 699* SELF_INSERT if it is a printing graphic or 700* UNDEFINED if it is not. */ 701 702 if (attach_data.kill_char >= SPACE) & (attach_data.kill_char < DEL) then 703 lekbi.bindings (lekbi.binding_count - 1).action = SELF_INSERT; 704 else lekbi.bindings (lekbi.binding_count - 1).action = UNDEFINED; 705 lekbi.bindings (lekbi.binding_count - 1).sequence = attach_data.kill_char; 706 707 lekbi.bindings (lekbi.binding_count).action = KILL_TO_BEGINNING_OF_LINE; 708 lekbi.bindings (lekbi.binding_count).sequence = editing_chars.kill; 709 710 attach_data.kill_char = editing_chars.kill; 711 end; 712 713 /*** Use default strings for these */ 714 lekbi.name (*), lekbi.description (*), lekbi.info_dir (*), lekbi.info_entry (*) = ""; 715 716 call iox_$control (Iocb_ptr, "set_editor_key_bindings", addr (sekbi), Code); 717 718 temp_ptr = sekbi.key_binding_info_ptr; 719 sekbi.key_binding_info_ptr = null (); 720 free temp_ptr -> lekbi; 721 end; 722 end; 723 end; 724 725 else if Order = "get_more_responses" then do; 726 call check_null (); 727 more_responses_info_ptr = Info_ptr; 728 call require_version (more_responses_info.version, more_responses_info_version_1); 729 more_responses_info.n_yeses = attach_data.n_yeses; 730 more_responses_info.n_noes = attach_data.n_noes; 731 more_responses_info.yeses = attach_data.more_yeses; 732 more_responses_info.noes = attach_data.more_noes; 733 end; 734 735 else if Order = "set_more_responses" then do; 736 call check_null (); 737 more_responses_info_ptr = Info_ptr; 738 call require_version (more_responses_info.version, more_responses_info_version_1); 739 if search (substr (more_responses_info.yeses, 1, more_responses_info.n_yeses), 740 substr (more_responses_info.noes, 1, more_responses_info.n_noes)) > 0 then 741 Code = video_et_$overlapping_more_responses; 742 else do; 743 attach_data.n_yeses = more_responses_info.n_yeses; 744 attach_data.n_noes = more_responses_info.n_noes; 745 attach_data.more_yeses = more_responses_info.yeses; 746 attach_data.more_noes = more_responses_info.noes; 747 end; 748 end; /* set_more_responses */ 749 750 else if Order = "get_window_status" then do; /* destructive read */ 751 call check_null (); 752 window_status_info_ptr = Info_ptr; 753 call require_version (window_status_info.version, window_status_version_1); 754 string (window_status_info.status_string) = string (attach_data.status); 755 string (attach_data.status) = "0"b; 756 attach_data.status_pending = "0"b; 757 return; 758 end; 759 760 else if Order = "set_window_status" /* Interrupt */ 761 then do; /* return codes from now Until doomsday */ 762 call check_null (); 763 window_status_info_ptr = Info_ptr; 764 call require_version (window_status_info.version, window_status_version_1); 765 string (attach_data.status) = string (attach_data.status) | string (window_status_info.status_string); 766 attach_data.status_pending = "1"b; 767 end; 768 769 else if Order = "start" then 770 call iox_$control (target_iocbp, "start", null (), (0)); 771 772 else if Order = "set_break_table" then do; 773 call check_null (); 774 break_table_ptr = Info_ptr; 775 call require_version (break_table_info.version, break_table_info_version_1); 776 attach_data.breaks = string (break_table_info.breaks); 777 end; 778 else if Order = "get_break_table" then do; 779 call check_null (); 780 break_table_ptr = Info_ptr; 781 call require_version (break_table_info.version, break_table_info_version_1); 782 string (break_table_info.breaks) = attach_data.breaks; 783 end; 784 785 else if Order = "set_more_handler" then do; 786 call check_null (); 787 more_handler_info_ptr = Info_ptr; 788 call require_version (more_handler_info.version, more_handler_info_version_3); 789 790 /* return the old entry value if there was one */ 791 if attach_data.more_handler_in_use then do; 792 more_handler_info.old_more_handler = attach_data.more_handler; 793 more_handler_info.old_handler_valid = "1"b; 794 end; 795 else more_handler_info.old_handler_valid = "0"b; 796 797 /* should the entry variable be verified in some way? */ 798 attach_data.more_handler = more_handler_info.more_handler; 799 attach_data.more_handler_in_use = "1"b; 800 end; 801 802 else if Order = "get_more_handler" then do; 803 call check_null (); 804 more_handler_info_ptr = Info_ptr; 805 call require_version (more_handler_info.version, more_handler_info_version_3); 806 if ^attach_data.more_handler_in_use then do; 807 Code = video_et_$no_more_handler_in_use; 808 return; 809 end; 810 more_handler_info.more_handler = attach_data.more_handler; 811 more_handler_info.old_handler_valid = "0"b; 812 return; 813 end; 814 815 else if Order = "reset_more_handler" then 816 attach_data.more_handler_in_use = "0"b; 817 818 else if Order = "set_token_characters" then do; 819 call check_null (); 820 token_characters_info_ptr = Info_ptr; 821 call require_version_str (token_characters_info.version, token_characters_info_version_1); 822 attach_data.token_characters = token_characters_info.token_characters; 823 attach_data.token_character_count = token_characters_info.token_character_count; 824 end; 825 826 else if Order = "get_token_characters" then do; 827 call check_null (); 828 token_characters_info_ptr = Info_ptr; 829 call require_version_str (token_characters_info.version, token_characters_info_version_1); 830 token_characters_info.token_characters = attach_data.token_characters; 831 token_characters_info.token_character_count = attach_data.token_character_count; 832 end; 833 834 else if Order = "set_more_prompt" then do; 835 call check_null (); 836 more_prompt_info_ptr = Info_ptr; 837 call require_version_str (more_prompt_info.version, more_prompt_info_version_1); 838 attach_data.more_prompt = more_prompt_info.more_prompt; 839 end; 840 841 else if Order = "get_more_prompt" then do; 842 call check_null (); 843 more_prompt_info_ptr = Info_ptr; 844 call require_version_str (more_prompt_info.version, more_prompt_info_version_1); 845 more_prompt_info.more_prompt = attach_data.more_prompt; 846 end; 847 848 else if Order = "set_editor_key_bindings" then do; 849 call check_null (); 850 set_editor_key_bindings_info_ptr = Info_ptr; 851 852 dcl line_editor_key_binding_info_version_2 853 char (8) int static options (constant) init ("lekbi002"); 854 /* archaic version */ 855 if set_editor_key_bindings_info.version = line_editor_key_binding_info_version_2 856 | set_editor_key_bindings_info.version = line_editor_key_binding_info_version_3 then 857 call update_key_bindings (set_editor_key_bindings_info_ptr); 858 else if set_editor_key_bindings_info.version ^= set_editor_key_bindings_info_version_1 then 859 call error_exit (error_table_$unimplemented_version); 860 else if set_editor_key_bindings_info.replace = set_editor_key_bindings_info.update 861 /* exactly one may be set */ 862 then 863 call error_exit (error_table_$bad_subr_arg); 864 else if set_editor_key_bindings_info.update then 865 call update_key_bindings (set_editor_key_bindings_info.key_binding_info_ptr); 866 else /* if set_editor_key_bindings_info.replace */ 867 do; 868 temp_ptr = attach_data.dispatch_table_ptr; 869 attach_data.dispatch_table_ptr = set_editor_key_bindings_info.key_binding_info_ptr; 870 free temp_ptr -> dispatch_table in (attach_data_area); 871 end; 872 end; 873 874 else if Order = "get_editor_key_bindings" then do; 875 call check_null (); 876 get_editor_key_bindings_info_ptr = Info_ptr; 877 878 call require_version_str (get_editor_key_bindings_info.version, get_editor_key_bindings_info_version_1); 879 call require_mbz (get_editor_key_bindings_info.flags.mbz); 880 881 if get_editor_key_bindings_info.entire_state then 882 call make_key_bindings_copy (get_editor_key_bindings_info.entire_state_ptr); 883 884 else do; 885 line_editor_key_binding_info_ptr = get_editor_key_bindings_info.key_binding_info_ptr; 886 if line_editor_key_binding_info_ptr = null () then do; 887 call error_exit (error_table_$null_info_ptr); 888 end; 889 call require_version_str (line_editor_key_binding_info.version, 890 line_editor_key_binding_info_version_3); 891 892 dcl bad_prefix condition; 893 on bad_prefix /* Signaled if he asks for the binding of a sequence */ 894 call error_exit (error_table_$bad_subr_arg); 895 /* with an invalid prefix sequence */ 896 897 do binding_index = 1 to line_editor_key_binding_info.binding_count; 898 call get_key_binding (line_editor_key_binding_info.sequence (binding_index), 899 line_editor_key_binding_info.action (binding_index), 900 line_editor_key_binding_info.numarg_action (binding_index), 901 line_editor_key_binding_info.editor_routine (binding_index), 902 line_editor_key_binding_info.name (binding_index), 903 line_editor_key_binding_info.description (binding_index), 904 line_editor_key_binding_info.info_path (binding_index)); 905 end; 906 end; 907 908 return; 909 end; 910 911 else if Order = "get_output_conversion" then do; 912 dcl 1 cts aligned like cv_trans_struc based (cts_ptr); 913 dcl cts_ptr ptr; 914 call check_null (); 915 cts_ptr = Info_ptr; 916 if ^(cts.version = 1 | cts.version = CV_TRANS_VERSION) 917 /* support both versions */ 918 then do; 919 Code = error_table_$unimplemented_version; 920 return; 921 end; 922 begin; 923 dcl index fixed bin; 924 do index = 0 to CV_TRANS_SIZE (cts.version); 925 cts.cv_trans.value (index) = attach_data.output_cv_ptr -> cv_trans.value (index); 926 end; /* do */ 927 end; /* begin */ 928 end; 929 930 else if Order = "set_output_conversion" then do; 931 call check_null (); 932 cts_ptr = Info_ptr; 933 if ^(cts.version = 1 | cts.version = CV_TRANS_VERSION) 934 /* support both versions */ 935 then do; 936 Code = error_table_$unimplemented_version; 937 return; 938 end; 939 if cts.default = 1 then /* default to what we get from terminal control */ 940 do; 941 call iox_$control (target_iocbp, "get_output_conversion", cts_ptr, Code); 942 if Code ^= 0 then 943 return; 944 end; 945 attach_data.output_cv_ptr -> cv_trans.value (*) = OUTPUT_CONVERT_OCTAL; 946 /* anything but garbage will do */ 947 begin; 948 dcl index fixed bin; 949 do index = 0 to CV_TRANS_SIZE (cts.version); 950 attach_data.output_cv_ptr -> cv_trans.value (index) = cts.cv_trans.value (index); 951 end; /* do */ 952 end; /* begin */ 953 /* Set up tct table for quick conversion scan. */ 954 begin; 955 dcl cv_trans_idx fixed bin; 956 dcl conversion_type fixed bin; 957 958 /* Fill in first 128 entries in string from regular table. */ 959 do cv_trans_idx = 0 to 127; 960 substr (attach_data.conversion_tct_table, cv_trans_idx + 1, 1) = 961 byte (attach_data.output_cv_ptr -> cv_trans.value (cv_trans_idx)); 962 end; 963 964 /* Now handle next 128, giving defaults if necessary. */ 965 do cv_trans_idx = 128 to 255; 966 conversion_type = attach_data.output_cv_ptr -> cv_trans.value (cv_trans_idx); 967 if conversion_type = OUTPUT_CONVERT_ORDINARY 968 /* bull */ 969 then 970 substr (attach_data.conversion_tct_table, cv_trans_idx + 1, 1) = 971 byte (OUTPUT_CONVERT_OCTAL); 972 else substr (attach_data.conversion_tct_table, cv_trans_idx + 1, 1) = byte (conversion_type); 973 end; 974 975 /* Now take care of things beyond limits of conversion table. */ 976 substr (attach_data.conversion_tct_table, 257, 256) = copy (byte (OUTPUT_CONVERT_OCTAL), 256); 977 end; /* begin */ 978 979 end; 980 981 else if Order = "get_special" then do; 982 dcl 1 gsi aligned like get_special_info_struc based (Info_ptr); 983 dcl gsi_area area based (gsi.area_ptr); 984 985 dcl 1 gsi_old aligned based (Info_ptr), 986 2 area_ptr pointer, 987 2 table_ptr pointer; 988 dcl gsi_area_old area based (gsi_old.area_ptr); 989 990 call check_null (); 991 sc_escape_len = attach_data.special_ptr -> special_chars.escape_length; 992 sc_input_escape_len = attach_data.special_ptr -> special_chars.input_escapes.len; 993 if gsi.version = SPECIAL_INFO_STRUCT_VERSION_1 then do; 994 allocate special_chars_struc set (gsi.table_ptr) in (gsi_area); 995 gsi.table_ptr -> special_chars_struc.version = SPECIAL_VERSION_2; 996 addr (gsi.table_ptr -> special_chars_struc.special_chars) -> special_chars = 997 attach_data.special_ptr -> special_chars; 998 end; 999 else do; 1000 allocate special_chars_struc_old set (gsi_old.table_ptr) in (gsi_area_old); 1001 gsi_old.table_ptr -> special_chars_struc_old.version = SPECIAL_VERSION; 1002 call copy_new_to_old_special_table; 1003 if Code ^= 0 then do; 1004 free gsi_old.table_ptr -> special_chars_struc_old; 1005 gsi_old.table_ptr = null; 1006 end; 1007 end; 1008 end; 1009 1010 else if Order = "set_special" then do; 1011 dcl 1 scs aligned like special_chars_struc based (scs_ptr); 1012 dcl scs_ptr ptr; 1013 call check_null (); 1014 scs_ptr = Info_ptr; 1015 1016 /* this used to be a call to require_version but since we need to allow two 1017* version numbers, it won't work any more. We will check it inline for now */ 1018 if scs.version ^= SPECIAL_VERSION & scs.version ^= SPECIAL_VERSION_2 1019 & scs.version ^= editing_chars_version_2 then do; 1020 call error_exit (error_table_$unimplemented_version); 1021 end; 1022 on cleanup goto FREE_SCS; 1023 if scs.default = 1 then do; /* default to what we get from terminal control */ 1024 begin; 1025 dcl 1 auto_gsi like get_special_info_struc; 1026 auto_gsi.version = SPECIAL_INFO_STRUCT_VERSION_1; 1027 auto_gsi.area_ptr = get_system_free_area_ (); 1028 call iox_$control (target_iocbp, "get_special", addr (auto_gsi), Code); 1029 if Code ^= 0 then 1030 return; 1031 scs_ptr = auto_gsi.table_ptr; 1032 end; /* begin */ 1033 end; /* then do */ 1034 sc_escape_len = scs.special_chars.escape_length; 1035 sc_input_escape_len = scs.special_chars.input_escapes.len; 1036 allocate special_chars set (temp_ptr); 1037 if scs.version = SPECIAL_VERSION_2 then 1038 temp_ptr -> special_chars = addr (scs.special_chars) -> special_chars; 1039 else call copy_old_to_new_special_table; 1040 free attach_data.special_ptr -> special_chars; 1041 attach_data.special_ptr = temp_ptr; 1042 FREE_SCS: 1043 if scs_ptr ^= Info_ptr /* scs is what we got from terminal control, not what the user gave us */ 1044 then 1045 free scs; 1046 end; 1047 1048 else if Order = "read_status" then 1049 call read_status (); 1050 1051 else if (Order = "io_call") | (Order = "io_call_af") then 1052 call process_io_call (Iocb_ptr, Order, Info_ptr, Code); 1053 1054 else if Order = "set_audit_iocb_ptr" then 1055 attach_data.auditor_iocb_ptr = Info_ptr; 1056 1057 else if Order = "get_audit_iocb_ptr" then 1058 Info_ptr = attach_data.auditor_iocb_ptr; 1059 1060 /* Unrecognized at window level, try passing on to tc_. */ 1061 else call iox_$control (target_iocbp, Order, Info_ptr, Code); 1062 1063 return; 1064 1065 update_key_bindings: 1066 proc (a_info_ptr); 1067 1068 dcl a_info_ptr ptr parameter; 1069 1070 line_editor_key_binding_info_ptr = a_info_ptr; 1071 1072 if line_editor_key_binding_info.version = line_editor_key_binding_info_version_3 then do; 1073 1074 /* Verify that all actions are within the allowed values */ 1075 do binding_index = 1 to line_editor_key_binding_info.binding_count; 1076 if length (line_editor_key_binding_info.sequence (binding_index)) = 0 then do; 1077 call error_exit (error_table_$bad_subr_arg); 1078 end; 1079 1080 if (line_editor_key_binding_info.action (binding_index) < EXTERNAL_ROUTINE) 1081 | (line_editor_key_binding_info.action (binding_index) > HIGHEST_BUILTIN_ROUTINE_VALUE) then do; 1082 call error_exit (error_table_$bad_subr_arg); 1083 end; 1084 1085 if (line_editor_key_binding_info.numarg_action (binding_index) < 0 1086 | line_editor_key_binding_info.numarg_action (binding_index) > HIGHEST_NUMARG_ACTION_VALUE) 1087 & ^(line_editor_key_binding_info.action (binding_index) = EXTERNAL_ROUTINE) then do; 1088 call error_exit (error_table_$bad_subr_arg); 1089 end; 1090 1091 end; 1092 1093 /* set individual key bindings from structure */ 1094 do binding_index = 1 to line_editor_key_binding_info.binding_count; 1095 call set_key_binding (line_editor_key_binding_info.sequence (binding_index), 1096 line_editor_key_binding_info.action (binding_index), 1097 line_editor_key_binding_info.numarg_action (binding_index), 1098 line_editor_key_binding_info.editor_routine (binding_index), 1099 line_editor_key_binding_info.name (binding_index), 1100 line_editor_key_binding_info.description (binding_index), 1101 line_editor_key_binding_info.info_path (binding_index)); 1102 end; 1103 end; 1104 1105 else if line_editor_key_binding_info.version = line_editor_key_binding_info_version_2 then do; 1106 dcl 1 v2lekbi aligned based (line_editor_key_binding_info_ptr), 1107 2 version char (8), 1108 2 binding_count fixed bin, 1109 2 longest_sequence fixed bin, 1110 2 bindings (line_editor_binding_count refer (v2lekbi.binding_count)), 1111 3 sequence char (line_editor_longest_sequence refer (v2lekbi.longest_sequence)) varying, 1112 3 action fixed bin, 1113 3 numarg_action fixed binary, 1114 3 editor_routine entry (pointer, fixed bin (35)); 1115 dcl 1 blank_info_path like line_editor_key_binding_info.info_path; 1116 1117 do binding_index = 1 to v2lekbi.binding_count; 1118 if length (v2lekbi.sequence (binding_index)) = 0 then do; 1119 call error_exit (error_table_$bad_subr_arg); 1120 end; 1121 1122 if (v2lekbi.action (binding_index) < EXTERNAL_ROUTINE) 1123 | (v2lekbi.action (binding_index) > HIGHEST_BUILTIN_ROUTINE_VALUE) then do; 1124 call error_exit (error_table_$bad_subr_arg); 1125 end; 1126 1127 if (v2lekbi.numarg_action (binding_index) < 0 1128 | v2lekbi.numarg_action (binding_index) > HIGHEST_NUMARG_ACTION_VALUE) 1129 & ^(v2lekbi.action (binding_index) = EXTERNAL_ROUTINE) then do; 1130 call error_exit (error_table_$bad_subr_arg); 1131 end; 1132 1133 end; 1134 1135 blank_info_path.info_dir, blank_info_path.info_entry = ""; 1136 1137 /* set individual key bindings from structure */ 1138 do binding_index = 1 to v2lekbi.binding_count; 1139 call set_key_binding (v2lekbi.sequence (binding_index), v2lekbi.action (binding_index), 1140 v2lekbi.numarg_action (binding_index), v2lekbi.editor_routine (binding_index), "", "", 1141 blank_info_path); 1142 end; 1143 end; 1144 1145 else call error_exit (error_table_$unimplemented_version); 1146 1147 return; 1148 end update_key_bindings; 1149 1150 set_key_binding: 1151 procedure (sequence, action, numarg_action, editor_routine, name, description, info_path); 1152 1153 dcl sequence char (*) varying; 1154 dcl action fixed bin; 1155 dcl numarg_action fixed bin; 1156 dcl editor_routine entry (ptr, fixed bin (35)); 1157 dcl (name, description) char (*) varying aligned parameter; 1158 dcl 1 info_path like line_editor_key_binding_info.info_path parameter; 1159 1160 dcl char char (1) aligned; 1161 dcl char_fix fixed bin (9); 1162 dcl char_index fixed bin; 1163 dcl old_ptr pointer; 1164 dcl new_ptr pointer; 1165 1166 dcl window_io_iox_$free_dispatch_tables 1167 entry (ptr); 1168 1169 dcl PREFIX fixed bin static options (constant) init (-1); 1170 1171 char = substr (sequence, 1, 1); 1172 1173 /* If we are setting a single self-insert character, make sure that 1174* it can be echo negotiated */ 1175 if (action = SELF_INSERT) & (length (sequence) = 1) & (char >= SPACE) & (char < DEL) then 1176 call set_break_table (char, "0"b); 1177 else call set_break_table (char, "1"b); 1178 1179 old_ptr = attach_data.dispatch_table_ptr; 1180 1181 /* loop through first characters setting up prefix tables. */ 1182 do char_index = 1 to length (sequence) - 1; 1183 char_fix = rank (substr (sequence, char_index, 1)); 1184 1185 /* If char is not already a prefix, allocate new table. */ 1186 if old_ptr -> dispatch_table.key (char_fix).type >= 0 then do; 1187 allocate dispatch_table set (new_ptr); 1188 new_ptr -> dispatch_table.key (*).type = UNDEFINED; 1189 /* chain it in to current table */ 1190 old_ptr -> dispatch_table.key (char_fix).next_table = new_ptr; 1191 old_ptr -> dispatch_table.key (char_fix).type = PREFIX; 1192 end; 1193 old_ptr = old_ptr -> dispatch_table.key (char_fix).next_table; 1194 end; 1195 1196 char_fix = rank (substr (sequence, length (sequence), 1)); 1197 1198 /* If a prefix turns into a leaf, free the old dispatch table */ 1199 if old_ptr -> dispatch_table.key (char_fix).type = PREFIX then 1200 call window_io_iox_$free_dispatch_tables (old_ptr -> dispatch_table.key (char_fix).next_table); 1201 1202 /* Set the specified dispatch table entry. */ 1203 old_ptr -> dispatch_table.key (char_fix).type = action; 1204 1205 if action = EXTERNAL_ROUTINE then do; 1206 old_ptr -> dispatch_table.key (char_fix).routine = editor_routine; 1207 old_ptr -> dispatch_table.key (char_fix).numarg_action = numarg_action; 1208 end; 1209 old_ptr -> dispatch_table.key (char_fix).name = name; 1210 old_ptr -> dispatch_table.key (char_fix).description = description; 1211 old_ptr -> dispatch_table.key (char_fix).info_path = info_path; 1212 1213 return; 1214 1215 get_key_binding: 1216 entry (sequence, action, numarg_action, editor_routine, name, description, info_path); 1217 1218 old_ptr = attach_data.dispatch_table_ptr; 1219 1220 do char_index = 1 to length (sequence) - 1; 1221 char_fix = rank (substr (sequence, char_index, 1)); 1222 1223 /* If char is not a prefix then complain */ 1224 if old_ptr -> dispatch_table.key (char_fix).type >= 0 then 1225 signal bad_prefix; 1226 1227 old_ptr = old_ptr -> dispatch_table.key (char_fix).next_table; 1228 end; 1229 1230 char_fix = rank (substr (sequence, length (sequence), 1)); 1231 action = old_ptr -> dispatch_table.key (char_fix).type; 1232 1233 if action = EXTERNAL_ROUTINE then do; 1234 editor_routine = old_ptr -> dispatch_table.key (char_fix).routine; 1235 numarg_action = old_ptr -> dispatch_table.key (char_fix).numarg_action; 1236 end; 1237 if length (old_ptr -> dispatch_table.key (char_fix).name) = 0 then 1238 name = builtin_routine_names (max (action, lbound (builtin_routine_names, 1))); 1239 else name = old_ptr -> dispatch_table.key (char_fix).name; 1240 if length (old_ptr -> dispatch_table.key (char_fix).description) = 0 then 1241 description = builtin_descriptions (max (action, lbound (builtin_descriptions, 1))); 1242 else description = old_ptr -> dispatch_table.key (char_fix).description; 1243 if old_ptr -> dispatch_table.key (char_fix).info_entry = "" then do; 1244 if action = EXTERNAL_ROUTINE then do; 1245 info_path.info_entry = ""; 1246 info_path.info_dir = ""; 1247 end; 1248 else do; 1249 info_path.info_entry = BUILTIN_INFO_ENTRY; 1250 info_path.info_dir = BUILTIN_INFO_DIR; 1251 end; 1252 end; 1253 else info_path = old_ptr -> dispatch_table.key (char_fix).info_path; 1254 1255 return; 1256 1257 end set_key_binding; 1258 1259 make_key_bindings_copy: 1260 procedure (new_ptr); 1261 1262 dcl new_ptr ptr; /* (output) points to a copy of the dispatch table hierarchy */ 1263 1264 call copy_dispatch_table (attach_data.dispatch_table_ptr, new_ptr); 1265 return; 1266 1267 copy_dispatch_table: 1268 procedure (old_ptr, new_ptr); 1269 1270 dcl (old_ptr, new_ptr) ptr; 1271 1272 dcl key_num fixed bin; 1273 1274 allocate dispatch_table in (attach_data_area) set (new_ptr); 1275 new_ptr -> dispatch_table = old_ptr -> dispatch_table; 1276 do key_num = lbound (old_ptr -> dispatch_table.key, 1) to hbound (old_ptr -> dispatch_table.key, 1); 1277 if old_ptr -> dispatch_table.key (key_num).type < 0 then 1278 call copy_dispatch_table (old_ptr -> dispatch_table.key (key_num).next_table, 1279 new_ptr -> dispatch_table.key (key_num).next_table); 1280 end; 1281 1282 return; 1283 1284 end copy_dispatch_table; 1285 1286 end make_key_bindings_copy; 1287 1288 process_io_call: 1289 procedure (io_call_iocb, io_call_order, io_call_infop, code); 1290 1291 dcl io_call_iocb pointer parameter; 1292 dcl io_call_order char (*) parameter; 1293 dcl code fixed bin (35) parameter; 1294 1 1 /* Begin include file ..... io_call_info.incl.pl1 */ 1 2 1 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 1 4* on behalf of the io_call command. */ 1 5 /* Coded April 1976 by Larry Johnson */ 1 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 1 7 1 8 dcl io_call_infop ptr; 1 9 1 10 dcl 1 io_call_info aligned based (io_call_infop), 1 11 2 version fixed bin, 1 12 2 caller_name char (32), /* Caller name for error messages */ 1 13 2 order_name char (32), /* Actual name of the order to be performed */ 1 14 2 report entry variable options (variable), 1 15 /* Entry to ioa_ like procedure to report results */ 1 16 2 error entry variable options (variable), 1 17 /* Entry to com_err_ like procedure to report results */ 1 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 1 19 2 af_returnl fixed bin, /* Length of string */ 1 20 2 fill (5) bit (36) aligned, 1 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 1 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 1 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 1 24 1 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 1 26 /* Return string for active function */ 1 27 1 28 /* End include file ..... io_call_info.incl.pl1 */ 1295 1296 1297 dcl iocb_ptr pointer; 1298 dcl order char (32); 1299 dcl caller char (32); 1300 dcl called_as_af bit (1); 1301 dcl i fixed bin; 1302 dcl arg_index fixed bin; 1303 dcl entry_name char (65); /* 32 + 1 + 32 */ 1304 1305 dcl 1 MHI aligned like more_handler_info; 1306 dcl 1 MRI aligned like more_responses_info; 1307 dcl 1 MPI aligned like more_prompt_info; 1308 dcl 1 TCI aligned like token_characters_info; 1309 dcl 1 WSI aligned like window_status_info; 1310 dcl 1 EC aligned like editing_chars; 1311 1312 dcl error_table_$wrong_no_of_args 1313 fixed bin (35) external; 1314 dcl error_table_$undefined_order_request 1315 fixed bin (35) external; 1316 dcl error_table_$noarg fixed bin (35) external; 1317 dcl error_table_$bad_arg fixed bin (35) external; 1318 dcl error_table_$badopt fixed bin (35) external; 1319 1320 dcl cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 1321 1322 code = 0; 1323 1324 iocb_ptr = io_call_iocb -> iocb.actual_iocb_ptr; 1325 1326 if io_call_order = "io_call" then 1327 called_as_af = "0"b; 1328 else do; 1329 called_as_af = "1"b; 1330 io_call_af_ret = ""; 1331 end; 1332 1333 order = io_call_info.order_name; 1334 caller = io_call_info.caller_name; 1335 1336 if order = "set_more_handler" then do; 1337 if io_call_info.nargs = 0 then do; 1338 call io_call_info.error (0, "", "usage: io_call control window_switch set_more_handler more_handler"); 1339 return; 1340 end; 1341 if io_call_info.nargs > 1 then do; 1342 call io_call_info 1343 . 1344 error (error_table_$wrong_no_of_args, caller, "Only one more handler name may be specified. ^a", 1345 order); 1346 return; 1347 end; 1348 1349 MHI.version = more_handler_info_version_3; 1350 MHI.more_handler = cv_entry_ ((io_call_info.args (1)), codeptr (process_io_call), code); 1351 if code ^= 0 then do; 1352 call io_call_info 1353 . 1354 error (code, caller, "Could not covert ""^a"" to an entry value. ^a", io_call_info.args (1), 1355 order); 1356 code = 0; 1357 return; 1358 end; 1359 call iox_$control (iocb_ptr, order, addr (MHI), code); 1360 if code ^= 0 then 1361 call io_call_info.error (code, caller, "While setting more handler. ^a", order); 1362 code = 0; 1363 return; 1364 end; 1365 1366 else if order = "get_more_handler" then do; 1367 call io_call_require_no_args (); 1368 MHI.version = more_handler_info_version_3; 1369 call iox_$control (iocb_ptr, order, addr (MHI), code); 1370 if code ^= 0 & code ^= video_et_$no_more_handler_in_use then do; 1371 call io_call_info.error (code, caller, "While getting more handler. ^a", order); 1372 code = 0; 1373 return; 1374 end; 1375 if code = video_et_$no_more_handler_in_use then do; 1376 if called_as_af then 1377 call ioa_$rsnnl ("NONE", io_call_af_ret, (0)); 1378 else call io_call_info.report ("No more handler in use."); 1379 code = 0; 1380 return; 1381 end; 1382 call entry_var_to_string (MHI.more_handler, entry_name, code); 1383 if code ^= 0 then do; 1384 call io_call_info.error (code, caller, "While getting name of more handler. ^a", order); 1385 code = 0; 1386 return; 1387 end; 1388 if called_as_af then 1389 call ioa_$rsnnl ("^a", io_call_af_ret, (0), rtrim (entry_name)); 1390 else call io_call_info.report ("More handler: ^a", rtrim (entry_name)); 1391 return; 1392 end; 1393 1394 else if order = "set_more_responses" then do; 1395 if io_call_info.nargs = 0 then do; 1396 call io_call_info 1397 . 1398 error (0, "", 1399 "usage: io_call control window_switch set_more_responses yes_responses no_responses"); 1400 return; 1401 end; 1402 if io_call_info.nargs < 2 then do; 1403 call io_call_info 1404 . 1405 error (error_table_$wrong_no_of_args, caller, "Both yes and no responses must be specified. ^a", 1406 order); 1407 return; 1408 end; 1409 if io_call_info.nargs > 2 then do; 1410 call io_call_info 1411 . 1412 error (error_table_$wrong_no_of_args, caller, 1413 "Only one yes response string and one no response string may be specified. ^a", order); 1414 return; 1415 end; 1416 MRI.version = more_responses_info_version_1; 1417 MRI.n_yeses = length (io_call_info.args (1)); 1418 MRI.yeses = io_call_info.args (1); 1419 MRI.n_noes = length (io_call_info.args (2)); 1420 MRI.noes = io_call_info.args (2); /* rely on real control order to validate responses */ 1421 call iox_$control (iocb_ptr, order, addr (MRI), code); 1422 if code ^= 0 then 1423 call io_call_info.error (code, caller, "While setting more responses. ^a", order); 1424 code = 0; 1425 return; 1426 end; 1427 1428 else if order = "get_more_responses" then do; 1429 call io_call_require_no_args (); 1430 MRI.version = more_responses_info_version_1; 1431 call iox_$control (iocb_ptr, order, addr (MRI), code); 1432 if code ^= 0 then do; 1433 call io_call_info.error (code, caller, "While getting more repsonses. ^a", order); 1434 code = 0; 1435 return; 1436 end; 1437 if called_as_af then 1438 call ioa_$rsnnl ("^a ^a", io_call_af_ret, (0), substr (MRI.yeses, 1, MRI.n_yeses), 1439 substr (MRI.noes, 1, MRI.n_noes)); 1440 else do; 1441 dcl (yeses, noes) char (255) varying init (""); 1442 do i = 1 to max (MRI.n_yeses, MRI.n_noes); 1443 if i <= MRI.n_yeses then 1444 yeses = yeses || flat_rep (substr (MRI.yeses, i, i + 1)) || " "; 1445 if i <= MRI.n_noes then 1446 noes = noes || flat_rep (substr (MRI.noes, i, i + 1)) || " "; 1447 end; /* do loop */ 1448 call io_call_info 1449 . 1450 report ("Yes Response^[s^]: ""^a"" No Response^[s^]: ""^a""", MRI.n_yeses > 1, yeses, 1451 MRI.n_noes > 1, noes); 1452 end; 1453 return; 1454 end; 1455 1456 else if order = "set_more_prompt" then do; 1457 if io_call_info.nargs = 0 then do; 1458 call io_call_info.error (0, "", "usage: io_call control window_switch set_more_prompt prompt_string"); 1459 return; 1460 end; 1461 if io_call_info.nargs > 1 then do; 1462 call io_call_info 1463 . 1464 error (error_table_$wrong_no_of_args, caller, "Only one more prompt string may be specified. ^a", 1465 order); 1466 return; 1467 end; 1468 MPI.version = more_prompt_info_version_1; 1469 MPI.more_prompt = io_call_info.args (1); 1470 call iox_$control (iocb_ptr, order, addr (MPI), code); 1471 if code ^= 0 then 1472 call io_call_info.error (code, caller, "While setting more prompt. ^a", order); 1473 code = 0; 1474 return; 1475 end; 1476 1477 else if order = "get_more_prompt" then do; 1478 call io_call_require_no_args (); 1479 MPI.version = more_prompt_info_version_1; 1480 call iox_$control (iocb_ptr, order, addr (MPI), code); 1481 if code ^= 0 then do; 1482 call io_call_info.error (code, caller, "While getting more prompt. ^a", order); 1483 code = 0; 1484 return; 1485 end; 1486 if called_as_af then 1487 call ioa_$rsnnl ("^a", io_call_af_ret, (0), MPI.more_prompt); 1488 else call io_call_info.report ("More prompt: ""^a""", MPI.more_prompt); 1489 return; 1490 end; 1491 1492 1493 else if order = "set_editor_key_bindings" then do; 1494 if io_call_info.nargs = 0 then do; 1495 binding_usage: 1496 call io_call_info 1497 . 1498 error (0, "", 1499 "usage: io_call control window_switch set_editor_key_bindings character_sequence1 {editor_routine1} {control_args_1} ... {character_sequenceN {editor_routineN} {control_argsN}}" 1500 ); 1501 return; 1502 end; 1503 1504 /* Prepare to build args structure. */ 1505 /* Pass one, count number bindings and get max length, 1506* don't validate args at all */ 1507 1508 line_editor_binding_count = 0; 1509 line_editor_longest_sequence = 0; 1510 1511 call count_key_binding_args (1 /* arg_index */, line_editor_binding_count, line_editor_longest_sequence); 1512 1513 if line_editor_binding_count = 0 | line_editor_longest_sequence = 0 then 1514 goto binding_usage; /* must not know what's going on */ 1515 1516 allocate line_editor_key_binding_info set (line_editor_key_binding_info_ptr); 1517 on cleanup free line_editor_key_binding_info; 1518 1519 line_editor_key_binding_info.version = line_editor_key_binding_info_version_3; 1520 1521 /* Fill in the individual bindings. */ 1522 /* now check the control arg validity */ 1523 1524 call process_key_bindings (1 /* arg_index */, 1 /* binding_index */); 1525 1526 call iox_$control (iocb_ptr, order, line_editor_key_binding_info_ptr, code); 1527 revert cleanup; 1528 free line_editor_key_binding_info; 1529 if code ^= 0 then 1530 call io_call_info.error (code, caller, "While setting key bindings. ^a", order); 1531 code = 0; 1532 return; 1533 end; 1534 1535 else if order = "get_editor_key_bindings" then do; 1536 if io_call_info.nargs ^= 1 then do; 1537 call io_call_info 1538 . 1539 error (0, "", "usage: io_call control window_switch get_editor_key_bindings character_sequence"); 1540 call error_exit (Code); 1541 end; 1542 begin; 1543 dcl 1 gekbi aligned like get_editor_key_bindings_info; 1544 dcl 1 lekbi aligned like line_editor_key_binding_info based (gekbi.key_binding_info_ptr); 1545 1546 gekbi.version = get_editor_key_bindings_info_version_1; 1547 string (gekbi.flags) = ""b; 1548 gekbi.key_binding_info_ptr = null (); 1549 line_editor_binding_count = 1; 1550 line_editor_longest_sequence = length (io_call_info.args (1)); 1551 on cleanup 1552 begin; 1553 if gekbi.key_binding_info_ptr = null () then 1554 free line_editor_key_binding_info in (attach_data_area); 1555 end; 1556 allocate lekbi in (attach_data_area); 1557 1558 lekbi.version = line_editor_key_binding_info_version_3; 1559 lekbi.sequence (1) = io_call_info.args (1); 1560 1561 call iox_$control (iocb_ptr, order, addr (gekbi), code); 1562 if code ^= 0 then do; 1563 call io_call_info 1564 . 1565 error (code, caller, "Getting the binding of ^a. ^a", 1566 requote_string_ ((io_call_info.args (1))), order); 1567 return; 1568 end; 1569 1570 dcl routine_pathname char (256); 1571 if lekbi.action (1) = EXTERNAL_ROUTINE then do; 1572 call entry_var_to_string (lekbi.editor_routine (1), routine_pathname, code); 1573 if code ^= 0 then 1574 return; 1575 end; 1576 1577 /* Note, numarg actions for builtins are only defined in window_io_iox_, 1578* so we don't return them here. There should be a way to get at them. */ 1579 1580 if called_as_af then do; /* it is easier to get right this way, rather than to have one really hairy ioa_$rsnnl ... */ 1581 if lekbi.action (1) = EXTERNAL_ROUTINE then 1582 call ioa_$rsnnl ("^a ^a -numarg_action ^a -name ^a -description ^a ^[-info_pathname ^a]", 1583 io_call_af_ret, (0), requote_string_ ((lekbi.sequence (1))), 1584 requote_string_ (rtrim (routine_pathname)), 1585 numarg_action_names (lekbi.numarg_action (1)), 1586 requote_string_ (rtrim (lekbi.name (1))), 1587 requote_string_ (rtrim (lekbi.description (1))), 1588 (lekbi.info_entry (1) ^= "") /* empty path? */, 1589 requote_string_ (rtrim (pathname_ (lekbi.info_dir (1), lekbi.info_entry (1))))); 1590 else if lekbi.action (1) > EXTERNAL_ROUTINE then 1591 /* a builtin */ 1592 call ioa_$rsnnl ("^a -builtin ^a -description ^a^[ -info_pathname ^a^]", io_call_af_ret, 1593 (0), lekbi.sequence (1), builtin_routine_names (lekbi.action (1)), 1594 requote_string_ (rtrim (lekbi.description (1))), 1595 (lekbi.info_entry (1) ^= "") /* empty path? */, 1596 requote_string_ (rtrim (pathname_ (lekbi.info_dir (1), lekbi.info_entry (1))))); 1597 else /* a prefix key, for sure */ 1598 call ioa_$rsnnl ("^a -name PREFIX -description ^a", io_call_af_ret, (0), 1599 requote_string_ ((lekbi.sequence (1))), 1600 requote_string_ (rtrim (lekbi.description (1)))); 1601 end; /* case for AF */ 1602 1603 else call io_call_info 1604 . 1605 report ( 1606 "Sequence: ^a^/ ^[Num-arg action: ^a^/ Procedure: ^a^/ ^;^2s^]Name: ^a^/ Description: ^a^[^/ Info path: ^a^]", 1607 flat_rep_string (lekbi.sequence (1)), (lekbi.action (1) = EXTERNAL_ROUTINE), 1608 numarg_action_names (lekbi.numarg_action (1)), routine_pathname, lekbi.name (1), 1609 lekbi.description (1), (lekbi.info_entry (1) ^= "") /* no path supplied */, 1610 pathname_ (lekbi.info_dir (1), lekbi.info_entry (1))); 1611 1612 revert cleanup; 1613 free lekbi in (attach_data_area); 1614 end; 1615 code = 0; 1616 return; 1617 end; 1618 1619 else if order = "set_token_characters" then do; 1620 if io_call_info.nargs = 0 then do; 1621 call io_call_info 1622 . 1623 error (0, "", "usage: io_call control window_switch set_token_characters token_character_string") 1624 ; 1625 return; 1626 end; 1627 if io_call_info.nargs > 1 then do; 1628 call io_call_info 1629 . 1630 error (error_table_$wrong_no_of_args, caller, 1631 "Only one string of token characters may be specified. ^a", order); 1632 return; 1633 end; 1634 1635 TCI.version = token_characters_info_version_1; 1636 TCI.token_character_count = length (io_call_info.args (1)); 1637 TCI.token_characters = io_call_info.args (1); 1638 1639 call iox_$control (iocb_ptr, order, addr (TCI), code); 1640 if code ^= 0 then 1641 call io_call_info.error (code, caller, "While setting token characters. ^a", order); 1642 code = 0; 1643 return; 1644 end; 1645 1646 else if order = "get_token_characters" then do; 1647 call io_call_require_no_args (); 1648 TCI.version = token_characters_info_version_1; 1649 call iox_$control (iocb_ptr, order, addr (TCI), code); 1650 if code ^= 0 then do; 1651 call io_call_info.error (code, caller, "While getting token characters. ^a", order); 1652 code = 0; 1653 return; 1654 end; 1655 if called_as_af then 1656 io_call_af_ret = substr (TCI.token_characters, 1, TCI.token_character_count); 1657 else call io_call_info.report ("^a", substr (TCI.token_characters, 1, TCI.token_character_count)); 1658 return; 1659 end; 1660 1661 else if order = "get_window_status" then do; 1662 call io_call_require_no_args (); 1663 WSI.version = window_status_version_1; 1664 call iox_$control (iocb_ptr, order, addr (WSI), code); 1665 if code ^= 0 then do; 1666 call io_call_info.error (code, caller, "While getting window status. ^a", order); 1667 code = 0; 1668 return; 1669 end; 1670 if called_as_af then do; 1671 if (WSI.status_string = ""b) then 1672 io_call_af_ret = "NONE"; 1673 else call ioa_$rsnnl ("^[SCREEN_INVALID ^]^[ASYNC_CHANGE ^]^[TTP_CHANGE ^]^[RECONNECTION^]", 1674 io_call_af_ret, (0), (WSI.status_string & W_STATUS_SCREEN_INVALID), 1675 (WSI.status_string & W_STATUS_ASYNC_EVENT), (WSI.status_string & W_STATUS_TTP_CHANGE), 1676 (WSI.status_string & W_STATUS_RECONNECTION)); 1677 end; 1678 else call io_call_info 1679 . 1680 report ( 1681 "There was ^[no ^]^[screen_invalid ^]^[async_change ^]^[ttp_change ^]^[reconnection ^]status pending for the window.", 1682 (WSI.status_string = ""b), (WSI.status_string & W_STATUS_SCREEN_INVALID), 1683 (WSI.status_string & W_STATUS_ASYNC_EVENT), (WSI.status_string & W_STATUS_TTP_CHANGE), 1684 (WSI.status_string & W_STATUS_RECONNECTION)); 1685 return; 1686 end; 1687 1688 else if order = "set_window_status" then do; 1689 if io_call_info.nargs = 0 then do; 1690 call io_call_info 1691 .error (0, "", "usage: io control window_switch set_window_status status_key_1 {status_key_2}"); 1692 return; 1693 end; 1694 WSI.version = window_status_version_1; 1695 do arg_index = 1 to io_call_info.nargs; 1696 if io_call_info.args (arg_index) = "screen_invalid" then 1697 WSI.status_string = WSI.status_string | W_STATUS_SCREEN_INVALID; 1698 else if io_call_info.args (arg_index) = "asynchronous_change" 1699 | io_call_info.args (arg_index) = "async_change" then 1700 WSI.status_string = WSI.status_string | W_STATUS_ASYNC_EVENT; 1701 else if io_call_info.args (arg_index) = "terminal_type_change" 1702 | io_call_info.args (arg_index) = "ttp_change" then 1703 WSI.status_string = WSI.status_string | W_STATUS_TTP_CHANGE; 1704 else if io_call_info.args (arg_index) = "reconnection" then 1705 WSI.status_string = WSI.status_string | W_STATUS_RECONNECTION; 1706 else do; 1707 call io_call_info 1708 . 1709 error (error_table_$bad_arg, caller, 1710 "Only screen_invalid or asynchronous_change is allowed, not ""^a."" ^a", 1711 io_call_info.args (arg_index), order); 1712 return; 1713 end; 1714 end; /* do loop */ 1715 call iox_$control (iocb_ptr, order, addr (WSI), code); 1716 return; 1717 end; 1718 1719 /* this is a bit much for a pretty worthless control order (after all 1720* there is stty -edit), but if we're going to do it, let's do it right */ 1721 1722 else if order = "set_editing_chars" then do; 1723 if io_call_info.nargs = 0 then do; 1724 call io_call_info 1725 .error (0, "", "usage: io_call control window_switch set_editing_chars erase_kill_characters"); 1726 return; 1727 end; 1728 if io_call_info.nargs > 1 then do; 1729 call io_call_info 1730 . 1731 error (error_table_$wrong_no_of_args, caller, 1732 "Only one set of editing characters may be specified. ^a", order); 1733 return; 1734 end; 1735 if length (io_call_info.args (1)) < 2 then do; 1736 call io_call_info 1737 . 1738 error (error_table_$bad_arg, caller, "Both erase and kill characters must be specified. ^a", 1739 order); 1740 return; 1741 end; 1742 if length (io_call_info.args (1)) > 3 then do; 1743 call io_call_info 1744 . 1745 error (error_table_$bad_arg, caller, 1746 "Only one erase character, one kill character and one redisplay character may be specified. ^a", 1747 order); 1748 return; 1749 end; 1750 EC.erase = substr (io_call_info.args (1), 1, 1); 1751 EC.kill = substr (io_call_info.args (1), 2, 1); 1752 if length (io_call_info.args (1)) = 3 then do; 1753 EC.version = editing_chars_version_3; 1754 EC.redisplay = substr (io_call_info.args (1), 3, 1); 1755 end; 1756 else do; 1757 EC.version = editing_chars_version_2; 1758 EC.redisplay = ""; 1759 end; 1760 1761 call iox_$control (iocb_ptr, order, addr (EC), code); 1762 if code ^= 0 then 1763 call io_call_info.error (code, caller, "While setting editing characters. ^a", order); 1764 return; 1765 end; 1766 1767 else if order = "get_editing_chars" then do; 1768 call io_call_require_no_args (); 1769 EC.version = editing_chars_version_3; 1770 call iox_$control (iocb_ptr, order, addr (EC), code); 1771 if code ^= 0 then 1772 return; 1773 if called_as_af then 1774 call ioa_$rsnnl ("^a^a^a", io_call_af_ret, (0), EC.erase, EC.kill, EC.redisplay); 1775 else call io_call_info 1776 . 1777 report ("Erase: ^a, Kill: ^a, Redisplay: ^a", flat_rep (EC.erase), flat_rep (EC.kill), 1778 flat_rep (EC.redisplay)); 1779 return; 1780 end; 1781 1782 code = error_table_$undefined_order_request; 1783 return; 1784 1785 io_call_require_no_args: 1786 procedure; 1787 1788 if io_call_info.nargs ^= 0 then do; 1789 call io_call_info 1790 . 1791 error (error_table_$wrong_no_of_args, caller, "No arguments are allowed for the ^a order.", 1792 order); 1793 call error_exit (Code); 1794 end; 1795 end io_call_require_no_args; 1796 1797 /* Count the number of args (and longest key sequence) for 1798* set_editor_key_bindings, so we can allocate the 1799* line_editor_key_binding_structure (refer extents). 1800* The only validity checking done here is to ensure that a reasonable 1801* number of arguments were given (i.e. we catch "\033 foo \034", here 1802* and complain about now editor routine for \034), but all other 1803* checking is done later. */ 1804 1805 /* We get called once for each key binding to be set, thus we know that 1806* arg_index will always start pointing at the key sequence */ 1807 1808 count_key_binding_args: 1809 procedure (arg_index, binding_count, longest_key_sequence); 1810 1811 dcl arg_index fixed bin, 1812 binding_count fixed bin, 1813 longest_key_sequence fixed bin; 1814 1815 dcl ctl_arg_flag bit (1); 1816 1817 do while (arg_index <= io_call_info.nargs); 1818 1819 if arg_index = io_call_info.nargs then do; 1820 if index (io_call_info.args (arg_index), "-") = 1 then 1821 return; 1822 call io_call_info 1823 . 1824 error (error_table_$noarg, caller, 1825 "Editor routine for character sequence ""^a"" must be specified.", 1826 io_call_info.args (arg_index)); 1827 call error_exit (Code); 1828 end; 1829 1830 longest_key_sequence = max (length (io_call_info.args (arg_index)), longest_key_sequence); 1831 binding_count = binding_count + 1; 1832 1833 arg_index = arg_index + 1; 1834 1835 if index (io_call_info.args (arg_index), "-") ^= 1 then 1836 arg_index = arg_index + 1; /* skip over external routine name */ 1837 1838 /* skip over any control args (-control_arg arg), -control_arg -control_arg 1839* will squeak by here but will be caught later */ 1840 1841 if arg_index <= io_call_info.nargs then 1842 if index (io_call_info.args (arg_index), "-") = 1 then do; 1843 ctl_arg_flag = "1"b; 1844 do while (ctl_arg_flag); 1845 arg_index = arg_index + 2; 1846 if arg_index < io_call_info.nargs then 1847 ctl_arg_flag = (index (io_call_info.args (arg_index), "-") = 1); 1848 else ctl_arg_flag = "0"b; 1849 end; /* do while */ 1850 end; 1851 1852 end; /* main do while loop */ 1853 1854 return; 1855 1856 end count_key_binding_args; 1857 1858 /* fill in line_editor_key_binding_info */ 1859 1860 process_key_bindings: 1861 procedure (arg_index, binding_index); 1862 1863 dcl arg_index fixed bin; 1864 dcl binding_index fixed bin; 1865 1866 dcl 1 flags aligned, 1867 2 builtin_given unaligned bit (1), 1868 2 external_given unaligned bit (1), 1869 2 numarg_action_given 1870 unaligned bit (1); 1871 1872 do while (arg_index <= io_call_info.nargs); 1873 1874 unspec (flags) = ""b; 1875 1876 /* copy the sequence directly from the command line */ 1877 line_editor_key_binding_info.sequence (binding_index) = io_call_info.args (arg_index); 1878 1879 /*** Initialize the strings to blanks ***/ 1880 line_editor_key_binding_info.name, line_editor_key_binding_info.description, 1881 line_editor_key_binding_info.info_dir, line_editor_key_binding_info.info_entry = ""; 1882 1883 arg_index = arg_index + 1; 1884 1885 if index (io_call_info.args (arg_index), "-") ^= 1 then do; 1886 line_editor_key_binding_info.action (binding_index) = EXTERNAL_ROUTINE; 1887 /* convert the companion arg to an entry */ 1888 line_editor_key_binding_info.editor_routine (binding_index) = 1889 cv_entry_ ((io_call_info.args (arg_index)), codeptr (process_io_call), code); 1890 if code ^= 0 then do; 1891 call io_call_info 1892 . 1893 error (code, caller, "Could not convert ""^a"" to an entry value. ^a", 1894 io_call_info.args (arg_index), order); 1895 code = 0; 1896 call error_exit (Code); 1897 end; 1898 external_given = "1"b; 1899 builtin_given = "0"b; 1900 arg_index = arg_index + 1; /* fall through to check for control args for this external editor request */ 1901 end; 1902 1903 if arg_index <= io_call_info.nargs then 1904 if index (io_call_info.args (arg_index), "-") = 1 then 1905 /* a control arg */ 1906 call process_control_args (arg_index, binding_index); 1907 1908 if ^(builtin_given | external_given) then do; 1909 call io_call_info 1910 . 1911 error (error_table_$noarg, caller, 1912 "Editor routine for character sequence ""^a"" must be specified. ^a", 1913 line_editor_key_binding_info.sequence (binding_index), order); 1914 call error_exit (Code); 1915 end; 1916 1917 if builtin_given & numarg_action_given then do; 1918 call io_call_info 1919 . 1920 error (error_table_$inconsistent, caller, 1921 "Numarg action may not be specified for builtin routines. ^a", order); 1922 call error_exit (Code); 1923 end; 1924 1925 if ^numarg_action_given & external_given then 1926 line_editor_key_binding_info.numarg_action (binding_index) = PASS; 1927 1928 binding_index = binding_index + 1; 1929 1930 end; /* do while */ 1931 1932 return; 1933 1934 /* Process control args for set_editor_key_bindings. 1935* arg_index will be left set to the next non-control arg */ 1936 1937 process_control_args: 1938 procedure (arg_index, binding_index); 1939 1940 dcl arg_index fixed bin; 1941 dcl binding_index fixed bin; 1942 dcl builtin_index fixed bin; 1943 dcl numarg_index fixed bin; 1944 dcl arg char (arg_len) varying based (arg_ptr); 1945 dcl next_arg char (next_arg_len) varying based (next_arg_ptr); 1946 dcl (arg_len, next_arg_len) 1947 fixed bin (21); 1948 dcl (arg_ptr, next_arg_ptr) 1949 ptr; 1950 dcl found bit (1); 1951 1952 dcl uppercase char (26) static options (constant) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 1953 dcl lowercase char (26) static options (constant) init ("abcdefghijklmnopqrstuvwxyz"); 1954 dcl expand_pathname_$add_suffix 1955 entry (char (*), char (*), char (*), char (*), fixed bin (35)); 1956 1957 do while (arg_index <= io_call_info.nargs); 1958 1959 arg_ptr = addr (io_call_info.args (arg_index)); 1960 arg_len = length (io_call_info.args (arg_index)); 1961 1962 if index (arg, "-") ^= 1 then 1963 return; /* done with control args for this key binding */ 1964 1965 if ^(arg = "-builtin" | arg = "-external" | arg = "-numarg_action" | arg = "-name" 1966 | arg = "-description" | arg = "-info_pathname") then do; 1967 call io_call_info.error (error_table_$badopt, caller, "^a. ^a", arg, order); 1968 call error_exit (Code); 1969 end; 1970 1971 if arg_index = io_call_info.nargs then do; 1972 call io_call_info 1973 .error (error_table_$noarg, caller, """^a"" requires an argument. ^a", arg, order); 1974 call error_exit (Code); 1975 end; 1976 1977 next_arg_ptr = addr (io_call_info.args (arg_index + 1)); 1978 next_arg_len = length (io_call_info.args (arg_index + 1)); 1979 1980 if arg = "-external" then do; 1981 line_editor_key_binding_info.action (binding_index) = EXTERNAL_ROUTINE; 1982 /* convert the companion arg to an entry */ 1983 line_editor_key_binding_info.editor_routine (binding_index) = 1984 cv_entry_ ((next_arg), codeptr (process_io_call), code); 1985 if code ^= 0 then do; 1986 call io_call_info 1987 . 1988 error (code, caller, "Could not convert ""^a"" to an entry value. ^a", next_arg, 1989 order); 1990 code = 0; 1991 call error_exit (Code); 1992 end; 1993 external_given = "1"b; 1994 builtin_given = "0"b; 1995 end; 1996 1997 /* We assume that builtin names are all uppercase, and we uppercase the user 1998* supplied name before doing the comparision, so that everything is 1999* case insensitive. Same goes for numarg_action. */ 2000 2001 if arg = "-builtin" then do; /* skip EXTERNAL_ROUTINE */ 2002 begin; 2003 dcl next_arg_uppercase char (next_arg_len); 2004 found = "0"b; 2005 next_arg_uppercase = translate (next_arg, uppercase, lowercase); 2006 do builtin_index = 1 to HIGHEST_BUILTIN_ROUTINE_VALUE while (^found); 2007 if builtin_routine_names (builtin_index) = next_arg_uppercase then 2008 found = "1"b; 2009 end; /* do while */ 2010 end; /* begin */ 2011 if ^found then do; 2012 call io_call_info 2013 . 2014 error (error_table_$bad_arg, caller, 2015 """^a"" is not a builtin editor function. ^a", next_arg, order); 2016 call error_exit (Code); 2017 end; 2018 line_editor_key_binding_info.action (binding_index) = builtin_index - 1; 2019 /* do loop adds one */ 2020 builtin_given = "1"b; 2021 external_given = "0"b; 2022 end; 2023 2024 else if arg = "-numarg_action" then do; 2025 begin; 2026 dcl next_arg_uppercase char (next_arg_len); 2027 found = "0"b; 2028 next_arg_uppercase = translate (next_arg, uppercase, lowercase); 2029 do numarg_index = 0 to HIGHEST_NUMARG_ACTION_VALUE while (^found); 2030 if numarg_action_names (numarg_index) = next_arg_uppercase then 2031 found = "1"b; 2032 end; /* do while */ 2033 end; /* begin */ 2034 if ^found then do; 2035 call io_call_info 2036 . 2037 error (error_table_$bad_arg, caller, """^a"" is not a valid numarg action. ^a", 2038 next_arg, order); 2039 call error_exit (Code); 2040 end; 2041 line_editor_key_binding_info.numarg_action (binding_index) = numarg_index - 1; 2042 /* do loop adds one */ 2043 numarg_action_given = "1"b; 2044 end; 2045 2046 else if arg = "-name" then 2047 line_editor_key_binding_info.name (binding_index) = next_arg; 2048 else if arg = "-description" then 2049 line_editor_key_binding_info.description (binding_index) = next_arg; 2050 else if arg = "-info_pathname" then do; 2051 call expand_pathname_$add_suffix ((next_arg), "info", 2052 line_editor_key_binding_info.info_dir (binding_index), 2053 line_editor_key_binding_info.info_entry (binding_index), code); 2054 if code ^= 0 then do; 2055 call io_call_info.error (code, caller, "The pathname ""^a"". ^a", next_arg, order); 2056 call error_exit (Code); 2057 end; 2058 end; 2059 2060 arg_index = arg_index + 2; /* make sure we call by reference */ 2061 2062 2063 end; /* do while */ 2064 2065 return; 2066 2067 end process_control_args; 2068 2069 end process_key_bindings; 2070 2071 end process_io_call; 2072 2073 require_version: 2074 proc (version_found, latest); 2075 2076 dcl version_found fixed bin parameter; 2077 dcl latest fixed bin parameter; 2078 2079 if version_found ^= latest & version_found ^= editing_chars_version_2 then do; 2080 call error_exit (error_table_$unimplemented_version); 2081 end; 2082 2083 end require_version; 2084 2085 require_version_str: 2086 proc (version_found, latest); 2087 2088 dcl version_found char (8) aligned; 2089 dcl latest char (8); 2090 2091 if version_found ^= latest then do; 2092 call error_exit (error_table_$unimplemented_version); 2093 end; 2094 2095 end require_version_str; 2096 2097 check_null: 2098 procedure; 2099 if Info_ptr = null () then do; 2100 call error_exit (error_table_$null_info_ptr); 2101 end; 2102 end check_null; 2103 2104 require_mbz: 2105 proc (bit_string); 2106 2107 dcl bit_string bit (*); 2108 2109 if bit_string ^= ""b then do; 2110 call error_exit (error_table_$bad_subr_arg); 2111 end; 2112 end require_mbz; 2113 2114 setup: 2115 procedure; 2116 attach_data_ptr = Iocb_ptr -> iocb.actual_iocb_ptr -> iocb.attach_data_ptr; 2117 Code = 0; 2118 target_iocbp = attach_data.target_iocb_ptr; 2119 end setup; 2120 2121 always_breaks: 2122 procedure (c) returns (bit (1) aligned) reducible; 2123 dcl c char (1) aligned parameter; 2124 return (rank (c) <= 31 | c = byte (bin ("177"b3)) /* DEL */); 2125 end always_breaks; 2126 2127 set_break_table: 2128 proc (c, flag); 2129 2130 dcl c char (1) aligned; 2131 dcl flag bit (1) unaligned; 2132 2133 if (rank (c) >= lbound (line_editor_breaks_array, 1)) & (rank (c) <= hbound (line_editor_breaks_array, 1)) then 2134 line_editor_breaks_array (rank (c)) = always_breaks (c) | flag; 2135 2136 end set_break_table; 2137 2138 /* Stolen from window_io_iox_ for get_more_responses, get_editing_chars, 2139* and now get_editor_keybindings */ 2140 2141 flat_rep: 2142 procedure (c) returns (char (32) varying) reducible; 2143 2144 dcl c character (1); 2145 2146 if c = byte (bin ("015"b3)) then 2147 return ("RETURN"); 2148 if c = byte (bin ("033"b3)) then 2149 return ("ESC"); 2150 if c < " " then 2151 return ("^" || byte (rank (c) + rank ("@"))); 2152 if c = " " then 2153 return ("SPACE"); 2154 if c = byte (bin ("177"b3)) then 2155 return ("DEL"); 2156 return (c); 2157 2158 end flat_rep; 2159 2160 flat_rep_string: 2161 proc (P_string) returns (char (*)) reducible; 2162 2163 dcl P_string char (*) varying; 2164 2165 dcl char_idx fixed bin (21); 2166 2167 if length (P_string) = 0 then 2168 return (""); /* prevent stringrange below */ 2169 2170 begin; 2171 dcl flat_string char (7 * length (P_string)) varying init (""); 2172 2173 do char_idx = 1 to length (P_string) - 1; 2174 flat_string = flat_string || flat_rep (substr (P_string, char_idx, 1)) || " "; 2175 end; 2176 flat_string = flat_string || flat_rep (substr (P_string, length (P_string), 1)); 2177 return ((flat_string)); 2178 end; 2179 2180 end flat_rep_string; 2181 2182 /* This is for get_more_handler and for get_editor_key_bindings. 2183* It takes an entry variable and turns it into a segname$entry string, 2184* leaving out the full pathname. JR 8/7/83 */ 2185 2186 entry_var_to_string: 2187 procedure (routine, entry_string, code); 2188 2189 dcl routine entry; 2190 dcl entry_string char (*); 2191 dcl code fixed bin (35); 2192 2193 dcl seg_name char (32); /* only the entryname, not the directory */ 2194 dcl entry_point_name char (32); /* entry point within the segment */ 2195 2196 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 2197 dcl get_entry_name_ entry (ptr, char (*), fixed bin (18), char (8) aligned, fixed bin (35)); 2198 2199 dcl 1 entry_variable aligned based, 2200 2 code_ptr ptr, 2201 2 env_ptr ptr; 2202 2203 call hcs_$fs_get_path_name (addr (routine) -> entry_variable.code_ptr, "", (0), seg_name, code); 2204 if code ^= 0 then 2205 return; 2206 2207 call get_entry_name_ (addr (routine) -> entry_variable.code_ptr, entry_point_name, (0), "", code); 2208 if code ^= 0 then 2209 return; 2210 2211 entry_string = rtrim (seg_name) || "$" || rtrim (entry_point_name); 2212 2213 return; 2214 2215 end entry_var_to_string; 2216 2217 /* This really doesn't belong here. It causes this module to have the 2218* knowledge of how to call tc_. It fit much better in window_io_video_. 2219* It also really doesn't work well from tc_ either, otherwise I would 2220* just pass the order through and deal with it there. Perhaps the 2221* read_status proc in tc_input should be an entry, and we (or tc_) could 2222* just call it. But for now ... -- JR 2/1/84 */ 2223 2224 read_status: 2225 proc (); 2226 2 1 /* BEGIN INCLUDE FILE tc_operations_.incl.pl1 BIM May 1981 */ 2 2 2 3 /* Modified 7 February 1985 by Jon Rochlis to add saved_ips_mask to 2 4* request_header. */ 2 5 2 6 /* format: style3 */ 2 7 2 8 /* These are the operations that the "virtual video terminal" is expected to 2 9*provide. These are the primitive operation. For example, the various 2 10*flavors of region clearing are collapsed into "clear region". The particular 2 11*operations of clear screen, clear to end of screen, and clear to end of line 2 12*are special cases which will be used when terminal functionality permits. Of 2 13*course, at the user interface level, these are provided as convienience. 2 14*This introduces the innefficiency of mapping CLEOL -> CL-REGION -> CLEOL. 2 15*However, CLEOL _i_n _a _w_i_n_d_o_w does not always mean CLEOL on the screen. It will 2 16*not unless the window is full width, or happens to be rightmost. Similiarly, 2 17*a user call of CLEAR_WINDOW is just a region to the terminal. */ 2 18 2 19 declare request_ptr pointer; 2 20 declare REQUEST_SENTINEL character (4) aligned init ("RqqS") internal static options (constant); 2 21 2 22 declare 1 request_header aligned based (request_ptr), 2 23 2 sentinel character (4) aligned, 2 24 2 request_id fixed bin (71), /* Clock Value */ 2 25 2 window_id bit (36) aligned, 2 26 2 coords aligned like r_coords, 2 27 2 operation fixed bin, 2 28 2 flags aligned, 2 29 3 async_interruption 2 30 bit (1) unaligned, /* Output */ 2 31 3 this_window bit (1) unaligned, /* ditto */ 2 32 2 saved_ips_mask bit (36) aligned; /* so tc_block can restore mask from window_io_ */ 2 33 2 34 declare 1 r_coords aligned based, 2 35 2 row fixed bin, 2 36 2 col fixed bin; 2 37 2 38 declare OP_ERROR fixed bin initial (0) internal static options (constant); 2 39 declare OP_POSITION_CURSOR fixed bin initial (1) internal static options (constant); 2 40 2 41 declare OP_CLEAR_REGION fixed bin initial (2) internal static options (constant); 2 42 2 43 /* This next one is for the TC operation of clearing terminal without 2 44* any assumptions, used when the user indicates screen damage, or on 2 45* reconnection. */ 2 46 2 47 declare OP_CLEAR_SCREEN_NO_OPT 2 48 fixed bin init (4) internal static options (constant); 2 49 2 50 declare 1 request_clear_region 2 51 aligned based (request_ptr), 2 52 2 header aligned like request_header, 2 53 2 by_name aligned, 2 54 3 extent aligned, 2 55 4 rows fixed bin, 2 56 4 columns fixed bin; 2 57 2 58 declare OP_INSERT_TEXT fixed bin initial (3) internal static options (constant); 2 59 2 60 declare 1 request_text aligned based (request_ptr), 2 61 2 header aligned like request_header, 2 62 2 by_name aligned, 2 63 3 text_ptr pointer, 2 64 3 text_length fixed bin (21); 2 65 2 66 declare request_text_string character (request_text.text_length) based (request_text.text_ptr); 2 67 2 68 declare OP_DELETE_CHARS fixed bin initial (6) internal static options (constant); 2 69 2 70 declare 1 request_delete_chars 2 71 aligned based (request_ptr), 2 72 2 header aligned like request_header, 2 73 2 by_name aligned, 2 74 3 count fixed bin; 2 75 2 76 declare OP_SCROLL_REGION fixed bin initial (7) internal static options (constant); 2 77 2 78 declare 1 request_scroll_region 2 79 aligned based (request_ptr), 2 80 2 header aligned like request_header, 2 81 2 by_name aligned, 2 82 3 start_line fixed bin, 2 83 3 n_lines fixed bin, 2 84 3 distance fixed bin; 2 85 2 86 declare OP_BELL fixed bin initial (8) internal static options (constant); 2 87 declare OP_GET_CHARS_ECHO fixed bin initial (9) internal static options (constant); 2 88 declare OP_GET_CHARS_NO_ECHO 2 89 fixed bin initial (10) internal static options (constant); 2 90 declare OP_WRITE_SYNC_GET_CHARS_NO_ECHO 2 91 fixed bin initial (11) internal static options (constant); 2 92 2 93 declare 1 request_read_status 2 94 aligned based (request_ptr), 2 95 2 header aligned like request_header, 2 96 2 by_name aligned, /* not used as such */ 2 97 3 returned_length 2 98 fixed bin, 2 99 3 event_channel fixed bin (71); 2 100 2 101 declare 1 request_read aligned based (request_ptr), 2 102 2 header aligned like request_header, 2 103 2 by_name aligned, 2 104 3 buffer_ptr pointer, 2 105 3 buffer_length fixed bin (21), 2 106 3 returned_length 2 107 fixed bin (21), 2 108 3 returned_break_flag 2 109 bit (1) aligned, 2 110 3 prompt_ptr pointer, 2 111 3 prompt_length fixed bin (21), 2 112 3 breaks bit (128) unaligned; 2 113 2 114 2 115 declare request_prompt character (request_read.prompt_length) based (request_read.prompt_ptr); 2 116 declare request_buffer character (request_read.buffer_length) based (request_read.buffer_ptr); 2 117 2 118 declare OP_GET_CURSOR_POSITION 2 119 fixed bin initial (12) internal static options (constant); 2 120 declare OP_READ_STATUS fixed bin initial (13) internal static options (constant); 2 121 declare OP_OVERWRITE_TEXT fixed bin initial (14) internal static options (constant); 2 122 declare OP_WRITE_RAW fixed bin initial (15) internal static options (constant); 2 123 declare OP_READ_ONE fixed bin initial (16) internal static options (constant); 2 124 2 125 /* use request_read, and return the character in the buffer there */ 2 126 /* pass the BLOCK flag in in break_flag. Well... */ 2 127 2 128 /* END INCLUDE FILE tc_operations_.incl.pl1 */ 2227 2228 /* ugh ... this shouldn't be here */ 3 1 /* BEGIN INCLUDE FILE ... tty_read_status_info.incl.pl1 3 2* 3 3* control structure for the read_status and write_status orders to tty_ 3 4* 3 5* Modified 2/1/83 by Olin Sibert to add tty_write_status_info structure in 3 6* support of lap_simplex_ MPX. 3 7**/ 3 8 3 9 3 10 /****^ HISTORY COMMENTS: 3 11* 1) change(88-07-07,Beattie), approve(88-06-27,MCR7926), 3 12* audit(88-07-22,Brunelle), install(88-08-08,MR12.2-1082): 3 13* Prepared for installation. 3 14* END HISTORY COMMENTS */ 3 15 3 16 3 17 dcl 1 tty_read_status_info aligned based (tty_read_status_info_ptr), 3 18 2 event_channel fixed bin (71), 3 19 2 input_pending bit (1); 3 20 3 21 dcl tty_read_status_info_ptr ptr; 3 22 3 23 dcl 1 tty_write_status_info aligned based (tty_write_status_info_ptr), 3 24 2 event_channel fixed bin (71), 3 25 2 output_pending bit (1); 3 26 3 27 dcl tty_write_status_info_ptr ptr; 3 28 3 29 /* END INCLUDE FILE ... tty_read_status_info.incl.pl1 */ 2229 2230 2231 dcl 1 rqrs aligned like request_read_status; 2232 /* let's pretend to be window_/window_io_video_ */ 2233 2234 rqrs.sentinel = REQUEST_SENTINEL; 2235 rqrs.window_id = attach_data.window_id; 2236 rqrs.request_id = clock (); 2237 rqrs.operation = OP_READ_STATUS; 2238 rqrs.row = attach_data.current.line_origin; /* 1,1 is as good as any ... this prevents out_of_bounds faults way down at tc_ */ 2239 rqrs.col = attach_data.current.column_origin; /* note, these are terminal coords not window coords */ 2240 string (rqrs.flags) = ""b; 2241 2242 call iox_$control (target_iocbp, "window_operation", addr (rqrs), Code); 2243 if Code ^= 0 then 2244 return; /* This should deal with window_status_pending, at least for the reconnection case (or until then the check_in window kludge), but not now. */ 2245 2246 Info_ptr -> tty_read_status_info.event_channel = rqrs.event_channel; 2247 Info_ptr -> tty_read_status_info.input_pending = rqrs.returned_length > 0; 2248 2249 return; 2250 2251 end read_status; 2252 2253 error_exit: 2254 proc (a_code); 2255 2256 dcl a_code fixed bin (35) parameter; 2257 2258 Code = a_code; 2259 go to error_return; 2260 2261 end error_exit; 2262 2263 error_return: 2264 return; 2265 2266 copy_new_to_old_special_table: 2267 proc; 2268 2269 /* special procedure to copy a version 2 special chars structure (15 char 2270* sequences) to a version 1 special chars structure (3 char sequences). 2271* If any of the sequences are too long, it will return non-zero error code */ 2272 2273 dcl i fixed bin; 2274 dcl old_max_length fixed bin; 2275 2276 Code = 0; 2277 old_max_length = hbound (gsi_old.table_ptr -> special_chars_struc_old.nl_seq.chars, 1); 2278 2279 if attach_data.special_ptr -> special_chars.nl_seq.count > old_max_length then 2280 go to bad_special; 2281 addr (gsi_old.table_ptr -> special_chars_struc_old.nl_seq) -> c_chars_old = 2282 addr (attach_data.special_ptr -> special_chars.nl_seq) -> c_chars_old; 2283 if attach_data.special_ptr -> special_chars.cr_seq.count > old_max_length then 2284 go to bad_special; 2285 addr (gsi_old.table_ptr -> special_chars_struc_old.cr_seq) -> c_chars_old = 2286 addr (attach_data.special_ptr -> special_chars.cr_seq) -> c_chars_old; 2287 if attach_data.special_ptr -> special_chars.bs_seq.count > old_max_length then 2288 go to bad_special; 2289 addr (gsi_old.table_ptr -> special_chars_struc_old.bs_seq) -> c_chars_old = 2290 addr (attach_data.special_ptr -> special_chars.bs_seq) -> c_chars_old; 2291 if attach_data.special_ptr -> special_chars.tab_seq.count > old_max_length then 2292 go to bad_special; 2293 addr (gsi_old.table_ptr -> special_chars_struc_old.tab_seq) -> c_chars_old = 2294 addr (attach_data.special_ptr -> special_chars.tab_seq) -> c_chars_old; 2295 if attach_data.special_ptr -> special_chars.vt_seq.count > old_max_length then 2296 go to bad_special; 2297 addr (gsi_old.table_ptr -> special_chars_struc_old.vt_seq) -> c_chars_old = 2298 addr (attach_data.special_ptr -> special_chars.vt_seq) -> c_chars_old; 2299 if attach_data.special_ptr -> special_chars.ff_seq.count > old_max_length then 2300 go to bad_special; 2301 addr (gsi_old.table_ptr -> special_chars_struc_old.ff_seq) -> c_chars_old = 2302 addr (attach_data.special_ptr -> special_chars.ff_seq) -> c_chars_old; 2303 if attach_data.special_ptr -> special_chars.printer_on.count > old_max_length then 2304 go to bad_special; 2305 addr (gsi_old.table_ptr -> special_chars_struc_old.printer_on) -> c_chars_old = 2306 addr (attach_data.special_ptr -> special_chars.printer_on) -> c_chars_old; 2307 if attach_data.special_ptr -> special_chars.printer_off.count > old_max_length then 2308 go to bad_special; 2309 addr (gsi_old.table_ptr -> special_chars_struc_old.printer_off) -> c_chars_old = 2310 addr (attach_data.special_ptr -> special_chars.printer_off) -> c_chars_old; 2311 if attach_data.special_ptr -> special_chars.red_ribbon_shift.count > old_max_length then 2312 go to bad_special; 2313 addr (gsi_old.table_ptr -> special_chars_struc_old.red_ribbon_shift) -> c_chars_old = 2314 addr (attach_data.special_ptr -> special_chars.red_ribbon_shift) -> c_chars_old; 2315 if attach_data.special_ptr -> special_chars.black_ribbon_shift.count > old_max_length then 2316 go to bad_special; 2317 addr (gsi_old.table_ptr -> special_chars_struc_old.black_ribbon_shift) -> c_chars_old = 2318 addr (attach_data.special_ptr -> special_chars.black_ribbon_shift) -> c_chars_old; 2319 if attach_data.special_ptr -> special_chars.end_of_page.count > old_max_length then 2320 go to bad_special; 2321 addr (gsi_old.table_ptr -> special_chars_struc_old.end_of_page) -> c_chars_old = 2322 addr (attach_data.special_ptr -> special_chars.end_of_page) -> c_chars_old; 2323 gsi_old.table_ptr -> special_chars_struc_old.escape_length = 2324 attach_data.special_ptr -> special_chars.escape_length; 2325 do i = 1 to attach_data.special_ptr -> special_chars.escape_length; 2326 if attach_data.special_ptr -> special_chars.not_edited_escapes (i).count > old_max_length then 2327 go to bad_special; 2328 addr (gsi_old.table_ptr -> special_chars_struc_old.not_edited_escapes (i)) -> c_chars_old = 2329 addr (attach_data.special_ptr -> special_chars.not_edited_escapes (i)) -> c_chars_old; 2330 if attach_data.special_ptr -> special_chars.edited_escapes (i).count > old_max_length then 2331 go to bad_special; 2332 addr (gsi_old.table_ptr -> special_chars_struc_old.edited_escapes (i)) -> c_chars_old = 2333 addr (attach_data.special_ptr -> special_chars.edited_escapes (i)) -> c_chars_old; 2334 end; 2335 gsi_old.table_ptr -> special_chars_struc_old.input_escapes = 2336 attach_data.special_ptr -> special_chars.input_escapes; 2337 gsi_old.table_ptr -> special_chars_struc_old.input_results = 2338 attach_data.special_ptr -> special_chars.input_results; 2339 2340 return; 2341 2342 bad_special: 2343 Code = error_table_$invalid_array_size; 2344 return; 2345 2346 end copy_new_to_old_special_table; 2347 2348 copy_old_to_new_special_table: 2349 proc; 2350 2351 /* special procedure to copy a version 1 special chars structure (3 char 2352* sequences) to a version 2 special chars structure (15 char sequences). */ 2353 2354 dcl i fixed bin; 2355 2356 addr (temp_ptr -> special_chars.nl_seq) -> c_chars_old = 2357 addr (addr (scs.special_chars) -> special_chars_old.nl_seq) -> c_chars_old; 2358 addr (temp_ptr -> special_chars.cr_seq) -> c_chars_old = 2359 addr (addr (scs.special_chars) -> special_chars_old.cr_seq) -> c_chars_old; 2360 addr (temp_ptr -> special_chars.bs_seq) -> c_chars_old = 2361 addr (addr (scs.special_chars) -> special_chars_old.bs_seq) -> c_chars_old; 2362 addr (temp_ptr -> special_chars.tab_seq) -> c_chars_old = 2363 addr (addr (scs.special_chars) -> special_chars_old.tab_seq) -> c_chars_old; 2364 addr (temp_ptr -> special_chars.vt_seq) -> c_chars_old = 2365 addr (addr (scs.special_chars) -> special_chars_old.vt_seq) -> c_chars_old; 2366 addr (temp_ptr -> special_chars.ff_seq) -> c_chars_old = 2367 addr (addr (scs.special_chars) -> special_chars_old.ff_seq) -> c_chars_old; 2368 addr (temp_ptr -> special_chars.printer_on) -> c_chars_old = 2369 addr (addr (scs.special_chars) -> special_chars_old.printer_on) -> c_chars_old; 2370 addr (temp_ptr -> special_chars.printer_off) -> c_chars_old = 2371 addr (addr (scs.special_chars) -> special_chars_old.printer_off) -> c_chars_old; 2372 addr (temp_ptr -> special_chars.red_ribbon_shift) -> c_chars_old = 2373 addr (addr (scs.special_chars) -> special_chars_old.red_ribbon_shift) -> c_chars_old; 2374 addr (temp_ptr -> special_chars.black_ribbon_shift) -> c_chars_old = 2375 addr (addr (scs.special_chars) -> special_chars_old.black_ribbon_shift) -> c_chars_old; 2376 addr (temp_ptr -> special_chars.end_of_page) -> c_chars_old = 2377 addr (addr (scs.special_chars) -> special_chars_old.end_of_page) -> c_chars_old; 2378 temp_ptr -> special_chars.escape_length = addr (scs.special_chars) -> special_chars_old.escape_length; 2379 do i = 1 to attach_data.special_ptr -> special_chars.escape_length; 2380 addr (temp_ptr -> special_chars.not_edited_escapes (i)) -> c_chars_old = 2381 addr (addr (scs.special_chars) -> special_chars_old.not_edited_escapes (i)) -> c_chars_old; 2382 addr (temp_ptr -> special_chars.edited_escapes (i)) -> c_chars_old = 2383 addr (addr (scs.special_chars) -> special_chars_old.edited_escapes (i)) -> c_chars_old; 2384 end; 2385 temp_ptr -> special_chars.input_escapes = addr (scs.special_chars) -> special_chars_struc_old.input_escapes; 2386 temp_ptr -> special_chars.input_results = addr (scs.special_chars) -> special_chars_struc_old.input_results; 2387 2388 return; 2389 2390 end copy_old_to_new_special_table; 2391 4 1 /* Begin include file window_io_attach_data_.incl.pl1 BIM June 1981 */ 4 2 4 3 /* Modified by Chris Jones December 1981 to add MORE_MODE_FOLD */ 4 4 /* Modified by William York 26 January 1982 to add more_handler_in_use 4 5* and more_handler to the attach_data structure. */ 4 6 /* Modified 18 October 1982 by WMY to add the window_image_ptr, 4 7* conversion_tct_table and token_characters. */ 4 8 /* Modified 30 September 1983 by Jon A. Rochlis to add column_origin for 4 9* partial screen width windows. */ 4 10 /* Modified 8 January 1983 by JR to delete attach_data.capabilites. See 4 11* window_io_ and wioctl_ for more info. */ 4 12 /* Modified 5 March 1984 by Barmar to add dispatch_table.name, .description, 4 13* and .info_path. */ 4 14 /* Modified 22 March 1984 by Barmar to add attach_data.auditor_iocb_ptr. */ 4 15 /* Modified 01 September 1984 by JR to add edited mode. */ 4 16 4 17 4 18 /****^ HISTORY COMMENTS: 4 19* 1) change(86-05-18,GDixon), approve(86-05-18,MCR7357), 4 20* audit(86-06-16,Farley), install(86-07-18,MR12.0-1098): 4 21* Modify attach_data.conversion_tct_table to make it aligned. When tct_ was 4 22* replaced by find_char_, the new calling sequence required an aligned 4 23* table. 4 24* END HISTORY COMMENTS */ 4 25 4 26 4 27 /* format: style3 */ 4 28 declare attach_data_ptr pointer; 4 29 declare 1 attach_data aligned based (attach_data_ptr), 4 30 2 window_id bit (36) aligned, 4 31 2 async_count fixed bin, 4 32 2 attach_description 4 33 character (128) var, /* attach description */ 4 34 2 open_description 4 35 character (64) varying, 4 36 2 target_iocb_ptr pointer, 4 37 2 flags, 4 38 3 discard_output 4 39 bit (1) unal, /* more processing: throw away all output */ 4 40 3 debug bit (1) unal, 4 41 3 more_processing 4 42 bit (1) unal, /* more mode */ 4 43 3 vertsp bit (1) unal, /* vertsp mode */ 4 44 3 can bit (1) unal, /* can mode */ 4 45 3 esc bit (1) unal, /* can mode */ 4 46 3 erkl bit (1) unal, /* erkl mode */ 4 47 3 rawo bit (1) unal, /* rawo mode */ 4 48 3 red bit (1) unal, /* red mode */ 4 49 3 ctl_char bit (1) unal, /* allow ctrl chars input? */ 4 50 3 status_pending 4 51 bit (1) unal, 4 52 3 cursor_valid bit (1) unal, 4 53 3 suppress_echo bit (1) unal, 4 54 3 ignore_status bit (1) unal, 4 55 3 edited bit (1) unal, /* edited mode */ 4 56 3 pad bit (21) unal, 4 57 2 status aligned like window_status, 4 58 2 lines_written_since_read 4 59 fixed bin, /* more processing */ 4 60 2 cursor_position, /* Where in this window */ 4 61 3 line fixed bin, /* line number */ 4 62 3 col fixed bin, /* column */ 4 63 3 row_at_rawo fixed bin, 4 64 3 col_at_rawo fixed bin, /* when we went raw */ 4 65 2 more_mode fixed bin, /* which flavor */ 4 66 2 more_prompt character (80), /* "MORE?" */ 4 67 2 more_responses, 4 68 3 n_yeses fixed bin, /* number valid */ 4 69 3 n_noes fixed bin, 4 70 3 more_yeses character (32) unaligned, /* at most 32 yeses */ 4 71 3 more_noes character (32) unaligned, 4 72 2 editing_chars, 4 73 3 erase_char character (1), 4 74 3 kill_char character (1), 4 75 3 input_escape_char 4 76 character (1), /* normally "\" */ 4 77 2 breaks bit (128) unaligned, 4 78 2 line_editor_breaks 4 79 bit (128) unaligned, 4 80 2 current, /* describes us */ 4 81 3 rows fixed bin, /* how many lines */ 4 82 3 columns fixed bin, /* how wide lines in this window are */ 4 83 3 line_origin fixed bin, /* on containing screen (terminal) */ 4 84 3 column_origin fixed bin, /* on containing screen (terminal) */ 4 85 2 kill_ring_info, 4 86 3 top_killer ptr, /* top of ring */ 4 87 3 army ptr, /* surplus killers kept here */ 4 88 2 output_cv_ptr ptr, /* to cv_trans */ 4 89 2 special_ptr ptr, /* to special_chars */ 4 90 2 saved_buffer_ptr /* for saving text across editor calls */ 4 91 pointer, 4 92 2 dispatch_table_ptr /* for editor key bindings */ 4 93 pointer, 4 94 2 more_handler_in_use 4 95 bit(1), 4 96 2 more_handler entry (pointer, bit(1) aligned, fixed bin(35)), 4 97 2 conversion_tct_table 4 98 char(512), 4 99 2 token_character_count /* count of valid chars */ 4 100 fixed bin, 4 101 2 token_characters /* token delimiters for line editor */ 4 102 char(128) unaligned, 4 103 2 window_image_ptr pointer, /* to character array for this window */ 4 104 2 auditor_iocb_ptr pointer; /* set by set_audit_iocb_ptr control order */ 4 105 4 106 dcl ( 4 107 MORE_MODE_SCROLL init (1), 4 108 MORE_MODE_CLEAR init (2), 4 109 MORE_MODE_WRAP init (3), 4 110 MORE_MODE_FOLD init (4) 4 111 ) fixed bin internal static options (constant); 4 112 4 113 dcl attach_data_area area based (get_system_free_area_ ()); 4 114 4 115 declare get_system_free_area_ 4 116 entry returns (pointer); 4 117 4 118 dcl 1 killer based (attach_data.top_killer), 4 119 2 next pointer, /* if you rotate */ 4 120 2 prev pointer, /* dbl thread for conven. */ 4 121 2 max_size fixed bin (21), 4 122 2 words character (killer_alloc_size refer (killer.max_size)) varying; 4 123 4 124 dcl killer_alloc_size fixed bin; 4 125 dcl killer_initial_alloc_size 4 126 fixed bin init (128) internal static options (constant); 4 127 declare breaks_array (0:127) bit (1) unaligned defined (attach_data.breaks) position (1); 4 128 declare line_editor_breaks_array 4 129 (0:127) bit (1) unaligned defined (attach_data.line_editor_breaks) position (1); 4 130 4 131 dcl valid_token_characters char(attach_data.token_character_count) based (addr (attach_data.token_characters)); 4 132 4 133 /* Each window has its own window image, which must be re-allocated if the 4 134* window size changes. */ 4 135 dcl window_image (attach_data.current.rows) char (attach_data.current.columns) 4 136 based (attach_data.window_image_ptr); 4 137 4 138 /* Single based string for clearing. */ 4 139 dcl window_image_string char(attach_data.current.rows * attach_data.current.columns) based (window_image_ptr); 4 140 4 141 /* editor key binding dispatch table. 4 142* 4 143*If type = 0, the keystroke is associated with the editor routine specified by 4 144*routine. Simply call the routine. 4 145* 4 146*If type < 0, the keystroke is a prefix character, and the pointer in next_table 4 147*points to the next dispatch table. 4 148* 4 149*If type > 0, it is an index into the table of builtin editor commands (i.e. 4 150*the editor routines implemented by this module). Perform a quick call of the 4 151*builtin routine. */ 4 152 4 153 dcl dispatch_table_ptr pointer; 4 154 4 155 dcl 1 dispatch_table aligned based (dispatch_table_ptr), 4 156 2 key (0:127), 4 157 3 type fixed bin, 4 158 3 pad fixed bin, 4 159 3 next_table pointer, 4 160 3 routine entry (pointer, fixed bin(35)), 4 161 3 numarg_action fixed bin, /* only for external routines */ 4 162 3 name char (64) varying, 4 163 3 description char (256) varying, 4 164 3 info_path, 4 165 4 info_dir char (168), 4 166 4 info_entry char (32); 4 167 5 1 /* Begin include file window_editor_values.incl.pl1 */ 5 2 5 3 /* Spring 1983 by William M. York */ 5 4 /* Modifed June 1983 by Jon A. Rochlis to add NUMBER_READER_N builtins, word 5 5* casing builtins, twiddle word, and numarg actions */ 5 6 /* Modified 7 August 1983 by JR to add string arrays. Be sure 5 7* everything is kept in sync. If you add a new editor builtin 5 8* make sure you update HIGHEST_BUILTIN_ROUTINE_VALUE, add an element 5 9* to the string array, and bump its dimension. */ 5 10 /* Modified 5 March 1984 by Barmar to add the builtin_descriptions array 5 11* and BUILTIN_INFO_* */ 5 12 5 13 dcl (EXTERNAL_ROUTINE init(0), 5 14 FORWARD_CHARACTER init(1), 5 15 BACKWARD_CHARACTER init(2), 5 16 FORWARD_DELETE_CHARACTER init(3), 5 17 BACKWARD_DELETE_CHARACTER 5 18 init(4), 5 19 MOVE_TO_END_OF_LINE init(5), 5 20 MOVE_TO_BEGINNING_OF_LINE 5 21 init(6), 5 22 KILL_TO_END_OF_LINE init(7), 5 23 KILL_TO_BEGINNING_OF_LINE 5 24 init(8), 5 25 FORWARD_WORD init(9), 5 26 BACKWARD_WORD init(10), 5 27 FORWARD_DELETE_WORD init(11), 5 28 BACKWARD_DELETE_WORD init(12), 5 29 QUOTE_CHARACTER init(13), 5 30 CLEAR_WINDOW init(14), 5 31 TWIDDLE_CHARACTERS init(15), 5 32 DISPLAY_EDITOR_DOCUMENTATION 5 33 init(16), 5 34 SELF_INSERT init(17), 5 35 YANK_FROM_KILL_RING init(18), 5 36 YANK_PREVIOUS_FROM_KILL_RING 5 37 init(19), 5 38 TERMINATE_INPUT_LINE init(20), 5 39 UNDEFINED init(21), 5 40 PROCESS_INPUT_ESCAPE init(22), 5 41 NUMBER_READER_0 init(23), 5 42 NUMBER_READER_1 init(24), 5 43 NUMBER_READER_2 init(25), 5 44 NUMBER_READER_3 init(26), 5 45 NUMBER_READER_4 init(27), 5 46 NUMBER_READER_5 init(28), 5 47 NUMBER_READER_6 init(29), 5 48 NUMBER_READER_7 init(30), 5 49 NUMBER_READER_8 init(31), 5 50 NUMBER_READER_9 init(32), 5 51 MULTIPLIER init(33), 5 52 LOWERCASE_WORD init(34), 5 53 UPPERCASE_WORD init(35), 5 54 INITIAL_CAPITAL init(36), 5 55 TWIDDLE_WORDS init(37), 5 56 NEGATIVE_NUMBER_READER init(38), 5 57 /* the following must be updated as new internal routines are added 5 58* in order for set_editor_key_bindings to work */ 5 59 HIGHEST_BUILTIN_ROUTINE_VALUE 5 60 init(38) 5 61 ) fixed bin static options(constant); 5 62 5 63 dcl builtin_routine_names (-1:38) char(32) static options (constant) init 5 64 ("PREFIX_KEY", 5 65 "USER_DEFINED_COMMAND", 5 66 "FORWARD_CHARACTER", 5 67 "BACKWARD_CHARACTER", 5 68 "FORWARD_DELETE_CHARACTER", 5 69 "BACKWARD_DELETE_CHARACTER", 5 70 "MOVE_TO_END_OF_LINE", 5 71 "MOVE_TO_BEGINNING_OF_LINE", 5 72 "KILL_TO_END_OF_LINE", 5 73 "KILL_TO_BEGINNING_OF_LINE", 5 74 "FORWARD_WORD", 5 75 "BACKWARD_WORD", 5 76 "FORWARD_DELETE_WORD", 5 77 "BACKWARD_DELETE_WORD", 5 78 "QUOTE_CHARACTER", 5 79 "CLEAR_WINDOW", 5 80 "TWIDDLE_CHARACTERS", 5 81 "DISPLAY_EDITOR_DOCUMENTATION", 5 82 "SELF_INSERT", 5 83 "YANK_FROM_KILL_RING", 5 84 "YANK_PREVIOUS_FROM_KILL_RING", 5 85 "TERMINATE_INPUT_LINE", 5 86 "UNDEFINED", 5 87 "PROCESS_INPUT_ESCAPE", 5 88 "NUMBER_READER_0", 5 89 "NUMBER_READER_1", 5 90 "NUMBER_READER_2", 5 91 "NUMBER_READER_3", 5 92 "NUMBER_READER_4", 5 93 "NUMBER_READER_5", 5 94 "NUMBER_READER_6", 5 95 "NUMBER_READER_7", 5 96 "NUMBER_READER_8", 5 97 "NUMBER_READER_9", 5 98 "MULTIPLIER", 5 99 "LOWERCASE_WORD", 5 100 "UPPERCASE_WORD", 5 101 "INITIAL_CAPITAL", 5 102 "TWIDDLE_WORDS", 5 103 "NEGATIVE_NUMBER_READER"); 5 104 5 105 dcl builtin_descriptions (-1:38) char (128) varying static options (constant) init 5 106 ("Reads another key and dispatches.", 5 107 "A user-defined command for which no description was supplied.", 5 108 "Moves forward over one character.", 5 109 "Moves backward over one character.", 5 110 "Deletes the character at the cursor.", 5 111 "Deletes the character to the left of the cursor.", 5 112 "Moves to the end of the input line.", 5 113 "Moves to the beginning of the input line.", 5 114 "Deletes the text from the cursor to the end of the input line, saving it on the kill ring.", 5 115 "Deletes the text from the cursor to the beginning of the input line, saving it on the kill ring.", 5 116 "Moves to the end of the current or following word.", 5 117 "Moves to the beginning of the current or preceding word.", 5 118 "Deletes the text from the cursor to the end of the current word, saving it on the kill ring.", 5 119 "Deletes the text from the cursor to the beginning of the current word, saving it on the kill ring.", 5 120 "Inserts the next character typed into the input line.", 5 121 "Clears the input window, and redisplays the current input line at the top of the window.", 5 122 "Interchanges the two characters to the left of the cursor.", 5 123 "Displays the list of standard input editor commands.", 5 124 "Inserts the character typed.", 5 125 "Inserts the top item from the kill ring.", 5 126 "Deletes the text just yanked, rotate the kill ring, and insert the new top item.", 5 127 "Enters the input line.", 5 128 "Undefined key - rings the terminal bell.", 5 129 "Does appropriate ""backslash-style"" input escape processing.", 5 130 (10) ("Begins reading a numeric argument."), 5 131 "If followed by digits, uses them as the numeric argument, otherwise multiplies the num-arg by four.", 5 132 "Lowercases the current word.", 5 133 "Uppercases the current word.", 5 134 "Uppercases the first letter of the current word, and lowercases the rest of the letters.", 5 135 "Interchange the current word and the preceding word.", 5 136 "Begins reading a negative numeric argument."); 5 137 5 138 dcl BUILTIN_INFO_DIR char (168) static options (constant) init (">doc>info"); 5 139 dcl BUILTIN_INFO_ENTRY char (32) static options (constant) init ("video_editing.gi"); 5 140 5 141 /* numeric argument action */ 5 142 5 143 dcl (REJECT init(0), 5 144 IGNORE init(1), 5 145 REPEAT init(2), 5 146 PASS init(3), 5 147 /* this should be updated if new numarg actions are added */ 5 148 HIGHEST_NUMARG_ACTION_VALUE 5 149 init(3) 5 150 ) fixed bin static options(constant); 5 151 5 152 /* strings for numarg actions */ 5 153 5 154 dcl numarg_action_names (0:3) char(6) static options (constant) init 5 155 ("REJECT", 5 156 "INGORE", 5 157 "REPEAT", 5 158 "PASS"); 5 159 5 160 /* end include file window_editor_values.incl.pl1 */ 4 168 6 1 /* begin include file window_status.incl.pl1 */ 6 2 /* Modified 28 March 1984 by Jon A. Rochlis to add terminal type change 6 3* and reconnection stuff. */ 6 4 /* format: style3 */ 6 5 /* interrupts that an application can recieve from a window */ 6 6 6 7 declare window_status_string 6 8 bit (36) unaligned; 6 9 6 10 declare 1 window_status aligned, 6 11 2 screen_invalid bit (1) unaligned, 6 12 2 async_change bit (1) unaligned, 6 13 2 ttp_change bit (1) unaligned, 6 14 2 reconnection bit (1) unaligned, 6 15 2 pad bit (32) unaligned; 6 16 6 17 declare ( 6 18 W_STATUS_SCREEN_INVALID 6 19 init ("1"b), 6 20 W_STATUS_ASYNC_EVENT 6 21 init ("01"b), 6 22 W_STATUS_TTP_CHANGE 6 23 init ("001"b), 6 24 W_STATUS_RECONNECTION 6 25 init ("0001"b) 6 26 ) bit (36) aligned internal static options (constant); 6 27 6 28 /* end include file window_status.incl.pl1 */ 4 169 7 1 /* BEGIN INCLUDE FILE terminal_capabilities.incl.pl1 BIM May 1981 */ 7 2 /* format: style3 */ 7 3 dcl 1 capabilities_info aligned based (capabilities_info_ptr), 7 4 2 version fixed bin, 7 5 2 screensize, 7 6 3 columns fixed bin, 7 7 3 rows fixed bin, 7 8 2 flags, 7 9 3 scroll_region bit (1) unal, 7 10 3 insert_chars bit (1) unal, 7 11 3 insert_mode bit (1) unal, 7 12 3 delete_chars bit (1) unal, 7 13 3 overprint bit (1) unal, 7 14 3 pad bit (31) unal, 7 15 2 line_speed fixed bin; /* chars per sec */ 7 16 7 17 dcl (capabilities_info_version_1, capabilities_info_version) 7 18 fixed bin internal static init (1) options (constant); 7 19 dcl capabilities_info_ptr 7 20 pointer; 7 21 7 22 /* END INCLUDE FILE terminal_capabilities.incl.pl1 */ 4 170 4 171 4 172 /* End include file window_io_attach_data_.incl.pl1 */ 2392 8 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 8 2 /* format: style3 */ 8 3 8 4 /* Modified 26 January 1982 by William York to add the set_more_handler 8 5* and reset_more_handler control orders. */ 8 6 /* Modified October 1982 by WMY to add set and get_token_characters, 8 7* set and get_more_prompt. */ 8 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 8 9* structure. */ 8 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 8 11* partial screen width windows. */ 8 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 8 13* This should be removed when window_info.incl.pl1 is created. */ 8 14 /* Modified 29 February 1984 by Barmar to add version 1 8 15* get_editor_key_bindings_info. */ 8 16 /* Modified 1 March 1984 by Barmar to add version 1 8 17* set_editor_key_bindings_info. */ 8 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 8 19* line_editor_key_bindings_info, which includes the name, description, and 8 20* info path */ 8 21 8 22 /* structure for the set_window_info and get_window_info 8 23* control orders. */ 8 24 8 25 dcl 1 window_position_info 8 26 based (window_position_info_ptr), 8 27 2 version fixed bin, 8 28 2 origin, 8 29 3 column fixed bin, 8 30 3 line fixed bin, 8 31 2 extent, 8 32 3 width fixed bin, 8 33 3 height fixed bin; 8 34 8 35 dcl (window_position_info_version, window_position_info_version_1) 8 36 fixed bin internal static init (1) options (constant); 8 37 dcl window_position_info_ptr 8 38 pointer; 8 39 8 40 /* structure for the set_window_status and get_window_status 8 41* control orders */ 8 42 8 43 declare window_status_info_ptr 8 44 pointer; 8 45 declare 1 window_status_info 8 46 aligned based (window_status_info_ptr), 8 47 2 version fixed bin, 8 48 2 status_string bit (36) aligned; /* string (window_status) */ 8 49 /* see window_status.incl.pl1 for the contents of this string */ 8 50 8 51 8 52 declare (window_status_version, window_status_version_1) 8 53 fixed bin internal static init (1) options (constant); 8 54 8 55 /* info structure for the set_more_responses and get_more_responses control 8 56* orders */ 8 57 8 58 8 59 dcl 1 more_responses_info 8 60 aligned based (more_responses_info_ptr), 8 61 2 version fixed bin, 8 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 8 63 2 n_noes fixed bin, 8 64 2 yeses char (32) unaligned, 8 65 2 noes char (32) unaligned; 8 66 8 67 dcl (more_responses_info_version_1, more_responses_version) 8 68 fixed bin internal static init (1) options (constant); 8 69 dcl more_responses_info_ptr 8 70 pointer; 8 71 8 72 /* structure for the set_break_table and get_break_table 8 73* control orders */ 8 74 8 75 declare break_table_ptr pointer; 8 76 declare 1 break_table_info aligned based (break_table_ptr), 8 77 2 version fixed bin, 8 78 2 breaks (0:127) bit (1) unaligned; 8 79 8 80 declare (break_table_info_version, break_table_info_version_1) 8 81 fixed bin init (1) internal static options (constant); 8 82 8 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 8 84 2 version fixed bin, 8 85 2 flags unaligned, 8 86 3 old_handler_valid 8 87 bit(1), 8 88 3 pad bit(35), 8 89 2 more_handler entry (pointer, bit(1) aligned), 8 90 2 old_more_handler entry (pointer, bit(1) aligned); 8 91 8 92 declare more_handler_info_ptr pointer; 8 93 8 94 declare (more_handler_info_version, more_handler_info_version_3) 8 95 fixed bin internal static options (constant) init (3); 8 96 8 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 8 98 2 version char(8), 8 99 2 token_character_count 8 100 fixed bin, 8 101 2 token_characters 8 102 char (128) unaligned; 8 103 8 104 declare token_characters_info_ptr pointer; 8 105 8 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 8 107 8 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 8 109 2 version char(8), 8 110 2 more_prompt char(80); 8 111 8 112 declare more_prompt_info_ptr pointer; 8 113 8 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 8 115 8 116 /* Line editor stuff ... */ 8 117 8 118 dcl line_editor_key_binding_info_ptr 8 119 pointer; 8 120 8 121 dcl line_editor_binding_count 8 122 fixed bin; 8 123 dcl line_editor_longest_sequence 8 124 fixed bin; 8 125 /* For each binding, action defines what to do for that sequence. Constants 8 126* are defined in window_editor_values.incl.pl1. Only if action is set to 8 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 8 128 8 129 dcl 1 line_editor_key_binding_info 8 130 aligned based (line_editor_key_binding_info_ptr), 8 131 2 version char(8), 8 132 2 binding_count fixed bin, 8 133 2 longest_sequence fixed bin, 8 134 2 bindings (line_editor_binding_count refer 8 135 (line_editor_key_binding_info.binding_count)), 8 136 3 sequence char(line_editor_longest_sequence refer 8 137 (line_editor_key_binding_info.longest_sequence)) varying, 8 138 3 action fixed bin, 8 139 3 numarg_action fixed binary, 8 140 3 editor_routine entry (pointer, fixed bin(35)), 8 141 3 name char (64) varying unaligned, 8 142 3 description char (256) varying unaligned, 8 143 3 info_path unaligned, 8 144 4 info_dir char (168), 8 145 4 info_entry char (32); 8 146 8 147 8 148 dcl line_editor_key_binding_info_version_3 8 149 char(8) static options (constant) init ("lekbi003"); 8 150 8 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 8 152 2 version char (8), 8 153 2 flags, 8 154 3 entire_state bit (1) unaligned, 8 155 3 mbz bit (35) unaligned, 8 156 2 key_binding_info_ptr ptr, 8 157 2 entire_state_ptr ptr; 8 158 8 159 dcl get_editor_key_bindings_info_ptr ptr; 8 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 8 161 8 162 dcl 1 set_editor_key_bindings_info aligned 8 163 based (set_editor_key_bindings_info_ptr), 8 164 2 version char (8), 8 165 2 flags, 8 166 3 replace bit (1) unaligned, 8 167 3 update bit (1) unaligned, 8 168 3 mbz bit (34) unaligned, 8 169 2 key_binding_info_ptr ptr; 8 170 8 171 dcl set_editor_key_bindings_info_ptr ptr; 8 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 8 173 8 174 /* This should be moved to window_info.incl.pl1 when that include file is 8 175* created. JR 2/1/84 */ 8 176 8 177 dcl 1 window_edit_line_info 8 178 based (window_edit_line_info_ptr), 8 179 2 version char (8), 8 180 2 line_ptr ptr, 8 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 8 182 8 183 dcl window_edit_line_info_version_1 8 184 char (8) static options (constant) init ("wedl0001"); 8 185 8 186 dcl window_edit_line_info_ptr 8 187 ptr; 8 188 8 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 2393 2394 9 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 9 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 9 3* version number to IOX2. */ 9 4 /* format: style2 */ 9 5 9 6 dcl 1 iocb aligned based, /* I/O control block. */ 9 7 2 version character (4) aligned, /* IOX2 */ 9 8 2 name char (32), /* I/O name of this block. */ 9 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 9 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 9 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 9 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 9 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 9 14 2 reserved bit (72), /* Reserved for future use. */ 9 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 9 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 9 17 /* open(p,mode,not_used,s) */ 9 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 9 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 9 20 /* get_line(p,bufptr,buflen,actlen,s) */ 9 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 9 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 9 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 9 24 /* put_chars(p,bufptr,buflen,s) */ 9 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 9 26 /* modes(p,newmode,oldmode,s) */ 9 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 9 28 /* position(p,u1,u2,s) */ 9 29 2 control entry (ptr, char (*), ptr, fixed (35)), 9 30 /* control(p,order,infptr,s) */ 9 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 9 32 /* read_record(p,bufptr,buflen,actlen,s) */ 9 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 9 34 /* write_record(p,bufptr,buflen,s) */ 9 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 9 36 /* rewrite_record(p,bufptr,buflen,s) */ 9 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 9 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 9 39 /* seek_key(p,key,len,s) */ 9 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 9 41 /* read_key(p,key,len,s) */ 9 42 2 read_length entry (ptr, fixed (21), fixed (35)), 9 43 /* read_length(p,len,s) */ 9 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 9 45 /* open_file(p,mode,desc,not_used,s) */ 9 46 2 close_file entry (ptr, char (*), fixed bin (35)), 9 47 /* close_file(p,desc,s) */ 9 48 2 detach entry (ptr, char (*), fixed bin (35)); 9 49 /* detach(p,desc,s) */ 9 50 9 51 declare iox_$iocb_version_sentinel 9 52 character (4) aligned external static; 9 53 9 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 2395 2396 10 1 /* begin include file tc_desk_info_.incl.pl1 BIM June 1981 */ 10 2 /* Modified 1 October 1983 by Jon A. Rochlis to add support for partial 10 3* screen width windows */ 10 4 /* Modified 28 March 1984 by JR to add window_iocb_ptr so tc_ can inform 10 5* window_ of events such as reconnection, by doing set_window_status control 10 6* orders. */ 10 7 10 8 /* internal interface */ 10 9 10 10 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 10 11 /* requests to desk management, first pass implementation */ 10 12 10 13 declare tc_desk_info_ptr pointer; 10 14 declare 1 tc_desk_window_info aligned based (tc_desk_info_ptr), 10 15 2 first_row fixed bin, /* top row of window */ 10 16 2 n_rows fixed bin, /* How many rows */ 10 17 2 first_column fixed bin, /* Fist column of window */ 10 18 2 n_columns fixed bin, /* How many columns */ 10 19 2 window_id bit (36) aligned, 10 20 2 window_iocb_ptr ptr; 10 21 10 22 /* used in calls to terminal control to establish rearrange, 10 23* and inquire about windows */ 10 24 10 25 /* end include file tc_desk_info_.incl.pl1 */ 2397 2398 11 1 11 2 /* BEGIN INCLUDE FILE tty_editing_chars.incl.pl1 */ 11 3 11 4 11 5 /****^ HISTORY COMMENTS: 11 6* 1) change(80-11-19,JRDavis), approve(), audit(), install(): 11 7* Created file to declare structure for (get set)_editing_chars 11 8* control order of tty_. 11 9* 2) change(85-10-16,Negaret), approve(87-06-16,MCR7584), 11 10* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 11 11* Add redisplay char (version 3). 11 12* END HISTORY COMMENTS */ 11 13 11 14 11 15 dcl 1 editing_chars aligned based (editing_chars_ptr), 11 16 2 version fixed bin, 11 17 2 erase char (1) unaligned, 11 18 2 kill char (1) unaligned, 11 19 2 redisplay char (1) unaligned; 11 20 11 21 dcl editing_chars_version_2 fixed bin internal static init (2); 11 22 dcl editing_chars_version_3 fixed bin internal static init (3); 11 23 dcl editing_chars_ptr pointer; 11 24 11 25 /* END INCLUDE FILE tty_editing_chars.incl.pl1 */ 2399 2400 12 1 /* BEGIN INCLUDE FILE ... tty_convert.incl.pl1 */ 12 2 12 3 /* tty_ conversion tables */ 12 4 /* Created 11/3/75 by Robert S. Coren */ 12 5 /* Info structures added 5/19/77 by Robert S. Coren */ 12 6 /* Length of cv_trans changed from 128 to 256 05/03/78 by Robert Coren */ 12 7 /* conversion table mnemonics added JRDavis 21 Aug 80 */ 12 8 /* fix special_chars_struc to have good refers Fri 13 Feb 81 JRDavis */ 12 9 12 10 12 11 /****^ HISTORY COMMENTS: 12 12* 1) change(85-12-01,Negaret), approve(87-07-23,MCR7742), 12 13* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 12 14* Added INPUT_CONVERT_DSA_CR_PROCESSING constant. 12 15* 2) change(88-01-22,Brunelle), approve(88-01-22,MCR7813), 12 16* audit(88-10-05,Blair), install(88-10-17,MR12.2-1171): 12 17* Expand c_chars definition from 3 chars to 15. Change SPECIAL_VERSION 12 18* from 1 to 2. Add version variable to get_special_info_struc and define 12 19* SPECIAL_INFO_STRUCT_VERSION_1. 12 20* END HISTORY COMMENTS */ 12 21 12 22 12 23 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 12 24 12 25 12 26 dcl 1 special_chars aligned based, /* table of special character sequences */ 12 27 2 nl_seq aligned like c_chars, /* new-line sequence */ 12 28 2 cr_seq aligned like c_chars, /* carriage-return sequence */ 12 29 2 bs_seq aligned like c_chars, /* backspace sequence */ 12 30 2 tab_seq aligned like c_chars, /* horizontal tab sequence */ 12 31 2 vt_seq aligned like c_chars, /* vertical tab sequence */ 12 32 2 ff_seq aligned like c_chars, /* form-feed sequence */ 12 33 2 printer_on aligned like c_chars, /* printer-on sequence */ 12 34 2 printer_off aligned like c_chars, /* printer_off sequence */ 12 35 2 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 12 36 2 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 12 37 2 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 12 38 2 escape_length fixed bin, /* number of escape sequences */ 12 39 2 not_edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 12 40 /* use in ^edited mode */ 12 41 2 edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 12 42 /* use in edited mode */ 12 43 2 input_escapes aligned, 12 44 3 len fixed bin (8) unaligned, /* length of string */ 12 45 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned, 12 46 /* escape sequence characters */ 12 47 2 input_results aligned, 12 48 3 pad bit (9) unaligned, /* so that strings will look the same */ 12 49 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned; 12 50 /* results of escape sequences */ 12 51 12 52 12 53 dcl c_chars_ptr ptr; 12 54 dcl 1 c_chars based (c_chars_ptr) aligned, 12 55 2 count fixed bin (8) unaligned, 12 56 2 chars (15) char (1) unaligned; 12 57 12 58 dcl sc_escape_len fixed bin; /* count of output escapes to allocate in special_chars */ 12 59 dcl sc_input_escape_len fixed bin; /* count of input escapes to allocate in special_chars */ 12 60 12 61 12 62 dcl 1 cv_trans based aligned, /* conversion/translation table format */ 12 63 2 value (0:255) fixed bin (8) unal; 12 64 12 65 12 66 dcl 1 delay based aligned, /* delay counts for output */ 12 67 2 vert_nl fixed bin, 12 68 2 horz_nl float bin, 12 69 2 const_tab fixed bin, 12 70 2 var_tab float bin, 12 71 2 backspace fixed bin, 12 72 2 vt_ff fixed bin; 12 73 12 74 /* info structures used with orders */ 12 75 12 76 dcl 1 special_chars_struc aligned based, 12 77 2 version fixed bin, 12 78 2 default fixed bin, /* non-zero indicates use default */ 12 79 2 special_chars, /* same as level-1 above */ 12 80 /* has to be spelled out instead of using like */ 12 81 /* because of refer options */ 12 82 3 nl_seq aligned like c_chars, /* new-line sequence */ 12 83 3 cr_seq aligned like c_chars, /* carriage-return sequence */ 12 84 3 bs_seq aligned like c_chars, /* backspace sequence */ 12 85 3 tab_seq aligned like c_chars, /* horizontal tab sequence */ 12 86 3 vt_seq aligned like c_chars, /* vertical tab sequence */ 12 87 3 ff_seq aligned like c_chars, /* form-feed sequence */ 12 88 3 printer_on aligned like c_chars, /* printer-on sequence */ 12 89 3 printer_off aligned like c_chars, /* printer_off sequence */ 12 90 3 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 12 91 3 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 12 92 3 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 12 93 3 escape_length fixed bin, /* number of escape sequences */ 12 94 3 not_edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 12 95 /* use in ^edited mode */ 12 96 3 edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 12 97 /* use in edited mode */ 12 98 3 input_escapes aligned, 12 99 4 len fixed bin (8) unaligned, /* length of string */ 12 100 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned, 12 101 /* escape sequence characters */ 12 102 3 input_results aligned, 12 103 4 pad bit (9) unaligned, /* so that strings will look the same */ 12 104 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned; 12 105 /* results of escape sequences */ 12 106 12 107 dcl 1 cv_trans_struc aligned based, /* all conversion/translation tables */ 12 108 2 version fixed bin, 12 109 2 default fixed bin, /* as above */ 12 110 2 cv_trans like cv_trans; 12 111 12 112 dcl 1 delay_struc aligned based, 12 113 2 version fixed bin, 12 114 2 default fixed bin, /* as above */ 12 115 2 delay like delay; 12 116 12 117 dcl 1 get_special_info_struc based aligned, /* get_special order */ 12 118 2 version char (8), 12 119 2 area_ptr pointer, 12 120 2 table_ptr pointer; 12 121 12 122 dcl SPECIAL_INFO_STRUCT_VERSION_1 12 123 char (8) int static options (constant) init ("sisv1000"); 12 124 dcl SPECIAL_VERSION fixed bin int static options (constant) init (1); 12 125 dcl SPECIAL_VERSION_2 fixed bin int static options (constant) init (2); 12 126 dcl DELAY_VERSION fixed bin int static options (constant) init (1); 12 127 dcl CV_TRANS_VERSION fixed bin int static options (constant) init (2); 12 128 12 129 dcl CV_TRANS_SIZE (2) fixed bin int static options (constant) init (127, 255); 12 130 /* indexed by version number */ 12 131 12 132 12 133 /* values for input and output conversion tables */ 12 134 12 135 dcl ( 12 136 INPUT_CONVERT_ORDINARY init (0), 12 137 INPUT_CONVERT_BREAK init (1), 12 138 INPUT_CONVERT_ESCAPE init (2), 12 139 INPUT_CONVERT_DISCARD init (3), 12 140 INPUT_CONVERT_FORMFEED init (4), 12 141 INPUT_CONVERT_PRECEDENCE_DISCARD 12 142 init (5), 12 143 INPUT_CONVERT_DSA_CR_PROCESSING 12 144 init (6) 12 145 ) fixed bin (8) unaligned internal static options (constant); 12 146 12 147 dcl ( 12 148 OUTPUT_CONVERT_ORDINARY init (0), 12 149 OUTPUT_CONVERT_NEWLINE init (1), 12 150 OUTPUT_CONVERT_CR init (2), 12 151 OUTPUT_CONVERT_HT init (3), 12 152 OUTPUT_CONVERT_BS init (4), 12 153 OUTPUT_CONVERT_VT init (5), 12 154 OUTPUT_CONVERT_FF init (6), 12 155 OUTPUT_CONVERT_OCTAL init (7), 12 156 OUTPUT_CONVERT_RRS init (8), 12 157 OUTPUT_CONVERT_BRS init (9), 12 158 OUTPUT_CONVERT_NO_MOTION init (10), 12 159 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION 12 160 init (11), 12 161 OUTPUT_CONVERT_DONT_SEND init (12), 12 162 OUTPUT_CONVERT_NOT_USED_13 12 163 init (13), 12 164 OUTPUT_CONVERT_NOT_USED_14 12 165 init (14), 12 166 OUTPUT_CONVERT_NOT_USED_15 12 167 init (15), 12 168 OUTPUT_CONVERT_NOT_USED_16 12 169 init (16), 12 170 OUTPUT_CONVERT_FIRST_SPECIAL 12 171 init (17) 12 172 ) fixed bin (8) unaligned internal static options (constant); 12 173 12 174 /* END INCLUDE FILE ... tty_convert.incl.pl1 */ 2401 2402 13 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 13 2 13 3 /* Written 05/04/78 by C. D. Tavares */ 13 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 13 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 13 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 13 7 13 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 13 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 13 10 iox_$close entry (pointer, fixed bin (35)), 13 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 13 12 iox_$delete_record entry (pointer, fixed bin (35)), 13 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 13 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 13 15 iox_$err_not_attached entry options (variable), 13 16 iox_$err_not_closed entry options (variable), 13 17 iox_$err_no_operation entry options (variable), 13 18 iox_$err_not_open entry options (variable), 13 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 13 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 13 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 13 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 13 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 13 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 13 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 13 28 iox_$propagate entry (pointer), 13 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 13 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 13 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 13 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 13 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 13 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 13 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 13 40 13 41 dcl (iox_$user_output, 13 42 iox_$user_input, 13 43 iox_$user_io, 13 44 iox_$error_output) external static pointer; 13 45 13 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 2403 2404 14 1 /* BEGIN INCLUDE FILE mode_string_info.incl.pl1 */ 14 2 14 3 /* Structure for parse_mode_string_ JRDavis 20 October 1980 14 4* Last modified 12 January 1981 by J. Spencer Love for version 2, make char_value varying string */ 14 5 14 6 declare mode_value_ptr ptr, 14 7 number_of_modes fixed bin; 14 8 14 9 declare 1 mode_string_info aligned based (mode_string_info_ptr), 14 10 2 version fixed bin, 14 11 2 number fixed bin, 14 12 2 modes (number_of_modes refer (mode_string_info.number)) like mode_value; 14 13 14 14 declare mode_string_info_ptr ptr; 14 15 14 16 declare 1 mode_value aligned based (mode_value_ptr), 14 17 2 version fixed bin, 14 18 2 mode_name char (32) unaligned, 14 19 2 flags, 14 20 3 boolean_valuep bit (1) unaligned, 14 21 3 numeric_valuep bit (1) unaligned, 14 22 3 char_valuep bit (1) unaligned, 14 23 3 boolean_value bit (1) unaligned, 14 24 3 pad1 bit (32) unaligned, 14 25 2 numeric_value fixed bin (35), 14 26 2 char_value char (32) varying, 14 27 2 code fixed bin (35), 14 28 2 pad2 bit (36); 14 29 14 30 declare mode_string_info_version_2 fixed bin static options (constant) initial (2), 14 31 mode_value_version_3 fixed bin static options (constant) initial (3); 14 32 14 33 /* END INCLUDE FILE mode_string_info.incl.pl1 */ 2405 2406 15 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 15 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 15 3 15 4 /* format: style3 */ 15 5 15 6 declare window_$bell entry (pointer, fixed binary (35)); 15 7 declare window_$clear_region 15 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 15 9 declare window_$clear_to_end_of_line 15 10 entry (pointer, fixed binary (35)); 15 11 declare window_$clear_to_end_of_window 15 12 entry (pointer, fixed binary (35)); 15 13 declare window_$clear_window 15 14 entry (pointer, fixed binary (35)); 15 15 declare window_$delete_chars 15 16 entry (pointer, fixed binary, fixed binary (35)); 15 17 declare window_$get_cursor_position 15 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 15 19 15 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 15 21 15 22 declare window_$get_echoed_chars 15 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 15 24 fixed binary (35)); 15 25 declare window_$get_unechoed_chars 15 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 15 27 fixed binary (35)); 15 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 15 29 declare window_$overwrite_text 15 30 entry (pointer, character (*), fixed binary (35)); 15 31 declare window_$position_cursor 15 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 15 33 15 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 15 35 15 36 declare window_$position_cursor_rel 15 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 15 38 15 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 15 40* code); */ 15 41 15 42 declare window_$scroll_region 15 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 15 44 declare window_$sync entry (pointer, fixed binary (35)); 15 45 15 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 15 47 15 48 declare window_$write_raw_text 15 49 entry (pointer, character (*), fixed binary (35)); 15 50 15 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 15 52 15 53 declare window_$write_sync_read 15 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 15 55 character (1) var, fixed binary (35)); 15 56 15 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 15 58 15 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 15 60 15 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 15 62 15 63 declare window_$change_column 15 64 entry (pointer, fixed binary, fixed binary (35)); 15 65 15 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 15 67 declare ( 15 68 window_$get_one_unechoed, 15 69 window_$get_one_unechoed_char 15 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 15 71 15 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 15 73 15 74 declare window_$destroy entry (pointer, fixed binary (35)); 15 75 15 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 15 77 15 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 15 79* buffer_len, n_returned, code); */ 15 80 15 81 15 82 /* end include file window_dcls.incl.pl1 */ 2407 2408 16 1 /* BEGIN INCLUDE FiLE ... terminal_type_data.incl.pl1 */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(77-05-19,JStern), approve(), audit(), install(): 16 6* Created 16 7* Modified 8/14/79 by Robert Coren to convert to version 2 by adding 16 8* flow control parameters 16 9* 2) change(87-03-09,LJAdams), approve(87-04-03,MCR7646), 16 10* audit(87-05-05,Gilcrease), install(87-08-04,MR12.1-1056): 16 11* Change the ttd_version to ttd_version_3. Add the protocol field. 16 12* END HISTORY COMMENTS */ 16 13 16 14 16 15 dcl 1 terminal_type_data aligned based (ttdp), /* info structure for set_terminal_data order */ 16 16 2 version fixed bin, /* structure version */ 16 17 2 old_type fixed bin, /* old terminal type number, -1 => none */ 16 18 2 name char (32) unaligned, /* terminal type name */ 16 19 2 tables, 16 20 3 input_tr_ptr ptr, /* input translation table ptr */ 16 21 3 output_tr_ptr ptr, /* output translation table ptr */ 16 22 3 input_cv_ptr ptr, /* input conversion table ptr */ 16 23 3 output_cv_ptr ptr, /* output conversion table ptr */ 16 24 3 special_ptr ptr, /* special chars table ptr */ 16 25 3 delay_ptr ptr, /* delay table ptr */ 16 26 2 editing_chars unaligned, 16 27 3 erase char (1) unaligned, 16 28 3 kill char (1) unaligned, 16 29 2 framing_chars unaligned, 16 30 3 frame_begin char (1) unaligned, 16 31 3 frame_end char (1) unaligned, 16 32 2 flags unal, 16 33 3 keyboard_locking bit (1), /* ON to request keyboard locking and unlocking */ 16 34 3 input_timeout bit (1), 16 35 3 output_block_acknowledge bit (1), 16 36 3 mbz bit (15), 16 37 2 line_delimiter char (1) unal, 16 38 2 mbz bit (9) unal, 16 39 16 40 /* the remainder of this structure is only present if version is 2 or more */ 16 41 16 42 2 flow_control_chars unal, 16 43 3 input_suspend char (1), 16 44 3 input_resume char (1), 16 45 3 output_suspend_etb char (1), 16 46 3 output_resume_ack char (1), 16 47 2 output_buffer_size fixed bin, 16 48 16 49 /* the remainder of this structure is only present if version is 3 or more */ 16 50 2 protocol fixed bin; /* 0=NONE; 1=MOWSE */ 16 51 16 52 16 53 dcl ttdp ptr; /* ptr to terminal_type_data structure */ 16 54 dcl ttd_version_3 fixed bin int static options (constant) init (3); 16 55 /* current version of structure */ 16 56 16 57 16 58 /* END INCLUDE FILE ... terminal_type_data.incl.pl1 */ 2409 2410 17 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 17 2 17 3 /* Created 5/25/77 by J. Stern */ 17 4 17 5 17 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 17 7 2 version fixed bin, /* version number of this sturcture */ 17 8 2 id char (4) unaligned, /* terminal id from answerback */ 17 9 2 term_type char (32) unaligned, /* terminal type name */ 17 10 2 line_type fixed bin, /* line type number */ 17 11 2 baud_rate fixed bin, 17 12 2 reserved (4) fixed bin; /* reserved for future use */ 17 13 17 14 17 15 dcl terminal_info_ptr ptr; 17 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 17 17 17 18 17 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 2411 2412 2413 end wioctl_; 2414 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/10/89 1200.0 wioctl_.pl1 >spec>install>1041>wioctl_.pl1 1295 1 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.incl.pl1 2227 2 03/12/85 0930.8 tc_operations_.incl.pl1 >ldd>include>tc_operations_.incl.pl1 2229 3 08/11/88 2015.0 tty_read_status_info.incl.pl1 >ldd>include>tty_read_status_info.incl.pl1 2392 4 07/24/86 2051.7 window_io_attach_data_.incl.pl1 >ldd>include>window_io_attach_data_.incl.pl1 4-168 5 09/12/84 0916.7 window_editor_values.incl.pl1 >ldd>include>window_editor_values.incl.pl1 4-169 6 09/12/84 0916.7 window_status.incl.pl1 >ldd>include>window_status.incl.pl1 4-170 7 03/27/82 0429.7 terminal_capabilities.incl.pl1 >ldd>include>terminal_capabilities.incl.pl1 2393 8 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 2395 9 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 2397 10 09/12/84 0916.7 tc_desk_info_.incl.pl1 >ldd>include>tc_desk_info_.incl.pl1 2399 11 08/06/87 0913.5 tty_editing_chars.incl.pl1 >ldd>include>tty_editing_chars.incl.pl1 2401 12 10/18/88 1210.6 tty_convert.incl.pl1 >ldd>include>tty_convert.incl.pl1 2403 13 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 2405 14 03/19/81 1206.8 mode_string_info.incl.pl1 >ldd>include>mode_string_info.incl.pl1 2407 15 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.incl.pl1 2409 16 08/06/87 0913.5 terminal_type_data.incl.pl1 >ldd>include>terminal_type_data.incl.pl1 2411 17 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. BACKWARD_DELETE_CHARACTER constant fixed bin(17,0) initial dcl 5-13 ref 658 689 BUILTIN_INFO_DIR 000054 constant char(168) initial packed unaligned dcl 5-138 ref 1250 BUILTIN_INFO_ENTRY 000044 constant char(32) initial packed unaligned dcl 5-139 ref 1249 CV_TRANS_SIZE 000020 constant fixed bin(17,0) initial array dcl 12-129 ref 924 949 CV_TRANS_VERSION constant fixed bin(17,0) initial dcl 12-127 ref 916 933 Code parameter fixed bin(35,0) dcl 120 set ref 242 257* 258 285* 286 357* 386* 392 399* 415* 416 451* 452 460* 486* 494* 496 499* 500 503 590* 592 612* 716* 739* 807* 919* 936* 941* 942 1003 1028* 1029 1051* 1061* 1540* 1793* 1827* 1896* 1914* 1922* 1968* 1974* 1991* 2016* 2039* 2056* 2117* 2242* 2243 2258* 2276* 2342* DEL constant char(1) initial packed unaligned dcl 169 ref 653 663 684 702 1175 EC 000276 automatic structure level 1 dcl 1310 set ref 1761 1761 1770 1770 EXTERNAL_ROUTINE constant fixed bin(17,0) initial dcl 5-13 ref 1080 1085 1122 1127 1205 1233 1244 1571 1581 1590 1603 1886 1981 HIGHEST_BUILTIN_ROUTINE_VALUE constant fixed bin(17,0) initial dcl 5-13 ref 1080 1122 2006 HIGHEST_NUMARG_ACTION_VALUE constant fixed bin(17,0) initial dcl 5-143 ref 1085 1127 2029 Info_ptr parameter pointer dcl 120 set ref 392 407* 410* 415* 420 422 423 425 427 430 431 437 447 602 610 727 737 752 763 774 780 787 804 820 828 836 843 850 876 915 932 993 994 994 995 996 1000 1000 1001 1004 1005 1014 1042 1051* 1054 1057* 1061* 2099 2246 2247 2277 2281 2285 2289 2293 2297 2301 2305 2309 2313 2317 2321 2323 2328 2332 2335 2337 Iocb_ptr parameter pointer dcl 120 set ref 242 285* 392 396* 399* 410 498 553* 554* 559* 561* 590* 716* 1051* 2116 KILL_TO_BEGINNING_OF_LINE constant fixed bin(17,0) initial dcl 5-13 ref 668 707 MHI 000146 automatic structure level 1 dcl 1305 set ref 1359 1359 1369 1369 MORE_MODE_CLEAR constant fixed bin(17,0) initial dcl 4-106 ref 294 MORE_MODE_FOLD constant fixed bin(17,0) initial dcl 4-106 ref 296 MORE_MODE_SCROLL constant fixed bin(17,0) initial dcl 4-106 ref 290 586 MORE_MODE_WRAP constant fixed bin(17,0) initial dcl 4-106 ref 292 594 MPI 000203 automatic structure level 1 dcl 1307 set ref 1470 1470 1480 1480 MRI 000160 automatic structure level 1 dcl 1306 set ref 1421 1421 1431 1431 New_modes parameter char packed unaligned dcl 120 set ref 242 255 257* OP_READ_STATUS constant fixed bin(17,0) initial dcl 2-120 ref 2237 OUTPUT_CONVERT_OCTAL constant fixed bin(8,0) initial packed unaligned dcl 12-147 ref 945 967 976 OUTPUT_CONVERT_ORDINARY constant fixed bin(8,0) initial packed unaligned dcl 12-147 ref 967 Old_modes parameter char packed unaligned dcl 120 set ref 242 247* 248* Order parameter char packed unaligned dcl 120 set ref 392 396 399 402 404 407 410 413 415* 435 445 600 608 725 735 750 760 769 772 778 785 802 815 818 826 834 841 848 874 911 930 981 1010 1048 1051 1051 1051* 1054 1057 1061* PASS constant fixed bin(17,0) initial dcl 5-143 ref 1925 PREFIX 030571 constant fixed bin(17,0) initial dcl 1169 ref 1191 1199 P_string parameter varying char dcl 2163 ref 2160 2167 2171 2173 2174 2174 2176 2176 2176 2176 REQUEST_SENTINEL 000000 constant char(4) initial dcl 2-20 ref 2234 SELF_INSERT constant fixed bin(17,0) initial dcl 5-13 ref 653 663 684 702 1175 SPACE constant char(1) initial packed unaligned dcl 168 ref 646 646 653 663 677 684 695 702 1175 SPECIAL_INFO_STRUCT_VERSION_1 000022 constant char(8) initial packed unaligned dcl 12-122 ref 993 1026 SPECIAL_VERSION constant fixed bin(17,0) initial dcl 12-124 ref 1001 1018 SPECIAL_VERSION_2 constant fixed bin(17,0) initial dcl 12-125 ref 995 1018 1037 TCI 000231 automatic structure level 1 dcl 1308 set ref 1639 1639 1649 1649 UNDEFINED constant fixed bin(17,0) initial dcl 5-13 ref 655 665 686 704 1188 WHITE_SPACE 003300 constant char(5) initial packed unaligned dcl 170 ref 612 612 WSI 000274 automatic structure level 1 dcl 1309 set ref 1664 1664 1715 1715 W_STATUS_ASYNC_EVENT constant bit(36) initial dcl 6-17 ref 1673 1678 1698 W_STATUS_RECONNECTION constant bit(36) initial dcl 6-17 ref 1673 1678 1704 W_STATUS_SCREEN_INVALID constant bit(36) initial dcl 6-17 ref 1673 1678 1696 W_STATUS_TTP_CHANGE constant bit(36) initial dcl 6-17 ref 1673 1678 1701 a_code parameter fixed bin(35,0) dcl 2256 ref 2253 2258 a_info_ptr parameter pointer dcl 1068 ref 1065 1070 action based fixed bin(17,0) array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1080 1080 1085 1095* 1886* 1981* 2018* action parameter fixed bin(17,0) dcl 1154 in procedure "set_key_binding" set ref 1150 1175 1203 1205 1215 1231* 1233 1237 1240 1244 action based fixed bin(17,0) array level 3 in structure "lekbi" dcl 619 in begin block on line 618 set ref 653* 655* 658* 663* 665* 668* 684* 686* 689* 702* 704* 707* action based fixed bin(17,0) array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 ref 1571 1581 1590 1590 1603 action based fixed bin(17,0) array level 3 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" set ref 1122 1122 1127 1139* actual_iocb_ptr 12 based pointer level 2 dcl 9-6 ref 410 498 1324 2116 addr builtin function dcl 164 ref 285 285 451 451 494 494 497 497 499 499 590 590 716 716 996 1028 1028 1037 1359 1359 1369 1369 1421 1421 1431 1431 1470 1470 1480 1480 1561 1561 1639 1639 1649 1649 1664 1664 1715 1715 1761 1761 1770 1770 1959 1977 2203 2207 2242 2242 2281 2281 2285 2285 2289 2289 2293 2293 2297 2297 2301 2301 2305 2305 2309 2309 2313 2313 2317 2317 2321 2321 2328 2328 2332 2332 2356 2356 2356 2358 2358 2358 2360 2360 2360 2362 2362 2362 2364 2364 2364 2366 2366 2366 2368 2368 2368 2370 2370 2370 2372 2372 2372 2374 2374 2374 2376 2376 2376 2378 2380 2380 2380 2382 2382 2382 2385 2386 af_returnl 34 based fixed bin(17,0) level 2 dcl 1-10 ref 1330 1376 1388 1437 1486 1581 1590 1597 1655 1671 1673 1773 af_returnp 32 based pointer level 2 dcl 1-10 ref 1330 1376 1388 1437 1486 1581 1590 1597 1655 1671 1673 1773 area_ptr based pointer level 2 in structure "gsi_old" dcl 985 in procedure "wioctl_" ref 1000 area_ptr 2 000236 automatic pointer level 2 in structure "auto_gsi" dcl 1025 in begin block on line 1024 set ref 1027* area_ptr 2 based pointer level 2 in structure "gsi" dcl 982 in procedure "wioctl_" ref 994 arg based varying char dcl 1944 set ref 1962 1965 1965 1965 1965 1965 1965 1967* 1972* 1980 2001 2024 2046 2048 2050 arg_index parameter fixed bin(17,0) dcl 1863 in procedure "process_key_bindings" set ref 1860 1872 1877 1883* 1883 1885 1888 1891 1900* 1900 1903 1903 1903* arg_index parameter fixed bin(17,0) dcl 1811 in procedure "count_key_binding_args" set ref 1808 1817 1819 1820 1822 1830 1833* 1833 1835 1835* 1835 1841 1841 1845* 1845 1846 1846 arg_index 000124 automatic fixed bin(17,0) dcl 1302 in procedure "process_io_call" set ref 1695* 1696 1698 1698 1701 1701 1704 1707* arg_index parameter fixed bin(17,0) dcl 1940 in procedure "process_control_args" set ref 1937 1957 1959 1960 1971 1977 1978 2060* 2060 arg_len 000550 automatic fixed bin(21,0) dcl 1946 set ref 1960* 1967 1972 arg_ptr 000552 automatic pointer dcl 1948 set ref 1959* 1962 1965 1965 1965 1965 1965 1965 1967 1972 1980 2001 2024 2046 2048 2050 args 44 based varying char array level 2 dcl 1-10 set ref 1350 1352* 1417 1418 1419 1420 1469 1550 1559 1563 1636 1637 1696 1698 1698 1701 1701 1704 1707* 1735 1742 1750 1751 1752 1754 1820 1822* 1830 1835 1841 1846 1877 1885 1888 1891* 1903 1959 1960 1977 1978 async_count 1 based fixed bin(17,0) level 2 dcl 4-29 ref 578 attach_data based structure level 1 dcl 4-29 attach_data_area based area(1024) dcl 4-113 ref 507 584 632 635 870 1274 1553 1556 1613 attach_data_ptr 16 based pointer level 2 in structure "iocb" dcl 9-6 in procedure "wioctl_" ref 2116 attach_data_ptr 000144 automatic pointer dcl 4-28 in procedure "wioctl_" set ref 248 248 248 248 248 248 248 248 248 248 248 248 290 292 294 296 300 302 305 310 315 317 322 323 323 324 324 328 329 329 335 336 337 337 338 338 339 339 341 342 342 343 343 344 348 350 352 402 404 420 430 431 439 440 441 442 488 500 507 507 507 507 507 522 524 525 527 528 530 532 535 539 540 542 543 545 545 559 559 559 561 567 570 570 570 570 570 570 575 576 578 579 580 584 584 584 584 586 594 604 605 653 653 656 661 663 663 666 671 684 684 687 692 702 702 705 710 729 730 731 732 743 744 745 746 754 755 756 765 765 766 776 782 791 792 798 799 806 810 815 822 823 830 831 838 845 868 869 925 945 950 960 960 966 967 972 976 991 992 996 1040 1041 1054 1057 1179 1218 1264 2116* 2118 2133 2133 2133 2235 2238 2239 2279 2281 2283 2285 2287 2289 2291 2293 2295 2297 2299 2301 2303 2305 2307 2309 2311 2313 2315 2317 2319 2321 2323 2325 2326 2328 2330 2332 2335 2337 2379 attach_description 2 based varying char(128) level 2 dcl 4-29 set ref 570* auditor_iocb_ptr 452 based pointer level 2 dcl 4-29 set ref 1054* 1057 auto_capabilities_info 000107 automatic structure level 1 dcl 144 set ref 285 285 451 451 590 590 auto_gsi 000236 automatic structure level 1 unaligned dcl 1025 set ref 1028 1028 bad_prefix 000132 stack reference condition dcl 892 ref 893 1224 bin builtin function dcl 164 ref 2124 2146 2148 2154 binding_count 2 based fixed bin(17,0) level 2 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 632 635* 714 714 714 714 720 897 1075 1094 1516* 1517 1528 1553 1556* 1613 1880 1880 1880 1880 binding_count parameter fixed bin(17,0) dcl 1811 in procedure "count_key_binding_args" set ref 1808 1831* 1831 binding_count 2 based fixed bin(17,0) level 2 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" ref 1117 1138 binding_count 2 based fixed bin(17,0) level 2 in structure "lekbi" dcl 619 in begin block on line 618 set ref 640* 647* 647 653 655 656 658 659 663 665 666 668 669 678* 678 684 686 687 689 690 696* 696 702 704 705 707 708 binding_index parameter fixed bin(17,0) dcl 1941 in procedure "process_control_args" ref 1937 1981 1983 2018 2041 2046 2048 2051 2051 binding_index parameter fixed bin(17,0) dcl 1864 in procedure "process_key_bindings" set ref 1860 1877 1886 1888 1903* 1909 1925 1928* 1928 binding_index 000106 automatic fixed bin(17,0) dcl 142 in procedure "wioctl_" set ref 897* 898 898 898 898 898 898 898* 1075* 1076 1080 1080 1085 1085 1085* 1094* 1095 1095 1095 1095 1095 1095 1095* 1117* 1118 1122 1122 1127 1127 1127* 1138* 1139 1139 1139 1139* bindings 4 based structure array level 2 in structure "lekbi" dcl 619 in begin block on line 618 bindings 4 based structure array level 2 in structure "lekbi" dcl 1544 in begin block on line 1542 bindings 4 based structure array level 2 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" bindings 4 based structure array level 2 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" bit_string parameter bit packed unaligned dcl 2107 ref 2104 2109 black_ribbon_shift 11 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2374 black_ribbon_shift 13 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2317 black_ribbon_shift 44 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2317 2374 blank_info_path 000252 automatic structure level 1 packed packed unaligned dcl 1115 set ref 1139* boolean_value 11(03) parameter bit(1) level 3 packed packed unaligned dcl 274 ref 371 boolean_valuep 11 parameter bit(1) level 3 packed packed unaligned dcl 274 ref 369 bottom_line_change 000101 automatic fixed bin(17,0) dcl 513 set ref 537* break_table_info based structure level 1 dcl 8-76 break_table_info_version_1 003426 constant fixed bin(17,0) initial dcl 8-80 set ref 775* 781* break_table_ptr 000156 automatic pointer dcl 8-75 set ref 774* 775 776 780* 781 782 breaks 147 based bit(128) level 2 in structure "attach_data" packed packed unaligned dcl 4-29 in procedure "wioctl_" set ref 776* 782 breaks 1 based bit(1) array level 2 in structure "break_table_info" packed packed unaligned dcl 8-76 in procedure "wioctl_" set ref 776 782* bs_seq 10 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2289 2360 bs_seq 4 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2289 bs_seq 2 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2360 builtin_descriptions 000126 constant varying char(128) initial array dcl 5-105 ref 1240 1240 builtin_given 000536 automatic bit(1) level 2 packed packed unaligned dcl 1866 set ref 1899* 1908 1917 1994* 2020* builtin_index 000546 automatic fixed bin(17,0) dcl 1942 set ref 2006* 2007* 2018 builtin_routine_names 002576 constant char(32) initial array packed unaligned dcl 5-63 set ref 1237 1237 1590* 2007 by_name 12 000456 automatic structure level 2 dcl 2231 byte builtin function dcl 164 ref 960 967 972 976 2124 2146 2148 2150 2154 c parameter char(1) packed unaligned dcl 2144 in procedure "flat_rep" ref 2141 2146 2148 2150 2150 2152 2154 2156 c parameter char(1) dcl 2130 in procedure "set_break_table" set ref 2127 2133 2133 2133 2133* c parameter char(1) dcl 2123 in procedure "always_breaks" ref 2121 2124 2124 c_chars based structure level 1 dcl 12-54 c_chars_old based structure level 1 dcl 203 set ref 2281* 2281 2285* 2285 2289* 2289 2293* 2293 2297* 2297 2301* 2301 2305* 2305 2309* 2309 2313* 2313 2317* 2317 2321* 2321 2328* 2328 2332* 2332 2356* 2356 2358* 2358 2360* 2360 2362* 2362 2364* 2364 2366* 2366 2368* 2368 2370* 2370 2372* 2372 2374* 2374 2376* 2376 2380* 2380 2382* 2382 called_as_af 000122 automatic bit(1) packed unaligned dcl 1300 set ref 1326* 1329* 1376 1388 1437 1486 1580 1655 1670 1773 caller 000112 automatic char(32) packed unaligned dcl 1299 set ref 1334* 1342* 1352* 1360* 1371* 1384* 1403* 1410* 1422* 1433* 1462* 1471* 1482* 1529* 1563* 1628* 1640* 1651* 1666* 1707* 1729* 1736* 1743* 1762* 1789* 1822* 1891* 1909* 1918* 1967* 1972* 1986* 2012* 2035* 2055* caller_name 1 based char(32) level 2 dcl 1-10 ref 1334 can 66(04) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 317* capabilities_info based structure level 1 dcl 7-3 capabilities_info_version_1 constant fixed bin(17,0) initial dcl 7-17 ref 284 450 589 char 000346 automatic char(1) dcl 1160 set ref 1171* 1175 1175 1175* 1177* char_fix 000347 automatic fixed bin(9,0) dcl 1161 set ref 1183* 1186 1190 1191 1193 1196* 1199 1199 1203 1206 1207 1209 1210 1211 1211 1221* 1224 1227 1230* 1231 1234 1235 1237 1239 1240 1242 1243 1253 1253 char_idx 000100 automatic fixed bin(21,0) dcl 2165 set ref 2173* 2174 2174* char_index 000350 automatic fixed bin(17,0) dcl 1162 set ref 1182* 1183* 1220* 1221* char_value 13 parameter varying char(32) level 2 dcl 274 ref 283 283 292 294 296 377 char_valuep 11(02) parameter bit(1) level 3 packed packed unaligned dcl 274 ref 280 375 chars 2(09) based char(1) array level 4 packed packed unaligned dcl 207 set ref 2277 cleanup 000124 stack reference condition dcl 167 in procedure "wioctl_" ref 630 1022 1517 1527 1551 1612 cleanup 000106 stack reference condition dcl 520 in begin block on line 510 ref 524 clock builtin function dcl 164 ref 2236 code parameter fixed bin(35,0) dcl 1293 in procedure "process_io_call" set ref 1288 1322* 1350* 1351 1352* 1356* 1359* 1360 1360* 1362* 1369* 1370 1370 1371* 1372* 1375 1379* 1382* 1383 1384* 1385* 1421* 1422 1422* 1424* 1431* 1432 1433* 1434* 1470* 1471 1471* 1473* 1480* 1481 1482* 1483* 1526* 1529 1529* 1531* 1561* 1562 1563* 1572* 1573 1615* 1639* 1640 1640* 1642* 1649* 1650 1651* 1652* 1664* 1665 1666* 1667* 1715* 1761* 1762 1762* 1770* 1771 1782* 1888* 1890 1891* 1895* 1983* 1985 1986* 1990* 2051* 2054 2055* code parameter fixed bin(35,0) dcl 2191 in procedure "entry_var_to_string" set ref 2186 2203* 2204 2207* 2208 code_ptr based pointer level 2 dcl 2199 set ref 2203* 2207* codeptr builtin function dcl 164 ref 1350 1350 1888 1888 1983 1983 col 72 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 339 343* col 6 000456 automatic fixed bin(17,0) level 4 in structure "rqrs" dcl 2231 in procedure "read_status" set ref 2239* col_at_rawo 74 based fixed bin(17,0) level 3 dcl 4-29 set ref 339* 343 column 1 based fixed bin(17,0) level 3 dcl 8-25 set ref 441* 473 473* 476 476 491 543 column_origin 162 based fixed bin(17,0) level 3 dcl 4-29 set ref 441 543* 570* 2239 columns 1 based fixed bin(17,0) level 3 in structure "capabilities_info" dcl 7-3 in procedure "wioctl_" set ref 420 430* columns 160 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 248* 305 420 430 440 507 507 542* 570* 584 584 columns 1 000107 automatic fixed bin(17,0) level 3 in structure "auto_capabilities_info" dcl 144 in procedure "wioctl_" set ref 476 480 483 conversion_tct_table 206 based char(512) level 2 dcl 4-29 set ref 960* 967* 972* 976* conversion_type 000234 automatic fixed bin(17,0) dcl 956 set ref 966* 967 972 coords 5 000456 automatic structure level 3 dcl 2231 copy builtin function dcl 164 ref 976 count 34 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2307 count 40 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2311 count 14 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2291 count 30 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2303 count 10 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2287 count 4 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2283 count based fixed bin(8,0) array level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2330 count 44 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2315 count 20 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2295 count based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2279 count 55 based fixed bin(8,0) array level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2326 count 24 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2299 count 50 based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 2319 cr_seq 4 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2285 2358 cr_seq 1 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2358 cr_seq 3 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2285 ctl_arg_flag 000526 automatic bit(1) packed unaligned dcl 1815 set ref 1843* 1844 1846* 1848* ctl_char 66(09) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 350* cts based structure level 1 dcl 912 cts_ptr 000140 automatic pointer dcl 913 set ref 915* 916 916 924 925 932* 933 933 939 941* 949 950 current 157 based structure level 2 dcl 4-29 cursor_position 71 based structure level 2 dcl 4-29 cursor_valid 66(11) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 337 344* cv_entry_ 000100 constant entry external dcl 1320 ref 1350 1888 1983 cv_trans based structure level 1 dcl 12-62 in procedure "wioctl_" cv_trans 2 based structure level 2 in structure "cts" dcl 912 in procedure "wioctl_" cv_trans_idx 000233 automatic fixed bin(17,0) dcl 955 set ref 959* 960 960* 965* 966 967 972* cv_trans_struc based structure level 1 dcl 12-107 debug 66(01) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 302* default 1 based fixed bin(17,0) level 2 in structure "scs" dcl 1011 in procedure "wioctl_" ref 1023 default 1 based fixed bin(17,0) level 2 in structure "cts" dcl 912 in procedure "wioctl_" ref 939 delay based structure level 1 dcl 12-66 delete_chars 3(03) based bit(1) level 3 packed packed unaligned dcl 7-3 set ref 427* description based varying char(256) array level 3 in structure "lekbi" dcl 619 in begin block on line 618 set ref 714* description based varying char(256) array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1095* 1880* 2048* description 32 based varying char(256) array level 3 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1210* 1240 1242 description parameter varying char dcl 1157 in procedure "set_key_binding" set ref 1150 1210 1215 1240* 1242* description based varying char(256) array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 set ref 1581 1581 1590 1590 1597 1597 1603* desk_info 000114 automatic structure level 1 dcl 147 set ref 494 494 497 497 499 499 dispatch_table based structure level 1 dcl 4-155 set ref 870 1187 1274 1275* 1275 dispatch_table_ptr 176 based pointer level 2 dcl 4-29 set ref 868 869* 1179 1218 1264* edited 66(14) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 352* edited_escapes based structure array level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2382 edited_escapes based structure array level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2332 edited_escapes based structure array level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2332 2382 editing_chars based structure level 1 dcl 11-15 in procedure "wioctl_" editing_chars 144 based structure level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" editing_chars_ptr 000176 automatic pointer dcl 11-23 set ref 602* 603 604 605 610* 611 612 612 612 612 646 646 659 661 669 671 677 690 692 695 708 710 editing_chars_version_2 constant fixed bin(17,0) initial dcl 11-21 ref 1018 1757 2079 editing_chars_version_3 000010 internal static fixed bin(17,0) initial dcl 11-22 set ref 603* 611* 1753 1769 editor_routine parameter entry variable dcl 1156 in procedure "set_key_binding" set ref 1150 1206 1215 1234* editor_routine based entry variable array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 set ref 1572* editor_routine based entry variable array level 3 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" set ref 1139* editor_routine based entry variable array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1095* 1888* 1983* end_of_page 12 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2376 end_of_page 14 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2321 end_of_page 50 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2321 2376 entire_state 2 based bit(1) level 3 packed packed unaligned dcl 8-151 ref 881 entire_state_ptr 6 based pointer level 2 dcl 8-151 set ref 881* entry_name 000125 automatic char(65) packed unaligned dcl 1303 set ref 1382* 1388 1388 1390 1390 entry_point_name 000110 automatic char(32) packed unaligned dcl 2194 set ref 2207* 2211 entry_string parameter char packed unaligned dcl 2190 set ref 2186 2211* entry_variable based structure level 1 dcl 2199 erase 1 based char(1) level 2 in structure "editing_chars" packed packed unaligned dcl 11-15 in procedure "wioctl_" set ref 604* 612 612 646 659 661 677 690 692 erase 1 000276 automatic char(1) level 2 in structure "EC" packed packed unaligned dcl 1310 in procedure "process_io_call" set ref 1750* 1773* 1775* erase_char 144 based char(1) level 3 dcl 4-29 set ref 323* 604 653 653 656 661* 684 684 687 692* erkl 66(06) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 322* 323* 324* error 26 based entry variable level 2 dcl 1-10 ref 1338 1342 1352 1360 1371 1384 1396 1403 1410 1422 1433 1458 1462 1471 1482 1495 1529 1537 1563 1621 1628 1640 1651 1666 1690 1707 1724 1729 1736 1743 1762 1789 1822 1891 1909 1918 1967 1972 1986 2012 2035 2055 error_table_$bad_arg 000074 external static fixed bin(35,0) dcl 1317 set ref 1707* 1736* 1743* 2012* 2035* error_table_$bad_mode 000046 external static fixed bin(35,0) dcl 160 ref 357 error_table_$bad_mode_value 000036 external static fixed bin(35,0) dcl 149 ref 386 error_table_$bad_subr_arg 000034 external static fixed bin(35,0) dcl 149 set ref 860* 893* 1077* 1082* 1088* 1119* 1124* 1130* 2110* error_table_$badopt 000076 external static fixed bin(35,0) dcl 1318 set ref 1967* error_table_$inconsistent 000040 external static fixed bin(35,0) dcl 149 set ref 612 1918* error_table_$invalid_array_size 000044 external static fixed bin(35,0) dcl 149 ref 2342 error_table_$noarg 000072 external static fixed bin(35,0) dcl 1316 set ref 1822* 1909* 1972* error_table_$null_info_ptr 000042 external static fixed bin(35,0) dcl 149 set ref 887* 2100* error_table_$undefined_order_request 000070 external static fixed bin(35,0) dcl 1314 ref 1782 error_table_$unimplemented_version 000050 external static fixed bin(35,0) dcl 161 set ref 858* 919 936 1020* 1145* 2080* 2092* error_table_$wrong_no_of_args 000066 external static fixed bin(35,0) dcl 1312 set ref 1342* 1403* 1410* 1462* 1628* 1729* 1789* esc 66(05) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 328* 329* escape_length 56 based fixed bin(17,0) level 3 in structure "special_chars_struc" dcl 12-76 in procedure "wioctl_" set ref 994* 994 994 1035 1035 1042 1042 1042 1042 1042 1042 escape_length 56 based fixed bin(17,0) level 3 in structure "scs" dcl 1011 in procedure "wioctl_" set ref 1034 escape_length 15 based fixed bin(17,0) level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 1000* 1000 1000 1004 1004 1004 1004 1004 1004 2323* 2332 2335 2335 2335 2335 2335 2335 2335 2335 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2385 2385 2385 2385 2385 2385 2385 2385 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 escape_length 13 based fixed bin(17,0) level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" ref 2378 2382 escape_length 54 based fixed bin(17,0) level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 991 992 992 996 996 996 996 996 996 1036* 1036 1036 1037 1037 1037 1037 1037 1037 1040 1040 1040 1040 1040 1040 2323 2325 2330 2332 2335 2335 2335 2335 2335 2335 2335 2335 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2337 2378* 2379 2382 2385 2385 2385 2385 2385 2385 2385 2385 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 2386 event_channel 14 000456 automatic fixed bin(71,0) level 3 in structure "rqrs" dcl 2231 in procedure "read_status" set ref 2246 event_channel based fixed bin(71,0) level 2 in structure "tty_read_status_info" dcl 3-17 in procedure "read_status" set ref 2246* expand_pathname_$add_suffix 000102 constant entry external dcl 1954 ref 2051 extent 3 based structure level 2 unaligned dcl 8-25 external_given 0(01) 000536 automatic bit(1) level 2 packed packed unaligned dcl 1866 set ref 1898* 1908 1925 1993* 2021* ff_seq 7 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2301 ff_seq 24 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2301 2366 ff_seq 5 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2366 first_column 2 000114 automatic fixed bin(17,0) level 2 dcl 147 set ref 491* first_row 000114 automatic fixed bin(17,0) level 2 dcl 147 set ref 489* flag parameter bit(1) packed unaligned dcl 2131 ref 2127 2133 flags 1 based structure level 2 in structure "more_handler_info" packed packed unaligned dcl 8-83 in procedure "wioctl_" flags 3 000107 automatic structure level 2 in structure "auto_capabilities_info" dcl 144 in procedure "wioctl_" flags 3 based structure level 2 in structure "capabilities_info" dcl 7-3 in procedure "wioctl_" flags 2 000100 automatic structure level 2 in structure "sekbi" dcl 620 in begin block on line 618 flags 2 based structure level 2 in structure "get_editor_key_bindings_info" dcl 8-151 in procedure "wioctl_" flags 11 parameter structure level 2 in structure "mv" dcl 274 in procedure "set_mode" flags 000536 automatic structure level 1 dcl 1866 in procedure "process_key_bindings" set ref 1874* flags 2 based structure level 2 in structure "set_editor_key_bindings_info" dcl 8-162 in procedure "wioctl_" flags 2 000100 automatic structure level 2 in structure "gekbi" dcl 1543 in begin block on line 1542 set ref 1547* flags 10 000456 automatic structure level 3 in structure "rqrs" dcl 2231 in procedure "read_status" set ref 2240* flags 66 based structure level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" flat_string 000100 automatic varying char initial dcl 2171 set ref 2171* 2174* 2174 2176* 2176 2177 force_mode 000105 automatic bit(1) dcl 141 set ref 261* 276* 356 found 000556 automatic bit(1) packed unaligned dcl 1950 set ref 2004* 2006 2007* 2011 2027* 2029 2030* 2034 gekbi 000100 automatic structure level 1 dcl 1543 set ref 1561 1561 get_editor_key_bindings_info based structure level 1 dcl 8-151 get_editor_key_bindings_info_ptr 000172 automatic pointer dcl 8-159 set ref 876* 878 879 881 881 885 get_editor_key_bindings_info_version_1 000026 constant char(8) initial packed unaligned dcl 8-160 set ref 878* 1546 get_entry_name_ 000106 constant entry external dcl 2197 ref 2207 get_special_info_struc based structure level 1 dcl 12-117 get_system_free_area_ 000052 constant entry external dcl 4-115 ref 257 257 507 584 632 635 870 1027 1274 1553 1556 1613 gsi based structure level 1 dcl 982 gsi_area based area(1024) dcl 983 ref 994 gsi_area_old based area(1024) dcl 988 ref 1000 gsi_old based structure level 1 dcl 985 hbound builtin function dcl 164 ref 262 1276 2133 2277 hcs_$fs_get_path_name 000104 constant entry external dcl 2196 ref 2203 header 000456 automatic structure level 2 dcl 2231 height 4 based fixed bin(17,0) level 3 dcl 8-25 set ref 439* 466 469 490 534 539 i 000123 automatic fixed bin(17,0) dcl 1301 in procedure "process_io_call" set ref 1442* 1443 1443 1443 1443 1443 1445 1445 1445 1445 1445* i 000514 automatic fixed bin(17,0) dcl 2354 in procedure "copy_old_to_new_special_table" set ref 2379* 2380 2380 2382 2382* i 000502 automatic fixed bin(17,0) dcl 2273 in procedure "copy_new_to_old_special_table" set ref 2325* 2326 2328 2328 2330 2332 2332* ignore_status 66(13) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 522 524* 525* 567* index 000227 automatic fixed bin(17,0) dcl 923 in begin block on line 922 set ref 924* 925 925* index 000231 automatic fixed bin(17,0) dcl 948 in begin block on line 947 set ref 949* 950 950* index builtin function dcl 164 in procedure "wioctl_" ref 612 612 1820 1835 1841 1846 1885 1903 1962 info_dir based char(168) array level 4 in structure "line_editor_key_binding_info" packed packed unaligned dcl 8-129 in procedure "wioctl_" set ref 1880* 2051* info_dir 000252 automatic char(168) level 2 in structure "blank_info_path" packed packed unaligned dcl 1115 in procedure "update_key_bindings" set ref 1135* info_dir based char(168) array level 4 in structure "lekbi" packed packed unaligned dcl 619 in begin block on line 618 set ref 714* info_dir parameter char(168) level 2 in structure "info_path" packed packed unaligned dcl 1158 in procedure "set_key_binding" set ref 1246* 1250* info_dir based char(168) array level 4 in structure "lekbi" packed packed unaligned dcl 1544 in begin block on line 1542 set ref 1581* 1581* 1590* 1590* 1603* 1603* info_entry based char(32) array level 4 in structure "line_editor_key_binding_info" packed packed unaligned dcl 8-129 in procedure "wioctl_" set ref 1880* 2051* info_entry 52 000252 automatic char(32) level 2 in structure "blank_info_path" packed packed unaligned dcl 1115 in procedure "update_key_bindings" set ref 1135* info_entry based char(32) array level 4 in structure "lekbi" packed packed unaligned dcl 1544 in begin block on line 1542 set ref 1581 1581* 1581* 1590 1590* 1590* 1603 1603* 1603* info_entry 52 parameter char(32) level 2 in structure "info_path" packed packed unaligned dcl 1158 in procedure "set_key_binding" set ref 1245* 1249* info_entry based char(32) array level 4 in structure "lekbi" packed packed unaligned dcl 619 in begin block on line 618 set ref 714* info_entry 205 based char(32) array level 4 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1243 info_path based structure array level 3 in structure "line_editor_key_binding_info" packed packed unaligned dcl 8-129 in procedure "wioctl_" set ref 898* 1095* info_path 133 based structure array level 3 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1211* 1253 info_path based structure array level 3 in structure "lekbi" packed packed unaligned dcl 1544 in begin block on line 1542 info_path based structure array level 3 in structure "lekbi" packed packed unaligned dcl 619 in begin block on line 618 info_path parameter structure level 1 packed packed unaligned dcl 1158 in procedure "set_key_binding" set ref 1150 1211 1215 1253* input_escape_char 146 based char(1) level 3 dcl 4-29 set ref 329* input_escapes based structure level 3 in structure "scs" dcl 1011 in procedure "wioctl_" input_escapes based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2335* 2385 input_escapes based structure level 3 in structure "special_chars_struc" dcl 12-76 in procedure "wioctl_" input_escapes based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2335 2385* input_pending 2 based bit(1) level 2 dcl 3-17 set ref 2247* input_results based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2337 2386* input_results based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2337* 2386 insert_chars 3(01) based bit(1) level 3 packed packed unaligned dcl 7-3 set ref 423* insert_mode 3(02) based bit(1) level 3 packed packed unaligned dcl 7-3 set ref 425* io_call_af_ret based varying char dcl 1-25 set ref 1330* 1376* 1388* 1437* 1486* 1581* 1590* 1597* 1655* 1671* 1673* 1773* io_call_info based structure level 1 dcl 1-10 io_call_infop parameter pointer dcl 1-8 ref 1288 1330 1330 1333 1334 1337 1338 1341 1342 1350 1352 1352 1360 1371 1376 1376 1378 1384 1388 1388 1390 1395 1396 1402 1403 1409 1410 1417 1418 1419 1420 1422 1433 1437 1437 1448 1457 1458 1461 1462 1469 1471 1482 1486 1486 1488 1494 1495 1529 1536 1537 1550 1559 1563 1563 1581 1581 1590 1590 1597 1597 1603 1620 1621 1627 1628 1636 1637 1640 1651 1655 1655 1657 1666 1671 1671 1673 1673 1678 1689 1690 1695 1696 1698 1698 1701 1701 1704 1707 1707 1723 1724 1728 1729 1735 1736 1742 1743 1750 1751 1752 1754 1762 1773 1773 1775 1788 1789 1817 1819 1820 1822 1822 1830 1835 1841 1841 1846 1846 1872 1877 1885 1888 1891 1891 1903 1903 1909 1918 1957 1959 1960 1967 1971 1972 1977 1978 1986 2012 2035 2055 io_call_iocb parameter pointer dcl 1291 ref 1288 1324 io_call_order parameter char packed unaligned dcl 1292 ref 1288 1326 ioa_$rsnnl 000014 constant entry external dcl 133 ref 248 570 1376 1388 1437 1486 1581 1590 1597 1673 1773 iocb based structure level 1 dcl 9-6 iocb_ptr 000100 automatic pointer dcl 1297 set ref 1324* 1359* 1369* 1421* 1431* 1470* 1480* 1526* 1561* 1639* 1649* 1664* 1715* 1761* 1770* iox_$control 000054 constant entry external dcl 13-8 ref 285 415 451 494 497 499 590 716 769 941 1028 1061 1359 1369 1421 1431 1470 1480 1526 1561 1639 1649 1664 1715 1761 1770 2242 key based structure array level 2 dcl 4-155 set ref 1276 1276 key_binding_info_ptr 4 000100 automatic pointer level 2 in structure "sekbi" dcl 620 in begin block on line 618 set ref 626* 632 632 635* 637 640 647 647 653 653 655 655 656 656 658 658 659 659 663 663 665 665 666 666 668 668 669 669 678 678 684 684 686 686 687 687 689 689 690 690 696 696 702 702 704 704 705 705 707 707 708 708 714 714 714 714 718 719* key_binding_info_ptr 4 based pointer level 2 in structure "get_editor_key_bindings_info" dcl 8-151 in procedure "wioctl_" ref 885 key_binding_info_ptr 4 000100 automatic pointer level 2 in structure "gekbi" dcl 1543 in begin block on line 1542 set ref 1548* 1553 1556* 1558 1559 1571 1572 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1597 1597 1597 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1613 key_binding_info_ptr 4 based pointer level 2 in structure "set_editor_key_bindings_info" dcl 8-162 in procedure "wioctl_" set ref 864* 869 key_num 000100 automatic fixed bin(17,0) dcl 1272 set ref 1276* 1277 1277 1277* kill 1(09) 000276 automatic char(1) level 2 in structure "EC" packed packed unaligned dcl 1310 in procedure "process_io_call" set ref 1751* 1773* 1775* kill 1(09) based char(1) level 2 in structure "editing_chars" packed packed unaligned dcl 11-15 in procedure "wioctl_" set ref 605* 612 612 646 669 671 695 708 710 kill_char 145 based char(1) level 3 dcl 4-29 set ref 324* 605 663 663 666 671* 702 702 705 710* latest parameter fixed bin(17,0) dcl 2077 in procedure "require_version" ref 2073 2079 latest parameter char(8) packed unaligned dcl 2089 in procedure "require_version_str" ref 2085 2091 lbound builtin function dcl 164 ref 1237 1240 1276 2133 lekbi based structure level 1 dcl 619 in begin block on line 618 set ref 632 635 720 lekbi based structure level 1 dcl 1544 in begin block on line 1542 set ref 1556 1613 len based fixed bin(8,0) level 4 in structure "scs" packed packed unaligned dcl 1011 in procedure "wioctl_" set ref 1035 len based fixed bin(8,0) level 3 in structure "special_chars" packed packed unaligned dcl 12-26 in procedure "wioctl_" set ref 992 996 996 1036* 1037 1037 1040 1040 2335 2337 2337 2337 2337 2385 2386 2386 2386 2386 len based fixed bin(8,0) level 4 in structure "special_chars_struc" packed packed unaligned dcl 12-76 in procedure "wioctl_" set ref 994* 1042 1042 len based fixed bin(8,0) level 4 in structure "special_chars_struc_old" packed packed unaligned dcl 207 in procedure "wioctl_" set ref 1000* 1004 1004 2335 2337 2337 2337 2337 2385 2386 2386 2386 2386 length builtin function dcl 164 ref 1076 1118 1175 1182 1196 1220 1230 1237 1240 1417 1419 1550 1636 1735 1742 1752 1830 1960 1978 2167 2171 2173 2176 2176 line 71 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 338 342* 559 561 line 2 based fixed bin(17,0) level 3 in structure "window_position_info" dcl 8-25 in procedure "wioctl_" set ref 442* 462 462 469 489 530 534 540 line_editor_binding_count 000170 automatic fixed bin(17,0) dcl 8-121 set ref 627* 635 635 1508* 1511* 1513 1516 1516 1549* 1556 1556 line_editor_breaks 152(20) based bit(128) level 2 packed packed unaligned dcl 4-29 set ref 2133 2133 2133 2133 2133* 2133 line_editor_breaks_array defined bit(1) array packed unaligned dcl 4-128 set ref 2133 2133 2133* line_editor_key_binding_info based structure level 1 dcl 8-129 set ref 1516 1517 1528 1553 line_editor_key_binding_info_ptr 000166 automatic pointer dcl 8-118 set ref 885* 886 889 897 898 898 898 898 898 898 898 1070* 1072 1075 1076 1080 1080 1085 1085 1085 1094 1095 1095 1095 1095 1095 1095 1095 1105 1117 1118 1122 1122 1127 1127 1127 1138 1139 1139 1139 1139 1516* 1517 1519 1526* 1528 1553 1877 1880 1880 1880 1880 1886 1888 1909 1925 1981 1983 2018 2041 2046 2048 2051 2051 line_editor_key_binding_info_version_2 003276 constant char(8) initial packed unaligned dcl 852 ref 855 1105 line_editor_key_binding_info_version_3 000030 constant char(8) initial packed unaligned dcl 8-148 set ref 637 855 889* 1072 1519 1558 line_editor_longest_sequence 000171 automatic fixed bin(17,0) dcl 8-123 set ref 628* 635 635 1509* 1511* 1513 1516 1516 1550* 1556 1556 line_origin 161 based fixed bin(17,0) level 3 dcl 4-29 set ref 442 530 532 540* 545 545 570* 2238 longest_key_sequence parameter fixed bin(17,0) dcl 1811 set ref 1808 1830* 1830 longest_sequence 3 based fixed bin(17,0) level 2 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" ref 1118 1118 1122 1122 1122 1122 1122 1122 1127 1127 1127 1127 1127 1127 1127 1127 1127 1139 1139 1139 1139 1139 1139 1139 1139 1139 1139 1139 1139 longest_sequence 3 based fixed bin(17,0) level 2 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 632 635* 653 653 653 655 655 655 656 656 656 658 658 658 659 659 659 663 663 663 665 665 665 666 666 666 668 668 668 669 669 669 684 684 684 686 686 686 687 687 687 689 689 689 690 690 690 702 702 702 704 704 704 705 705 705 707 707 707 708 708 708 714 714 714 714 714 714 714 714 714 714 714 714 720 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 898 1076 1076 1080 1080 1080 1080 1080 1080 1085 1085 1085 1085 1085 1085 1085 1085 1085 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1095 1516* 1517 1528 1553 1556* 1559 1559 1559 1571 1571 1571 1572 1572 1572 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1581 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1590 1597 1597 1597 1597 1597 1597 1597 1597 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1603 1613 1877 1877 1877 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1880 1886 1886 1886 1888 1888 1888 1909 1909 1909 1925 1925 1925 1981 1981 1981 1983 1983 1983 2018 2018 2018 2041 2041 2041 2046 2046 2046 2048 2048 2048 2051 2051 2051 2051 2051 2051 lowercase 000001 constant char(26) initial packed unaligned dcl 1953 ref 2005 2028 max builtin function dcl 164 ref 1237 1240 1442 1830 max_arglen 43 based fixed bin(17,0) level 2 dcl 1-10 ref 1350 1350 1352 1352 1352 1417 1417 1418 1418 1419 1419 1420 1420 1469 1469 1550 1550 1559 1559 1563 1563 1636 1636 1637 1637 1696 1696 1698 1698 1698 1698 1701 1701 1701 1701 1704 1704 1707 1707 1707 1735 1735 1742 1742 1750 1750 1751 1751 1752 1752 1754 1754 1820 1820 1822 1822 1822 1830 1830 1835 1835 1841 1841 1846 1846 1877 1877 1885 1885 1888 1888 1891 1891 1891 1903 1903 1959 1959 1960 1960 1977 1977 1978 1978 mbz 2(01) based bit(35) level 3 in structure "get_editor_key_bindings_info" packed packed unaligned dcl 8-151 in procedure "wioctl_" set ref 879* mbz 2(02) 000100 automatic bit(34) level 3 in structure "sekbi" packed packed unaligned dcl 620 in begin block on line 618 set ref 625* mode_name 1 parameter char(32) level 2 packed packed unaligned dcl 274 ref 276 279 300 302 305 310 315 317 321 327 332 348 350 352 mode_string_$parse 000012 constant entry external dcl 131 ref 257 mode_string_info based structure level 1 dcl 14-9 set ref 266 mode_string_info_ptr 000202 automatic pointer dcl 14-14 set ref 257* 262 263 266 mode_value based structure level 1 dcl 14-16 modes 2 based structure array level 2 dcl 14-9 set ref 262 263* modex 000104 automatic fixed bin(17,0) dcl 140 set ref 262* 263* more_handler 2 based entry variable level 2 in structure "more_handler_info" dcl 8-83 in procedure "wioctl_" set ref 798 810* more_handler 2 000146 automatic entry variable level 2 in structure "MHI" dcl 1305 in procedure "process_io_call" set ref 1350* 1382* more_handler 202 based entry variable level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 792 798* 810 more_handler_in_use 200 based bit(1) level 2 dcl 4-29 set ref 791 799* 806 815* more_handler_info based structure level 1 dcl 8-83 more_handler_info_ptr 000160 automatic pointer dcl 8-92 set ref 787* 788 792 793 795 798 804* 805 810 811 more_handler_info_version_3 003432 constant fixed bin(17,0) initial dcl 8-94 set ref 788* 805* 1349 1368 more_mode 75 based fixed bin(17,0) level 2 dcl 4-29 set ref 248* 290* 292* 294* 296* 586 594* more_noes 134 based char(32) level 3 packed packed unaligned dcl 4-29 set ref 732 746* more_processing 66(02) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 300* more_prompt 2 000203 automatic char(80) level 2 in structure "MPI" dcl 1307 in procedure "process_io_call" set ref 1469* 1486* 1488* more_prompt 76 based char(80) level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 838* 845 more_prompt 2 based char(80) level 2 in structure "more_prompt_info" dcl 8-108 in procedure "wioctl_" set ref 838 845* more_prompt_info based structure level 1 dcl 8-108 more_prompt_info_ptr 000164 automatic pointer dcl 8-112 set ref 836* 837 838 843* 844 845 more_prompt_info_version_1 000032 constant char(8) initial packed unaligned dcl 8-114 set ref 837* 844* 1468 1479 more_responses 122 based structure level 2 dcl 4-29 more_responses_info based structure level 1 dcl 8-59 more_responses_info_ptr 000154 automatic pointer dcl 8-69 set ref 727* 728 729 730 731 732 737* 738 739 739 739 739 743 744 745 746 more_responses_info_version_1 003426 constant fixed bin(17,0) initial dcl 8-67 set ref 728* 738* 1416 1430 more_yeses 124 based char(32) level 3 packed packed unaligned dcl 4-29 set ref 731 745* mv parameter structure level 1 dcl 274 ref 272 n_columns 3 000114 automatic fixed bin(17,0) level 2 dcl 147 set ref 492* n_noes 2 based fixed bin(17,0) level 2 in structure "more_responses_info" dcl 8-59 in procedure "wioctl_" set ref 730* 739 744 n_noes 2 000160 automatic fixed bin(17,0) level 2 in structure "MRI" dcl 1306 in procedure "process_io_call" set ref 1419* 1437 1437 1442 1445 1448 n_noes 123 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 730 744* n_rows 1 000114 automatic fixed bin(17,0) level 2 dcl 147 set ref 490* n_yeses 122 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 729 743* n_yeses 1 000160 automatic fixed bin(17,0) level 2 in structure "MRI" dcl 1306 in procedure "process_io_call" set ref 1417* 1437 1437 1442 1443 1448 n_yeses 1 based fixed bin(17,0) level 2 in structure "more_responses_info" dcl 8-59 in procedure "wioctl_" set ref 729* 739 743 name based varying char(64) array level 3 in structure "lekbi" dcl 619 in begin block on line 618 set ref 714* name parameter varying char dcl 1157 in procedure "set_key_binding" set ref 1150 1209 1215 1237* 1239* name 11 based varying char(64) array level 3 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1209* 1237 1239 name based varying char(64) array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 set ref 1581 1581 1603* name 1 based char(32) level 2 in structure "iocb" dcl 9-6 in procedure "wioctl_" set ref 570* name based varying char(64) array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1095* 1880* 2046* nargs 42 based fixed bin(17,0) level 2 dcl 1-10 ref 1337 1341 1395 1402 1409 1457 1461 1494 1536 1620 1627 1689 1695 1723 1728 1788 1817 1819 1841 1846 1872 1903 1957 1971 new_bottom_line 000104 automatic fixed bin(17,0) dcl 516 set ref 534* 537 545 545 545 new_ptr parameter pointer dcl 1270 in procedure "copy_dispatch_table" set ref 1267 1274* 1275 1277 new_ptr parameter pointer dcl 1262 in procedure "make_key_bindings_copy" set ref 1259 1264* new_ptr 000354 automatic pointer dcl 1164 in procedure "set_key_binding" set ref 1187* 1188 1190 next_arg based varying char dcl 1945 set ref 1983 1986* 2005 2012* 2028 2035* 2046 2048 2051 2055* next_arg_len 000551 automatic fixed bin(21,0) dcl 1946 set ref 1978* 1986 2003 2012 2026 2035 2055 next_arg_ptr 000554 automatic pointer dcl 1948 set ref 1977* 1983 1986 2005 2012 2028 2035 2046 2048 2051 2055 next_arg_uppercase 000100 automatic char packed unaligned dcl 2026 in begin block on line 2025 set ref 2028* 2030 next_arg_uppercase 000100 automatic char packed unaligned dcl 2003 in begin block on line 2002 set ref 2005* 2007 next_table 2 based pointer array level 3 dcl 4-155 set ref 1190* 1193 1199* 1227 1277* 1277* nl_seq based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2356 nl_seq 2 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2281 nl_seq based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2281 2356 noes 13 based char(32) level 2 in structure "more_responses_info" packed packed unaligned dcl 8-59 in procedure "wioctl_" set ref 732* 739 746 noes 13 000160 automatic char(32) level 2 in structure "MRI" packed packed unaligned dcl 1306 in procedure "process_io_call" set ref 1420* 1437 1437 1445 1445 noes 000401 automatic varying char(255) initial dcl 1441 in procedure "process_io_call" set ref 1441* 1445* 1445 1448* not_edited_escapes 16 based structure array level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2328 not_edited_escapes 14 based structure array level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2380 not_edited_escapes 55 based structure array level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2328 2380 null builtin function dcl 164 ref 507 626 632 719 769 769 886 1005 1548 1553 2099 numarg_action based fixed bin(17,0) array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 ref 1581 1603 numarg_action parameter fixed bin(17,0) dcl 1155 in procedure "set_key_binding" set ref 1150 1207 1215 1235* numarg_action 10 based fixed bin(17,0) array level 3 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1207* 1235 numarg_action based fixed bin(17,0) array level 3 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" set ref 1127 1127 1139* numarg_action based fixed bin(17,0) array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1085 1085 1095* 1925* 2041* numarg_action_given 0(02) 000536 automatic bit(1) level 2 packed packed unaligned dcl 1866 set ref 1917 1925 2043* numarg_action_names 000036 constant char(6) initial array packed unaligned dcl 5-154 set ref 1581* 1603* 2030 numarg_index 000547 automatic fixed bin(17,0) dcl 1943 set ref 2029* 2030* 2041 number 1 based fixed bin(17,0) level 2 dcl 14-9 ref 262 266 numeric_value 12 parameter fixed bin(35,0) level 2 dcl 274 ref 305 310 383 numeric_valuep 11(01) parameter bit(1) level 3 packed packed unaligned dcl 274 ref 381 old_bottom_line 000103 automatic fixed bin(17,0) dcl 515 set ref 535* 537 545 old_handler_valid 1 based bit(1) level 3 packed packed unaligned dcl 8-83 set ref 793* 795* 811* old_max_length 000503 automatic fixed bin(17,0) dcl 2274 set ref 2277* 2279 2283 2287 2291 2295 2299 2303 2307 2311 2315 2319 2326 2330 old_more_handler 6 based entry variable level 2 dcl 8-83 set ref 792* old_origin 000102 automatic fixed bin(17,0) dcl 514 set ref 532* 535 545 545 old_ptr parameter pointer dcl 1270 in procedure "copy_dispatch_table" ref 1267 1275 1276 1276 1277 1277 old_ptr 000352 automatic pointer dcl 1163 in procedure "set_key_binding" set ref 1179* 1186 1190 1191 1193* 1193 1199 1199 1203 1206 1207 1209 1210 1211 1218* 1224 1227* 1227 1231 1234 1235 1237 1239 1240 1242 1243 1253 operation 7 000456 automatic fixed bin(17,0) level 3 dcl 2231 set ref 2237* order 000102 automatic char(32) packed unaligned dcl 1298 set ref 1333* 1336 1342* 1352* 1359* 1360* 1366 1369* 1371* 1384* 1394 1403* 1410* 1421* 1422* 1428 1431* 1433* 1456 1462* 1470* 1471* 1477 1480* 1482* 1493 1526* 1529* 1535 1561* 1563* 1619 1628* 1639* 1640* 1646 1649* 1651* 1661 1664* 1666* 1688 1707* 1715* 1722 1729* 1736* 1743* 1761* 1762* 1767 1770* 1789* 1891* 1909* 1918* 1967* 1972* 1986* 2012* 2035* 2055* order_name 11 based char(32) level 2 dcl 1-10 ref 1333 origin 1 based structure level 2 unaligned dcl 8-25 origin_change 000100 automatic fixed bin(17,0) dcl 512 set ref 530* 561 561 output_cv_ptr 170 based pointer level 2 dcl 4-29 ref 925 945 950 960 966 pathname_ 000016 constant entry external dcl 134 ref 1581 1581 1590 1590 1603 1603 printer_off 11 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2309 printer_off 7 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2370 printer_off 34 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2309 2370 printer_on 10 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2305 printer_on 30 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2305 2368 printer_on 6 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2368 r_coords based structure level 1 dcl 2-34 rank builtin function dcl 164 ref 1183 1196 1221 1230 2124 2133 2133 2133 2150 2150 rawo 66(07) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 335 336* 337 341 red 66(08) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 348* red_ribbon_shift 12 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2313 red_ribbon_shift 10 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2372 red_ribbon_shift 40 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2313 2372 redisplay 1(18) 000276 automatic char(1) level 2 packed packed unaligned dcl 1310 set ref 1754* 1758* 1773* 1775* replace 2 000100 automatic bit(1) level 3 in structure "sekbi" packed packed unaligned dcl 620 in begin block on line 618 set ref 624* replace 2 based bit(1) level 3 in structure "set_editor_key_bindings_info" packed packed unaligned dcl 8-162 in procedure "wioctl_" ref 860 report 22 based entry variable level 2 dcl 1-10 ref 1378 1390 1448 1488 1603 1657 1678 1775 request_header based structure level 1 dcl 2-22 request_id 2 000456 automatic fixed bin(71,0) level 3 dcl 2231 set ref 2236* request_read_status based structure level 1 dcl 2-93 requote_string_ 000020 constant entry external dcl 135 ref 1563 1581 1581 1581 1581 1581 1590 1590 1597 1597 returned_length 12 000456 automatic fixed bin(17,0) level 3 dcl 2231 set ref 2247 routine parameter entry variable dcl 2189 in procedure "entry_var_to_string" set ref 2186 2203 2207 routine 4 based entry variable array level 3 in structure "dispatch_table" dcl 4-155 in procedure "wioctl_" set ref 1206* 1234 routine_pathname 000110 automatic char(256) packed unaligned dcl 1570 set ref 1572* 1581 1581 1603* row 5 000456 automatic fixed bin(17,0) level 4 dcl 2231 set ref 2238* row_at_rawo 73 based fixed bin(17,0) level 3 dcl 4-29 set ref 338* 342 rows 2 based fixed bin(17,0) level 3 in structure "capabilities_info" dcl 7-3 in procedure "wioctl_" set ref 431* rows 2 000107 automatic fixed bin(17,0) level 3 in structure "auto_capabilities_info" dcl 144 in procedure "wioctl_" set ref 462 469 rows 157 based fixed bin(17,0) level 3 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 248* 310 431 439 507 535 539* 559 559* 570* 584 rqrs 000456 automatic structure level 1 dcl 2231 set ref 2242 2242 rtrim builtin function dcl 164 ref 377 1388 1388 1390 1390 1581 1581 1581 1581 1581 1581 1581 1581 1590 1590 1590 1590 1597 1597 2211 2211 saved_ignore_status 000105 automatic bit(1) dcl 518 set ref 522* 524 567 saved_r 000216 automatic bit(1) packed unaligned dcl 334 set ref 335* 337 341 sc_escape_len 000200 automatic fixed bin(17,0) dcl 12-58 set ref 991* 994 994 994 1000 1000 1000 1034* 1036 1036 1036 sc_input_escape_len 000201 automatic fixed bin(17,0) dcl 12-59 set ref 992* 994 994 994 1000 1000 1000 1035* 1036 1036 1036 screen_invalid 67 based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 580* screensize 1 based structure level 2 in structure "capabilities_info" dcl 7-3 in procedure "wioctl_" screensize 1 000107 automatic structure level 2 in structure "auto_capabilities_info" dcl 144 in procedure "wioctl_" scroll_region 3 based bit(1) level 3 in structure "capabilities_info" packed packed unaligned dcl 7-3 in procedure "wioctl_" set ref 422* scroll_region 3 000107 automatic bit(1) level 3 in structure "auto_capabilities_info" packed packed unaligned dcl 144 in procedure "wioctl_" set ref 288 594 scs based structure level 1 dcl 1011 set ref 1042 scs_ptr 000142 automatic pointer dcl 1012 set ref 1014* 1018 1018 1018 1023 1031* 1034 1035 1037 1037 1042 1042 2356 2358 2360 2362 2364 2366 2368 2370 2372 2374 2376 2378 2380 2382 2385 2386 search builtin function dcl 164 ref 739 seg_name 000100 automatic char(32) packed unaligned dcl 2193 set ref 2203* 2211 sekbi 000100 automatic structure level 1 dcl 620 set ref 716 716 sentinel 000456 automatic char(4) level 3 dcl 2231 set ref 2234* sequence parameter varying char dcl 1153 in procedure "set_key_binding" ref 1150 1171 1175 1182 1183 1196 1196 1215 1220 1221 1230 1230 sequence 4 based varying char array level 3 in structure "v2lekbi" dcl 1106 in procedure "update_key_bindings" set ref 1118 1139* sequence 4 based varying char array level 3 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 898* 1076 1095* 1877* 1909* sequence 4 based varying char array level 3 in structure "lekbi" dcl 619 in begin block on line 618 set ref 656* 659* 666* 669* 687* 690* 705* 708* sequence 4 based varying char array level 3 in structure "lekbi" dcl 1544 in begin block on line 1542 set ref 1559* 1581 1590* 1597 1603* set_editor_key_bindings_info based structure level 1 dcl 8-162 set_editor_key_bindings_info_ptr 000174 automatic pointer dcl 8-171 set ref 850* 855 855 855* 858 860 860 864 864 869 set_editor_key_bindings_info_version_1 000024 constant char(8) initial packed unaligned dcl 8-172 ref 622 858 special_chars 2 based structure level 2 in structure "scs" dcl 1011 in procedure "wioctl_" set ref 1037 2356 2358 2360 2362 2364 2366 2368 2370 2372 2374 2376 2378 2380 2382 2385 2386 special_chars 2 based structure level 2 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" special_chars 2 based structure level 2 in structure "special_chars_struc" dcl 12-76 in procedure "wioctl_" set ref 996 special_chars based structure level 1 dcl 12-26 in procedure "wioctl_" set ref 996* 996 1036 1037* 1037 1040 special_chars_old based structure level 1 dcl 176 special_chars_struc based structure level 1 dcl 12-76 set ref 994 special_chars_struc_old based structure level 1 dcl 207 set ref 1000 1004 special_ptr 172 based pointer level 2 dcl 4-29 set ref 991 992 996 1040 1041* 2279 2281 2283 2285 2287 2289 2291 2293 2295 2297 2299 2301 2303 2305 2307 2309 2311 2313 2315 2317 2319 2321 2323 2325 2326 2328 2330 2332 2335 2337 2379 status 67 based structure level 2 dcl 4-29 set ref 527* 576* 754 755* 765* 765 status_pending 66(10) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 528* 575* 579* 756* 766* status_string 1 based bit(36) level 2 in structure "window_status_info" dcl 8-45 in procedure "wioctl_" set ref 754* 765 status_string 1 000274 automatic bit(36) level 2 in structure "WSI" dcl 1309 in procedure "process_io_call" set ref 1671 1673 1673 1673 1673 1678 1678 1678 1678 1678 1696* 1696 1698* 1698 1701* 1701 1704* 1704 string builtin function dcl 164 set ref 527* 576* 754* 754 755* 765* 765 765 776 782* 1547* 2240* substr builtin function dcl 164 set ref 739 739 960* 967* 972* 976* 1171 1183 1196 1221 1230 1437 1437 1437 1437 1443 1443 1445 1445 1655 1657 1657 1750 1751 1754 2174 2174 2176 2176 suppress_echo 66(12) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 402* 404* tab_seq 3 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2362 tab_seq 14 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2293 2362 tab_seq 5 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2293 table_ptr 4 000236 automatic pointer level 2 in structure "auto_gsi" dcl 1025 in begin block on line 1024 set ref 1031 table_ptr 2 based pointer level 2 in structure "gsi_old" dcl 985 in procedure "wioctl_" set ref 1000* 1001 1004 1005* 2277 2281 2285 2289 2293 2297 2301 2305 2309 2313 2317 2321 2323 2328 2332 2335 2337 table_ptr 4 based pointer level 2 in structure "gsi" dcl 982 in procedure "wioctl_" set ref 994* 995 996 target_iocb_ptr 64 based pointer level 2 dcl 4-29 ref 570 2118 target_iocbp 000102 automatic pointer dcl 139 set ref 407 415* 451* 494* 497* 499* 769* 941* 1028* 1061* 2118* 2242* tc_desk_window_info based structure level 1 dcl 10-14 temp_ptr 000100 automatic pointer dcl 128 set ref 718* 720 868* 870 1036* 1037 1041 2356 2358 2360 2362 2364 2366 2368 2370 2372 2374 2376 2378 2380 2382 2385 2386 token_character_count 2 000231 automatic fixed bin(17,0) level 2 in structure "TCI" dcl 1308 in procedure "process_io_call" set ref 1636* 1655 1657 1657 token_character_count 2 based fixed bin(17,0) level 2 in structure "token_characters_info" dcl 8-97 in procedure "wioctl_" set ref 823 831* token_character_count 406 based fixed bin(17,0) level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 823* 831 token_characters 407 based char(128) level 2 in structure "attach_data" packed packed unaligned dcl 4-29 in procedure "wioctl_" set ref 822* 830 token_characters 3 based char(128) level 2 in structure "token_characters_info" packed packed unaligned dcl 8-97 in procedure "wioctl_" set ref 822 830* token_characters 3 000231 automatic char(128) level 2 in structure "TCI" packed packed unaligned dcl 1308 in procedure "process_io_call" set ref 1637* 1655 1657 1657 token_characters_info based structure level 1 dcl 8-97 token_characters_info_ptr 000162 automatic pointer dcl 8-104 set ref 820* 821 822 823 828* 829 830 831 token_characters_info_version_1 000034 constant char(8) initial packed unaligned dcl 8-106 set ref 821* 829* 1635 1648 translate builtin function dcl 164 ref 2005 2028 tty_read_status_info based structure level 1 dcl 3-17 type based fixed bin(17,0) array level 3 dcl 4-155 set ref 1186 1188* 1191* 1199 1203* 1224 1231 1277 unspec builtin function dcl 164 set ref 1874* update 2(01) based bit(1) level 3 in structure "set_editor_key_bindings_info" packed packed unaligned dcl 8-162 in procedure "wioctl_" ref 860 864 update 2(01) 000100 automatic bit(1) level 3 in structure "sekbi" packed packed unaligned dcl 620 in begin block on line 618 set ref 623* uppercase 000010 constant char(26) initial packed unaligned dcl 1952 ref 2005 2028 v2lekbi based structure level 1 dcl 1106 value 2 based fixed bin(8,0) array level 3 in structure "cts" packed packed unaligned dcl 912 in procedure "wioctl_" set ref 925* 950 value based fixed bin(8,0) array level 2 in structure "cv_trans" packed packed unaligned dcl 12-62 in procedure "wioctl_" set ref 925 945* 950* 960 966 version based char(8) level 2 in structure "lekbi" dcl 1544 in begin block on line 1542 set ref 1558* version 000146 automatic fixed bin(17,0) level 2 in structure "MHI" dcl 1305 in procedure "process_io_call" set ref 1349* 1368* version based char(8) level 2 in structure "more_prompt_info" dcl 8-108 in procedure "wioctl_" set ref 837* 844* version based fixed bin(17,0) level 2 in structure "cts" dcl 912 in procedure "wioctl_" ref 916 916 924 933 933 949 version 000274 automatic fixed bin(17,0) level 2 in structure "WSI" dcl 1309 in procedure "process_io_call" set ref 1663* 1694* version 000160 automatic fixed bin(17,0) level 2 in structure "MRI" dcl 1306 in procedure "process_io_call" set ref 1416* 1430* version based fixed bin(17,0) level 2 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 1001* version based fixed bin(17,0) level 2 in structure "special_chars_struc" dcl 12-76 in procedure "wioctl_" set ref 995* version based fixed bin(17,0) level 2 in structure "editing_chars" dcl 11-15 in procedure "wioctl_" set ref 603* 611* version based fixed bin(17,0) level 2 in structure "break_table_info" dcl 8-76 in procedure "wioctl_" set ref 775* 781* version based fixed bin(17,0) level 2 in structure "more_responses_info" dcl 8-59 in procedure "wioctl_" set ref 728* 738* version based char(8) level 2 in structure "get_editor_key_bindings_info" dcl 8-151 in procedure "wioctl_" set ref 878* version based fixed bin(17,0) level 2 in structure "window_status_info" dcl 8-45 in procedure "wioctl_" set ref 753* 764* version based char(8) level 2 in structure "gsi" dcl 982 in procedure "wioctl_" ref 993 version based char(8) level 2 in structure "token_characters_info" dcl 8-97 in procedure "wioctl_" set ref 821* 829* version 000107 automatic fixed bin(17,0) level 2 in structure "auto_capabilities_info" dcl 144 in procedure "wioctl_" set ref 284* 450* 589* version based char(8) level 2 in structure "set_editor_key_bindings_info" dcl 8-162 in procedure "wioctl_" ref 855 855 858 version based char(8) level 2 in structure "lekbi" dcl 619 in begin block on line 618 set ref 637* version based char(8) level 2 in structure "line_editor_key_binding_info" dcl 8-129 in procedure "wioctl_" set ref 889* 1072 1105 1519* version based fixed bin(17,0) level 2 in structure "more_handler_info" dcl 8-83 in procedure "wioctl_" set ref 788* 805* version 000100 automatic char(8) level 2 in structure "gekbi" dcl 1543 in begin block on line 1542 set ref 1546* version based fixed bin(17,0) level 2 in structure "scs" dcl 1011 in procedure "wioctl_" ref 1018 1018 1018 1037 version 000236 automatic char(8) level 2 in structure "auto_gsi" packed packed unaligned dcl 1025 in begin block on line 1024 set ref 1026* version based fixed bin(17,0) level 2 in structure "window_position_info" dcl 8-25 in procedure "wioctl_" set ref 438* 448* version 000100 automatic char(8) level 2 in structure "sekbi" dcl 620 in begin block on line 618 set ref 622* version 000203 automatic char(8) level 2 in structure "MPI" dcl 1307 in procedure "process_io_call" set ref 1468* 1479* version 000231 automatic char(8) level 2 in structure "TCI" dcl 1308 in procedure "process_io_call" set ref 1635* 1648* version 000276 automatic fixed bin(17,0) level 2 in structure "EC" dcl 1310 in procedure "process_io_call" set ref 1753* 1757* 1769* version_found parameter char(8) dcl 2088 in procedure "require_version_str" ref 2085 2091 version_found parameter fixed bin(17,0) dcl 2076 in procedure "require_version" ref 2073 2079 2079 vertsp 66(03) based bit(1) level 3 packed packed unaligned dcl 4-29 set ref 248 315* video_et_$bad_window_id 000024 external static fixed bin(35,0) dcl 149 ref 496 video_et_$no_more_handler_in_use 000032 external static fixed bin(35,0) dcl 149 ref 807 1370 1375 video_et_$overlapping_more_responses 000026 external static fixed bin(35,0) dcl 149 ref 739 video_et_$window_too_big 000030 external static fixed bin(35,0) dcl 149 ref 460 vt_seq 20 based structure level 2 in structure "special_chars" dcl 12-26 in procedure "wioctl_" set ref 2297 2364 vt_seq 4 based structure level 2 in structure "special_chars_old" dcl 176 in procedure "wioctl_" set ref 2364 vt_seq 6 based structure level 3 in structure "special_chars_struc_old" dcl 207 in procedure "wioctl_" set ref 2297 width 3 based fixed bin(17,0) level 3 dcl 8-25 set ref 440* 480 483 483* 492 542 window_$change_line 000062 constant entry external dcl 15-59 ref 561 window_$position_cursor 000056 constant entry external dcl 15-31 ref 553 559 window_$sync 000060 constant entry external dcl 15-44 ref 399 window_id 4 000456 automatic bit(36) level 3 in structure "rqrs" dcl 2231 in procedure "read_status" set ref 2235* window_id 4 000114 automatic bit(36) level 2 in structure "desk_info" dcl 147 in procedure "wioctl_" set ref 488* 500 window_id based bit(36) level 2 in structure "attach_data" dcl 4-29 in procedure "wioctl_" set ref 488 500* 2235 window_image based char array packed unaligned dcl 4-135 ref 507 584 window_image_ptr 450 based pointer level 2 dcl 4-29 set ref 507 507 584* window_io_iox_$free_dispatch_tables 000064 constant entry external dcl 1166 ref 1199 window_io_iox_$reset_more_entry 000022 constant entry external dcl 136 ref 396 554 window_iocb_ptr 6 000114 automatic pointer level 2 dcl 147 set ref 498* window_position_info based structure level 1 unaligned dcl 8-25 window_position_info_ptr 000150 automatic pointer dcl 8-37 set ref 437* 438 439 440 441 442 447* 448 462 462 466 469 469 473 473 476 476 480 483 483 489 490 491 492 530 534 534 539 540 542 543 window_position_info_version_1 003426 constant fixed bin(17,0) initial dcl 8-35 set ref 438* 448* window_status 000146 automatic structure level 1 dcl 6-10 window_status_info based structure level 1 dcl 8-45 window_status_info_ptr 000152 automatic pointer dcl 8-43 set ref 752* 753 754 763* 764 765 window_status_version_1 003426 constant fixed bin(17,0) initial dcl 8-52 set ref 753* 764* 1663 1694 yeses 3 000160 automatic char(32) level 2 in structure "MRI" packed packed unaligned dcl 1306 in procedure "process_io_call" set ref 1418* 1437 1437 1443 1443 yeses 000300 automatic varying char(255) initial dcl 1441 in procedure "process_io_call" set ref 1441* 1443* 1443 1448* yeses 3 based char(32) level 2 in structure "more_responses_info" packed packed unaligned dcl 8-59 in procedure "wioctl_" set ref 731* 739 745 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BACKWARD_CHARACTER internal static fixed bin(17,0) initial dcl 5-13 BACKWARD_DELETE_WORD internal static fixed bin(17,0) initial dcl 5-13 BACKWARD_WORD internal static fixed bin(17,0) initial dcl 5-13 CLEAR_WINDOW internal static fixed bin(17,0) initial dcl 5-13 DELAY_VERSION internal static fixed bin(17,0) initial dcl 12-126 DISPLAY_EDITOR_DOCUMENTATION internal static fixed bin(17,0) initial dcl 5-13 FORWARD_CHARACTER internal static fixed bin(17,0) initial dcl 5-13 FORWARD_DELETE_CHARACTER internal static fixed bin(17,0) initial dcl 5-13 FORWARD_DELETE_WORD internal static fixed bin(17,0) initial dcl 5-13 FORWARD_WORD internal static fixed bin(17,0) initial dcl 5-13 IGNORE internal static fixed bin(17,0) initial dcl 5-143 INITIAL_CAPITAL internal static fixed bin(17,0) initial dcl 5-13 INPUT_CONVERT_BREAK internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_DSA_CR_PROCESSING internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_ESCAPE internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_FORMFEED internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 12-135 INPUT_CONVERT_PRECEDENCE_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 12-135 KILL_TO_END_OF_LINE internal static fixed bin(17,0) initial dcl 5-13 LOWERCASE_WORD internal static fixed bin(17,0) initial dcl 5-13 MOVE_TO_BEGINNING_OF_LINE internal static fixed bin(17,0) initial dcl 5-13 MOVE_TO_END_OF_LINE internal static fixed bin(17,0) initial dcl 5-13 MULTIPLIER internal static fixed bin(17,0) initial dcl 5-13 NEGATIVE_NUMBER_READER internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_0 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_1 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_2 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_3 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_4 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_5 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_6 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_7 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_8 internal static fixed bin(17,0) initial dcl 5-13 NUMBER_READER_9 internal static fixed bin(17,0) initial dcl 5-13 OP_BELL internal static fixed bin(17,0) initial dcl 2-86 OP_CLEAR_REGION internal static fixed bin(17,0) initial dcl 2-41 OP_CLEAR_SCREEN_NO_OPT internal static fixed bin(17,0) initial dcl 2-47 OP_DELETE_CHARS internal static fixed bin(17,0) initial dcl 2-68 OP_ERROR internal static fixed bin(17,0) initial dcl 2-38 OP_GET_CHARS_ECHO internal static fixed bin(17,0) initial dcl 2-87 OP_GET_CHARS_NO_ECHO internal static fixed bin(17,0) initial dcl 2-88 OP_GET_CURSOR_POSITION internal static fixed bin(17,0) initial dcl 2-118 OP_INSERT_TEXT internal static fixed bin(17,0) initial dcl 2-58 OP_OVERWRITE_TEXT internal static fixed bin(17,0) initial dcl 2-121 OP_POSITION_CURSOR internal static fixed bin(17,0) initial dcl 2-39 OP_READ_ONE internal static fixed bin(17,0) initial dcl 2-123 OP_SCROLL_REGION internal static fixed bin(17,0) initial dcl 2-76 OP_WRITE_RAW internal static fixed bin(17,0) initial dcl 2-122 OP_WRITE_SYNC_GET_CHARS_NO_ECHO internal static fixed bin(17,0) initial dcl 2-90 OUTPUT_CONVERT_BRS internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_BS internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_CR internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_DONT_SEND internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_FF internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_FIRST_SPECIAL internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_HT internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NEWLINE internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NOT_USED_13 internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NOT_USED_14 internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NOT_USED_15 internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NOT_USED_16 internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_RRS internal static fixed bin(8,0) initial packed unaligned dcl 12-147 OUTPUT_CONVERT_VT internal static fixed bin(8,0) initial packed unaligned dcl 12-147 PROCESS_INPUT_ESCAPE internal static fixed bin(17,0) initial dcl 5-13 QUOTE_CHARACTER internal static fixed bin(17,0) initial dcl 5-13 REJECT internal static fixed bin(17,0) initial dcl 5-143 REPEAT internal static fixed bin(17,0) initial dcl 5-143 TERMINATE_INPUT_LINE internal static fixed bin(17,0) initial dcl 5-13 TWIDDLE_CHARACTERS internal static fixed bin(17,0) initial dcl 5-13 TWIDDLE_WORDS internal static fixed bin(17,0) initial dcl 5-13 UPPERCASE_WORD internal static fixed bin(17,0) initial dcl 5-13 YANK_FROM_KILL_RING internal static fixed bin(17,0) initial dcl 5-13 YANK_PREVIOUS_FROM_KILL_RING internal static fixed bin(17,0) initial dcl 5-13 break_table_info_version internal static fixed bin(17,0) initial dcl 8-80 breaks_array defined bit(1) array packed unaligned dcl 4-127 c_chars_ptr automatic pointer dcl 12-53 capabilities_info_ptr automatic pointer dcl 7-19 capabilities_info_version internal static fixed bin(17,0) initial dcl 7-17 delay_struc based structure level 1 dcl 12-112 dispatch_table_ptr automatic pointer dcl 4-153 iox_$attach_loud 000000 constant entry external dcl 13-8 iox_$attach_name 000000 constant entry external dcl 13-8 iox_$attach_ptr 000000 constant entry external dcl 13-8 iox_$close 000000 constant entry external dcl 13-8 iox_$close_file 000000 constant entry external dcl 13-8 iox_$delete_record 000000 constant entry external dcl 13-8 iox_$destroy_iocb 000000 constant entry external dcl 13-8 iox_$detach 000000 constant entry external dcl 13-8 iox_$detach_iocb 000000 constant entry external dcl 13-8 iox_$err_no_operation 000000 constant entry external dcl 13-8 iox_$err_not_attached 000000 constant entry external dcl 13-8 iox_$err_not_closed 000000 constant entry external dcl 13-8 iox_$err_not_open 000000 constant entry external dcl 13-8 iox_$error_output external static pointer dcl 13-41 iox_$find_iocb 000000 constant entry external dcl 13-8 iox_$find_iocb_n 000000 constant entry external dcl 13-8 iox_$get_chars 000000 constant entry external dcl 13-8 iox_$get_line 000000 constant entry external dcl 13-8 iox_$iocb_version_sentinel external static char(4) dcl 9-51 iox_$look_iocb 000000 constant entry external dcl 13-8 iox_$modes 000000 constant entry external dcl 13-8 iox_$move_attach 000000 constant entry external dcl 13-8 iox_$open 000000 constant entry external dcl 13-8 iox_$open_file 000000 constant entry external dcl 13-8 iox_$position 000000 constant entry external dcl 13-8 iox_$propagate 000000 constant entry external dcl 13-8 iox_$put_chars 000000 constant entry external dcl 13-8 iox_$read_key 000000 constant entry external dcl 13-8 iox_$read_length 000000 constant entry external dcl 13-8 iox_$read_record 000000 constant entry external dcl 13-8 iox_$rewrite_record 000000 constant entry external dcl 13-8 iox_$seek_key 000000 constant entry external dcl 13-8 iox_$user_input external static pointer dcl 13-41 iox_$user_io external static pointer dcl 13-41 iox_$user_output external static pointer dcl 13-41 iox_$write_record 000000 constant entry external dcl 13-8 killer based structure level 1 unaligned dcl 4-118 killer_alloc_size automatic fixed bin(17,0) dcl 4-124 killer_initial_alloc_size internal static fixed bin(17,0) initial dcl 4-125 mode_string_info_version_2 internal static fixed bin(17,0) initial dcl 14-30 mode_value_ptr automatic pointer dcl 14-6 mode_value_version_3 internal static fixed bin(17,0) initial dcl 14-30 more_handler_info_version internal static fixed bin(17,0) initial dcl 8-94 more_responses_version internal static fixed bin(17,0) initial dcl 8-67 number_of_modes automatic fixed bin(17,0) dcl 14-6 request_buffer based char packed unaligned dcl 2-116 request_clear_region based structure level 1 dcl 2-50 request_delete_chars based structure level 1 dcl 2-70 request_prompt based char packed unaligned dcl 2-115 request_ptr automatic pointer dcl 2-19 request_read based structure level 1 dcl 2-101 request_scroll_region based structure level 1 dcl 2-78 request_text based structure level 1 dcl 2-60 request_text_string based char packed unaligned dcl 2-66 tc_desk_info_ptr automatic pointer dcl 10-13 terminal_info based structure level 1 dcl 17-6 terminal_info_ptr automatic pointer dcl 17-15 terminal_info_version internal static fixed bin(17,0) initial dcl 17-16 terminal_type_data based structure level 1 dcl 16-15 ttd_version_3 internal static fixed bin(17,0) initial dcl 16-54 ttdp automatic pointer dcl 16-53 tty_read_status_info_ptr automatic pointer dcl 3-21 tty_write_status_info based structure level 1 dcl 3-23 tty_write_status_info_ptr automatic pointer dcl 3-27 valid_token_characters based char packed unaligned dcl 4-131 window_$bell 000000 constant entry external dcl 15-6 window_$change_column 000000 constant entry external dcl 15-63 window_$clear_region 000000 constant entry external dcl 15-7 window_$clear_to_end_of_line 000000 constant entry external dcl 15-9 window_$clear_to_end_of_window 000000 constant entry external dcl 15-11 window_$clear_window 000000 constant entry external dcl 15-13 window_$create 000000 constant entry external dcl 15-72 window_$delete_chars 000000 constant entry external dcl 15-15 window_$destroy 000000 constant entry external dcl 15-74 window_$edit_line 000000 constant entry external dcl 15-76 window_$get_cursor_position 000000 constant entry external dcl 15-17 window_$get_echoed_chars 000000 constant entry external dcl 15-22 window_$get_one_unechoed 000000 constant entry external dcl 15-67 window_$get_one_unechoed_char 000000 constant entry external dcl 15-67 window_$get_unechoed_chars 000000 constant entry external dcl 15-25 window_$insert_text 000000 constant entry external dcl 15-28 window_$overwrite_text 000000 constant entry external dcl 15-29 window_$position_cursor_rel 000000 constant entry external dcl 15-36 window_$scroll_region 000000 constant entry external dcl 15-42 window_$write_raw_text 000000 constant entry external dcl 15-48 window_$write_sync_read 000000 constant entry external dcl 15-53 window_edit_line_info based structure level 1 unaligned dcl 8-177 window_edit_line_info_ptr automatic pointer dcl 8-186 window_edit_line_info_version_1 internal static char(8) initial packed unaligned dcl 8-183 window_image_string based char packed unaligned dcl 4-139 window_position_info_version internal static fixed bin(17,0) initial dcl 8-35 window_status_string automatic bit(36) packed unaligned dcl 6-7 window_status_version internal static fixed bin(17,0) initial dcl 8-52 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_TYPE 013616 constant label dcl 386 ref 280 296 369 375 381 BAD_VALUE 013616 constant label dcl 386 ref 288 305 310 FREE_SCS 012745 constant label dcl 1042 ref 1022 always_breaks 026721 constant entry internal dcl 2121 ref 2133 bad_special 030120 constant label dcl 2342 ref 2279 2283 2287 2291 2295 2299 2303 2307 2311 2315 2319 2326 2330 binding_usage 017604 constant label dcl 1495 ref 1513 check_null 026641 constant entry internal dcl 2097 ref 414 436 446 601 609 726 736 751 762 773 779 786 803 819 827 835 842 849 875 914 931 990 1013 control 005763 constant entry external dcl 392 copy_dispatch_table 015413 constant entry internal dcl 1267 ref 1264 1277 copy_new_to_old_special_table 027614 constant entry internal dcl 2266 ref 1002 copy_old_to_new_special_table 030125 constant entry internal dcl 2348 ref 1039 count_key_binding_args 023770 constant entry internal dcl 1808 ref 1511 entry_var_to_string 027323 constant entry internal dcl 2186 ref 1382 1572 error_exit 027577 constant entry internal dcl 2253 ref 858 860 887 893 1020 1077 1082 1088 1119 1124 1130 1145 1540 1793 1827 1896 1914 1922 1968 1974 1991 2016 2039 2056 2080 2092 2100 2110 error_return 013113 constant label dcl 2263 ref 2259 flat_rep 027002 constant entry internal dcl 2141 ref 1443 1445 1775 1775 1775 2174 2176 flat_rep_string 027113 constant entry internal dcl 2160 ref 1603 get_key_binding 015127 constant entry internal dcl 1215 ref 898 io_call_require_no_args 023721 constant entry internal dcl 1785 ref 1367 1429 1478 1647 1662 1768 make_key_bindings_copy 015375 constant entry internal dcl 1259 ref 881 mode_error_return 005747 constant label dcl 266 ref 360 389 mode_value_boolean 013623 constant entry internal dcl 367 ref 276 300 302 315 317 322 328 336 348 350 352 mode_value_char 013665 constant entry internal dcl 373 mode_value_numeric 013754 constant entry internal dcl 379 modes 005454 constant entry external dcl 242 process_control_args 025227 constant entry internal dcl 1937 ref 1903 process_io_call 015476 constant entry internal dcl 1288 ref 1051 1350 1350 1888 1888 1983 1983 process_key_bindings 024243 constant entry internal dcl 1860 ref 1524 read_status 027510 constant entry internal dcl 2224 ref 1048 rearrange_window 006527 constant label dcl 510 require_mbz 026657 constant entry internal dcl 2104 ref 879 require_version 026602 constant entry internal dcl 2073 ref 438 448 603 611 728 738 753 764 775 781 788 805 require_version_str 026621 constant entry internal dcl 2085 ref 821 829 837 844 878 889 set_break_table 026743 constant entry internal dcl 2127 ref 323 324 329 1175 1177 set_key_binding 014665 constant entry internal dcl 1150 ref 1095 1139 set_mode 013114 constant entry internal dcl 272 ref 263 setup 026706 constant entry internal dcl 2114 ref 245 394 update_key_bindings 014020 constant entry internal dcl 1065 ref 855 864 wioctl_ 005441 constant entry external dcl 117 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 31334 31444 30576 31344 Length 32354 30576 110 674 535 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME wioctl_ 809 external procedure is an external procedure. set_mode internal procedure shares stack frame of external procedure wioctl_. begin block on line 332 begin block shares stack frame of external procedure wioctl_. mode_value_boolean internal procedure shares stack frame of external procedure wioctl_. begin block on line 510 90 begin block enables or reverts conditions. on unit on line 524 64 on unit begin block on line 618 114 begin block enables or reverts conditions. on unit on line 630 70 on unit on unit on line 893 70 on unit begin block on line 922 begin block shares stack frame of external procedure wioctl_. begin block on line 947 begin block shares stack frame of external procedure wioctl_. begin block on line 954 begin block shares stack frame of external procedure wioctl_. on unit on line 1022 64 on unit begin block on line 1024 begin block shares stack frame of external procedure wioctl_. update_key_bindings internal procedure shares stack frame of external procedure wioctl_. set_key_binding internal procedure shares stack frame of external procedure wioctl_. make_key_bindings_copy internal procedure shares stack frame of external procedure wioctl_. copy_dispatch_table 80 internal procedure calls itself recursively. process_io_call 709 internal procedure enables or reverts conditions. on unit on line 1517 64 on unit begin block on line 1542 342 begin block enables or reverts conditions. on unit on line 1551 70 on unit io_call_require_no_args internal procedure shares stack frame of internal procedure process_io_call. count_key_binding_args internal procedure shares stack frame of internal procedure process_io_call. process_key_bindings internal procedure shares stack frame of internal procedure process_io_call. process_control_args internal procedure shares stack frame of internal procedure process_io_call. begin block on line 2002 69 begin block uses auto adjustable storage. begin block on line 2025 69 begin block uses auto adjustable storage. require_version internal procedure shares stack frame of external procedure wioctl_. require_version_str internal procedure shares stack frame of external procedure wioctl_. check_null internal procedure shares stack frame of external procedure wioctl_. require_mbz internal procedure shares stack frame of external procedure wioctl_. setup internal procedure shares stack frame of external procedure wioctl_. always_breaks internal procedure shares stack frame of external procedure wioctl_. set_break_table internal procedure shares stack frame of external procedure wioctl_. flat_rep 66 internal procedure is called by several nonquick procedures. flat_rep_string 66 internal procedure uses returns(char(*)) or returns(bit(*)). begin block on line 2170 88 begin block uses auto adjustable storage. entry_var_to_string 108 internal procedure is called by several nonquick procedures. read_status internal procedure shares stack frame of external procedure wioctl_. error_exit 64 internal procedure is called by several nonquick procedures. copy_new_to_old_special_table internal procedure shares stack frame of external procedure wioctl_. copy_old_to_new_special_table internal procedure shares stack frame of external procedure wioctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 editing_chars_version_3 wioctl_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 1542 000100 gekbi begin block on line 1542 000110 routine_pathname begin block on line 1542 begin block on line 2002 000100 next_arg_uppercase begin block on line 2002 begin block on line 2025 000100 next_arg_uppercase begin block on line 2025 begin block on line 2170 000100 flat_string begin block on line 2170 begin block on line 510 000100 origin_change begin block on line 510 000101 bottom_line_change begin block on line 510 000102 old_origin begin block on line 510 000103 old_bottom_line begin block on line 510 000104 new_bottom_line begin block on line 510 000105 saved_ignore_status begin block on line 510 begin block on line 618 000100 sekbi begin block on line 618 copy_dispatch_table 000100 key_num copy_dispatch_table entry_var_to_string 000100 seg_name entry_var_to_string 000110 entry_point_name entry_var_to_string flat_rep_string 000100 char_idx flat_rep_string process_io_call 000100 iocb_ptr process_io_call 000102 order process_io_call 000112 caller process_io_call 000122 called_as_af process_io_call 000123 i process_io_call 000124 arg_index process_io_call 000125 entry_name process_io_call 000146 MHI process_io_call 000160 MRI process_io_call 000203 MPI process_io_call 000231 TCI process_io_call 000274 WSI process_io_call 000276 EC process_io_call 000300 yeses process_io_call 000401 noes process_io_call 000526 ctl_arg_flag count_key_binding_args 000536 flags process_key_bindings 000546 builtin_index process_control_args 000547 numarg_index process_control_args 000550 arg_len process_control_args 000551 next_arg_len process_control_args 000552 arg_ptr process_control_args 000554 next_arg_ptr process_control_args 000556 found process_control_args wioctl_ 000100 temp_ptr wioctl_ 000102 target_iocbp wioctl_ 000104 modex wioctl_ 000105 force_mode wioctl_ 000106 binding_index wioctl_ 000107 auto_capabilities_info wioctl_ 000114 desk_info wioctl_ 000140 cts_ptr wioctl_ 000142 scs_ptr wioctl_ 000144 attach_data_ptr wioctl_ 000146 window_status wioctl_ 000150 window_position_info_ptr wioctl_ 000152 window_status_info_ptr wioctl_ 000154 more_responses_info_ptr wioctl_ 000156 break_table_ptr wioctl_ 000160 more_handler_info_ptr wioctl_ 000162 token_characters_info_ptr wioctl_ 000164 more_prompt_info_ptr wioctl_ 000166 line_editor_key_binding_info_ptr wioctl_ 000170 line_editor_binding_count wioctl_ 000171 line_editor_longest_sequence wioctl_ 000172 get_editor_key_bindings_info_ptr wioctl_ 000174 set_editor_key_bindings_info_ptr wioctl_ 000176 editing_chars_ptr wioctl_ 000200 sc_escape_len wioctl_ 000201 sc_input_escape_len wioctl_ 000202 mode_string_info_ptr wioctl_ 000216 saved_r begin block on line 332 000227 index begin block on line 922 000231 index begin block on line 947 000233 cv_trans_idx begin block on line 954 000234 conversion_type begin block on line 954 000236 auto_gsi begin block on line 1024 000252 blank_info_path update_key_bindings 000346 char set_key_binding 000347 char_fix set_key_binding 000350 char_index set_key_binding 000352 old_ptr set_key_binding 000354 new_ptr set_key_binding 000456 rqrs read_status 000502 i copy_new_to_old_special_table 000503 old_max_length copy_new_to_old_special_table 000514 i copy_old_to_new_special_table THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as r_le_a alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ent_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other begin_return_mac return_mac tra_ext_1 alloc_auto_adj signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc repeat set_chars_eis return_chars_eis search_eis any_to_any_truncate_op_alloc_ alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_entry_ expand_pathname_$add_suffix get_entry_name_ get_system_free_area_ hcs_$fs_get_path_name ioa_$rsnnl iox_$control mode_string_$parse pathname_ requote_string_ window_$change_line window_$position_cursor window_$sync window_io_iox_$free_dispatch_tables window_io_iox_$reset_more_entry THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_mode error_table_$bad_mode_value error_table_$bad_subr_arg error_table_$badopt error_table_$inconsistent error_table_$invalid_array_size error_table_$noarg error_table_$null_info_ptr error_table_$undefined_order_request error_table_$unimplemented_version error_table_$wrong_no_of_args video_et_$bad_window_id video_et_$no_more_handler_in_use video_et_$overlapping_more_responses video_et_$window_too_big LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 117 005440 242 005446 245 005474 247 005475 248 005503 255 005655 257 005664 258 005721 261 005724 262 005725 263 005735 264 005745 266 005747 269 005755 392 005756 394 005776 396 005777 399 006016 402 006034 404 006044 407 006054 410 006063 413 006074 414 006100 415 006101 416 006127 420 006132 422 006140 423 006142 425 006144 427 006146 430 006150 431 006152 432 006154 435 006155 436 006161 437 006162 438 006166 439 006176 440 006202 441 006204 442 006206 443 006210 445 006211 446 006215 447 006216 448 006222 450 006232 451 006234 452 006267 460 006272 462 006275 466 006303 469 006307 473 006313 476 006317 480 006324 483 006327 486 006333 488 006334 489 006336 490 006340 491 006342 492 006344 494 006346 496 006377 497 006404 498 006436 499 006443 500 006475 503 006502 507 006504 510 006527 522 006532 524 006540 525 006565 527 006571 528 006572 530 006574 532 006600 534 006602 535 006606 537 006612 539 006615 540 006617 542 006621 543 006623 545 006625 553 006637 554 006661 555 006672 559 006673 561 006720 567 006741 568 006750 570 006751 575 007021 576 007024 578 007025 579 007027 580 007031 584 007033 586 007054 589 007057 590 007061 592 007114 594 007117 597 007125 600 007126 601 007132 602 007133 603 007137 604 007150 605 007154 606 007157 608 007160 609 007164 610 007165 611 007171 612 007202 618 007243 622 007246 623 007250 624 007252 625 007254 626 007256 627 007260 628 007263 630 007265 632 007301 634 007335 635 007336 637 007374 640 007377 646 007400 647 007416 653 007420 655 007457 656 007505 658 007535 659 007550 661 007600 663 007602 665 007625 666 007640 668 007670 669 007702 671 007731 675 007733 677 007734 678 007737 684 007741 686 010000 687 010026 689 010056 690 010070 692 010117 693 010121 695 010122 696 010125 702 010127 704 010166 705 010214 707 010244 708 010256 710 010305 714 010307 716 010464 718 010522 719 010525 720 010527 721 010547 723 010550 725 010551 726 010555 727 010556 728 010562 729 010572 730 010576 731 010600 732 010603 733 010606 735 010607 736 010613 737 010614 738 010620 739 010630 743 010644 744 010647 745 010651 746 010654 748 010657 750 010660 751 010664 752 010665 753 010671 754 010701 755 010705 756 010706 757 010710 760 010711 762 010715 763 010716 764 010722 765 010732 766 010736 767 010740 769 010741 772 010777 773 011003 774 011004 775 011010 776 011020 777 011025 778 011026 779 011032 780 011033 781 011037 782 011047 783 011054 785 011055 786 011061 787 011062 788 011066 791 011076 792 011101 793 011106 794 011110 795 011111 798 011114 799 011120 800 011122 802 011123 803 011127 804 011130 805 011134 806 011144 807 011147 808 011153 810 011154 811 011161 812 011163 815 011164 818 011173 819 011177 820 011200 821 011204 822 011214 823 011221 824 011223 826 011224 827 011230 828 011231 829 011235 830 011245 831 011252 832 011254 834 011255 835 011261 836 011262 837 011266 838 011276 839 011303 841 011304 842 011310 843 011311 844 011315 845 011325 846 011332 848 011333 849 011337 850 011340 855 011344 858 011355 860 011367 864 011407 868 011420 869 011423 870 011426 872 011437 874 011440 875 011444 876 011445 878 011451 879 011461 881 011474 885 011507 886 011511 887 011515 889 011524 893 011534 897 011560 898 011571 905 011734 908 011736 911 011737 914 011743 915 011744 916 011750 919 011755 920 011760 924 011761 925 011771 926 012000 928 012002 930 012003 931 012007 932 012010 933 012014 936 012021 937 012024 939 012025 941 012030 942 012062 945 012065 949 012111 950 012121 951 012130 959 012132 960 012137 962 012155 965 012157 966 012165 967 012176 972 012213 973 012222 976 012224 977 012242 979 012243 981 012244 990 012250 991 012251 992 012255 993 012264 994 012273 995 012335 996 012337 998 012367 1000 012370 1001 012426 1002 012430 1003 012431 1004 012434 1005 012460 1008 012465 1010 012466 1013 012472 1014 012473 1018 012477 1020 012506 1022 012515 1023 012534 1026 012540 1027 012542 1028 012551 1029 012604 1031 012611 1034 012613 1035 012616 1036 012626 1037 012660 1039 012713 1040 012714 1041 012742 1042 012745 1046 013000 1048 013001 1051 013007 1054 013044 1057 013055 1061 013065 1063 013112 2263 013113 272 013114 276 013116 279 013126 280 013132 283 013135 284 013147 285 013151 286 013204 288 013210 290 013213 291 013216 292 013217 294 013230 296 013241 299 013251 300 013252 302 013270 305 013306 308 013316 310 013317 313 013327 315 013330 317 013346 321 013364 322 013370 323 013401 324 013413 325 013426 327 013427 328 013433 329 013444 330 013456 332 013457 335 013463 336 013470 337 013501 338 013513 339 013515 340 013517 341 013520 342 013524 343 013526 344 013530 332 013532 348 013533 350 013551 352 013567 356 013605 357 013610 360 013614 363 013615 386 013616 389 013622 367 013623 369 013627 371 013634 373 013665 375 013671 377 013676 379 013754 381 013757 383 013764 1065 014020 1070 014022 1072 014025 1075 014031 1076 014041 1077 014061 1080 014070 1082 014117 1085 014126 1088 014164 1091 014173 1094 014175 1095 014205 1102 014350 1103 014352 1105 014353 1117 014355 1118 014365 1119 014405 1122 014414 1124 014443 1127 014452 1130 014510 1133 014517 1135 014521 1138 014527 1139 014537 1142 014652 1143 014654 1145 014655 1147 014664 1150 014665 1171 014710 1175 014714 1177 014734 1179 014740 1182 014743 1183 014755 1186 014762 1187 014767 1188 014773 1190 015012 1191 015015 1193 015017 1194 015023 1196 015025 1199 015033 1203 015052 1205 015056 1206 015060 1207 015066 1209 015070 1210 015103 1211 015115 1213 015126 1215 015127 1218 015152 1220 015155 1221 015167 1224 015174 1227 015204 1228 015210 1230 015212 1231 015220 1233 015225 1234 015226 1235 015235 1237 015237 1239 015265 1240 015277 1242 015323 1243 015335 1244 015342 1245 015344 1246 015350 1247 015353 1249 015354 1250 015360 1252 015363 1253 015364 1255 015374 1259 015375 1264 015377 1265 015411 1267 015412 1274 015420 1275 015435 1276 015443 1277 015447 1280 015472 1282 015474 1288 015475 1441 015511 1322 015513 1324 015515 1326 015521 1329 015530 1330 015532 1333 015535 1334 015542 1336 015545 1337 015551 1338 015553 1339 015577 1341 015600 1342 015602 1346 015630 1349 015631 1350 015633 1351 015671 1352 015675 1356 015734 1357 015736 1359 015737 1360 015765 1362 016020 1363 016022 1366 016023 1367 016027 1368 016030 1369 016032 1370 016061 1371 016067 1372 016117 1373 016121 1375 016122 1376 016125 1378 016161 1379 016201 1380 016203 1382 016204 1383 016225 1384 016230 1385 016260 1386 016262 1388 016263 1390 016344 1391 016407 1394 016411 1395 016415 1396 016417 1400 016443 1402 016444 1403 016446 1407 016474 1409 016475 1410 016476 1414 016524 1416 016525 1417 016527 1418 016531 1419 016535 1420 016543 1421 016554 1422 016601 1424 016634 1425 016636 1428 016637 1429 016643 1430 016644 1431 016646 1432 016675 1433 016700 1434 016730 1435 016732 1437 016733 1440 017016 1442 017017 1443 017031 1445 017106 1447 017165 1448 017170 1453 017234 1456 017235 1457 017241 1458 017243 1459 017267 1461 017270 1462 017272 1466 017320 1468 017321 1469 017324 1470 017330 1471 017355 1473 017410 1474 017412 1477 017413 1478 017417 1479 017420 1480 017423 1481 017452 1482 017455 1483 017505 1484 017507 1486 017510 1488 017551 1489 017575 1493 017576 1494 017602 1495 017604 1501 017633 1508 017634 1509 017636 1511 017637 1513 017653 1516 017660 1517 017706 1519 017745 1524 017752 1526 017765 1527 020013 1528 020014 1529 020035 1531 020070 1532 020072 1535 020073 1536 020077 1537 020102 1540 020126 1542 020137 1546 020142 1547 020144 1548 020145 1549 020147 1550 020153 1551 020161 1553 020175 1555 020235 1556 020236 1558 020276 1559 020301 1561 020315 1562 020343 1563 020347 1567 020434 1571 020437 1572 020463 1573 020511 1580 020517 1581 020521 1590 021233 1597 021546 1601 021732 1603 021734 1612 022160 1613 022162 1614 022211 1615 022212 1616 022214 1619 022215 1620 022221 1621 022223 1625 022247 1627 022250 1628 022252 1632 022300 1635 022301 1636 022304 1637 022306 1639 022312 1640 022337 1642 022372 1643 022374 1646 022375 1647 022401 1648 022402 1649 022405 1650 022434 1651 022437 1652 022467 1653 022471 1655 022472 1657 022510 1658 022537 1661 022541 1662 022545 1663 022546 1664 022550 1665 022577 1666 022602 1667 022632 1668 022634 1670 022635 1671 022637 1673 022655 1677 022740 1678 022741 1685 023016 1688 023017 1689 023023 1690 023025 1692 023051 1694 023052 1695 023054 1696 023063 1698 023110 1701 023125 1704 023142 1707 023152 1712 023211 1714 023212 1715 023214 1716 023243 1722 023244 1723 023250 1724 023252 1726 023276 1728 023277 1729 023301 1733 023327 1735 023330 1736 023333 1740 023361 1742 023362 1743 023364 1748 023412 1750 023413 1751 023415 1752 023417 1753 023421 1754 023423 1755 023425 1757 023426 1758 023430 1761 023432 1762 023457 1764 023512 1767 023513 1768 023517 1769 023520 1770 023523 1771 023551 1773 023554 1775 023627 1779 023715 1782 023716 1783 023720 1785 023721 1788 023722 1789 023727 1793 023756 1795 023767 1808 023770 1817 023772 1819 024001 1820 024002 1822 024030 1827 024064 1830 024075 1831 024116 1833 024117 1835 024120 1841 024145 1843 024174 1844 024176 1845 024200 1846 024203 1848 024237 1849 024240 1852 024241 1854 024242 1860 024243 1872 024245 1874 024255 1877 024256 1880 024324 1883 024503 1885 024505 1886 024534 1888 024562 1890 024660 1891 024664 1895 024734 1896 024736 1898 024747 1899 024751 1900 024753 1903 024755 1908 025020 1909 025023 1914 025104 1917 025115 1918 025123 1922 025155 1925 025166 1928 025223 1930 025225 1932 025226 1937 025227 1957 025231 1959 025241 1960 025253 1962 025255 1965 025271 1967 025327 1968 025364 1971 025375 1972 025404 1974 025443 1977 025454 1978 025471 1980 025473 1981 025501 1983 025527 1985 025612 1986 025616 1990 025656 1991 025660 1993 025671 1994 025673 2001 025675 2002 025703 2003 025706 2004 025716 2005 025717 2006 025734 2007 025750 2009 025762 2010 025764 2011 025765 2012 025767 2016 026031 2018 026042 2020 026072 2021 026074 2022 026076 2024 026077 2025 026104 2026 026107 2027 026117 2028 026120 2029 026135 2030 026150 2032 026161 2033 026163 2034 026164 2035 026166 2039 026230 2041 026241 2043 026271 2044 026273 2046 026274 2048 026341 2050 026406 2051 026413 2054 026515 2055 026521 2056 026564 2060 026575 2063 026600 2065 026601 2073 026602 2079 026604 2080 026611 2083 026620 2085 026621 2091 026623 2092 026631 2095 026640 2097 026641 2099 026642 2100 026647 2102 026656 2104 026657 2109 026670 2110 026676 2112 026705 2114 026706 2116 026707 2117 026715 2118 026716 2119 026720 2121 026721 2124 026723 2127 026743 2133 026745 2136 027000 2141 027001 2146 027007 2148 027027 2150 027041 2152 027062 2154 027072 2156 027104 2160 027112 2167 027126 2170 027141 2171 027144 2173 027161 2174 027172 2175 027246 2176 027252 2177 027305 2180 027316 2186 027322 2203 027336 2204 027370 2207 027373 2208 027427 2211 027432 2213 027506 2224 027510 2234 027511 2235 027513 2236 027515 2237 027517 2238 027521 2239 027524 2240 027526 2242 027527 2243 027562 2246 027566 2247 027571 2249 027575 2253 027576 2258 027604 2259 027611 2266 027614 2276 027615 2277 027617 2279 027621 2281 027626 2283 027633 2285 027640 2287 027642 2289 027646 2291 027650 2293 027654 2295 027656 2297 027662 2299 027664 2301 027670 2303 027672 2305 027676 2307 027700 2309 027704 2311 027706 2313 027712 2315 027714 2317 027720 2319 027722 2321 027726 2323 027730 2325 027732 2326 027741 2328 027751 2330 027761 2332 027772 2334 030000 2335 030002 2337 030057 2340 030117 2342 030120 2344 030124 2348 030125 2356 030126 2358 030131 2360 030134 2362 030136 2364 030140 2366 030142 2368 030144 2370 030146 2372 030150 2374 030152 2376 030154 2378 030156 2379 030160 2380 030171 2382 030177 2384 030212 2385 030214 2386 030265 2388 030325 ----------------------------------------------------------- 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