COMPILATION LISTING OF SEGMENT read_tape_and_query Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 07/28/87 0918.9 mst Tue Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 8 /* *********************************************************** 9* * * 10* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* *********************************************************** */ 16 17 18 19 20 /****^ HISTORY COMMENTS: 21* 1) change(87-05-28,TLNguyen), approve(87-05-28,MCR7692), 22* audit(87-07-15,Blair), install(87-07-28,MR12.1-1048): 23* convert read_tape_and_query (rtq) nonstandard subsystem to a standard 24* ssu_ subsystem: initialize intermediate variables. Get optional 25* control arguments and their required partners (e.g. -comment STR). 26* Establish cleanup and program_interrupt conditions. Create an 27* invocation of rtq subsystem. Add the 2nd ssu_ request table to the 28* list of tables. Add the 2nd ssu_ info directory to the list of 29* directoies. Get the default request processor options for rtq. 30* Set prompt string for rtq. Set up fields of the "rtq_structure_ 31* info" record structure. Call "rtq_$set_up" external procedure. 32* Set up for "-quit". Set up for "-request" and handle its possible 33* errors. Invoke "ssu_$listen" and handle its possible error. 34* Invoke "terminate_null_ref_name" to terminate file if already 35* initiated. Invoke "read_tape_and_query_janitor" to detach and 36* close tape and file. Finally, invoke "ssu_$destroy_invocation" 37* to destroy invocation if already created. 38* END HISTORY COMMENTS */ 39 40 41 /* read_tape_and_query - written Sept 1977 by James A. Bush 42* Modified 9/10/79 by J. A. Bush for installation in MR8.0 43* Modified 3/11/80 by P. B. Kelley to: 44* 1) Fix bug preventing use of "-track". 45* 2) Remove automatic large buffer if user has access to rcp_sys_. 46* 3) Implement the "-block" control argument. 47* 4) Fixes bug which caused rtq to return if a tape mark was encountered 48* while attempting to determine the correct density. 49* Modified 7/30/80 by J. A. Bush to: 50* 1) Fix several tape positioning bugs. 51* 2) Implement the "-density" and "-no_prompt" control arguments. 52* 3) Add the "list_tape_contents" and "bof" requests. 53* 4) Add tape label/trailer record recognition and display capabilities. 54* 5) Add the "-count" argument to the "read_record" and "read_file" requests. 55* Modified 01/02/81 by J. A. Bush to: 56* 1) Recognize and diplay version 2 standard Multics tape labels. 57* 2) Fix bug with "-skip" read_file request argument. 58* 3) Implement the "-multics", "-nnl" and "-extend" read_file request arguments. 59* 4) Implement the "-ring" control argument. 60* Modified 4/82 by J. A. Bush to fix some bugs 61* Modified 11/82 by J. A. Bush to fix some more bugs 62**/ 63 64 read_tape_and_query: rtq: proc; 65 66 /* formated by default */ 67 68 dcl abbrev_specified_flg bit (1); 69 dcl arg_count fixed bin; 70 dcl arg_length fixed bin (21); 71 dcl arg_ptr ptr; 72 dcl arg_dex fixed bin; 73 dcl array_index fixed bin; 74 dcl bit_count fixed bin (24); 75 dcl (blocksize, code) fixed bin (35); 76 dcl buf_size fixed bin (21); /* default buffer size */ 77 dcl ddec fixed bin (35); /* density decimal */ 78 dcl dir_name char (168); 79 dcl entry_name char (32); 80 dcl match bit (1) aligned; 81 dcl no_prompt_specified_flg bit (1); 82 dcl profile_ptr ptr; 83 dcl prompt_length fixed bin (21); 84 dcl prompt_ptr ptr; 85 dcl quit_specified_flg bit (1); 86 dcl request_line_length fixed bin (21); 87 dcl request_line_ptr ptr; 88 dcl request_loop_specified_flg bit (1); 89 dcl request_specified_flg bit (1); 90 dcl rtq_info_ptr ptr; 91 dcl sci_ptr ptr; 92 dcl tape_name char (8); 93 dcl tape_atd char (200); 94 dcl tdec fixed bin (35); /* track decimal */ 95 dcl var_prompt_string char (64) varying; 96 dcl wd_buf_size fixed bin; /* default buffer size in words */ 97 98 /* based */ 99 dcl arg char (arg_length) based (arg_ptr); 100 dcl prompt_string char (prompt_length) based (prompt_ptr); 101 dcl request_line char (request_line_length) based (request_line_ptr); 102 dcl 1 rtq_info aligned like rtq_structure_info based (rtq_info_ptr); 103 104 /* builtin */ 105 dcl (addr, char, divide, fixed, hbound, ltrim, mod, null, rtrim, substr) builtin; 106 107 /* condition */ 108 dcl (cleanup, program_interrupt) condition; 109 110 /* constants */ 111 dcl DEFAULT_BUFFER_SIZE fixed bin static options (constant) init (2800); 112 dcl NEXT_POS_IN_THE_LIST_OF_TABLES fixed bin static options (constant) init (2); 113 dcl NINE_TRACK fixed bin static options (constant) init (9); 114 dcl NUMBER_OF_CHARACTER_PER_WORD fixed bin static options (constant) init (4); 115 dcl SEVEN_TRACK fixed bin static options (constant) init (7); 116 dcl density (5) char (5) static options (constant) init 117 ("d800", "d1600", "d6250", "d556", "d200"); 118 dcl info_dir char (168) int static options (constant) init (">doc>subsystem>read_tape_and_query"); 119 dcl rtq_version_1 char (8) static options (constant) init ("rtq.1"); 120 dcl pname char (19) int static options (constant) init 121 ("read_tape_and_query"); 122 dcl whoami char (32) static options (constant) init ("rtq"); 123 124 /* entries */ 125 dcl com_err_ entry options (variable); 126 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 127 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 128 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 129 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 130 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 131 dcl ioa_ entry options (variable); 132 dcl iox_$close entry (ptr, fixed bin (35)); 133 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 134 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 135 dcl rtq_$set_up entry (ptr, ptr, fixed bin (35)); 136 dcl requote_string_ entry (char (*)) returns (char (*)); 137 dcl ssu_$add_info_dir entry (ptr, char (*), fixed bin, fixed bin (35)); 138 dcl ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin (35)); 139 dcl ssu_$create_invocation entry (char (*), char (*), ptr, ptr, char (*), ptr, fixed bin (35)); 140 dcl ssu_$destroy_invocation entry (ptr); 141 dcl ssu_$execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)); 142 dcl ssu_$get_default_rp_options entry (ptr, char (8), ptr, fixed bin (35)); 143 dcl ssu_$listen entry (ptr, ptr, fixed bin (35)); 144 dcl ssu_$set_prompt_mode entry (ptr, bit (*)); 145 dcl ssu_$set_prompt entry (ptr, char (64) varying); 146 dcl ssu_$set_request_processor_options entry (ptr, ptr, fixed bin (35)); 147 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 148 149 /* external */ 150 dcl error_table_$bad_arg fixed bin (35) ext static; 151 dcl error_table_$badcall fixed bin (35) ext static; 152 dcl error_table_$inconsistent fixed bin (35) ext static; 153 dcl rtq_request_table_$rtq_request_table_ fixed bin (35) external static; 154 dcl ssu_et_$subsystem_aborted fixed bin (35) external static; 155 dcl ssu_et_$null_request_line fixed bin (35) ext static; 156 dcl ssu_et_$program_interrupt fixed bin (35) ext static; 157 dcl ssu_et_$request_line_aborted fixed bin (35) ext static; 158 dcl ssu_info_directories_$standard_requests char (168) external; 159 dcl ssu_request_tables_$standard_requests fixed bin (35) external; 160 161 162 163 /* initialized intermediate variables */ 164 call init_intermediate_variables; 165 166 /* get users 's optional control arguments */ 167 call get_users_optional_control_args; 168 169 if code ^= 0 then do; 170 call terminate_null_ref_name; 171 return; 172 end; 173 174 /* establish cleanup condition */ 175 on cleanup goto FINISH_SUBSYSTEM; 176 177 /* establish program_interrupt condition */ 178 on program_interrupt goto INVOKE_LISTEN; 179 180 /* create a invocation of a subsystem */ 181 call ssu_$create_invocation (whoami, rtq_version_1, addr (rtq_structure_info), 182 addr (rtq_request_table_$rtq_request_table_), 183 info_dir, sci_ptr, code); 184 if code ^= 0 then do; 185 call com_err_ (code, pname, "Creating subsystem invocation."); 186 goto DESTROY_INVOCATION; 187 end; 188 189 /* add ssu_request_table_ as the 2nd request table in the list of tables */ 190 call ssu_$add_request_table (sci_ptr, addr (ssu_request_tables_$standard_requests), 191 NEXT_POS_IN_THE_LIST_OF_TABLES, code); 192 if code ^= 0 then do; 193 call com_err_ (code, pname, "Adding standard ssu_ request table as the 2nd table."); 194 goto DESTROY_INVOCATION; 195 end; 196 197 /* add standard ssu_info_directories at the 2nd position in the info directories*/ 198 call ssu_$add_info_dir (sci_ptr, ssu_info_directories_$standard_requests, 199 NEXT_POS_IN_THE_LIST_OF_TABLES, code); 200 if code ^= 0 then do; 201 call com_err_ (code, pname, "Adding standard ssu_ request info segs."); 202 goto DESTROY_INVOCATION; 203 end; 204 205 /* get the default request processor options for the rtq subsystem */ 206 if abbrev_specified_flg then do; 207 call ssu_$get_default_rp_options (sci_ptr, RP_OPTIONS_VERSION_1, addr (local_rpo), (0)); 208 local_rpo.abbrev_info.expand_request_lines = "1"b; 209 local_rpo.abbrev_info.default_profile_ptr = profile_ptr; 210 local_rpo.abbrev_info.profile_ptr = profile_ptr; 211 212 call ssu_$set_request_processor_options (sci_ptr, addr (local_rpo), (0)); 213 end; 214 215 /* set prompt string for the rtq subsystem */ 216 if no_prompt_specified_flg | prompt_length = -1 then 217 call ssu_$set_prompt_mode (sci_ptr, DONT_PROMPT); 218 else if prompt_length > 0 then do; /* set user_specified prompt */ 219 var_prompt_string = prompt_string; 220 call ssu_$set_prompt (sci_ptr, var_prompt_string); /* make it varying for ssu_ */ 221 end; 222 else call ssu_$set_prompt_mode (sci_ptr, PROMPT); /* by default */ 223 224 /* make things ready before performing user's requests */ 225 rtq_info_ptr = addr (rtq_structure_info); 226 227 call fill_in_fields_of_rtq_stru_info; 228 229 call rtq_$set_up (sci_ptr, rtq_info_ptr, code); 230 if code ^= 0 then 231 goto DESTROY_INVOCATION; /* don't want additional message. */ 232 233 if quit_specified_flg then 234 goto FINISH_SUBSYSTEM; 235 236 if request_specified_flg then do; 237 call ssu_$execute_line (sci_ptr, request_line_ptr, request_line_length, code); 238 if code ^= 0 then do; 239 if code = ssu_et_$null_request_line | code = ssu_et_$program_interrupt | 240 code = ssu_et_$request_line_aborted then goto INVOKE_LISTEN; 241 242 else if code = ssu_et_$subsystem_aborted then 243 goto FINISH_SUBSYSTEM; 244 245 else do; 246 call com_err_ (code, whoami); 247 goto FINISH_SUBSYSTEM; 248 end; 249 end; 250 end; 251 /* invokes listen */ 252 INVOKE_LISTEN: 253 254 call ssu_$listen (sci_ptr, null (), code); 255 if code ^= ssu_et_$subsystem_aborted then 256 call com_err_ (code, pname, "Calling the listener."); 257 258 /* finishes subsystem */ 259 FINISH_SUBSYSTEM: 260 call read_tape_and_query_janitor (sci_ptr, rtq_info_ptr); 261 262 DESTROY_INVOCATION: 263 264 call terminate_null_ref_name; 265 266 call ssu_$destroy_invocation (sci_ptr); 267 268 return; 269 270 /**************************************************************************/ 271 272 fill_in_fields_of_rtq_stru_info: proc (); 273 274 /* fill in "rtq_structure_info" structure's field values after processing */ 275 /* control argument and got the structure's address. */ 276 277 rtq_structure_info.atd_sw, rtq_structure_info.buf_ful, rtq_structure_info.eof, rtq_structure_info.eov = "0"b; 278 rtq_info.eof_request_flg = "0"b; 279 rtq_structure_info.extend_sw, rtq_structure_info.f_attached, rtq_structure_info.fw_file = "0"b; 280 rtq_structure_info.last_job_deck_flg, rtq_structure_info.one_eof, rtq_structure_info.return_subsys_loop_flg = "0"b; 281 rtq_info.records_in_file_flg = "0"b; 282 rtq_structure_info.set_bin, rtq_structure_info.set_nine, rtq_structure_info.tmr, rtq_structure_info.two_eofs = "0"b; 283 rtq_structure_info.bits, rtq_structure_info.block_size, rtq_structure_info.clen, rtq_structure_info.cvbl = 0; 284 rtq_structure_info.l_type, rtq_structure_info.rec_len = 0; 285 rtq_structure_info.c_file, rtq_structure_info.c_mode, rtq_structure_info.c_rec = 1; 286 rtq_structure_info.cbufp, rtq_structure_info.cdkp, rtq_structure_info.cdptr, rtq_structure_info.cfptr = null; 287 rtq_structure_info.cvp, rtq_structure_info.cvbp, rtq_structure_info.fiocb_ptr, rtq_structure_info.lblp = null; 288 rtq_structure_info.rptr, rtq_structure_info.rtq_area_ptr, rtq_structure_info.tiocb_ptr, rtq_structure_info.tptr = null; 289 rtq_structure_info.c_den, rtq_structure_info.filename, rtq_structure_info.filepath = ""; 290 rtq_structure_info.buf_size = buf_size; 291 rtq_structure_info.ddec = ddec; 292 rtq_structure_info.density = density; 293 rtq_structure_info.tape_atd = tape_atd; 294 rtq_structure_info.tape_name = tape_name; 295 rtq_structure_info.tdec = tdec; 296 rtq_structure_info.Version = rtq_version_1; 297 rtq_structure_info.wd_buf_size = wd_buf_size; 298 299 end fill_in_fields_of_rtq_stru_info; 300 301 /**************************************************************************/ 302 303 304 get_nxt_arg: proc returns (bit (1) aligned); 305 /* get_nxt_arg - function to get next command line argument */ 306 307 dcl old_arg char (32) init (""); 308 309 /* begin coding */ 310 old_arg = arg; /* copy arg for error messages */ 311 arg_dex = arg_dex + 1; 312 call cu_$arg_ptr (arg_dex, arg_ptr, arg_length, code); /* get comment arg */ 313 if code ^= 0 then do; /* error */ 314 call com_err_ (code, pname, "obtaining ""^a"" specification.", old_arg); 315 return ("0"b); 316 end; 317 return ("1"b); /* return ok */ 318 319 end get_nxt_arg; 320 321 /***********************************************************************/ 322 323 get_users_optional_control_args: proc; 324 325 /* the 1st input argument typed in must be reel identifier */ 326 call cu_$arg_count (arg_count, code); 327 call cu_$arg_ptr (1, arg_ptr, arg_length, code); 328 if code ^= 0 then do; 329 call com_err_ (code, pname, "Getting reel_id."); 330 call ioa_ ("Usage: read_tape_and_query (rtq) reel_id {-control_args}"); 331 call ioa_ ("^/CONTROL ARGUMENTS ^/-abbrev, -ab ^/-block N, -bk N ^/-comment STR ^/-density N, -den N" || 332 "^/-no_abbrev, -nab ^/-no_prompt ^/-no_request_loop, -nrql ^/-profile PATH, -pf PATH ^/-prompt STR" || 333 "^/-quit ^/-request STR, -rq STR ^/-request_loop, -rql ^/-ring ^/-track N, -tk N"); 334 return; 335 end; 336 337 /* save reel number and establish tape attach description */ 338 tape_name = arg; 339 tape_atd = "tape_nstd_ " || arg; 340 341 /* process all optional input control arguments if they are specified */ 342 do arg_dex = 2 by 1 to arg_count while (code = 0); 343 call cu_$arg_ptr (arg_dex, arg_ptr, arg_length, code); /* look for more arguments */ 344 if code ^= 0 then ; /* if args exhausted, look no further */ 345 346 else if arg = "-comment" | arg = "-com" then do; /* User wants to send OPR message */ 347 if ^get_nxt_arg () then return; /* if some problem with required arg, quit */ 348 tape_atd = rtrim (tape_atd) || " -comment " || 349 requote_string_ ((arg)); /* put in quoted comment */ 350 end; 351 352 else if arg = "-track" | arg = "-tk" then do;/* next arg must be 7 or 9 */ 353 if ^get_nxt_arg () then return; /* if some problem with required arg, quit */ 354 tdec = cv_dec_check_ (arg, code); /* convert to dec. for check */ 355 if code ^= 0 then go to bad_arg; /* must be numeric */ 356 if tdec ^= SEVEN_TRACK & tdec ^= NINE_TRACK then go to bad_arg; /* and only 7 or 9 */ 357 tape_atd = rtrim (tape_atd) || " -track " || 358 ltrim (char (tdec)); /* insert leading blank */ 359 end; 360 361 else if arg = "-block" | arg = "-bk" then do;/* next arg must be blocksize */ 362 if ^get_nxt_arg () then return; /* if some problem with required arg, quit */ 363 blocksize = cv_dec_check_ (arg, code); 364 if code ^= 0 then go to bad_arg; 365 tape_atd = rtrim (tape_atd) || " -block " || ltrim (char (blocksize)); 366 buf_size = blocksize + mod (blocksize, NUMBER_OF_CHARACTER_PER_WORD); /* set buffer size in chars, mod 4 */ 367 wd_buf_size = divide (buf_size, NUMBER_OF_CHARACTER_PER_WORD, 17, 0); /* and in words */ 368 end; 369 370 else if arg = "-density" | arg = "-den" then do; /* next arg must be density value */ 371 if ^get_nxt_arg () then return; /* if some problem with required arg, quit */ 372 ddec = cv_dec_check_ (arg, code); 373 if code ^= 0 then go to bad_arg; 374 375 match = "0"b; 376 do array_index = 1 to hbound (density, 1) while (^match); 377 if ddec = fixed (substr (density (array_index), 2, 4)) then do; 378 match = "1"b; 379 tape_atd = rtrim (tape_atd) || " -density " || ltrim (char (ddec)); 380 end; 381 end; 382 if ^match then 383 go to bad_arg; 384 end; 385 386 else if arg = "-prompt" then do; 387 arg_dex = arg_dex + 1; 388 389 call cu_$arg_ptr (arg_dex, prompt_ptr, prompt_length, code); 390 if code ^= 0 then do; 391 call com_err_ (code, pname, "Trying to get the prompt string."); 392 return; 393 end; 394 if prompt_length = 0 then prompt_length = -1; 395 end; 396 397 else if arg = "-no_prompt" then 398 no_prompt_specified_flg = "1"b; 399 400 else if arg = "-ring" | arg = "-rg" then /* user wants to attach tape with write ring */ 401 tape_atd = rtrim (tape_atd) || " -write"; 402 403 else if arg = "-request_loop" | arg = "-rql" then do; 404 if quit_specified_flg then do; 405 INCONSISTENT: 406 call com_err_ (error_table_$inconsistent, pname, "-request_loop and -quit"); 407 408 return; 409 end; 410 else request_loop_specified_flg = "1"b; 411 end; 412 413 else if arg = "-no_request_loop" | arg = "-nrql" then 414 request_loop_specified_flg = "0"b; 415 416 else if arg = "-abbrev" | arg = "-ab" then 417 abbrev_specified_flg = "1"b; 418 419 else if arg = "-no_abbrev" | arg = "-nab" then 420 abbrev_specified_flg = "0"b; 421 422 else if arg = "-profile" | arg = "-pf" then do; 423 abbrev_specified_flg = "1"b; 424 arg_dex = arg_dex + 1; 425 426 call cu_$arg_ptr (arg_dex, arg_ptr, arg_length, code); 427 if code ^= 0 then goto bad_arg; 428 call expand_pathname_$add_suffix (arg, "profile", dir_name, entry_name, code); 429 if code ^= 0 then goto bad_arg; 430 431 call initiate_file_ (dir_name, entry_name, R_ACCESS, profile_ptr, bit_count, code); 432 if profile_ptr = null then do; 433 call com_err_ (code, pname, "Initiating the profile: ", pathname_ (dir_name, entry_name)); 434 return; 435 end; 436 end; 437 438 else if arg = "-quit" then do; 439 if request_loop_specified_flg then goto INCONSISTENT; 440 else quit_specified_flg = "1"b; 441 end; 442 443 else if arg = "-request" | arg = "-rq" then do; 444 if request_specified_flg then do; 445 call com_err_ (error_table_$badcall, pname, "Only one request line allowed."); 446 return; 447 end; 448 else do; 449 request_specified_flg = "1"b; 450 arg_dex = arg_dex + 1; 451 452 call cu_$arg_ptr (arg_dex, request_line_ptr, request_line_length, code); 453 if code ^= 0 then do; 454 call com_err_ (code, pname, "Trying to get the request line."); 455 return; 456 end; 457 end; 458 end; 459 460 else do; 461 if substr (arg, 1, 1) = "-" then do; 462 bad_arg: 463 call com_err_ (error_table_$bad_arg, pname, "argument number ^d: ""^a""", arg_dex, arg); 464 return; 465 end; 466 end; 467 end; /* do argdex = 2 by 1 while code = 0 */ 468 469 end get_users_optional_control_args; 470 471 /***********************************************************************/ 472 473 init_intermediate_variables: proc (); 474 475 /* begin coding */ 476 abbrev_specified_flg, no_prompt_specified_flg, quit_specified_flg, request_loop_specified_flg, request_specified_flg = "0"b; 477 arg_length, arg_dex, blocksize, code, ddec, prompt_length, request_line_length, tdec = 0; 478 arg_ptr, profile_ptr, prompt_ptr, request_line_ptr, rtq_info_ptr, sci_ptr = null; 479 dir_name, entry_name, tape_name, tape_atd, var_prompt_string = ""; 480 buf_size = DEFAULT_BUFFER_SIZE * NUMBER_OF_CHARACTER_PER_WORD; 481 wd_buf_size = DEFAULT_BUFFER_SIZE; 482 483 end init_intermediate_variables; 484 485 /***********************************************************************/ 486 487 read_tape_and_query_janitor: proc (sci_ptr, rtq_info_ptr); 488 /* detach_tape_file - internal procedure to detach and close tape and file */ 489 490 dcl release_area_ entry (ptr); 491 dcl (rtq_info_ptr, sci_ptr) ptr; 492 493 /* close and detach tape switch which was attached and opened early */ 494 if rtq_info.tiocb_ptr ^= null then do; 495 call iox_$close (rtq_info.tiocb_ptr, (0)); 496 call iox_$detach_iocb (rtq_info.tiocb_ptr, (0)); 497 end; 498 499 if rtq_info.rtq_area_ptr ^= null then 500 call release_area_ (rtq_info.rtq_area_ptr); 501 502 /* if file was attached then detach it */ 503 if rtq_info.f_attached then do; 504 call iox_$close (rtq_info.fiocb_ptr, (0)); 505 call iox_$detach_iocb (rtq_info.fiocb_ptr, (0)); 506 rtq_info.last_job_deck_flg, rtq_info.f_attached = "0"b; 507 end; 508 509 end read_tape_and_query_janitor; 510 511 /************************************************************************/ 512 513 terminate_null_ref_name: proc (); 514 515 /* begin coding */ 516 code = 0; /* prevent code was previously not zero */ 517 if profile_ptr ^= null then 518 call terminate_file_ (profile_ptr, bit_count, TERM_FILE_TERM, code); 519 if code ^= 0 then call com_err_ (code, pname, "Terminating profile segment."); 520 521 return; 522 523 end terminate_null_ref_name; 524 525 /************************************************************************/ 526 1 1 /* BEGIN INCLUDE FILE: rtq_stucture_info.incl.pl1 */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(87-06-09,TLNguyen), approve(87-06-09,MCR7692), 1 5* audit(87-07-15,Blair), install(87-07-28,MR12.1-1048): 1 6* implement read_tape_and_query (rtq) nonstandard subsystem as an ssu_ 1 7* standard subsystem. 1 8* END HISTORY COMMENTS */ 1 9 1 10 /* Created by Tai Le Nguyen for use by read_tape_and_query subsystem */ 1 11 1 12 dcl 1 rtq_structure_info aligned, /* aligned because of speed up purpose */ 1 13 2 Version char (8), /* version name is rtq.1 */ 1 14 2 bits fixed bin (35), /* record length in bits */ 1 15 2 block_size fixed bin (35), 1 16 2 buf_size fixed bin (21), /* buffer size */ 1 17 2 c_den char (5), /* current density */ 1 18 2 c_file fixed bin, /* current file */ 1 19 2 c_mode fixed bin, /* current mode */ 1 20 2 c_rec fixed bin, /* current record */ 1 21 2 pointers, 1 22 3 cbufp ptr, /* current buffer pointer */ 1 23 3 cdkp ptr, /* compdeck card pointer */ 1 24 3 cdptr ptr, /* compdeck pointer */ 1 25 3 cfptr ptr, /* compression field pointer */ 1 26 3 cvp ptr, /* conversion pointer */ 1 27 3 cvbp ptr, /* convertion buffer pointer */ 1 28 3 fiocb_ptr ptr, /* file i/o control block pointer */ 1 29 3 lblp ptr, /* label pointer */ 1 30 3 rptr ptr, /* record pointer */ 1 31 3 rtq_area_ptr ptr, /* read tape and query area pointer */ 1 32 3 tiocb_ptr ptr, /* tape i/o control block polinter */ 1 33 3 tptr ptr, /* tape pointer */ 1 34 2 clen fixed bin (21), /* current length */ 1 35 2 cvbl fixed bin (21), /* conversion buffer length */ 1 36 2 ddec fixed bin (35), /* density decimal */ 1 37 2 l_type fixed bin, /* label type */ 1 38 2 density (5) char (5), 1 39 2 flags, 1 40 3 atd_sw bit (1), /* attach description switch */ 1 41 3 buf_ful bit (1), /* buffer full switch */ 1 42 3 eof bit (1), /* end of file */ 1 43 3 eof_request_flg bit (1), /* end of file request flag */ 1 44 3 eov bit (1), /* end of volume */ 1 45 3 extend_sw bit (1), /* extended switch */ 1 46 3 f_attached bit (1), /* file attached */ 1 47 3 fw_file bit (1), /* written file switch */ 1 48 3 last_job_deck_flg bit (1), 1 49 3 one_eof bit (1), 1 50 3 records_in_file_flg bit (1), /* number of records in the current file flag */ 1 51 3 return_subsys_loop_flg bit (1), 1 52 3 set_bin bit (1), /* set binary mode switch */ 1 53 3 set_nine bit (1), /* set nine mode switch */ 1 54 3 short_output_flg bit (1), /* for setting line length on a given i/o switch */ 1 55 3 tmr bit (1), /* terminate read switch */ 1 56 3 two_eofs bit (1), /* end of tape switch */ 1 57 2 tape_name char (8), 1 58 2 rec_len fixed bin (21), /* record length in chars */ 1 59 2 tdec fixed bin (35), /* track decimal */ 1 60 2 wd_buf_size fixed bin, /* word buffer size */ 1 61 2 filename char (32) varying, /* notes that these variables of character varying declaration */ 1 62 2 filepath char (168) varying, /* are placed at the bottom of the structure to avoid being overwritten */ 1 63 2 tape_atd char (200) unaligned varying;/* tape attach description */ 527 528 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 529 530 3 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 3 2 /* format: style2,^inddcls,idind32 */ 3 3 3 4 declare 1 terminate_file_switches based, 3 5 2 truncate bit (1) unaligned, 3 6 2 set_bc bit (1) unaligned, 3 7 2 terminate bit (1) unaligned, 3 8 2 force_write bit (1) unaligned, 3 9 2 delete bit (1) unaligned; 3 10 3 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 3 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 3 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 3 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 3 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 3 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 3 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 3 18 3 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 531 532 4 1 /* Begin include file ..... iox_modes.incl.pl1 */ 4 2 4 3 /* Written by C. D. Tavares, 03/17/75 */ 4 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 4 5 4 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 4 7 ("stream_input", "stream_output", "stream_input_output", 4 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 4 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 4 10 "direct_input", "direct_output", "direct_update"); 4 11 4 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 4 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 4 14 4 15 dcl (Stream_input initial (1), 4 16 Stream_output initial (2), 4 17 Stream_input_output initial (3), 4 18 Sequential_input initial (4), 4 19 Sequential_output initial (5), 4 20 Sequential_input_output initial (6), 4 21 Sequential_update initial (7), 4 22 Keyed_sequential_input initial (8), 4 23 Keyed_sequential_output initial (9), 4 24 Keyed_sequential_update initial (10), 4 25 Direct_input initial (11), 4 26 Direct_output initial (12), 4 27 Direct_update initial (13)) fixed bin int static options (constant); 4 28 4 29 /* End include file ..... iox_modes.incl.pl1 */ 533 534 5 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 5 2 /* Created: 15 February 1982 by G. Palter */ 5 3 5 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 5 5 5 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 5 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 5 8 5 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 5 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 5 11 5 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 5 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 5 14 5 15 /* For example: 5 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 5 17 5 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 535 6 1 /* BEGIN INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 6 2 /* Created: June 1982 by G. Palter */ 6 3 6 4 /* Options for the standard subsystem request processor */ 6 5 6 6 dcl 1 rp_options aligned based (rp_options_ptr), 6 7 2 version character (8), 6 8 2 language_info, /* defines the request language */ 6 9 3 non_standard_language bit (1) aligned, /* ... ON => use language defined in following array */ 6 10 3 character_types (0 : 511) fixed binary (9) unaligned unsigned, 6 11 2 abbrev_info, /* information related to abbreviation processing ... */ 6 12 3 expand_request_lines bit (1) aligned, /* ... ON => request processor should expand abbreviations */ 6 13 3 default_profile_ptr pointer, /* ... -> profile to use if ".u" given without pathname */ 6 14 3 profile_ptr pointer; /* ... -> abbreviation profile used by this subsystem */ 6 15 6 16 dcl rp_options_ptr pointer; 6 17 6 18 dcl RP_OPTIONS_VERSION_1 character (8) static options (constant) initial ("rpo_0001"); 6 19 6 20 /* END INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 536 537 dcl 1 local_rpo like rp_options; 7 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 7 2 7 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 7 4 7 5 dcl area_infop ptr; 7 6 7 7 dcl 1 area_info aligned based (area_infop), 7 8 2 version fixed bin, /* version number for this structure is 1 */ 7 9 2 control aligned like area_control, /* control bits for the area */ 7 10 2 owner char (32) unal, /* creator of the area */ 7 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 7 12 2 size fixed bin (18), /* size of the area in words */ 7 13 2 version_of_area fixed bin, /* version of area (returned only) */ 7 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 7 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 7 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 7 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 7 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 7 19 7 20 dcl 1 area_control aligned based, 7 21 2 extend bit (1) unal, /* says area is extensible */ 7 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 7 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 7 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 7 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 7 26 2 system bit (1) unal, /* says area is managed by system */ 7 27 2 pad bit (30) unal; 7 28 7 29 /* END INCLUDE FILE area_info.incl.pl1 */ 538 539 540 end read_tape_and_query; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/28/87 0918.9 read_tape_and_query.pl1 >special_ldd>install>MR12.1-1048>read_tape_and_query.pl1 527 1 07/28/87 0918.0 rtq_structure_info.incl.pl1 >special_ldd>install>MR12.1-1048>rtq_structure_info.incl.pl1 529 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 531 3 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 533 4 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 535 5 04/13/82 1620.2 ssu_prompt_modes.incl.pl1 >ldd>include>ssu_prompt_modes.incl.pl1 536 6 09/28/82 1437.6 ssu_rp_options.incl.pl1 >ldd>include>ssu_rp_options.incl.pl1 538 7 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_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. DEFAULT_BUFFER_SIZE constant fixed bin(17,0) initial dcl 111 ref 480 481 DONT_PROMPT 000135 constant bit(1) initial unaligned dcl 5-7 set ref 216* NEXT_POS_IN_THE_LIST_OF_TABLES 000152 constant fixed bin(17,0) initial dcl 112 set ref 190* 198* NINE_TRACK constant fixed bin(17,0) initial dcl 113 ref 356 NUMBER_OF_CHARACTER_PER_WORD 003670 constant fixed bin(17,0) initial dcl 114 ref 366 367 480 PROMPT 000146 constant bit(1) initial unaligned dcl 5-6 set ref 222* RP_OPTIONS_VERSION_1 000000 constant char(8) initial unaligned dcl 6-18 set ref 207* R_ACCESS 000135 constant bit(3) initial unaligned dcl 2-11 set ref 431* SEVEN_TRACK constant fixed bin(17,0) initial dcl 115 ref 356 TERM_FILE_TERM 000002 constant bit(3) initial unaligned dcl 3-14 set ref 517* Version 000346 automatic char(8) level 2 dcl 1-12 set ref 296* abbrev_info 204 000624 automatic structure level 2 unaligned dcl 537 abbrev_specified_flg 000100 automatic bit(1) unaligned dcl 68 set ref 206 416* 419* 423* 476* addr builtin function dcl 105 ref 181 181 181 181 190 190 207 207 212 212 225 area_control based structure level 1 dcl 7-20 arg based char unaligned dcl 99 set ref 310 338 339 346 346 348 352 352 354* 361 361 363* 370 370 372* 386 397 400 400 403 403 413 413 416 416 419 419 422 422 428* 438 443 443 461 462* arg_count 000101 automatic fixed bin(17,0) dcl 69 set ref 326* 342 arg_dex 000106 automatic fixed bin(17,0) dcl 72 set ref 311* 311 312* 342* 343* 387* 387 389* 424* 424 426* 450* 450 452* 462* 477* arg_length 000102 automatic fixed bin(21,0) dcl 70 set ref 310 312* 327* 338 339 343* 346 346 348 352 352 354 354 361 361 363 363 370 370 372 372 386 397 400 400 403 403 413 413 416 416 419 419 422 422 426* 428 428 438 443 443 461 462 462 477* arg_ptr 000104 automatic pointer dcl 71 set ref 310 312* 327* 338 339 343* 346 346 348 352 352 354 361 361 363 370 370 372 386 397 400 400 403 403 413 413 416 416 419 419 422 422 426* 428 438 443 443 461 462 478* array_index 000107 automatic fixed bin(17,0) dcl 73 set ref 376* 377* atd_sw 60 000346 automatic bit(1) level 3 dcl 1-12 set ref 277* bit_count 000110 automatic fixed bin(24,0) dcl 74 set ref 431* 517* bits 2 000346 automatic fixed bin(35,0) level 2 dcl 1-12 set ref 283* block_size 3 000346 automatic fixed bin(35,0) level 2 dcl 1-12 set ref 283* blocksize 000111 automatic fixed bin(35,0) dcl 75 set ref 363* 365 366 366 477* buf_ful 61 000346 automatic bit(1) level 3 dcl 1-12 set ref 277* buf_size 000113 automatic fixed bin(21,0) dcl 76 in procedure "rtq" set ref 290 366* 367 480* buf_size 4 000346 automatic fixed bin(21,0) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 290* c_den 5 000346 automatic char(5) level 2 dcl 1-12 set ref 289* c_file 7 000346 automatic fixed bin(17,0) level 2 dcl 1-12 set ref 285* c_mode 10 000346 automatic fixed bin(17,0) level 2 dcl 1-12 set ref 285* c_rec 11 000346 automatic fixed bin(17,0) level 2 dcl 1-12 set ref 285* cbufp 12 000346 automatic pointer level 3 dcl 1-12 set ref 286* cdkp 14 000346 automatic pointer level 3 dcl 1-12 set ref 286* cdptr 16 000346 automatic pointer level 3 dcl 1-12 set ref 286* cfptr 20 000346 automatic pointer level 3 dcl 1-12 set ref 286* char builtin function dcl 105 ref 357 365 379 cleanup 000332 stack reference condition dcl 108 ref 175 clen 42 000346 automatic fixed bin(21,0) level 2 dcl 1-12 set ref 283* code 000112 automatic fixed bin(35,0) dcl 75 set ref 169 181* 184 185* 190* 192 193* 198* 200 201* 229* 230 237* 238 239 239 239 242 246* 252* 255 255* 312* 313 314* 326* 327* 328 329* 342 343* 344 354* 355 363* 364 372* 373 389* 390 391* 426* 427 428* 429 431* 433* 452* 453 454* 477* 516* 517* 519 519* com_err_ 000010 constant entry external dcl 125 ref 185 193 201 246 255 314 329 391 405 433 445 454 462 519 cu_$arg_count 000012 constant entry external dcl 126 ref 326 cu_$arg_ptr 000014 constant entry external dcl 127 ref 312 327 343 389 426 452 cv_dec_check_ 000016 constant entry external dcl 128 ref 354 363 372 cvbl 43 000346 automatic fixed bin(21,0) level 2 dcl 1-12 set ref 283* cvbp 24 000346 automatic pointer level 3 dcl 1-12 set ref 287* cvp 22 000346 automatic pointer level 3 dcl 1-12 set ref 287* ddec 000114 automatic fixed bin(35,0) dcl 77 in procedure "rtq" set ref 291 372* 377 379 477* ddec 44 000346 automatic fixed bin(35,0) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 291* default_profile_ptr 206 000624 automatic pointer level 3 dcl 537 set ref 209* density 46 000346 automatic char(5) array level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 292* density 000074 constant char(5) initial array unaligned dcl 116 in procedure "rtq" ref 292 376 377 dir_name 000115 automatic char(168) unaligned dcl 78 set ref 428* 431* 433* 433* 479* divide builtin function dcl 105 ref 367 entry_name 000167 automatic char(32) unaligned dcl 79 set ref 428* 431* 433* 433* 479* eof 62 000346 automatic bit(1) level 3 dcl 1-12 set ref 277* eof_request_flg 63 based bit(1) level 3 dcl 102 set ref 278* eov 64 000346 automatic bit(1) level 3 dcl 1-12 set ref 277* error_table_$bad_arg 000066 external static fixed bin(35,0) dcl 150 set ref 462* error_table_$badcall 000070 external static fixed bin(35,0) dcl 151 set ref 445* error_table_$inconsistent 000072 external static fixed bin(35,0) dcl 152 set ref 405* expand_pathname_$add_suffix 000020 constant entry external dcl 129 ref 428 expand_request_lines 204 000624 automatic bit(1) level 3 dcl 537 set ref 208* extend_sw 65 000346 automatic bit(1) level 3 dcl 1-12 set ref 279* f_attached 66 000346 automatic bit(1) level 3 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 279* f_attached 66 based bit(1) level 3 in structure "rtq_info" dcl 102 in procedure "rtq" set ref 503 506* filename 106 000346 automatic varying char(32) level 2 dcl 1-12 set ref 289* filepath 117 000346 automatic varying char(168) level 2 dcl 1-12 set ref 289* fiocb_ptr 26 based pointer level 3 in structure "rtq_info" dcl 102 in procedure "rtq" set ref 504* 505* fiocb_ptr 26 000346 automatic pointer level 3 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 287* fixed builtin function dcl 105 ref 377 flags 60 based structure level 2 in structure "rtq_info" dcl 102 in procedure "rtq" flags 60 000346 automatic structure level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" fw_file 67 000346 automatic bit(1) level 3 dcl 1-12 set ref 279* hbound builtin function dcl 105 ref 376 info_dir 000022 constant char(168) initial unaligned dcl 118 set ref 181* initiate_file_ 000022 constant entry external dcl 130 ref 431 ioa_ 000024 constant entry external dcl 131 ref 330 331 iox_$close 000026 constant entry external dcl 132 ref 495 504 iox_$detach_iocb 000030 constant entry external dcl 133 ref 496 505 l_type 45 000346 automatic fixed bin(17,0) level 2 dcl 1-12 set ref 284* last_job_deck_flg 70 based bit(1) level 3 in structure "rtq_info" dcl 102 in procedure "rtq" set ref 506* last_job_deck_flg 70 000346 automatic bit(1) level 3 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 280* lblp 30 000346 automatic pointer level 3 dcl 1-12 set ref 287* local_rpo 000624 automatic structure level 1 unaligned dcl 537 set ref 207 207 212 212 ltrim builtin function dcl 105 ref 357 365 379 match 000177 automatic bit(1) dcl 80 set ref 375* 376 378* 382 mod builtin function dcl 105 ref 366 no_prompt_specified_flg 000200 automatic bit(1) unaligned dcl 81 set ref 216 397* 476* null builtin function dcl 105 ref 252 252 286 287 288 432 478 494 499 517 old_arg 001054 automatic char(32) initial unaligned dcl 307 set ref 307* 310* 314* one_eof 71 000346 automatic bit(1) level 3 dcl 1-12 set ref 280* pathname_ 000032 constant entry external dcl 134 ref 433 433 pname 000013 constant char(19) initial unaligned dcl 120 set ref 185* 193* 201* 255* 314* 329* 391* 405* 433* 445* 454* 462* 519* pointers 12 based structure level 2 in structure "rtq_info" dcl 102 in procedure "rtq" pointers 12 000346 automatic structure level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" profile_ptr 210 000624 automatic pointer level 3 in structure "local_rpo" dcl 537 in procedure "rtq" set ref 210* profile_ptr 000202 automatic pointer dcl 82 in procedure "rtq" set ref 209 210 431* 432 478* 517 517* program_interrupt 000340 stack reference condition dcl 108 ref 178 prompt_length 000204 automatic fixed bin(21,0) dcl 83 set ref 216 218 219 389* 394 394* 477* prompt_ptr 000206 automatic pointer dcl 84 set ref 219 389* 478* prompt_string based char unaligned dcl 100 ref 219 quit_specified_flg 000210 automatic bit(1) unaligned dcl 85 set ref 233 404 440* 476* rec_len 103 000346 automatic fixed bin(21,0) level 2 dcl 1-12 set ref 284* records_in_file_flg 72 based bit(1) level 3 dcl 102 set ref 281* release_area_ 000112 constant entry external dcl 490 ref 499 request_line_length 000211 automatic fixed bin(21,0) dcl 86 set ref 237* 452* 477* request_line_ptr 000212 automatic pointer dcl 87 set ref 237* 452* 478* request_loop_specified_flg 000214 automatic bit(1) unaligned dcl 88 set ref 410* 413* 439 476* request_specified_flg 000215 automatic bit(1) unaligned dcl 89 set ref 236 444 449* 476* requote_string_ 000036 constant entry external dcl 136 ref 348 return_subsys_loop_flg 73 000346 automatic bit(1) level 3 dcl 1-12 set ref 280* rp_options based structure level 1 dcl 6-6 rptr 32 000346 automatic pointer level 3 dcl 1-12 set ref 288* rtq_$set_up 000034 constant entry external dcl 135 ref 229 rtq_area_ptr 34 based pointer level 3 in structure "rtq_info" dcl 102 in procedure "rtq" set ref 499 499* rtq_area_ptr 34 000346 automatic pointer level 3 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 288* rtq_info based structure level 1 dcl 102 rtq_info_ptr 000216 automatic pointer dcl 90 in procedure "rtq" set ref 225* 229* 259* 278 281 478* 494 495 496 499 499 503 504 505 506 506 rtq_info_ptr parameter pointer dcl 491 in procedure "read_tape_and_query_janitor" ref 487 rtq_request_table_$rtq_request_table_ 000074 external static fixed bin(35,0) dcl 153 set ref 181 181 rtq_structure_info 000346 automatic structure level 1 dcl 1-12 set ref 181 181 225 rtq_version_1 000020 constant char(8) initial unaligned dcl 119 set ref 181* 296 rtrim builtin function dcl 105 ref 348 357 365 379 400 sci_ptr parameter pointer dcl 491 in procedure "read_tape_and_query_janitor" ref 487 sci_ptr 000220 automatic pointer dcl 91 in procedure "rtq" set ref 181* 190* 198* 207* 212* 216* 220* 222* 229* 237* 252* 259* 266* 478* set_bin 74 000346 automatic bit(1) level 3 dcl 1-12 set ref 282* set_nine 75 000346 automatic bit(1) level 3 dcl 1-12 set ref 282* ssu_$add_info_dir 000040 constant entry external dcl 137 ref 198 ssu_$add_request_table 000042 constant entry external dcl 138 ref 190 ssu_$create_invocation 000044 constant entry external dcl 139 ref 181 ssu_$destroy_invocation 000046 constant entry external dcl 140 ref 266 ssu_$execute_line 000050 constant entry external dcl 141 ref 237 ssu_$get_default_rp_options 000052 constant entry external dcl 142 ref 207 ssu_$listen 000054 constant entry external dcl 143 ref 252 ssu_$set_prompt 000060 constant entry external dcl 145 ref 220 ssu_$set_prompt_mode 000056 constant entry external dcl 144 ref 216 222 ssu_$set_request_processor_options 000062 constant entry external dcl 146 ref 212 ssu_et_$null_request_line 000100 external static fixed bin(35,0) dcl 155 ref 239 ssu_et_$program_interrupt 000102 external static fixed bin(35,0) dcl 156 ref 239 ssu_et_$request_line_aborted 000104 external static fixed bin(35,0) dcl 157 ref 239 ssu_et_$subsystem_aborted 000076 external static fixed bin(35,0) dcl 154 ref 242 255 ssu_info_directories_$standard_requests 000106 external static char(168) unaligned dcl 158 set ref 198* ssu_request_tables_$standard_requests 000110 external static fixed bin(35,0) dcl 159 set ref 190 190 substr builtin function dcl 105 ref 377 461 tape_atd 000224 automatic char(200) unaligned dcl 93 in procedure "rtq" set ref 293 339* 348* 348 357* 357 365* 365 379* 379 400* 400 479* tape_atd 172 000346 automatic varying char(200) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 293* tape_name 000222 automatic char(8) unaligned dcl 92 in procedure "rtq" set ref 294 338* 479* tape_name 101 000346 automatic char(8) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 294* tdec 000306 automatic fixed bin(35,0) dcl 94 in procedure "rtq" set ref 295 354* 356 356 357 477* tdec 104 000346 automatic fixed bin(35,0) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 295* terminate_file_ 000064 constant entry external dcl 147 ref 517 tiocb_ptr 36 based pointer level 3 in structure "rtq_info" dcl 102 in procedure "rtq" set ref 494 495* 496* tiocb_ptr 36 000346 automatic pointer level 3 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 288* tmr 77 000346 automatic bit(1) level 3 dcl 1-12 set ref 282* tptr 40 000346 automatic pointer level 3 dcl 1-12 set ref 288* two_eofs 100 000346 automatic bit(1) level 3 dcl 1-12 set ref 282* var_prompt_string 000307 automatic varying char(64) dcl 95 set ref 219* 220* 479* wd_buf_size 000330 automatic fixed bin(17,0) dcl 96 in procedure "rtq" set ref 297 367* 481* wd_buf_size 105 000346 automatic fixed bin(17,0) level 2 in structure "rtq_structure_info" dcl 1-12 in procedure "rtq" set ref 297* whoami 000003 constant char(32) initial unaligned dcl 122 set ref 181* 246* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-33 DONT_PROMPT_AFTER_NULL_LINES internal static bit(2) initial unaligned dcl 5-10 DONT_PROMPT_IF_TYPEAHEAD internal static bit(3) initial unaligned dcl 5-13 Direct_input internal static fixed bin(17,0) initial dcl 4-15 Direct_output internal static fixed bin(17,0) initial dcl 4-15 Direct_update internal static fixed bin(17,0) initial dcl 4-15 E_ACCESS internal static bit(3) initial unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 4-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 4-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 4-15 M_ACCESS internal static bit(3) initial unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 PROMPT_AFTER_NULL_LINES internal static bit(2) initial unaligned dcl 5-9 PROMPT_IF_TYPEAHEAD internal static bit(3) initial unaligned dcl 5-12 REW_ACCESS internal static bit(3) initial unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS internal static bit(3) initial unaligned dcl 2-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 S_ACCESS internal static bit(3) initial unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Sequential_input internal static fixed bin(17,0) initial dcl 4-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 4-15 Sequential_output internal static fixed bin(17,0) initial dcl 4-15 Sequential_update internal static fixed bin(17,0) initial dcl 4-15 Stream_input internal static fixed bin(17,0) initial dcl 4-15 Stream_input_output internal static fixed bin(17,0) initial dcl 4-15 Stream_output internal static fixed bin(17,0) initial dcl 4-15 TERM_FILE_BC internal static bit(2) initial unaligned dcl 3-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 3-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 3-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 3-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 3-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 3-15 W_ACCESS internal static bit(3) initial unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 area_info based structure level 1 dcl 7-7 area_info_version_1 internal static fixed bin(17,0) initial dcl 7-3 area_infop automatic pointer dcl 7-5 iox_modes internal static char(24) initial array dcl 4-6 request_line based char unaligned dcl 101 rp_options_ptr automatic pointer dcl 6-16 short_iox_modes internal static char(4) initial array dcl 4-12 terminate_file_switches based structure level 1 packed unaligned dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. DESTROY_INVOCATION 001331 constant label dcl 262 ref 186 194 202 230 FINISH_SUBSYSTEM 001327 constant label dcl 259 ref 175 233 242 247 INCONSISTENT 002717 constant label dcl 405 ref 439 INVOKE_LISTEN 001260 constant label dcl 252 ref 178 239 bad_arg 003342 constant label dcl 462 ref 355 356 364 373 382 427 429 fill_in_fields_of_rtq_stru_info 001342 constant entry internal dcl 272 ref 227 get_nxt_arg 001466 constant entry internal dcl 304 ref 347 353 362 371 get_users_optional_control_args 001557 constant entry internal dcl 323 ref 167 init_intermediate_variables 003410 constant entry internal dcl 473 ref 164 read_tape_and_query 000551 constant entry external dcl 64 read_tape_and_query_janitor 003456 constant entry internal dcl 487 ref 259 rtq 000542 constant entry external dcl 64 terminate_null_ref_name 003562 constant entry internal dcl 513 ref 170 262 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4346 4462 3673 4356 Length 5102 3673 114 403 453 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rtq 994 external procedure is an external procedure. on unit on line 175 64 on unit on unit on line 178 64 on unit fill_in_fields_of_rtq_stru_info internal procedure shares stack frame of external procedure rtq. get_nxt_arg internal procedure shares stack frame of external procedure rtq. get_users_optional_control_args internal procedure shares stack frame of external procedure rtq. init_intermediate_variables internal procedure shares stack frame of external procedure rtq. read_tape_and_query_janitor internal procedure shares stack frame of external procedure rtq. terminate_null_ref_name internal procedure shares stack frame of external procedure rtq. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rtq 000100 abbrev_specified_flg rtq 000101 arg_count rtq 000102 arg_length rtq 000104 arg_ptr rtq 000106 arg_dex rtq 000107 array_index rtq 000110 bit_count rtq 000111 blocksize rtq 000112 code rtq 000113 buf_size rtq 000114 ddec rtq 000115 dir_name rtq 000167 entry_name rtq 000177 match rtq 000200 no_prompt_specified_flg rtq 000202 profile_ptr rtq 000204 prompt_length rtq 000206 prompt_ptr rtq 000210 quit_specified_flg rtq 000211 request_line_length rtq 000212 request_line_ptr rtq 000214 request_loop_specified_flg rtq 000215 request_specified_flg rtq 000216 rtq_info_ptr rtq 000220 sci_ptr rtq 000222 tape_name rtq 000224 tape_atd rtq 000306 tdec rtq 000307 var_prompt_string rtq 000330 wd_buf_size rtq 000346 rtq_structure_info rtq 000624 local_rpo rtq 001054 old_arg get_nxt_arg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac tra_ext_1 mdfx1 enable_op shorten_stack ext_entry int_entry any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_dec_check_ expand_pathname_$add_suffix initiate_file_ ioa_ iox_$close iox_$detach_iocb pathname_ release_area_ requote_string_ rtq_$set_up ssu_$add_info_dir ssu_$add_request_table ssu_$create_invocation ssu_$destroy_invocation ssu_$execute_line ssu_$get_default_rp_options ssu_$listen ssu_$set_prompt ssu_$set_prompt_mode ssu_$set_request_processor_options terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badcall error_table_$inconsistent rtq_request_table_$rtq_request_table_ ssu_et_$null_request_line ssu_et_$program_interrupt ssu_et_$request_line_aborted ssu_et_$subsystem_aborted ssu_info_directories_$standard_requests ssu_request_tables_$standard_requests LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 64 000541 164 000556 167 000557 169 000560 170 000562 171 000563 175 000564 178 000603 181 000622 184 000665 185 000667 186 000713 190 000714 192 000733 193 000735 194 000761 198 000762 200 001007 201 001011 202 001035 206 001036 207 001040 208 001060 209 001062 210 001064 212 001065 216 001103 218 001126 219 001130 220 001140 221 001151 222 001152 225 001167 227 001171 229 001172 230 001205 233 001207 236 001211 237 001213 238 001230 239 001232 242 001241 246 001243 247 001257 252 001260 255 001275 259 001327 262 001331 266 001332 268 001341 272 001342 277 001343 278 001347 279 001351 280 001354 281 001357 282 001360 283 001364 284 001370 285 001372 286 001376 287 001403 288 001410 289 001415 290 001422 291 001424 292 001426 293 001446 294 001453 295 001456 296 001460 297 001462 299 001464 304 001466 307 001470 310 001473 311 001500 312 001501 313 001516 314 001520 315 001550 317 001553 323 001557 326 001560 327 001571 328 001610 329 001612 330 001641 331 001655 334 001674 338 001675 339 001702 342 001717 343 001731 344 001746 346 001751 347 001763 348 001771 350 002064 352 002066 353 002076 354 002104 355 002127 356 002131 357 002136 359 002222 361 002224 362 002234 363 002242 364 002265 365 002267 366 002353 367 002363 368 002365 370 002366 371 002376 372 002404 373 002427 375 002431 376 002432 377 002441 378 002464 379 002466 380 002552 381 002553 382 002555 384 002557 386 002560 387 002564 389 002565 390 002602 391 002604 392 002630 394 002631 395 002635 397 002636 400 002645 403 002704 404 002715 405 002717 408 002746 410 002747 411 002751 413 002752 416 002764 419 002777 422 003011 423 003021 424 003023 426 003024 427 003041 428 003043 429 003101 431 003103 432 003140 433 003144 434 003214 436 003215 438 003216 439 003222 440 003224 441 003226 443 003227 444 003237 445 003241 446 003265 449 003266 450 003270 452 003271 453 003306 454 003310 455 003334 458 003335 461 003336 462 003342 464 003404 467 003405 469 003407 473 003410 476 003411 477 003416 478 003426 479 003435 480 003451 481 003453 483 003455 487 003456 494 003460 495 003465 496 003477 499 003512 503 003526 504 003531 505 003543 506 003556 509 003561 513 003562 516 003563 517 003564 519 003615 521 003643 ----------------------------------------------------------- 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