COMPILATION LISTING OF SEGMENT admin_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1917.65_Mon_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 /* format: style4 */ 15 16 admin_: procedure (); 17 18 /* *** The entries in admin_ implement the various operator commands of 19* the same name. They are called as a result of entries in 20* sc_request_table_ via sc_process_command_line_. */ 21 22 /* *** NOTE -- Entries should call sys_log, rather than sys_log_. 23* Whenever this program is entered as something other than a 24* command (a timer handler or the like) the entry variable 25* sys_log is set to the non-command entrypoints in sys_log_, 26* otherwise they use the command entrypoints. Note than recursive 27* internal calls have to be capable of doing this right. */ 28 29 /* 30* The following answering service functions are provided by this module 31* (entry points are in the order shown): 32* 33* * MISC. COMMANDS 34* 35* login cause a daemon user to be logged in 36* logout cause a daemon user to be logged out 37* word set login word and dialup buffer 38* sysid set system ID (typed at dialup) 39* down schedule automatic shutdown of system at later time 40* stop shut down answering service; bump all users 41* warn blast message onto a user's console 42* rcp reply to RCP requests (only list now implemented) 43* log enter comments in the answering service log. 44* maxunits set maximum number of load units 45* shift set shift and shift change time, overriding shift table 46* 47* * FNP COMMANDS 48* 49* fdump_fnp, or take an fdump of a specified FNP, crashing it if it is up 50* dump_fnp 51* load_fnp initiate a bootload of a specified FNP 52* start_fnp listen to the phones configured on a specified FNP 53* stop_fnp prevents booting of specified FNP or listening to its phones 54* 55* * MULTIPLEXER COMMANDS (similiar to fnp commands) 56* 57* dump_mpx take a dump of the specified multiplexer 58* load_mpx initialize the specified multiplexcer 59* start_mpx listen to the phones on a specified multiplexer 60* stop_mpx stop listening to the phones in the specified multiplexer 61* shutdowm_mpx shutdown multiplexer without crash 62* 63* * ABSENTEE COMMANDS 64* 65* abs maxu set maximum absentee users 66* abs maxq set maximum absentee queue 67* abs start start absentee 68* abs stop stop absentee 69* abs bump bump absentee job 70* abs cancel bump and do not restart absentee job 71* abs qres set number of reserved slots for each queue 72* abs cpu_limit set max cpu limit for each queue 73* abs defer do not log job(s) in until they are released 74* abs list list specified job(s) 75* abs move move specified job(s) to different queue 76* abs next log specified job in next 77* abs release allow specified deferred or suspended job(s) to log in or resume running 78* abs run log specified job in immediately 79* abs suspend don't run specified logged-in job until released 80* abs terminate terminate absentee process (bump by simulating fatal process error) 81* 82* Modified 750415 by PG to use printer_on order call. 83* Modified 751020 by PG to fix bug in DOWN command and delete obsolete TAPE command. 84* Modified May 1976 by T. Casey to implement SHIFT command. 85* Modified July, 1976 by D. M. Wells to understand bumping FTP channels 86* Modified 760819 by Roy Planalp to produce correct message if chnl with 87* no user logged in is detached, and to write ftp-format message when bumping ftp users 88* Modified August 1976 by T. Casey and M. Grady to add commands that deal with FNPs 89* Modified November 1976 by T. Casey to fix bug in stop_fnp command. 90* Modified September 1977 by T. Casey to make drop, accept, substty, detach, and remove treat MC_SERVICE consistently, 91* . and to make the word command with no arguments print current word, session type, and message. 92* Modified January 1978 by T. Casey to fix bugs in previous modification. 93* Modified May 1978 by T. Casey to add abs qres command, and modify several other commands to print the current values 94* . of the parameters they set, instead of complaining, when no arguments are given. 95* Modified August 1978 by Larry Johnson for multiplexer commands 96* Modified November 1978 by T. Casey, for new abs command keywords. 97* Modified March 1979 by T. Casey for MR7.0a, to add abs terminate, abs suspend, and abs release of suspended jobs. 98* Modified August 1979 by T. Casey for MR8.0 to support process preservation across hangups and fix bugs. 99* Modified December 1980 by E. N. Kittlitz for Person.Project & bugfixes 100* Modified June 1981 by T. Casey for MR9.0 for new wakeup priorities. 101* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 102* Modified December 1981, E. N. Kittlitz. whotab copies of autbl control info. 103* Modified April 1982, E. N. Kittlitz. down: insist uptime > downtime 104* Modified May 1982, E. N. Kittlitz. New AS initialization. 105* Modified June 1982, E. N. Kittlitz. Kluge MR10.0 stop_mpx support. 106* Modified July 1982, E. N. Kittlitz. rename to admin_. 107* Modified August 1982, E. N. Kittlitz. dialup_ re-introduction. 108* Modified October 1982, E. N. Kittlitz. minor 'word' fixes. 109* Modified 83-12-14, BIM. added shutdown_mpx 110* Modified March 1984 by GMP to fix the "word" command to set the special message again. 111* Modified 09/10/84 by R. Michael Tague: Changed $down so that 112* system_shutdown_scheduled_ IPS is sent to all processes when a shutdown 113* is scheduled. 114* Modified 1984-11-02, BIM: Stop masking and unmasking, its not our job. 115* call the restricting entry in mc_commands_ for quit. 116* Modified 84-11-14 for whotab.session. -E. A. Ranzenbach... 117* Modified 1985-01-10, BIM: Add calls to mc_check_access_ for quit and 118* login/logout. 119* Modified 1985-02-07, E. Swenson: to allow cancellation of absentee shutdown 120* once one has begun, but not yet been completed. 121* Modified 1985-02-13, E. Swenson: to fix bump code. 122* Modified 1985-03-12, E. Swenson: to fix system shutdown scheduling. 123* Modified 1985-03-22, E. Swenson: to fix drop code. 124* Modified 1985-06-28, E. Swenson: allow substty to again work for otw_. 125**/ 126 127 /****^ HISTORY COMMENTS: 128* 1) change(86-01-09,MSharpe), approve(87-05-01,MCR7690), 129* audit(87-05-07,Parisek), install(87-08-04,MR12.1-1055): 130* Changed to move message coordinator, process and channel comm commands 131* to the newly created programs to hold them. (These commands were 132* previously in admin_.) 133* 2) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 134* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 135* Correct error message documentation. 136* 3) change(86-09-26,Beattie), approve(86-09-22,MCR7542), 137* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 138* Remove references to the 963 and 029 preaccess commands and remove support 139* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 140* 4) change(87-04-27,GDixon), approve(87-05-01,MCR7690), 141* audit(87-05-07,Parisek), install(87-08-04,MR12.1-1055): 142* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 143* 5) change(87-06-25,Parisek), approve(87-06-25,MCR7690), 144* audit(87-07-31,Beattie), install(87-08-04,MR12.1-1055): 145* Added a cleanup handler for all entry points thereby nulling all 146* pointers to system data bases previously opened up. 147* 6) change(87-08-06,GDixon), approve(87-08-06,MCR7690), 148* audit(87-08-06,Parisek), install(87-08-06,MR12.1-1064): 149* Remove the cleanup handler. It was performing a mis-service by 150* terminating segments pointed to by static pointers in as_data_. 151* 7) change(87-09-18,Parisek), approve(87-09-18,PBF7716), 152* audit(87-09-18,Farley), install(87-09-21,MR12.1-1111): 153* Correct an incorrectly formatted ioa_ control string. 154* 8) change(87-10-04,Beattie), approve(87-10-26,MCR7785), 155* audit(87-12-04,Parisek), install(87-12-07,MR12.2-1008): 156* Accomodate changes in format of date_time strings. 157* 9) change(88-09-30,Parisek), approve(88-10-19,MCR8014), 158* audit(89-01-12,Farley), install(89-01-23,MR12.3-1009): 159* Divide installation_parms.warning_time by 60 seconds to produce the 160* correct number of minutes a process has left before shutdown which is 161* reported by the stop command. 162* 10) change(90-09-20,Vu), approve(90-09-20,MCR8201), audit(90-09-24,Schroth), 163* install(90-10-04,MR12.4-1037): 164* Correct the oprerator command "abs stop q fg" which cause queue 1 to stop. 165* Absentees are bumped at random time for a scheduled shutdown due to an 166* uninitialized value. 167* END HISTORY COMMENTS */ 168 169 /* Entries */ 170 171 dcl absentee_user_manager_$aum_abs_run entry (ptr); 172 dcl absentee_user_manager_$init_aum entry (fixed bin (35)); 173 dcl absentee_user_manager_$term_aum entry; 174 dcl absentee_user_manager_$update_whotab_abs_control entry; 175 dcl absentee_utility_$abs_defer entry (ptr); 176 dcl absentee_utility_$abs_release entry (ptr, fixed bin); 177 dcl absentee_utility_$au_send_wakeup entry; 178 dcl act_ctl_$shift_cmnd_update entry; 179 dcl admin_$abs entry options (variable); 180 dcl admin_$absentee_down entry; 181 dcl admin_$absentee_off entry; 182 dcl asu_$bump_user entry (ptr, char (*), fixed bin (35), fixed bin); 183 dcl admin_$timed_stop_command entry (); 184 dcl asu_$blast_user entry (ptr, char (*), char (*), fixed bin (35)); 185 dcl available_slots_ entry (fixed bin, fixed bin, (4) fixed bin, (4) fixed bin) returns (fixed bin); 186 dcl convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)); 187 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 188 dcl cu_$arg_list_ptr entry returns (ptr); 189 dcl cu_$generate_call entry (entry, ptr); 190 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 191 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin (35)); 192 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 193 dcl daemon_user_manager_$login entry (char (*), char (*), char (*), char (*)); 194 dcl daemon_user_manager_$logout entry (char (*), char (*), char (*)); 195 dcl dialup_$re_introduce entry; 196 dcl multiplexer_mgr_$dump_mpx entry (char (*), bit (1) aligned, fixed bin (35)); 197 dcl multiplexer_mgr_$load_mpx entry (char (*), bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 198 dcl multiplexer_mgr_$start_mpx entry (char (*), bit (1) aligned, fixed bin (35)); 199 dcl multiplexer_mgr_$listen_mpx entry (char (*), fixed bin (35)); 200 dcl multiplexer_mgr_$stop_mpx entry (char (*), fixed bin (35)); 201 dcl multiplexer_mgr_$shutdown_mpx_command entry (character (*), bit (1) aligned, fixed binary (35)); 202 dcl datebin_$next_shift_change entry (fixed bin (71), fixed bin (71), fixed bin, fixed bin); 203 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 204 dcl get_process_id_ entry () returns (bit (36)); 205 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 206 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 207 dcl hphcs_$ips_wakeup entry (bit (36) aligned, char (*)); 208 dcl ioa_$rsnnl entry options (variable); 209 dcl ioa_$rs entry options (variable); 210 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 211 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 212 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 213 dcl load_ctl_$set_maxunits entry (fixed bin); 214 dcl load_ctl_$set_abs_parms entry; 215 dcl mc_check_access_$log_daemon_in entry (pointer, character (*), fixed binary (35)); 216 dcl ssu_$get_info_ptr entry (pointer) returns (pointer); 217 dcl sys_log entry variable options (variable) init (sys_log_$command); 218 dcl sys_log$error_log entry variable options (variable) init (sys_log_$command_error); 219 dcl (sys_log_, sys_log_$error_log, sys_log_$command, sys_log_$command_error) 220 external entry; 221 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 222 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 223 dcl rcp_list entry; 224 dcl rcp_cancel entry; 225 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 226 dcl match_request_id_ entry (fixed bin (71), char (*)) returns (bit (1) aligned); 227 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 228 dcl list_abs_requests$abs_list entry (ptr, fixed bin, fixed bin (71), fixed bin); /* last arg is NOT fixed bin (35) */ 229 dcl cancel_abs_request$as_abs entry (ptr, fixed bin, fixed bin (71), fixed bin (35)); 230 231 /* External */ 232 dcl as_error_table_$try_again_at_msg fixed bin (35) ext; 233 dcl as_error_table_$special_sess_msg fixed bin (35) ext; 234 dcl as_error_table_$sys_down_msg fixed bin (35) ext; 235 dcl error_table_$action_not_performed fixed bin (35) ext; 236 dcl error_table_$noarg fixed bin (35) ext; 237 dcl error_table_$noentry fixed bin (35) ext static; 238 239 /* Builtin */ 240 241 dcl (addr, after, before, clock, divide, hbound, index, length, max, 242 min, null, rtrim, substr, sum, unspec, verify) builtin; 243 244 245 /* Internal Static */ 246 247 dcl goingdown bit (1) int static init ("0"b); /* TRUE if auto shutdown scheduled */ 248 dcl auto_bump_chn fixed bin (71) int static; /* channel for auto shutdown */ 249 dcl stopflag bit (1) aligned init ("0"b) int static; /* TURE once operator has typed stop */ 250 dcl abs_stop_chn int static fixed bin (71); /* event channel associated with shutting down abs */ 251 dcl absolute_max_queue fixed bin int static init (4); /* maximum number of queues */ 252 dcl abs_shut_interval fixed bin int static init (1800); /* 30 minutes between shutdown and abs stop */ 253 dcl abs_shut_offset fixed bin int static init (600); /* allow abs to run for 10 mins after interactives out */ 254 dcl saved_max_abs_users fixed bin (17) internal static; 255 dcl saved_abs_maxu_auto bit (1) aligned internal static; 256 257 /* Constant */ 258 259 dcl DIGITS char (10) int static init ("0123456789") options (constant); /* for checking time. */ 260 dcl ME char (6) int static init ("admin_") options (constant); 261 dcl MILLION fixed bin (35) int static init (1000000) options (constant); /* useful constant */ 262 dcl NL char (1) internal static options (constant) init (" 263 "); 264 dcl ONE_WEEK fixed bin (71) int static init (604800000000) options (constant); /* microseconds in a week */ 265 dcl SECS_IN_MIN fixed bin int static init (60) options (constant); /* seconds in a minute */ 266 dcl n_called fixed bin int static; /* accumulative time from which stop absentee issued */ 267 dcl abs_command (16) char (12) int static options (constant) initial 268 ("maxu", "maxq", "stop", "start", "bump", "cancel", "qres", "cpu_limit", 269 "defer", "list", "move", "next", "release", "run", "suspend", 270 "terminate" 271 ); 272 273 dcl four_zeros (4) fixed bin int static options (constant) init ((4) 0); 274 dcl CAPITALS char (26) int static options (constant) init 275 ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 276 277 /* Automatic */ 278 279 dcl code fixed bin (35); 280 dcl (i, j, k, l, strl) fixed bin; /* temps */ 281 dcl lng fixed bin (21); 282 dcl temp_sw bit (1) aligned; 283 dcl (clock_value, saveclk) fixed bin (71); /* clock readings in microseconds */ 284 dcl prefix char (200) aligned; /* message for user */ 285 dcl shortinfo char (8) aligned, (longinfo, longinfo1) char (100) aligned; 286 dcl comname char (24); 287 dcl msg char (80); /* message */ 288 dcl (day_now, day_back) char (6); /* dates */ 289 dcl reason char (124); /* reason for next shutdown */ 290 dcl string char (256); /* string of arguments */ 291 dcl (wpers, wproj) char (28) init (""); /* person and proj id to look for */ 292 dcl answer char (256) init (""); /* message typed to operator */ 293 dcl arg_count fixed bin; /* set in validate */ 294 dcl arg_list_ptr ptr; /* pointer to our argument list */ 295 dcl p ptr; /* junk ptr */ 296 dcl action_flag bit (1) aligned; 297 dcl abs_funct char (12); /* function to be performed by absentee commands */ 298 dcl mess char (8); /* event message for use by absentee commands */ 299 dcl ev_p ptr; /* pointer to above */ 300 dcl temp char (2); /* abs q number */ 301 dcl source char (8), /* Source name, used in "route" */ 302 attchan char (32); /* .. channel ID or file name */ 303 dcl (check_sw, force_sw, go_sw) bit (1) aligned; 304 dcl qres (4) fixed bin; 305 dcl mpx_name char (32); /* name of a mltiplexer */ 306 dcl fnp_only bit (1) init ("0"b); /* set if one of obsolete fnp only commands called */ 307 dcl nargs fixed bin; 308 dcl abs_start_at_startup bit (1) aligned; 309 dcl fb71 fixed bin (71); /* temp */ 310 dcl b12 bit (12); 311 dcl c4 char (4); 312 dcl temp_dir char (168); 313 dcl temp_ename char (32); 314 dcl abs_arg_ptr ptr; 315 dcl continue bit (1) aligned; 316 dcl error_message char (256); /* text of error message */ 317 318 /* Based */ 319 320 dcl 1 auto_abs_args like abs_args aligned; 321 dcl arg char (lng) based (p); /* pickup structure for arguments */ 322 dcl bf fixed binary (71) based (p); /* for event message */ 323 dcl 1 xmessage aligned based (ev_p), /* structure which describes a two part */ 324 2 string char (4) aligned, /* event message sent to absentee user manager */ 325 2 table_index fixed bin; /* index in AUT */ 326 327 dcl based_anstbl_message char (lng) based (addr (anstbl.special_message)); 328 329 login: entry options (variable); 330 331 /* *** This entry implements the operator "login" command. It allows 332* the operator to log in system daemons. */ 333 334 arg_list_ptr = cu_$arg_list_ptr (); 335 comname = "admin_: login"; 336 337 call validate; /* locate anwer table */ 338 if arg_count = 0 then 339 LOGIN_USAGE: do; 340 answer = "Usage: login Person.Project SOURCE {-control_args}"; 341 go to admin_answers; 342 end; 343 344 345 call get_pers_proj (arg_list_ptr, 1, i, code); /* get person, project */ 346 if code ^= 0 then go to LOGIN_USAGE; 347 348 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); /* see if source arg */ 349 if code ^= 0 then go to LOGIN_USAGE; 350 attchan = arg; 351 352 sc_subsystem_info_ptr = ssu_$get_info_ptr (sc_stat_$admin_sci_ptr); 353 call mc_check_access_$log_daemon_in (sc_subsystem_info_ptr, attchan, code); 354 if code ^= 0 then do; 355 if code = error_table_$noentry 356 then answer = "No MC ACS segment for the source " || rtrim (attchan) || "."; 357 else answer = "Login not permitted for message coordinator source " || rtrim (attchan) || "."; 358 go to admin_err; 359 end; 360 361 i = i + 1; /* get next arg */ 362 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); /* See if optional args. */ 363 if code ^= 0 then string = ""; 364 else call build_string (arg_list_ptr, (i)); /* we don't need i any more, but build_string does */ 365 366 call daemon_user_manager_$login (wpers, wproj, attchan, string); 367 /* Cause automatic login of daemon */ 368 369 return; 370 371 logout: entry options (variable); 372 373 /* *** This entry implements the operator "logout" command. It allows 374* an operator to logout system daemons. */ 375 376 arg_list_ptr = cu_$arg_list_ptr (); 377 comname = "admin_: logout"; 378 379 call validate; /* locate answer table */ 380 381 call get_pers_proj (arg_list_ptr, 1, i, code); /* get person, project, set i */ 382 if code ^= 0 then do; 383 answer = "Usage: logout Person.Project {SOURCE}"; 384 go to admin_answers; 385 end; 386 387 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); /* get source */ 388 if code ^= 0 then source = "*"; 389 else source = arg; 390 call daemon_user_manager_$logout (wpers, wproj, source); /* bop */ 391 392 return; 393 394 word: entry options (variable); 395 396 /* *** This entry implements the operator "word" command. It allows the 397* operator to set the login word. */ 398 399 arg_list_ptr = cu_$arg_list_ptr (); 400 comname = "admin_: word"; 401 call cu_$generate_call (SET_LOGIN_WORD, cu_$arg_list_ptr ()); 402 return; 403 404 sysid: entry options (variable); 405 406 /* *** This entry implements the operator "sysid" command. It allows 407* the operator to set the published system id in the who table. */ 408 409 arg_list_ptr = cu_$arg_list_ptr (); 410 comname = "admin_: sysid"; 411 412 call validate; /* locate answer table */ 413 414 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); /* get system id argument */ 415 if code ^= 0 then go to admin_err; 416 if whoptr = null then return; /* in case trouble */ 417 whotab.sysid = arg; /* change public system id */ 418 return; 419 420 down1: entry (dn_time, dn_msg, dn_until); 421 422 /* *** This entry is called by as_init_ to restore an old scheduled 423* shutdown. */ 424 425 dcl (dn_time, dn_until) fixed bin (71), dn_msg char (*); 426 427 arg_list_ptr = cu_$arg_list_ptr (); 428 call validate; 429 comname = "admin_: down"; 430 call SCHEDULE_SYSTEM_SHUTDOWN (dn_time, dn_msg, dn_until); 431 return; 432 433 down: entry options (variable); 434 435 /* *** This is the operator "down" command. It schedules a system shutdown, 436* stops a scheduled shutdown, or tells the operator when the next 437* system shutdown is scheduled. */ 438 439 arg_list_ptr = cu_$arg_list_ptr (); 440 comname = "admin_: down"; 441 call validate; 442 443 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); /* get shutdown time */ 444 if code ^= 0 then do; /* If no args, tell when shutdown will be. */ 445 if ^goingdown then 446 call sys_log (SL_LOG, "^a: down: No shutdown is scheduled.", ME); 447 else do; 448 msg = date_time_$format ("date_time", whotab.nextsd, "", ""); 449 answer = date_time_$format ("date_time", whotab.until, "", ""); 450 call sys_log (SL_LOG, "^a: down: Next shutdown from ^a to ^a ^a", ME, msg, answer, whotab.why); 451 end; 452 return; 453 end; 454 455 string = arg; /* align argument */ 456 if lng = 1 then 457 if string = "0" then do; /* if time is 0 then reset previous shutdown command */ 458 call CANCEL_SYSTEM_SHUTDOWN (answer, code); 459 if code ^= 0 then 460 goto admin_answers; 461 else return; 462 end; 463 464 if verify (arg, DIGITS) = 0 then 465 call convert_date_to_binary_ (arg || ".", saveclk, code); 466 else call convert_date_to_binary_ (arg, saveclk, code); 467 if code ^= 0 then do; /* Check if time is legal. */ 468 bad_t: answer = arg || " invalid clock time."; 469 go to admin_answers; 470 end; 471 472 if saveclk < clock () then go to bad_t; /* Silly. We passed that. */ 473 474 j = 3; /* arg. position */ 475 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); /* Next uptime, message, or nothing */ 476 if code ^= 0 then do; 477 clock_value = 0; /* default time up */ 478 reason = " "; /* default reason */ 479 end; 480 else do; 481 if verify (arg, DIGITS) = 0 then 482 call convert_date_to_binary_ (arg || ".", clock_value, 483 code); 484 else call convert_date_to_binary_ (arg, clock_value, code); 485 if code ^= 0 then do; /* Must be a message, not time. */ 486 clock_value = 0; /* default up time */ 487 go to why; /* assign message */ 488 end; 489 if clock_value < saveclk then do; 490 answer = "uptime is earlier than downtime."; 491 go to admin_answers; 492 end; 493 494 j = 4; /* arg. pos */ 495 call cu_$arg_ptr_rel (3, p, lng, code, arg_list_ptr); /* message, or nothing */ 496 if code ^= 0 then reason = " "; /* default reason */ 497 else do; /* there is a reason */ 498 why: call build_string (arg_list_ptr, j - 1); 499 reason = substr (string, 1, strl); 500 end; 501 end; 502 503 if goingdown then do; /* already a shutdown? */ 504 msg = date_time_$format ("date_time", whotab.nextsd, "", ""); 505 call sys_log (SL_LOG, "^a: down: resetting previous shutdown at ^a", ME, msg); 506 call CANCEL_SYSTEM_SHUTDOWN (answer, (0)); 507 end; 508 509 call SCHEDULE_SYSTEM_SHUTDOWN (saveclk, reason, clock_value); 510 return; 511 512 stop: entry options (variable); 513 514 /* *** This is the operator "stop" command. It allows a graceful shutdown 515* of the system by bumping all the users with grace time. */ 516 517 arg_list_ptr = cu_$arg_list_ptr (); 518 comname = "admin_: stop"; 519 call validate; /* locate answer table */ 520 call cu_$arg_count_rel (i, arg_list_ptr, (0)); /* operators keep typing "stop absentee" ... */ 521 if i > 0 then do; /* .. so reject this */ 522 answer = "no arguments are allowed for ""stop"""; 523 go to admin_answers; /* .. try again, dummy */ 524 end; 525 526 call stop_command; /* do the work */ 527 return; /* that was easy... */ 528 529 timed_stop_command: 530 entry; 531 532 /* *** This entry is called as a result of an alarm timer set by the "down" 533* command. It allows the system to shut down in an orderly fashion */ 534 535 arg_list_ptr = cu_$arg_list_ptr (); 536 comname = "admin_: stop"; 537 call set_non_command_sys_loggers; 538 call sys_log (SL_LOG, "^a: stop: Automatic shutdown", ME); /* and fix all up */ 539 call validate; /* going to need answer table */ 540 call stop_command; /* now bump everybody */ 541 return; 542 543 /* format: style5,ind5 */ 544 545 warn: 546 entry options (variable); 547 548 /* *** This entry implements the operator "warn" command. It allows the 549* operator to blast a message on a user's terminal. */ 550 551 arg_list_ptr = cu_$arg_list_ptr (); 552 comname = "admin_: warn"; 553 call validate; /* locate answer table */ 554 555 call get_pers_proj (arg_list_ptr, 1, i, code);/* get person, project, set i */ 556 if code ^= 0 then 557 do; 558 answer = "Usage: warn Person.Project MESSAGE"; 559 go to admin_answers; 560 end; 561 562 call build_string (arg_list_ptr, i); /* get message to be sent to user */ 563 564 action_flag = "0"b; /* haven't done anybody yet */ 565 566 continue = "1"b; 567 do i = 1 to anstbl.current_size while (continue); 568 utep = addr (anstbl.entry (i)); /* get ptr to a user entry */ 569 if ute.active >= NOW_LOGGED_IN then /* if user logged in */ 570 do; 571 if wpers = "*" | wpers = ute.person then 572 if wproj = "*" | wproj = ute.project then 573 do; 574 action_flag = "1"b; /* did something */ 575 if ^ute.uflags.disconnected then 576 do; 577 call asu_$blast_user (utep, string, 578 error_message, code); 579 if code ^= 0 then 580 call sys_log (SL_LOG, "^a: warn: ^a", 581 ME, error_message); 582 end; 583 if wpers ^= "*" & wproj ^= "*" then 584 continue = "0"b; /* no more searching */ 585 end; 586 end; 587 end; 588 589 if ^action_flag then 590 call sys_log (SL_LOG, "^a: warn: ^a.^a not found.", ME, wpers, 591 wproj); 592 return; 593 594 595 /* format: style4 */ 596 597 rcp: entry options (variable); 598 599 /* *** This is the operator "rcp" command. It forwards the call to the 600* appropriate rcp command: rcp_list or rcp_cancel. */ 601 602 arg_list_ptr = cu_$arg_list_ptr (); 603 comname = "admin_: rcp"; 604 605 call validate; /* locate answer table */ 606 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); /* get opcode, or index */ 607 if code ^= 0 then goto admin_err; 608 if arg = "list" then 609 call cu_$generate_call (rcp_list, cu_$arg_list_ptr ()); 610 else if arg = "cancel" then 611 call cu_$generate_call (rcp_cancel, cu_$arg_list_ptr ()); 612 else do; 613 answer = "unknown rcp command " || arg; 614 goto admin_answers; 615 end; 616 617 return; 618 619 log: entry options (variable); 620 621 /* *** This is the operator "log" command. It allows the operator to 622* place an entry in the answering service log. */ 623 624 arg_list_ptr = cu_$arg_list_ptr (); 625 comname = "admin_: log"; 626 627 call build_string (arg_list_ptr, 1); /* make up a string which is the comment */ 628 call sys_log (SL_LOG_SILENT, "^a: log: ^a", ME, string); /* write off line */ 629 return; 630 631 maxunits: 632 entry options (variable); 633 634 /* *** This is the "maxu" operator command. It allows the operator to set 635* the maximum number of load units allowed on the system. */ 636 637 arg_list_ptr = cu_$arg_list_ptr (); 638 comname = "admin_: maxunits"; 639 640 call validate; /* locate answer table */ 641 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); /* get first arg */ 642 if code ^= 0 then do; /* if no argument given, print current maxu */ 643 call sys_log (SL_LOG, "^a: maxu: ^[^; (auto)^; (level)^]: ^d (^d normal users)", 644 ME, anstbl.auto_maxu + 1, anstbl.max_units, divide (anstbl.max_units, 10, 17, 0)); 645 return; 646 end; 647 string = arg; /* get maxunits */ 648 if string = "auto" then do; /* turn on auto setting of max */ 649 anstbl.auto_maxu = 1; /* whee */ 650 call load_ctl_$set_maxunits (anstbl.shift); /* stimulate */ 651 end; 652 else if string = "level" then do; /* make adjustment of max be dynamic */ 653 anstbl.auto_maxu = 2; /* whee wheee */ 654 call load_ctl_$set_maxunits (anstbl.shift); /* and poke it once */ 655 end; 656 else do; 657 i = cv_dec_check_ (string, code); /* want to shut off automatic thing and force it */ 658 if code ^= 0 then go to wrong_maxunits; 659 if i <= 0 then do; /* simple checks */ 660 wrong_maxunits: 661 answer = arg || " is invalid value for maxunits"; 662 go to admin_answers; 663 end; 664 if i < 200 then /* check for a likely mistake */ 665 call sys_log (SL_LOG, "^a: maxu: Warning: maxunits are in tenths of load units.^/^-You just set maxu to ^d, or ^d normal users.", 666 ME, i, divide (i, 10, 17, 0)); 667 anstbl.max_units = i; /* set the system max load units. */ 668 anstbl.auto_maxu = 0; /* Turn off automatic adjustment */ 669 whotab.mxunits = i; /* tell users too */ 670 end; 671 call sys_log (SL_LOG, "^a: maxu^[^; (auto)^; (level)^]: ^d (^d normal users)", 672 ME, anstbl.auto_maxu + 1, anstbl.max_units, divide (anstbl.max_units, 10, 17, 0)); 673 674 return; 675 676 /* ADMIN_$SHIFT - Override shift table - set specified shift until specified time. 677* 678* Usage: 679* shift prints "shift S until T" 680* shift auto resets to shift given in shift table 681* shift S sets shift to S until next regular shift change time 682* shift S T sets shift to S until time T (T < one week in future) 683* 684**/ 685 686 shift: entry options (variable); 687 688 arg_list_ptr = cu_$arg_list_ptr (); 689 comname = "admin_: shift"; 690 691 call validate; /* get ptrs to various tables */ 692 clock_value = clock (); /* use same clock value throughout execution of command */ 693 j = -1; /* do not log the command unless we change something */ 694 695 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); /* see if there is at least one argument */ 696 if code = 0 then do; /* there is */ 697 string = arg; /* align the argument */ 698 699 if string = "auto" then do; /* revert to using shift table */ 700 whotab.next_shift_change_time = 0; /* force datebin_ to look in shift table */ 701 call datebin_$next_shift_change (clock_value, whotab.next_shift_change_time, whotab.shift, (0)); 702 end; 703 704 else do; /* first arg must be shift number */ 705 i = cv_dec_check_ (string, code); 706 if code ^= 0 | i < 0 | i > 7 then do; 707 answer = arg || " is not a legal shift number."; 708 goto admin_answers; 709 end; 710 711 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); /* see if time has also been given */ 712 if code = 0 then do; /* it has */ 713 if verify (arg, DIGITS) = 0 then 714 call convert_date_to_binary_ (arg || ".", saveclk, code); 715 else call convert_date_to_binary_ (arg, saveclk, code); 716 if code ^= 0 then do; 717 answer = arg || " invalid clock time."; 718 goto admin_answers; 719 end; 720 721 if saveclk <= clock_value | saveclk > clock_value + ONE_WEEK then do; 722 answer = arg || " is not within the next week."; 723 goto admin_answers; 724 end; 725 726 whotab.next_shift_change_time = saveclk; 727 end; /* end of time-given do group */ 728 729 whotab.shift = i; /* we waited to see if time was ok before changing shift */ 730 end; /* end of shift-given do group */ 731 j = 1; /* we changed something, so log the command */ 732 end; /* end of first-arg-given do group */ 733 734 msg = date_time_$format ("date_time", whotab.next_shift_change_time, "", ""); 735 call sys_log (SL_LOG, "admin_: shift: ^d until ^a", whotab.shift, msg); /* print shift and time on opr cons */ 736 737 if anstbl.shift ^= whotab.shift then do; /* only if shift actually changed */ 738 whotab.last_shift_change_time = clock_value; /* remember when it did */ 739 call act_ctl_$shift_cmnd_update; /* tell accounting to use new rates */ 740 end; 741 742 return; 743 744 /* The following four entry points deal with FNPs. They allow the operator to 745* perform manually some functions that are usually performed automatically by the answering service. 746* These commands are provided for debugging and reconfiguration purposes, 747* and should not have to be used during normal system operation. */ 748 749 /* ADMIN_$FDUMP_FNP = CALL SUBROUTINE TO DUMP A SPECIFIED FNP */ 750 /* ADMIN_$DUMP_FNP = CALL SUBROUTINE TO DUMP A SPECIFIED FNP */ 751 /* ADMIN_$DUMP_MPX = CALL SUBROUTINE TO DUMP A SPECIFIED MULTIPLEXER */ 752 753 fdump_fnp: 754 entry options (variable); 755 dump_fnp: 756 entry options (variable); 757 758 fnp_only = "1"b; 759 comname = "admin_: fdump_fnp"; 760 761 dump_mpx: 762 entry options (variable); 763 764 arg_list_ptr = cu_$arg_list_ptr (); 765 if ^fnp_only then 766 comname = "admin_: dump_mpx"; 767 768 call validate; 769 770 call get_mpx_name (1); /* first arg should be multiplexer name */ 771 772 force_sw = "0"b; 773 code = 0; 774 do i = 2 by 1 while (code = 0); /* check rest of args */ 775 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 776 if code = 0 then 777 do; 778 if arg = "-force" then 779 force_sw = "1"b; 780 else 781 do; 782 answer = "unknown argument " || arg; 783 go to admin_answers; 784 end; 785 end; 786 end; 787 788 call multiplexer_mgr_$dump_mpx (mpx_name, force_sw, code); 789 return; 790 791 /* ================================================= */ 792 793 /* ADMIN_$LOAD_FNP = INITIATE A BOOTLOAD OF THE SPECIFIED FNP */ 794 /* ADMIN_$LOAD_MPX = INITIATE A LOAD OF THE SPECIFIED MULTIPLEXER */ 795 796 load_fnp: 797 entry options (variable); 798 799 fnp_only = "1"b; 800 comname = "admin_: load_fnp"; 801 802 load_mpx: 803 entry options (variable); /* new, general command */ 804 805 arg_list_ptr = cu_$arg_list_ptr (); 806 807 if ^fnp_only then 808 comname = "admin_: load_mpx"; 809 810 call validate; 811 812 call get_mpx_name (1); /* arg 1 is mpx name */ 813 814 /* Look for additional arguments */ 815 816 check_sw, force_sw = ""b; /* defaults, if no more args given */ 817 go_sw = "1"b; 818 code = 0; /* to get past the "while" */ 819 820 do i = 2 by 1 while (code = 0); 821 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 822 if code = 0 then 823 do; /* if there is an arg */ 824 if arg = "-ck" | arg = "-check" then 825 check_sw = "1"b; 826 else if arg = "-ns" | arg = "-no_start" | arg = "-nostart" 827 then 828 go_sw = ""b; 829 else if arg = "-force" then 830 force_sw = "1"b; 831 else 832 do; 833 answer = "unknown argument " || arg; 834 goto admin_answers; 835 end; 836 end; 837 end; 838 839 call multiplexer_mgr_$load_mpx (mpx_name, check_sw, go_sw, force_sw, 840 code); 841 842 return; 843 844 /* ================================================= */ 845 846 /* ADMIN_$START_FNP = LISTEN TO THE PHONES CONFIGURED ON A SPECIFIED FNP */ 847 /* ADMIN_$START_MPX = LISTEN TO THE PHONES CONFIGURED ON A SPECIFIED MULTIPLEXER */ 848 849 start_fnp: 850 entry options (variable); 851 852 fnp_only = "1"b; 853 comname = "admin_: start_fnp"; 854 855 start_mpx: 856 entry options (variable); 857 858 arg_list_ptr = cu_$arg_list_ptr (); 859 860 if ^fnp_only then 861 comname = "admin_: start_mpx"; 862 863 call validate; 864 865 call get_mpx_name (1); /* arg 1 should be the multiplexer name */ 866 867 call multiplexer_mgr_$start_mpx (mpx_name, "0"b, code); 868 if code ^= 0 then 869 return; 870 871 call multiplexer_mgr_$listen_mpx (mpx_name, code); 872 return; 873 874 /* ================================================= */ 875 876 /* ADMIN_$STOP_FNP = PREVENT LOADING, OR LISTENING TO THE PHONES OF, OR ACCEPTANCE OF CALLS BY, THE SPECIFIED FNP */ 877 /* ADMIN_$STOP_MPX = PREVENT LOADING, OR LISTENING TO THE PHONES OF, OR ACCEPTANCE OF CALLS BY, THE SPECIFIED MULTIPLEXER */ 878 879 stop_fnp: 880 entry options (variable); 881 882 fnp_only = "1"b; 883 comname = "admin_: stop_fnp"; 884 885 stop_mpx: 886 entry options (variable); 887 888 arg_list_ptr = cu_$arg_list_ptr (); 889 890 if ^fnp_only then 891 comname = "admin_: stop_mpx"; 892 893 call validate; 894 895 call get_mpx_name (1); /* first arg is multiplexer name */ 896 897 call multiplexer_mgr_$stop_mpx (mpx_name, code); 898 899 return; 900 901 shutdown_mpx: 902 entry options (variable); 903 904 arg_list_ptr = cu_$arg_list_ptr (); 905 906 comname = "admin_: shutdown_mpx"; 907 908 call validate; 909 910 call get_mpx_name (1); /* first arg is multiplexer name */ 911 912 force_sw = "0"b; 913 code = 0; 914 do i = 2 by 1 while (code = 0); /* check rest of args */ 915 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 916 if code = 0 then 917 do; 918 if arg = "-force" then 919 force_sw = "1"b; 920 else 921 do; 922 answer = "unknown argument " || arg; 923 go to admin_answers; 924 end; 925 end; 926 end; 927 928 call multiplexer_mgr_$shutdown_mpx_command (mpx_name, force_sw, code); 929 930 return; /* END of FNP commands */ 931 932 /* ================================================= */ 933 934 /* ADMIN_$ABS = A SET OF FUNCTIONS PERTAINING TO ABSENTEE FACILITY */ 935 936 /* admin_$abs - all operator commands which deal with absenteee enter here */ 937 /* - first argument indicates which absentee function is intended */ 938 939 admin_$abs_not_a_command_: 940 entry options (variable); 941 942 call set_non_command_sys_loggers; 943 /* ** fall down here */ 944 945 abs: 946 entry options (variable); 947 948 arg_list_ptr = cu_$arg_list_ptr (); 949 950 comname = "admin_: abs"; 951 952 call validate; /* locate answer table */ 953 954 if autp = null then 955 do; /* first call? */ 956 call hcs_$initiate (sysdir, "absentee_user_table", "", 0, 0, 957 autp, code); 958 if autp = null then 959 do; 960 call sys_log$error_log (SL_LOG, code, "admin_", 961 "^a>absentee_user_table", sysdir); 962 return; 963 end; 964 end; 965 966 call cu_$arg_count_rel (nargs, arg_list_ptr, code); 967 /* several abs commands need the count */ 968 abs_arg_ptr = addr (auto_abs_args); /* initialize ptr to arg structure */ 969 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); 970 /* get actual command */ 971 if code ^= 0 then 972 go to admin_err; /* abs differs from other system control cmds */ 973 abs_funct = p -> arg; /* copy absentee opr command */ 974 ev_p = addr (mess); /* get ptr to ipc-event message */ 975 976 /* look up absentee operator command in table & go to label associated with it */ 977 978 do i = 1 to hbound (abs_command, 1) 979 while (abs_funct ^= abs_command (i)); 980 end; 981 if i > hbound (abs_command, 1) then 982 do; 983 answer = "unknown absentee command " || arg; 984 go to admin_answers; 985 end; 986 987 if ^sc_stat_$Multics then 988 if abs_funct ^= "stop" then 989 do; 990 call ioa_$rsnnl ( 991 "The abs ^a command can not be used before answering service startup.", 992 answer, (0), abs_funct); 993 goto admin_answers; 994 end; 995 996 comname = "admin_: abs " || abs_funct; 997 goto abs_action (i); 998 999 abs_action (3): /* ABS STOP */ 1000 /* *** graceful shutdown of absentee facility - keeps checking until no 1001* absentee processes left */ 1002 if ^sc_stat_$Multics then /* abs stop before startup means "don't abs start" */ 1003 autbl.abs_stopped, autbl.abs_up = ""b; /* clear any garbage from last bootload */ 1004 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 1005 /* see if second arg given */ 1006 if code = 0 then 1007 do; 1008 if arg = "now" then 1009 do; /* "abs stop now" ? */ 1010 n_called = abs_shut_interval + 1; /* yes. cause all process to get bumped */ 1011 go to abs_s1; 1012 end; 1013 1014 else if arg = "q" | arg = "queue" then 1015 do; /* drop one or all queues */ 1016 if ^sc_stat_$Multics then 1017 do; 1018 answer = 1019 "abs stop queue only works after answering service startup" 1020 ; 1021 goto admin_answers; 1022 end; 1023 call cu_$arg_ptr_rel (3, p, lng, code, arg_list_ptr); 1024 if code ^= 0 then 1025 do; 1026 answer = "missing argument: queue to be stopped"; 1027 goto admin_answers; 1028 end; 1029 if arg = "all" then 1030 autbl.queue_dropped (*) = "1"b; 1031 else if arg = "fg" | arg = "foreground" then 1032 autbl.queue_dropped (-1) = "1"b; 1033 else 1034 do; 1035 i = cv_dec_check_ (arg, code); 1036 if code = 0 then 1037 do; 1038 if i >= -1 & i <= absolute_max_queue then 1039 autbl.queue_dropped (i) = "1"b; 1040 else 1041 code = 1; /* any nonzero value, to get error msg printed */ 1042 end; 1043 if code ^= 0 then 1044 do; 1045 answer = "invalid queue to be stopped: " || arg; 1046 goto admin_answers; 1047 end; 1048 end; /* end not all or foreground */ 1049 goto print_dropped_queues; /* go do a "abs start queue" to show what happened */ 1050 end; /* end abs stop queue */ 1051 1052 else 1053 do; /* bad arg. ignore command */ 1054 answer = "unknown argument " || arg; 1055 go to admin_answers; 1056 end; 1057 end; 1058 else 1059 n_called = 0; /* wasn't "abs stop now" - wait a while first */ 1060 1061 if autbl.abs_stopped & autbl.abs_up then 1062 do; /* don't stop absentee if in process of going down */ 1063 abs_stopping: 1064 answer = "absentee stop in progress"; 1065 go to admin_answers; 1066 end; 1067 1068 abs_s1: 1069 if ^autbl.abs_up then 1070 do; /* don't stop absentee if it is not up */ 1071 autbl.abs_stopped = "1"b; 1072 call sys_log (SL_LOG, 1073 "^a: abs: absentee not up, and will not be started automatically", ME); 1074 if ^sc_stat_$Multics then /* if before startup */ 1075 call absentee_user_manager_$term_aum; 1076 /* tell him not to start absentee automatically */ 1077 go to admin_abs_returns; 1078 end; 1079 1080 if goingdown then 1081 do; 1082 call sys_log (SL_LOG, "^a: abs: resetting auto abs stop", ME); 1083 call timer_manager_$reset_alarm_wakeup (abs_stop_chn); 1084 end; 1085 else 1086 call ipc_$create_ev_chn (abs_stop_chn, code); 1087 1088 call START_ABSENTEE_SHUTDOWN (); 1089 return; 1090 1091 absentee_off: 1092 entry (); 1093 1094 /* *** This entry is called automatically every 30 seconds once an 1095* absentee shutdown has been started if there are remaining absentee 1096* processes running to await their logging out. */ 1097 1098 arg_list_ptr = cu_$arg_list_ptr (); 1099 call set_non_command_sys_loggers; 1100 comname = "admin_: abs stop"; 1101 call validate; 1102 n_called = n_called + 30; /* keep track of time since abs shutdown performed */ 1103 call CHECK_FOR_ABSENTEE_SHUTDOWN (); /* Done yet? */ 1104 return; 1105 1106 absentee_down: 1107 entry (); 1108 1109 /* *** This entry is called automatically by a timer wakeup when the 1110* absentee facility is supposed to begin shutdown. The "down" 1111* command schedules this absentee shutdown. */ 1112 1113 arg_list_ptr = cu_$arg_list_ptr (); 1114 call set_non_command_sys_loggers (); 1115 comname = "admin_: abs stop"; 1116 call validate; 1117 1118 if (^autbl.abs_up | autbl.abs_stopped) then /* do nothing if not up or already stopped */ 1119 call absentee_user_manager_$update_whotab_abs_control (); 1120 else 1121 do; 1122 n_called = 0; 1123 call sys_log (SL_LOG, "^a: stop: auto abs stop", ME); 1124 call START_ABSENTEE_SHUTDOWN (); 1125 end; 1126 return; 1127 1128 /* The bump, cancel, terminate, suspend, and release functions of the abs 1129* command share common code. They all take the same set of arguments, and 1130* they all operate by sending a wakeup to AUM, with the AUT index in one 1131* word, and a 4 letter abbreviation of the command name in the other. The 1132* cancel and release functions can also operate on non-running jobs, so they 1133* call entry points in AU instead of, or in addition to, sending the wakeup, 1134* depending on the arguments given. */ 1135 1136 /* bumps absentee users - by name, project, absentee id - leaves restartable 1137* requests in message segment */ 1138 1139 /* ********** abs bump ********** */ 1140 1141 abs_action (5): /* ABS BUMP */ 1142 ev_p -> xmessage.string = "bump"; 1143 go to abs_bump_common; 1144 1145 /* bumps absentee users - by name, project, absentee id - deletes restartable requests from message segment */ 1146 1147 /* ********** abs cancel ********** */ 1148 1149 abs_action (6): /* ABS CANCEL */ 1150 ev_p -> xmessage.string = "canc"; 1151 goto abs_bump_common; 1152 1153 /* ********** abs release ********** */ 1154 1155 abs_action (13): 1156 ev_p -> xmessage.string = "rlse"; 1157 goto abs_bump_common; 1158 1159 /* ********** abs suspend ********** */ 1160 1161 abs_action (15): 1162 ev_p -> xmessage.string = "susp"; 1163 goto abs_bump_common; 1164 1165 /* ********** abs terminate ********** */ 1166 1167 abs_action (16): 1168 ev_p -> xmessage.string = "term"; 1169 goto abs_bump_common; 1170 1171 1172 abs_bump_common: 1173 if ^autbl.abs_up then 1174 goto abs_not_up; 1175 k = 0; /* clear counter of selected jobs */ 1176 1177 call parse_abs_args (arg_list_ptr); /* look at job selection args and fill in structure */ 1178 if abs_funct = "cancel" then /* abs cancel must give user name and not "*" */ 1179 call validate_abs_args ("1"b, "1"b); /* allow absN, require user */ 1180 else 1181 call validate_abs_args ("1"b, "0"b); /* allow absN, don't require user */ 1182 1183 if abs_funct ^= "cancel" | abs_args.absn_sw | abs_args.abs_star_sw 1184 then 1185 do; /* scan AUT unless cancel &^absN */ 1186 if abs_args.absn_sw then 1187 i, j = abs_args.aut_index; /* if absN, just look at slot N */ 1188 else 1189 do; 1190 i = 1; 1191 j = autbl.current_size; 1192 end; 1193 1194 do i = i to j; 1195 utep = addr (autbl.entry (i)); 1196 if ute.active < NOW_LOGGED_IN then 1197 if abs_args.absn_sw then 1198 do; 1199 call ioa_$rsnnl ( 1200 "No job in absentee slot ^d (status= ^d).", 1201 answer, (0), i, ute.active); 1202 goto admin_answers; 1203 end; 1204 else 1205 goto abs_bump_nomatch; 1206 1207 if abs_args.user_sw then 1208 if (abs_args.person ^= "*" 1209 & abs_args.person ^= ute.person) 1210 | (abs_args.project ^= "*" 1211 & abs_args.project ^= ute.project) then 1212 if abs_args.absn_sw then 1213 do; 1214 call ioa_$rsnnl ( 1215 "Job in absentee slot ^d is not from user ^a.^a", 1216 answer, (0), i, abs_args.person, 1217 abs_args.project); 1218 goto admin_answers; 1219 end; 1220 else 1221 goto abs_bump_nomatch; 1222 1223 if abs_args.id_sw then 1224 if ^match_request_id_ (ute.request_id, 1225 (abs_args.request_id_string)) then 1226 if abs_args.absn_sw then 1227 do; 1228 call ioa_$rsnnl ( 1229 "Job in absentee slot ^d does not match request ID ^a", 1230 answer, (0), i, 1231 abs_args.request_id_string); 1232 goto admin_answers; 1233 end; 1234 else 1235 goto abs_bump_nomatch; 1236 1237 if abs_args.path_sw | abs_args.entry_sw then 1238 do; 1239 call expand_pathname_ (ute.input_seg, temp_dir, 1240 temp_ename, (0)); 1241 call match_star_name_ (temp_ename, abs_args.ename, 1242 code); 1243 if code ^= 0 1244 | (abs_args.path_sw & temp_dir ^= abs_args.dirname) 1245 then 1246 if abs_args.absn_sw then 1247 do; 1248 call ioa_$rsnnl ( 1249 "Job in absentee slot ^d does not match absin ^[path ^a>^a^;entry name ^s^a^]", 1250 answer, (0), i, abs_args.path_sw, 1251 abs_args.dirname, abs_args.ename); 1252 goto admin_answers; 1253 end; 1254 else 1255 goto abs_bump_nomatch; 1256 end; 1257 1258 if abs_args.sender_sw then 1259 do; 1260 call match_star_name_ (ute.sender, abs_args.sender, 1261 code); 1262 if code ^= 0 then 1263 if abs_args.absn_sw then 1264 do; 1265 call ioa_$rsnnl ( 1266 "Job in absentee slot ^d is not from sender ^a", 1267 answer, (0), i, abs_args.sender); 1268 goto admin_answers; 1269 end; 1270 else 1271 goto abs_bump_nomatch; 1272 end; 1273 1274 if abs_args.queue_sw then 1275 if (abs_args.queue > 0 & ute.queue ^= abs_args.queue) 1276 | (abs_args.queue = 0 1277 & (ute.queue ^= 1 | ^ute.adjust_abs_q_no)) 1278 | (abs_args.queue = -1 & ^ute.foreground_job) then 1279 if abs_args.absn_sw then 1280 do; 1281 call ioa_$rsnnl ( 1282 "Job in absentee slot ^d is not from queue ^d", 1283 answer, (0), i, abs_args.queue); 1284 goto admin_answers; 1285 end; 1286 else 1287 goto abs_bump_nomatch; 1288 1289 if abs_funct = "release" then /* if release */ 1290 if ^ute.sus_sent then /* and job not suspended */ 1291 if abs_args.absn_sw then 1292 do; 1293 call ioa_$rsnnl ( 1294 "Job in absentee slot ^d is not suspended.", 1295 answer, (0), i); 1296 goto admin_answers; 1297 end; 1298 else 1299 goto abs_bump_nomatch; 1300 1301 if abs_funct = "suspend" then /* if suspend */ 1302 if ute.sus_sent then /* and job already suspended */ 1303 if abs_args.absn_sw then 1304 do; 1305 call ioa_$rsnnl ( 1306 "Job in absentee slot ^d is already suspended.", 1307 answer, (0), i); 1308 goto admin_answers; 1309 end; 1310 else 1311 goto abs_bump_nomatch; 1312 1313 /* This job has been selected. Put AUTBL slot number into message */ 1314 1315 ev_p -> xmessage.table_index = i; 1316 1317 /* Send wakeup to absentee user manager. It contains the slot number and the action to be taken. */ 1318 1319 call hcs_$wakeup (whotab.abs_procid, whotab.abs_event, 1320 ev_p -> bf, code); 1321 k = k + 1; /* count selected jobs */ 1322 abs_bump_nomatch: 1323 end; /* end loop thru aute's */ 1324 1325 if abs_funct = "release" /* if release */ 1326 & ^(abs_args.absn_sw | abs_args.abs_star_sw) then 1327 do; /* and a running job was not specified, 1328* see if we need to release deferred job(s) */ 1329 call absentee_utility_$abs_release (abs_arg_ptr, l); 1330 /* l is returned count of released jobs */ 1331 if k + l = 0 then 1332 do; /* no jobs released */ 1333 answer = 1334 "Selection arguments matched no deferred or suspended absentee requests." 1335 ; 1336 goto admin_answers; 1337 end; 1338 else if k > 0 then 1339 do; /* one or more suspended jobs were released */ 1340 call ioa_$rsnnl ("^d suspended request^[s^] released.", 1341 answer, (0), k, (k ^= 1)); 1342 goto admin_replies; 1343 end; 1344 end; 1345 else 1346 do; /* see if scan of AUT found any jobs */ 1347 if autbl.n_abs_run = 0 then 1348 do; 1349 answer = "There are no absentee jobs running."; 1350 goto admin_replies; 1351 end; 1352 else if k = 0 then 1353 do; 1354 answer = 1355 "Selection arguments matched no running absentee jobs." 1356 ; 1357 goto admin_answers; 1358 end; 1359 end; 1360 1361 end; /* end ^cancel | absN */ 1362 1363 else 1364 do; /* abs cancel, and not absN */ 1365 call cancel_abs_request$as_abs (arg_list_ptr, nargs, fb71, code); 1366 if code ^= 0 & fb71 ^= 0 then 1367 do; /* a running job was cancelled, so we must bump it */ 1368 do i = 1 to autbl.current_size 1369 while (addr (autbl.entry (i)) -> ute.request_id ^= fb71) 1370 ; 1371 end; 1372 if i <= autbl.current_size then 1373 do; 1374 ev_p -> xmessage.table_index = i; 1375 call hcs_$wakeup (whotab.abs_procid, whotab.abs_event, 1376 ev_p -> bf, code); 1377 end; 1378 end; 1379 end; 1380 goto admin_abs_returns; 1381 1382 /* code to initialize the absentee facility */ 1383 /* set max abs users */ 1384 /* signals absentee user manager so that it will */ 1385 /* attempt to login max abs users */ 1386 1387 /* ********** abs start ********** */ 1388 1389 abs_action (4): /* ABS START */ 1390 if (autbl.abs_up & autbl.abs_stopped) then 1391 do; /* If absentee is running down */ 1392 if autbl.n_abs_run > 0 then 1393 call ABORT_ABSENTEE_SHUTDOWN (); 1394 call ipc_$delete_ev_chn (abs_stop_chn, code); 1395 call absentee_user_manager_$term_aum; 1396 autbl.abs_up, autbl.abs_stopped = ""b; /* all finished, clear indicators */ 1397 end; 1398 if goingdown then /* If an automatic shutdown is scheduled, */ 1399 if (whotab.nextsd - clock ()) < abs_shut_interval * MILLION then 1400 do; 1401 answer = "system coming down soon: no abs start"; 1402 go to admin_answers; 1403 end; 1404 1405 abs_start_at_startup = ""b; /* gets turned on if "abs start startup" */ 1406 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 1407 /* fetch second argument - max number of absentee users */ 1408 if code ^= 0 then 1409 do; /* if no argument default values for max users + max queue */ 1410 if autbl.abs_up then 1411 do; /* initialization of absentee non-reentrant */ 1412 abs_already_up: 1413 answer = "absentee already up"; /* abs start queue (checked for below) is allowed with abs up */ 1414 go to admin_answers; 1415 end; 1416 default_u: 1417 autbl.abs_maxu_auto = "1"b; /* remember to set default maxu later */ 1418 default_q: 1419 autbl.abs_maxq_auto = "1"b; /* remember to set default maxq later */ 1420 end; 1421 1422 else if arg = "queue" | arg = "q" then 1423 do; /* trying to restart a previously dropped queue */ 1424 call cu_$arg_ptr_rel (3, p, lng, code, arg_list_ptr); 1425 /* get queue to be restarted */ 1426 if code ^= 0 then 1427 do; /* if no q to restart given, print q status */ 1428 if sum (autbl.qerr) = 0 & unspec (autbl.queue_dropped) = ""b 1429 then 1430 call sys_log (SL_LOG, 1431 "^a: abs: Zero errors on all absentee queues.", ME); 1432 else 1433 do; 1434 print_dropped_queues: 1435 temp_sw = (unspec (autbl.queue_dropped) ^= ""b); 1436 /* make temp_sw "1"b if any queues dropped */ 1437 call sys_log (SL_LOG, 1438 "^a: abs: Queue errors^[^x(*=dropped)^]:", ME, temp_sw); 1439 call sys_log (SL_LOG, "^a: abs: FG^2x0^2x1^2x2^2x3^2x4", ME); 1440 call sys_log (SL_LOG, "^a: abs:^6(^x^2d^)", ME, autbl.qerr); 1441 if temp_sw then 1442 call sys_log (SL_LOG, "^a: abs:^6(^2x^[*^;^x^]^)", 1443 ME, autbl.queue_dropped); 1444 end; 1445 goto admin_abs_returns; 1446 end; 1447 1448 if ^(autbl.abs_up & ^autbl.abs_stopped) then 1449 do; /* can only do this when absentee is up */ 1450 answer = "absentee not up. cannot restart queue " || arg; 1451 goto admin_answers; 1452 end; 1453 if arg = "all" then 1454 do; 1455 autbl.qerr (*) = 0; 1456 autbl.queue_dropped (*) = ""b; 1457 goto nudge; 1458 end; 1459 else if arg = "fg" | arg = "foreground" then 1460 do; 1461 code = 0; 1462 i = -1; 1463 end; 1464 else 1465 i = cv_dec_check_ (arg, code); 1466 if code = 0 then 1467 do; 1468 if i >= -1 & i <= absolute_max_queue then 1469 do; 1470 autbl.qerr (i) = 0; /* clear error count for this queue */ 1471 autbl.queue_dropped (i) = ""b; 1472 goto nudge; /* go send wakeup to see if any jobs waiting to be run */ 1473 end; 1474 else 1475 code = 1; /* any nonzero value, to get error message printed */ 1476 end; 1477 if code ^= 0 then 1478 do; 1479 answer = "invalid queue to be restarted " || arg; 1480 goto admin_answers; 1481 end; 1482 end; /* end of abs start queue */ 1483 1484 else 1485 do; /* normal abs start */ 1486 if autbl.abs_up then 1487 goto abs_already_up; 1488 if arg = "startup" then 1489 do; /* if called by load_ctl_ at a.s. startup */ 1490 abs_start_at_startup = "1"b; /* remember that for later */ 1491 goto default_u; /* go turn on default switches for maxu and maxq */ 1492 end; 1493 else 1494 do; 1495 call abs_maxu (arg); /* set max users for absentee from value in command line */ 1496 1497 call cu_$arg_ptr_rel (3, p, lng, code, arg_list_ptr); 1498 /* fetch third argument - highest queue to be searched */ 1499 if code ^= 0 then 1500 go to default_q; /* if no argument set default value in absentee user table */ 1501 call abs_maxq (arg); /* set max queue to be searched to value from command */ 1502 end; 1503 end; 1504 1505 call absentee_user_manager_$init_aum (code); /* call initialization entry point */ 1506 if code ^= 0 then 1507 go to admin_abs_returns; /* message already printed */ 1508 1509 autbl.abs_up = "1"b; /* set indicators correctly */ 1510 autbl.abs_stopped = ""b; 1511 autbl.qerr (*) = 0; /* clear per-queue error indicators */ 1512 autbl.queue_dropped (*) = ""b; 1513 autbl.abs_qres_auto, autbl.abs_cpu_limit_auto = "1"b; 1514 /* assume defaults for these */ 1515 1516 if ^abs_start_at_startup then /* if command was "abs start startup", this is a.s. startup */ 1517 /* and we were called from load_ctl_$set_maxunits */ 1518 /* of which load_ctl_$set_abs_parms is an entrypoint */ 1519 call load_ctl_$set_abs_parms; /* if not called from load_ctl_, call load_ctl_ */ 1520 1521 if goingdown then /* if a scheduled shutdown set up timer */ 1522 call SCHEDULE_ABSENTEE_SHUTDOWN (); 1523 1524 nudge: 1525 if autbl.max_abs_users > 0 | abs_start_at_startup then 1526 /* wakeup absentee user manager if slots */ 1527 call absentee_utility_$au_send_wakeup; 1528 go to admin_abs_returns; 1529 1530 abs_action (1): /* ABS MAXU */ 1531 if ^autbl.abs_up then 1532 do; 1533 abs_not_up: 1534 answer = "absentee not up"; 1535 goto admin_answers; 1536 end; 1537 1538 if autbl.abs_stopped then 1539 goto abs_stopping; 1540 1541 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 1542 /* get new max. abs. users from command */ 1543 if code ^= 0 then 1544 do; /* if no argument, print current maxu */ 1545 call sys_log (SL_LOG, "^a: abs: maxu (^[auto^;manual^]): ^d", 1546 ME, autbl.abs_maxu_auto, autbl.max_abs_users); 1547 goto admin_abs_returns; 1548 end; 1549 1550 if arg = "auto" then 1551 do; 1552 autbl.abs_maxu_auto = "1"b; 1553 call load_ctl_$set_abs_parms; 1554 go to admin_abs_returns; 1555 end; 1556 else 1557 call abs_maxu (arg); /* set new value of max abs users */ 1558 1559 goto nudge; 1560 1561 /* set queue number which is highest queue searched */ 1562 1563 /* ********** abs maxq ********** */ 1564 1565 abs_action (2): /* ABS MAXQ */ 1566 if ^autbl.abs_up then 1567 go to abs_not_up; 1568 if autbl.abs_stopped then 1569 goto abs_stopping; 1570 1571 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 1572 /* get new max queue from command */ 1573 if code ^= 0 then 1574 do; /* if no argument, print current maxq */ 1575 call sys_log (SL_LOG, "^a: abs: maxq (^[auto^;manual^]): ^d", 1576 ME, autbl.abs_maxq_auto, autbl.last_queue_searched); 1577 goto admin_abs_returns; 1578 end; 1579 1580 if arg = "auto" then 1581 do; 1582 autbl.abs_maxq_auto = "1"b; 1583 call load_ctl_$set_abs_parms; 1584 go to admin_abs_returns; 1585 end; 1586 else 1587 do; 1588 call abs_maxq (arg); /* set new max queue in absentee user table */ 1589 go to nudge; 1590 end; 1591 1592 /* ********** abs qres ********** */ 1593 1594 abs_action (7): /* ABS QRES */ 1595 if ^autbl.abs_up then 1596 goto abs_not_up; 1597 j = 0; /* clear argument counter */ 1598 qres (*) = 0; /* default = 0 for any queue whose reservation is not specified */ 1599 code = 0; /* clear possible garbage, so the while clause always works */ 1600 1601 do i = 2 to 5 while (code = 0); /* go thru up to 4 arguments */ 1602 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 1603 if code = 0 then 1604 do; /* if argument is there */ 1605 qres (i - 1) = cv_dec_check_ (arg, code); 1606 if code ^= 0 | qres (i) < 0 then 1607 do; /* if not positive decimal number */ 1608 if arg = "auto" & nargs = 2 then 1609 ; /* it's ok if it's "auto" */ 1610 else 1611 do; /* but anything else is an error */ 1612 answer = "abs qres has invalid value: " || arg; 1613 goto admin_answers; 1614 end; 1615 end; 1616 j = j + 1; /* count valid arguments */ 1617 end; 1618 end; 1619 1620 if nargs = 1 then /* no args means print current values */ 1621 call sys_log (SL_LOG, "^a: abs: qres ^[^2x(auto)^;(manual)^]:^4(^x^2d^)", 1622 ME, autbl.abs_qres_auto, autbl.qres); 1623 else if arg = "auto" then 1624 do; 1625 autbl.abs_qres_auto = "1"b; 1626 call load_ctl_$set_abs_parms; 1627 end; 1628 1629 else 1630 do; 1631 autbl.abs_qres_auto = ""b; 1632 autbl.qres (*) = qres (*); /* copy them all, setting unspecified ones to zero */ 1633 end; 1634 do i = 1 to 4; /* compute the resulting limits */ 1635 qres (i) = 1636 available_slots_ (i, autbl.max_abs_users, (autbl.qres), 1637 four_zeros); 1638 end; 1639 call sys_log (SL_LOG, "^a: abs: queue^2xlimits:^4(^x^2d^)", 1640 ME, qres); /* and print them */ 1641 if nargs > 1 then 1642 if arg ^= "auto" then 1643 goto nudge; 1644 goto admin_abs_returns; 1645 1646 /* ********** abs cpu_limit ********** */ 1647 1648 abs_action (8): /* cpu_limit */ 1649 if ^autbl.abs_up then 1650 goto abs_not_up; 1651 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 1652 if code ^= 0 then /* no arg means print current values */ 1653 call sys_log (SL_LOG, 1654 "^a: abs: cpu_limit (^[auto^;manual^]), queues 1-4: ^d^3(,^d^) (seconds)", 1655 ME, autbl.abs_cpu_limit_auto, autbl.cpu_limit); 1656 1657 else if arg = "auto" then 1658 do; 1659 autbl.abs_cpu_limit_auto = "1"b; 1660 call load_ctl_$set_abs_parms; 1661 end; 1662 1663 else 1664 do; 1665 if nargs ^= 2 | verify (arg, "0123456789,") ^= 0 then 1666 do; 1667 answer = 1668 "Usage is: ""abs cpu_limit l1,l2,l3,l4"" (limits in seconds)"; 1669 goto admin_answers; 1670 end; 1671 1672 i = 1; /* start at char 1 of limit string */ 1673 do k = 1 to 4 while (i <= lng); /* look for limits for 4 queues */ 1674 j = index (substr (arg, i), ","); /* find next comma */ 1675 if j = 0 then 1676 j = lng - i + 2; /* if none, pretend one after end of string */ 1677 if j > 1 then /* if not adjacent commas, convert and store the value */ 1678 autbl.cpu_limit (k) = 1679 cv_dec_check_ (substr (arg, i, j - 1), (0)); 1680 i = i + j; /* move past the comma */ 1681 if autbl.cpu_limit (k) < 60 then /* check for a likely mistake */ 1682 call sys_log (SL_LOG, 1683 "^a: abs: Warning: cpu limits are in seconds. You just set queue ^d limit to ^d seconds.", 1684 ME, k, autbl.cpu_limit (k)); 1685 end; 1686 autbl.abs_cpu_limit_auto = ""b; /* remember it's set by operator */ 1687 end; 1688 1689 if nargs = 2 then 1690 if arg ^= "auto" then 1691 goto nudge; 1692 goto admin_abs_returns; 1693 1694 /* ********** abs defer ********** */ 1695 1696 abs_action (9): /* defer */ 1697 if ^autbl.abs_up then 1698 goto abs_not_up; 1699 call parse_abs_args (arg_list_ptr); 1700 call validate_abs_args ("0"b, "0"b); /* reject absN, don't require user */ 1701 call absentee_utility_$abs_defer (abs_arg_ptr); 1702 goto admin_abs_returns; 1703 1704 /* ********** abs list ********** */ 1705 1706 abs_action (10): /* list */ 1707 /* abs list works when absentee is not up */ 1708 do j = 2 to nargs; /* look for absN */ 1709 call cu_$arg_ptr_rel (j, p, lng, code, arg_list_ptr); 1710 if code = 0 then 1711 do; 1712 if substr (arg, 1, 3) = "abs" 1713 & verify (substr (arg, 4), "0123456789") = 0 then 1714 do; /* absN */ 1715 if ^autbl.abs_up then 1716 do; 1717 answer = 1718 "The absN argument cannot be used when absentee is not up."; 1719 goto admin_answers; 1720 end; 1721 temp = substr (arg, 4); /* align N */ 1722 j = cv_dec_check_ (temp, (0)); 1723 if j > autbl.current_size then 1724 do; /* if N is too large, don't try to reference slot N */ 1725 call ioa_$rsnnl ("No job in absentee slot ^d.", 1726 answer, (0), j); 1727 goto admin_answers; 1728 end; 1729 utep = addr (autbl.entry (j)); 1730 if ute.active ^= NOW_HAS_PROCESS then 1731 do; 1732 call ioa_$rsnnl ( 1733 "No job in absentee slot ^d (status= ^d).", 1734 answer, (0), j, ute.active); 1735 goto admin_answers; 1736 end; 1737 if ute.foreground_job then 1738 i = -1; 1739 else if ute.adjust_abs_q_no then 1740 i = ute.queue - 1; 1741 else 1742 i = ute.queue; 1743 fb71 = ute.request_id; 1744 j = nargs; /* get out of the loop */ 1745 end; 1746 end; 1747 end; 1748 call list_abs_requests$abs_list (arg_list_ptr, nargs, fb71, i); 1749 goto admin_abs_returns; 1750 1751 /* ********** abs move ********** */ 1752 1753 abs_action (11): /* move */ 1754 /* abs move works when absentee is not up */ 1755 call cancel_abs_request$as_abs (arg_list_ptr, nargs, fb71, code); 1756 goto admin_abs_returns; 1757 1758 /* ********** abs next ********** */ 1759 1760 abs_action (12): /* next */ 1761 /* abs next works when absentee is not up */ 1762 call cancel_abs_request$as_abs (arg_list_ptr, nargs, fb71, code); 1763 goto admin_abs_returns; 1764 1765 /* ********** abs run ********** */ 1766 1767 abs_action (14): /* run */ 1768 if ^autbl.abs_up then 1769 goto abs_not_up; 1770 call parse_abs_args (arg_list_ptr); 1771 call validate_abs_args ("0"b, "1"b); /* reject absN, require user */ 1772 call absentee_user_manager_$aum_abs_run (abs_arg_ptr); 1773 goto admin_abs_returns; 1774 1775 1776 /* ================================================= */ 1777 1778 admin_err: 1779 call sys_log$error_log (SL_LOG, code, comname, answer); 1780 return; 1781 1782 admin_answers: 1783 call sys_log (SL_LOG, "^a: error: ^a", comname, answer); 1784 return; 1785 1786 admin_abs_returns: 1787 call absentee_user_manager_$update_whotab_abs_control; 1788 return; 1789 1790 admin_replies: /* reply without saying "error:" */ 1791 call sys_log (SL_LOG, "^a: ^a", comname, answer); 1792 return; /* almost all entries exit here */ 1793 1794 /* Internal Procedures */ 1795 1796 get_mpx_name: 1797 proc (argno); 1798 1799 dcl argno fixed bin; 1800 1801 call cu_$arg_ptr_rel (argno, p, lng, code, arg_list_ptr); 1802 if code ^= 0 then 1803 do; 1804 if fnp_only then 1805 answer = "No FNP tag specified"; 1806 else 1807 answer = "No multiplexer specified"; 1808 go to admin_answers; 1809 end; 1810 1811 mpx_name = arg; 1812 if fnp_only then 1813 do; /* extra checks to be compatable with old commands */ 1814 if length (rtrim (mpx_name)) > 1 then 1815 do; 1816 bad_mpx_fnp_name: 1817 answer = "Invalid FNP tag: " || mpx_name; 1818 go to admin_answers; 1819 end; 1820 if index ("abcdefgh", substr (mpx_name, 1, 1)) = 0 then 1821 go to bad_mpx_fnp_name; 1822 end; 1823 1824 return; 1825 1826 end get_mpx_name; 1827 1828 1829 /* ****************************************************************************************************************** */ 1830 1831 1832 validate: 1833 proc; 1834 1835 if ^sc_stat_$Multics_typed then 1836 as_data_$sysdir = sc_stat_$sysdir; 1837 if as_data_$ansp = null then 1838 do; 1839 call hcs_$initiate (sysdir, "answer_table", "", 0, 0, as_data_$ansp, code); 1840 as_procid = get_process_id_ (); 1841 if as_data_$ansp = null then 1842 do; 1843 call sys_log$error_log (SL_LOG_BEEP, code, ME, 1844 "^a>answer_table", sysdir); 1845 return; 1846 end; 1847 end; 1848 ansp = as_data_$ansp; 1849 autp = as_data_$autp; 1850 dutp = as_data_$dutp; 1851 1852 if whoptr = null then 1853 do; 1854 call hcs_$initiate (sysdir, "whotab", "", 0, 0, whoptr, code); 1855 if whoptr = null then 1856 call sys_log$error_log (SL_LOG_BEEP, code, ME, "^a>whotab", 1857 sysdir); 1858 end; 1859 if ip = null then 1860 do; 1861 call hcs_$initiate (sysdir, "installation_parms", "", 0, 1, ip, code); 1862 if ip = null then 1863 call sys_log$error_log (SL_LOG_BEEP, code, ME, 1864 "^a>installation_parms", sysdir); 1865 end; 1866 if scdtp = null then 1867 do; 1868 call hcs_$initiate (sysdir, "cdt", "", 0, 1, scdtp, code); 1869 if scdtp = null then 1870 call sys_log$error_log (SL_LOG_BEEP, code, ME, "^a>cdt", 1871 sysdir); 1872 end; 1873 call cu_$arg_count_rel (arg_count, arg_list_ptr, (0)); 1874 /* AF invocation not an issue */ 1875 return; /* end of setup */ 1876 end validate; 1877 1878 /* ****************************************************************************************************************** */ 1879 1880 abs_maxu: 1881 proc (l_arg); 1882 1883 dcl l_arg char (*); 1884 1885 i = cv_dec_check_ (l_arg, code); 1886 if code = 0 then /* check legality */ 1887 if i >= 0 then 1888 if i <= divide (anstbl.max_units, 10, 17, 0) then 1889 do; 1890 autbl.abs_maxu_auto = ""b; 1891 autbl.max_abs_users = i; 1892 whotab.max_abs_users = i; 1893 return; 1894 end; 1895 if code ^= 0 then 1896 answer = "abs maxusers must be numeric or ""auto"": " || l_arg; 1897 else if i < 0 then 1898 answer = "abs maxusers may not be negative: " || l_arg; 1899 else 1900 answer = 1901 "abs maxusers may not be greater than system maxusers: " || l_arg; 1902 go to admin_answers; 1903 end abs_maxu; 1904 1905 /* ****************************************************************************************************************** */ 1906 1907 abs_maxq: 1908 proc (l_arg); 1909 1910 dcl l_arg char (*); 1911 1912 i = cv_dec_check_ (l_arg, code); 1913 if code = 0 then /* check legality */ 1914 if i >= 0 then 1915 if i <= absolute_max_queue then 1916 do; 1917 autbl.abs_maxq_auto = ""b; 1918 autbl.last_queue_searched = i; 1919 return; 1920 end; 1921 answer = "abs maxqueue has invalid value: " || l_arg; 1922 go to admin_answers; 1923 end abs_maxq; 1924 1925 /* ****************************************************************************************************************** */ 1926 1927 build_string: 1928 proc (arg_list_ptr, an); 1929 1930 dcl arg_list_ptr pointer; 1931 1932 dcl an fixed bin; /* arg no to start from */ 1933 1934 dcl i fixed bin; 1935 1936 i = an; 1937 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 1938 if code ^= 0 then 1939 go to admin_err; 1940 string = arg; 1941 strl = lng; 1942 bld: 1943 i = i + 1; 1944 call cu_$arg_ptr_rel (i, p, lng, code, arg_list_ptr); 1945 if code ^= 0 then 1946 return; 1947 substr (string, strl + 2) = arg; 1948 strl = strl + 1 + lng; 1949 if strl > length (string) then 1950 return; 1951 go to bld; 1952 1953 end build_string; 1954 1955 /* Internal procedure to do the work of the STOP command. 1956* Called by the STOP command and the timer for the DOWN command. */ 1957 1958 stop_command: 1959 procedure (); 1960 1961 if stopflag then 1962 return; /* ignore subsequent stop commands */ 1963 stopflag = "1"b; /* prevent resignal */ 1964 1965 whotab.nextsd = 0; /* a shutdown will prevent restoring */ 1966 call SET_LOGIN_WORD ("shutdown"); /* ok, no more logins. Set dialup message */ 1967 1968 if anstbl.n_users = 0 then /* ready to shut down already? */ 1969 call sys_log (SL_LOG, "^a: stop: All users are out. You may shut down.", ME); 1970 else 1971 do; /* Bump everyone still on */ 1972 call convert_status_code_ (as_error_table_$sys_down_msg, shortinfo, 1973 longinfo); 1974 if whotab.until = 0 then 1975 string = ""; 1976 else 1977 do; 1978 msg = date_time_$format ("date_time", whotab.until, "", ""); 1979 call convert_status_code_ (as_error_table_$try_again_at_msg, 1980 shortinfo, longinfo1); 1981 call ioa_$rsnnl (longinfo1, string, i, msg); 1982 end; 1983 call ioa_$rs (longinfo, prefix, i, string); 1984 1985 continue = "1"b; 1986 string = substr (prefix, 1, i - 1); 1987 1988 do i = 1 to anstbl.current_size while (continue); /* everybody out of the pool */ 1989 utep = addr (anstbl.entry (i)); 1990 if ute.active >= NOW_LOGGED_IN 1991 then call PROCESS_UTE (action_flag); 1992 end; 1993 1994 if ^action_flag 1995 then call sys_log (SL_LOG, 1996 "^a: stop: There were no active users to be bumped.", ME); 1997 else call sys_log (SL_LOG, 1998 "^a: stop: all users have been given ^d minutes to logout", 1999 ME, divide (installation_parms.warning_time, SECS_IN_MIN, 17, 0)); 2000 end; 2001 2002 return; 2003 2004 2005 PROCESS_UTE: 2006 procedure (P_action_flag); 2007 2008 /* *** This procedure is used to perform the desired action on the 2009* specified ute. The action is specified via the variable "action". */ 2010 2011 dcl P_action_flag bit (1) aligned parameter; 2012 2013 if ute.at.nobump 2014 then do; 2015 call sys_log (SL_LOG, "^a: ^a: ^a.^a has ""nobump""", ME, comname, 2016 ute.person, ute.project); 2017 if ^ute.uflags.disconnected 2018 then call asu_$blast_user (utep, "Bump attempted. " || 2019 string, (""), (0)); 2020 return; 2021 end; 2022 2023 call asu_$bump_user (utep, string, code, 2024 installation_parms.warning_time); 2025 2026 /* *** This tells the operator what we did and sets the flag saying that 2027* we did something. */ 2028 2029 call sys_log (SL_LOG, "^a: bump: ^a.^a bumped.", ME, ute.person, ute.project); 2030 P_action_flag = "1"b; /* remember we did one */ 2031 return; 2032 2033 end PROCESS_UTE; 2034 2035 end stop_command; 2036 2037 2038 2039 parse_abs_args: 2040 proc (arg_list_ptr); /* fills in abs_args structure from job selection args */ 2041 2042 dcl arg_list_ptr pointer; 2043 2044 dcl an fixed bin; /* arg number */ 2045 dcl expecting fixed bin init (0); /* if nonzero, which arg value are we expecting */ 2046 dcl prev_arg char (20); /* previous argument, for use in error messages */ 2047 dcl ctl_arg_given bit (1) aligned init (""b); 2048 /* 1 if any control args have been processed */ 2049 dcl USER fixed bin int static 2050 options (constant) init (1); 2051 /* values for expecting */ 2052 dcl ID fixed bin int static 2053 options (constant) init (2); 2054 dcl ENTRY fixed bin int static 2055 options (constant) init (3); 2056 dcl SENDER fixed bin int static 2057 options (constant) init (4); 2058 dcl QUEUE fixed bin int static 2059 options (constant) init (5); 2060 2061 unspec (abs_args) = ""b; /* clear out argument structure */ 2062 do an = 2 to nargs; /* skip first arg, which is command keyword */ 2063 call cu_$arg_ptr_rel (an, p, lng, code, arg_list_ptr); 2064 if code ^= 0 then 2065 goto admin_err; 2066 2067 if substr (arg, 1, 1) = "-" then 2068 do; /* a control argument */ 2069 if expecting > 0 then 2070 do; /* but if we were expecting a value, complain */ 2071 call sys_log$error_log (SL_LOG, error_table_$noarg, comname, 2072 "After ^a.", prev_arg); 2073 return; 2074 end; 2075 2076 if arg = "-user" then 2077 expecting = USER; 2078 else if arg = "-id" then 2079 expecting = ID; 2080 else if arg = "-et" | arg = "-entry" then 2081 expecting = ENTRY; 2082 else if arg = "-sender" then 2083 expecting = SENDER; 2084 else if arg = "-q" | arg = "-queue" then 2085 expecting = QUEUE; 2086 else if arg = "-fg" | arg = "-foreground" then 2087 do; /* equivalent to -q foreground */ 2088 if abs_args.queue_sw then 2089 do; 2090 multiple_abs_qualifiers: 2091 answer = 2092 "More than one specification of an attribute is present: " 2093 || arg; 2094 go to admin_answers; 2095 end; 2096 abs_args.queue_sw = "1"b; 2097 abs_args.queue = -1; 2098 end; 2099 else 2100 do; 2101 answer = "Invalid abs job selection argument: " || arg; 2102 goto admin_answers; 2103 end; 2104 prev_arg = arg; /* save this arg in case of error with next one */ 2105 ctl_arg_given = "1"b; /* remember not to allow any more positional args */ 2106 end; /* end control arg */ 2107 2108 else if expecting > 0 then 2109 do; /* expecting something; pick up value in appropriate way */ 2110 if expecting = USER then 2111 call get_user (arg_list_ptr); 2112 else if expecting = ID then 2113 call get_id; 2114 else if expecting = ENTRY then 2115 do; 2116 if abs_args.entry_sw then 2117 go to multiple_abs_qualifiers; 2118 abs_args.entry_sw = "1"b; 2119 abs_args.ename = arg; 2120 end; 2121 else if expecting = SENDER then 2122 do; 2123 if abs_args.sender_sw then 2124 go to multiple_abs_qualifiers; 2125 abs_args.sender_sw = "1"b; 2126 abs_args.sender = arg; 2127 end; 2128 else if expecting = QUEUE then 2129 do; 2130 if abs_args.queue_sw then 2131 go to multiple_abs_qualifiers; 2132 abs_args.queue_sw = "1"b; 2133 if arg = "fg" | arg = "foreground" then 2134 abs_args.queue = -1; 2135 else 2136 do; 2137 temp = arg; /* align arg */ 2138 abs_args.queue = cv_dec_check_ (temp, code); 2139 if code ^= 0 then 2140 do; 2141 answer = "Invalid queue number " || arg; 2142 goto admin_answers; 2143 end; 2144 end; 2145 end; 2146 expecting = 0; 2147 end; 2148 2149 else if substr (arg, 1, 3) = "abs" then 2150 do; 2151 if abs_args.absn_sw | abs_args.abs_star_sw then 2152 go to multiple_abs_qualifiers; 2153 if verify (substr (arg, min (4, length (arg))), DIGITS) = 0 then 2154 do; /* absN */ 2155 abs_args.absn_sw = "1"b; 2156 temp = substr (arg, 4); /* align N */ 2157 abs_args.aut_index = cv_dec_check_ (temp, (0)); 2158 end; 2159 2160 else if arg = "abs*" then /* abs* means all running jobs */ 2161 abs_args.abs_star_sw = "1"b; 2162 end; 2163 2164 else if substr (arg, 1, 1) = ">" then 2165 do; /* pathname */ 2166 if abs_args.path_sw then 2167 go to multiple_abs_qualifiers; 2168 abs_args.path_sw = "1"b; 2169 call expand_pathname_ (arg, abs_args.dirname, abs_args.ename, 2170 code); 2171 if code ^= 0 then 2172 do; 2173 answer = arg; 2174 goto admin_err; 2175 end; 2176 end; 2177 2178 else if an > 3 | ctl_arg_given then 2179 do; /* if n.o.t.a., and positional args no longer allowed, complain */ 2180 full_path_required: /* come here from below if positional arg has wrong format */ 2181 answer = "Relative pathnames not allowed: " || arg; 2182 goto admin_answers; 2183 end; 2184 else if verify (arg, "0123456789.") = 0 then /* just digits and dot must be request ID */ 2185 call get_id; 2186 else if index (CAPITALS, substr (arg, 1, 1)) ^= 0 2187 /* if it begins with capital, could be user name */ 2188 | substr (arg, 1, 1) = "*" then /* and * is also legal as user name */ 2189 call get_user (arg_list_ptr); 2190 else 2191 goto full_path_required; /* else assume it's a pathname and reject it */ 2192 end; 2193 2194 if abs_args.entry_sw | abs_args.path_sw then 2195 do; /* check on absin suffix */ 2196 i = length (rtrim (abs_args.ename)); 2197 if substr (abs_args.ename, max (1, i - 5), 6) ^= ".absin" then 2198 /* if suffix missing */ 2199 if substr (abs_args.ename, i, 1) ^= "*" then 2200 /* avoid screwing up starnames */ 2201 if i < 27 then /* or running off the end of the string */ 2202 substr (abs_args.ename, i + 1, 6) = ".absin"; 2203 /* add the suffix */ 2204 end; 2205 2206 return; 2207 2208 /* ---------- */ 2209 2210 get_id: 2211 proc; 2212 if abs_args.id_sw then 2213 go to multiple_abs_qualifiers; 2214 abs_args.id_sw = "1"b; 2215 abs_args.request_id_string = arg; 2216 return; 2217 2218 end get_id; 2219 2220 /* ---------- */ 2221 2222 get_user: 2223 proc (arg_list_ptr); 2224 dcl arg_list_ptr pointer; 2225 2226 if abs_args.user_sw then 2227 go to multiple_abs_qualifiers; 2228 abs_args.user_sw = "1"b; 2229 abs_args.person = before (arg, "."); 2230 abs_args.project = before (after (arg, "."), "."); 2231 if abs_args.person = "" then 2232 abs_args.person = "*"; 2233 if abs_args.project = "" then 2234 do; /* allow operator to forget dot between person and project */ 2235 call cu_$arg_ptr_rel (an + 1, p, lng, code, arg_list_ptr); 2236 /* look for project in next arg */ 2237 if code = 0 then 2238 do; /* if there is a next arg */ 2239 if lng <= 9 2240 & (index (CAPITALS, substr (arg, 1, 1)) ^= 0 | arg = "*") 2241 then 2242 do; /* if it could be proj name */ 2243 abs_args.project = arg; /* assume it is */ 2244 an = an + 1; /* and move past this arg */ 2245 end; 2246 end; 2247 end; 2248 if abs_args.project = " " then 2249 abs_args.project = "*"; /* if no project name anywhere, assume * */ 2250 return; 2251 2252 end get_user; 2253 2254 end parse_abs_args; 2255 2256 validate_abs_args: 2257 proc (absn_ok, user_rqd); /* see if abs args are ok for this abs command */ 2258 2259 dcl absn_ok bit (1) aligned; /* 1 of absN arg accepted by this command */ 2260 dcl user_rqd bit (1) aligned; /* 1 if user name required by this command */ 2261 2262 if unspec (abs_args.arg_switches) = ""b then 2263 do; /* if no args were given, complain */ 2264 answer = "No job selection arguments given."; 2265 goto admin_answers; 2266 end; 2267 2268 if user_rqd then 2269 do; /* if command requires user name */ 2270 if ^abs_args.user_sw then 2271 do; 2272 answer = "User name must be given."; 2273 goto admin_answers; 2274 end; 2275 else if abs_args.person = "*" then 2276 do; 2277 answer = "User name (not ""*"") must be given."; 2278 goto admin_answers; 2279 end; 2280 end; 2281 2282 if ^absn_ok then 2283 if abs_args.absn_sw then 2284 do; 2285 answer = "The absN argument is not valid."; 2286 goto admin_answers; 2287 end; 2288 2289 return; 2290 2291 end validate_abs_args; 2292 2293 get_pers_proj: 2294 proc (arg_list_ptr, a_ix, P_new_arg_index, code); 2295 2296 /* *** Accept command arguments "Person.Project" or "Person Project" 2297* from the argument list begining at argument a_ix and update 2298* set P_new_arg_index to the index the next argument. A number of 2299* checks are made unless the brief entry is called. */ 2300 2301 dcl P_new_arg_index fixed bin (17) parameter; 2302 dcl a_ix fixed bin parameter; 2303 dcl arg_list_ptr pointer; 2304 dcl code fixed bin (35); /* ^= 0 --> print a usage message */ 2305 2306 dcl flag bit (1) aligned; 2307 2308 flag = "1"b; 2309 go to get_pp_common; 2310 2311 get_pers_proj$$brief: 2312 entry (arg_list_ptr, a_ix, P_new_arg_index, code); 2313 2314 flag = "0"b; 2315 2316 get_pp_common: 2317 P_new_arg_index = a_ix; /* initialize argument index */ 2318 wpers, wproj = ""; 2319 call cu_$arg_ptr_rel (P_new_arg_index, p, lng, code, arg_list_ptr); 2320 if code ^= 0 then 2321 return; 2322 if index (arg, ".") ^= 0 then 2323 do; 2324 wpers = before (arg, "."); 2325 wproj = after (arg, "."); 2326 if flag then 2327 if length (rtrim (wpers)) > 22 then 2328 LONG_PERSON: 2329 do; 2330 call ioa_$rsnnl ("Personid ^a > 22 characters.", answer, 2331 (0), wpers); 2332 go to admin_answers; 2333 end; 2334 if wproj = "" then 2335 BAD_PP: 2336 do; 2337 call ioa_$rsnnl ("^a is not a valid Person.Project.", answer, 2338 (0), arg); 2339 go to admin_answers; 2340 end; 2341 end; 2342 else 2343 do; 2344 wpers = arg; 2345 if flag then 2346 if length (rtrim (wpers)) > 22 then 2347 go to LONG_PERSON; 2348 P_new_arg_index = P_new_arg_index + 1; 2349 call cu_$arg_ptr_rel (P_new_arg_index, p, lng, code, arg_list_ptr); 2350 if code ^= 0 then 2351 go to BAD_PP; /* Read this as bad per.proj rather than missing proj in per proj. */ 2352 wproj = arg; 2353 end; 2354 if length (rtrim (wproj)) > 9 then 2355 if flag then 2356 do; 2357 call ioa_$rsnnl ("Projectid ^a is longer than 9 characters.", 2358 answer, (0), wproj); 2359 go to admin_answers; 2360 end; 2361 P_new_arg_index = P_new_arg_index + 1; 2362 return; 2363 2364 end get_pers_proj; 2365 2366 set_non_command_sys_loggers: 2367 procedure; 2368 2369 sys_log = sys_log_; 2370 sys_log$error_log = sys_log_$error_log; 2371 return; 2372 end set_non_command_sys_loggers; 2373 2374 SCHEDULE_ABSENTEE_SHUTDOWN: 2375 procedure (); 2376 2377 /* *** This procedure schedules an absentee shutdown. */ 2378 2379 dcl time fixed bin (71) automatic; 2380 /* temporary */ 2381 dcl time_str char (48) automatic; 2382 /* temporary */ 2383 2384 call ipc_$create_ev_chn (abs_stop_chn, (0)); 2385 call ipc_$decl_ev_call_chn (abs_stop_chn, admin_$absentee_down, null, 2386 SHUTDOWN_PRIO, (0)); 2387 time = whotab.nextsd - (abs_shut_interval - abs_shut_offset) * MILLION; 2388 call timer_manager_$alarm_wakeup (time, "00"b, abs_stop_chn); 2389 time_str = date_time_$format ("date_time", time, "", ""); 2390 call sys_log (SL_LOG, "^a: abs: auto abs stop will be at ^a", ME, time_str); 2391 return; 2392 2393 end SCHEDULE_ABSENTEE_SHUTDOWN; 2394 2395 CHECK_FOR_ABSENTEE_SHUTDOWN: 2396 procedure (); 2397 2398 /* *** This procedure is called to check to see if all absentee processes 2399* have logged out in preparation for an absentee shutdown. If they 2400* have, we shut down the absentee facility and perform a non-local 2401* goto to admin_abs_returns (ugh). */ 2402 2403 if ^autbl.abs_stopped then /* we have cancelled the shutdown */ 2404 return; 2405 2406 if autbl.n_abs_run = 0 then /* check that all absentee processes have logged out */ 2407 do; 2408 call sys_log (SL_LOG, 2409 "^a: abs: All absentee processes have run to completion.", ME); 2410 call ipc_$delete_ev_chn (abs_stop_chn, code);/* delete event channel created */ 2411 call absentee_user_manager_$term_aum; /* close out absentee facility */ 2412 autbl.abs_up = ""b; /* indicate that absentee is down */ 2413 call absentee_user_manager_$update_whotab_abs_control (); 2414 end; 2415 2416 /* if an extra-ordinary amount of time has elapsed since abs stop */ 2417 /* and there are still absentee processes, bump them */ 2418 2419 else if n_called > abs_shut_interval then 2420 do; 2421 call sys_log (SL_LOG, 2422 "^a: abs: Bumping all remaining absentee processes.", ME); 2423 if sys_log = sys_log_ then /* we are NOT a command */ 2424 call admin_$abs_not_a_command_ ("bump", "*", "*"); 2425 else 2426 call admin_$abs ("bump", "*", "*"); 2427 call absentee_user_manager_$update_whotab_abs_control (); 2428 end; 2429 2430 else /* otherwise, check again in 30 seconds */ 2431 call timer_manager_$alarm_wakeup (30, "11"b, abs_stop_chn); 2432 return; 2433 2434 end CHECK_FOR_ABSENTEE_SHUTDOWN; 2435 2436 START_ABSENTEE_SHUTDOWN: 2437 procedure (); 2438 2439 /* *** This procedure is called to start shutting down the absentee 2440* facility. */ 2441 2442 saved_max_abs_users = autbl.max_abs_users; /* remember in case we must 2443* reset */ 2444 whotab.max_abs_users, /* set max abs users to -1 in whotab */ 2445 autbl.max_abs_users = -1; /* and in absentee user table */ 2446 autbl.abs_stopped = "1"b; /* record fact that absentee is being shutdown */ 2447 saved_abs_maxu_auto = autbl.abs_maxu_auto; /* remember in case we must reset */ 2448 autbl.abs_maxu_auto = ""b; /* tell load_ctl_ not to change abs maxu */ 2449 2450 /* *** reuse the event channel for our own internal timer. It will 2451* allow us to check every 30 seconds to ensure all processes are 2452* logged out before we shut down. */ 2453 2454 call ipc_$decl_ev_call_chn (abs_stop_chn, admin_$absentee_off, null (), 2455 SHUTDOWN_PRIO, code); 2456 2457 /* *** Check to see if all absentee processes are done yet. If not, schedule 2458* a check every 30 seconds. */ 2459 2460 call CHECK_FOR_ABSENTEE_SHUTDOWN (); 2461 return; 2462 end START_ABSENTEE_SHUTDOWN; 2463 2464 NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE: 2465 procedure (); 2466 2467 /* *** This procedure sends a system_shutdown_scheduled_ IPS signal to all 2468* interactive, absentee, and daemon users on the system. */ 2469 2470 dcl ute_index fixed bin; 2471 2472 dutp = as_data_$dutp; 2473 do ute_index = 1 to dutbl.current_size; 2474 utep = addr (dutbl.entry (ute_index)); 2475 if ute.active > NOW_LOGGED_IN then 2476 call hphcs_$ips_wakeup (ute.proc_id, 2477 "system_shutdown_scheduled_"); 2478 end; 2479 2480 autp = as_data_$autp; 2481 do ute_index = 1 to autbl.current_size; 2482 utep = addr (autbl.entry (ute_index)); 2483 if ute.active > NOW_LOGGED_IN then 2484 call hphcs_$ips_wakeup (ute.proc_id, 2485 "system_shutdown_scheduled_"); 2486 end; 2487 2488 do ute_index = 1 to anstbl.current_size; 2489 utep = addr (anstbl.entry (ute_index)); 2490 if ute.active > NOW_LOGGED_IN then 2491 call hphcs_$ips_wakeup (ute.proc_id, 2492 "system_shutdown_scheduled_"); 2493 end; 2494 end NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE; 2495 2496 SCHEDULE_SYSTEM_SHUTDOWN: 2497 procedure (P_shutdown_time, P_shutdown_reason, P_down_until_time); 2498 2499 /* *** This procedure schedules a system shutdown. */ 2500 2501 dcl P_shutdown_time fixed bin (71) parameter; 2502 /* when we're shutting down */ 2503 dcl P_shutdown_reason char (*) parameter; /* why */ 2504 dcl P_down_until_time fixed bin (71) parameter; 2505 /* when we'll be back up */ 2506 2507 whotab.nextsd = P_shutdown_time; /* publish the shutdown time */ 2508 whotab.obsolete_why = 2509 substr (P_shutdown_reason, 1, length (whotab.obsolete_why)); 2510 whotab.why = P_shutdown_reason; 2511 whotab.until = P_down_until_time; 2512 2513 call ipc_$create_ev_chn (auto_bump_chn, (0)); 2514 call ipc_$decl_ev_call_chn (auto_bump_chn, admin_$timed_stop_command, null, 2515 SHUTDOWN_PRIO, (0)); 2516 call timer_manager_$alarm_wakeup (whotab.nextsd 2517 - installation_parms.warning_time * MILLION, "00"b, auto_bump_chn); 2518 2519 goingdown = "1"b; /* indicate that a shutdown has been scheduled */ 2520 2521 msg = date_time_$format ("date_time", whotab.nextsd, "", ""); 2522 call sys_log (SL_LOG, "^a: down: auto shutdown will be at ^a", ME, msg); 2523 2524 if autp ^= null then 2525 if autbl.abs_up then 2526 do; /* if absentee running */ 2527 call SCHEDULE_ABSENTEE_SHUTDOWN (); 2528 call absentee_user_manager_$update_whotab_abs_control (); 2529 end; 2530 2531 /* *** And make sure we tell all the users of the new shutdown time */ 2532 2533 call NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE (); 2534 return; 2535 end SCHEDULE_SYSTEM_SHUTDOWN; 2536 2537 CANCEL_SYSTEM_SHUTDOWN: 2538 procedure (P_message, P_code); 2539 2540 /* *** This procedure is called to cancel a system shutdown. It also 2541* cancels the absentee shutdown if it has not already been performed. */ 2542 2543 dcl P_message char (*) parameter; /* reason why we didn't. */ 2544 dcl P_code fixed bin (35) parameter; 2545 /* status code */ 2546 2547 if whotab.nextsd = 0 then 2548 do; /* no shutdown scheduled */ 2549 P_message = "no system shutdown scheduled"; 2550 P_code = error_table_$action_not_performed; 2551 end; 2552 else 2553 do; /* there is a shutdown scheduled */ 2554 call timer_manager_$reset_alarm_wakeup (auto_bump_chn); 2555 goingdown = "0"b; /* static flag */ 2556 whotab.nextsd = 0; /* change whotab to show no shutdown expected */ 2557 whotab.message = ""; 2558 whotab.obsolete_message = ""; 2559 whotab.until = 0; 2560 if autp ^= null () then 2561 if autbl.abs_up then /* if absentee running */ 2562 do; 2563 call timer_manager_$reset_alarm_wakeup (abs_stop_chn); 2564 /* cancel automatic abs stop */ 2565 if autbl.abs_stopped then 2566 call ABORT_ABSENTEE_SHUTDOWN (); 2567 end; 2568 call NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE (); 2569 end; 2570 return; 2571 end CANCEL_SYSTEM_SHUTDOWN; 2572 2573 ABORT_ABSENTEE_SHUTDOWN: 2574 procedure (); 2575 2576 /* *** This procedure is called to cancel an absentee shutdown which has 2577* already started. That is, when we have already started waiting for 2578* absentees to complete before really shutting the absentee facility 2579* down. */ 2580 2581 autbl.abs_stopped = "0"b; /* turn off this flag */ 2582 autbl.abs_maxu_auto = saved_abs_maxu_auto; /* restore saved values */ 2583 autbl.max_abs_users, /* restore saved values */ 2584 whotab.max_abs_users = saved_max_abs_users; 2585 return; 2586 end ABORT_ABSENTEE_SHUTDOWN; 2587 2588 SET_LOGIN_WORD: 2589 procedure options (variable); 2590 arg_list_ptr = cu_$arg_list_ptr (); 2591 2592 call validate; /* locate answer table */ 2593 call cu_$arg_ptr_rel (1, p, lng, code, arg_list_ptr); 2594 /* get the new login word */ 2595 if code ^= 0 then 2596 do; 2597 lng = max (0, anstbl.message_lng - 1); /* set length of message to omit trailing newline */ 2598 call sys_log (SL_LOG, 2599 "^a: word: ^a; ^a message: ^[^a^;"""" (NO MESSAGE)^]", 2600 ME, anstbl.login_word, anstbl.session, (anstbl.message_lng > 1), 2601 based_anstbl_message); 2602 return; 2603 end; 2604 if lng > 8 then 2605 do; /* check length */ 2606 call sys_log (SL_LOG, 2607 "^a: word: length of login-word must not exceed 8 characters", ME); 2608 return; 2609 end; 2610 do i = 3 to hbound (as_data_login_words.words, 1) 2611 while (arg ^= as_data_login_words.words (i)); 2612 end; 2613 if i <= hbound (as_data_login_words.words, 1) then 2614 do; /* Cannot use special word as login word */ 2615 call sys_log (SL_LOG, "^a: word: ^a is a reserved word.", ME, arg); 2616 return; 2617 end; 2618 anstbl.login_word = arg; /* change the login word */ 2619 call cu_$arg_ptr_rel (2, p, lng, code, arg_list_ptr); 2620 /* ??? */ 2621 if code = 0 then 2622 do; /* if message given on command line */ 2623 call build_string (arg_list_ptr, 2); /* build up message */ 2624 if strl > length (anstbl.special_message) then 2625 do; 2626 strl = length (anstbl.special_message); 2627 call sys_log (SL_LOG, 2628 "^a: word: message truncated; maximum length is ^d characters", 2629 ME, strl); 2630 end; 2631 anstbl.special_message = substr (string, 1, strl); 2632 /* set dialup buffer */ 2633 anstbl.message_lng, lng = strl; /* and length */ 2634 end; 2635 else 2636 lng = 0; /* no buffer set */ 2637 if anstbl.login_word = as_data_login_words.words (1) then 2638 /* "l" */ 2639 go to wordl; /* Normal session? */ 2640 if anstbl.login_word = as_data_login_words.words (2) then 2641 /* "login" */ 2642 do; 2643 wordl: 2644 stopflag = "0"b; /* yes. cancel stop */ 2645 anstbl.session, whotab.session = "normal"; /* allow logins to proceed */ 2646 if lng = 0 then 2647 do; 2648 anstbl.message_lng = 0; /* if changed word, reset buffer */ 2649 anstbl.special_message = ""; 2650 end; 2651 end; 2652 else 2653 do; /* not normal session */ 2654 anstbl.session, whotab.session = "special"; /* assume special */ 2655 if lng = 0 then 2656 do; /* if no message specified */ 2657 if anstbl.login_word = "shutdown" then 2658 do; /* if shutting down */ 2659 call convert_status_code_ (as_error_table_$sys_down_msg, 2660 shortinfo, longinfo); 2661 if whotab.until = 0 then 2662 string = ""; /* if not specified when come up */ 2663 else 2664 do; /* can say when to try again */ 2665 day_back = 2666 date_time_$format ("^yc^my^dm", whotab.until, "", ""); 2667 day_now = 2668 date_time_$format ("^yc^my^dm", clock (), "", ""); 2669 2670 if day_back = day_now /* days different? */ 2671 then msg = date_time_$format ("time", whotab.until, "", ""); 2672 else msg = date_time_$format ("date_time", whotab.until, "", ""); 2673 2674 call convert_status_code_ ( 2675 as_error_table_$try_again_at_msg, shortinfo, 2676 longinfo1); 2677 call ioa_$rsnnl (longinfo1, string, i, msg); 2678 end; 2679 call ioa_$rsnnl (longinfo, anstbl.special_message, i, 2680 string); 2681 end; 2682 else 2683 do; /* special session not shutdown */ 2684 call convert_status_code_ (as_error_table_$special_sess_msg, 2685 shortinfo, longinfo); 2686 anstbl.special_message = longinfo; 2687 end; /* end special session */ 2688 anstbl.message_lng = length (rtrim (anstbl.special_message)); 2689 end; 2690 end; /* end not normal session */ 2691 if anstbl.login_word = "shutdown" then 2692 do; 2693 anstbl.session, whotab.session = "shutdown"; 2694 fb71 = clock (); 2695 b12 = substr (unspec (fb71), 34, 12); 2696 call ioa_$rsnnl ("^4.3b", c4, (0), b12); 2697 anstbl.login_word = c4; 2698 end; 2699 if anstbl.message_lng > 0 then 2700 do; /* if there is a message, print it for operator */ 2701 call sys_log (SL_LOG, "^a: word: ^a message: ^a", ME, anstbl.session, 2702 substr (anstbl.special_message, 1, anstbl.message_lng)); 2703 anstbl.message_lng = 2704 min (anstbl.message_lng + 1, length (anstbl.special_message)); 2705 substr (anstbl.special_message, anstbl.message_lng, 1) = NL; 2706 end; 2707 2708 call dialup_$re_introduce; /* say hello again */ 2709 2710 /* *** Update the "time of last message update" so that the login servers 2711* will notice the change and redisplay the login banner */ 2712 2713 anstbl.message_update_time = clock (); 2714 return; 2715 end SET_LOGIN_WORD; 2716 2717 2718 /* format: off */ 2719 /* BEGIN INCLUDE FILE abs_args.incl.pl1 */ 1 2 1 3 /* This include file defines a structure to hold the job selection arguments used by the operator abs command. 1 4* 1 5* Written by T. Casey, January 1979 1 6* September 1981, E. N. Kittlitz, made character strings unaligned. 1 7* 1 8**/ 1 9 1 10 dcl 1 abs_args aligned based (abs_arg_ptr), /* ptr to be dcl-ed in procedures that use structure */ 1 11 2 arg_switches, 1 12 3 user_sw bit (1) unal, 1 13 3 id_sw bit (1) unal, 1 14 3 path_sw bit (1) unal, 1 15 3 entry_sw bit (1) unal, 1 16 3 sender_sw bit (1) unal, 1 17 3 queue_sw bit (1) unal, 1 18 3 absn_sw bit (1) unal, 1 19 3 abs_star_sw bit (1) unal, 1 20 2 person char (28) unal, 1 21 2 project char (9) unal, 1 22 2 request_id_string char (32) unal, 1 23 2 dirname char (168) unal, 1 24 2 ename char (32) unal, 1 25 2 sender char (32) unal, 1 26 2 aut_index fixed bin, 1 27 2 queue fixed bin, 1 28 2 request_id fixed bin (71); 1 29 1 30 /* END INCLUDE FILE abs_args.incl.pl1 */ 2719 2720 /* BEGIN INCLUDE FILE ... absentee_user_table.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* The absentee user table is the control data base for the absentee */ 2 6 /* facility. It has a header, with scheduling parameters, then one user */ 2 7 /* table entry for each logged-in absentee job. */ 2 8 /* */ 2 9 /* Programs which use this table must also include */ 2 10 /* user_table_header.incl.pl1 and user_table_entry.incl.pl1. */ 2 11 /* */ 2 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 13 2 14 2 15 /****^ HISTORY COMMENTS: 2 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 2 17* Replace abs_user_tab.incl.pl1. 2 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 2 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 20* Use ut_header common to all user control tables. 2 21* END HISTORY COMMENTS */ 2 22 2 23 2 24 dcl AUTBL_version_4 fixed bin int static options (constant) init (4); 2 25 2 26 dcl autp ptr automatic init (null); 2 27 2 28 dcl 1 autbl based (autp) aligned, /* a per system table to store info on absentee processes */ 2 29 2 header like ut_header, /* Header common to all user tables. */ 2 30 2 31 /* Counter elements */ 2 32 2 n_abs_run fixed bin, /* actual number of absentee processes current */ 2 33 2 max_abs_users fixed bin, /* max number of background absentee processes permitted */ 2 34 2 n_background_abs fixed bin, /* number of absentee processes not from foreground queue */ 2 35 2 n_sec_fg fixed bin, /* number of secondary foreground absentee jobs */ 2 36 2 idle_units fixed bin, /* used in adjusting abs_maxu dynamically */ 2 37 2 abs_units fixed bin, /* part of anstbl.n_units used by background absentees */ 2 38 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 2 39 2 qres (4) fixed bin, /* number of slots reserved for each background queue */ 2 40 2 rsc_waiting (-1:4) fixed bin, /* number of requests waiting for resources, from each queue */ 2 41 2 qerr (-1:4) fixed bin, /* number of consecutive errors for q (dropped if > QERR_MAX) */ 2 42 2 cpu_limit (4) fixed bin (35), /* current per-queue cpu time limits */ 2 43 2 44 /* absentee user manager values. */ 2 45 2 defer_channel fixed bin (71), /* IPC for time-defered queue entries */ 2 46 2 absentee_rq_chn fixed bin (71), /* IPC channel for absentee requests */ 2 47 2 last_queue_searched fixed bin, /* highest queue looked at by scheduler */ 2 48 2 debugging fixed bin, /* take asdumps at strategic places */ 2 49 2 control, /* see also whotab.incl.pl1 */ 2 50 3 mnbz bit (1) unal, /* must not be zero */ 2 51 3 abs_maxu_auto bit (1) unal, /* 1 if abs maxu has not been set by operator command */ 2 52 3 abs_maxq_auto bit (1) unal, /* 1 if abs maxq has not been set by operator command */ 2 53 3 abs_qres_auto bit (1) unal, /* 1 if abs qres has not been set by operator command */ 2 54 3 abs_cpu_limit_auto bit (1) unal, /* 1 if abs cpu_limit has not been set by operator command */ 2 55 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue has been dropped because of errors */ 2 56 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 2 57 3 abs_stopped bit (1) unal, /* 1 if abs stop command was issued */ 2 58 /* both 1 if we're waiting for the last jobs to log out */ 2 59 3 aum_ctl bit (1) unal, /* for AUM to tell AU to start a new sequence */ 2 60 3 lc_list bit (1) unal, /* for AU to tell AUM that the lc list is non-empty */ 2 61 /* comments in AU and AUM explain aum_ctl and lc_list */ 2 62 3 control_pad (21) bit (1) unal, /* fill out rest of word */ 2 63 2 aum_pad fixed bin, 2 64 2 65 2 entry_pad (80) fixed bin, /* pad table header to 128 words */ 2 66 2 entry (0 refer (autbl.current_size)) like ute; 2 67 2 68 dcl AUTBL_CONTROL_NAMES (15) char(20) varying int static options(constant) init( 2 69 "mnbz", 2 70 "abs_maxu_auto", 2 71 "abs_maxq_auto", 2 72 "abs_qres_auto", 2 73 "abs_cpu_limit_auto", 2 74 "queue_dropped(-1)", 2 75 "queue_dropped( 0)", 2 76 "queue_dropped( 1)", 2 77 "queue_dropped( 2)", 2 78 "queue_dropped( 3)", 2 79 "queue_dropped( 4)", 2 80 "abs_up", 2 81 "abs_stopped", 2 82 "aum_ctl", 2 83 "lc_list"); 2 84 2 85 /* END INCLUDE FILE ... absentee_user_table.incl.pl1 */ 2720 2721 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* The answer table has one entry per "login instance" whether completed or */ 3 6 /* not. It is connected to the Channel Definition Table by the pointer */ 3 7 /* "channel". The header is used mostly by dialup_. */ 3 8 /* */ 3 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 3 10 /* */ 3 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 12 3 13 /****^ HISTORY COMMENTS: 3 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 3 15* Replace anstbl.incl.pl1. 3 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 3 17* Add anstbl.session_uid_counter. 3 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 3 19* Add anstbl.message_update_time and named constants for values of 3 20* anstbl.session, and to make all padding explicit. 3 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 3 22* Change "entry" to a placeholder so as not to require 3 23* user_table_entry.incl.pl1. 3 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 3 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 3 26* Added the flag login_server_present which indicates whether a login 3 27* server request has been received. This is used to determine whether 3 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 3 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 3 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 3 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 32* A) Moved constants for ute.pw_flags.mask_ctl into 3 33* user_table_entry.incl.pl1. 3 34* B) Added common table header to all user tables. 3 35* END HISTORY COMMENTS */ 3 36 3 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 38 /* */ 3 39 /* The anstbl structure below is divided into sections. Each section begins */ 3 40 /* with a comment describing the elements in the section. Elements are */ 3 41 /* placed within a section, based upon their function or the programs that */ 3 42 /* use them. Each section begins on a double word and is an even number of */ 3 43 /* words long. */ 3 44 /* */ 3 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 46 3 47 3 48 3 49 /* format: style4 */ 3 50 3 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 3 52 3 53 dcl ansp ptr automatic init (null); 3 54 3 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 3 56 2 header like ut_header, /* Header common to all user tables. */ 3 57 3 58 /* Counter elements. */ 3 59 2 nlin fixed bin, /* number of active lines */ 3 60 2 mxlin fixed bin, /* maximum number of active lines */ 3 61 2 n_users fixed bin, /* number of logged-in users */ 3 62 2 max_users fixed bin, /* maximum number of users allowed */ 3 63 2 n_units fixed bin, /* number of logged in units */ 3 64 2 max_units fixed bin, /* maximum number of units */ 3 65 2 n_sessions fixed bin, /* number of Multics sessions */ 3 66 2 n_pad fixed bin, 3 67 3 68 /* Name elements. */ 3 69 2 sysdir char (64) unal, /* name of main system control directory */ 3 70 2 as_tty char (8) unal, /* name of main answering service device. */ 3 71 3 72 /* Login elements. */ 3 73 2 login_word char (8) unal, /* login word if special_session=1 */ 3 74 2 session char (8) unal, /* session indicator */ 3 75 2 special_message char (128) unal, /* message to be printed for special session */ 3 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 3 77 2 message_lng fixed bin, /* length of special message */ 3 78 2 login_pad fixed bin, 3 79 3 80 /* Table update elements. */ 3 81 2 lock_count fixed bin, /* global lock for all system control tables */ 3 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 3 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 3 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 3 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 3 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 3 87 2 update_pad fixed bin, 3 88 3 89 /* dialup_ data values. */ 3 90 2 current_time fixed bin (71), /* Time of last transaction */ 3 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 3 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 3 93 3 94 /* load_ctl_ elements. */ 3 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 3 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 3 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 3 98 /* load_ctl_ load leveling desired response range: */ 3 99 2 response_high fixed bin, /* bad if user response time slower than this */ 3 100 2 response_low fixed bin, /* bad if user response time faster than this */ 3 101 2 load_ctl_pad fixed bin, 3 102 3 103 /* Login server request server data. */ 3 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 3 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 3 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 3 107 3 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 3 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 3 110 3 contents (UTE_SIZE) fixed bin; 3 111 3 112 /* constants */ 3 113 3 114 /* values for anstbl.session */ 3 115 3 116 dcl (AT_NORMAL init ("normal "), 3 117 AT_SPECIAL init ("special "), 3 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 3 119 3 120 dcl UTE_SIZE fixed bin internal static initial (300); 3 121 3 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 2721 2722 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 4 2 4 3 /* format: style4 */ 4 4 4 5 /* This file must be kept in sync with as_data_.alm */ 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 4 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 4 10* Remove references to the 963 and 029 preaccess commands and remove support 4 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 4 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 4 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 14* Add references to as_data_ entrypoints added for Login Server. 4 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 4 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 17* Added new user signal field of inacrcvd (14) to handle inactivity response 4 18* from user. 4 19* END HISTORY COMMENTS */ 4 20 4 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 4 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 4 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 4 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 4 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 4 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 4 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 4 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 4 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 4 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 4 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 4 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 4 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 4 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 4 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 4 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 4 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 4 38 dcl as_data_$g115_dim char (32) ext static; 4 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 4 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 4 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 4 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 4 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 4 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 4 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 4 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 4 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 4 48 dcl as_data_$request_priority fixed bin ext static; 4 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 4 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 4 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 4 52 dcl as_data_$satp ptr ext static; /* SAT */ 4 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 4 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 4 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 4 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 4 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 4 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 4 59 dcl as_data_$version char (8) ext static; /* AS version */ 4 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 4 61 4 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 4 63 2 n_login_args fixed bin, 4 64 2 pad fixed bin, 4 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 4 66 4 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 4 68 2 n_signals fixed bin, 4 69 2 pad fixed bin, 4 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 4 71 4 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 4 73 2 n_system_signals fixed bin, 4 74 2 pad fixed bin, 4 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 4 76 4 77 dcl as_data_$login_words fixed bin ext static aligned, 4 78 /* interactive login words */ 4 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 4 80 2 n_words fixed bin, 4 81 2 pad fixed bin, 4 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 4 83 4 84 dcl as_data_$debug_flag bit (1) aligned external static; 4 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 4 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 4 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 4 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 4 89 4 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 2722 2723 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 5 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 7* Removed ansp, autp and dutp from this include file, adding them to 5 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 5 9* daemon_user_table.incl.pl1. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* This include file requires as_data_.incl.pl1 */ 5 14 5 15 /* format: style4 */ 5 16 5 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 5 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 5 19 dcl asmtp ptr defined (as_data_$asmtp); 5 20 dcl devtabp ptr defined (as_data_$devtabp); 5 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 5 22 dcl mgtp ptr defined (as_data_$mgtp); 5 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 5 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 5 25 dcl sat_htp ptr defined (as_data_$sat_htp); 5 26 dcl satp ptr defined (as_data_$satp); 5 27 dcl scdtp ptr defined (as_data_$cdtp); 5 28 dcl sysdir char (168) defined (as_data_$sysdir); 5 29 dcl whoptr ptr defined (as_data_$whoptr); 5 30 5 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 2723 2724 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 6 2 6 3 /* This include file defines the priorities of all of the event channels used by the answering service. 6 4* 6 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 6 6* The names correspond to the functions of the event call handlers. 6 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 6 8* 6 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 6 10* See the code in those procedures for information on the handlers themselves 6 11* (which are entry variables in some cases, and thus could not be documented in this file). 6 12* 6 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 6 14* 6 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 6 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 6 17* 6 18* Written June 1981 by T. Casey for MR9.0 6 19* Modified 1984-10-15 BIM for sac -> as_request. 6 20* as_request is above login, since sac is important and 6 21* dial requests for already logged in users can take 6 22* first dibs over new logins. 6 23**/ 6 24 6 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 6 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 6 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 6 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 6 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 6 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 6 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 6 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 6 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 6 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 6 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 6 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 6 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 6 38 6 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 2724 2725 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 7 2 7 3 /* This include file declares the "author" substructure 7 4* in a form suitable for using the PL/I "like" attribute. 7 5* 7 6* Written 750304 by PG 7 7**/ 7 8 7 9 dcl 1 author_dcl aligned based, 8 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 8 2 8 3 /* the "author" items must always be the first ones in the table. The 8 4* module which moves the converted table to the System Control process 8 5* fills in these data items and assumes them to be at the head of the segment 8 6* regardless of the specific table's actual declaration. The variables 8 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 8 8* respectively. For tables installed in multiple processes, these 8 9* are to be used to lock out multiple installations. */ 8 10 8 11 /* Lock should be used as a modification lock. Since, in general, 8 12* entries may not be moved in system tables, even by installations, 8 13* it is sufficient for only installers and programs that change threads 8 14* to set or respect the lock. Simply updating data in an entry 8 15* requires no such protection. 8 16* 8 17* Last_install_time is used by readers of system tables to detect 8 18* installations or other serious modifications. By checking it before 8 19* and after copying a block of data, they can be protected against 8 20* modifications. 8 21* 8 22* Modules that set the lock should save proc_group_id, and then 8 23* put their group id there for the time they hold the lock. 8 24* if they do not actually install the, they should restore the group id. 8 25**/ 8 26 8 27 2 author aligned, /* validation data about table's author */ 8 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 8 29 3 lock bit (36), /* installation lock */ 8 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 8 31 3 update_authorization bit (1) unal, /* update only authorizations */ 8 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 8 33 3 pad bit (33) unaligned, 8 34 3 last_install_time fixed bin (71), 8 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 8 36 3 w_dir char (64), /* author's working directory */ 8 37 8 38 /* END INCLUDE FILE author.incl.pl1 */ 7 10 7 11 2 pad; 7 12 7 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 2725 2726 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 9 2 9 3 /* format: style3,idind25,indcomtxt */ 9 4 9 5 /* Channel Definition Table. 9 6* This table lists all of the hardware channels (ports) connected 9 7* to the system, and maintains the attributes of each one. 9 8* 9 9* PG 741230 9 10* Modified by Mike Grady 5/6/76 to add FNP info. 9 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 9 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 9 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 9 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 9 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 9 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 9 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 9 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 9 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 9 20* Modified August 1982 by E. N. Kittlitz for check_acs. 9 21* Modified January 1983 by Keith Loepere for generic_destination. 9 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 9 23* Modified 831216 by E. N. Kittlitz for required_access_class. 9 24* Modified 84-04-01 by BIM to finish communications AIM: 9 25* access class ranges, 9 26* access_control flags. 9 27**/ 9 28 9 29 9 30 /****^ HISTORY COMMENTS: 9 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 9 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 9 33* Add support for answering service to use IOCBs when tty_ cannot be 9 34* used to service login channels. 9 35* END HISTORY COMMENTS */ 9 36 9 37 9 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 9 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 9 40 9 41 dcl (cdtp, cdtep, fnpep, mpxep) 9 42 ptr; 9 43 9 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 9 45 2 author like author_dcl.author, /* standard header */ 9 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 9 47 2 current_size fixed bin, /* number of last cdte. */ 9 48 2 version fixed bin, 9 49 2 freep fixed bin, /* chain of free cdte's */ 9 50 2 n_cdtes fixed bin, /* number of used cdte's */ 9 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 9 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 9 53 2 cpu_in_dialup fixed bin (71), /* .. */ 9 54 2 pf_in_dialup fixed bin, /* .. */ 9 55 2 pp_in_dialup fixed bin, /* .. */ 9 56 2 entries_to_dialup fixed bin, /* .. */ 9 57 2 flags, 9 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 9 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 9 60 3 mux_mgr_system_init 9 61 bit (1) unal, /* mux mgr has loaded top-levels */ 9 62 3 pad1 bit (33) unal, 9 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 9 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 9 65 2 threads aligned like channel_threads, 9 66 /* root of non-fnp-top-level-multiplexers */ 9 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 9 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 9 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 9 70 9 71 9 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 9 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 9 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 9 75 2 pad1 bit (36) aligned, 9 76 2 name char (32), /* ASCII name of channel */ 9 77 2 access_class (2) bit (72) aligned, /* access class range */ 9 78 2 comment char (48), /* printable message about channel */ 9 79 2 charge_type fixed bin (17) unal, /* billing group */ 9 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 9 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 9 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 9 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 9 84 2 pad2 bit (18) unaligned, 9 85 2 answerback char (8), /* answerback string expected */ 9 86 2 initial_terminal_type 9 87 char (32) unal, /* as specified in the CMF */ 9 88 2 mpx_data unal, /* data used only for multiplexed channels */ 9 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 9 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 9 91 2 flags, 9 92 ( 3 attributes, 9 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 9 94 4 audit_access_error 9 95 bit (1), /* ON means ck that person auth is inside access class range */ 9 96 /* this implies that the access_class describes a range of 9 97* legitimate user auths. */ 9 98 4 hardwired bit (1), /* ON means it is */ 9 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 9 100 4 dont_read_answerback 9 101 bit (1), /* ON means don't try to read answerback */ 9 102 4 pada bit (4), 9 103 3 access_control unaligned, /* As below */ 9 104 4 dial_out bit (1), /* dialing user must be on ACS */ 9 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 9 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 9 107 4 login bit (1), /* logging in user must be on acs */ 9 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 9 109 4 pado bit (3), 9 110 3 options, 9 111 4 execute_initial_command 9 112 bit (1), /* ON means to do it */ 9 113 4 attached_by_operator 9 114 bit (1), /* ON means temporary attachment. */ 9 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 9 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 9 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 9 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 9 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 9 120 4 generic_destination_present 9 121 bit (1), /* ON means that the initial_command field contains 9 122* a generic destination to match on dial_out or priv attach */ 9 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 9 124 4 pado bit (9) 9 125 ) unaligned, 9 126 2 initial_command char (64), /* pseudo first input line */ 9 127 /**** The following variables represent dynamic control info, and 9 128* are used mostly by dialup_ and asu_ */ 9 129 2 event fixed bin (71), /* event call channel for channel events */ 9 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 9 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 9 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 9 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 9 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 9 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 9 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 9 137 /* 0 = dialup_, 1 = mc_tty_ */ 9 138 3 save_arg bit (1) unal, /* -save login arg given */ 9 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 9 140 3 detach_after_hangup 9 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 9 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 9 143 3 hold_arg bit (1) unal, /* -hold arg given */ 9 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 9 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 9 146 3 current_access_class_valid 9 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 9 148 3 pad bit (7) unal, 9 149 2 twx fixed bin, /* channel device index */ 9 150 2 state fixed bin, /* channel state */ 9 151 2 tty_id_code char (4), /* channel id (answerback) */ 9 152 2 current_terminal_type 9 153 char (32) unal, /* most recently-set terminal type */ 9 154 2 process ptr unal, /* ptr to ATE owning this channel */ 9 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 9 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 9 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 9 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 9 159* We do not yet define multi-class connections, but we will someday. */ 9 160 2 disconnected_ate_index 9 161 fixed bin (17) unal, /* index of ate of disconnected process */ 9 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 9 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 9 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 9 165 2 pad3 bit (14) unaligned, 9 166 /**** The following variables are kept for metering purposes. */ 9 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 9 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 9 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 9 170 2 dialup_time fixed bin (71), /* time of present dialup */ 9 171 2 disconnected_proc_command 9 172 fixed bin (12) unsigned unal, 9 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 9 174 2 disconnected_proc_number 9 175 fixed bin (12) unsigned unal, 9 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 9 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 9 178 /* number of disconnected processes that user has */ 9 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 9 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 9 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 9 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 9 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 9 184 /**** had the space. */ 9 185 2 threads aligned like channel_threads, 9 186 /**** The use name is that of the user who gave the dial or slave ****/ 9 187 /**** preaccess request. ****/ 9 188 2 user_name unaligned, 9 189 3 person char (20) unaligned, 9 190 3 project char (9) unaligned, 9 191 3 pad char (3) unaligned, /* no tag */ 9 192 2 iocbp ptr unaligned; /* 104 words */ 9 193 9 194 9 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 9 196* overlays initial_command field for slave and autocall lines */ 9 197 9 198 9 199 9 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 9 201 /* These variables are filled in from the CMF */ 9 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 9 203 2 memory fixed bin, /* amount of memory on this FNP */ 9 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 9 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 9 206 2 service_type fixed bin, /* service type */ 9 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 9 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 9 209 /**** The following are used during system operation to remember the state of the FNP */ 9 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 9 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 9 212 2 mpxe like mpxe, /* standard multiplexer data */ 9 213 2 threads aligned like channel_threads, 9 214 /* same mpx threads as channel */ 9 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 9 216 9 217 /* This structure describes the data necessary to control a multiplexer. 9 218* For FNP's., a copy appears in the fnpe. For communications lines, it 9 219* overlays the initial_command field in the cdte. */ 9 220 9 221 dcl 1 mpxe based (mpxep) aligned, 9 222 2 state fixed bin, /* current state, up, down, loading */ 9 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 9 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 9 225 2 n_bootloads fixed bin, /* count of load attempts */ 9 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 9 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 9 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 9 229 2 time_load_start fixed bin (71), /* time current load started */ 9 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 9 231 2 flags unal, 9 232 3 go bit (1), /* start MPX after it loads */ 9 233 3 listening bit (1), /* listen has been done on subchannels */ 9 234 3 check bit (1), /* loaded with check option */ 9 235 3 retry_load bit (1), /* reload if load fails */ 9 236 3 pad1 bit (32), 9 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 9 238 9 239 /* These threads define the tree of multiplexers in the cdt. */ 9 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 9 241 /* by alpha sort order of the channel name. Daughter points to the */ 9 242 /* first child of this node, if any. Daughter count is the number */ 9 243 /* of children, as a consistency check. Mother is a back pointer to */ 9 244 /* the parent, present in all the children, not just the first. */ 9 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 9 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 9 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 9 248 9 249 dcl 1 channel_threads aligned based, 9 250 2 next_sister fixed bin unaligned, 9 251 2 prev_sister fixed bin unaligned, 9 252 2 daughter fixed bin unaligned, 9 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 9 254 2 pad bit (18) unaligned, 9 255 2 daughter_count fixed bin unaligned; 9 256 9 257 /* Values for cdte.service_type field */ 9 258 9 259 dcl ( 9 260 ANS_SERVICE init (1), /* login or dial */ 9 261 FTP_SERVICE init (2), /* file transfer service */ 9 262 MC_SERVICE init (3), /* message coordinator */ 9 263 SLAVE_SERVICE init (4), /* special channel */ 9 264 DIAL_SERVICE init (5), /* transient state */ 9 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 9 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 9 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 9 268 ) fixed bin internal static options (constant); 9 269 9 270 /* Values for service type in both cdte and fnpe */ 9 271 9 272 dcl ( 9 273 INACTIVE init (7), /* not to be used, even though configured */ 9 274 ACTIVE init (1) 9 275 ) /* for FNP only, configured and to be used */ 9 276 fixed bin internal static options (constant); 9 277 9 278 /* Value for both cdte.in_use and fnpe.state */ 9 279 9 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 9 281 /* was not configured at Multics bootload time */ 9 282 9 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 9 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 9 285 9 286 /* Value for cdte.in_use */ 9 287 9 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 9 289 /* channel deleted by CDT installation */ 9 290 9 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 9 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 9 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 9 294 9 295 9 296 /* Values for mpxe.state field */ 9 297 9 298 dcl ( 9 299 FNP_FREE init (0), /* this fnpe is not used */ 9 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 9 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 9 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 9 303 FNP_UP init (4) /* FNP is up and running fine */ 9 304 ) fixed bin internal static options (constant); 9 305 9 306 dcl ( 9 307 MPX_FREE init (0), /* this mpxe is not used */ 9 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 9 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 9 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 9 311 MPX_UP init (4) /* MPX is up and running fine */ 9 312 ) fixed bin internal static options (constant); 9 313 10 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 10 2 10 3 10 4 10 5 /****^ HISTORY COMMENTS: 10 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 10 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 10 8* Add data needed for the uncp multiplexer (DSA gateway) interface 10 9* implementation. 10 10* END HISTORY COMMENTS */ 10 11 10 12 10 13 /* Values for fnpe.type field */ 10 14 /* 10 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 10 16* Added in March 1982 - DN7100.fd. 10 17**/ 10 18 10 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 10 20 DN6600 init (2), /* a DataNet 6600 FNP */ 10 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 10 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 10 23 ) fixed bin internal static options (constant); 10 24 10 25 dcl fnp_types (4) char (8) int static options (constant) 10 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 10 27 10 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 10 29 init (355, 6600, 6670, 7100); 10 30 10 31 dcl supported_fnp (4) bit (1) int static options (constant) 10 32 init ("0"b, "0"b, "1"b, "1"b); 10 33 10 34 10 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 9 314 9 315 9 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 2726 2727 /* BEGIN INCLUDE FILE ... daemon_user_table.incl.pl1 */ 11 2 11 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 4 /* */ 11 5 /* The daemon_user_table has one entry per daemon. Daemons are logged in by */ 11 6 /* operator command or automatically. If they do any I/O, it is done via */ 11 7 /* the message coordinator. */ 11 8 /* */ 11 9 /* Programs using this include file must also use user_table_header.incl.pl1 */ 11 10 /* and user_table_entry.incl.pl1. */ 11 11 /* */ 11 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 13 11 14 11 15 /****^ HISTORY COMMENTS: 11 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 11 17* Initially coded from dutbl.incl.pl1. 11 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 11 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 20* A) Add use of ut_header common to all user control tables. 11 21* B) Corrected padding prior to first ute entry. 11 22* END HISTORY COMMENTS */ 11 23 11 24 11 25 dcl DUTBL_version_4 fixed bin int static init (4); /* version of this declaration */ 11 26 11 27 dcl dutp ptr automatic init (null); 11 28 11 29 dcl 1 dutbl based (dutp) aligned, /* Daemon user table */ 11 30 2 header like ut_header, /* Header common to all user tables. */ 11 31 11 32 2 active_count fixed bin, /* the count of active daemons managed by DUM_ */ 11 33 11 34 2 entry_pad (117) fixed bin, /* pad to 128 words */ 11 35 2 entry (0 refer (dutbl.current_size)) like ute; /* daemon user entries */ 11 36 11 37 /* END INCLUDE FILE ... daemon_user_table.incl.pl1 */ 2727 2728 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 12 2 12 3 /* format: style4 */ 12 4 12 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 12 6 12 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 12 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 12 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 12 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 12 11* WAIT_DISCARD_WAKEUP 12 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 12 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 12 14**/ 12 15 12 16 /****^ HISTORY COMMENTS: 12 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 12 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 12 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 12 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 22* Add named constants for instance tags. 12 23* END HISTORY COMMENTS */ 12 24 12 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 12 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 12 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 12 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 12 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 12 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 12 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 12 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 12 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 12 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 12 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 12 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 12 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 12 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 12 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 12 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 12 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 12 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 12 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 12 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 12 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 12 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 12 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 12 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 12 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 12 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 12 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 12 52 ) fixed bin internal static options (constant); 12 53 12 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 12 55 /* names of ute.destroy_flag values */ 12 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 12 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 12 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 12 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 12 60 "wait remove"); /* -13 */ 12 61 12 62 /* Values for "cdte.state", typewriter state. */ 12 63 12 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 12 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 12 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 12 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 12 68 ) fixed bin internal static options (constant); 12 69 12 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 12 71 /* names of cdte.state values */ 12 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 12 73 12 74 /* Values for "cdte.in_use" and "ate.active" */ 12 75 12 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 12 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 12 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 12 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 12 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 12 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 12 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 12 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 12 84 ) fixed bin internal static options (constant); 12 85 12 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 12 87 /* names of ute.active values */ 12 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 12 89 12 90 12 91 /**** Values for ute.tag */ 12 92 12 93 dcl (TAG_INTERACTIVE init("a"), 12 94 TAG_UFT init("f"), 12 95 TAG_ABSENTEE init("m"), 12 96 TAG_PROXY init("p"), 12 97 TAG_DAEMON init("z") 12 98 ) char(1) int static options(constant); 12 99 12 100 12 101 /**** Following are constants used to indicate to the process termination 12 102* handler the reason for the process termination. They are used by 12 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 12 104* uc_ls_destroy_request_. */ 12 105 12 106 dcl ( 12 107 PT_FPE initial (1), 12 108 PT_LOGOUT initial (4), 12 109 PT_NEW_PROC_AUTH initial (13), 12 110 PT_HANGUP initial (20), 12 111 PT_SHUTDOWN initial (21), 12 112 PT_BUMP initial (22), 12 113 PT_ALARM initial (23), 12 114 PT_DETACH initial (24), 12 115 PT_UNBUMP initial (25), 12 116 PT_OPERATOR_TERMINATE initial (27), 12 117 PT_DESTROY_REQUEST initial (30), 12 118 PT_NEW_PROC_REQUEST initial (31) 12 119 ) fixed bin (17) internal static options (constant); 12 120 12 121 /**** Values for ute.preempted: 12 122* -1 user unbumped after term signal sent 12 123* 0 user unbumped; ignore alarm___ 12 124* 1 value internally used in load_ctl_ 12 125* 2 user bumped; when alarm___ comes in, send term signal 12 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 12 127* signals come in 12 128* 4 user bumped; process sick, so destroy without sending term signal 12 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 12 130* termsgnl). */ 12 131 12 132 dcl ( 12 133 PREEMPT_UNBUMP initial (-1), 12 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 12 135 PREEMPT_LOAD_CTL initial (1), 12 136 PREEMPT_BUMPED initial (2), 12 137 PREEMPT_TERM_SENT initial (3), 12 138 PREEMPT_BUMPED_NO_TERM initial (4), 12 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 12 140 ) fixed bin (17) internal static options(constant); 12 141 12 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 12 143 "unbumped", 12 144 "not bumped, ignore alarm___", 12 145 "load_ctl_", 12 146 "bumped", 12 147 "bumped, trm_ sent", 12 148 "bumped without trm_", 12 149 "bumped, termsgnl received"); 12 150 12 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 2728 2729 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 13 2 13 3 /* Modified 740723 by PG to add short AIM access names */ 13 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 13 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 13 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 13 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 13 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 13 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 13 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 13 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 13 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 13 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 13 14* strict_trusted_path. */ 13 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 13 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 13 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 13 18 13 19 13 20 /****^ HISTORY COMMENTS: 13 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 13 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 13 23* added vchn_requires_accept parameter. 13 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 13 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 13 26* Correct formatting problems. 13 27* END HISTORY COMMENTS */ 13 28 13 29 13 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 13 31 13 32 13 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 13 34 2 part_1 like installation_parms_part_1 aligned, 13 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 13 36 13 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 13 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 13 39 13 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 13 41 2 installation_id char (32), /* Name printed at dialup and in who */ 13 42 2 company char (64), /* company name */ 13 43 2 department char (64), /* department */ 13 44 2 companyds char (120), /* company, double spaced */ 13 45 2 departmentds char (120), /* dpeartment double spaced */ 13 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 13 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 13 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 13 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 13 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 13 51 2 ndevices fixed bin, /* number of devices to charge */ 13 52 2 devtab (16), /* Maximum 16 */ 13 53 3 device_id char (8), /* Name of device */ 13 54 3 device_price (0: 7) float bin, /* Price by shift */ 13 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 13 56 2 warning_time fixed bin, /* seconds from warning to logout */ 13 57 2 login_time fixed bin, /* seconds in which to complete login */ 13 58 2 acct_update fixed bin, /* seconds between acct update */ 13 59 2 login_tries fixed bin, /* number of login tries allowed */ 13 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 13 61 2 registration_price float bin, /* fee per month per user */ 13 62 2 dolsign char (1), /* "dollar sign" */ 13 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 13 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 13 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 13 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 13 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 13 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 13 69* Initializer will copy the syserr_log */ 13 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 13 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 13 72 2 fatal_error_loop_count fixed bin (17) unaligned, 13 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 13 74 2 term_real_time_seconds fixed bin (17) unaligned, 13 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 13 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 13 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 13 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 13 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 13 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 13 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 13 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 13 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 13 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 13 85 2 level_names (0:7) char (32), /* Names for security levels. */ 13 86 2 category_names (18) char (32), /* Names for security categories. */ 13 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 13 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 13 89 2 ncon fixed bin, /* Number of config elements. */ 13 90 2 cona (51), /* each entry is 5 words long */ 13 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 13 92 3 shift fixed bin (5) unal, /* Shift number */ 13 93 3 x1 fixed bin (23) unal, 13 94 3 kmem fixed bin (17) unal, /* Memory size */ 13 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 13 96 3 x2 fixed bin (17) unal, 13 97 3 maxa fixed bin (11) unal, /* Max abs users */ 13 98 3 maxq fixed bin (5) unal, /* Max abs q */ 13 99 3 maxu_base fixed bin (17) unal, 13 100 3 response_high fixed bin (17) unal, 13 101 3 response_low fixed bin (17) unal, 13 102 3 x3 fixed bin (17) unal, 13 103 13 104 /* Absentee control parameters. New for MR7.0 */ 13 105 13 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 13 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 13 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 13 109 13 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 13 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 13 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 13 113 13 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 13 115 13 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 13 117 13 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 13 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 13 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 13 121 2 version fixed bin (35), /* must be 2 */ 13 122 2 nrates fixed bin, /* number of rate structures */ 13 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 13 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 13 125 2 require_operator_login bit (1) aligned, /* just what it says */ 13 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 13 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 13 128* mcacs segments for operators */ 13 129 2 password_min_length fixed bin, /* minimum length of passwords */ 13 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 13 131 2 password_change_interval fixed bin, /* number of days until must change */ 13 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 13 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 13 134* "accepted" by operator if personid is not 13 135* signed on system console */ 13 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 13 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 13 138* or someone miscounted when using part of pad2 */ 13 139 13 140 13 141 /* Entries in the following array may be accessed via system_info_$resource_price. 13 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 13 143 13 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 13 145 2 name char (32), 13 146 2 price float bin; 13 147 14 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 14 2 14 3 /* Created on 04/24/78 by Michael R. Jordan */ 14 4 /* Modified 04/10/79 by C. D. Tavares */ 14 5 14 6 dcl rifp ptr; 14 7 14 8 dcl 1 rcp_init_flags based (rifp), 14 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 14 10 2 pad1 bit (2) unaligned, /* obsolete */ 14 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 14 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 14 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 14 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 14 15 14 16 dcl (No_authentication initial (0), 14 17 Nominal_authentication initial (1), 14 18 Automatic_authentication initial (2), 14 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 14 20 14 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 14 22 ("none", "nominal", "automatic", "manual"); 14 23 14 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 13 148 13 149 13 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 2729 2730 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 15 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 15 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 15 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 15 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 15 10* Reorganized by type of data to improve readability. 15 11* END HISTORY COMMENTS */ 15 12 15 13 15 14 /* ACCESS NAMES */ 15 15 dcl ( 15 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 15 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 15 18 ) char(32) ext static; 15 19 15 20 /* PATHNAMES */ 15 21 dcl ( 15 22 sc_stat_$info_dir, /* admin info segs directory */ 15 23 sc_stat_$log_dir, /* as log segs directory */ 15 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 15 25 sc_stat_$sysdir /* system control directory */ 15 26 ) char(168) ext static; 15 27 15 28 /* OTHER CHAR STRINGS */ 15 29 dcl ( 15 30 sc_stat_$master_channel /* Master TTY channel. */ 15 31 ) char(6) aligned ext static; 15 32 15 33 /* LABELS */ 15 34 dcl ( 15 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 15 36 /* ssu_$null_label unless */ 15 37 /* admin_listener is active. */ 15 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 15 39 /* attributable to a particular */ 15 40 /* command. */ 15 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 15 42 ) label variable ext static; 15 43 15 44 /* POINTERS TO */ 15 45 dcl ( 15 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 15 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 15 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 15 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 15 50 /* by sys_log_. */ 15 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 15 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 15 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 15 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 15 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 15 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 15 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 15 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 15 59 ) ptr ext static; 15 60 15 61 /* SWITCHES */ 15 62 dcl ( 15 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 15 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 15 65 sc_stat_$Multics, /* TRUE after answering service started */ 15 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 15 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 15 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 15 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 15 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 15 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 15 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 15 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 15 74 /* if PNT not yet available. */ 15 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 15 76 sc_stat_$test_mode, /* TRUE if in test environment */ 15 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 15 78 /* by operator signed on system console*/ 15 79 ) bit(1) aligned ext static; 15 80 15 81 15 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 2730 2731 /* BEGIN: sc_subsystem_info_.incl.pl1 * * * * * */ 16 2 16 3 /* format:style3,idind30 */ 16 4 16 5 /* Created 1984-10-24 BIM */ 16 6 /* Modified 1985-01-07, BIM: access control flags that track admin and X */ 16 7 /* Modified 1985-02-18, E. Swenson to save away abort_line procedure. */ 16 8 16 9 16 10 /****^ HISTORY COMMENTS: 16 11* 1) change(87-02-17,GDixon), approve(87-07-03,MCR7680), 16 12* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 16 13* Correct formatting problems. Add sc_subsystem_info.flags.dont_mask_calls 16 14* switch. 16 15* 2) change(87-07-03,GDixon), approve(87-07-03,MCR7680), 16 16* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 16 17* Removed dont_mask_calls flag. It is no longer needed to correctly perform 16 18* masking on a per-request basis. 16 19* END HISTORY COMMENTS */ 16 20 16 21 16 22 declare sc_subsystem_info_ptr pointer; 16 23 declare 1 sc_subsystem_info aligned based (sc_subsystem_info_ptr), 16 24 2 restriction_flags bit (36) aligned, /* copied from mc atep or fabricated */ 16 25 2 flags aligned, 16 26 3 no_real_tty bit (1) unaligned, /* for sc_admin_command_ */ 16 27 3 print_ready bit (1) unal, /* on for all except the system console, */ 16 28 /* instructs sc_process_command_line_ to deal */ 16 29 /* with the prompt */ 16 30 3 the_system_console bit (1) unal, /* syserr messages are printed here (but console */ 16 31 /* recover doesn't try to fix this) copied here */ 16 32 /* from the mc_ate to save other looking in there*/ 16 33 3 printer_offed bit (1) unal, /* suppress logging */ 16 34 3 pad bit (32) unaligned, 16 35 2 source_name char (32) unaligned, 16 36 2 area_ptr pointer, 16 37 2 mc_atep pointer, /* needed to play with attachments */ 16 38 2 real_iocb pointer, /* for sc_signal_io_handler_ */ 16 39 2 hangup_entry entry (pointer) variable, 16 40 /* called on io_no_permission. */ 16 41 2 real_execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)), 16 42 2 real_locate_request entry (ptr, char (*), ptr, fixed bin (35)), 16 43 2 access_control_name char (32) unaligned, 16 44 2 real_invoke_request entry, /* since MR11 ssu_ lacks the ability to abort a */ 16 45 /* single request, we have an invoke_request that*/ 16 46 /* handles a condition to unwind the request */ 16 47 2 abort_request_label label, /* go here (nonlocally) to unwind a single request */ 16 48 2 real_abort_line entry options (variable); 16 49 16 50 declare sc_ss_area area based (sc_subsystem_info.area_ptr); 16 51 16 52 /* The following defines the user flags for the request table. */ 16 53 16 54 declare sc_rf_ptr pointer; 16 55 declare 1 sc_request_flags unaligned based (sc_rf_ptr), 16 56 2 dont_parse_arguments bit, /* reply, intercom */ 16 57 2 obsolete bit, /* warn opr to not use it */ 16 58 2 dont_mask_calls bit, /* this runs without masking ev calls */ 16 59 2 requires_as bit, /* not before AS */ 16 60 2 requires_no_as bit, /* only before AS */ 16 61 2 complete_disks_first bit, /* try to mount disks */ 16 62 2 no_login_needed bit, /* sign_on */ 16 63 2 pad bit (5), 16 64 2 restriction_type fixed bin (6) unsigned; 16 65 /* index into restriction flag string */ 16 66 16 67 16 68 /* END OF: sc_subsystem_info_.incl.pl1 * * * * * */ 2731 2732 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 17 2 17 3 17 4 /****^ HISTORY COMMENTS: 17 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 17 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 17 7* Added sl_info structure and associated named constants for use in calling 17 8* sys_log_$general. 17 9* END HISTORY COMMENTS */ 17 10 17 11 17 12 /* format: style4 */ 17 13 17 14 dcl ( 17 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 17 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 17 17 SL_TYPE init (-1), /* type message */ 17 18 SL_LOG_SILENT init (0), /* log message */ 17 19 SL_LOG init (1), /* log & type message */ 17 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 17 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 17 22 ) fixed bin internal static options (constant); 17 23 17 24 dcl 1 sl_info aligned automatic, 17 25 2 version char(8), /* structure version */ 17 26 2 arg_list_ptr ptr, /* arg_list with values */ 17 27 2 loc, 17 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 17 29 /* These flags control where the corresponding data item is found.*/ 17 30 /* -1: data appears in the corresponding structure element below */ 17 31 /* 0: data is not present anywhere */ 17 32 /* +N: data is Nth item in argument list pointed to by */ 17 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 17 34 /* corresponding structure element. */ 17 35 /* if data = +N: */ 17 36 /* argN is data_ptr, argN+1 is data_len */ 17 37 /* if ioa_msg = +N: */ 17 38 /* argN+1, ... argLAST are arguments substituted into the */ 17 39 /* ioa_msg control string. The formatted msg is returned. */ 17 40 2 flags, 17 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 17 42 3 flags_pad bit(35) unal, 17 43 2 mode fixed bin, /* as-mode, command-mode */ 17 44 2 severity fixed bin, /* error severity */ 17 45 2 code fixed bin(35), /* error table code */ 17 46 2 caller char(65) varying, /* caller refname$entryname*/ 17 47 2 data, /* binary data ptr/length */ 17 48 3 data_ptr ptr, 17 49 3 data_lth fixed bin(21), 17 50 2 class char(10) varying, /* binary data class */ 17 51 2 ioa_msg char(500) varying; /* formatted message text */ 17 52 17 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 54 /* */ 17 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 17 56 /* their data types should be as shown in the structure above, except that */ 17 57 /* character strings should be char(*) nonvarying. */ 17 58 /* */ 17 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 60 17 61 /* value for sl_info.version */ 17 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 17 63 17 64 /* values for sl_info.mode */ 17 65 dcl (SL_INFO_as_mode init(1), 17 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 17 67 17 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 17 69 dcl (SL_INFO_arg_given_in_structure init(-1), 17 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 17 71 17 72 17 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 74 /* */ 17 75 /* The following static structures are commonly used in the Login Server */ 17 76 /* user control software. */ 17 77 /* */ 17 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 79 17 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 17 81 17 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 17 83 2 version char(8) init ("sl_info1"), 17 84 2 arg_list_ptr ptr init (null), 17 85 2 loc, 17 86 3 (mode init (-1), 17 87 severity init ( 1), 17 88 code init ( 2), 17 89 caller init (-1), 17 90 data init ( 0), 17 91 class init ( 0), 17 92 ioa_msg init ( 3)) fixed bin, 17 93 2 flags, 17 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 17 95 3 flags_pad bit(35) unal init ("0"b), 17 96 2 mode fixed bin init ( 1), 17 97 2 severity fixed bin init ( 0), 17 98 2 code fixed bin(35) init ( 0), 17 99 2 caller char(65) varying init (""), 17 100 2 data, 17 101 3 data_ptr ptr init (null), 17 102 3 data_lth fixed bin(21) init ( 0), 17 103 2 class char(10) varying init (""), 17 104 2 ioa_msg char(500) varying init (""); 17 105 17 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 17 107 17 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 17 109 2 version char(8) init ("sl_info1"), 17 110 2 arg_list_ptr ptr init (null), 17 111 2 loc, 17 112 3 (mode init (-1), 17 113 severity init ( 1), 17 114 code init ( 0), 17 115 caller init (-1), 17 116 data init ( 0), 17 117 class init ( 0), 17 118 ioa_msg init ( 2)) fixed bin, 17 119 2 flags, 17 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 17 121 3 flags_pad bit(35) unal init ("0"b), 17 122 2 mode fixed bin init ( 1), 17 123 2 severity fixed bin init ( 0), 17 124 2 code fixed bin(35) init ( 0), 17 125 2 caller char(65) varying init (""), 17 126 2 data, 17 127 3 data_ptr ptr init (null), 17 128 3 data_lth fixed bin(21) init ( 0), 17 129 2 class char(10) varying init (""), 17 130 2 ioa_msg char(500) varying init (""); 17 131 17 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 17 133 17 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 17 135 2 version char(8) init ("sl_info1"), 17 136 2 arg_list_ptr ptr init (null), 17 137 2 loc, 17 138 3 (mode init (-1), 17 139 severity init ( 1), 17 140 code init ( 0), 17 141 caller init (-1), 17 142 data init ( 0), 17 143 class init ( 0), 17 144 ioa_msg init ( 2)) fixed bin, 17 145 2 flags, 17 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 17 147 3 flags_pad bit(35) unal init ("0"b), 17 148 2 mode fixed bin init ( 1), 17 149 2 severity fixed bin init ( 0), 17 150 2 code fixed bin(35) init ( 0), 17 151 2 caller char(65) varying init (""), 17 152 2 data, 17 153 3 data_ptr ptr init (null), 17 154 3 data_lth fixed bin(21) init ( 0), 17 155 2 class char(10) varying init (""), 17 156 2 ioa_msg char(500) varying init (""); 17 157 17 158 17 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 17 160 17 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 17 162 2 version char(8) init ("sl_info1"), 17 163 2 arg_list_ptr ptr init (null), 17 164 2 loc, 17 165 3 (mode init (-1), 17 166 severity init ( 1), 17 167 code init ( 2), 17 168 caller init (-1), 17 169 data init ( 0), 17 170 class init ( 0), 17 171 ioa_msg init ( 4)) fixed bin, 17 172 2 flags, 17 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 17 174 3 flags_pad bit(35) unal init ("0"b), 17 175 2 mode fixed bin init ( 1), 17 176 2 severity fixed bin init ( 0), 17 177 2 code fixed bin(35) init ( 0), 17 178 2 caller char(65) varying init (""), 17 179 2 data, 17 180 3 data_ptr ptr init (null), 17 181 3 data_lth fixed bin(21) init ( 0), 17 182 2 class char(10) varying init (""), 17 183 2 ioa_msg char(500) varying init (""); 17 184 17 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 17 186 17 187 dcl 1 sl_info_code_msg aligned int static options(constant), 17 188 2 version char(8) init ("sl_info1"), 17 189 2 arg_list_ptr ptr init (null), 17 190 2 loc, 17 191 3 (mode init (-1), 17 192 severity init (-1), 17 193 code init ( 1), 17 194 caller init (-1), 17 195 data init ( 0), 17 196 class init ( 0), 17 197 ioa_msg init ( 2)) fixed bin, 17 198 2 flags, 17 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 17 200 3 flags_pad bit(35) unal init ("0"b), 17 201 2 mode fixed bin init ( 1), 17 202 2 severity fixed bin init ( 0), 17 203 2 code fixed bin(35) init ( 0), 17 204 2 caller char(65) varying init (""), 17 205 2 data, 17 206 3 data_ptr ptr init (null), 17 207 3 data_lth fixed bin(21) init ( 0), 17 208 2 class char(10) varying init (""), 17 209 2 ioa_msg char(500) varying init (""); 17 210 17 211 17 212 /* Syntax: call Trace (ioa_ctl, args); */ 17 213 17 214 dcl 1 sl_info_msg aligned int static options(constant), 17 215 2 version char(8) init ("sl_info1"), 17 216 2 arg_list_ptr ptr init (null), 17 217 2 loc, 17 218 3 (mode init (-1), 17 219 severity init (-1), 17 220 code init ( 0), 17 221 caller init (-1), 17 222 data init ( 0), 17 223 class init ( 0), 17 224 ioa_msg init ( 1)) fixed bin, 17 225 2 flags, 17 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 17 227 3 flags_pad bit(35) unal init ("0"b), 17 228 2 mode fixed bin init ( 1), 17 229 2 severity fixed bin init ( 0), 17 230 2 code fixed bin(35) init ( 0), 17 231 2 caller char(65) varying init (""), 17 232 2 data, 17 233 3 data_ptr ptr init (null), 17 234 3 data_lth fixed bin(21) init ( 0), 17 235 2 class char(10) varying init (""), 17 236 2 ioa_msg char(500) varying init (""); 17 237 17 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 2732 2733 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 18 2 18 3 18 4 /****^ HISTORY COMMENTS: 18 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 18 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 18 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 18 8* attribute switches. 18 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 18 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 18 12* be deleted. 18 13* B) Add constants identifying attributes that can be changed by user at 18 14* login, etc. 18 15* END HISTORY COMMENTS */ 18 16 18 17 18 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 18 19 18 20 /* format: style4 */ 18 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 18 22 (2 administrator bit (1), /* 1 system administrator privileges */ 18 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 18 24 2 nobump bit (1), /* 2 user cannot be bumped */ 18 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 18 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 18 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 18 28* . of same project (distinct from "nobump") */ 18 29 2 nolist bit (1), /* 7 don't list user on "who" */ 18 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 18 31 2 multip bit (1), /* 9 user may have several processes */ 18 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 18 33 2 brief bit (1), /* 11 no login or logout message */ 18 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 18 35 2 vhomedir bit (1), /* 13 user may change homedir */ 18 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 18 37 2 sb_ok bit (1), /* 15 user may be standby */ 18 38 2 pm_ok bit (1), /* 16 user may be primary */ 18 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 18 40 2 daemon bit (1), /* 18 user may login as daemon */ 18 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 18 42 2 no_warning bit (1), /* 20 no warning message */ 18 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 18 44* . in PDT: this user has an individual load control group */ 18 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 18 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 18 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 18 48 2 pad bit (12)) unaligned; 18 49 18 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 18 51 ("none", /* 0 */ 18 52 "administrator", /* 1 */ 18 53 "primary_line", /* 2 */ 18 54 "nobump", /* 3 */ 18 55 "guaranteed_login", /* 4 */ 18 56 "anonymous", /* 5 */ 18 57 "nopreempt", /* 6 */ 18 58 "nolist", /* 7 */ 18 59 "dialok", /* 8 */ 18 60 "multip", /* 9 */ 18 61 "bumping", /* 10 */ 18 62 "brief", /* 11 */ 18 63 "vinitproc", /* 12 */ 18 64 "vhomedir", /* 13 */ 18 65 "nostartup", /* 14 */ 18 66 "no_secondary", /* 15 */ 18 67 "no_prime", /* 16 */ 18 68 "no_eo", /* 17 */ 18 69 "daemon", /* 18 */ 18 70 "", /* 19 vdim OBSOLETE */ 18 71 "no_warning", /* 20 */ 18 72 "igroup", /* 21 */ 18 73 "save_pdir", /* 22 */ 18 74 "disconnect_ok", /* 23 */ 18 75 "save_on_disconnect"); /* 24 */ 18 76 18 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 18 78 ("null", /* 0 */ 18 79 "admin", /* 1 */ 18 80 "", "", /* 2 - 3 */ 18 81 "guar", /* 4 */ 18 82 "anon", /* 5 */ 18 83 "", "", /* 6 - 7 */ 18 84 "dial", /* 8 */ 18 85 "multi_login", /* 9 */ 18 86 "preempting", /* 10 */ 18 87 "", /* 11 */ 18 88 "v_process_overseer", /* 12 */ 18 89 "v_home_dir", /* 13 */ 18 90 "no_start_up", /* 14 */ 18 91 "no_sec", /* 15 */ 18 92 "no_primary", /* 16 */ 18 93 "no_edit_only", /* 17 */ 18 94 "op_login", /* 18 */ 18 95 "", /* 19 */ 18 96 "nowarn", /* 20 */ 18 97 "", "", "", /* 21 - 23 */ 18 98 "save"); /* 24 */ 18 99 18 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 18 101 options(constant) init("000000000010000000010000000000000000"b); 18 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 18 103 18 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 18 105 options(constant) init("000000000010000000010000000000000000"b); 18 106 /* PDT value for (brief, no_warning) is default */ 18 107 18 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 18 109 options(constant) init("000100000110010000010000000000000000"b); 18 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 18 111 19 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 19 2 19 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 4 /* */ 19 5 /* This include file describes the attributes of an absentee job. It is */ 19 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 19 7 /* and PIT.incl.pl1. */ 19 8 /* */ 19 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 10 19 11 /****^ HISTORY COMMENTS: 19 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 19 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 14* Separated abs_attributes from the request structure 19 15* (abs_message_format.incl.pl1) so that the identical structure could be 19 16* used in the ute structure (user_table_entry.incl.pl1). 19 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 19 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 19* Added ABS_ATTRIBUTE_NAMES array. 19 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 19 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 19 22* Added the no_start_up flag. SCP6367 19 23* END HISTORY COMMENTS */ 19 24 19 25 dcl 1 user_abs_attributes aligned based, 19 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 19 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 19 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 19 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 19 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 19 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 19 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 19 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 19 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 19 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 19 36 2 attributes_pad bit (26) unaligned; 19 37 19 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 19 39 "restartable", 19 40 "user_deferred_until_time", 19 41 "proxy", 19 42 "set_bit_cnt", 19 43 "time_in_gmt", 19 44 "user_deferred_indefinitely", 19 45 "secondary_ok", 19 46 "truncate_absout", 19 47 "restarted", 19 48 "no_start_up"); 19 49 19 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 19 51 18 112 18 113 18 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 2733 2734 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 20 2 20 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 4 /* */ 20 5 /* This include file requires that the user include */ 20 6 /* user_attributes.incl.pl1 as well. It also includes */ 20 7 /* abs_attributes.incl.pl1 itself. */ 20 8 /* */ 20 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 20 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 20 11 /* */ 20 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 13 20 14 /****^ HISTORY COMMENTS: 20 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 20 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 20 17* This comment for hcom. 20 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 20 19* anstbl.incl.pl1, and dutbl.incl.pl1. 20 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 20 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 20 22* 84-07-12 BIM added min_process_authorization 20 23* 84-12-31 Keith Loepere added pdir_dir_quota 20 24* 85-01-16 by E. Swenson to add ute.session_uid 20 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 20 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 20 27* Added fields for DSA login server support. 20 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 20 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 20 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 20 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 20 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 20 33* Added disconnection_rel_minutes. 20 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 20 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 36* Changed structure under ute.abs_attributes to use like structure in 20 37* abs_attributes.incl.pl1. This allows the same attributes to be used 20 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 20 39* file. 20 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 20 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 20 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 20 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 45* A) Global reorganization to locate things by type of data. 20 46* B) Eliminate ute.uflags.logged_in. 20 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 20 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 49* A) Reduced overlength person and project fields to proper length. 20 50* B) Adjusted dialed-console section to begin on even word boundary. 20 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 20 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 53* Add ute.line_type. 20 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 20 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 20 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 20 57* for the storage. SCP6367 20 58* END HISTORY COMMENTS */ 20 59 20 60 /* format: style4 */ 20 61 20 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 63 /* */ 20 64 /* Each of the named sections below defines a type of data. Typing comes */ 20 65 /* from data associated with the ute entry itself, with the person, with */ 20 66 /* login argument data, from the main user of the data (eg, dialup_, */ 20 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 20 68 /* and is an even number of words long. The total structure is 300 decimal */ 20 69 /* words long. */ 20 70 /* */ 20 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 72 20 73 20 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 20 75 20 76 dcl utep pointer automatic init (null); 20 77 20 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 20 79 20 80 /* Variables which give state of this entry */ 20 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 20 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 20 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 20 84 2 next_free fixed bin, /* points to previous free entry */ 20 85 20 86 /* Information user gave about person_id associated with this entry. */ 20 87 2 person char (24) unal, /* user's name */ 20 88 2 project char (12) unal, /* project of absentee user */ 20 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 20 90 2 tag_pad bit (27) unal, 20 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 20 92 2 login_flags, /* flags for login data */ 20 93 3 cpw bit (1) unal, /* flag for wish to change password */ 20 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 20 95 3 special_pw unal, /* dial or slave */ 20 96 4 dial_pw bit (1) unal, /* true if dial -user */ 20 97 4 slave_pw bit (1) unal, /* true if slave -user */ 20 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 20 99 3 cda bit (1) unal, /* flag to change default authorization */ 20 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 20 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 20 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 20 103 3 pw_pad bit (25) unal, /* spare parts */ 20 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 20 105 /* Must remain last in pw_flags so it does not */ 20 106 /* appear in PW_FLAG_VALUES array below. */ 20 107 2 generated_pw char (8) unal, /* user must type this as new password */ 20 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 20 109 2 process_authorization bit (72), /* access_authorization of this process */ 20 110 20 111 /* Information user gave about process associated with this entry. */ 20 112 2 outer_module char (32) unal, /* Name of console dim */ 20 113 2 home_dir char (64) unal, /* initial home directory */ 20 114 2 init_proc char (64) unal, /* name of login responder */ 20 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 20 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 20 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 20 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 20 119 2 initial_ring fixed bin, /* ring process will be started in */ 20 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 20 121 2 ln_args fixed bin, /* length of string containing arguments */ 20 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 20 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 20 124 20 125 /* Most of the following information is relevant only to absentee processes */ 20 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 20 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 20 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 20 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 20 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 20 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 20 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 20 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 20 134* (but see uflags.adjust_abs_q_no). */ 20 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 20 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 20 137 2 abs_flags, 20 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 20 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 20 140 3 abs_flags_pad bit (34) unal, 20 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 20 142 2 sender char (32) unal, /* name of RJE station that job is from */ 20 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 20 144 2 proxy_project char (9) unal, 20 145 2 proxy_project_pad char (3) unal, 20 146 2 abs_pad fixed bin, 20 147 20 148 /* Information about process actually created */ 20 149 2 proc_id bit (36), /* process id of absentee process */ 20 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 20 151 2 process_authorization_range (2) bit (72) aligned, 20 152 2 audit bit (36), /* audit flags for user */ 20 153 2 lot_size fixed bin, /* Size of linkage offset table */ 20 154 2 kst_size fixed bin, /* Size of process known segment table */ 20 155 2 cls_size fixed bin, /* Size of process combined linkage */ 20 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 20 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 20 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 20 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 20 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 20 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 20 162 2 pdir_pad fixed bin(17) unal, 20 163 2 process_pad fixed bin, 20 164 20 165 /* Information about primary terminal associated with this entry */ 20 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 20 167 2 terminal_type char (32) unaligned, /* terminal type */ 20 168 2 line_type fixed bin, /* line type */ 20 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 20 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 20 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 20 172 20 173 /* Variables useful for dialed terminals */ 20 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 20 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 20 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 20 177 2 dial_server_flags, 20 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 20 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 20 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 20 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 20 182 20 183 /* Information about usage/accounting. Device usage meters are in a 20 184* separate segment, "devtab" */ 20 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 20 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 20 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 20 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 20 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 20 190 2 last_update_time fixed bin (71), /* time of last account update */ 20 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 20 192 2 ndevices fixed bin, /* Count of attached devices */ 20 193 2 device_head fixed bin, /* Table index of head of device chain */ 20 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 20 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 20 196 2 rs_number_pad bit(30) unal, 20 197 2 usage_pad fixed bin, 20 198 20 199 /* Information for dialup_ (control variables). */ 20 200 2 event fixed bin (71), /* event associated with channel or user manager */ 20 201 2 uprojp ptr, /* ptr to user project sat entry */ 20 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 20 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 20 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 20 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 20 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 20 207 2 count fixed bin, /* counter for logins and dialups */ 20 208 2 n_processes fixed bin, /* number of processes created in this session */ 20 209 2 lock_value fixed bin, /* number of locks set for this entry */ 20 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 20 211 2 login_code char (8) unal, /* login command from LOGIN line */ 20 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 20 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 20 214 2 logout_type char (4) unal, /* type of logout */ 20 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 20 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 20 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 20 218 2 work_class fixed bin, /* work class used by priority scheduler */ 20 219 2 group char (8) unal, /* party group identifier */ 20 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 20 221 20 222 2 uflags, /* Miscellaneous flags */ 20 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 20 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 20 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 20 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 20 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 20 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 20 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 20 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 20 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 20 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 20 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 20 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 20 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 20 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 20 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 20 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 20 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 20 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 20 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 20 242 3 uflags_pad bit (17) unal, 20 243 20 244 /* Information used by load_ctl_ for the process */ 20 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 20 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 20 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 20 248 20 249 20 250 /* Information for login server */ 20 251 2 login_server_info, 20 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 20 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 20 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 20 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 20 256 3 process_id bit (36) aligned, /* process_id of login server */ 20 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 20 258 20 259 /* values for ute.process_type */ 20 260 20 261 dcl (PT_INTERACTIVE initial (1), 20 262 PT_ABSENTEE initial (2), 20 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 20 264 20 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 20 266 "INVALID-TYPE", 20 267 "interactive", 20 268 "absentee", 20 269 "daemon"); 20 270 20 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 20 272 "UNKNOWN-TABLE", 20 273 "answer_table", 20 274 "absentee_user_table", 20 275 "daemon_user_table"); 20 276 20 277 20 278 /* values for ute.pw_flags.mask_ctl */ 20 279 20 280 dcl (DO_MASK init ("00"b), 20 281 DONT_MASK init ("01"b), 20 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 20 283 20 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 20 285 "do_mask", "dont_mask", "derive_mask", ""); 20 286 20 287 20 288 /* names for ute.pw_flags */ 20 289 20 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 20 291 "cpw", 20 292 "generate_pw", 20 293 "dial_pw", 20 294 "slave_pw", 20 295 "cdp", 20 296 "cda", 20 297 "auth_given", 20 298 "noprint", 20 299 "operator"); 20 300 20 301 /* names for ute.uflags */ 20 302 20 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 20 304 "dont_call_init_admin", 20 305 "ip_given", 20 306 "ss_given", 20 307 "lvs_attached", 20 308 "send_initial_string", 20 309 "adjust_abs_q_no", 20 310 "foreground_secondary_ok", 20 311 "foreground_job", 20 312 "sus_sent", 20 313 "suspended", 20 314 "ignore_cpulimit", 20 315 "deferral_logged", 20 316 "save_if_disconnected", 20 317 "disconnected", 20 318 "disconnected_list", 20 319 "proc_create_ok", 20 320 "activity_can_unbump", 20 321 "fpe_causes_logout", 20 322 "user_specified_immediate"); 20 323 20 324 /* names for ute.abs_flags */ 20 325 20 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 20 327 "abs_run", 20 328 "notify"); 20 329 20 330 /* names of ute.dial_server_flags */ 20 331 20 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 20 333 "registered", 20 334 "privileged"); 20 335 20 336 /* values of ute.login_result */ 20 337 20 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 20 339 "logged in", 20 340 "login failed, hangup", 20 341 "login failed, try again"); 20 342 20 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 2734 2735 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 21 2 21 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 4 /* */ 21 5 /* This include file declares the header shared by the answer_table, */ 21 6 /* absentee_user_table and daemon_user_table include files. */ 21 7 /* */ 21 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 9 21 10 /****^ HISTORY COMMENTS: 21 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 21 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 21 13* Initial coding. 21 14* END HISTORY COMMENTS */ 21 15 21 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 21 17 2 header_version fixed bin, /* version of the header (3) */ 21 18 2 entry_version fixed bin, /* version of user table entries */ 21 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 21 20 2 header_length fixed bin, /* length of the header */ 21 21 2 max_size fixed bin, /* max number of entries in this table */ 21 22 2 current_size fixed bin, /* actual size of table (in entries) */ 21 23 2 number_free fixed bin, /* number of free entries in the table. */ 21 24 2 first_free fixed bin, /* index of first entry in the free list. */ 21 25 2 as_procid bit (36), /* process ID of user table manager process */ 21 26 2 ut_header_pad fixed bin; 21 27 21 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 2735 2736 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 22 2 22 3 /* Modified 740723 by PG to add security info */ 22 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 22 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 22 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 22 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 22 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 22 9 22 10 dcl 1 whotab based (whoptr) aligned, 22 11 2 mxusers fixed bin, /* max. number of users on system */ 22 12 2 n_users fixed bin, /* current number of users */ 22 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 22 14 2 n_units fixed bin, /* current load */ 22 15 2 timeup fixed bin (71), /* time system was started */ 22 16 2 session char (8), /* AS state, same as anstbl.session */ 22 17 2 nextsd fixed bin (71), /* time we will shutdown */ 22 18 2 until fixed bin (71), /* projected time we start up again */ 22 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 22 20 2 erfno char (8), /* if a crash, the error number */ 22 21 2 obsolete_why char (32), /* reason for last shutdown */ 22 22 2 installation_id char (32), /* name of installation */ 22 23 2 obsolete_message char (32), /* message for all users */ 22 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 22 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 22 26 2 max_abs_users fixed bin, /* max number of absentee users */ 22 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 22 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 22 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 22 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 22 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 22 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 22 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 22 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 22 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 22 36 2 pad1 bit (9) unal, 22 37 2 pad (3) fixed bin, 22 38 2 version fixed bin, /* structure version */ 22 39 2 header_size fixed bin, /* length of header in words */ 22 40 2 entry_size fixed bin, /* length of entry in words */ 22 41 /* laste_adjust is used only by Answering Service programs */ 22 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 22 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 22 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 22 45 22 46 /* whotab header extension: The header is extended from 64 words by 22 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 22 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 22 49* present. This allows existing programs to function with old definitions of 22 50* whotab. Obviously no new header field can be more than 31 contiguous words in 22 51* length. In the Answering Service, all programs using whotab must be compiled 22 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 22 53 22 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 22 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 22 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 22 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 22 58 2 abs_control, /* see absentee_user_table */ 22 59 3 mnbz bit (1) unal, /* must not be zero */ 22 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 22 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 22 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 22 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 22 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 22 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 22 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 22 67 3 control_pad bit (23) unal, 22 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 22 69 2 installation_request_pid bit (36), /* installation process identifier */ 22 70 2 sysid char (32), /* current system name */ 22 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 22 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 22 73 2 message char (124), /* message for all users */ 22 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 22 75 2 why char (124), /* reason for last shutdown */ 22 76 2 e (1000), /* offset 240o */ 22 77 3 active fixed bin, /* nonzero means logged in */ 22 78 3 person char (28) aligned, /* person name */ 22 79 3 project char (28), /* project id */ 22 80 3 anon fixed bin, /* 1 if anonymous user */ 22 81 3 padding fixed bin (71), 22 82 3 timeon fixed bin (71), /* time of login */ 22 83 3 units fixed bin, /* load units */ 22 84 3 stby fixed bin, /* 1 if stby */ 22 85 3 idcode char (4), /* tty id code */ 22 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 22 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 22 88 3 group char (8), /* party-line group */ 22 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 22 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 22 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 22 92 3 pad2 bit (33) unal, 22 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 22 94 3 process_authorization bit (72); /* access authorization of process */ 22 95 22 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 22 97 22 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 2736 2737 2738 /* BEGIN MESSAGE DOCUMENTATION 2739* 2740* Message: 2741* admin_: down: No shutdown is scheduled. 2742* 2743* S: $as1 2744* 2745* T: In response to an operator down command. 2746* 2747* M: The operator issued a down 0 command to reset a scheduled 2748* automatic shutdown when none was in effect. No action was taken 2749* on the command. 2750* 2751* A: $ignore 2752* 2753* Message: 2754* admin_: down: Next shutdown from DATE_TIME to DATE_TIME1 REASON 2755* 2756* S: $as1 2757* 2758* T: Response to an operator "down" command. 2759* 2760* M: This message tells when the next scheduled shutdown is. 2761* 2762* A: $ignore 2763* 2764* Message: 2765* admin_: down: resetting previous shutdown at MM/DD/YY HHMM.T 2766* 2767* S: $as1 2768* 2769* T: In response to an operator down command. 2770* 2771* M: A second down command has been issued before a previously 2772* issued down command has been executed. The new shutdown time is 2773* honored instead of the previous one. 2774* 2775* A: $ignore 2776* 2777* Message: 2778* admin_: stop: Automatic shutdown 2779* 2780* S: $as1 2781* 2782* T: $shut 2783* 2784* M: A down command issued earlier has taken effect. An 2785* automatic stop command is executed. All users are 2786* bumped in three minutes. 2787* 2788* A: Prepare to shut down the system. 2789* 2790* Message: 2791* admin_: warn: NAME.PROJ has "no_warning" 2792* 2793* S: $as1 2794* 2795* T: Response to operator warn command. 2796* 2797* M: This is the response to the command "warn NAME PROJ 2798* Message..." if the user has specified the -no_warning argument 2799* at login. The message is not sent to the user. 2800* 2801* A: Attempt to contact the user by other means. 2802* 2803* Message: 2804* admin_: warn: USER.PROJ not connected to a channel 2805* 2806* S: as (sevreity1) 2807* 2808* T: Response to operator warn command. 2809* 2810* M: This is the response to the command "warn NAME PROJ Message" 2811* if the pointer to the channel table entry in the user table entry 2812* for the named user (ute.cdtep) is not set (null). The message cannot be 2813* sent to the user. 2814* 2815* A: Attempt to contact the user by other means. 2816* 2817* Message: 2818* admin_: warn: NAME.PROJ not found. 2819* 2820* S: $as1 2821* 2822* T: In response to an operator warn command. 2823* 2824* M: The warn command was issued for a nonexistent user. No 2825* action was taken. 2826* 2827* A: The user is probably not logged in. Check the spelling of 2828* the name. $tryagain 2829* 2830* Message: 2831* admin_: log: MESSAGE 2832* 2833* S: $as0 2834* 2835* T: $run 2836* 2837* M: The log command simply enters its arguments in the system log. 2838* It is occasionally used by 2839* operators and system programmers to record events. 2840* 2841* A: $ignore 2842* 2843* Message: 2844* admin_: maxu: (MMMM): UUUU (DDDD normal users) 2845* 2846* S: $as1 2847* 2848* T: When operator entered "maxu" command. 2849* 2850* M: This is an informative message indicating the current values 2851* manipulated by the maxu command. MMMM is the mode, "auto" or "level". 2852* UUUU is the load units in tenths. DDDD is the load units in whole numbers. 2853* 2854* A: $ignore 2855* 2856* Message: 2857* admin_: maxu: Warning: maxunits are in tenths of load units. 2858* .brf 2859* You just set maxu to UUUU, or DDDD normal users. 2860* 2861* S: $as1 2862* 2863* T: When operator entered a maxu command line that specified < 200 load 2864* units or 20 normal users. 2865* 2866* M: This message is a warning to the operator that he may have made a 2867* mistake in setting the load units of the system. A normal system is not 2868* likely to set its maximum load units to less than 200. 2869* 2870* A: Take corrective action (reenter the command with corrected 2871* arguments). 2872* 2873* Message: 2874* admin_: shift: N until DATE_TIME 2875* 2876* S: $as1 2877* 2878* T: response to an operator "shift" command. 2879* 2880* M: The operator has issued the shift command. 2881* If issued with no arguments this command types the current setting. 2882* If issued with arguments, 2883* the command changes the shift and types the new value. 2884* 2885* A: $ignore 2886* 2887* Message: 2888* admin_: ERROR_MESSAGE SYSDIR>absentee_user_table 2889* 2890* S: $as1 2891* 2892* T: When operator entered abs command. 2893* 2894* M: The ERROR_MESSAGE gives reason why system was not able to find or 2895* access the absentee_user_table in the SYSDIR directory. Execution of the 2896* command was not completed. 2897* 2898* A: %inform 2899* 2900* Message: 2901* admin_: abs: absentee not up, and will not be started automatically 2902* 2903* S: $as1 2904* 2905* T: When operator entered "abs stop" before absentee facility was 2906* started. 2907* 2908* M: The command can be entered at standard to prevent the absentee 2909* facility from starting up automatically after a "startup" command is used. 2910* 2911* A: $ignore 2912* 2913* Message: 2914* admin_: abs: resetting auto abs stop 2915* 2916* S: $as1 2917* 2918* T: In response to an operator abs stop command. 2919* 2920* M: An abs stop command overrides an automatic abs stop 2921* that was set up by a down command. 2922* 2923* A: $ignore 2924* 2925* Message: 2926* admin_: stop: auto abs stop 2927* 2928* S: $as1 2929* 2930* T: $run 2931* 2932* M: It is 30 minutes before an automatic stop, so an automatic 2933* abs stop command is being issued. This is the result of a previous 2934* down command. Refer also to the stop command description. 2935* 2936* A: $ignore 2937* 2938* Message: 2939* admin_: abs: Zero errors on all absentee queues. 2940* 2941* S: $as1 2942* 2943* T: In response to "abs queue" operator command. 2944* 2945* M: Informative message which indicates that no queue has been dropped 2946* and no errors recorded for any queue. 2947* 2948* A: $ignore 2949* 2950* Message: 2951* admin_: abs: Queue errors (*=dropped): 2952* .brf 2953* admin_: abs: FG 0 1 2 3 4 2954* .brf 2955* admin_: abs: TT VV WW XX YY ZZ 2956* .brf 2957* admin_: abs: * * * * * * 2958* 2959* S: $as1 2960* 2961* T: In response to "abs queue" operator command. 2962* 2963* M: Displays the errors for each queue and indicates which one has been 2964* dropped. If none have been dropped, the last line will not be displayed nor 2965* will the string "(*=dropped)" appear in the first line. 2966* 2967* A: $inform 2968* 2969* Message: 2970* admin_: abs: maxu (MMMM): UUUU 2971* 2972* S: $as1 2973* 2974* T: In response to "abs maxu" operator command without arguments. 2975* 2976* M: Informative message indicating current status of maxu and maximum 2977* absentee users allowed. MMMM is the mode, "auto" or "manual". UUUU is the 2978* load_units. 2979* 2980* A: $ignore 2981* 2982* Message: 2983* admin_: abs: maxq (MMMM): Q 2984* 2985* S: $as1 2986* 2987* T: In response to "abs maxq" without arguments. 2988* 2989* M: Informative message indicating current status of maxq and queue last 2990* searched (Q). MMMM is the mode, "auto" or "manual". 2991* 2992* A: $ignore 2993* 2994* Message: 2995* admin_: abs: qres (MMMM): WW XX YY ZZ 2996* 2997* S: $as1 2998* 2999* T: In response to "abs maxq" without arguments. 3000* 3001* M: Informative message indicating current status of absentee queue 3002* reservation for each queue. MMMM is the mode, "auto" or "manual". 3003* 3004* A: $ignore 3005* 3006* Message: 3007* admin_: abs: queue limits: WW XX YY ZZ 3008* 3009* S: $as1 3010* 3011* T: In response to "abs qres" operator command. 3012* 3013* M: Informative message indicating the current queue reservation limits. 3014* 3015* A: $ignore 3016* 3017* Message: 3018* admin_: abs: cpu_limit (MMMM), queues 1-4: WW XX YY ZZ (seconds) 3019* 3020* S: $as1 3021* 3022* T: In response to "abs cpu_limit" command without arguments. 3023* 3024* M: Informative message indicating current values of cpu_limit for each 3025* absentee queue. MMM is the mode, "auto" or "manual". 3026* 3027* A: $ignore 3028* 3029* Message: 3030* admin_: abs: Warning: cpu limits are in seconds. You just set queue QQ limit to LLLL seconds. 3031* 3032* S: $as1 3033* 3034* T: In response to "abs cpu_limit" command with arguments. 3035* 3036* M: The cpu_limit (LLLL) for queue QQ is below 60 seconds which is likely 3037* to be a mistake. The value already given will be still be accepted. 3038* 3039* A: Reenter the command with corrected values if originally incorrect. 3040* 3041* Message: 3042* admin_: ERROR_MESSAGE SYSDIR>answer_table 3043* 3044* S: $as2 3045* 3046* T: In response to operator commands that require access to the system 3047* answer_table. 3048* 3049* M: The ERROR_MESSAGE gives reason why system was not able to find or 3050* access the answer_table in the SYSDIR directory. Execution of the 3051* command was not completed. 3052* 3053* A: $inform 3054* 3055* Message: 3056* admin_: ERROR_MESSAGE SYSDIR>whotab 3057* 3058* S: $as2 3059* 3060* T: In response to operator commands that require access to the system 3061* whotab. 3062* 3063* M: The ERROR_MESSAGE gives reason why system was not able to find or 3064* access the whotab in the SYSDIR directory. Execution of the 3065* command was not completed. 3066* 3067* A: $inform 3068* 3069* Message: 3070* admin_: ERROR_MESSAGE SYSDIR>installation_parms 3071* 3072* S: $as2 3073* 3074* T: In response to operator commands that require access to the system 3075* installation_parms. 3076* 3077* M: The ERROR_MESSAGE gives reason why system was not able to find or 3078* access the installation_parms in the SYSDIR directory. Execution of the 3079* command was not completed. 3080* 3081* A: $inform 3082* 3083* Message: 3084* admin_: ERROR_MESSAGE SYSDIR>cdt 3085* 3086* S: $as2 3087* 3088* T: In response to operator commands that require access to the system 3089* cdt. 3090* 3091* M: The ERROR_MESSAGE gives reason why system was not able to find or 3092* access the cdt in the SYSDIR directory. Execution of the 3093* command was not completed. 3094* 3095* A: $inform 3096* 3097* Message: 3098* admin_: stop: All users are out. You may shut down. 3099* 3100* S: $as1 3101* 3102* T: $shut 3103* 3104* M: This is the response to the stop command if all users 3105* have been logged out. This message provides a quick check of whether 3106* all users have been bumped since it does not adversely affect system 3107* operation to issue the stop command repeatedly. 3108* 3109* A: Proceed with the shutdown. 3110* 3111* Message: 3112* admin_: stop: There were no active users to be bumped. 3113* 3114* S: $as1 3115* 3116* T: $shut 3117* 3118* M: The system did not find any active users to be bumped. 3119* 3120* A: $ignore 3121* 3122* Message: 3123* admin_: stop: all users have been given XXXX minutes to logout 3124* 3125* S: $as1 3126* 3127* T: $shut 3128* 3129* M: A stop command, either manual or automatic, has been 3130* initiated. All users have been warned that they have XXXX minutes 3131* to finish up and logout. After XXXX minutes, all users will be 3132* bumped except those with the nobump attribute. The login word 3133* has been set so that no more users may log in. To cancel this shutdown, 3134* issue a word login command and an unbump * * command. 3135* 3136* A: $ignore 3137* 3138* Message: 3139* admin_: COMMAND: PERSON.PROJECT has "nobump" 3140* 3141* S: $as1 3142* 3143* T: $shut 3144* 3145* M: The PERSON.PROJECT user cannot be bumped by the automatic shutdown or 3146* in response to the stop command. The nobump attribute is normally only used 3147* by system administrator users. 3148* 3149* A: Try to contact the user to arrange a time to actually 3150* shutdown. If necessary, the user can be bumped by specifying the channel 3151* name in the bump command. This will only work if the process has not been 3152* disconnected. Otherwise, you will have to answer "yes" to the shutdown 3153* command. 3154* 3155* Message: 3156* admin_: bump: USER.PROJECT bumped. 3157* 3158* S: $as1 3159* 3160* T: In response to the bump command or a system shutdown. 3161* 3162* M: The specified user has been notified that he or she must get off the 3163* system. If a grace time was specified, the user is allowed that amount of 3164* time to logout. Otherwise, the user is removed from the system immediately. 3165* 3166* A: $ignore 3167* 3168* Message: 3169* admin_: abs ABS_FUNCTION: Expected argument missing. After PREV_ARG. 3170* 3171* S: $as1 3172* 3173* T: In response to an operator abs command. 3174* 3175* M: A required value to a control argument supplied in the "abs" 3176* command line is missing. 3177* 3178* A: Reenter corrected command line. 3179* 3180* Message: 3181* admin_: abs: auto abs stop will be at MM/DD/YY HHMM.T 3182* 3183* S: $as1 3184* 3185* T: In response to an operator down command or at startup. 3186* 3187* M: This is the response to a down command if the absentee 3188* facility is running, or to an abs start command if the absentee is 3189* brought up after a down time has been set. The time for an automatic 3190* abs stop is 20 minutes before the system is to shut down. An "abs stop now" 3191* is done 10 minutes after the scheduled shutdown. 3192* Refer also to the stop command description. 3193* 3194* A: $ignore 3195* 3196* Message: 3197* admin_: abs: All absentee processes have run to completion. 3198* 3199* S: $as1 3200* 3201* T: When shutting down the absentee facility. 3202* 3203* M: This message is printed after the operator has issued an 3204* abs stop command or the system has issued an automatic 3205* abs stop prior to shutdown. The system allows 30 minutes for all absentee 3206* jobs to finish before logging them out, then prints the message. 3207* 3208* A: It is now safe to proceed with the shutdown. 3209* 3210* Message: 3211* admin_: abs: Bumping all remaining absentee processes. 3212* 3213* S: $as1 3214* 3215* T: $shut 3216* 3217* M: The absentee facility waits 30 minutes for all absentee jobs 3218* to run to completion after the abs stop command has been 3219* issued. Then it types this message and bumps them all. 3220* Refer also to the stop command description. 3221* 3222* A: $ignore 3223* 3224* Message: 3225* admin_: down: auto shutdown will be at MM/DD/YY HHMM.T 3226* 3227* S: $as1 3228* 3229* T: In response to an operator down command or at startup. 3230* 3231* M: This is the response to the down command. It indicates 3232* the scheduled shutdown time. A down command is issued automatically 3233* at system startup time after a crash; if a down command was given before 3234* the crash occurred, and the time of the scheduled shutdown is more than 3235* 30 minutes in the future. 3236* 3237* A: If the value shown in the message is correct, proceed. 3238* If not correct, reset the shutdown by typing down 0 and 3239* then try again. 3240* 3241* Message: 3242* admin_: word: XXXX; TYPE message: TEXT 3243* 3244* S: $as1 3245* 3246* T: In response to an operator word command. 3247* 3248* M: The operator issued the word command with no arguments, and 3249* the current values were typed. The login word is XXXX, the message 3250* is TEXT, and the type of session is TYPE. The TEXT is displayed as the 3251* first line of the greeting banner to interactive users making the banner 3 3252* lines long. If TEXT is "" (NO MESSAGE), then nothing is added to the normal 3253* 2 line greeting banner. 3254* 3255* A: Check the word, type, and message for accuracy. 3256* 3257* Message: 3258* admin_: word: length of login-word must not exceed 8 characters 3259* 3260* S: $as1 3261* 3262* T: In response to an operator word command. 3263* 3264* M: The operator tried to set the login word with the word 3265* command but the first argument was too long. No action was taken 3266* on the command. 3267* 3268* A: $tryagain 3269* 3270* Message: 3271* admin_: word: XXXX is a reserved word. 3272* 3273* S: $as1 3274* 3275* T: In response to an operator word command. 3276* 3277* M: The operator attempted to set the system login word to 3278* enter, enterp, e, ep, dial, or d. 3279* No action was taken. 3280* 3281* A: Pick another word and type it in. 3282* 3283* Message: 3284* admin_: word: message truncated; maximum length is CCCC characters 3285* 3286* S: $as1 3287* 3288* T: In response to an operator word command. 3289* 3290* M: The operator issued the command "word XXXX TEXT". The message 3291* TEXT was too long to fit in the dialup message buffer. 3292* The login word has been changed, and the dialup message 3293* has been set to the first CCCC characters of the given message. 3294* 3295* A: Reword the message to fit within the CCCC-character limit, 3296* and retype the command. 3297* 3298* Message: 3299* admin_: word: TYPE message: TEXT 3300* 3301* S: $as1 3302* 3303* T: In response to an operator word command. 3304* 3305* M: The operator issued the command "word XXXX TEXT". The login 3306* word was set to XXXX, and a special buffer was loaded with the 3307* message TEXT so that it is typed out whenever a user dials up. 3308* The type of system session is TYPE; this may be special, normal, 3309* or shutdown. 3310* 3311* A: Check the message for accuracy. 3312* 3313* Message: 3314* admin_: login: Entry not found. No MC ACS segment for the source SSSS. 3315* 3316* S: $as1 3317* 3318* T: In response to operator login command. 3319* 3320* M: An MC ACS was not found in >sc1>mc_acs directory for the source 3321* identifier, SSSS. 3322* 3323* A: $inform 3324* 3325* Message: 3326* admin_: login: ERROR_TABLE_MESSAGE Login not permitted for message coordinator source SSSS. 3327* 3328* S: $as1 3329* 3330* T: In response to operator login command. 3331* 3332* M: The error identified by ERROR_TABLE_MESSAGE was encountered 3333* attempting to check the access to login the daemon whose source identifier 3334* is SSSS. 3335* 3336* Message: 3337* admin_: COMMAND: ERROR_TABLE_MESSAGE 3338* 3339* S: $as1 3340* 3341* T: In response to operator command, COMMAND. 3342* 3343* M: The ERROR_TABLE_MESSAGE error was encounted when processing the 3344* operator command, COMMAND. 3345* 3346* A: Type "help COMMAND" for details of the command's usage. 3347* 3348* Message: 3349* admin_: abs: ERROR_TABLE_MESSAGE PATHNAME 3350* 3351* S: $as1 3352* 3353* T: In response to the operator abs command. 3354* 3355* M: The ERROR_TABLE_MESSAGE was encountered when trying to expand the 3356* PATHNAME supplied in the operator abs command line. 3357* 3358* A: $tryagain 3359* 3360* Message: 3361* admin_: login: error: Usage: login Person.Project SOURCE {-control_args} 3362* 3363* S: $as1 3364* 3365* T: In response to operator login command with no arguments. 3366* 3367* M: Informative message to operator when the login command was entered 3368* without arguments. 3369* 3370* A: Also type "help login" for further details of command line syntax. 3371* 3372* Message: 3373* admin_: logout: error: Usage: logout Person.Project {SOURCE} 3374* 3375* S: $as1 3376* 3377* T: In response to operator logout command when entered without 3378* arguments. 3379* 3380* M: Informative message indicating usage of the logout command. 3381* 3382* A: Type "help logout" for further details of command usage. 3383* 3384* Message: 3385* admin_: down: error: no system shutdown scheduled 3386* 3387* S: $as1 3388* 3389* T: In response to operator entering, "down 0". 3390* 3391* M: The "down 0" command line cancels a down but no system shutdown was 3392* scheduled. No action was taken. 3393* 3394* A: $ignore 3395* 3396* Message: 3397* admin_: down: error: XXX invalid clock time. 3398* 3399* S: $as1 3400* 3401* T: In response to an operator down command. 3402* 3403* M: The time arguments of a down command must be specified in 3404* 4-digit time or some form acceptable to convert_date_to_binary_. No action 3405* was taken. If the second time argument is an invalid time, it is considered 3406* part of the message. This message is also displayed if the first time 3407* argument is not in the future. 3408* 3409* A: $tryagain 3410* 3411* Message: 3412* admin_: down: error: uptime is earlier than downtime. 3413* 3414* S: $as1 3415* 3416* T: In response to an operator down command. 3417* 3418* M: The operator down command specifies that the expected time that the 3419* system will be up is before the time that it is scheduled to be shutdown. 3420* No action was taken. 3421* 3422* A: $tryagain 3423* 3424* Message: 3425* admin_: stop: error: no arguments are allowed for "stop" 3426* 3427* S: $as1 3428* 3429* T: In response to an operator stop command. 3430* 3431* M: The operator has given an argument to the stop 3432* command. No arguments are allowed. No action was taken. 3433* 3434* A: If abs stop was meant, type that command. If stop 3435* was meant, type that command instead. If "down ...." was meant, 3436* type in that command. 3437* 3438* Message: 3439* admin_: warn: error: Usage: warn Person.Project MESSAGE 3440* 3441* S: $as1 3442* 3443* T: In response to an operator warn command without any arguments. 3444* 3445* M: Informative message indicating usage of the warn command. 3446* 3447* A: Also, type "help warn" for more details on warn command usage. 3448* 3449* Message: 3450* admin_: rcp: error: unknown rcp command RRRR 3451* 3452* S: $as1 3453* 3454* T: In response to an operator rcp command. 3455* 3456* M: The operator has entered an unknown rcp operator on the command line. 3457* 3458* A: Type "help rcp" for further details on rcp command usage. 3459* 3460* Message: 3461* admin_: maxunits: error: XXX invalid value for maxunits 3462* 3463* S: $as1 3464* 3465* T: In response to an operator maxunits command. 3466* 3467* M: The argument of the maxunits command was not a number, or 3468* was zero, or negative. No action was taken. 3469* 3470* A: $tryagain 3471* 3472* Message: 3473* admin_: shift: error: XXXX is not a legal shift number. 3474* 3475* S: $as1 3476* 3477* T: In response to an operator shift command. 3478* 3479* M: A shift argument to the shift command was not a valid decimal number 3480* between 1 and 6 inclusive. 3481* 3482* A: $tryagain 3483* 3484* Message: 3485* admin_: shift: error: CCCC invalid clock time. 3486* 3487* S: $as1 3488* 3489* T: In response to an operator shift command. 3490* 3491* M: The time argument of the shift command is not a valid clock time 3492* acceptable to convert_date_to_binary_. 3493* 3494* A: $tryagain 3495* 3496* Message: 3497* admin_: shift: error: CCCC is not within the next week. 3498* 3499* S: $as1 3500* 3501* T: In response to an operator shift command. 3502* 3503* M: The time argument of the shift command cannot specify a time stamp 3504* that is over a week in the future. 3505* 3506* A: $tryagain 3507* 3508* Message: 3509* admin_: fdump_fnp: error: unknown argument AAAA 3510* 3511* S: $as1 3512* 3513* T: In response to an operator fdump_fnp command. 3514* 3515* M: An unknown argument, AAAA, was encountered in the fdump_fnp command. 3516* This is an obsolete command. No action was taken. 3517* 3518* A: Type "help dump_mpx" for details of the dump_mpx command and try 3519* again. 3520* 3521* Message: 3522* admin_: dump_fnp: error: unknown argument AAAA 3523* 3524* S: $as1 3525* 3526* T: In response to an operator dump_fnp command. 3527* 3528* M: An unknown argument, AAAA, was encountered in the dump_fnp command 3529* line. This is an obsolete command. No action was taken. 3530* 3531* A: Type "help dump_mpx" for details of the dump_mpx command and try 3532* again. 3533* 3534* Message: 3535* admin_: dump_mpx: error: unknown argument AAAA 3536* 3537* S: $as1 3538* 3539* T: In response to an operator dump_mpx command. 3540* 3541* M: An unknown argument, AAAA, was encountered in the dump_mpx command 3542* line. No action was taken. 3543* 3544* A: Type "help dump_mpx" for details of the dump_mpx command and try 3545* again. 3546* 3547* Message: 3548* admin_: load_fnp: unknown argument AAAA 3549* 3550* S: $as1 3551* 3552* T: In response to an operator load_fnp command. 3553* 3554* M: An unknown argument, AAAA, was encountered in the load_fnp command 3555* line. This is an obsolete command. No action was taken. 3556* 3557* A: Type "help load_mpx" for details of the load_mpx command and try 3558* again. 3559* 3560* Message: 3561* admin_: load_mpx: error: unknown argument AAAA 3562* 3563* S: $as1 3564* 3565* T: In response to an operator load_mpx command. 3566* 3567* M: An unknown argument, AAAA, was encountered in the load_mpx command 3568* line. No action was taken. 3569* 3570* A: Type "help load_mpx" for details of the load_mpx command and try 3571* again. 3572* 3573* Message: 3574* admin_: load_mpx: error: unknown argument AAAA 3575* 3576* S: $as1 3577* 3578* T: In response to an operator load_mpx command. 3579* 3580* M: An unknown argument, AAAA, was encountered in the load_mpx command 3581* line. No action was taken. 3582* 3583* A: Type "help load_mpx" for use of the load_mpx command and try again. 3584* 3585* Message: 3586* admin_: stop_fnp: error: unknown argument AAAA 3587* 3588* S: $as1 3589* 3590* T: In response to an operator stop_mpx command. 3591* 3592* M: An unknown argument, AAAA, was encountered in the stop_fnp command 3593* line. This is an obsolete command. No action was taken. 3594* 3595* A: Type "help stop_mpx" for details of the stop_mpx command and try 3596* again. 3597* 3598* Message: 3599* admin_: stop_mpx: error: unknown argument AAAA 3600* 3601* S: $as1 3602* 3603* T: In response to an operator stop_mpx command. 3604* 3605* M: An unknown argument, AAAA, was encountered in the stop_mpx command 3606* line. No action was taken. 3607* 3608* A: Type "help stop_mpx" for details of the stop_mpx command and try 3609* again. 3610* 3611* Message: 3612* admin_: shutdown_mpx: error: unknown argument AAAA 3613* 3614* S: $as1 3615* 3616* T: In response to an operator shutdown_mpx command. 3617* 3618* M: An unknown argument, AAAA, was encountered in the shutdown_mpx 3619* command line. No action was taken. 3620* 3621* A: The shutdown_mpx command is the same as the dump_mpx command except 3622* that no dump is created. Type "help dump_mpx" for command usage details 3623* and try again. 3624* 3625* Message: 3626* admin_: abs: error: unknown absentee command WXYZ 3627* 3628* S: $as1 3629* 3630* T: $response 3631* 3632* M: The operator typed abs WXYZ where WXYZ was 3633* unrecognizable to the system. No action was taken. 3634* 3635* A: $tryagain 3636* 3637* Message: 3638* admin_: abs: error: The abs CCCC command can not be used before answering service startup. 3639* 3640* S: $as1 3641* 3642* T: In response to an operator abs command. 3643* 3644* M: Only the "abs stop" command may be given before the answering service 3645* starts up. This allows the operator to stop the absentee facility before 3646* the system finishes initialzation. 3647* 3648* A: $tryagain 3649* 3650* Message: 3651* admin_: abs: stop: error: abs stop queue only works after answering service startup 3652* 3653* S: $as1 3654* 3655* T: In response to an operator abs stop queue command. 3656* 3657* M: The answering service must complete initialization before the 3658* "abs stop queue" command can be used. 3659* 3660* A: Allow the system to complete initialization and try again. 3661* 3662* Message: 3663* admin_: abs: stop: error: missing argument: queue to be stopped 3664* 3665* S: $as1 3666* 3667* T: In response to an operator "abs stop queue" command. 3668* 3669* M: The "abs stop queue" command was entered without supplying the number 3670* of the queue to be stopped. 3671* 3672* A: $tryagain 3673* 3674* Message: 3675* admin_: abs: stop: error: invalid queue to be stopped: DDDD 3676* 3677* S: $as1 3678* 3679* T: In response to an operator "abs stop queue" command. 3680* 3681* M: The value of the queue number was not within the values of 1 and 4, 3682* inclusive. 3683* 3684* A: $tryagain 3685* 3686* Message: 3687* admin_: abs: stop: error: unknown argument SSSS 3688* 3689* S: $as1 3690* 3691* T: In response to an operator "abs stop" command. 3692* 3693* M: An unknown argument, SSSS, was supplied to the "abs stop" command. 3694* 3695* A: Type "help abs" for details of the abs command and try again. 3696* 3697* Message: 3698* admin_: abs: stop: error: absentee stop in progress 3699* 3700* S: $as1 3701* 3702* T: $response 3703* 3704* M: An abs start, abs stop, abs maxu, abs maxq, or 3705* down command was issued while the absentee facility was in the 3706* process of shutting down. 3707* 3708* A: Wait for the message that all absentee processes have 3709* run to completion, then reissue the command. 3710* 3711* Message: 3712* admin_: abs: ABS_FUNCT: error: No job in absentee slot X (status= SSSS). 3713* 3714* S: $as1 3715* 3716* T: $response 3717* 3718* M: The absentee slot absX has an entry status of SSSS indicating that no 3719* user is using it. 3720* 3721* A: $tryagain 3722* 3723* Message: 3724* admin_: abs: ABS_FUNCT: error: Job in absentee slot X is not from user NAME.PROJ 3725* 3726* S: $as1 3727* 3728* T: $response 3729* 3730* M: The job running in specified absentee slot of absX is not from 3731* specified user, NAME.PROJ. 3732* 3733* A: Recheck job specifications and try again. 3734* 3735* Message: 3736* admin_: abs: ABS_FUNCT: error: Job in absentee slot X does not match request ID YYYY 3737* 3738* S: $as1 3739* 3740* T: $response 3741* 3742* M: The ID of the job running in specified absentee slot of absX does not 3743* match the specified ID of YYYY. 3744* 3745* A: Recheck job specifications and try again. 3746* 3747* Message: 3748* admin_: abs: ABS_FUNCT: error: Job in absentee slot X does not match absin path DIR_PATH>ENTRY_NAME 3749* 3750* S: $as1 3751* 3752* T: $response 3753* 3754* M: The pathname of the absin of the job running in specified absentee 3755* slot of absX does not match the specified absin pathname. 3756* 3757* A: Recheck job specifications and try again. 3758* 3759* Message: 3760* admin_: abs: ABS_FUNCT: error: Job in absentee slot X does not match absin entry name SSSS 3761* 3762* S: $as1 3763* 3764* T: $response 3765* 3766* M: The entry name SSSS of the absin of the job running in specified 3767* absentee slot of absX does not match the specified absin entry name. 3768* 3769* A: Recheck job specifications and try again. 3770* 3771* Message: 3772* admin_: abs: ABS_FUNCT: error: Job in absentee slot X is not from sender SSSS 3773* 3774* S: $as1 3775* 3776* T: $response 3777* 3778* M: The sender of the absin of the job running in specified 3779* absentee slot of absX does not match the specified sender, SSSS. 3780* 3781* A: Recheck job specifications and try again. 3782* 3783* Message: 3784* admin_: abs: ABS_FUNCT: error: Job in absentee slot X is not from queue DDDD 3785* 3786* S: $as1 3787* 3788* T: $response 3789* 3790* M: The queue of the absin of the job running in specified 3791* absentee slot of absX does not match the queue number DDDD. 3792* 3793* A: Recheck job specifications and try again. 3794* 3795* Message: 3796* admin_: abs: release: error: Job in absentee slot X is not suspended. 3797* 3798* S: $as1 3799* 3800* T: $response 3801* 3802* M: The specified job running in 3803* absentee slot of absX is not suspended so a release does not apply. 3804* 3805* A: Recheck job specifications and try again. 3806* 3807* Message: 3808* admin_: abs: suspend: error: Job in absentee slot X is already suspended. 3809* 3810* S: $as1 3811* 3812* T: $response 3813* 3814* M: The specified job running in 3815* absentee slot of absX is already suspended and cannot be suspended again. 3816* 3817* A: Recheck job specifications and try again. 3818* 3819* Message: 3820* admin_: abs: release: error: Selection arguments matched no deferred or suspended absentee requests. 3821* 3822* S: $as1 3823* 3824* T: $response 3825* 3826* M: No suspended or deferred job was found to release with the arguments 3827* supplied on the abs release command line. 3828* 3829* A: Recheck job specifications and try again. 3830* 3831* Message: 3832* admin_: abs: ABS_FUNCT: error: Selection arguments matched no running absentee jobs. 3833* 3834* S: $as1 3835* 3836* T: $response 3837* 3838* M: No running job was found that matched the selection arguments 3839* supplied on the abs command line. 3840* 3841* A: Recheck job specifications and try again. 3842* 3843* Message: 3844* admin_: abs: start: error: system coming down soon: no abs start 3845* 3846* S: $as1 3847* 3848* T: $response 3849* 3850* M: The system is shutting down within 30 minutes so the absentee 3851* facility will not be started. 3852* 3853* A: $ignore 3854* 3855* Message: 3856* admin_: abs: start: error: absentee already up 3857* 3858* S: $as1 3859* 3860* T: In response to an operator abs start command. 3861* 3862* M: abs start was typed twice. No action was taken on the second 3863* issuance of the command. 3864* 3865* A: $ignore 3866* 3867* Message: 3868* admin_: abs: start: error: absentee not up. cannot restart queue X 3869* 3870* S: $as1 3871* 3872* T: $response 3873* 3874* M: Cannot use the "abs start queue" command until the absentee facility 3875* has been started. 3876* 3877* A: Issue the "abs start" command and try again. 3878* 3879* Message: 3880* admin_: abs: start: error: invalid queue to be restarted X 3881* 3882* S: $as1 3883* 3884* T: $response 3885* 3886* M: An invalid queue number was specified in an operator 3887* "abs start queue" command line. It must be between 1 and 4 inclusive. 3888* 3889* A: $tryagain 3890* 3891* Message: 3892* admin_: abs: ABS_FUNCT: error: absentee not up 3893* 3894* S: $as1 3895* 3896* T: $response 3897* 3898* M: An abs command was given, but 3899* the absentee facility had never been started up. No action was 3900* taken on the command. 3901* 3902* A: Type abs start to start up the absentee facility. 3903* 3904* Message: 3905* admin_: abs: qres: error: abs qres has invalid value: DDDD 3906* 3907* S: $as1 3908* 3909* T: $response 3910* 3911* M: An invalid qres argument was detected in an operator "abs qres" 3912* command. The argument must be "auto" or a positive decimal number. 3913* 3914* A: $tryagain 3915* 3916* Message: 3917* admin_: abs: cpu_limit: error: Usage is: "abs cpu_limit l1,l2,l3,l4" (limits in seconds) 3918* 3919* S: $as1 3920* 3921* T: $response 3922* 3923* M: Informative message that is displayed when an operator 3924* "abs cpu_limit" command without arguments is entered. 3925* 3926* A: $tryagain 3927* 3928* Message: 3929* admin_: abs: list: error: The absN argument cannot be used when absentee is not up. 3930* 3931* S: $as1 3932* 3933* T: $reponse 3934* 3935* M: Cannot use the "absN" argument to select absentee jobs to list until 3936* the absentee facility has been started. 3937* 3938* A: Use other job selection criteria or type "abs start" and try again. 3939* 3940* Message: 3941* admin_: abs: list: error: No job in absentee slot X. 3942* 3943* S: $as1 3944* 3945* T: $response 3946* 3947* M: The absentee slot absX does not exist. 3948* 3949* A: $tryagain 3950* 3951* Message: 3952* admin_: COMMAND: error: No FNP tag specified. 3953* 3954* S: $as1 3955* 3956* T: Response to an operator "load_fnp", "fdump_fnp", "dump_fnp", 3957* "start_fnp", or "stop_fnp" command. 3958* 3959* M: The operator did not supply an FNP identifier. 3960* 3961* A: $tryagain 3962* 3963* Message: 3964* admin_: COMMAND: error: No multiplexer specified. 3965* 3966* S: $as1 3967* 3968* T: Response to an operator "load_mpx", "dump_mpx", "start_mpx", 3969* "shutdown_mpx" or "stop_mpx" command. 3970* 3971* M: The operator did not supply a multiplexer name. 3972* 3973* A: $tryagain 3974* 3975* Message: 3976* admin_: COMMAND: error: Invalid FNP tag: X 3977* 3978* S: $as1 3979* 3980* T: Response to an operator "load_fnp", "fdump_fnp", "dump_fnp", 3981* "start_fnp", or "stop_fnp" command. 3982* 3983* M: The supplied FNP tag was more than one character or was not between 3984* a-h inclusive. 3985* 3986* A: $tryagain 3987* 3988* Message: 3989* admin_: abs: maxu: error: abs maxusers must be numeric or "auto": SSSS 3990* 3991* S: $as1 3992* 3993* T: $response 3994* 3995* M: The argument, SSSS, to the operator "abs maxu" command was not a 3996* positive numeric or the string, "auto". The numeric value is in tenths 3997* of a load unit. 3998* 3999* A: $tryagain 4000* 4001* Message: 4002* admin_: abs: maxu: error: abs maxusers may not be negative: SSSS 4003* 4004* S: $as1 4005* 4006* T: $response 4007* 4008* M: The argument, SSSS, to the operator "abs maxu" command was not a 4009* positive numeric or the string, "auto". The numeric value is in tenths 4010* of a load unit. 4011* 4012* A: $tryagain 4013* 4014* Message: 4015* admin_: abs: maxu: error: abs maxusers may not be greater than system maxusers: SSSS 4016* 4017* S: $as1 4018* 4019* T: $response 4020* 4021* M: The argument, SSSS, to the operator "abs maxu" command cannot 4022* be greater than the maximum allowed users that can be on the system. 4023* 4024* A: $tryagain 4025* 4026* Message: 4027* admin_: abs: maxq: error: abs maxqueue has invalid value: XXX 4028* 4029* S: $as1 4030* 4031* T: $response 4032* 4033* M: An abs maxq or abs start command had as an argument 4034* something that was not a number, or was too big, or was a negative 4035* number. No action is taken. 4036* 4037* A: $tryagain 4038* 4039* Message: 4040* admin_: abs: ABS_FUNCT: error: More than one specification of an attribute is present: SSSS 4041* 4042* S: $as1 4043* 4044* T: $response 4045* 4046* M: The SSSS attribute has already been specified to select an 4047* absentee job on the operator abs command. An attribute can only be 4048* used once. 4049* 4050* A: $tryagain 4051* 4052* Message: 4053* admin_: abs: ABS_FUNCT: error: Invalid abs job selection argument: SSSS 4054* 4055* S: $as1 4056* 4057* T: $response 4058* 4059* M: The job selection argument SSSS is not recognized as valid. 4060* 4061* A: Type "help abs" for details of the abs command usage and try again. 4062* 4063* Message: 4064* admin_: abs: ABS_FUNCT: Invalid queue number DDDD 4065* 4066* S: $as1 4067* 4068* T: $response 4069* 4070* M: The value after the -queue job selection argument is invalid. 4071* It must be the strings "fg" or "foreground" or a between the values of 4072* 1 and 4, inclusive. 4073* 4074* A: $tryagain 4075* 4076* Message: 4077* admin_: abs: ABS_FUNCT: error: Relative pathnames not allowed: SSSS 4078* 4079* S: $as1 4080* 4081* T: $response 4082* 4083* M: The pathname of the absin was expected and it must be an absolute 4084* pathname, starting with a ">" character. 4085* 4086* A: $tryagain 4087* 4088* Message: 4089* admin_: abs: ABS_FUNCT: No job selection arguments given. 4090* 4091* S: $as1 4092* 4093* T: $response 4094* 4095* M: After processing the arguments on the "abs abs_funct" operator 4096* command, no job selection arguments were encountered. 4097* 4098* A: Type "help abs" for details of the abs command usage and try again. 4099* 4100* Message: 4101* admin_: abs: ABS_FUNCT: error: User name must be given. 4102* 4103* S: $as1 4104* 4105* T: $response 4106* 4107* M: The "abs ABS_FUNCT" operator command requires that a user name be 4108* supplied. 4109* 4110* A: $tryagain 4111* 4112* Message: 4113* admin_: abs: ABS_FUNCT: error: User name (not ""*"") must be given. 4114* 4115* S: $as1 4116* 4117* T: $response 4118* 4119* M: The "abs ABS_FUNCT" operator command requires that a user name be 4120* supplied. Cannot use "*". 4121* 4122* A: $tryagain 4123* 4124* Message: 4125* admin_: abs: ABS_FUNCT: error: The absN argument is not valid. 4126* 4127* S: $as1 4128* 4129* T: $response 4130* 4131* M: The "abs ABS_FUNCT" operator command cannot allow use of the absN 4132* argument for job selection. 4133* 4134* A: $tryagain 4135* 4136* Message: 4137* admin_: abs: ABS_FUNCT: error: Personid NAME > 22 characters. 4138* 4139* S: $as1 4140* 4141* T: $response 4142* 4143* M: The "abs ABS_FUNCT" operator command specified a user name that is 4144* longer than 22 characters. 4145* 4146* A: $tryagain 4147* 4148* Message: 4149* admin_: abs: ABS_FUNCT: error: SSSS is not a valid Person.Project. 4150* 4151* S: $as1 4152* 4153* T: $response 4154* 4155* M: The "abs ABS_FUNCT" operator command did not specify a valid 4156* Person.Project in the string SSSS. 4157* 4158* A: $tryagain 4159* 4160* Message: 4161* admin_: abs: ABS_FUNCT: error: Projectid SSSS is longer than 9 characters. 4162* 4163* S: $as1 4164* 4165* T: $response 4166* 4167* M: The "abs ABS_FUNCT" operator command incorrectly specified a 4168* project name that is longer than 9 characters. 4169* 4170* A: $tryagain 4171* 4172* END MESSAGE DOCUMENTATION */ 4173 4174 end admin_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1917.6 admin_.pl1 >udd>sm>ds>w>ml>admin_.pl1 2719 1 02/02/82 2245.0 abs_args.incl.pl1 >ldd>incl>abs_args.incl.pl1 2720 2 08/06/87 1013.4 absentee_user_table.incl.pl1 >ldd>incl>absentee_user_table.incl.pl1 2721 3 08/06/87 1013.0 answer_table.incl.pl1 >ldd>incl>answer_table.incl.pl1 2722 4 08/06/87 1013.4 as_data_.incl.pl1 >ldd>incl>as_data_.incl.pl1 2723 5 08/06/87 1013.4 as_data_definitions_.incl.pl1 >ldd>incl>as_data_definitions_.incl.pl1 2724 6 01/21/85 1012.2 as_wakeup_priorities.incl.pl1 >ldd>incl>as_wakeup_priorities.incl.pl1 2725 7 09/09/75 2107.3 author_dcl.incl.pl1 >ldd>incl>author_dcl.incl.pl1 7-10 8 04/21/82 1311.8 author.incl.pl1 >ldd>incl>author.incl.pl1 2726 9 08/06/87 1013.0 cdt.incl.pl1 >ldd>incl>cdt.incl.pl1 9-314 10 07/21/88 2136.0 fnp_types.incl.pl1 >ldd>incl>fnp_types.incl.pl1 2727 11 08/06/87 1012.9 daemon_user_table.incl.pl1 >ldd>incl>daemon_user_table.incl.pl1 2728 12 08/06/87 1013.4 dialup_values.incl.pl1 >ldd>incl>dialup_values.incl.pl1 2729 13 08/06/87 1013.4 installation_parms.incl.pl1 >ldd>incl>installation_parms.incl.pl1 13-148 14 11/21/79 1558.3 rcp_init_flags.incl.pl1 >ldd>incl>rcp_init_flags.incl.pl1 2730 15 08/06/87 1013.5 sc_stat_.incl.pl1 >ldd>incl>sc_stat_.incl.pl1 2731 16 08/06/87 1013.5 sc_subsystem_info_.incl.pl1 >ldd>incl>sc_subsystem_info_.incl.pl1 2732 17 08/06/87 1013.5 sys_log_constants.incl.pl1 >ldd>incl>sys_log_constants.incl.pl1 2733 18 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>incl>user_attributes.incl.pl1 18-112 19 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>incl>user_abs_attributes.incl.pl1 2734 20 07/14/88 2115.0 user_table_entry.incl.pl1 >ldd>incl>user_table_entry.incl.pl1 2735 21 08/06/87 1013.6 user_table_header.incl.pl1 >ldd>incl>user_table_header.incl.pl1 2736 22 01/18/85 1053.2 whotab.incl.pl1 >ldd>incl>whotab.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. CAPITALS 000020 constant char(26) initial packed unaligned dcl 274 ref 2186 2239 DIGITS 000122 constant char(10) initial packed unaligned dcl 259 ref 464 481 713 2153 ENTRY constant fixed bin(17,0) initial dcl 2054 ref 2080 2114 ID constant fixed bin(17,0) initial dcl 2052 ref 2078 2112 ME 000120 constant char(6) initial packed unaligned dcl 260 set ref 445* 450* 505* 538* 579* 589* 628* 643* 664* 671* 1072* 1082* 1123* 1428* 1437* 1439* 1440* 1441* 1545* 1575* 1620* 1639* 1652* 1681* 1843* 1855* 1862* 1869* 1968* 1994* 1997* 2015* 2029* 2390* 2408* 2421* 2522* 2598* 2606* 2615* 2627* 2701* MILLION 000116 constant fixed bin(35,0) initial dcl 261 ref 1398 2387 2516 NL constant char(1) initial packed unaligned dcl 262 ref 2705 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 12-76 ref 1730 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 12-76 ref 569 1196 1990 2475 2483 2490 ONE_WEEK 000114 constant fixed bin(71,0) initial dcl 264 ref 721 P_action_flag parameter bit(1) dcl 2011 set ref 2005 2030* P_code parameter fixed bin(35,0) dcl 2544 set ref 2537 2550* P_down_until_time parameter fixed bin(71,0) dcl 2504 ref 2496 2511 P_message parameter char packed unaligned dcl 2543 set ref 2537 2549* P_new_arg_index parameter fixed bin(17,0) dcl 2301 set ref 2293 2311 2316* 2319* 2348* 2348 2349* 2361* 2361 P_shutdown_reason parameter char packed unaligned dcl 2503 ref 2496 2508 2510 P_shutdown_time parameter fixed bin(71,0) dcl 2501 ref 2496 2507 QUEUE constant fixed bin(17,0) initial dcl 2058 ref 2084 2128 SECS_IN_MIN constant fixed bin(17,0) initial dcl 265 ref 1997 1997 SENDER constant fixed bin(17,0) initial dcl 2056 ref 2082 2121 SHUTDOWN_PRIO 000272 constant fixed bin(17,0) initial dcl 6-27 set ref 2385* 2454* 2514* SL_LOG 000300 constant fixed bin(17,0) initial dcl 17-14 set ref 445* 450* 505* 538* 579* 589* 643* 664* 671* 735* 960* 1072* 1082* 1123* 1428* 1437* 1439* 1440* 1441* 1545* 1575* 1620* 1639* 1652* 1681* 1778* 1782* 1790* 1968* 1994* 1997* 2015* 2029* 2071* 2390* 2408* 2421* 2522* 2598* 2606* 2615* 2627* 2701* SL_LOG_BEEP 000270 constant fixed bin(17,0) initial dcl 17-14 set ref 1843* 1855* 1862* 1869* SL_LOG_SILENT 000027 constant fixed bin(17,0) initial dcl 17-14 set ref 628* USER constant fixed bin(17,0) initial dcl 2049 ref 2076 2110 UTE_SIZE constant fixed bin(17,0) initial dcl 3-120 ref 568 568 1989 1989 2489 2489 a_ix parameter fixed bin(17,0) dcl 2302 ref 2293 2311 2316 abs_arg_ptr 000746 automatic pointer dcl 314 set ref 968* 1183 1183 1186 1186 1196 1207 1207 1207 1207 1207 1207 1214 1214 1223 1223 1223 1228 1237 1237 1241 1243 1243 1243 1248 1248 1248 1258 1260 1262 1265 1274 1274 1274 1274 1274 1274 1281 1289 1301 1325 1325 1329* 1701* 1772* 2061 2088 2096 2097 2116 2118 2119 2123 2125 2126 2130 2132 2133 2138 2151 2151 2155 2157 2160 2166 2168 2169 2169 2194 2194 2196 2197 2197 2197 2212 2214 2215 2226 2228 2229 2230 2231 2231 2233 2243 2248 2248 2262 2270 2275 2282 abs_args based structure level 1 dcl 1-10 set ref 2061* abs_command 000033 constant char(12) initial array packed unaligned dcl 267 ref 978 978 981 abs_cpu_limit_auto 56(04) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 1513* 1652* 1659* 1686* abs_event 50 based fixed bin(71,0) level 2 dcl 22-10 set ref 1319* 1375* abs_funct 000613 automatic char(12) packed unaligned dcl 297 set ref 973* 978 987 990* 996 1178 1183 1289 1301 1325 abs_maxq_auto 56(02) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 1418* 1575* 1582* 1917* abs_maxu_auto 56(01) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 1416* 1545* 1552* 1890* 2447 2448* 2582* abs_procid 52 based bit(36) level 2 dcl 22-10 set ref 1319* 1375* abs_qres_auto 56(03) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 1513* 1620* 1625* 1631* abs_shut_interval constant fixed bin(17,0) initial dcl 252 ref 1010 1398 2387 2419 abs_shut_offset constant fixed bin(17,0) initial dcl 253 ref 2387 abs_star_sw 0(07) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1183 1325 2151 2160* abs_start_at_startup 000657 automatic bit(1) dcl 308 set ref 1405* 1490* 1516 1524 abs_stop_chn 000016 internal static fixed bin(71,0) dcl 250 set ref 1083* 1085* 1394* 2384* 2385* 2388* 2410* 2430* 2454* 2563* abs_stopped 56(12) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 999* 1061 1071* 1118 1389 1396* 1448 1510* 1538 1568 2403 2446* 2565 2581* abs_up 56(11) based bit(1) level 3 packed packed unaligned dcl 2-28 set ref 999* 1061 1068 1118 1172 1389 1396* 1410 1448 1486 1509* 1530 1565 1594 1648 1696 1715 1767 2412* 2524 2560 absentee_user_manager_$aum_abs_run 000024 constant entry external dcl 171 ref 1772 absentee_user_manager_$init_aum 000026 constant entry external dcl 172 ref 1505 absentee_user_manager_$term_aum 000030 constant entry external dcl 173 ref 1074 1395 2411 absentee_user_manager_$update_whotab_abs_control 000032 constant entry external dcl 174 ref 1118 1786 2413 2427 2528 absentee_utility_$abs_defer 000034 constant entry external dcl 175 ref 1701 absentee_utility_$abs_release 000036 constant entry external dcl 176 ref 1329 absentee_utility_$au_send_wakeup 000040 constant entry external dcl 177 ref 1524 absn_ok parameter bit(1) dcl 2259 ref 2256 2282 absn_sw 0(06) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1183 1186 1196 1207 1223 1243 1262 1274 1289 1301 1325 2151 2155* 2282 absolute_max_queue constant fixed bin(17,0) initial dcl 251 ref 1038 1468 1913 act_ctl_$shift_cmnd_update 000042 constant entry external dcl 178 ref 739 action_flag 000612 automatic bit(1) dcl 296 set ref 564* 574* 589 1990* 1994 active based fixed bin(17,0) level 2 dcl 20-78 set ref 569 1196 1199* 1730 1732* 1990 2475 2483 2490 addr builtin function dcl 241 ref 568 968 974 1195 1368 1729 1989 2474 2482 2489 2598 2610 2610 2613 2637 2640 adjust_abs_q_no 431(05) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 1274 1739 admin_$abs 000044 constant entry external dcl 179 ref 2425 admin_$absentee_down 000046 constant entry external dcl 180 ref 2385 2385 admin_$absentee_off 000050 constant entry external dcl 181 ref 2454 2454 admin_$timed_stop_command 000054 constant entry external dcl 183 ref 2514 2514 after builtin function dcl 241 ref 2230 2325 an parameter fixed bin(17,0) dcl 1932 in procedure "build_string" ref 1927 1936 an 001264 automatic fixed bin(17,0) dcl 2044 in procedure "parse_abs_args" set ref 2062* 2063* 2178* 2235 2244* 2244 ansp 001176 automatic pointer initial dcl 3-53 set ref 567 568 643 643 643 643 649 650 653 654 667 668 671 671 671 671 737 3-53* 1848* 1886 1968 1988 1989 2488 2489 2597 2598 2598 2598 2598 2618 2624 2626 2631 2633 2637 2640 2645 2648 2649 2654 2657 2679 2686 2688 2688 2691 2693 2697 2699 2701 2701 2701 2701 2701 2703 2703 2703 2705 2705 2713 anstbl based structure level 1 dcl 3-55 answer 000505 automatic char(256) initial packed unaligned dcl 292 set ref 292* 340* 355* 357* 383* 449* 450* 458* 468* 490* 506* 522* 558* 613* 660* 707* 717* 722* 782* 833* 922* 983* 990* 1018* 1026* 1045* 1054* 1063* 1199* 1214* 1228* 1248* 1265* 1281* 1293* 1305* 1333* 1340* 1349* 1354* 1401* 1412* 1450* 1479* 1533* 1612* 1667* 1717* 1725* 1732* 1778* 1782* 1790* 1804* 1806* 1816* 1895* 1897* 1899* 1921* 2090* 2101* 2141* 2173* 2180* 2264* 2272* 2277* 2285* 2330* 2337* 2357* arg based char packed unaligned dcl 321 set ref 350 389 417 455 464 464 466* 468 481 481 484* 608 610 613 647 660 697 707 713 713 715* 717 722 778 782 824 824 826 826 826 829 833 918 922 973 983 1008 1014 1014 1029 1031 1031 1035* 1045 1054 1422 1422 1450 1453 1459 1459 1464* 1479 1488 1495* 1501* 1550 1556* 1580 1588* 1605* 1608 1612 1623 1641 1657 1665 1674 1677 1677 1689 1712 1712 1721 1811 1940 1947 2067 2076 2078 2080 2080 2082 2084 2084 2086 2086 2090 2101 2104 2119 2126 2133 2133 2137 2141 2149 2153 2153 2156 2160 2164 2169* 2173 2180 2184 2186 2186 2215 2229 2230 2239 2239 2243 2322 2324 2325 2337* 2344 2352 2610 2615* 2618 arg_count 000605 automatic fixed bin(17,0) dcl 293 set ref 338 1873* arg_list_ptr parameter pointer dcl 2224 in procedure "get_user" set ref 2222 2235* arg_list_ptr parameter pointer dcl 1930 in procedure "build_string" set ref 1927 1937* 1944* arg_list_ptr parameter pointer dcl 2042 in procedure "parse_abs_args" set ref 2039 2063* 2110* 2186* arg_list_ptr 000606 automatic pointer dcl 294 in procedure "admin_" set ref 334* 345* 348* 362* 364* 376* 381* 387* 399* 409* 414* 427* 439* 443* 475* 495* 498* 517* 520* 535* 551* 555* 562* 602* 606* 624* 627* 637* 641* 688* 695* 711* 764* 775* 805* 821* 858* 888* 904* 915* 948* 966* 969* 1004* 1023* 1098* 1113* 1177* 1365* 1406* 1424* 1497* 1541* 1571* 1602* 1651* 1699* 1709* 1748* 1753* 1760* 1770* 1801* 1873* 2590* 2593* 2619* 2623* arg_list_ptr parameter pointer dcl 2303 in procedure "get_pers_proj" set ref 2293 2311 2319* 2349* arg_switches based structure level 2 dcl 1-10 set ref 2262 argno parameter fixed bin(17,0) dcl 1799 set ref 1796 1801* as_data_$ansp 000226 external static pointer dcl 4-26 set ref 1837 1839* 1841 1848 as_data_$as_procid 000230 external static bit(36) dcl 4-27 set ref 1840* 1840 as_data_$autp 000232 external static pointer dcl 4-31 ref 1849 2480 as_data_$cdtp 000234 external static pointer dcl 4-33 ref 1866 1866 1868 1868 1869 1869 as_data_$dutp 000236 external static pointer dcl 4-37 ref 1850 2472 as_data_$login_words 000246 external static fixed bin(17,0) dcl 4-77 set ref 2610 2610 2613 2637 2640 as_data_$rs_ptrs 000240 external static pointer array dcl 4-49 ref 1859 1859 1861 1861 1862 1862 1997 1997 1997 1997 2023 2023 2516 2516 as_data_$sysdir 000242 external static char(168) packed unaligned dcl 4-54 set ref 956 956 960 960 1835* 1839 1839 1843 1843 1854 1854 1855 1855 1861 1861 1862 1862 1868 1868 1869 1869 as_data_$whoptr 000244 external static pointer dcl 4-60 ref 416 416 417 417 448 448 449 449 450 450 504 504 669 669 700 700 701 701 701 701 726 726 729 729 734 734 735 735 737 737 738 738 1319 1319 1319 1319 1375 1375 1375 1375 1398 1398 1852 1852 1854 1854 1855 1855 1892 1892 1965 1965 1974 1974 1978 1978 2387 2387 2444 2444 2507 2507 2508 2508 2508 2508 2510 2510 2511 2511 2516 2516 2521 2521 2547 2547 2556 2556 2557 2557 2558 2558 2559 2559 2583 2583 2645 2645 2654 2654 2661 2661 2665 2665 2670 2670 2672 2672 2693 2693 as_data_login_words based structure level 1 dcl 4-77 as_error_table_$special_sess_msg 000214 external static fixed bin(35,0) dcl 233 set ref 2684* as_error_table_$sys_down_msg 000216 external static fixed bin(35,0) dcl 234 set ref 1972* 2659* as_error_table_$try_again_at_msg 000212 external static fixed bin(35,0) dcl 232 set ref 1979* 2674* as_procid defined bit(36) dcl 5-17 set ref 1840* asu_$blast_user 000056 constant entry external dcl 184 ref 577 2017 asu_$bump_user 000052 constant entry external dcl 182 ref 2023 at 100 based structure level 2 dcl 20-78 attchan 000626 automatic char(32) packed unaligned dcl 301 set ref 350* 353* 355 357 366* aut_index 115 based fixed bin(17,0) level 2 dcl 1-10 set ref 1186 2157* autbl based structure level 1 dcl 2-28 author based structure level 2 dcl 7-9 author_dcl based structure level 1 dcl 7-9 auto_abs_args 001052 automatic structure level 1 dcl 320 set ref 968 auto_bump_chn 000012 internal static fixed bin(71,0) dcl 248 set ref 2513* 2514* 2516* 2554* auto_maxu 133 based fixed bin(17,0) level 2 dcl 3-55 set ref 643 649* 653* 668* 671 autp 001174 automatic pointer initial dcl 2-26 set ref 954 956* 958 999 999 1029 1031 1038 1061 1061 1068 1071 1118 1118 1172 1191 1195 1347 1368 1368 1372 1389 1389 1392 1396 1396 1410 1416 1418 1428 1428 1434 1440 1441 1448 1448 1455 1456 1470 1471 1486 1509 1510 1511 1512 1513 1513 1524 1530 1538 1545 1545 1552 1565 1568 1575 1575 1582 1594 1620 1620 1625 1631 1632 1635 1635 1648 1652 1652 1659 1677 1681 1681 1686 1696 1715 1723 1729 1767 2-26* 1849* 1890 1891 1917 1918 2403 2406 2412 2442 2444 2446 2447 2448 2480* 2481 2482 2524 2524 2560 2560 2565 2581 2582 2583 available_slots_ 000060 constant entry external dcl 185 ref 1635 b12 000662 automatic bit(12) packed unaligned dcl 310 set ref 2695* 2696* based_anstbl_message based char packed unaligned dcl 327 set ref 2598* before builtin function dcl 241 ref 2229 2230 2324 bf based fixed bin(71,0) dcl 322 set ref 1319* 1375* c4 000663 automatic char(4) packed unaligned dcl 311 set ref 2696* 2697 cancel_abs_request$as_abs 000210 constant entry external dcl 229 ref 1365 1753 1760 cdte based structure level 1 dcl 9-72 channel_threads based structure level 1 dcl 9-249 check_sw 000636 automatic bit(1) dcl 303 set ref 816* 824* 839* clock builtin function dcl 241 ref 472 692 1398 2667 2667 2694 2713 clock_value 000120 automatic fixed bin(71,0) dcl 283 set ref 477* 481* 484* 486* 489 509* 692* 701* 721 721 738 code 000110 automatic fixed bin(35,0) dcl 279 in procedure "admin_" set ref 345* 346 348* 349 353* 354 355 362* 363 381* 382 387* 388 414* 415 443* 444 458* 459 464* 466* 467 475* 476 481* 484* 485 495* 496 555* 556 577* 579 606* 607 641* 642 657* 658 695* 696 705* 706 711* 712 713* 715* 716 773* 774 775* 776 788* 818* 820 821* 822 839* 867* 868 871* 897* 913* 914 915* 916 928* 956* 960* 966* 969* 971 1004* 1006 1023* 1024 1035* 1036 1040* 1043 1085* 1241* 1243 1260* 1262 1319* 1365* 1366 1375* 1394* 1406* 1408 1424* 1426 1461* 1464* 1466 1474* 1477 1497* 1499 1505* 1506 1541* 1543 1571* 1573 1599* 1601 1602* 1603 1605* 1606 1651* 1652 1709* 1710 1753* 1760* 1778* 1801* 1802 1839* 1843* 1854* 1855* 1861* 1862* 1868* 1869* 1885* 1886 1895 1912* 1913 1937* 1938 1944* 1945 2023* 2063* 2064 2138* 2139 2169* 2171 2235* 2237 2410* 2454* 2593* 2595 2619* 2621 code parameter fixed bin(35,0) dcl 2304 in procedure "get_pers_proj" set ref 2293 2311 2319* 2320 2349* 2350 comname 000272 automatic char(24) packed unaligned dcl 286 set ref 335* 377* 400* 410* 429* 440* 518* 536* 552* 603* 625* 638* 689* 759* 765* 800* 807* 853* 860* 883* 890* 906* 950* 996* 1100* 1115* 1778* 1782* 1790* 2015* 2071* continue 000750 automatic bit(1) dcl 315 set ref 566* 567 583* 1985* 1988 control 56 based structure level 2 dcl 2-28 convert_date_to_binary_ 000062 constant entry external dcl 186 ref 464 466 481 484 713 715 convert_status_code_ 000064 constant entry external dcl 187 ref 1972 1979 2659 2674 2684 cpu_limit 44 based fixed bin(35,0) array level 2 dcl 2-28 set ref 1652* 1677* 1681 1681* ctl_arg_given 001273 automatic bit(1) initial dcl 2047 set ref 2047* 2105* 2178 cu_$arg_count_rel 000074 constant entry external dcl 191 ref 520 966 1873 cu_$arg_list_ptr 000066 constant entry external dcl 188 ref 334 376 399 401 401 409 427 439 517 535 551 602 608 608 610 610 624 637 688 764 805 858 888 904 948 1098 1113 2590 cu_$arg_ptr_rel 000072 constant entry external dcl 190 ref 348 362 387 414 443 475 495 606 641 695 711 775 821 915 969 1004 1023 1406 1424 1497 1541 1571 1602 1651 1709 1801 1937 1944 2063 2235 2319 2349 2593 2619 cu_$generate_call 000070 constant entry external dcl 189 ref 401 608 610 current_size 5 based fixed bin(17,0) level 3 in structure "dutbl" dcl 11-29 in procedure "admin_" ref 2473 current_size 5 based fixed bin(17,0) level 3 in structure "autbl" dcl 2-28 in procedure "admin_" ref 1191 1368 1372 1723 2481 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 3-55 in procedure "admin_" ref 567 1988 2488 cv_dec_check_ 000076 constant entry external dcl 192 ref 657 705 1035 1464 1605 1677 1722 1885 1912 2138 2157 daemon_user_manager_$login 000100 constant entry external dcl 193 ref 366 daemon_user_manager_$logout 000102 constant entry external dcl 194 ref 390 date_time_$format 000124 constant entry external dcl 203 ref 448 449 504 734 1978 2389 2521 2665 2667 2670 2672 datebin_$next_shift_change 000122 constant entry external dcl 202 ref 701 day_back 000326 automatic char(6) packed unaligned dcl 288 set ref 2665* 2670 day_now 000324 automatic char(6) packed unaligned dcl 288 set ref 2667* 2670 dialup_$re_introduce 000104 constant entry external dcl 195 ref 2708 dirname 22(09) based char(168) level 2 packed packed unaligned dcl 1-10 set ref 1243 1248* 2169* disconnected 431(13) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 575 2017 divide builtin function dcl 241 ref 643 643 664 664 671 671 1886 1997 1997 dn_msg parameter char packed unaligned dcl 425 set ref 420 430* dn_time parameter fixed bin(71,0) dcl 425 set ref 420 430* dn_until parameter fixed bin(71,0) dcl 425 set ref 420 430* dutbl based structure level 1 dcl 11-29 dutp 001200 automatic pointer initial dcl 11-27 set ref 11-27* 1850* 2472* 2473 2474 ename 74(09) based char(32) level 2 packed packed unaligned dcl 1-10 set ref 1241* 1248* 2119* 2169* 2196 2197 2197 2197* entry 200 based structure array level 2 in structure "autbl" dcl 2-28 in procedure "admin_" set ref 1195 1368 1729 2482 entry 200 based structure array level 2 in structure "anstbl" dcl 3-55 in procedure "admin_" set ref 568 1989 2489 entry 200 based structure array level 2 in structure "dutbl" dcl 11-29 in procedure "admin_" set ref 2474 entry_sw 0(03) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1237 2116 2118* 2194 error_message 000751 automatic char(256) packed unaligned dcl 316 set ref 577* 579* error_table_$action_not_performed 000220 external static fixed bin(35,0) dcl 235 ref 2550 error_table_$noarg 000222 external static fixed bin(35,0) dcl 236 set ref 2071* error_table_$noentry 000224 external static fixed bin(35,0) dcl 237 ref 355 ev_p 000620 automatic pointer dcl 299 set ref 974* 1141 1149 1155 1161 1167 1315 1319 1374 1375 expand_pathname_ 000204 constant entry external dcl 227 ref 1239 2169 expecting 001265 automatic fixed bin(17,0) initial dcl 2045 set ref 2045* 2069 2076* 2078* 2080* 2082* 2084* 2108 2110 2112 2114 2121 2128 2146* fb71 000660 automatic fixed bin(71,0) dcl 309 set ref 1365* 1366 1368 1743* 1748* 1753* 1760* 2694* 2695 flag 001326 automatic bit(1) dcl 2306 set ref 2308* 2314* 2326 2345 2354 fnp_only 000655 automatic bit(1) initial packed unaligned dcl 306 set ref 306* 758* 765 799* 807 852* 860 882* 890 1804 1812 fnpe based structure level 1 dcl 9-200 force_sw 000637 automatic bit(1) dcl 303 set ref 772* 778* 788* 816* 829* 839* 912* 918* 928* foreground_job 431(07) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 1274 1737 four_zeros 000027 constant fixed bin(17,0) initial array dcl 273 set ref 1635* get_process_id_ 000126 constant entry external dcl 204 ref 1840 go_sw 000640 automatic bit(1) dcl 303 set ref 817* 826* 839* goingdown 000010 internal static bit(1) initial packed unaligned dcl 247 set ref 445 503 1080 1398 1521 2519* 2555* hbound builtin function dcl 241 ref 978 981 2610 2613 hcs_$initiate 000130 constant entry external dcl 205 ref 956 1839 1854 1861 1868 hcs_$wakeup 000132 constant entry external dcl 206 ref 1319 1375 header based structure level 2 in structure "anstbl" dcl 3-55 in procedure "admin_" header based structure level 2 in structure "dutbl" dcl 11-29 in procedure "admin_" header based structure level 2 in structure "autbl" dcl 2-28 in procedure "admin_" hphcs_$ips_wakeup 000134 constant entry external dcl 207 ref 2475 2483 2490 i 000111 automatic fixed bin(17,0) dcl 280 in procedure "admin_" set ref 345* 348* 361* 361 362* 364 381* 387* 520* 521 555* 562* 567* 568* 657* 659 664 664* 664 664 667 669 705* 706 706 729 774* 775* 820* 821* 914* 915* 978* 978* 981 997 1035* 1038 1038 1038 1186* 1190* 1194* 1194* 1195 1199* 1214* 1228* 1248* 1265* 1281* 1293* 1305* 1315* 1368* 1368* 1372 1374 1462* 1464* 1468 1468 1470 1471 1601* 1602* 1605 1606* 1634* 1635 1635* 1672* 1673 1674 1675 1677 1677 1680* 1680 1737* 1739* 1741* 1748* 1885* 1886 1886 1891 1892 1897 1912* 1913 1913 1918 1981* 1983* 1986 1988* 1989* 2196* 2197 2197 2197 2197 2610* 2610* 2613 2677* 2679* i 000100 automatic fixed bin(17,0) dcl 1934 in procedure "build_string" set ref 1936* 1937* 1942* 1942 1944* id_sw 0(01) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1223 2212 2214* index builtin function dcl 241 ref 1674 1820 2186 2239 2322 input_seg 110 based char(168) level 2 packed packed unaligned dcl 20-78 set ref 1239* installation_parms based structure level 1 dcl 13-33 installation_parms_part_1 based structure level 1 dcl 13-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 13-144 ioa_$rs 000140 constant entry external dcl 209 ref 1983 ioa_$rsnnl 000136 constant entry external dcl 208 ref 990 1199 1214 1228 1248 1265 1281 1293 1305 1340 1725 1732 1981 2330 2337 2357 2677 2679 2696 ip defined pointer dcl 5-21 set ref 1859 1861* 1862 1997 1997 2023 2516 ipc_$create_ev_chn 000144 constant entry external dcl 211 ref 1085 2384 2513 ipc_$decl_ev_call_chn 000146 constant entry external dcl 212 ref 2385 2454 2514 ipc_$delete_ev_chn 000142 constant entry external dcl 210 ref 1394 2410 j 000112 automatic fixed bin(17,0) dcl 280 set ref 474* 494* 498 693* 731* 1186* 1191* 1194 1597* 1616* 1616 1674* 1675 1675* 1677 1677 1677 1680 1706* 1709* 1722* 1723 1725* 1729 1732* 1744* k 000113 automatic fixed bin(17,0) dcl 280 set ref 1175* 1321* 1321 1331 1338 1340* 1340 1352 1673* 1677 1681 1681* 1681* l 000114 automatic fixed bin(17,0) dcl 280 set ref 1329* 1331 l_arg parameter char packed unaligned dcl 1883 in procedure "abs_maxu" set ref 1880 1885* 1895 1897 1899 l_arg parameter char packed unaligned dcl 1910 in procedure "abs_maxq" set ref 1907 1912* 1921 last_queue_searched 54 based fixed bin(17,0) level 2 dcl 2-28 set ref 1575* 1918* last_shift_change_time 64 based fixed bin(71,0) level 2 dcl 22-10 set ref 738* length builtin function dcl 241 ref 1814 1949 2153 2196 2326 2345 2354 2508 2624 2626 2688 2703 list_abs_requests$abs_list 000206 constant entry external dcl 228 ref 1748 lng 000116 automatic fixed bin(21,0) dcl 281 set ref 348* 350 362* 387* 389 414* 417 443* 455 456 464 464 466 466 468 475* 481 481 484 484 495* 606* 608 610 613 641* 647 660 695* 697 707 711* 713 713 715 715 717 722 775* 778 782 821* 824 824 826 826 826 829 833 915* 918 922 969* 973 983 1004* 1008 1014 1014 1023* 1029 1031 1031 1035 1035 1045 1054 1406* 1422 1422 1424* 1450 1453 1459 1459 1464 1464 1479 1488 1495 1495 1497* 1501 1501 1541* 1550 1556 1556 1571* 1580 1588 1588 1602* 1605 1605 1608 1612 1623 1641 1651* 1657 1665 1673 1674 1675 1677 1677 1689 1709* 1712 1712 1721 1801* 1811 1937* 1940 1941 1944* 1947 1948 2063* 2067 2076 2078 2080 2080 2082 2084 2084 2086 2086 2090 2101 2104 2119 2126 2133 2133 2137 2141 2149 2153 2153 2156 2160 2164 2169 2169 2173 2180 2184 2186 2186 2215 2229 2230 2235* 2239 2239 2239 2243 2319* 2322 2324 2325 2337 2337 2344 2349* 2352 2593* 2597* 2598 2598 2604 2610 2615 2615 2618 2619* 2633* 2635* 2646 2655 load_ctl_$set_abs_parms 000152 constant entry external dcl 214 ref 1516 1553 1583 1626 1660 load_ctl_$set_maxunits 000150 constant entry external dcl 213 ref 650 654 login_word 44 based char(8) level 2 packed packed unaligned dcl 3-55 set ref 2598* 2618* 2637 2640 2657 2691 2697* longinfo 000210 automatic char(100) dcl 285 set ref 1972* 1983* 2659* 2679* 2684* 2686 longinfo1 000241 automatic char(100) dcl 285 set ref 1979* 1981* 2674* 2677* match_request_id_ 000202 constant entry external dcl 226 ref 1223 match_star_name_ 000200 constant entry external dcl 225 ref 1241 1260 max builtin function dcl 241 ref 2197 2597 max_abs_users 13 based fixed bin(17,0) level 2 in structure "autbl" dcl 2-28 in procedure "admin_" set ref 1524 1545* 1635* 1891* 2442 2444* 2583* max_abs_users 53 based fixed bin(17,0) level 2 in structure "whotab" dcl 22-10 in procedure "admin_" set ref 1892* 2444* 2583* max_units 17 based fixed bin(17,0) level 2 dcl 3-55 set ref 643* 643 643 667* 671* 671 671 1886 mc_check_access_$log_daemon_in 000154 constant entry external dcl 215 ref 353 mess 000616 automatic char(8) packed unaligned dcl 298 set ref 974 message 141 based char(124) level 2 dcl 22-10 set ref 2557* message_lng 112 based fixed bin(17,0) level 2 dcl 3-55 set ref 2597 2598 2633* 2648* 2688* 2699 2701 2701 2703* 2703 2705 message_update_time 110 based fixed bin(71,0) level 2 dcl 3-55 set ref 2713* min builtin function dcl 241 ref 2153 2703 mpx_name 000645 automatic char(32) packed unaligned dcl 305 set ref 788* 839* 867* 871* 897* 928* 1811* 1814 1816 1820 mpxe based structure level 1 dcl 9-221 msg 000300 automatic char(80) packed unaligned dcl 287 set ref 448* 450* 504* 505* 734* 735* 1978* 1981* 2521* 2522* 2670* 2672* 2677* multiplexer_mgr_$dump_mpx 000106 constant entry external dcl 196 ref 788 multiplexer_mgr_$listen_mpx 000114 constant entry external dcl 199 ref 871 multiplexer_mgr_$load_mpx 000110 constant entry external dcl 197 ref 839 multiplexer_mgr_$shutdown_mpx_command 000120 constant entry external dcl 201 ref 928 multiplexer_mgr_$start_mpx 000112 constant entry external dcl 198 ref 867 multiplexer_mgr_$stop_mpx 000116 constant entry external dcl 200 ref 897 mxunits 2 based fixed bin(17,0) level 2 dcl 22-10 set ref 669* n_abs_run 12 based fixed bin(17,0) level 2 dcl 2-28 ref 1347 1392 2406 n_called 000022 internal static fixed bin(17,0) dcl 266 set ref 1010* 1058* 1102* 1102 1122* 2419 n_users 14 based fixed bin(17,0) level 2 dcl 3-55 ref 1968 n_words based fixed bin(17,0) level 2 dcl 4-77 ref 2610 2613 nargs 000656 automatic fixed bin(17,0) dcl 307 set ref 966* 1365* 1608 1620 1641 1665 1689 1706 1744 1748* 1753* 1760* 2062 next_shift_change_time 62 based fixed bin(71,0) level 2 dcl 22-10 set ref 700* 701* 726* 734* nextsd 10 based fixed bin(71,0) level 2 dcl 22-10 set ref 448* 504* 1398 1965* 2387 2507* 2516 2521* 2547 2556* nobump 100(02) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 2013 null builtin function dcl 241 ref 416 954 958 2-26 3-53 11-27 20-76 1837 1841 1852 1855 1859 1862 1866 1869 2385 2385 2454 2454 2514 2514 2524 2560 obsolete_message 40 based char(32) level 2 dcl 22-10 set ref 2558* obsolete_why 20 based char(32) level 2 dcl 22-10 set ref 2508* 2508 p 000610 automatic pointer dcl 295 set ref 348* 350 362* 387* 389 414* 417 443* 455 464 464 466 468 475* 481 481 484 495* 606* 608 610 613 641* 647 660 695* 697 707 711* 713 713 715 717 722 775* 778 782 821* 824 824 826 826 826 829 833 915* 918 922 969* 973 983 1004* 1008 1014 1014 1023* 1029 1031 1031 1035 1045 1054 1406* 1422 1422 1424* 1450 1453 1459 1459 1464 1479 1488 1495 1497* 1501 1541* 1550 1556 1571* 1580 1588 1602* 1605 1608 1612 1623 1641 1651* 1657 1665 1674 1677 1677 1689 1709* 1712 1712 1721 1801* 1811 1937* 1940 1944* 1947 2063* 2067 2076 2078 2080 2080 2082 2084 2084 2086 2086 2090 2101 2104 2119 2126 2133 2133 2137 2141 2149 2153 2153 2156 2160 2164 2169 2173 2180 2184 2186 2186 2215 2229 2230 2235* 2239 2239 2243 2319* 2322 2324 2325 2337 2344 2349* 2352 2593* 2610 2615 2618 2619* part_1 based structure level 2 dcl 13-33 path_sw 0(02) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1237 1243 1248* 2166 2168* 2194 person 4 based char(24) level 2 in structure "ute" packed packed unaligned dcl 20-78 in procedure "admin_" set ref 571 1207 2015* 2029* person 1 based char(28) level 2 in structure "abs_args" packed packed unaligned dcl 1-10 in procedure "admin_" set ref 1207 1207 1214* 2229* 2231 2231* 2275 prefix 000124 automatic char(200) dcl 284 set ref 1983* 1986 prev_arg 001266 automatic char(20) packed unaligned dcl 2046 set ref 2071* 2104* proc_id 276 based bit(36) level 2 dcl 20-78 set ref 2475* 2483* 2490* project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 20-78 in procedure "admin_" set ref 571 1207 2015* 2029* project 10 based char(9) level 2 in structure "abs_args" packed packed unaligned dcl 1-10 in procedure "admin_" set ref 1207 1207 1214* 2230* 2233 2243* 2248 2248* qerr 36 based fixed bin(17,0) array level 2 dcl 2-28 set ref 1428 1440* 1455* 1470* 1511* qres 24 based fixed bin(17,0) array level 2 in structure "autbl" dcl 2-28 in procedure "admin_" set ref 1620* 1632* 1635 qres 000641 automatic fixed bin(17,0) array dcl 304 in procedure "admin_" set ref 1598* 1605* 1606 1632 1635* 1639* queue 116 based fixed bin(17,0) level 2 in structure "abs_args" dcl 1-10 in procedure "admin_" set ref 1274 1274 1274 1274 1281* 2097* 2133* 2138* queue 245 based fixed bin(17,0) level 2 in structure "ute" dcl 20-78 in procedure "admin_" ref 1274 1274 1739 1741 queue_dropped 56(05) based bit(1) array level 3 packed packed unaligned dcl 2-28 set ref 1029* 1031* 1038* 1428 1434 1441* 1456* 1471* 1512* queue_sw 0(05) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1274 2088 2096* 2130 2132* rcp_cancel 000176 constant entry external dcl 224 ref 610 610 rcp_init_flags based structure level 1 packed packed unaligned dcl 14-8 rcp_list 000174 constant entry external dcl 223 ref 608 608 reason 000330 automatic char(124) packed unaligned dcl 289 set ref 478* 496* 499* 509* request_id 234 based fixed bin(71,0) level 2 dcl 20-78 set ref 1223* 1368 1743 request_id_string 12(09) based char(32) level 2 packed packed unaligned dcl 1-10 set ref 1223 1228* 2215* rtrim builtin function dcl 241 ref 355 357 1814 2196 2326 2345 2354 2688 saveclk 000122 automatic fixed bin(71,0) dcl 283 set ref 464* 466* 472 489 509* 713* 715* 721 721 726 saved_abs_maxu_auto 000021 internal static bit(1) dcl 255 set ref 2447* 2582 saved_max_abs_users 000020 internal static fixed bin(17,0) dcl 254 set ref 2442* 2583 sc_stat_$Multics 000254 external static bit(1) dcl 15-62 ref 987 999 1016 1074 sc_stat_$Multics_typed 000256 external static bit(1) dcl 15-62 ref 1835 sc_stat_$admin_sci_ptr 000252 external static pointer dcl 15-45 set ref 352* sc_stat_$sysdir 000250 external static char(168) packed unaligned dcl 15-21 ref 1835 sc_subsystem_info_ptr 001202 automatic pointer dcl 16-22 set ref 352* 353* scdtp defined pointer dcl 5-27 set ref 1866 1868* 1869 sender 104(09) based char(32) level 2 in structure "abs_args" packed packed unaligned dcl 1-10 in procedure "admin_" set ref 1260* 1265* 2126* sender 253 based char(32) level 2 in structure "ute" packed packed unaligned dcl 20-78 in procedure "admin_" set ref 1260* sender_sw 0(04) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1258 2123 2125* session 46 based char(8) level 2 in structure "anstbl" packed packed unaligned dcl 3-55 in procedure "admin_" set ref 2598* 2645* 2654* 2693* 2701* session 6 based char(8) level 2 in structure "whotab" dcl 22-10 in procedure "admin_" set ref 2645* 2654* 2693* shift 132 based fixed bin(17,0) level 2 in structure "anstbl" dcl 3-55 in procedure "admin_" set ref 650* 654* 737 shift 61 based fixed bin(17,0) level 2 in structure "whotab" dcl 22-10 in procedure "admin_" set ref 701* 729* 735* 737 shortinfo 000206 automatic char(8) dcl 285 set ref 1972* 1979* 2659* 2674* 2684* source 000624 automatic char(8) packed unaligned dcl 301 set ref 388* 389* 390* special_message 50 based char(128) level 2 packed packed unaligned dcl 3-55 set ref 2598 2624 2626 2631* 2649* 2679* 2686* 2688 2701 2701 2703 2705* ssu_$get_info_ptr 000156 constant entry external dcl 216 ref 352 stopflag 000014 internal static bit(1) initial dcl 249 set ref 1961 1963* 2643* string 000367 automatic char(256) packed unaligned dcl 290 in procedure "admin_" set ref 363* 366* 455* 456 499 577* 628* 647* 648 652 657* 697* 699 705* 1940* 1947* 1949 1974* 1981* 1983* 1986* 2017 2023* 2631 2661* 2677* 2679* string based char(4) level 2 in structure "xmessage" dcl 323 in procedure "admin_" set ref 1141* 1149* 1155* 1161* 1167* strl 000115 automatic fixed bin(17,0) dcl 280 set ref 499 1941* 1947 1948* 1948 1949 2624 2626* 2627* 2631 2633 substr builtin function dcl 241 set ref 499 1674 1677 1677 1712 1712 1721 1820 1947* 1986 2067 2149 2153 2156 2164 2186 2186 2197 2197 2197* 2239 2508 2631 2695 2701 2701 2705* sum builtin function dcl 241 ref 1428 sus_sent 431(08) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 1289 1301 sys_log 000100 automatic entry variable initial dcl 217 set ref 217* 445 450 505 538 579 589 628 643 664 671 735 1072 1082 1123 1428 1437 1439 1440 1441 1545 1575 1620 1639 1652 1681 1782 1790 1968 1994 1997 2015 2029 2369* 2390 2408 2421 2423 2522 2598 2606 2615 2627 2701 sys_log$error_log 000104 automatic entry variable initial dcl 218 set ref 218* 960 1778 1843 1855 1862 1869 2071 2370* sys_log_ 000160 constant entry external dcl 219 ref 2369 2423 sys_log_$command 000164 constant entry external dcl 219 ref 217 sys_log_$command_error 000166 constant entry external dcl 219 ref 218 sys_log_$error_log 000162 constant entry external dcl 219 ref 2370 sysdir defined char(168) packed unaligned dcl 5-28 set ref 956* 960* 1839* 1843* 1854* 1855* 1861* 1862* 1868* 1869* sysid 121 based char(32) level 2 dcl 22-10 set ref 417* table_index 1 based fixed bin(17,0) level 2 dcl 323 set ref 1315* 1374* temp 000622 automatic char(2) packed unaligned dcl 300 set ref 1721* 1722* 2137* 2138* 2156* 2157* temp_dir 000664 automatic char(168) packed unaligned dcl 312 set ref 1239* 1243 temp_ename 000736 automatic char(32) packed unaligned dcl 313 set ref 1239* 1241* temp_sw 000117 automatic bit(1) dcl 282 set ref 1434* 1437* 1441 time 001344 automatic fixed bin(71,0) dcl 2379 set ref 2387* 2388* 2389* time_str 001346 automatic char(48) packed unaligned dcl 2381 set ref 2389* 2390* timer_manager_$alarm_wakeup 000170 constant entry external dcl 221 ref 2388 2430 2516 timer_manager_$reset_alarm_wakeup 000172 constant entry external dcl 222 ref 1083 2554 2563 uflags 431 based structure level 2 dcl 20-78 unspec builtin function dcl 241 set ref 1428 1434 2061* 2262 2695 until 12 based fixed bin(71,0) level 2 dcl 22-10 set ref 449* 1974 1978* 2511* 2559* 2661 2665* 2670* 2672* user_abs_attributes based structure level 1 dcl 19-25 user_attributes based structure level 1 dcl 18-21 user_rqd parameter bit(1) dcl 2260 ref 2256 2268 user_sw based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 1207 2226 2228* 2270 ut_header based structure level 1 dcl 21-16 ute based structure level 1 dcl 20-78 ute_index 001404 automatic fixed bin(17,0) dcl 2470 set ref 2473* 2474* 2481* 2482* 2488* 2489* utep 001204 automatic pointer initial dcl 20-76 set ref 568* 569 571 571 575 577* 1195* 1196 1199 1207 1207 1223 1239 1260 1274 1274 1274 1274 1289 1301 1729* 1730 1732 1737 1739 1739 1741 1743 20-76* 1989* 1990 2013 2015 2015 2017 2017* 2023* 2029 2029 2474* 2475 2475 2482* 2483 2483 2489* 2490 2490 verify builtin function dcl 241 ref 464 481 713 1665 1712 2153 2184 warning_time 502 based fixed bin(17,0) level 3 dcl 13-33 set ref 1997 1997 2023* 2516 whoptr defined pointer dcl 5-29 set ref 416 417 448 449 450 504 669 700 701 701 726 729 734 735 737 738 1319 1319 1375 1375 1398 1852 1854* 1855 1892 1965 1974 1978 2387 2444 2507 2508 2508 2510 2511 2516 2521 2547 2556 2557 2558 2559 2583 2645 2654 2661 2665 2670 2672 2693 whotab based structure level 1 dcl 22-10 why 201 based char(124) level 2 dcl 22-10 set ref 450* 2510* words 2 based char(16) array level 2 packed packed unaligned dcl 4-77 ref 2610 2610 2613 2637 2640 wpers 000467 automatic char(28) initial packed unaligned dcl 291 set ref 291* 366* 390* 571 571 583 589* 2318* 2324* 2326 2330* 2344* 2345 wproj 000476 automatic char(28) initial packed unaligned dcl 291 set ref 291* 366* 390* 571 571 583 589* 2318* 2325* 2334 2352* 2354 2357* xmessage based structure level 1 dcl 323 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 19-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 6-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 20-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 6-36 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 6-28 ACTIVE internal static fixed bin(17,0) initial dcl 9-272 ACTIVE_VALUES internal static char(18) initial array dcl 12-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 18-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 3-51 ANS_SERVICE internal static fixed bin(17,0) initial dcl 9-259 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 6-30 AT_NORMAL internal static char(8) initial packed unaligned dcl 3-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 3-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 3-116 AUTBL_CONTROL_NAMES internal static varying char(20) initial array dcl 2-68 AUTBL_version_4 internal static fixed bin(17,0) initial dcl 2-24 Automatic_authentication internal static fixed bin(17,0) initial dcl 14-16 CDT_version internal static fixed bin(17,0) initial dcl 9-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 9-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 9-288 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 6-37 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 6-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 20-280 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 9-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 20-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 9-259 DN355 internal static fixed bin(17,0) initial dcl 10-19 DN6600 internal static fixed bin(17,0) initial dcl 10-19 DN6670 internal static fixed bin(17,0) initial dcl 10-19 DN7100 internal static fixed bin(17,0) initial dcl 10-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 20-280 DO_MASK internal static bit(2) initial packed unaligned dcl 20-280 DUTBL_version_4 internal static fixed bin(17,0) initial dcl 11-25 FNP_BOOT internal static fixed bin(17,0) initial dcl 9-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 9-298 FNP_FREE internal static fixed bin(17,0) initial dcl 9-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 9-298 FNP_UP internal static fixed bin(17,0) initial dcl 9-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 9-259 INACTIVE internal static fixed bin(17,0) initial dcl 9-272 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 6-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 6-32 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 20-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 20-284 MC_PRIO internal static fixed bin(17,0) initial dcl 6-25 MC_SERVICE internal static fixed bin(17,0) initial dcl 9-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 9-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 9-306 MPX_FREE internal static fixed bin(17,0) initial dcl 9-306 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 6-33 MPX_SERVICE internal static fixed bin(17,0) initial dcl 9-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 9-306 MPX_UP internal static fixed bin(17,0) initial dcl 9-306 Manual_authentication internal static fixed bin(17,0) initial dcl 14-16 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 9-280 NOW_DIALED internal static fixed bin(17,0) initial dcl 12-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 12-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 12-76 NOW_FREE internal static fixed bin(17,0) initial dcl 12-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 12-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 12-76 No_authentication internal static fixed bin(17,0) initial dcl 14-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 14-16 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 12-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 20-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 20-261 PT_ALARM internal static fixed bin(17,0) initial dcl 12-106 PT_BUMP internal static fixed bin(17,0) initial dcl 12-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 20-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_DETACH internal static fixed bin(17,0) initial dcl 12-106 PT_FPE internal static fixed bin(17,0) initial dcl 12-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 12-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 20-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 12-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 12-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 12-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 20-290 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 9-259 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 17-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 17-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 17-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 17-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 17-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 17-14 SL_TYPE internal static fixed bin(17,0) initial dcl 17-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 17-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 17-14 STATE_VALUES internal static char(15) initial array dcl 12-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 6-26 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 20-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 12-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 12-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 12-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 12-93 TAG_UFT internal static char(1) initial packed unaligned dcl 12-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 9-259 TRA_VEC_VALUES internal static char(32) initial array dcl 12-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 12-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 12-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 12-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 12-64 UFLAG_NAMES internal static varying char(24) initial array dcl 20-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 18-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 18-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 18-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 18-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 20-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 12-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 12-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 12-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 12-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 12-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 12-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 12-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 22-96 as_data_$BS external static char(1) dcl 4-21 as_data_$CR external static char(1) dcl 4-22 as_data_$abs_dim external static char(32) packed unaligned dcl 4-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 4-24 as_data_$acsdir external static char(168) packed unaligned dcl 4-25 as_data_$as_ring external static fixed bin(3,0) dcl 4-28 as_data_$as_tty automatic char(6) packed unaligned dcl 4-29 as_data_$asmtp external static pointer dcl 4-30 as_data_$buzzardp external static pointer dcl 4-32 as_data_$debug_flag external static bit(1) dcl 4-84 as_data_$default_weight external static fixed bin(35,0) dcl 4-34 as_data_$devtabp external static pointer dcl 4-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 4-36 as_data_$g115_dim external static char(32) packed unaligned dcl 4-38 as_data_$lct_initialized external static bit(1) dcl 4-39 as_data_$lct_size external static fixed bin(17,0) dcl 4-40 as_data_$login_args external static structure level 1 dcl 4-62 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 4-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 4-87 as_data_$ls_message_buffer_ptr external static pointer dcl 4-88 as_data_$ls_request_server_info_ptr external static pointer dcl 4-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 4-41 as_data_$mgtp external static pointer dcl 4-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 4-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 4-44 as_data_$pdtdir external static char(168) packed unaligned dcl 4-45 as_data_$pit_ptr external static pointer dcl 4-46 as_data_$rcpdir external static char(168) packed unaligned dcl 4-47 as_data_$request_priority external static fixed bin(17,0) dcl 4-48 as_data_$rtdtp external static pointer dcl 4-50 as_data_$sat_htp external static pointer dcl 4-51 as_data_$satp external static pointer dcl 4-52 as_data_$signal_types external static structure level 1 dcl 4-67 as_data_$suffix external static char(2) array packed unaligned dcl 4-53 as_data_$system_signal_types external static structure level 1 dcl 4-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 4-55 as_data_$terminet_tabs_string external static varying char(144) dcl 4-56 as_data_$tty_dim external static char(32) packed unaligned dcl 4-57 as_data_$update_priority external static fixed bin(17,0) dcl 4-58 as_data_$version external static char(8) packed unaligned dcl 4-59 as_tty based char(6) packed unaligned dcl 5-18 asmtp defined pointer dcl 5-19 authentication_level_names internal static char(12) initial array packed unaligned dcl 14-21 cdt based structure level 1 dcl 9-44 cdtep automatic pointer dcl 9-41 cdtp automatic pointer dcl 9-41 devtabp defined pointer dcl 5-20 fnp_models internal static fixed bin(17,0) initial array dcl 10-28 fnp_types internal static char(8) initial array packed unaligned dcl 10-25 fnpep automatic pointer dcl 9-41 generic_destination based char(32) packed unaligned dcl 9-195 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 13-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 13-38 mgtp defined pointer dcl 5-22 mpxep automatic pointer dcl 9-41 pdtdir based char(168) packed unaligned dcl 5-23 rifp automatic pointer dcl 14-6 rs_ptrs based pointer array dcl 5-24 sat_htp defined pointer dcl 5-25 satp defined pointer dcl 5-26 sc_request_flags based structure level 1 packed packed unaligned dcl 16-55 sc_rf_ptr automatic pointer dcl 16-54 sc_ss_area based area(1024) dcl 16-50 sc_stat_$Go external static bit(1) dcl 15-62 sc_stat_$Go_typed external static bit(1) dcl 15-62 sc_stat_$Star_typed external static bit(1) dcl 15-62 sc_stat_$admin_listener_exit_label external static label variable dcl 15-34 sc_stat_$admin_listener_switch external static bit(1) dcl 15-62 sc_stat_$admin_log_iocb external static pointer dcl 15-45 sc_stat_$admin_log_write_ptr external static pointer dcl 15-45 sc_stat_$as_log_write_ptr external static pointer dcl 15-45 sc_stat_$did_part1 external static bit(1) dcl 15-62 sc_stat_$did_part2 external static bit(1) dcl 15-62 sc_stat_$did_part3 external static bit(1) dcl 15-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 15-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 15-21 sc_stat_$initzer_ttyp external static pointer dcl 15-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 15-21 sc_stat_$master_abort_label external static label variable dcl 15-34 sc_stat_$master_channel external static char(6) dcl 15-29 sc_stat_$master_iocb external static pointer dcl 15-45 sc_stat_$master_sci_ptr external static pointer dcl 15-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 15-21 sc_stat_$mc_ansp external static pointer dcl 15-45 sc_stat_$mc_iocb external static pointer dcl 15-45 sc_stat_$mc_is_on external static bit(1) dcl 15-62 sc_stat_$no_operator_login external static bit(1) dcl 15-62 sc_stat_$shutdown_typed external static bit(1) dcl 15-62 sc_stat_$sv1_iocb external static pointer dcl 15-45 sc_stat_$sv2_iocb external static pointer dcl 15-45 sc_stat_$sv3_iocb external static pointer dcl 15-45 sc_stat_$system_shutdown_label external static label variable dcl 15-34 sc_stat_$test_mode external static bit(1) dcl 15-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 15-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 15-62 sc_subsystem_info based structure level 1 dcl 16-23 sl_info automatic structure level 1 dcl 17-24 sl_info_code_msg internal static structure level 1 dcl 17-187 sl_info_msg internal static structure level 1 dcl 17-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 17-161 sl_info_sev_code_msg internal static structure level 1 dcl 17-82 sl_info_sev_coded_msg internal static structure level 1 dcl 17-134 sl_info_sev_msg internal static structure level 1 dcl 17-108 supported_fnp internal static bit(1) initial array packed unaligned dcl 10-31 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_ABSENTEE_SHUTDOWN 021256 constant entry internal dcl 2573 ref 1392 2565 BAD_PP 017703 constant label dcl 2334 ref 2350 CANCEL_SYSTEM_SHUTDOWN 021157 constant entry internal dcl 2537 ref 458 506 CHECK_FOR_ABSENTEE_SHUTDOWN 020252 constant entry internal dcl 2395 ref 1103 2460 LOGIN_USAGE 002671 constant label dcl 338 ref 346 349 LONG_PERSON 017645 constant label dcl 2326 set ref 2345 NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE 020546 constant entry internal dcl 2464 ref 2533 2568 PROCESS_UTE 016143 constant entry internal dcl 2005 ref 1990 SCHEDULE_ABSENTEE_SHUTDOWN 020075 constant entry internal dcl 2374 ref 1521 2527 SCHEDULE_SYSTEM_SHUTDOWN 020726 constant entry internal dcl 2496 ref 430 509 SET_LOGIN_WORD 021277 constant entry internal dcl 2588 ref 401 401 1966 START_ABSENTEE_SHUTDOWN 020476 constant entry internal dcl 2436 ref 1088 1124 abs 007305 constant entry external dcl 945 abs_action 000000 constant label array(16) dcl 999 ref 997 abs_already_up 011717 constant label dcl 1412 ref 1486 abs_bump_common 010374 constant label dcl 1172 ref 1143 1151 1157 1163 1169 abs_bump_nomatch 011410 constant label dcl 1322 ref 1196 1207 1223 1243 1262 1274 1289 1301 abs_maxq 015364 constant entry internal dcl 1907 ref 1501 1588 abs_maxu 015214 constant entry internal dcl 1880 ref 1495 1556 abs_not_up 012555 constant label dcl 1533 ref 1172 1565 1594 1648 1696 1767 abs_s1 010117 constant label dcl 1068 ref 1011 abs_stopping 010113 constant label dcl 1063 ref 1538 1568 absentee_down 010264 constant entry external dcl 1106 absentee_off 010231 constant entry external dcl 1091 admin_ 002633 constant entry external dcl 16 admin_$abs_not_a_command_ 007274 constant entry external dcl 939 ref 2423 admin_abs_returns 014305 constant label dcl 1786 ref 1077 1380 1445 1506 1528 1547 1554 1577 1584 1644 1692 1702 1749 1756 1763 1773 admin_answers 014252 constant label dcl 1782 ref 341 384 459 469 491 523 559 614 662 708 718 723 783 834 923 984 993 1021 1027 1046 1055 1065 1202 1218 1232 1252 1268 1284 1296 1308 1336 1357 1402 1414 1451 1480 1535 1613 1669 1719 1727 1735 1808 1818 1902 1922 2094 2102 2142 2182 2265 2273 2278 2286 2332 2339 2359 admin_err 014225 constant label dcl 1778 ref 358 415 607 971 1938 2064 2174 admin_replies 014313 constant label dcl 1790 ref 1342 1350 bad_mpx_fnp_name 014421 constant label dcl 1816 ref 1820 bad_t 004071 constant label dcl 468 ref 472 bld 015523 constant label dcl 1942 ref 1951 build_string 015456 constant entry internal dcl 1927 ref 364 498 562 627 2623 default_q 011726 constant label dcl 1418 ref 1499 default_u 011723 constant label dcl 1416 ref 1491 down 003503 constant entry external dcl 433 down1 003426 constant entry external dcl 420 dump_fnp 006346 constant entry external dcl 755 dump_mpx 006363 constant entry external dcl 761 fdump_fnp 006336 constant entry external dcl 753 full_path_required 017143 constant label dcl 2180 ref 2186 get_id 017270 constant entry internal dcl 2210 ref 2112 2184 get_mpx_name 014342 constant entry internal dcl 1796 ref 770 812 865 895 910 get_pers_proj 017523 constant entry internal dcl 2293 ref 345 381 555 get_pers_proj$$brief 017530 constant entry internal dcl 2311 get_pp_common 017533 constant label dcl 2316 ref 2309 get_user 017305 constant entry internal dcl 2222 ref 2110 2186 load_fnp 006522 constant entry external dcl 796 load_mpx 006537 constant entry external dcl 802 log 005211 constant entry external dcl 619 login 002643 constant entry external dcl 329 logout 003160 constant entry external dcl 371 maxunits 005275 constant entry external dcl 631 multiple_abs_qualifiers 016540 constant label dcl 2090 ref 2116 2123 2130 2151 2166 2212 2226 nudge 012536 constant label dcl 1524 ref 1457 1472 1559 1589 1641 1689 parse_abs_args 016337 constant entry internal dcl 2039 ref 1177 1699 1770 print_dropped_queues 012036 constant label dcl 1434 ref 1049 rcp 005035 constant entry external dcl 597 set_non_command_sys_loggers 020063 constant entry internal dcl 2366 ref 537 942 1099 1114 shift 005635 constant entry external dcl 686 shutdown_mpx 007140 constant entry external dcl 901 start_fnp 006737 constant entry external dcl 849 start_mpx 006754 constant entry external dcl 855 stop 004437 constant entry external dcl 512 stop_command 015575 constant entry internal dcl 1958 ref 526 540 stop_fnp 007052 constant entry external dcl 879 stop_mpx 007067 constant entry external dcl 885 sysid 003336 constant entry external dcl 404 timed_stop_command 004510 constant entry external dcl 529 validate 014451 constant entry internal dcl 1832 ref 337 379 412 428 441 519 539 553 605 640 691 768 810 863 893 908 952 1101 1116 2592 validate_abs_args 017454 constant entry internal dcl 2256 ref 1178 1180 1700 1771 warn 004563 constant entry external dcl 545 why 004314 constant label dcl 498 ref 487 word 003271 constant entry external dcl 394 wordl 021670 constant label dcl 2643 ref 2637 wrong_maxunits 005502 constant label dcl 660 ref 658 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 25020 25300 23432 25030 Length 26516 23432 260 1202 1365 14 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME admin_ 1619 external procedure is an external procedure. get_mpx_name internal procedure shares stack frame of external procedure admin_. validate 127 internal procedure is called by several nonquick procedures. abs_maxu internal procedure shares stack frame of external procedure admin_. abs_maxq internal procedure shares stack frame of external procedure admin_. build_string 78 internal procedure is called by several nonquick procedures. stop_command internal procedure shares stack frame of external procedure admin_. PROCESS_UTE internal procedure shares stack frame of external procedure admin_. parse_abs_args internal procedure shares stack frame of external procedure admin_. get_id internal procedure shares stack frame of external procedure admin_. get_user internal procedure shares stack frame of external procedure admin_. validate_abs_args internal procedure shares stack frame of external procedure admin_. get_pers_proj internal procedure shares stack frame of external procedure admin_. set_non_command_sys_loggers internal procedure shares stack frame of external procedure admin_. SCHEDULE_ABSENTEE_SHUTDOWN internal procedure shares stack frame of external procedure admin_. CHECK_FOR_ABSENTEE_SHUTDOWN internal procedure shares stack frame of external procedure admin_. START_ABSENTEE_SHUTDOWN internal procedure shares stack frame of external procedure admin_. NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE internal procedure shares stack frame of external procedure admin_. SCHEDULE_SYSTEM_SHUTDOWN internal procedure shares stack frame of external procedure admin_. CANCEL_SYSTEM_SHUTDOWN internal procedure shares stack frame of external procedure admin_. ABORT_ABSENTEE_SHUTDOWN internal procedure shares stack frame of external procedure admin_. SET_LOGIN_WORD 211 internal procedure is assigned to an entry variable, and is declared options(variable). STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 goingdown admin_ 000012 auto_bump_chn admin_ 000014 stopflag admin_ 000016 abs_stop_chn admin_ 000020 saved_max_abs_users admin_ 000021 saved_abs_maxu_auto admin_ 000022 n_called admin_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME admin_ 000100 sys_log admin_ 000104 sys_log$error_log admin_ 000110 code admin_ 000111 i admin_ 000112 j admin_ 000113 k admin_ 000114 l admin_ 000115 strl admin_ 000116 lng admin_ 000117 temp_sw admin_ 000120 clock_value admin_ 000122 saveclk admin_ 000124 prefix admin_ 000206 shortinfo admin_ 000210 longinfo admin_ 000241 longinfo1 admin_ 000272 comname admin_ 000300 msg admin_ 000324 day_now admin_ 000326 day_back admin_ 000330 reason admin_ 000367 string admin_ 000467 wpers admin_ 000476 wproj admin_ 000505 answer admin_ 000605 arg_count admin_ 000606 arg_list_ptr admin_ 000610 p admin_ 000612 action_flag admin_ 000613 abs_funct admin_ 000616 mess admin_ 000620 ev_p admin_ 000622 temp admin_ 000624 source admin_ 000626 attchan admin_ 000636 check_sw admin_ 000637 force_sw admin_ 000640 go_sw admin_ 000641 qres admin_ 000645 mpx_name admin_ 000655 fnp_only admin_ 000656 nargs admin_ 000657 abs_start_at_startup admin_ 000660 fb71 admin_ 000662 b12 admin_ 000663 c4 admin_ 000664 temp_dir admin_ 000736 temp_ename admin_ 000746 abs_arg_ptr admin_ 000750 continue admin_ 000751 error_message admin_ 001052 auto_abs_args admin_ 001174 autp admin_ 001176 ansp admin_ 001200 dutp admin_ 001202 sc_subsystem_info_ptr admin_ 001204 utep admin_ 001264 an parse_abs_args 001265 expecting parse_abs_args 001266 prev_arg parse_abs_args 001273 ctl_arg_given parse_abs_args 001326 flag get_pers_proj 001344 time SCHEDULE_ABSENTEE_SHUTDOWN 001346 time_str SCHEDULE_ABSENTEE_SHUTDOWN 001404 ute_index NOTIFY_USERS_OF_SHUTDOWN_TIME_CHANGE build_string 000100 i build_string THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_ne_as alloc_char_temp cat_realloc_chars call_ent_var_desc call_ext_in_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 shorten_stack ext_entry ext_entry_desc int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absentee_user_manager_$aum_abs_run absentee_user_manager_$init_aum absentee_user_manager_$term_aum absentee_user_manager_$update_whotab_abs_control absentee_utility_$abs_defer absentee_utility_$abs_release absentee_utility_$au_send_wakeup act_ctl_$shift_cmnd_update admin_$abs admin_$absentee_down admin_$absentee_off admin_$timed_stop_command asu_$blast_user asu_$bump_user available_slots_ cancel_abs_request$as_abs convert_date_to_binary_ convert_status_code_ cu_$arg_count_rel cu_$arg_list_ptr cu_$arg_ptr_rel cu_$generate_call cv_dec_check_ daemon_user_manager_$login daemon_user_manager_$logout date_time_$format datebin_$next_shift_change dialup_$re_introduce expand_pathname_ get_process_id_ hcs_$initiate hcs_$wakeup hphcs_$ips_wakeup ioa_$rs ioa_$rsnnl ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn list_abs_requests$abs_list load_ctl_$set_abs_parms load_ctl_$set_maxunits match_request_id_ match_star_name_ mc_check_access_$log_daemon_in multiplexer_mgr_$dump_mpx multiplexer_mgr_$listen_mpx multiplexer_mgr_$load_mpx multiplexer_mgr_$shutdown_mpx_command multiplexer_mgr_$start_mpx multiplexer_mgr_$stop_mpx rcp_cancel rcp_list ssu_$get_info_ptr sys_log_ sys_log_$command sys_log_$command_error sys_log_$error_log timer_manager_$alarm_wakeup timer_manager_$reset_alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$ansp as_data_$as_procid as_data_$autp as_data_$cdtp as_data_$dutp as_data_$login_words as_data_$rs_ptrs as_data_$sysdir as_data_$whoptr as_error_table_$special_sess_msg as_error_table_$sys_down_msg as_error_table_$try_again_at_msg error_table_$action_not_performed error_table_$noarg error_table_$noentry sc_stat_$Multics sc_stat_$Multics_typed sc_stat_$admin_sci_ptr sc_stat_$sysdir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 217 002601 218 002606 291 002611 292 002617 306 002622 2 26 002623 3 53 002625 11 27 002626 20 76 002627 16 002632 329 002641 334 002651 335 002660 337 002663 338 002667 340 002671 341 002674 345 002675 346 002701 348 002703 349 002722 350 002724 352 002731 353 002742 354 002763 355 002765 357 003030 358 003070 361 003072 362 003073 363 003112 364 003120 366 003132 369 003156 371 003157 376 003166 377 003175 379 003200 381 003204 382 003210 383 003212 384 003215 387 003216 388 003235 389 003242 390 003247 392 003267 394 003270 399 003277 400 003306 401 003311 402 003334 404 003335 409 003344 410 003353 412 003356 414 003362 415 003403 416 003405 417 003412 418 003421 420 003422 427 003442 428 003451 429 003455 430 003460 431 003501 433 003502 439 003511 440 003520 441 003523 443 003527 444 003550 445 003552 448 003601 449 003642 450 003704 452 003746 455 003747 456 003754 458 003763 459 003766 461 003770 464 003771 466 004042 467 004067 468 004071 469 004107 472 004111 474 004114 475 004116 476 004137 477 004141 478 004143 479 004146 481 004147 484 004222 485 004247 486 004251 487 004253 489 004254 490 004257 491 004262 494 004263 495 004265 496 004306 498 004314 499 004327 503 004333 504 004336 505 004377 506 004426 509 004432 510 004435 512 004436 517 004445 518 004454 519 004457 520 004463 521 004477 522 004501 523 004504 526 004505 527 004506 529 004507 535 004516 536 004525 537 004530 538 004531 539 004554 540 004560 541 004561 545 004562 551 004571 552 004600 553 004603 555 004607 556 004613 558 004615 559 004620 562 004621 564 004631 566 004632 567 004634 568 004647 569 004654 571 004657 574 004677 575 004701 577 004704 579 004730 583 004763 587 004774 589 004776 592 005033 597 005034 602 005043 603 005052 605 005055 606 005061 607 005102 608 005104 610 005137 613 005170 614 005205 617 005207 619 005210 624 005217 625 005226 627 005231 628 005243 629 005273 631 005274 637 005303 638 005312 640 005315 641 005321 642 005342 643 005344 645 005410 647 005411 648 005416 649 005422 650 005425 651 005434 652 005435 653 005441 654 005444 655 005453 657 005454 658 005476 659 005500 660 005502 662 005520 664 005522 667 005557 668 005562 669 005563 671 005567 674 005633 686 005634 688 005643 689 005652 691 005655 692 005661 693 005663 695 005665 696 005706 697 005710 699 005715 700 005721 701 005726 702 005743 705 005744 706 005766 707 005774 708 006012 711 006014 712 006035 713 006037 715 006112 716 006137 717 006141 718 006157 721 006161 722 006170 723 006206 726 006210 729 006215 731 006222 734 006224 735 006266 737 006317 738 006326 739 006330 742 006334 753 006335 755 006344 758 006354 759 006356 761 006361 764 006371 765 006400 768 006405 770 006411 772 006415 773 006416 774 006417 775 006424 776 006443 778 006445 782 006456 783 006473 786 006475 788 006477 789 006520 796 006521 799 006530 800 006532 802 006535 805 006545 807 006554 810 006561 812 006565 816 006571 817 006573 818 006575 820 006576 821 006602 822 006621 824 006623 826 006640 829 006656 833 006665 834 006702 837 006704 839 006706 842 006735 849 006736 852 006745 853 006747 855 006752 858 006762 860 006771 863 006776 865 007002 867 007006 868 007031 871 007033 872 007050 879 007051 882 007060 883 007062 885 007065 888 007075 890 007104 893 007111 895 007115 897 007121 899 007136 901 007137 904 007146 906 007155 908 007160 910 007164 912 007170 913 007171 914 007172 915 007176 916 007215 918 007217 922 007230 923 007245 926 007247 928 007251 930 007272 939 007273 942 007302 945 007303 948 007313 950 007322 952 007325 954 007331 956 007335 958 007403 960 007407 962 007445 966 007446 968 007461 969 007463 971 007504 973 007506 974 007513 978 007515 980 007531 981 007533 983 007536 984 007554 987 007556 990 007567 993 007617 996 007620 997 007626 999 007627 1004 007636 1006 007656 1008 007660 1010 007666 1011 007671 1014 007672 1016 007702 1018 007705 1021 007710 1023 007711 1024 007731 1026 007733 1027 007736 1029 007737 1031 007762 1035 007776 1036 010023 1038 010025 1040 010040 1043 010042 1045 010044 1046 010062 1049 010064 1054 010065 1055 010102 1058 010104 1061 010106 1063 010113 1065 010116 1068 010117 1071 010123 1072 010125 1074 010150 1077 010157 1080 010160 1082 010163 1083 010206 1084 010215 1085 010216 1088 010226 1089 010227 1091 010230 1098 010237 1099 010246 1100 010247 1101 010252 1102 010256 1103 010261 1104 010262 1106 010263 1113 010272 1114 010301 1115 010302 1116 010305 1118 010311 1122 010326 1123 010330 1124 010353 1126 010354 1141 010355 1143 010357 1149 010360 1151 010362 1155 010363 1157 010365 1161 010366 1163 010370 1167 010371 1169 010373 1172 010374 1175 010400 1177 010401 1178 010403 1180 010415 1183 010423 1186 010437 1190 010446 1191 010450 1194 010453 1195 010461 1196 010465 1199 010473 1202 010527 1207 010530 1214 010557 1218 010620 1223 010621 1228 010657 1232 010717 1237 010720 1239 010723 1241 010751 1243 010774 1248 011011 1252 011064 1258 011065 1260 011070 1262 011114 1265 011121 1268 011161 1274 011162 1281 011216 1284 011252 1289 011253 1293 011266 1296 011317 1301 011320 1305 011333 1308 011364 1315 011365 1319 011370 1321 011407 1322 011410 1325 011412 1329 011421 1331 011432 1333 011435 1336 011440 1338 011441 1340 011443 1342 011503 1344 011504 1347 011505 1349 011510 1350 011513 1352 011514 1354 011516 1357 011521 1361 011522 1365 011523 1366 011540 1368 011544 1371 011563 1372 011565 1374 011571 1375 011573 1380 011612 1389 011613 1392 011620 1394 011623 1395 011634 1396 011641 1398 011646 1401 011664 1402 011667 1405 011670 1406 011671 1408 011711 1410 011713 1412 011717 1414 011722 1416 011723 1418 011726 1420 011731 1422 011732 1424 011744 1426 011765 1428 011767 1434 012036 1437 012043 1439 012072 1440 012115 1441 012145 1445 012202 1448 012203 1450 012212 1451 012230 1453 012232 1455 012240 1456 012251 1457 012265 1459 012266 1461 012276 1462 012277 1463 012301 1464 012302 1466 012326 1468 012330 1470 012335 1471 012337 1472 012343 1474 012344 1477 012346 1479 012347 1480 012365 1482 012367 1486 012370 1488 012374 1490 012401 1491 012403 1495 012404 1497 012416 1499 012437 1501 012441 1505 012454 1506 012463 1509 012465 1510 012470 1511 012472 1512 012503 1513 012517 1516 012523 1521 012532 1524 012536 1528 012550 1530 012551 1533 012555 1535 012560 1538 012561 1541 012564 1543 012604 1545 012606 1547 012643 1550 012644 1552 012652 1553 012655 1554 012662 1556 012663 1559 012676 1565 012677 1568 012703 1571 012706 1573 012726 1575 012730 1577 012765 1580 012766 1582 012774 1583 012777 1584 013004 1588 013005 1589 013020 1594 013021 1597 013025 1598 013026 1599 013036 1601 013037 1602 013047 1603 013066 1605 013070 1606 013116 1608 013122 1612 013134 1613 013151 1616 013153 1618 013154 1620 013156 1623 013220 1625 013226 1626 013231 1627 013236 1631 013237 1632 013242 1634 013245 1635 013253 1638 013302 1639 013304 1641 013333 1644 013344 1648 013345 1651 013351 1652 013371 1657 013432 1659 013440 1660 013443 1661 013450 1665 013451 1667 013466 1669 013471 1672 013472 1673 013474 1674 013504 1675 013523 1677 013530 1680 013565 1681 013570 1685 013627 1686 013631 1689 013634 1692 013645 1696 013646 1699 013652 1700 013654 1701 013661 1702 013670 1706 013671 1709 013701 1710 013720 1712 013722 1715 013744 1717 013750 1719 013753 1721 013754 1722 013761 1723 014004 1725 014007 1727 014040 1729 014041 1730 014044 1732 014047 1735 014103 1737 014104 1739 014112 1741 014121 1743 014123 1744 014125 1747 014127 1748 014131 1749 014146 1753 014147 1756 014163 1760 014164 1763 014200 1767 014201 1770 014205 1771 014207 1772 014215 1773 014224 1778 014225 1780 014251 1782 014252 1784 014304 1786 014305 1788 014312 1790 014313 1792 014341 1796 014342 1801 014344 1802 014363 1804 014365 1806 014373 1808 014376 1811 014377 1812 014404 1814 014406 1816 014421 1818 014434 1820 014436 1824 014447 1832 014450 1835 014456 1837 014465 1839 014471 1840 014541 1841 014553 1843 014557 1845 014616 1848 014617 1849 014623 1850 014626 1852 014631 1854 014635 1855 014701 1859 014743 1861 014750 1862 015022 1866 015063 1868 015070 1869 015136 1873 015176 1875 015213 1880 015214 1885 015225 1886 015251 1890 015262 1891 015265 1892 015267 1893 015274 1895 015275 1897 015317 1899 015342 1902 015362 1907 015364 1912 015375 1913 015421 1917 015427 1918 015432 1919 015433 1921 015434 1922 015453 1927 015455 1936 015463 1937 015466 1938 015505 1940 015513 1941 015521 1942 015523 1944 015524 1945 015545 1947 015550 1948 015566 1949 015572 1951 015574 1958 015575 1961 015576 1963 015602 1965 015604 1966 015610 1968 015622 1972 015651 1974 015664 1978 015675 1979 015734 1981 015747 1983 015774 1985 016021 1986 016023 1988 016030 1989 016043 1990 016050 1992 016055 1994 016057 1997 016106 2002 016142 2005 016143 2013 016145 2015 016151 2017 016207 2020 016247 2023 016250 2029 016277 2030 016333 2031 016336 2039 016337 2045 016341 2047 016342 2061 016343 2062 016347 2063 016357 2064 016377 2067 016401 2069 016410 2071 016412 2073 016450 2076 016451 2078 016461 2080 016470 2082 016503 2084 016512 2086 016525 2088 016535 2090 016540 2094 016556 2096 016560 2097 016562 2098 016565 2101 016566 2102 016602 2104 016604 2105 016610 2106 016612 2108 016613 2110 016615 2112 016627 2114 016633 2116 016635 2118 016640 2119 016642 2120 016647 2121 016650 2123 016652 2125 016655 2126 016657 2127 016664 2128 016665 2130 016667 2132 016672 2133 016674 2137 016711 2138 016714 2139 016737 2141 016741 2142 016757 2146 016761 2147 016762 2149 016763 2151 016767 2153 016772 2155 017016 2156 017020 2157 017025 2158 017051 2160 017052 2162 017061 2164 017062 2166 017064 2168 017067 2169 017071 2171 017125 2173 017127 2174 017134 2176 017135 2178 017136 2180 017143 2182 017161 2184 017163 2186 017200 2192 017223 2194 017225 2196 017230 2197 017243 2206 017267 2210 017270 2212 017271 2214 017274 2215 017276 2216 017304 2222 017305 2226 017307 2228 017312 2229 017314 2230 017327 2231 017353 2233 017362 2235 017366 2237 017411 2239 017413 2243 017435 2244 017442 2248 017443 2250 017453 2256 017454 2262 017456 2264 017461 2265 017464 2268 017465 2270 017470 2272 017473 2273 017476 2275 017477 2277 017504 2278 017507 2282 017510 2285 017516 2286 017521 2289 017522 2293 017523 2308 017525 2309 017527 2311 017530 2314 017532 2316 017533 2318 017536 2319 017544 2320 017563 2322 017567 2324 017602 2325 017612 2326 017630 2330 017645 2332 017676 2334 017677 2337 017703 2339 017737 2341 017740 2344 017741 2345 017744 2348 017761 2349 017762 2350 020001 2352 020004 2354 020011 2357 020026 2359 020057 2361 020060 2362 020062 2366 020063 2369 020064 2370 020071 2371 020074 2374 020075 2384 020076 2385 020110 2387 020136 2388 020146 2389 020162 2390 020222 2391 020251 2395 020252 2403 020253 2406 020260 2408 020262 2410 020305 2411 020316 2412 020323 2413 020326 2414 020333 2419 020334 2421 020340 2423 020363 2425 020425 2427 020451 2428 020456 2430 020457 2432 020475 2436 020476 2442 020477 2444 020503 2446 020510 2447 020512 2448 020516 2454 020520 2460 020544 2461 020545 2464 020546 2472 020547 2473 020553 2474 020563 2475 020567 2478 020612 2480 020614 2481 020620 2482 020631 2483 020635 2486 020660 2488 020662 2489 020673 2490 020700 2493 020723 2494 020725 2496 020726 2507 020737 2508 020745 2510 020751 2511 020755 2513 020757 2514 020770 2516 021016 2519 021044 2521 021047 2522 021110 2524 021137 2527 021147 2528 021150 2533 021155 2534 021156 2537 021157 2547 021170 2549 021175 2550 021203 2551 021205 2554 021206 2555 021214 2556 021216 2557 021222 2558 021225 2559 021230 2560 021231 2563 021241 2565 021247 2568 021254 2570 021255 2573 021256 2581 021257 2582 021262 2583 021270 2585 021275 2588 021276 2590 021304 2592 021313 2593 021320 2595 021342 2597 021345 2598 021354 2602 021424 2604 021425 2606 021430 2608 021453 2610 021454 2612 021500 2613 021502 2615 021506 2616 021540 2618 021541 2619 021547 2621 021567 2623 021572 2624 021605 2626 021611 2627 021613 2631 021641 2633 021647 2634 021652 2635 021653 2637 021654 2640 021664 2643 021670 2645 021671 2646 021700 2648 021702 2649 021703 2651 021706 2654 021707 2655 021716 2657 021720 2659 021724 2661 021736 2665 021750 2667 022011 2670 022055 2672 022122 2674 022165 2677 022200 2679 022226 2681 022255 2684 022256 2686 022270 2688 022275 2691 022311 2693 022316 2694 022326 2695 022331 2696 022335 2697 022365 2699 022374 2701 022376 2703 022437 2705 022450 2708 022453 2713 022460 2714 022464 ----------------------------------------------------------- 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