COMPILATION LISTING OF SEGMENT retriever Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1433.8 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-11-17,GWMay), approve(86-11-17,MCR7445), audit(86-11-20,GDixon), 16* install(86-11-21,MR12.0-1223): 17* added entrypoint "test" for debugging the retriever from a user process 18* without changes to the system volume retriever queues. 19* 2) change(88-08-10,GWMay), approve(88-10-05,MCR8005), audit(88-10-12,Farley), 20* install(88-10-17,MR12.2-1173): 21* Added administrative support for two additional temporary work segments. 22* END HISTORY COMMENTS */ 23 24 25 /* format: style1,ind2,^inddcls,ifthenstmt,dclind2,declareind2,ifthendo,ifthen*/ 26 27 retriever: retrieve_from_volume: retv: proc; 28 29 /* This is the main control routine of the volume retriever subsystem. It initializes the 30* static control structure, parses the arguments, and controls which requests are processed. It uses two 31* other routines, retv_vol_control_, to determine which dump volumes a request may be recovered from 32* and retrieve_from_volume_, to recover objects from a specified dump volume. The major data bases created by 33* this subsystem are in the process directory or in external static and are initialize/created for each invocation. 34**/ 35 36 /* Modified 6/79 by D. Vinograd to correct notification bug, add accounting control argument , 37* add directory name space searching option, and xxx 38* Modified: 12/18/81 by GA Texada to correct a bug in cross-retrieval (phx12113) 39* Modified: 09/03/82 by GA Texada to fix a bug in scan_sub_tree when it calls submit_request. 40* Modified: 3/83 by E. N. Kittlitz for 256K segments. 41* Modified: 8/83 by GA Texada to make the "list" request go thru all the q's. 42* Modified: 5/15/85 by GA Texada to ensure that retv_data_.qidx(X) is zeroed after calling message_segment_$delete 43**/ 44 45 dcl wdir char (168); 46 dcl short char (8) aligned; 47 dcl ac fixed bin; 48 dcl options_string char (256); 49 dcl osl fixed bin; 50 dcl narg fixed bin; 51 dcl answer char (3) var; 52 dcl long char (100) aligned; 53 dcl message char (256); 54 dcl message_len fixed bin; 55 dcl line char (32); 56 dcl tp (9) ptr; 57 dcl nelemt fixed bin (21); 58 dcl rvcx fixed bin; 59 dcl sorty fixed bin; 60 dcl sortx fixed bin; 61 dcl nvolx fixed bin; 62 dcl q fixed bin; 63 dcl qx fixed bin; 64 dcl to_from bit (1); 65 dcl retv_ms_id bit (72) aligned; 66 dcl more_messages bit (1); 67 dcl more_to_do bit (1); 68 dcl dtm bit (36); 69 dcl queue_name char (32); 70 dcl step bit (1); 71 dcl list bit (1); 72 dcl code fixed bin (35); 73 dcl type fixed bin; 74 dcl ignore fixed bin (35); 75 dcl arg char (argl) based (argp); 76 dcl argl fixed bin; 77 dcl argp ptr; 78 dcl old_256K_switch bit (2) aligned; 79 80 dcl based_area area based (retv_data_.areap); 81 82 dcl LINK fixed bin static init (3) options (constant); 83 dcl DIR fixed bin int static init (2) options (constant); 84 dcl recursive_invocation bit (1) aligned int static init ("0"b); 85 dcl myname char (32) int static init ("retrieve_from_volume") options (constant); 86 dcl max_q_num fixed bin static init (3) options (constant); 87 88 dcl 1 local_mseg_return_args like mseg_return_args aligned; 89 dcl 1 local_retv_input like retv_input aligned; 90 91 dcl error_table_$noentry ext fixed bin (35); 92 dcl error_table_$resource_unavailable ext fixed bin (35); 93 dcl error_table_$badopt fixed bin (35) ext; 94 dcl error_table_$vtoce_connection_fail ext fixed bin (35); 95 dcl error_table_$bad_segment ext fixed bin (35); 96 dcl error_table_$no_message ext fixed bin (35); 97 dcl sys_info$seg_size_256K fixed bin (19) ext static; 98 dcl sys_info$max_seg_size fixed bin (18) ext static; 99 100 dcl retv_vol_control_$sort entry (ptr, fixed bin (35)); 101 dcl retv_notify_ entry (char (*), ptr, char (*)); 102 dcl request_id_ entry (fixed bin (71)) returns (char (19)); 103 dcl get_wdir_ entry returns (char (168)); 104 dcl retv_report_$error_output entry options (variable); 105 dcl retv_report_$online_output entry options (variable); 106 dcl message_segment_$close entry (fixed bin, fixed bin (35)); 107 dcl message_segment_$open entry (char (*), char (*), fixed bin, fixed bin (35)); 108 dcl message_segment_$delete entry (char (*), char (*), fixed bin (35)); 109 dcl message_segment_$delete_index entry (fixed bin, bit (72) aligned, fixed bin (35)); 110 dcl command_query_ entry options (variable); 111 dcl system_privilege_$ring1_priv_on entry (fixed bin (35)); 112 dcl system_privilege_$ring1_priv_off entry (fixed bin (35)); 113 dcl system_privilege_$ipc_priv_on entry (fixed bin (35)); 114 dcl system_privilege_$ipc_priv_off entry (fixed bin (35)); 115 dcl retv_account_$create entry (fixed bin (35)); 116 dcl retv_account_$update entry (char (*) aligned); 117 dcl hc_backup_$retv_name_list entry (char (*) aligned, ptr, ptr, fixed bin, fixed bin (35)); 118 dcl hc_backup_$retv_check entry (char (*) aligned, char (*) aligned, fixed bin, bit (36), fixed bin (35)); 119 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 120 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 121 dcl hcs_$set_256K_switch entry (bit (2) aligned, bit (2) aligned, fixed bin (35)); 122 dcl hcs_$set_max_length_seg entry (ptr, fixed bin (19), fixed bin (35)); 123 dcl hcs_$truncate_seg entry (ptr, fixed bin (19), fixed bin (35)); 124 dcl date_time_ entry (fixed bin (71), char (*)); 125 dcl get_system_free_area_ entry returns (ptr); 126 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 127 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 128 dcl cu_$arg_count entry (fixed bin); 129 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 130 dcl com_err_ entry options (variable); 131 dcl ioa_$rsnnl entry options (variable); 132 dcl ioa_ entry options (variable); 133 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 134 dcl ioa_$nnl entry options (variable); 135 dcl message_segment_$create entry (char (*), char (*), fixed bin (35)); 136 dcl message_segment_$add_index entry (fixed bin, ptr, fixed bin, bit (72) aligned, fixed bin (35)); 137 dcl message_segment_$read_index entry (fixed bin, ptr, bit (1), ptr, fixed bin (35)); 138 dcl retrieve_from_volume_ entry (ptr, fixed bin (35)); 139 dcl retv_vol_control_ entry (ptr, fixed bin (35)); 140 dcl message_segment_$incremental_read_index entry (fixed bin, ptr, bit (2), bit (72) aligned, ptr, 141 fixed bin (35)); 142 dcl message_segment_$update_message_index entry (fixed bin, fixed bin, bit (72) aligned, ptr, fixed bin (35)); 143 144 dcl cleanup condition; 145 dcl linkage_error condition; 146 147 dcl (fixed, hbound, before) builtin; 148 dcl addr builtin; 149 dcl size builtin; 150 dcl unspec builtin; 151 dcl length builtin; 152 dcl null builtin; 153 dcl substr builtin; 154 155 main: goto common; 156 157 test: entry (test_dir); 158 159 /* This entry point is the counter part to the test entry point in the */ 160 /* enter_retrieval_request (err) command program. It is designed for use */ 161 /* in testing the volume dumper/retriever. To use it type */ 162 /* "retrieve_from_volume$test wdir" where wdir is the directory where you */ 163 /* have created private message_segments named volume_retiever.ms and */ 164 /* volume_retiever(1 2 3).ms for use as the retriever queues. */ 165 /* Type "err$test wdir" before entering the retrieval request giving the */ 166 /* same directory which contains the queue. */ 167 168 dcl test_dir char (*); 169 queue_dir = test_dir; 170 return; 171 172 common: 173 /* protect against recursive invocation */ 174 if recursive_invocation then do; 175 call com_err_ (0, myname, "Recursive invocation not allowed "); 176 return; 177 end; 178 /* initialize static variables */ 179 old_256K_switch = ""b; 180 tp (*) = null; 181 retv_data_.ptrs = null; 182 retv_data_.chars = ""; 183 retv_data_.bits = ""b; 184 retv_data_.sys_dir = ">daemon_dir_dir>volume_backup"; 185 retv_data_.fixed = 0; 186 retv_data_.all = "1"b; 187 retv_data_.io_module = "tape_mult_"; 188 /* and some local variables */ 189 ms_arg_ptr = addr (local_mseg_return_args); 190 q = 1; 191 list = "0"b; 192 wdir = get_wdir_ (); 193 step = "0"b; 194 /* initialize mail structure */ 195 /* process arguments */ 196 inputp, requestp = null; 197 ac = 1; 198 call cu_$arg_count (narg); 199 do while (ac <= narg); 200 call cu_$arg_ptr (ac, argp, argl, code); 201 if code ^= 0 then do; 202 no_arg: call retv_report_$error_output (code, myname, "Unable to access arg after ^a", arg); 203 goto finale; 204 end; 205 ac = ac + 1; 206 if arg = "-step" then step = "1"b; 207 else if arg = "-manual" then retv_data_.manual = "1"b; 208 else if arg = "-long" then retv_data_.long = "1"b; 209 else if arg = "-working_dir" | arg = "-wd" then retv_data_.sys_dir = wdir; 210 else if arg = "-accounting" then retv_data_.accounting = "1"b; 211 else if arg = "-all" | arg = "-a" then ; 212 else if arg = "-error_on" then retv_data_.err_online = "1"b; 213 else if arg = "-list" then list = "1"b; 214 else if arg = "-input_volume_desc" then do; 215 call cu_$arg_ptr (ac, argp, argl, code); 216 if code ^= 0 then goto no_arg; 217 ac = ac + 1; 218 retv_data_.input_volume_desc = arg; 219 retv_data_.io_module = before (arg, " "); 220 end; 221 else if arg = "-q" | arg = "-queue" then do; 222 retv_data_.all = "0"b; 223 call cu_$arg_ptr (ac, argp, argl, code); 224 if code ^= 0 then goto no_arg; 225 ac = ac + 1; 226 q = cv_oct_check_ (arg, code); 227 if code ^= 0 | (q < 1 | q > 3) then do; 228 call retv_report_$error_output (0, myname, 229 "Invalid queue number ^a", arg); 230 goto finale; 231 end; 232 end; 233 else do; 234 call retv_report_$error_output (error_table_$badopt, myname, "^a", arg); 235 goto finale; 236 end; 237 end; 238 retv_data_.queue = q; 239 on cleanup call clean_it_up; 240 recursive_invocation = "1"b; 241 start: 242 call message_segment_$open (queue_dir, queue_seg_ (), retv_data_.qidx (user), code); 243 if code ^= 0 then do; 244 call retv_report_$error_output (code, myname, "Unable to open user queue ^a>^a", queue_dir, queue_seg_ ()); 245 goto finish; 246 end; 247 248 call message_segment_$open (wdir, "volume_retriever.ms", retv_data_.qidx (retriever), code); 249 if code ^= 0 & code ^= error_table_$noentry then do; 250 call retv_report_$error_output (code, myname, "Unable to open private queue ^a>volume_retriever.ms", wdir); 251 goto finale; 252 end; 253 retv_data_.arg_init = "1"b; 254 retv_data_.areap = get_system_free_area_ (); 255 /* create temp segs and set static ptrs */ 256 call get_temp_segments_ (myname, tp, code); 257 if code ^= 0 then do; 258 call retv_report_$error_output (code, myname, "Unable to create temp segs"); 259 goto finale; 260 end; 261 retv_data_.nlp = tp (1); 262 retv_data_.aclp = tp (2); 263 retv_data_.recordp = tp (3); 264 retv_data_.objectp = tp (4); 265 retv_data_.vlp = tp (5); 266 retv_data_.contentsp = tp (6); 267 retv_data_.skip = tp (7); 268 retv_data_.input_buffer_ptr = tp (8); 269 retv_data_.page_buffer_ptr = tp (9); 270 271 call hcs_$set_256K_switch ("11"b, (""b), code); 272 if code ^= 0 then do; 273 call retv_report_$error_output (code, myname, "Could not enable 256KW segments."); 274 go to finale; 275 end; 276 call hcs_$set_max_length_seg (retv_data_.objectp, sys_info$seg_size_256K, code); 277 if code ^= 0 then do; 278 call retv_report_$error_output (code, myname, "Could not make 256K word temp seg (7)."); 279 go to finale; 280 end; 281 282 call hcs_$set_max_length_seg (retv_data_.input_buffer_ptr, sys_info$seg_size_256K, code); 283 if code ^= 0 then do; 284 call retv_report_$error_output (code, myname, "Could not make 256K word temp seg (8)."); 285 go to finale; 286 end; 287 288 call hcs_$set_max_length_seg (retv_data_.page_buffer_ptr, sys_info$seg_size_256K, code); 289 if code ^= 0 then do; 290 call retv_report_$error_output (code, myname, "Could not make 256K word temp seg (9)."); 291 go to finale; 292 end; 293 294 on linkage_error begin; 295 call retv_report_$error_output (0, myname, "AIM ring 1 and ipc privileges not enabled."); 296 goto set_cleanup; 297 end; 298 299 call system_privilege_$ring1_priv_on (ignore); 300 call system_privilege_$ipc_priv_on (ignore); 301 302 /* establish cleanup handler and set flag */ 303 set_cleanup: 304 revert linkage_error; 305 if retv_data_.qidx (retriever) ^= 0 then do; 306 call read_queue_message (retriever); 307 do while (more_messages); 308 inputp = mseg_return_args.ms_ptr; 309 call ioa_ ("ID: ^a Retrieval request of ^a^[>^]^a for ^a", 310 substr (request_id_ (retv_input.msg_time), 7, 8), 311 retv_input.dirname, retv_input.dirname ^= ">", 312 retv_input.ename, retv_input.requestor); 313 call ioa_$rsnnl ( 314 "^[-skip ^]^[-subtree ^]^[-notify ^]^[-previous ^]^[-to ^a ^;^s ^]^[-from ^a ^;^s^]^[-new path ^a^[->^]^a^;^s^]", 315 options_string, osl, retv_input.skip_it, 316 retv_input.subtree, retv_input.notify, retv_input.previous, 317 retv_input.to_time ^= 0 & ^retv_input.previous, 318 time_ (retv_input.to_time), retv_input.from_time ^= 0, 319 time_ (retv_input.from_time), retv_input.new_dirname ^= "", retv_input.new_dirname, 320 retv_input.new_dirname ^= ">", retv_input.new_ename); 321 if osl > 1 then 322 call ioa_ ("options: ^a", options_string); 323 if ^list & step then do; 324 reread1: call ioa_$nnl ("command: "); 325 call iox_$get_line (iox_$user_input, addr (line), length (line), nelemt, code); 326 if code ^= 0 then do; 327 call retv_report_$error_output (code, myname, "Command read error"); 328 goto reread1; 329 end; 330 line = substr (line, 1, nelemt - 1); 331 if line = "quit" | line = "q" then goto finish; 332 else if line = "skip" | line = "s" then do; 333 retv_input.skip_it = "1"b; 334 call update_queue_message; 335 end; 336 else if line = "cancel" | line = "c" then do; 337 if ^retv_input.proxy then 338 call delete_queue_message (user, retv_input.user_ms_id); 339 call delete_queue_message (retriever, mseg_return_args.ms_id); 340 end; 341 else if line = "proceed" | line = "p" then do; 342 retv_input.skip_it = "0"b; 343 call update_queue_message; 344 end; 345 else if line = "help" | line = "h" then do; 346 call ioa_ ("Allowable commands are quit(q)^/skip(s)^/cancel(c)^/proceed(p)^/help(h)"); 347 goto reread1; 348 end; 349 else do; 350 call ioa_ ("Unrecognized command: ^a", line); 351 goto reread1; 352 end; 353 end; 354 call read_incremental_queue_message (retriever); 355 end; 356 if list then goto finish; /* go to the next q */ 357 end; 358 /* create retriever's private queue if necessary */ 359 else do; 360 if list then goto finale; 361 call message_segment_$create (wdir, "volume_retriever.ms", code); 362 if code ^= 0 then do; 363 call retv_report_$error_output (code, myname, 364 "Unable to create private queue ^a>volume_retriever.ms", wdir); 365 goto finish; 366 end; 367 call message_segment_$open (wdir, "volume_retriever.ms", retv_data_.qidx (retriever), code); 368 if code ^= 0 then do; 369 call retv_report_$error_output (code, myname, 370 "Unable to open private queue ^a>volume_retriever.ms", wdir); 371 goto finish; 372 end; 373 end; 374 375 /* Read each request from user queue. If the request is not valid then delete it. If the caller 376* wants to review each request before processing then display each request . */ 377 378 user_queue: 379 call read_queue_message (user); 380 do while (more_messages); 381 requestp = mseg_return_args.ms_ptr; 382 if retv_request.version ^= retv_request_version_2 then do; 383 call retv_report_$error_output (0, myname, 384 "Invalid version of retrieval request encountered and deleted"); 385 call delete_queue_message (user, mseg_return_args.ms_id); 386 goto next; 387 end; 388 if step then do; 389 call ioa_ ("ID: ^a Retrieval request of ^a^[>^]^a for ^a", 390 substr (request_id_ (retv_request.msg_time), 7, 8), 391 retv_request.dirname, retv_request.dirname ^= ">", 392 retv_request.ename, mseg_return_args.sender_id); 393 call ioa_$rsnnl ( 394 "^[-subtree ^]^[-notify ^]^[-previous ^]^[-to ^a ^;^s ^]^[-from ^a ^;^s^]^[-new path ^a^[->^]^a^;^s^]", 395 options_string, osl, 396 retv_request.subtree, retv_request.notify, retv_request.previous, 397 retv_request.to_time ^= 0 & ^retv_request.previous, 398 time_ (retv_request.to_time), retv_request.from_time ^= 0, 399 time_ (retv_request.from_time), retv_request.new_dirname ^= "", retv_request.new_dirname, 400 retv_request.new_dirname ^= ">", retv_request.new_ename); 401 if osl > 1 then call ioa_ ("options: ^a", options_string); 402 reread: call ioa_$nnl ("command: "); 403 call iox_$get_line (iox_$user_input, addr (line), length (line), nelemt, code); 404 if code ^= 0 then do; 405 call retv_report_$error_output (code, myname, "Command read error"); 406 goto reread; 407 end; 408 line = substr (line, 1, nelemt - 1); 409 if line = "quit" | line = "q" then goto finish; 410 else if line = "skip" | line = "s" then goto next; 411 else if line = "cancel" | line = "c" then do; 412 call delete_queue_message (user, mseg_return_args.ms_id); 413 goto next; 414 end; 415 else if line = "proceed" | line = "p" then ; 416 else if line = "help" | line = "h" then do; 417 call ioa_ ("Allowable commands are quit (q)^/skip (s)^/cancel (c)^/proceed (p)^/help (h)"); 418 goto reread; 419 end; 420 else do; 421 call ioa_ ("Unrecognized command: ^a", line); 422 goto reread; 423 end; 424 end; 425 unspec (local_retv_input) = "0"b; 426 local_retv_input.request = retv_request; 427 local_retv_input.user_ms_id = mseg_return_args.ms_id; 428 local_retv_input.access_class = mseg_return_args.sender_authorization; 429 local_retv_input.level = mseg_return_args.level; 430 local_retv_input.q_num = retv_data_.queue; 431 local_retv_input.requestor = mseg_return_args.sender_id; 432 local_retv_input.submission_time = fixed (mseg_return_args.ms_id, 71); 433 call message_segment_$add_index (retv_data_.qidx (retriever), addr (local_retv_input), 434 size (local_retv_input) * 36, retv_ms_id, code); 435 if code ^= 0 then 436 call retv_report_$error_output (code, myname, 437 "Unable to add to private queue ^a>volume_retriever.ms", wdir); 438 next: 439 call read_incremental_queue_message (user); 440 end; 441 442 443 /* This is the main recovery loop. Each dump volume that has a volume control seg is read 444* After each dump volume is read the private queue is scanned 445* to check for any requests that may have been satisified. If one is found then a check is made to see if all 446* is well. This check is necessary since the retrieval of an entry may make a whole subtree accessible. If 447* all is well then the request is marked as completed in the private queue. If a subtree retrieval was requested 448* then the subtree is scanned. 449**/ 450 451 recovery_loop: 452 453 /* Loop through the queue setting the in_progress flag. This flag will be used latter to determine if a 454* request has not been satisfied */ 455 456 call read_queue_message (retriever); 457 do while (more_messages); 458 inputp = mseg_return_args.ms_ptr; 459 if ^retv_input.skip_it then do; 460 retv_input.retv_ms_id = mseg_return_args.ms_id; 461 call retv_vol_control_ (inputp, code); 462 if code ^= 0 then 463 retv_input.errcode = code; 464 retv_input.in_progress = "1"b; 465 call update_queue_message; 466 end; 467 call read_incremental_queue_message (retriever); 468 end; 469 /* if any dump volumes - setup accounting */ 470 if retv_data_.nvol > 0 & retv_data_.accounting then do; 471 call retv_account_$create (code); 472 if code ^= 0 then do; 473 call retv_report_$error_output (code, myname, "Accounting error"); 474 goto finish; 475 end; 476 end; 477 do rvcx = 1 to retv_data_.nvol; /* sort the control seg */ 478 call retv_vol_control_$sort (retv_data_.rvcp (rvcx), code); 479 end; 480 do rvcx = 1 to retv_data_.nvol; /* scan the volumes */ 481 rvcp = retv_data_.rvcp (rvcx); 482 call retrieve_from_volume_ (rvcp, code); 483 if code ^= 0 then do; 484 if code = -1 then 485 call ioa_ ("Volume ^a in use - it will be skipped", retv_vol_control.volname); 486 else if code = error_table_$resource_unavailable then do; 487 query_info.version = query_info_version_5; 488 call command_query_ (addr (query_info), answer, myname, "^/^a^/^a", 489 "The physical drive or dump volume is not available or is in use by another process.", 490 "Do you wish to continue the retrieval "); 491 if answer = "no" then goto finish; 492 end; 493 else call retv_report_$error_output (code, myname, "Error processing volume ^a", 494 retv_vol_control.volname); 495 end; 496 call read_queue_message (retriever); 497 do while (more_messages); 498 inputp = mseg_return_args.ms_ptr; 499 if retv_input.object_recovered | retv_input.entry_recovered | retv_input.errcode ^= 0 then do; 500 if retv_input.errcode = 0 then do; 501 if retv_input.new_dirname ^= "" then /* cross-retrieval */ 502 call hc_backup_$retv_check (retv_input.new_dirname, retv_input.new_ename, type, dtm, code); 503 else call hc_backup_$retv_check (retv_input.dirname, retv_input.ename, type, dtm, code); 504 if code ^= 0 & code ^= error_table_$vtoce_connection_fail then 505 call retv_report_$error_output (code, myname, "Request check failed for ^[^a^[>^]^a^3s^;^3s^a^[>^]^a^]", 506 (retv_input.new_dirname = ""), retv_input.dirname, retv_input.dirname ^= ">", retv_input.ename, 507 retv_input.new_dirname, retv_input.new_dirname ^= ">", retv_input.new_ename); 508 if code = 0 then do; 509 if retv_input.subtree & type = DIR then do; 510 to_from = (retv_input.to_time ^= 0) | (retv_input.from_time ^= 0); 511 call scan_sub_tree (retv_input.dirname, retv_input.ename, 512 to_from, ignore); 513 end; 514 if retv_input.entry_retrieval then do; 515 call ioa_$rsnnl ("Recovery of object ^a^[>^]^a not necessary as object already there", 516 message, message_len, retv_input.dirname, retv_input.dirname ^= ">", 517 retv_input.ename); 518 call retv_notify_ (message, inputp, myname); 519 end; 520 if ^retv_input.proxy then 521 call delete_queue_message (user, retv_input.user_ms_id); 522 call delete_queue_message (retriever, retv_input.retv_ms_id); 523 if retv_data_.accounting then call retv_account_$update (retv_input.requestor); 524 end; 525 end; 526 527 /* Having completed a request we now scan all other volume control segments for the same 528* request and delete it if we find it. We must take care to delete the right request since more then one request may 529* exist for the same object. 530**/ 531 532 do sortx = 1 to retv_data_.nvol; 533 rvcp = retv_data_.rvcp (sortx); 534 do sorty = 1 to retv_vol_control.n_entries; 535 rvcep = addr (retv_vol_control.array (sorty)); 536 if rvce.in_use 537 & (rvce.uid = retv_input.uid) 538 & (rvce.retv_ms_id = retv_input.retv_ms_id) then do; 539 retv_vol_control.in_use_cnt = retv_vol_control.in_use_cnt - 1; 540 rvce.in_use = "0"b; 541 end; 542 end; 543 end; 544 end; 545 call read_incremental_queue_message (retriever); 546 end; 547 end; 548 549 /* When we get here all the requests that were queued in volume control segments have been processed for 550* better or for worse. When a request is looked for on a dump volume the in_progress switch is set. If nothing 551* is found then a message is reported to the operator, and if requested to the requestor. Then the request is deleted 552* from the private queue, and the user queue. Note that proxy requests, because they are issued by the retriever 553* do not exist in the user queue. 554**/ 555 556 call read_queue_message (retriever); 557 do while (more_messages); 558 inputp = mseg_return_args.ms_ptr; 559 if retv_input.in_progress & (^retv_input.object_recovered & ^retv_input.entry_recovered) then do; 560 if retv_input.errcode ^= -1 then do; 561 call hc_backup_$retv_check (retv_input.dirname, retv_input.ename, type, dtm, code); 562 if code = 0 then do; 563 call ioa_$rsnnl ("Recovery of object ^a^[>^]^a not necessary as already there", 564 message, message_len, retv_input.dirname, retv_input.dirname ^= ">", 565 retv_input.ename); 566 end; 567 else do; 568 if retv_input.errcode = 0 then long = "object not found on dump media"; 569 else call convert_status_code_ (retv_input.errcode, short, long); 570 call ioa_$rsnnl ("Failed to recover ^a^[>^]^a for ^a because ^a", message, message_len, 571 retv_input.dirname, retv_input.dirname ^= ">", retv_input.ename, 572 retv_input.requestor, long); 573 end; 574 call retv_notify_ (message, inputp, myname); 575 end; 576 if ^retv_input.proxy then 577 call delete_queue_message (user, retv_input.user_ms_id); 578 call delete_queue_message (retriever, retv_input.retv_ms_id); 579 end; 580 call read_incremental_queue_message (retriever); 581 end; 582 583 584 /* delete the volume control segs */ 585 586 do nvolx = 1 to retv_data_.nvol; 587 rvcp = retv_data_.rvcp (nvolx); 588 if rvcp ^= null then do; 589 call hcs_$delentry_seg (rvcp, code); 590 if code ^= 0 then 591 call retv_report_$error_output (code, myname, 592 "Unable to delete control seg ^a.control", retv_vol_control.volname); 593 end; 594 end; 595 retv_data_.rvcp (*) = null; 596 retv_data_.nvol = 0; 597 598 /* Now go through the private queue once more to see if any requests remain. If one does reset 599* some control flags. Then go back to the main recovery loop */ 600 601 602 more_to_do = "0"b; 603 call read_queue_message (retriever); 604 do while (more_messages); 605 inputp = mseg_return_args.ms_ptr; 606 if ^retv_input.skip_it then do; 607 retv_input.uid = "0"b; 608 retv_input.volid = "0"b; 609 retv_input.entry_retrieval = "0"b; 610 retv_input.in_progress = "0"b; 611 retv_input.entry_name = ""; 612 retv_input.entry_recovered = "0"b; 613 retv_input.object_recovered = "0"b; 614 retv_input.errcode = 0; 615 call update_queue_message; 616 more_to_do = "1"b; 617 end; 618 call read_incremental_queue_message (retriever); 619 end; 620 if more_to_do then goto recovery_loop; 621 else do; 622 call message_segment_$delete (wdir, "volume_retriever.ms", code); 623 retv_data_.qidx (retriever) = 0; /* so it can be reused later */ 624 if code ^= 0 then call retv_report_$error_output (code, myname, 625 "Unable to delete private queue ^a>volume_retriever.ms", wdir); 626 end; 627 finish: 628 if retv_data_.queue ^= max_q_num & retv_data_.all then do; 629 retv_data_.queue = retv_data_.queue + 1; 630 goto start; 631 end; 632 finale: 633 call clean_it_up; 634 return; 635 636 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 637 638 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 639 640 queue_seg_: proc returns (char (32)); 641 642 /* This proc constructs the user queue segment name and returns it */ 643 644 call ioa_$rsnnl ("volume_retriever_^d.ms", queue_name, (0), retv_data_.queue); 645 return (queue_name); 646 end queue_seg_; 647 648 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 649 650 read_queue_message: proc (idx); 651 dcl idx fixed bin; 652 653 /* This proc reads the first message from the specified queue. */ 654 655 more_messages = "1"b; 656 read: call message_segment_$read_index (retv_data_.qidx (idx), retv_data_.areap, "0"b, ms_arg_ptr, 657 code); 658 if code ^= 0 then do; 659 if code = error_table_$no_message then more_messages = "0"b; 660 else if code = error_table_$bad_segment then do; 661 call retv_report_$error_output (0, myname, "^[Private^;User^] queue has been salvaged", 662 idx = retriever); 663 goto read; 664 end; 665 else do; 666 call retv_report_$error_output (code, myname, "^[Private^;User^] queue read failed", 667 retriever = idx); 668 goto finish; 669 end; 670 end; 671 672 end read_queue_message; 673 674 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 675 676 update_queue_message: proc; 677 678 /* This proc updates a specified message in the private queue. 679**/ 680 681 reupdate: call message_segment_$update_message_index (retv_data_.qidx (retriever), size (retv_input) * 36, 682 mseg_return_args.ms_id, inputp, code); 683 if code ^= 0 then do; 684 if code = error_table_$bad_segment then do; 685 call retv_report_$error_output (0, myname, "Private retriever queue ^a>volume_retriever.ms has been salvaged", wdir); 686 goto reupdate; 687 end; 688 else call retv_report_$error_output (code, myname, "Private queue ^a>volume_retriever.ms update failed", wdir); 689 end; 690 end update_queue_message; 691 692 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 693 694 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 695 696 read_incremental_queue_message: proc (idx); 697 dcl idx fixed bin; 698 699 /* This proc reads the next message from the specified queue. */ 700 701 if idx = retriever then do; 702 if inputp ^= null then free retv_input in (based_area); 703 inputp = null; 704 end; 705 else do; 706 if requestp ^= null then free retv_request in (based_area); 707 requestp = null; 708 709 end; 710 retry_inc: call message_segment_$incremental_read_index (retv_data_.qidx (idx), retv_data_.areap, "01"b, 711 mseg_return_args.ms_id, ms_arg_ptr, code); 712 if code ^= 0 then do; 713 if code = error_table_$bad_segment then do; 714 call retv_report_$error_output (0, myname, "^[Private^;User^] queue has been salvaged", 715 idx = retriever); 716 goto retry_inc; 717 end; 718 else if code = error_table_$no_message then more_messages = "0"b; 719 else do; 720 call retv_report_$error_output (code, myname, "^[Private^;User^] queue read failed", 721 retriever = idx); 722 goto finish; 723 end; 724 end; 725 end read_incremental_queue_message; 726 727 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 728 729 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 730 731 scan_sub_tree: proc (dn, en, force, ec); 732 733 /* This proc scans a directory and checks if each object in the directory is accessable. If not 734* it submitts a proxy requests for the missing object. If any object 735* encountered is a directory then we recurse to 736* the next level. This proc is used during subtree retrieval to check for what is missing at some level 737* inferior to the subtree node and to issue the necessary request to get the object back. In certain cases 738* even if the object is there a request is submitted. An example of this is a general request to move an existant 739* subtree back in time. */ 740 741 dcl (dn, en) char (*) aligned; 742 dcl dtm bit (36); 743 dcl force bit (1); 744 dcl nlp ptr; 745 dcl pname char (168) aligned; 746 dcl ec fixed bin (35); 747 dcl (nlc, ndx, type) fixed bin; 748 dcl names (1) char (32) aligned based (nlp); 749 call ioa_$rsnnl ("^a^[>^]^a", pname, (0), dn, dn ^= ">", en); 750 nlc = 0; 751 ec = 0; 752 call hc_backup_$retv_name_list (pname, retv_data_.areap, nlp, nlc, ec); 753 if ec ^= 0 then do; 754 call retv_report_$error_output (ec, myname, "Unable to list names of ^a", 755 pname); 756 return; 757 end; 758 do ndx = 1 to nlc; 759 ec = 0; 760 call hc_backup_$retv_check (pname, names (ndx), type, dtm, ec); 761 if ec ^= 0 & ec ^= error_table_$vtoce_connection_fail then 762 call retv_report_$error_output (ec, myname, "Subtree check failed for ^a>^a", 763 pname, names (ndx)); 764 if ((ec = error_table_$vtoce_connection_fail) | force) & type ^= LINK then do; 765 call submit_request (pname, names (ndx), type); 766 end; 767 if ec = 0 & type = DIR then 768 call scan_sub_tree (pname, names (ndx), force, ec); 769 end; 770 free names in (based_area); 771 end scan_sub_tree; 772 773 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 774 775 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 776 777 submit_request: proc (dn, en, type); 778 779 /* This proc makes up a proxy request. A proxy request occurs when the retriever, during a subtree request, 780* discovers something missing. The proxy request, while submitted by the retriever, preserves the requestor's 781* access_class, validation level, etc. It differs from the normal request in that it does not have 782* a specific request in the user's queue. */ 783 784 dcl (dn, en) char (*) aligned; 785 dcl type fixed bin; 786 unspec (local_retv_input) = "0"b; 787 local_retv_input.request = retv_input.request; 788 local_retv_input.dirname = dn; 789 local_retv_input.ename = en; 790 local_retv_input.user_ms_id = retv_input.user_ms_id; 791 local_retv_input.access_class = retv_input.access_class; 792 local_retv_input.level = retv_input.level; 793 local_retv_input.q_num = retv_input.q_num; 794 local_retv_input.requestor = retv_input.requestor; 795 local_retv_input.proxy = "1"b; 796 local_retv_input.submission_time = fixed (mseg_return_args.ms_id, 71); 797 call message_segment_$add_index (retv_data_.qidx (retriever), addr (local_retv_input), 798 size (retv_input) * 36, retv_ms_id, code); 799 if code ^= 0 then call retv_report_$error_output (code, myname, "Proxy update error"); 800 else if retv_data_.long then call retv_report_$online_output (0, 801 myname, "Proxy submission of ^[directory^;segment^] ^a^[>^]^a", type = DIR, dn, (dn ^= ">"), en); 802 end submit_request; 803 804 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 805 806 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 807 808 809 delete_queue_message: proc (idx, msid); 810 dcl idx fixed bin; 811 dcl msid bit (72) aligned; 812 813 /* This proc deletes the specified message just read from the specified queue */ 814 815 call message_segment_$delete_index (retv_data_.qidx (idx), msid, code); 816 if code ^= 0 then 817 call retv_report_$error_output (code, myname, "^[Private^;User^] queue delete failed", 818 retriever = idx); 819 end delete_queue_message; 820 821 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 822 823 time_: proc (bin_time) returns (char (24)); 824 825 /* This proc converts a binary time into a suitable prinable form and returns it. */ 826 827 dcl bin_time fixed bin (71); 828 dcl time_string char (24); 829 call date_time_ (bin_time, time_string); 830 return (time_string); 831 end time_; 832 833 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 834 835 clean_it_up: proc; 836 837 /* This proc cleans up and frees whats ever left around */ 838 839 if requestp ^= null then free retv_request in (based_area); 840 if inputp ^= null then free retv_input in (based_area); 841 if tp (1) ^= null then do; 842 call hcs_$truncate_seg (retv_data_.objectp, 0, ignore); /* clean up our 256K seg */ 843 call hcs_$set_max_length_seg (retv_data_.objectp, (sys_info$max_seg_size), ignore); /* be a good neighbour */ 844 call hcs_$truncate_seg (retv_data_.input_buffer_ptr, 0, ignore); /* clean up our 256K seg */ 845 call hcs_$set_max_length_seg (retv_data_.input_buffer_ptr, (sys_info$max_seg_size), ignore); /* be a good neighbour */ 846 call hcs_$truncate_seg (retv_data_.page_buffer_ptr, 0, ignore); /* clean up our 256K seg */ 847 call hcs_$set_max_length_seg (retv_data_.page_buffer_ptr, (sys_info$max_seg_size), ignore); /* be a good neighbour */ 848 849 call release_temp_segments_ (myname, tp, ignore); 850 end; 851 if retv_data_.error_iocbp ^= null then do; 852 call iox_$close (retv_data_.error_iocbp, ignore); 853 call iox_$detach_iocb (retv_data_.error_iocbp, ignore); 854 end; 855 if retv_data_.input_iocbp ^= null then do; 856 call iox_$close (retv_data_.input_iocbp, ignore); 857 call iox_$detach_iocb (retv_data_.input_iocbp, ignore); 858 end; 859 do nvolx = 1 to retv_data_.nvol; 860 call hcs_$delentry_seg (retv_data_.rvcp (nvolx), ignore); 861 end; 862 do qx = 1 to hbound (retv_data_.qidx, 1); 863 call message_segment_$close (retv_data_.qidx (qx), ignore); 864 end; 865 call hcs_$set_256K_switch (old_256K_switch, (""b), ignore); 866 on linkage_error goto end_clean_it_up; 867 call system_privilege_$ring1_priv_off (ignore); 868 call system_privilege_$ipc_priv_off (ignore); 869 end_clean_it_up: 870 recursive_invocation = "0"b; 871 872 end clean_it_up; 873 1 1 /* BEGIN INCLUDE FILE ... retv_data_.incl.pl1 ... 8/76 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-11-17,GWMay), approve(86-11-17,MCR7445), audit(86-11-19,GDixon), 1 7* install(86-11-21,MR12.0-1223): 1 8* Changed declaration of queue_dir from constant to just internal static so 1 9* that the entrypoints "test" in the err and retrieve_from_volume requests 1 10* are able to modify the value. 1 11* 2) change(88-08-10,GWMay), approve(88-10-05,MCR8005), audit(88-10-12,Farley), 1 12* install(88-10-17,MR12.2-1173): 1 13* Added pointer and length values for use as an input_buffer for 1 14* intermediate reads. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 dcl retv_data_version_1 fixed bin static init (1) options(constant); /* version of data base */ 1 19 1 20 /* queue_dir should not be declared options (constant). $test entrypoints in */ 1 21 /* enter_retrieval_request and retrieve_from_volume programs modify it. */ 1 22 1 23 dcl queue_dir char (168) int static init (">daemon_dir_dir>volume_retriever"); 1 24 dcl user fixed bin static init (1) options (constant); 1 25 dcl retriever fixed bin static init (2) options (constant); 1 26 1 27 dcl 1 retv_data_ external static aligned, 1 28 2 version fixed bin, /* version of structure */ 1 29 2 fixed, 1 30 3 qidx (2) fixed bin, /* indexs of queues */ 1 31 3 queue fixed bin, /* mseg queue */ 1 32 3 nvol fixed bin, /* number of volume control segments */ 1 33 3 spare fixed bin, 1 34 3 input_buffer_len fixed bin (21), /* length of the data in the read buffer */ 1 35 3 input_buffer_start fixed bin (21), /* position in read buffer where new data begins */ 1 36 2 chars, 1 37 3 sys_dir char (168), /* system dir where files live */ 1 38 3 last_valid_vtoce_ename char (32), /* last valid entry name from vtoce */ 1 39 3 last_volname char (32), /* last volume mounted */ 1 40 3 io_module char (32), /* name of io outer module */ 1 41 3 input_volume_desc char (256), /* alternate input attach description */ 1 42 2 bits, 1 43 3 last_valid_puid (16) bit (36), /* last valid uid pathname */ 1 44 3 flags, 1 45 4 manual bit (1) unal, /* if on operator will tell us what tapes to use */ 1 46 4 arg_init bit (1) unal, /* if on indicates that args have been processed */ 1 47 4 err_online bit (1) unal, /* if on causes errors to be printed */ 1 48 4 disable_error_report bit (1) unal, /* if on - no errors are reported */ 1 49 4 all bit (1) unal, /* if on indicates all queues are processed */ 1 50 4 accounting bit (1) unal, /* if on enable accounting */ 1 51 4 debug bit (1) unal, /* if on, enable debugging features */ 1 52 4 long bit(1) unal, /* if on enable long messages */ 1 53 2 ptrs, 1 54 3 page_buffer_ptr ptr, /* ptr to paged read buffer */ 1 55 3 input_buffer_ptr ptr, /* ptr to read buffer */ 1 56 3 skip ptr, /* ptr to skip_list */ 1 57 3 rasp ptr, /* ptr to accounting seg */ 1 58 3 input_iocbp ptr, /* iocb ptr for input */ 1 59 3 error_iocbp ptr, /* iocb ptr for error output */ 1 60 3 areap ptr, /* ptr to system area */ 1 61 3 contentsp ptr, /* ptr to most recent contents seg from input volume */ 1 62 3 nlp ptr, /* ptr to name array for branch being retrieved */ 1 63 3 aclp ptr, /* ptr to acl array for branch being retrieved */ 1 64 3 recordp ptr, /* ptr to last read volume record */ 1 65 3 objectp ptr, /* ptr to last read segmet or directory */ 1 66 3 vlp ptr, /* ptr to last reload group generated */ 1 67 3 rvcp (1000) ptr; /* ptrs to volume control segments */ 1 68 1 69 /* END INCLUDE FILE ... retv_data_.incl.pl1 */ 874 2 1 /* BEGIN INCLUDE FILE ... retv_request.incl.pl1 ... June 1976 */ 2 2 2 3 dcl requestp ptr; 2 4 2 5 dcl retv_request_version_2 fixed bin int static init (2) options (constant); 2 6 2 7 dcl 1 retv_request based (requestp) aligned, 2 8 2 header like queue_msg_hdr, 2 9 2 bits, 2 10 3 subtree bit (1), /* on if sub-tree retrieval desired */ 2 11 3 dirs bit (1), /* on if only subtree dirs desired */ 2 12 3 segs bit (1), /* on if only subtree segments desired */ 2 13 3 previous bit (1), /* on if prior object desired */ 2 14 2 fixed_bin, 2 15 3 version fixed bin, /* version of structure */ 2 16 3 to_time fixed bin (71), /* latest time to start search from */ 2 17 3 from_time fixed bin (71), /* from_time time not to search past */ 2 18 2 chars, 2 19 3 new_dirname char (168), /* cross retrieval directory name */ 2 20 3 new_ename char (32); /* cross retrieval entry name */ 2 21 2 22 /* END INCLUDE FILE ... retv_request.incl.pl1 */ 875 3 1 /* BEGIN INCLUDE FILE ... retv_input.incl.pl1 ... June 1976 */ 3 2 3 3 dcl inputp ptr; 3 4 3 5 3 6 dcl 1 retv_input based (inputp) aligned, 3 7 2 request like retv_request aligned, /* orignal request */ 3 8 2 bits, 3 9 3 dir_scanned bit (1), /* if on indicates that dir already scanned for subtree requests */ 3 10 3 proxy bit (1), /* on if request submitted as result of -all option */ 3 11 3 user_ms_id bit (72), /* uid of message in user queue */ 3 12 3 retv_ms_id bit(72), /* uid of message in retv queue */ 3 13 3 access_class bit (72), /* access class of requestor */ 3 14 3 uid bit (36), /* uid of object being retrieved */ 3 15 3 entry_retrieval bit (1), /* on if this is a entry retrieval */ 3 16 3 entry_recovered bit (1), /* on if entry recovered */ 3 17 3 in_progress bit (1), /* on if retrieval in progress */ 3 18 3 object_recovered bit (1), /* on if object finished */ 3 19 3 recovery_complete bit (1), /* on if recovery complete */ 3 20 3 skip_it bit (1), /* if on skip this request */ 3 21 3 volid bit (36), /* volid object recoverd from */ 3 22 2 fixed_bin, 3 23 3 level fixed bin, /* validation level of requestor */ 3 24 3 q_num fixed bin, /* queue number of user queue being serviced */ 3 25 3 errcode fixed bin (35), /* error code if retrieval failed */ 3 26 3 submission_time fixed bin (71), /* time request submitted */ 3 27 2 chars, 3 28 3 requestor char (32), /* qed */ 3 29 3 entry_name char (32); /* name of entry being retrieved */ 3 30 3 31 /* END INCLUDE FILE ... retv_input.incl.pl1 */ 876 4 1 /* BEGIN INCLUDE FILE . . . mseg_return_args.incl.pl1 */ 4 2 4 3 4 4 /* structure returned when message is read from a message segment */ 4 5 4 6 4 7 dcl ms_arg_ptr ptr; 4 8 4 9 dcl 1 mseg_return_args based (ms_arg_ptr) aligned, 4 10 2 ms_ptr ptr, /* pointer to message */ 4 11 2 ms_len fixed bin (24), /* length of message in bits */ 4 12 2 sender_id char (32) unaligned, /* process-group ID of sender */ 4 13 2 level fixed bin, /* validation level of sender */ 4 14 2 ms_id bit (72), /* unique ID of message */ 4 15 2 sender_authorization bit (72), /* access authorization of message sender */ 4 16 2 access_class bit (72); /* message access class */ 4 17 4 18 4 19 /* END INCLUDE FILE . . . mseg_return_args.incl.pl1 */ 877 5 1 /* BEGIN INCLUDE FILE ... retv_vol_control.incl.pl1 8/76 */ 5 2 5 3 dcl rvcp ptr; /* ptr to volume control segment */ 5 4 dcl rvcep ptr; /* ptr to entry in volume control segment */ 5 5 5 6 dcl retv_vol_control_version_1 fixed bin static init (1) options (constant); /* version of structure */ 5 7 5 8 dcl 1 retv_vol_control based (rvcp) aligned, 5 9 2 version fixed bin, /* version number */ 5 10 2 volname char (32), /* name of volume that this segment represents */ 5 11 2 volid bit (36), /* volume id of volume that this segment controls */ 5 12 2 open_time fixed bin (71), /* time this volume was opened */ 5 13 2 in_use_cnt fixed bin, /* number of in use entries */ 5 14 2 n_entries fixed bin, /* total number of entries */ 5 15 2 switches, 5 16 3 skip_query bit (1) unal, 5 17 3 unused bit (35) unal, 5 18 2 dump_type fixed bin, /* type of dump volume */ 5 19 2 pad (1) bit (36), 5 20 2 array (1 : 1 refer (retv_vol_control.n_entries)) like rvce aligned; /* array of entries */ 5 21 5 22 dcl 1 rvce aligned based (rvcep), 5 23 2 uid bit (36), /* uid of object being retrieved */ 5 24 2 contentsx fixed bin, /* index in contents seg */ 5 25 2 dirname char (168), /* parent directory pathname */ 5 26 2 ename char (32), /* entry name */ 5 27 2 entry_name char (32), /* name of entry being retrieved */ 5 28 2 queue fixed bin, /* queue request was taken from */ 5 29 2 retv_ms_id bit (72), /* id of request in retv queue */ 5 30 2 vdtd bit (36), /* volume dtd of object if previously dumped */ 5 31 2 to_time fixed bin (71), /* time not to retrived after */ 5 32 2 from_time fixed bin (71), /* time not to retrieve befor */ 5 33 2 flags, 5 34 (3 link_retrieval bit (1), /* on if link retrieval */ 5 35 3 entry_retrieval bit (1), /* on if entry retrieval */ 5 36 3 object_retrieval bit (1), /* on if object is to be retrieved */ 5 37 3 vtoce_volname bit (1), /* on if valid volume id found in vtoce */ 5 38 3 in_use bit (1), /* on if entry in use */ 5 39 3 previous bit (1), /* on if previous object to dtd wanted */ 5 40 3 no_contents_seg bit (1))unaligned, /* on if could not find contents segment */ 5 41 2 pad bit (36); 5 42 5 43 /* END INCLUDE FILE ... retv_vol_control.incl.pl1 */ 878 6 1 /* BEGIN INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 6 2 6 3 /* This is the message header used for standard system queue messages, namely: 6 4* IO daemon requests, absentee requests, retrieval requests. 6 5**/ 6 6 6 7 /* Written by Jerry Whitmore, Spring 1978. 6 8* Modified by T. Casey, November 1978, to add values for state. 6 9* Modified by R. Kovalcik, June 1982, defer_until_process_terminataion 6 10**/ 6 11 6 12 dcl 1 queue_msg_hdr based aligned, /* standard header for all system queue messages */ 6 13 2 msg_time fixed bin (71), /* date and time of request */ 6 14 2 hdr_version fixed bin, /* version of this declaration */ 6 15 2 dirname char (168), /* directory name */ 6 16 2 ename char (32), /* entry name of file requested */ 6 17 2 message_type fixed bin, /* message format descriptor */ 6 18 /* 0 = absentee request */ 6 19 /* 1 = print request */ 6 20 /* 2 = punch request */ 6 21 /* 3 = tape request */ 6 22 /* 4 = retrieval request */ 6 23 2 bit_flags, 6 24 3 delete_sw bit (1) unal, /* delete file when done */ 6 25 3 notify bit (1) unal, /* user wants to be notified */ 6 26 3 defer_until_process_termination bit (1) unal, /* don't process request until process terminates */ 6 27 3 padding bit (33) unal, 6 28 2 state fixed bin, /* stage of processing after being queued: 6 29* 0 = initial unprocessed state, 1 = deferred, 6 30* 2 = in state transition, 3 = eligible, 4 = running, 6 31* 5 = bumped, 6 = deferred_until_process_termination */ 6 32 2 orig_queue fixed bin, /* queue the request was submitted to */ 6 33 2 std_length fixed bin, /* length of std msg for this type */ 6 34 2 dupt_lock bit (36) aligned, /* lock word for defer until process termination */ 6 35 2 hdr_pad (3) fixed bin; 6 36 6 37 dcl queue_msg_hdr_version_1 fixed bin int static options (constant) init (1); /* current version of the header */ 6 38 6 39 /* Values for queue_msg_hdr.state */ 6 40 6 41 dcl STATE_UNPROCESSED fixed bin int static options (constant) init (0); 6 42 dcl STATE_DEFERRED fixed bin int static options (constant) init (1); 6 43 dcl STATE_TRANSITION fixed bin int static options (constant) init (2); 6 44 dcl STATE_ELIGIBLE fixed bin int static options (constant) init (3); 6 45 dcl STATE_RUNNING fixed bin int static options (constant) init (4); 6 46 dcl STATE_BUMPED fixed bin int static options (constant) init (5); 6 47 dcl STATE_DUPT fixed bin int static options (constant) init (6); 6 48 6 49 /* END INCLUDE FILE ... queue_msg_hdr.incl.pl1 */ 879 7 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 7 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 7 3 /* version number changed to 4, 08/10/78 WOS */ 7 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 7 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 7 6 7 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 7 8 2 version fixed bin, /* version of this structure - must be set, see below */ 7 9 2 switches aligned, /* various bit switch values */ 7 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 7 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 7 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 7 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 7 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 7 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 7 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 7 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 7 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 7 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 7 20 7 21 /* Limit of data defined for version 2 */ 7 22 7 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 7 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 7 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 7 26 /* minimum of 30 seconds required for repeat */ 7 27 /* otherwise, no repeat will occur */ 7 28 /* Limit of data defined for version 4 */ 7 29 7 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 7 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 7 32 7 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 7 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 7 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 7 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 7 37 7 38 /* END INCLUDE FILE query_info.incl.pl1 */ 880 8 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 8 2 8 3 /* Written 05/04/78 by C. D. Tavares */ 8 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 8 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 8 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 8 7 8 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 8 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 8 10 iox_$close entry (pointer, fixed bin (35)), 8 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 8 12 iox_$delete_record entry (pointer, fixed bin (35)), 8 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 8 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 8 15 iox_$err_not_attached entry options (variable), 8 16 iox_$err_not_closed entry options (variable), 8 17 iox_$err_no_operation entry options (variable), 8 18 iox_$err_not_open entry options (variable), 8 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 8 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 8 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 8 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 8 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 8 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 8 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 8 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 8 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 8 28 iox_$propagate entry (pointer), 8 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 8 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 8 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 8 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 8 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 8 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 8 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 8 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 8 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 8 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 8 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 8 40 8 41 dcl (iox_$user_output, 8 42 iox_$user_input, 8 43 iox_$user_io, 8 44 iox_$error_output) external static pointer; 8 45 8 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 881 882 883 end retriever; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 1425.4 retriever.pl1 >spec>install>MR12.2-1173>retriever.pl1 874 1 10/17/88 1425.1 retv_data_.incl.pl1 >spec>install>MR12.2-1173>retv_data_.incl.pl1 875 2 09/04/80 2006.4 retv_request.incl.pl1 >ldd>include>retv_request.incl.pl1 876 3 05/01/81 1921.2 retv_input.incl.pl1 >ldd>include>retv_input.incl.pl1 877 4 05/17/82 1411.5 mseg_return_args.incl.pl1 >ldd>include>mseg_return_args.incl.pl1 878 5 05/01/81 1921.2 retv_vol_control.incl.pl1 >ldd>include>retv_vol_control.incl.pl1 879 6 08/31/82 1636.3 queue_msg_hdr.incl.pl1 >ldd>include>queue_msg_hdr.incl.pl1 880 7 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 881 8 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DIR constant fixed bin(17,0) initial dcl 83 ref 509 767 800 LINK constant fixed bin(17,0) initial dcl 82 ref 764 ac 000154 automatic fixed bin(17,0) dcl 47 set ref 197* 199 200* 205* 205 215* 217* 217 223* 225* 225 access_class 200 000530 automatic bit(72) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 428* 791* access_class 200 based bit(72) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" ref 791 accounting 232(05) 000230 external static bit(1) level 4 packed packed unaligned dcl 1-27 set ref 210* 470 523 aclp 256 000230 external static pointer level 3 dcl 1-27 set ref 262* addr builtin function dcl 148 ref 189 325 325 403 403 433 433 488 488 535 797 797 all 232(04) 000230 external static bit(1) level 4 packed packed unaligned dcl 1-27 set ref 186* 222* 627 answer 000260 automatic varying char(3) dcl 51 set ref 488* 491 answer_iocbp 6 001016 automatic pointer initial level 2 dcl 7-7 set ref 7-7* areap 250 000230 external static pointer level 3 dcl 1-27 set ref 254* 656* 702 706 710* 752* 770 839 840 arg based char packed unaligned dcl 75 set ref 202* 206 207 208 209 209 210 211 211 212 213 214 218 219 221 221 226* 228* 234* arg_init 232(01) 000230 external static bit(1) level 4 packed packed unaligned dcl 1-27 set ref 253* argl 000500 automatic fixed bin(17,0) dcl 76 set ref 200* 202 202 206 207 208 209 209 210 211 211 212 213 214 215* 218 219 221 221 223* 226 226 228 228 234 234 argp 000502 automatic pointer dcl 77 set ref 200* 202 206 207 208 209 209 210 211 211 212 213 214 215* 218 219 221 221 223* 226 228 234 array 22 based structure array level 2 dcl 5-8 set ref 535 based_area based area(1024) dcl 80 ref 702 706 770 839 840 before builtin function dcl 147 ref 219 bin_time parameter fixed bin(71,0) dcl 827 set ref 823 829* bit_flags 66 based structure level 3 in structure "retv_request" dcl 2-7 in procedure "retv" bit_flags 66 based structure level 4 in structure "retv_input" dcl 3-6 in procedure "retv" bits 172 000530 automatic structure level 2 in structure "local_retv_input" dcl 89 in procedure "retv" bits 76 based structure level 3 in structure "retv_input" dcl 3-6 in procedure "retv" bits 172 based structure level 2 in structure "retv_input" dcl 3-6 in procedure "retv" bits 76 based structure level 2 in structure "retv_request" dcl 2-7 in procedure "retv" bits 212 000230 external static structure level 2 in structure "retv_data_" dcl 1-27 in procedure "retv" set ref 183* chars 220 based structure level 2 in structure "retv_input" dcl 3-6 in procedure "retv" chars 110 based structure level 3 in structure "retv_input" dcl 3-6 in procedure "retv" chars 110 based structure level 2 in structure "retv_request" dcl 2-7 in procedure "retv" chars 10 000230 external static structure level 2 in structure "retv_data_" dcl 1-27 in procedure "retv" set ref 182* chars 220 000530 automatic structure level 2 in structure "local_retv_input" dcl 89 in procedure "retv" cleanup 000770 stack reference condition dcl 144 ref 239 code 000475 automatic fixed bin(35,0) dcl 72 set ref 200* 201 202* 215* 216 223* 224 226* 227 241* 243 244* 248* 249 249 250* 256* 257 258* 271* 272 273* 276* 277 278* 282* 283 284* 288* 289 290* 325* 326 327* 361* 362 363* 367* 368 369* 403* 404 405* 433* 435 435* 461* 462 462 471* 472 473* 478* 482* 483 484 486 493* 501* 503* 504 504 504* 508 561* 562 589* 590 590* 622* 624 624* 656* 658 659 660 666* 681* 683 684 688* 710* 712 713 718 720* 797* 799 799* 815* 816 816* com_err_ 000200 constant entry external dcl 130 ref 175 command_query_ 000130 constant entry external dcl 110 ref 488 contentsp 252 000230 external static pointer level 3 dcl 1-27 set ref 266* convert_status_code_ 000152 constant entry external dcl 119 ref 569 cp_escape_control 1(02) 001016 automatic bit(2) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* cu_$arg_count 000174 constant entry external dcl 128 ref 198 cu_$arg_ptr 000176 constant entry external dcl 129 ref 200 215 223 cv_oct_check_ 000206 constant entry external dcl 133 ref 226 date_time_ 000164 constant entry external dcl 124 ref 829 dirname 3 based char(168) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 389* 389 dirname 3 000530 automatic char(168) level 4 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 788* dirname 3 based char(168) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 309* 309 503* 504* 504 511* 515* 515 561* 563* 563 570* 570 dn parameter char dcl 741 in procedure "scan_sub_tree" set ref 731 749* 749 dn parameter char dcl 784 in procedure "submit_request" set ref 777 788 800* 800 dtm 000462 automatic bit(36) packed unaligned dcl 68 in procedure "retv" set ref 501* 503* 561* dtm 000100 automatic bit(36) packed unaligned dcl 742 in procedure "scan_sub_tree" set ref 760* ec parameter fixed bin(35,0) dcl 746 set ref 731 751* 752* 753 754* 759* 760* 761 761 761* 764 767 767* en parameter char dcl 784 in procedure "submit_request" set ref 777 789 800* en parameter char dcl 741 in procedure "scan_sub_tree" set ref 731 749* ename 55 based char(32) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 389* ename 55 000530 automatic char(32) level 4 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 789* ename 55 based char(32) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 309* 503* 504* 511* 515* 561* 563* 570* entry_name 230 based char(32) level 3 dcl 3-6 set ref 611* entry_recovered 204 based bit(1) level 3 dcl 3-6 set ref 499 559 612* entry_retrieval 203 based bit(1) level 3 dcl 3-6 set ref 514 609* err_online 232(02) 000230 external static bit(1) level 4 packed packed unaligned dcl 1-27 set ref 212* errcode 214 based fixed bin(35,0) level 3 dcl 3-6 set ref 462* 499 500 560 568 569* 614* error_iocbp 246 000230 external static pointer level 3 dcl 1-27 set ref 851 852* 853* error_table_$bad_segment 000074 external static fixed bin(35,0) dcl 95 ref 660 684 713 error_table_$badopt 000070 external static fixed bin(35,0) dcl 93 set ref 234* error_table_$no_message 000076 external static fixed bin(35,0) dcl 96 ref 659 718 error_table_$noentry 000064 external static fixed bin(35,0) dcl 91 ref 249 error_table_$resource_unavailable 000066 external static fixed bin(35,0) dcl 92 ref 486 error_table_$vtoce_connection_fail 000072 external static fixed bin(35,0) dcl 94 ref 504 761 764 explanation_len 14 001016 automatic fixed bin(21,0) initial level 2 dcl 7-7 set ref 7-7* explanation_ptr 12 001016 automatic pointer initial level 2 dcl 7-7 set ref 7-7* fixed builtin function dcl 147 in procedure "retv" ref 432 796 fixed 1 000230 external static structure level 2 in structure "retv_data_" dcl 1-27 in procedure "retv" set ref 185* fixed_bin 102 based structure level 3 in structure "retv_input" dcl 3-6 in procedure "retv" fixed_bin 102 based structure level 2 in structure "retv_request" dcl 2-7 in procedure "retv" fixed_bin 212 based structure level 2 in structure "retv_input" dcl 3-6 in procedure "retv" fixed_bin 212 000530 automatic structure level 2 in structure "local_retv_input" dcl 89 in procedure "retv" flags 232 000230 external static structure level 3 in structure "retv_data_" dcl 1-27 in procedure "retv" flags 104 based structure level 2 in structure "rvce" dcl 5-22 in procedure "retv" force parameter bit(1) packed unaligned dcl 743 set ref 731 764 767* from_time 106 based fixed bin(71,0) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313 313* 313* 510 from_time 106 based fixed bin(71,0) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393 393* 393* get_system_free_area_ 000166 constant entry external dcl 125 ref 254 get_temp_segments_ 000170 constant entry external dcl 126 ref 256 get_wdir_ 000112 constant entry external dcl 103 ref 192 hbound builtin function dcl 147 ref 862 hc_backup_$retv_check 000150 constant entry external dcl 118 ref 501 503 561 760 hc_backup_$retv_name_list 000146 constant entry external dcl 117 ref 752 hcs_$delentry_seg 000154 constant entry external dcl 120 ref 589 860 hcs_$set_256K_switch 000156 constant entry external dcl 121 ref 271 865 hcs_$set_max_length_seg 000160 constant entry external dcl 122 ref 276 282 288 843 845 847 hcs_$truncate_seg 000162 constant entry external dcl 123 ref 842 844 846 header based structure level 2 in structure "retv_request" dcl 2-7 in procedure "retv" header 000530 automatic structure level 3 in structure "local_retv_input" dcl 89 in procedure "retv" header based structure level 3 in structure "retv_input" dcl 3-6 in procedure "retv" idx parameter fixed bin(17,0) dcl 810 in procedure "delete_queue_message" ref 809 815 816 idx parameter fixed bin(17,0) dcl 651 in procedure "read_queue_message" ref 650 656 661 666 idx parameter fixed bin(17,0) dcl 697 in procedure "read_incremental_queue_message" ref 696 701 710 714 720 ignore 000477 automatic fixed bin(35,0) dcl 74 set ref 299* 300* 511* 842* 843* 844* 845* 846* 847* 849* 852* 853* 856* 857* 860* 863* 865* 867* 868* in_progress 205 based bit(1) level 3 dcl 3-6 set ref 464* 559 610* in_use 104(04) based bit(1) level 3 packed packed unaligned dcl 5-22 set ref 536 540* in_use_cnt 14 based fixed bin(17,0) level 2 dcl 5-8 set ref 539* 539 input_buffer_ptr 236 000230 external static pointer level 3 dcl 1-27 set ref 268* 282* 844* 845* input_iocbp 244 000230 external static pointer level 3 dcl 1-27 set ref 855 856* 857* input_volume_desc 112 000230 external static char(256) level 3 dcl 1-27 set ref 218* inputp 001006 automatic pointer dcl 3-3 set ref 196* 308* 309 309 309 309 309 309 313 313 313 313 313 313 313 313 313 313 313 313 313 313 313 333 337 337 342 458* 459 460 461* 462 464 498* 499 499 499 500 501 501 501 503 503 504 504 504 504 504 504 504 509 510 510 511 511 514 515 515 515 518* 520 520 522 523 536 536 558* 559 559 559 560 561 561 563 563 563 568 569 570 570 570 570 574* 576 576 578 605* 606 607 608 609 610 611 612 613 614 681 681* 702 702 703* 787 790 791 792 793 794 797 840 840 io_module 102 000230 external static char(32) level 3 dcl 1-27 set ref 187* 219* ioa_ 000204 constant entry external dcl 132 ref 309 321 346 350 389 401 417 421 484 ioa_$nnl 000210 constant entry external dcl 134 ref 324 402 ioa_$rsnnl 000202 constant entry external dcl 131 ref 313 393 515 563 570 644 749 iox_$close 000232 constant entry external dcl 8-8 ref 852 856 iox_$detach_iocb 000234 constant entry external dcl 8-8 ref 853 857 iox_$get_line 000236 constant entry external dcl 8-8 ref 325 403 iox_$user_input 000240 external static pointer dcl 8-41 set ref 325* 403* length builtin function dcl 151 ref 325 325 403 403 level 212 000530 automatic fixed bin(17,0) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 429* 792* level 13 based fixed bin(17,0) level 2 in structure "mseg_return_args" dcl 4-9 in procedure "retv" ref 429 level 212 based fixed bin(17,0) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" ref 792 line 000414 automatic char(32) packed unaligned dcl 55 set ref 325 325 325 325 330* 330 331 331 332 332 336 336 341 341 345 345 350* 403 403 403 403 408* 408 409 409 410 410 411 411 415 415 416 416 421* linkage_error 000776 stack reference condition dcl 145 ref 294 303 866 list 000474 automatic bit(1) packed unaligned dcl 71 set ref 191* 213* 323 356 360 literal_sw 1(05) 001016 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* local_mseg_return_args 000506 automatic structure level 1 dcl 88 set ref 189 local_retv_input 000530 automatic structure level 1 dcl 89 set ref 425* 433 433 433 786* 797 797 long 000262 automatic char(100) dcl 52 in procedure "retv" set ref 568* 569* 570* long 232(07) 000230 external static bit(1) level 4 in structure "retv_data_" packed packed unaligned dcl 1-27 in procedure "retv" set ref 208* 800 manual 232 000230 external static bit(1) level 4 packed packed unaligned dcl 1-27 set ref 207* max_q_num constant fixed bin(17,0) initial dcl 86 ref 627 message 000313 automatic char(256) packed unaligned dcl 53 set ref 515* 518* 563* 570* 574* message_len 000413 automatic fixed bin(17,0) dcl 54 set ref 515* 563* 570* message_segment_$add_index 000214 constant entry external dcl 136 ref 433 797 message_segment_$close 000120 constant entry external dcl 106 ref 863 message_segment_$create 000212 constant entry external dcl 135 ref 361 message_segment_$delete 000124 constant entry external dcl 108 ref 622 message_segment_$delete_index 000126 constant entry external dcl 109 ref 815 message_segment_$incremental_read_index 000224 constant entry external dcl 140 ref 710 message_segment_$open 000122 constant entry external dcl 107 ref 241 248 367 message_segment_$read_index 000216 constant entry external dcl 137 ref 656 message_segment_$update_message_index 000226 constant entry external dcl 142 ref 681 more_messages 000460 automatic bit(1) packed unaligned dcl 66 set ref 307 380 457 497 557 604 655* 659* 718* more_to_do 000461 automatic bit(1) packed unaligned dcl 67 set ref 602* 616* 620 ms_arg_ptr 001010 automatic pointer dcl 4-7 set ref 189* 308 339 381 385 389 412 427 428 429 431 432 458 460 498 558 605 656* 681 710 710* 796 ms_id 14 based bit(72) level 2 dcl 4-9 set ref 339* 385* 412* 427 432 460 681* 710* 796 ms_ptr based pointer level 2 dcl 4-9 ref 308 381 458 498 558 605 mseg_return_args based structure level 1 dcl 4-9 msg_time based fixed bin(71,0) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 309* 309* msg_time based fixed bin(71,0) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 389* 389* msid parameter bit(72) dcl 811 set ref 809 815* myname 000000 constant char(32) initial packed unaligned dcl 85 set ref 175* 202* 228* 234* 244* 250* 256* 258* 273* 278* 284* 290* 295* 327* 363* 369* 383* 405* 435* 473* 488* 493* 504* 518* 574* 590* 624* 661* 666* 685* 688* 714* 720* 754* 761* 799* 800* 816* 849* n_entries 15 based fixed bin(17,0) level 2 dcl 5-8 ref 534 names based char(32) array dcl 748 set ref 760* 761* 765* 767* 770 narg 000256 automatic fixed bin(17,0) dcl 50 set ref 198* 199 ndx 000157 automatic fixed bin(17,0) dcl 747 set ref 758* 760 761 765 767* nelemt 000446 automatic fixed bin(21,0) dcl 57 set ref 325* 330 403* 408 new_dirname 110 based char(168) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393 393* 393 new_dirname 110 based char(168) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313 313* 313 501 501* 504 504* 504 new_ename 162 based char(32) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313* 501* 504* new_ename 162 based char(32) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393* nlc 000156 automatic fixed bin(17,0) dcl 747 set ref 750* 752* 758 nlp 254 000230 external static pointer level 3 in structure "retv_data_" dcl 1-27 in procedure "retv" set ref 261* nlp 000102 automatic pointer dcl 744 in procedure "scan_sub_tree" set ref 752* 760 761 765 767 770 notify 66(01) based bit(1) level 4 in structure "retv_request" packed packed unaligned dcl 2-7 in procedure "retv" set ref 393* notify 66(01) based bit(1) level 5 in structure "retv_input" packed packed unaligned dcl 3-6 in procedure "retv" set ref 313* null builtin function dcl 152 ref 180 181 196 588 595 7-7 7-7 7-7 702 703 706 707 839 840 841 851 855 nvol 4 000230 external static fixed bin(17,0) level 3 dcl 1-27 set ref 470 477 480 532 586 596* 859 nvolx 000452 automatic fixed bin(17,0) dcl 61 set ref 586* 587* 859* 860* object_recovered 206 based bit(1) level 3 dcl 3-6 set ref 499 559 613* objectp 262 000230 external static pointer level 3 dcl 1-27 set ref 264* 276* 842* 843* old_256K_switch 000504 automatic bit(2) dcl 78 set ref 179* 865* options_string 000155 automatic char(256) packed unaligned dcl 48 set ref 313* 321* 393* 401* osl 000255 automatic fixed bin(17,0) dcl 49 set ref 313* 321 393* 401 padding 1(07) 001016 automatic bit(29) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* page_buffer_ptr 234 000230 external static pointer level 3 dcl 1-27 set ref 269* 288* 846* 847* pname 000104 automatic char(168) dcl 745 set ref 749* 752* 754* 760* 761* 765* 767* previous 101 based bit(1) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393* 393 previous 101 based bit(1) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313* 313 prompt_after_explanation 1(06) 001016 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* proxy 173 000530 automatic bit(1) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 795* proxy 173 based bit(1) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" ref 337 520 576 ptrs 234 000230 external static structure level 2 dcl 1-27 set ref 181* q 000453 automatic fixed bin(17,0) dcl 62 set ref 190* 226* 227 227 238 q_num 213 000530 automatic fixed bin(17,0) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 430* 793* q_num 213 based fixed bin(17,0) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" ref 793 qidx 1 000230 external static fixed bin(17,0) array level 3 dcl 1-27 set ref 241* 248* 305 367* 433* 623* 656* 681* 710* 797* 815* 862 863* query_code 3 001016 automatic fixed bin(35,0) initial level 2 dcl 7-7 set ref 7-7* query_info 001016 automatic structure level 1 dcl 7-7 set ref 488 488 query_info_version_5 constant fixed bin(17,0) initial dcl 7-35 ref 487 question_iocbp 4 001016 automatic pointer initial level 2 dcl 7-7 set ref 7-7* queue 3 000230 external static fixed bin(17,0) level 3 dcl 1-27 set ref 238* 430 627 629* 629 644* queue_dir 000011 internal static char(168) initial packed unaligned dcl 1-23 set ref 169* 241* 244* queue_msg_hdr based structure level 1 dcl 6-12 queue_name 000463 automatic char(32) packed unaligned dcl 69 set ref 644* 645 qx 000454 automatic fixed bin(17,0) dcl 63 set ref 862* 863* recordp 260 000230 external static pointer level 3 dcl 1-27 set ref 263* recursive_invocation 000010 internal static bit(1) initial dcl 84 set ref 172 240* 869* release_temp_segments_ 000172 constant entry external dcl 127 ref 849 repeat_time 10 001016 automatic fixed bin(71,0) initial level 2 dcl 7-7 set ref 7-7* request based structure level 2 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 787 request 000530 automatic structure level 2 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 426* 787* request_id_ 000110 constant entry external dcl 102 ref 309 309 389 389 requestor 220 based char(32) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 309* 523* 570* 794 requestor 220 000530 automatic char(32) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 431* 794* requestp 001004 automatic pointer dcl 2-3 set ref 196* 381* 382 389 389 389 389 389 393 393 393 393 393 393 393 393 393 393 393 393 393 393 426 706 706 707* 839 839 retrieve_from_volume_ 000220 constant entry external dcl 138 ref 482 retriever 000110 constant fixed bin(17,0) initial dcl 1-25 set ref 248 305 306* 339* 354* 367 433 451* 467* 496* 522* 545* 556* 578* 580* 603* 618* 623 661 666 681 701 714 720 797 816 retv_account_$create 000142 constant entry external dcl 115 ref 471 retv_account_$update 000144 constant entry external dcl 116 ref 523 retv_data_ 000230 external static structure level 1 dcl 1-27 retv_input based structure level 1 dcl 3-6 set ref 681 702 797 840 retv_ms_id 75 based bit(72) level 2 in structure "rvce" dcl 5-22 in procedure "retv" ref 536 retv_ms_id 176 based bit(72) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 460* 522* 536 578* retv_ms_id 000456 automatic bit(72) dcl 65 in procedure "retv" set ref 433* 797* retv_notify_ 000106 constant entry external dcl 101 ref 518 574 retv_report_$error_output 000114 constant entry external dcl 104 ref 202 228 234 244 250 258 273 278 284 290 295 327 363 369 383 405 435 473 493 504 590 624 661 666 685 688 714 720 754 761 799 816 retv_report_$online_output 000116 constant entry external dcl 105 ref 800 retv_request based structure level 1 dcl 2-7 set ref 426 706 839 retv_request_version_2 constant fixed bin(17,0) initial dcl 2-5 ref 382 retv_vol_control based structure level 1 dcl 5-8 retv_vol_control_ 000222 constant entry external dcl 139 ref 461 retv_vol_control_$sort 000104 constant entry external dcl 100 ref 478 rvce based structure level 1 dcl 5-22 rvcep 001014 automatic pointer dcl 5-4 set ref 535* 536 536 536 540 rvcp 001012 automatic pointer dcl 5-3 in procedure "retv" set ref 481* 482* 484 493 533* 534 535 539 539 587* 588 589* 590 rvcp 266 000230 external static pointer array level 3 in structure "retv_data_" dcl 1-27 in procedure "retv" set ref 478* 481 533 587 595* 860* rvcx 000447 automatic fixed bin(17,0) dcl 58 set ref 477* 478* 480* 481* sender_authorization 16 based bit(72) level 2 dcl 4-9 ref 428 sender_id 3 based char(32) level 2 packed packed unaligned dcl 4-9 set ref 389* 431 short 000152 automatic char(8) dcl 46 set ref 569* size builtin function dcl 149 ref 433 681 797 skip 240 000230 external static pointer level 3 dcl 1-27 set ref 267* skip_it 210 based bit(1) level 3 dcl 3-6 set ref 313* 333* 342* 459 606 sortx 000451 automatic fixed bin(17,0) dcl 60 set ref 532* 533* sorty 000450 automatic fixed bin(17,0) dcl 59 set ref 534* 535* status_code 2 001016 automatic fixed bin(35,0) initial level 2 dcl 7-7 set ref 7-7* step 000473 automatic bit(1) packed unaligned dcl 70 set ref 193* 206* 323 388 submission_time 216 000530 automatic fixed bin(71,0) level 3 dcl 89 set ref 432* 796* substr builtin function dcl 153 ref 309 309 330 389 389 408 subtree 76 based bit(1) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313* 509 subtree 76 based bit(1) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393* suppress_name_sw 1(01) 001016 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* suppress_spacing 1(04) 001016 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* switches 1 001016 automatic structure level 2 dcl 7-7 sys_dir 10 000230 external static char(168) level 3 dcl 1-27 set ref 184* 209* sys_info$max_seg_size 000102 external static fixed bin(18,0) dcl 98 ref 843 845 847 sys_info$seg_size_256K 000100 external static fixed bin(19,0) dcl 97 set ref 276* 282* 288* system_privilege_$ipc_priv_off 000140 constant entry external dcl 114 ref 868 system_privilege_$ipc_priv_on 000136 constant entry external dcl 113 ref 300 system_privilege_$ring1_priv_off 000134 constant entry external dcl 112 ref 867 system_privilege_$ring1_priv_on 000132 constant entry external dcl 111 ref 299 test_dir parameter char packed unaligned dcl 168 ref 157 169 time_string 001106 automatic char(24) packed unaligned dcl 828 set ref 829* 830 to_from 000455 automatic bit(1) packed unaligned dcl 64 set ref 510* 511* to_time 104 based fixed bin(71,0) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" set ref 393 393* 393* to_time 104 based fixed bin(71,0) level 4 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 313 313* 313* 510 tp 000424 automatic pointer array dcl 56 set ref 180* 256* 261 262 263 264 265 266 267 268 269 841 849* type 000476 automatic fixed bin(17,0) dcl 73 in procedure "retv" set ref 501* 503* 509 561* type 000160 automatic fixed bin(17,0) dcl 747 in procedure "scan_sub_tree" set ref 760* 764 765* 767 type parameter fixed bin(17,0) dcl 785 in procedure "submit_request" ref 777 800 uid based bit(36) level 2 in structure "rvce" dcl 5-22 in procedure "retv" ref 536 uid 202 based bit(36) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 536 607* unspec builtin function dcl 150 set ref 425* 786* user 000107 constant fixed bin(17,0) initial dcl 1-24 set ref 241 337* 378* 385* 412* 438* 520* 576* user_ms_id 174 000530 automatic bit(72) level 3 in structure "local_retv_input" dcl 89 in procedure "retv" set ref 427* 790* user_ms_id 174 based bit(72) level 3 in structure "retv_input" dcl 3-6 in procedure "retv" set ref 337* 520* 576* 790 version 001016 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 7-7 in procedure "retv" set ref 487* version 102 based fixed bin(17,0) level 3 in structure "retv_request" dcl 2-7 in procedure "retv" ref 382 vlp 264 000230 external static pointer level 3 dcl 1-27 set ref 265* volid 211 based bit(36) level 3 dcl 3-6 set ref 608* volname 1 based char(32) level 2 dcl 5-8 set ref 484* 493* 590* wdir 000100 automatic char(168) packed unaligned dcl 45 set ref 192* 209 248* 250* 361* 363* 367* 369* 435* 622* 624* 685* 688* yes_or_no_sw 1 001016 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. STATE_BUMPED internal static fixed bin(17,0) initial dcl 6-46 STATE_DEFERRED internal static fixed bin(17,0) initial dcl 6-42 STATE_DUPT internal static fixed bin(17,0) initial dcl 6-47 STATE_ELIGIBLE internal static fixed bin(17,0) initial dcl 6-44 STATE_RUNNING internal static fixed bin(17,0) initial dcl 6-45 STATE_TRANSITION internal static fixed bin(17,0) initial dcl 6-43 STATE_UNPROCESSED internal static fixed bin(17,0) initial dcl 6-41 iox_$attach_loud 000000 constant entry external dcl 8-8 iox_$attach_name 000000 constant entry external dcl 8-8 iox_$attach_ptr 000000 constant entry external dcl 8-8 iox_$close_file 000000 constant entry external dcl 8-8 iox_$control 000000 constant entry external dcl 8-8 iox_$delete_record 000000 constant entry external dcl 8-8 iox_$destroy_iocb 000000 constant entry external dcl 8-8 iox_$detach 000000 constant entry external dcl 8-8 iox_$err_no_operation 000000 constant entry external dcl 8-8 iox_$err_not_attached 000000 constant entry external dcl 8-8 iox_$err_not_closed 000000 constant entry external dcl 8-8 iox_$err_not_open 000000 constant entry external dcl 8-8 iox_$error_output external static pointer dcl 8-41 iox_$find_iocb 000000 constant entry external dcl 8-8 iox_$find_iocb_n 000000 constant entry external dcl 8-8 iox_$get_chars 000000 constant entry external dcl 8-8 iox_$look_iocb 000000 constant entry external dcl 8-8 iox_$modes 000000 constant entry external dcl 8-8 iox_$move_attach 000000 constant entry external dcl 8-8 iox_$open 000000 constant entry external dcl 8-8 iox_$open_file 000000 constant entry external dcl 8-8 iox_$position 000000 constant entry external dcl 8-8 iox_$propagate 000000 constant entry external dcl 8-8 iox_$put_chars 000000 constant entry external dcl 8-8 iox_$read_key 000000 constant entry external dcl 8-8 iox_$read_length 000000 constant entry external dcl 8-8 iox_$read_record 000000 constant entry external dcl 8-8 iox_$rewrite_record 000000 constant entry external dcl 8-8 iox_$seek_key 000000 constant entry external dcl 8-8 iox_$user_io external static pointer dcl 8-41 iox_$user_output external static pointer dcl 8-41 iox_$write_record 000000 constant entry external dcl 8-8 query_info_version_3 internal static fixed bin(17,0) initial dcl 7-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 7-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 7-36 queue_msg_hdr_version_1 internal static fixed bin(17,0) initial dcl 6-37 retv_data_version_1 internal static fixed bin(17,0) initial dcl 1-18 retv_vol_control_version_1 internal static fixed bin(17,0) initial dcl 5-6 NAMES DECLARED BY EXPLICIT CONTEXT. clean_it_up 007773 constant entry internal dcl 835 ref 239 632 common 001310 constant label dcl 172 ref 155 delete_queue_message 007666 constant entry internal dcl 809 ref 337 339 385 412 520 522 576 578 end_clean_it_up 010406 constant label dcl 869 ref 866 finale 006344 constant label dcl 632 ref 203 230 235 251 259 274 279 285 291 360 finish 006332 constant label dcl 627 ref 245 331 356 365 371 409 474 491 668 722 main 001260 constant label dcl 155 next 004570 constant label dcl 438 ref 386 410 413 no_arg 001566 constant label dcl 202 ref 216 224 queue_seg_ 006351 constant entry internal dcl 640 ref 241 241 244 244 read 006417 constant label dcl 656 ref 663 read_incremental_queue_message 006662 constant entry internal dcl 696 ref 354 438 467 545 580 618 read_queue_message 006413 constant entry internal dcl 650 ref 306 378 451 496 556 603 recovery_loop 004573 constant label dcl 451 ref 620 reread 004240 constant label dcl 402 ref 406 418 422 reread1 003273 constant label dcl 324 ref 328 347 351 retrieve_from_volume 001242 constant entry external dcl 27 retriever 001252 constant entry external dcl 27 retry_inc 006710 constant label dcl 710 ref 716 retv 001232 constant entry external dcl 27 reupdate 006551 constant label dcl 681 ref 686 scan_sub_tree 007045 constant entry internal dcl 731 ref 511 767 set_cleanup 002777 constant label dcl 303 ref 296 start 002213 constant label dcl 241 ref 630 submit_request 007440 constant entry internal dcl 777 ref 765 test 001264 constant entry external dcl 157 time_ 007745 constant entry internal dcl 823 ref 313 313 313 313 393 393 393 393 update_queue_message 006550 constant entry internal dcl 676 ref 334 343 465 615 user_queue 003711 constant label dcl 378 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11374 11636 10455 11404 Length 12420 10455 242 546 717 54 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME retv 966 external procedure is an external procedure. on unit on line 239 64 on unit on unit on line 294 92 on unit queue_seg_ internal procedure shares stack frame of external procedure retv. read_queue_message internal procedure shares stack frame of external procedure retv. update_queue_message internal procedure shares stack frame of external procedure retv. read_incremental_queue_message internal procedure shares stack frame of external procedure retv. scan_sub_tree 236 internal procedure calls itself recursively. submit_request internal procedure shares stack frame of internal procedure scan_sub_tree. delete_queue_message internal procedure shares stack frame of external procedure retv. time_ internal procedure shares stack frame of external procedure retv. clean_it_up 94 internal procedure enables or reverts conditions. on unit on line 866 64 on unit STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 recursive_invocation retv 000011 queue_dir retv STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME retv 000100 wdir retv 000152 short retv 000154 ac retv 000155 options_string retv 000255 osl retv 000256 narg retv 000260 answer retv 000262 long retv 000313 message retv 000413 message_len retv 000414 line retv 000424 tp retv 000446 nelemt retv 000447 rvcx retv 000450 sorty retv 000451 sortx retv 000452 nvolx retv 000453 q retv 000454 qx retv 000455 to_from retv 000456 retv_ms_id retv 000460 more_messages retv 000461 more_to_do retv 000462 dtm retv 000463 queue_name retv 000473 step retv 000474 list retv 000475 code retv 000476 type retv 000477 ignore retv 000500 argl retv 000502 argp retv 000504 old_256K_switch retv 000506 local_mseg_return_args retv 000530 local_retv_input retv 001004 requestp retv 001006 inputp retv 001010 ms_arg_ptr retv 001012 rvcp retv 001014 rvcep retv 001016 query_info retv 001106 time_string time_ scan_sub_tree 000100 dtm scan_sub_tree 000102 nlp scan_sub_tree 000104 pname scan_sub_tree 000156 nlc scan_sub_tree 000157 ndx scan_sub_tree 000160 type scan_sub_tree THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 enable_op ext_entry ext_entry_desc int_entry int_entry_desc op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_ convert_status_code_ cu_$arg_count cu_$arg_ptr cv_oct_check_ date_time_ get_system_free_area_ get_temp_segments_ get_wdir_ hc_backup_$retv_check hc_backup_$retv_name_list hcs_$delentry_seg hcs_$set_256K_switch hcs_$set_max_length_seg hcs_$truncate_seg ioa_ ioa_$nnl ioa_$rsnnl iox_$close iox_$detach_iocb iox_$get_line message_segment_$add_index message_segment_$close message_segment_$create message_segment_$delete message_segment_$delete_index message_segment_$incremental_read_index message_segment_$open message_segment_$read_index message_segment_$update_message_index release_temp_segments_ request_id_ retrieve_from_volume_ retv_account_$create retv_account_$update retv_notify_ retv_report_$error_output retv_report_$online_output retv_vol_control_ retv_vol_control_$sort system_privilege_$ipc_priv_off system_privilege_$ipc_priv_on system_privilege_$ring1_priv_off system_privilege_$ring1_priv_on THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment error_table_$badopt error_table_$no_message error_table_$noentry error_table_$resource_unavailable error_table_$vtoce_connection_fail iox_$user_input retv_data_ sys_info$max_seg_size sys_info$seg_size_256K LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 7 001177 27 001231 155 001260 157 001261 169 001300 170 001307 172 001310 175 001313 176 001337 179 001340 180 001341 181 001355 182 001413 183 001432 184 001464 185 001467 186 001507 187 001511 189 001514 190 001516 191 001520 192 001521 193 001527 196 001530 197 001533 198 001535 199 001544 200 001547 201 001564 202 001566 203 001621 205 001622 206 001623 207 001634 208 001645 209 001656 210 001674 211 001705 212 001716 213 001727 214 001736 215 001742 216 001757 217 001761 218 001762 219 001771 220 002001 221 002002 222 002012 223 002016 224 002032 225 002034 226 002035 227 002061 228 002070 230 002124 232 002125 234 002126 235 002160 237 002161 238 002162 239 002166 240 002210 241 002213 243 002243 244 002245 245 002303 248 002304 249 002335 250 002342 251 002371 253 002372 254 002376 256 002404 257 002425 258 002427 259 002453 261 002454 262 002460 263 002462 264 002464 265 002466 266 002470 267 002472 268 002474 269 002476 271 002500 272 002516 273 002520 274 002544 276 002545 277 002561 278 002563 279 002607 282 002610 283 002624 284 002626 285 002652 288 002653 289 002667 290 002671 291 002715 294 002716 295 002732 296 002756 299 002761 300 002770 303 002777 305 003000 306 003004 307 003006 308 003010 309 003013 313 003074 321 003243 323 003267 324 003273 325 003311 326 003334 327 003336 328 003365 330 003366 331 003373 332 003403 333 003413 334 003416 335 003417 336 003420 337 003430 339 003443 340 003454 341 003455 342 003465 343 003467 344 003470 345 003471 346 003501 347 003515 350 003516 351 003536 354 003537 355 003541 356 003542 357 003544 360 003545 361 003547 362 003572 363 003574 365 003624 367 003625 368 003656 369 003660 371 003710 378 003711 380 003713 381 003716 382 003721 383 003724 385 003751 386 003762 388 003763 389 003765 393 004050 401 004214 402 004240 403 004256 404 004301 405 004303 406 004332 408 004333 409 004340 410 004350 411 004360 412 004370 413 004401 415 004402 416 004413 417 004423 418 004437 421 004440 422 004460 425 004461 426 004464 427 004470 428 004474 429 004477 430 004501 431 004505 432 004510 433 004513 435 004536 438 004570 440 004572 451 004573 457 004575 458 004600 459 004603 460 004606 461 004613 462 004624 464 004630 465 004633 467 004634 468 004636 470 004637 471 004646 472 004654 473 004656 474 004705 477 004706 478 004717 479 004732 480 004734 481 004745 482 004752 483 004762 484 004764 486 005010 487 005013 488 005015 491 005063 492 005070 493 005071 496 005121 497 005123 498 005126 499 005131 500 005137 501 005141 503 005177 504 005230 508 005330 509 005332 510 005341 511 005350 514 005374 515 005377 518 005444 520 005465 522 005500 523 005511 532 005527 533 005541 534 005546 535 005555 536 005561 539 005576 540 005601 542 005603 543 005605 545 005607 546 005611 547 005612 556 005614 557 005616 558 005620 559 005623 560 005631 561 005634 562 005665 563 005667 566 005735 568 005736 569 005745 570 005760 574 006035 576 006056 578 006071 580 006102 581 006104 586 006105 587 006117 588 006124 589 006130 590 006140 594 006173 595 006175 596 006213 602 006214 603 006215 604 006217 605 006222 606 006225 607 006230 608 006231 609 006232 610 006233 611 006234 612 006237 613 006240 614 006241 615 006242 616 006243 618 006245 619 006247 620 006250 622 006252 623 006276 624 006301 627 006332 629 006342 630 006343 632 006344 634 006350 640 006351 644 006353 645 006405 650 006413 655 006415 656 006417 658 006443 659 006445 660 006452 661 006454 663 006511 666 006512 668 006546 672 006547 676 006550 681 006551 683 006574 684 006576 685 006601 686 006631 688 006632 690 006661 696 006662 701 006664 702 006667 703 006675 704 006677 706 006700 707 006706 710 006710 712 006737 713 006741 714 006744 716 007001 718 007002 720 007006 722 007042 725 007043 731 007044 749 007065 750 007136 751 007137 752 007141 753 007172 754 007175 756 007225 758 007226 759 007235 760 007237 761 007273 764 007336 765 007353 767 007375 769 007433 770 007435 771 007437 777 007440 786 007456 787 007462 788 007466 789 007474 790 007500 791 007504 792 007507 793 007511 794 007513 795 007516 796 007520 797 007524 799 007550 800 007600 802 007665 809 007666 815 007670 816 007705 819 007744 823 007745 829 007747 830 007764 835 007772 839 010000 840 010007 841 010016 842 010023 843 010040 844 010057 845 010075 846 010114 847 010132 849 010151 851 010173 852 010201 853 010212 855 010225 856 010233 857 010244 859 010257 860 010272 861 010305 862 010310 863 010316 864 010327 865 010332 866 010347 867 010366 868 010376 869 010406 872 010410 ----------------------------------------------------------- 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