COMPILATION LISTING OF SEGMENT act_ctl_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 10/21/92 1607.2 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 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 act_ctl_: proc (p); 16 17 /* ACT_CTL_ - this procedure keeps records of usage for the system. 18* The usage data for each user is stored in his PDT entry. 19* Limits also in the PDT entry are checked and the user may be bumped. 20* 21* Special handling is given to the PDT entry for Initializer.SysDaemon. 22* It contains the total system uptime, and the initializer process CPU usage. 23* 24* There are the following entries: 25* 26* act_ctl_$init called when the system is brought up 27* act_ctl_$open_account called from "dialup_" when user identified 28* . .. this entrypoint makes an entrypoint in the accounting file 29* act_ctl_$close_account called from "dialup_" when user signs off. 30* act_ctl_$cp called from "dialup_" when process created (reset ate, check limit) 31* act_ctl_$dp called from "dialup_" when process destroyed (totals cputime) 32* act_ctl_$check called from "lg_ctl_" for permission to log user in 33* act_ctl_$update called every 15 minutes by event channel to update cpu time 34* act_ctl_$shift_cmnd_update called by shift command to do accounting update and switch to new shift 35* act_ctl_$act_ctl_close called when system shuts down 36* 37* There are also entrypoints to call from the console for testing. 38* 39* act_ctl_$act_ctl_disable turns off charging 40* act_ctl_$act_ctl_reable turns it on again 41* 42**/ 43 44 /* Originally coded by E. Stone, 9/25/69 */ 45 /* Modified by J. Grochow, 10/10 to fix bugs */ 46 /* Modified by J. Grochow to accept daemon calls, 1/21/70 */ 47 /* Modified by J. Grochow to automatic update, 3/1/70 */ 48 /* Converted to pl1 and modified by J. Grochow, 4/12/70 */ 49 /* Modified some more by J. Grochow, 7/8/70 */ 50 /* new user control 8/10/70 JMG */ 51 /* Inactive check 9/2/70 JMG, whotab THVV */ 52 /* daemon accounting 11/70 JMG */ 53 /* metering 3/71 THVV */ 54 /* modified for absentee 6/71 EDS */ 55 /* new accounting 2/72 THVV */ 56 /* 6180 version, as_error_table_, rework absentee, fix bugs, virtual cpu + frankstons 1/73 THVV */ 57 /* Modified 741226 by PG for audit msgs */ 58 /* Modified May 1976 by T. Casey to implement shift command and per-user cutoff warning thresholds */ 59 /* Modified 760819 by Roy Planalp to respect -brief flag, to pass text of 60* error msg to lg_ctl_, and to give user some grace when bumping for inactivity */ 61 /* Modified 770623 by Robert Coren to not use obsolete terminal type fields in ATE */ 62 /* Modified August 1977 by T. Casey to call device_acct_$broom when destroying 63* a process, and to not leave event calls masked if unable to lock pdte. */ 64 /* Modified May 1978 by T. Casey to pass old shift to load_ctl_$set_max_units */ 65 /* Modified November 1978 by T. Casey for new absentee control parameters */ 66 /* Modified April 1979 by T. Casey for MR7.0a to fix bugs in foreground absentee implementation. */ 67 /* Modified August 1979 by T. Casey for MR8.0 for session cost and process preservation across hangups. */ 68 /* shift change looping bug fixed December 1979, Ch Hornig */ 69 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 70 /* Modified March 1980 by T. Casey to add metering. */ 71 /* Modified June 1981 by E. N. Kittlitz for UNCA rate structures */ 72 /* Modified June 1981 by T. Casey for MR9.0 for new wakeup priorities. */ 73 /* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. */ 74 /* Modified December 1981, E. N. Kittlitz. user_warn controls */ 75 /* Modified May 1982, E. N. Kittlitz. New AS initialization. */ 76 /* Modified September 1982, E. N. Kittlitz. publish more stuff in answer_table */ 77 /* Modified 1984-07-12 BIM for login authorization ranges. */ 78 /* Modified 1985-01-11 by E. Swenson for new A.S. auditing */ 79 /* Modified 1985-01-21, BIM: proper any_other handler. */ 80 /* Modified 1985-03-28, E. Swenson to handle damaged PDTs at as 81* initialization. 82**/ 83 84 /****^ HISTORY COMMENTS: 85* 1) change(86-04-04,Herbst), approve(87-07-13,MCR7697), 86* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 87* Changed write_message proc to call asu_$blast_user. 88* 2) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 89* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 90* Correct error message documentation. 91* 3) change(86-05-20,Gilcrease), approve(86-05-22,MCR7369), 92* audit(86-06-23,LJAdams), install(86-06-30,MR12.0-1081): 93* Allow "weekly" cutoffs. SCP6250. 94* 4) change(86-08-03,Swenson), approve(86-08-13,MCR7512), 95* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 96* Moved code for printing "Your authorization is..." to dialup_ so that this 97* message can be displayed upon process reconnection. (Actual change date 98* was 85-08-03) 99* 5) change(87-02-24,Brunelle), approve(87-07-13,MCR7697), 100* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 101* Changed activity_unbump entrypoint to use installation_parms.warning_time 102* instead of installation_parms.update_time when making check for inactivity 103* since bump was scheduled. 104* 6) change(87-04-06,Brunelle), approve(87-07-13,MCR7697), 105* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 106* Added statements to set anstbl.current_time = clock () to the following 107* entrypoints: check, cp and activity_unbump. 108* 7) change(87-04-09,Brunelle), approve(87-07-13,MCR7694), 109* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 110* Set the value of system_area_ptr prior to passing it to 111* network_accounting_. 112* 8) change(87-04-27,GDixon), approve(87-07-13,MCR7741), 113* audit(87-07-22,Brunelle), install(87-08-03,MR12.1-1055): 114* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 115* 9) change(87-05-06,GDixon), approve(87-07-13,MCR7741), 116* audit(87-07-22,Brunelle), install(87-08-03,MR12.1-1055): 117* When mode = "test", call network_accounting_gate_$test. 118* 10) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 119* audit(87-07-22,Brunelle), install(87-08-03,MR12.1-1055): 120* A) Replace use of literals with named constants when referencing 121* ute.active. 122* B) Replace use of literals with named constants when referencing 123* ute.process_type. 124* 11) change(87-05-14,Brunelle), approve(87-07-13,MCR7697), 125* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 126* A) Add inactivity stabilization time of 200 milliseconds to inactivity 127* unbump check. 128* 12) change(87-05-14,Brunelle), approve(87-07-13,MCR7694), 129* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 130* A) Add code to display any NAT records not used in accounting update. 131* 13) change(87-06-11,Brunelle), approve(87-07-13,MCR7694), 132* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 133* A) Added code to check any unused net accting records after to call to 134* $get_process_total. 135* 14) change(87-06-28,GDixon), approve(87-07-13,MCR7694), 136* audit(87-07-22,Brunelle), install(87-08-03,MR12.1-1055): 137* A) Correct error messages printed after calls to 138* network_accounting_gate_. 139* B) Avoid signalling sub_error_ if network accounting initialization 140* fails. 141* 15) change(87-07-22,Brunelle), approve(87-07-22,MCR7694), 142* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 143* A) Remove call to initialize network accounting. It will go in 144* ls_server_request. 145* B) Conditionalize network accounting calls and update of data based on 146* anstbl.login_server_present. 147* 16) change(87-07-22,Brunelle), approve(87-07-22,MCR7741), 148* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 149* A) Correct error message documentation. 150* B) Remove entrypoints which are no longer called ($login_message & 151* $act_ctl_noupdate) 152* 17) change(87-07-22,Brunelle), approve(87-07-22,MCR7697), 153* audit(87-07-27,GDixon), install(87-08-03,MR12.1-1055): 154* Add code to cause an inactive disconnected process to be bumped 155* immediately instead of going through the normal warning sequence. 156* 18) change(87-07-28,Brunelle), approve(87-07-28,MCR7694), 157* audit(87-07-28,GDixon), install(87-08-03,MR12.1-1055): 158* Change so debug_na entrypoint calls network_accounting_gate_$debug to turn 159* on inner ring debugging. 160* 19) change(87-07-31,Brunelle), approve(87-07-31,MCR7694), 161* audit(87-08-01,GDixon), install(87-08-03,MR12.1-1055): 162* Check version from network accounting. 163* 20) change(87-08-06,GDixon), approve(87-08-06,MCR7694), 164* audit(87-08-06,Brunelle), install(87-08-06,MR12.1-1064): 165* Set network_account_array_ptr to null before testing to see if the login 166* server is present. Otherwise, the ptr never gets set but is tested in a 167* variety of places. 168* 21) change(87-08-12,Brunelle), approve(87-08-12,MCR7694), 169* audit(87-08-12,GDixon), install(87-08-13,MR12.1-1085): 170* Correct call to as_meter_$exit with NETUP_METER when no equivalent call 171* to as_meter_$enter has occurred. 172* 22) change(92-08-28,Schroth), approve(92-10-14,MCR8263), audit(92-10-15,Vu), 173* install(92-10-21,MR12.5-1038): 174* Correctly update whotab.next_shift_change_time when a manually set shift 175* crosses a defined shift boundary into the same shift as that set by the 176* operator shift command. phx21344. 177* END HISTORY COMMENTS */ 178 179 /* parameters */ 180 181 dcl p ptr parameter; 182 183 184 /* constants */ 185 186 dcl INACTIVITY_STABILIZATION_TIME fixed bin (71) int static options (constant) init (200000); 187 dcl MICROSECONDS_PER_HOUR fixed bin (35) int static options (constant) init (3600000000); 188 dcl MICROSECONDS_PER_MINUTE float bin (63) int static options (constant) init (6.0e7); 189 dcl MICROSECONDS_PER_WEEK fixed bin (71) int static options (constant) init (604800000000); 190 dcl MILLION fixed bin (35) int static options (constant) init (1000000); 191 dcl NEVER fixed bin (71) init (9435484800000000) internal static options (constant); 192 /* This date is 12/31/2199 0000. GMT */ 193 194 /* .. if Multics last this long we will have to fix */ 195 dcl NL char (1) int static options (constant) init (" 196 "); 197 dcl OPEN float bin init (1e37) internal static options (constant); 198 dcl QNAME (0:4) char (4) int static options (constant) init ( 199 "Q FG", 200 "Q 1", 201 "Q 2", 202 "Q 3", 203 "Q 4"); 204 dcl TOLERANCE float bin (63) int static options (constant) init (0.05); 205 /* Amount of discrepancy which will be ignored; 3 minutes/hour */ 206 207 208 /* Internal Static */ 209 210 dcl alarmfail fixed bin int static init (0); /* set when alarm clock failure detected */ 211 dcl initializer_pdtep ptr int static init (null); /* ptr to initializer PDT entry */ 212 dcl last_update_interval fixed bin (71) internal static; /* interval used to set timer */ 213 dcl mode char (4) aligned int static init ("norm"); 214 dcl next_update fixed bin (71) int static; /* time for next update */ 215 dcl static_label label int static; /* Label used if fault in update. */ 216 dcl static_nlogins fixed bin int static; /* Total sessions since startup. */ 217 dcl static_total_dollar_charge float bin int static; /* Total billed since startup. */ 218 dcl static_total_time_charged fixed bin (71) int static; /* Total CPU time charged. */ 219 dcl system_area_ptr ptr int static init (null); 220 dcl updatetime fixed bin (71) int static; /* time update last performed */ 221 222 223 /* Entries */ 224 225 dcl act_ctl_$update entry; 226 dcl adjust_cutoff_ entry (ptr, fixed bin (71)); 227 dcl as_any_other_handler_ entry (character (*), entry, label, label); 228 dcl as_meter_ entry (fixed bin (71), fixed bin (71), fixed bin (71), float bin, fixed bin, float bin, float bin, float bin); 229 dcl as_meter_$as_meter_init entry (fixed bin (71), fixed bin, fixed bin (71), fixed bin (71)); 230 dcl as_meter_$as_meter_stop entry; 231 dcl as_meter_$enter entry (fixed bin); 232 dcl as_meter_$exit entry (fixed bin); 233 dcl as_meter_$exit_values entry (fixed bin, fixed bin (34), fixed bin (71), fixed bin (71)); 234 dcl asu_$blast_user entry (ptr, char (*), char (*), fixed bin (35)); 235 dcl asu_$bump_code entry (ptr, fixed bin (35), char (8) aligned, fixed bin (35), fixed bin); 236 dcl asu_$bump_user entry (ptr, char (*), fixed bin (35), fixed bin); 237 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 238 dcl cu_$arg_count entry (fixed bin); 239 dcl date_time_ entry (fixed bin (71), char (*)); 240 dcl datebin_ entry (fixed bin (71), fixed bin, fixed bin, fixed bin, 241 fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin); 242 dcl datebin_$next_shift_change entry (fixed bin (71), fixed bin (71), fixed bin, fixed bin); 243 dcl datebin_$revert entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (71)); 244 dcl device_acct_$broom entry (ptr); 245 dcl device_acct_$update entry (ptr); 246 dcl get_system_free_area_ entry () returns (ptr); 247 dcl hcs_$wakeup entry (bit (*) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 248 dcl hphcs_$process_status entry (ptr); 249 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 250 dcl ioa_$rs entry options (variable); 251 dcl ioa_$rsnnl entry options (variable); 252 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 253 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 254 dcl ipc_$mask_ev_calls entry (fixed bin (35)); 255 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 256 dcl load_ctl_$load_level entry (fixed bin, float bin); 257 dcl load_ctl_$set_maxunits entry (fixed bin); 258 dcl network_accounting_gate_$debug entry (bit (1)); 259 dcl network_accounting_gate_$get_process_total entry (bit (36) aligned, ptr, ptr, char (*), fixed bin (35)); 260 dcl network_accounting_gate_$read_and_reset_table entry (ptr, ptr, char (*), fixed bin (35)); 261 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 262 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); 263 dcl set_lock_$unlock entry (bit (36) aligned, fixed bin (35)); 264 dcl sub_err_ entry () options (variable); 265 dcl sys_log_ entry options (variable); 266 dcl sys_log_$error_log entry options (variable); 267 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 268 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 269 270 271 /* External Static */ 272 273 dcl (as_error_table_$cut_proj_date, 274 as_error_table_$cut_proj_funds, 275 as_error_table_$cut_proj_other, 276 as_error_table_$cut_user_cut_msg, 277 as_error_table_$cut_user_date_msg, 278 as_error_table_$cut_user_mlim_msg, 279 as_error_table_$cut_user_shift_msg, 280 as_error_table_$inactive, 281 as_error_table_$proj_low_funds, 282 as_error_table_$user_warn_days, 283 as_error_table_$user_warn_funds, 284 as_error_table_$user_warn_pct, 285 as_error_table_$warn_proj_date) fixed bin (35) ext; 286 287 dcl (error_table_$lock_wait_time_exceeded, 288 error_table_$out_of_sequence) fixed bin (35) ext static; 289 290 291 /* Automatic */ 292 293 dcl absda fixed bin; /* variable used with datebin_ */ 294 dcl asmtep ptr; 295 dcl code fixed bin (35); /* error codes */ 296 dcl coredelta fixed bin (71); /* Memory usage since last update. */ 297 dcl cost float bin; /* Dollar charge since last update. */ 298 dcl cpudelta fixed bin (71); /* CPU since last update. */ 299 dcl crash_clock fixed bin (71); /* used during init */ 300 dcl cur_rs_ptr ptr; 301 dcl dd fixed bin; /* variable used with datebin_ */ 302 dcl did_charge float bin (63); /* for computing accounting errors */ 303 dcl discrepancy float bin (63); /* for computing accounting errors */ 304 dcl ec fixed bin (35); /* err code */ 305 dcl error_message char (500); /* returned by subroutines */ 306 dcl format char (100) aligned; 307 dcl hh fixed bin; /* variable used with datebin_ */ 308 dcl hrs fixed bin; /* format variable for logout message */ 309 dcl i fixed bin; /* temp */ 310 dcl icode char (4); /* ... id code */ 311 dcl interactive_signal char (8); 312 dcl io_ops_delta fixed bin (71); /* IO ops on terminal since last update. */ 313 dcl j fixed bin; /* temp */ 314 dcl jobid char (32); /* ... */ 315 dcl line char (168); /* Format variable. */ 316 dcl logdelta fixed bin (71); /* Connect since last update. */ 317 dcl mcode fixed bin (35); /* message code */ 318 dcl mel float bin; 319 dcl mhh float bin; 320 dcl mins fixed bin (17); 321 dcl minute fixed bin; /* variable used with datebin_ */ 322 dcl mlth fixed bin; /* Length of message. */ 323 dcl mm fixed bin; /* variable used with datebin_ */ 324 dcl mqu float bin; 325 dcl mrs float bin; /* estimated response */ 326 dcl mtc fixed bin (71); /* metering variable */ 327 dcl mti fixed bin (71); /* metering variable */ 328 dcl mui fixed bin (71); /* metering variable */ 329 dcl mws fixed bin; /* ... page meter */ 330 dcl ncrash fixed bin; /* used in determining how many left on */ 331 dcl nolog bit (1) aligned; /* Used by check. TRUE if no login. */ 332 dcl pagefaults fixed bin (34); 333 dcl pdtep ptr; /* ptr to user pdt entry, for new accounting */ 334 dcl pdtn char (32); /* name of pdt */ 335 dcl pdtp ptr; /* ptr to user pdt */ 336 dcl real_time fixed bin (71); 337 dcl satep ptr; /* ptr to sat entry for user project */ 338 dcl sd_ptr ptr; /* ptr to SysDaemon sate */ 339 dcl secs fixed bin (17); 340 dcl shf fixed bin; /* variable used with datebin_ */ 341 dcl short char (8) aligned; /* junk */ 342 dcl should_charge float bin (63); /* for computing accounting errors */ 343 dcl some_time_ago fixed bin (71); /* If has been blocked since before here, bump */ 344 dcl sss fixed bin; /* variable used with datebin_ */ 345 dcl total_dsa_charges float bin; 346 dcl ttykind char (32); /* ... */ 347 dcl vcpu_time fixed bin (71); 348 dcl wkd fixed bin; /* variable used with datebin_ */ 349 dcl yy fixed bin; /* variable used with datebin_ */ 350 351 352 /* Automatic Structures */ 353 354 dcl 1 abs_signal aligned, /* Wakeup message sent when bumping absentee user */ 355 2 type char (4), /* "alar" = cpu over, "inac" = inactive */ 356 2 index fixed bin (35); /* index in abs_user_tab */ 357 358 dcl 1 process_status_return aligned, /* structure returned by hphcs_$process_status */ 359 2 target_proc bit (36), /* Input process id. */ 360 2 total_page_faults fixed bin (35), /* Total page faults in process. */ 361 2 aptptr ptr, /* ptr to user APTE */ 362 2 up_exec fixed bin, /* execution state. 1=run, 4=block */ 363 2 up_mp fixed bin, /* multiprogramming state. */ 364 2 up_block fixed bin (71), /* time of last block */ 365 2 up_cpu fixed bin (71), /* CPU usage in microseconds */ 366 2 up_page fixed bin (71), /* memory usage in Frankstons */ 367 2 virtual_cpu fixed bin (71), /* Process virtual CPU time */ 368 2 extra2 fixed bin (71); 369 370 371 /* Based */ 372 373 dcl system_area area based (system_area_ptr); 374 dcl zap_abs fixed bin (71) based (addr (abs_signal)); /* for wakeup call */ 375 dcl zap_user fixed bin (71) based (addr (interactive_signal)); /* for wakeup call */ 376 377 /* Builtins */ 378 379 dcl (abs, addr, baseno, baseptr, before, binary, ceil, clock, divide, 380 fixed, float, index, length, max, min, mod, null, reverse, rtrim, substr, 381 verify) builtin; 382 383 /* Conditions */ 384 385 dcl any_other condition; 386 dcl seg_fault_error condition; 387 388 389 390 /* Program */ 391 392 init: entry (); 393 394 /* Entry called by as_init_ when system is being brought up */ 395 396 if mode = "dumm" then return; /* Was accounting disabled before startup? */ 397 if ^sc_stat_$Multics_typed | sc_stat_$Go_typed then do; 398 code = error_table_$out_of_sequence; 399 go to init_sub_error; 400 end; 401 if substr (sysdir, 1, 8) ^= ">system_" then mode = "test"; 402 403 /* now set event call channel to signal updating of accounting info */ 404 405 init1: ansp = as_data_$ansp; 406 call ipc_$create_ev_chn (anstbl.acct_update_chn, code); /* Set up event-call channel for acct update. */ 407 call ipc_$decl_ev_call_chn (anstbl.acct_update_chn, act_ctl_$update, null, ACCT_UPDATE_PRIO, code); 408 if code ^= 0 then do; 409 call sys_log_$error_log (SL_LOG_BEEP, code, "act_ctl_$init", "creating update channel"); 410 go to init_sub_error; 411 end; 412 anstbl.acct_alarm_fail = 0; 413 alarmfail = 0; /* Turn off switch says clock is late. */ 414 415 /* Find out what time and what shift it is */ 416 417 crash_clock = anstbl.current_time; /* Get best guess at time of crash or down. */ 418 anstbl.current_time = clock (); /* Read clock. */ 419 420 /* Before we trust the shift information left in the header of whotab from the last session, 421* we must check it for reasonableness, since datebin_ uses it to tell us what shift it is. */ 422 423 if whotab.next_shift_change_time > 424 anstbl.current_time + MICROSECONDS_PER_WEEK |/* shift end can never be > 1 week in future */ 425 whotab.last_shift_change_time >= 426 anstbl.current_time | /* start of current shift must be in the past */ 427 whotab.next_shift_change_time > /* shift length must be <= 1 week */ 428 whotab.last_shift_change_time + MICROSECONDS_PER_WEEK | 429 whotab.shift < 0 | whotab.shift > 7 then /* shift number can only be 0 to 7 */ 430 whotab.next_shift_change_time = 0; /* force datebin_ to look in shift table */ 431 432 /* because datebin_$next_shift_change uses the value of whotab.next_shift_change_time, 433* and further, initializes its output arguments before processing, we can't 434* just pass in whotab.next_shift_change_time as an argument. */ 435 436 begin; 437 dcl next_shift_change_time fixed bin (71); 438 dcl current_shift fixed bin; 439 dcl next_shift fixed bin; 440 441 call datebin_$next_shift_change (anstbl.current_time, next_shift_change_time, current_shift, next_shift); 442 whotab.next_shift_change_time = next_shift_change_time; 443 whotab.shift = current_shift; 444 end; 445 446 call datebin_ (anstbl.current_time, absda, mm, dd, yy, hh, minute, sss, wkd, shf); 447 448 if anstbl.shift ^= shf then do; /* if shift changed since last session */ 449 anstbl.shift = shf; /* save current shift */ 450 whotab.last_shift_change_time = anstbl.current_time; /* remember when it changed */ 451 end; 452 453 call datebin_$revert (mm, dd, yy, hh, 0, 0, next_update); 454 455 if installation_parms.acct_update <= 0 then do; 456 call sys_log_ (SL_LOG_BEEP, 457 "act_ctl_$init: illegal value (^d) for accounting update interval in installation_parms.", 458 installation_parms.acct_update); 459 call sub_err_ (0, "act_ctl_", "s"); 460 end; 461 462 do while (next_update < anstbl.current_time); /* compute next update time */ 463 next_update = next_update + installation_parms.acct_update * MILLION; 464 end; 465 call timer_manager_$alarm_wakeup (next_update, "00"b, anstbl.acct_update_chn); 466 last_update_interval = installation_parms.acct_update; /* Save for clock check (in case inst_parms changes) */ 467 updatetime = anstbl.current_time; /* Set time of last update. */ 468 469 static_total_time_charged = 0; /* Clear per-bootload counters. */ 470 static_total_dollar_charge = 0e0; /* ... */ 471 static_nlogins = 0; /* ... */ 472 ncrash = 0; /* Find out how many users were on when crashed. */ 473 call as_meter_$enter (FIXPDT_METER); 474 do i = 1 to sat.current_size; /* Yes. Scan sat for projects with users on */ 475 satep = addr (sat.project (i)); /* Get ptr to project entry. */ 476 if project.project_id = "SysDaemon" then do; /* Need to remember "SysDaemon" pdt location. */ 477 sd_ptr = satep; /* .. for filling in DUT entry for initializer */ 478 go to get_pdt; /* .. now search for initializer entry in pdt */ 479 end; 480 if project.n_users ^= 0 then do; /* Live project? */ 481 get_pdt: pdtn = project.project_id; /* Yes. Make name of its PDT. */ 482 j = index (pdtn, " "); /* ... */ 483 substr (pdtn, j, 4) = ".pdt"; /* ... */ 484 call initiate_file_ (pdtdir, pdtn, RW_ACCESS, pdtp, (0), code); 485 if code ^= 0 then do; 486 call sys_log_$error_log (SL_LOG_BEEP, code, 487 "act_ctl_$init", "Cannot unlock PDT ^a", 488 pathname_ (pdtdir, pdtn)); 489 go to new3; /* Hopeless. */ 490 end; 491 492 /**** The following code ensures makes sure the PDT is not damaged. If 493* it is, we just log (and print) an error and skip to the next PDT. */ 494 on seg_fault_error 495 begin; 496 call sys_log_$error_log (SL_LOG_BEEP, 0, 497 "act_ctl_$init", "The PDT is damaged. Cannot unlock ^a.", pathname_ (pdtdir, pdtn)); 498 goto new3; 499 end; 500 j = pdt.current_size; /* provoke seg_fault_error */ 501 revert seg_fault_error; 502 503 do j = 1 to pdt.current_size; /* Scan thru PDT looking for losers. */ 504 pdtep = addr (pdt.user (j)); /* Get ptr to user. */ 505 if user.person_id = "Initializer" then 506 if project.project_id = "SysDaemon" then 507 initializer_pdtep = pdtep; /* Remember where initializer entry is. */ 508 if user.last_update > crash_clock then crash_clock = user.last_update; 509 ncrash = ncrash + user.now_in; /* Count processes which died. */ 510 user.crashes = user.crashes + user.now_in; 511 user.now_in = 0; /* Now he's out. */ 512 user.n_foreground = 0; 513 user.n_background = 0; 514 user.n_interactive = 0; 515 user.n_disconnected = 0; 516 user.lock = "0"b; /* And entry is not locked. */ 517 end; 518 /**** Keep our KST tidy by terminating PDTs unless we really need them. */ 519 if project.project_id ^= "SysDaemon" then 520 call terminate_file_ (pdtp, 0, TERM_FILE_TERM, code); 521 end; 522 new3: project.n_users = 0; /* Clear project activity count. */ 523 end; 524 call as_meter_$exit (FIXPDT_METER); 525 if initializer_pdtep = null then do; /* If cannot find initializer entry, truble */ 526 call sys_log_ (SL_LOG_BEEP, "act_ctl_$init: cannot locate Initializer.SysDaemon pdt entry"); 527 go to init_sub_error; 528 end; 529 else do; /* Worked ok. Fill in some useful stuff. */ 530 dutp = as_data_$dutp; 531 utep = addr (dutbl.entry (1)); /* Initializer is always # 1 in DUT */ 532 ute.pdtep = initializer_pdtep; 533 ute.uprojp = sd_ptr; 534 initializer_pdtep -> user.logins = initializer_pdtep -> user.logins + 1; 535 end; 536 call as_meter_$as_meter_init (crash_clock, ncrash, next_update, last_update_interval); 537 if ncrash > 0 then initializer_pdtep -> user.crashes = initializer_pdtep -> user.crashes + 1; 538 539 if system_area_ptr = null 540 then system_area_ptr = get_system_free_area_ (); 541 542 return; 543 544 init_sub_error: 545 call sub_err_ (code, "act_ctl_$init", "s"); 546 547 check: entry (p, sp, wordx, e_text, codex); 548 549 /* Called by lg_ctl_. 550* Entrypoint is passed a pointer to the user and to the user's SAT entry. 551* It determines whether the user is cut off and if so, types out a message. 552* If the user is not permitted to log in, it returns an error code. */ 553 554 dcl wordx char (8) aligned; /* reason. */ 555 dcl e_text char (168) varying; /* long reason */ 556 dcl codex fixed bin (35); /* Nonzero if no login. */ 557 dcl sp ptr; /* Ptr to user SAT entry for his proj. */ 558 dcl dont_check bit (36) aligned; 559 560 utep = p; 561 satep = sp; 562 goto CHECK_COMMON; 563 564 check_for_process_creation: 565 entry (P_utep, wordx, e_text, codex); 566 567 dcl P_utep ptr parameter; /* pointer to user's UTE */ 568 569 utep = P_utep; 570 571 satep = ute.uprojp; 572 goto CHECK_COMMON; 573 574 CHECK_COMMON: 575 if mode = "dumm" then return; /* If accounting is off, forget it. */ 576 ansp = as_data_$ansp; 577 anstbl.current_time = clock (); /* Read clock. */ 578 codex = 0; 579 dont_check = ""b; /* bits set when we squawk about something */ 580 mcode = 0; 581 if project.cutoff ^= " " then do; /* See if project is cut off */ 582 nolog = "0"b; /* probably non-fatal. */ 583 if project.cutoff = "X" then do; /* X = no login, out of funds */ 584 nolog = "1"b; 585 mcode = as_error_table_$cut_proj_funds; 586 end; 587 else if project.cutoff = "W" then ; /* "almost out of funds" is handled below */ 588 else if project.cutoff = "Y" then do; 589 mcode = as_error_table_$cut_proj_funds; 590 dont_check = "1"b; /* already talked about money */ 591 end; 592 else if project.cutoff = "T" then do; /* T = no login, out of date */ 593 nolog = "1"b; 594 mcode = as_error_table_$cut_proj_date; 595 end; 596 else if project.cutoff = "R" then ; /* "near cutoff date" is handled below */ 597 else if project.cutoff = "S" then do; 598 mcode = as_error_table_$cut_proj_date; 599 dont_check = dont_check | "01"b; /* indicate complained about date */ 600 end; 601 else mcode = as_error_table_$cut_proj_other; 602 if nolog then do; /* Login permitted? */ 603 codex = mcode; /* no */ 604 call convert_status_code_ (mcode, wordx, format); 605 if format ^= "" /* If installation has this msg */ 606 then e_text = substr (format, 1, length (format) + 1 - verify (reverse (format), " ")) || NL; 607 else e_text = ""; 608 return; 609 end; 610 else if (mcode ^= 0 & ^ute.at.brief) 611 then call Write_User_Message (mcode, (wordx)); 612 end; 613 614 pdtep = ute.pdtep; /* locate pdt entry */ 615 616 call adjust_cutoff_ (pdtep, anstbl.current_time); /* for cutoff_warning and checklim */ 617 618 if ^ute.at.brief /* if user didn't say -bf */ 619 then call cutoff_warning (dont_check); /* maybe print "almost out of funds" or "near cutoff date" */ 620 call checklim (ute.queue, mcode); /* Limit stop check. */ 621 /* If no go, puts reason in mcode, short, line */ 622 if mcode ^= 0 then do; /* wups */ 623 codex = mcode; /* Tell lg_ctl_ */ 624 wordx = short; 625 /* mlth set by checklim... */ 626 e_text = substr (line, 1, mlth); /* tell user why he was refused */ 627 return; 628 end; 629 return; 630 631 /* Entry called when user is logging in */ 632 /* called by dialup_, absentee_user_manager_, daemon_user_manager_ & ftp_dialup_ */ 633 634 open_account: entry (p); 635 636 if mode = "dumm" then return; /* accounting disabled */ 637 utep = p; /* Copy ptr to answer table entry. */ 638 if ute.active < NOW_LOGGED_IN then return; /* not logged in */ 639 ansp = as_data_$ansp; 640 anstbl.current_time = clock (); /* Read clock. */ 641 642 if ute.process_type = PT_ABSENTEE then do; 643 ttykind = "Absentee"; /* ... */ 644 i = 169 - index (reverse (ute.input_seg), ">"); 645 jobid = "(" || before (substr (ute.input_seg, i + 1), ".absin") || ")"; 646 icode = QNAME (ute.queue); 647 end; 648 else if ute.process_type = PT_DAEMON then do; 649 ttykind = "Daemon"; /* ... */ 650 jobid = ""; /* ... */ 651 icode = ute.tty_id_code; /* ... */ 652 end; 653 else do; /* interactive */ 654 ttykind = ute.terminal_type; 655 jobid = ""; /* ... */ 656 icode = ute.tty_id_code; /* ... */ 657 end; 658 static_nlogins = static_nlogins + 1; /* Count one login. */ 659 if asmtp ^= null then 660 asmt.logins (ute.process_type) = asmt.logins (ute.process_type) + 1; /* also count them by process type */ 661 662 pdtep = ute.pdtep; /* extract user pdt ptr */ 663 user.now_in = user.now_in + 1; /* no need to lock entry, just doing aos */ 664 if ute.queue <= 0 then do; /* accounting treats all foreground processes as interactive */ 665 user.logins = user.logins + 1; 666 user.n_foreground = user.n_foreground + 1; 667 if ute.process_type = PT_INTERACTIVE then /* but we must maintain an accurate count */ 668 user.n_interactive = user.n_interactive + 1; /* of real interactive processes */ 669 end; 670 else do; 671 user.absentee (ute.queue).jobs = user.absentee (ute.queue).jobs + 1; 672 user.n_background = user.n_background + 1; 673 end; 674 user.last_update = anstbl.current_time; /* Start last update for user. */ 675 676 check_update: 677 /* compute timer lag (if any) */ 678 discrepancy = anstbl.current_time - updatetime - (last_update_interval * MILLION); 679 if discrepancy > 60e6 then do; /* if clock is more than 1 minute late */ 680 call sys_log_ (SL_LOG, 681 "act_ctl_: alarm clock late or failing by ^.2f mins", 682 discrepancy / MICROSECONDS_PER_MINUTE); 683 anstbl.acct_alarm_fail = 1; /* publish that it failed this bootload */ 684 alarmfail = 1; /* set flag */ 685 call act_ctl_$update; /* call update manually */ 686 alarmfail = 0; /* reset switch */ 687 end; 688 689 return; 690 691 /* Entry called on process creation */ 692 /* called by dialup_, absentee_user_manager_, daemon_user_manager_ & ftp_dialup_ */ 693 694 cp: entry (p); 695 696 ansp = as_data_$ansp; 697 anstbl.current_time = clock (); /* Read clock. */ 698 utep = p; /* Copy answer table entry ptr. */ 699 ute.cpu_this_process = 0; /* no usage so far, of course */ 700 ute.mem_this_process = 0; /* ... */ 701 ute.last_update_time = clock (); /* ... */ 702 703 if ute.queue = 0 & ^ute.adjust_abs_q_no then do; /* Check limits at new_proc for interactive. */ 704 if ute.n_processes > 1 then do; 705 pdtep = ute.pdtep; /* Obtain ptr to user PDT entry. */ 706 call adjust_cutoff_ (pdtep, anstbl.current_time); 707 call checklim (0, mcode); /* Check limits */ 708 if mcode ^= 0 then do; /* splat */ 709 call asu_$bump_user (utep, substr (line, 1, mlth), code, 710 installation_parms.warning_time); 711 call sys_log_ (SL_LOG, "act_ctl_: bumping ^a.^a ^a", ute.person, ute.project, 712 substr (line, 1, mlth)); 713 end; 714 end; 715 end; 716 return; 717 718 shift_cmnd_update: entry; 719 720 /* entry point to do an accounting update when shift is changed by shift command */ 721 /* called by admin_ */ 722 723 dcl shift_cmnd bit (1) aligned; 724 shift_cmnd = "1"b; 725 goto update_common; 726 727 /* update entry point to find all processes and log their data */ 728 /* called automatically by timer_manager call based on installation_parms.update_time */ 729 730 update: entry; 731 shift_cmnd = ""b; 732 update_common: 733 734 if mode = "dumm" then return; /* accounting disabled */ 735 736 dcl up_word char (12) aligned; /* for update message */ 737 738 ansp = as_data_$ansp; 739 anstbl.acct_last_update_time, anstbl.current_time = clock (); /* Read clock. */ 740 some_time_ago = anstbl.current_time - installation_parms.inactive_time * MILLION; 741 call ipc_$mask_ev_calls (ec); /* in case wait on lock */ 742 static_label = updret1; /* Set up exit if fault during update. */ 743 on any_other 744 call as_any_other_handler_ ("act_ctl_", NULL_PROC, static_label, static_label); 745 call as_meter_$enter (ACCTUP_METER); 746 747 if alarmfail ^= 0 then up_word = "Manual"; /* Make message for operator. */ 748 else up_word = "Automatic"; /* ... */ 749 if shift_cmnd then up_word = "Shift cmnd"; /* ... */ 750 751 rescan: call datebin_ (anstbl.current_time, absda, mm, dd, yy, hh, minute, sss, wkd, shf); 752 753 /* get accounting data for all current DSA network connections */ 754 network_account_array_ptr = null (); 755 if anstbl.login_server_present then do; 756 call as_meter_$enter (NETUP_METER); 757 call network_accounting_gate_$read_and_reset_table 758 (system_area_ptr, network_account_array_ptr, error_message, 759 code); 760 if code ^= 0 then 761 call sys_log_$error_log (SL_LOG_BEEP, code, 762 "act_ctl_$update", "Error from " || error_message); 763 else do; 764 if network_account_array_ptr ^= null then do; 765 if network_account_array.version ^= NET_ACCT_ARRAY_VERSION_1 then do; 766 call sys_log_ (SL_LOG_BEEP, 767 "act_ctl_$update: Net accounting array version (^a) not supported. Expected version (^a)", 768 network_account_array.version, NET_ACCT_ARRAY_VERSION_1); 769 free network_account_array in (system_area); 770 network_account_array_ptr = null; 771 end; 772 end; 773 end; 774 call as_meter_$exit (NETUP_METER); 775 end; 776 777 do i = 1 to anstbl.current_size; /* Look at all interactive users. */ 778 utep = addr (anstbl.entry (i)); /* Get ptr to answer table entry. */ 779 static_label = updend; /* if error, try next guy */ 780 if ute.active ^= NOW_HAS_PROCESS then go to updend; /* Does user have a process? */ 781 if ute.destroy_flag > WAIT_LOGOUT_SIG then go to updend; /* Process is being destroyed, ignore it */ 782 pdtep = ute.pdtep; /* Yes. set up ptrs and update him. */ 783 call update_user; /* Update all usage. */ 784 if ute.preempted > 0 then go to updend; /* don't kick a man when he's down */ 785 call adjust_cutoff_ (pdtep, anstbl.current_time); 786 call checklim (0, mcode); /* User over limit? */ 787 if mcode ^= 0 then do; /* yup */ 788 call asu_$bump_user (utep, substr (line, 1, mlth), code, installation_parms.warning_time); 789 call sys_log_ (SL_LOG, "act_ctl_: bumping ^a.^a ^a", ute.person, ute.project, substr (line, 1, mlth)); 790 end; 791 792 /* now see if user should be bumped for inactivity */ 793 794 if up_exec = 5 /* Is process stopped? */ 795 | up_exec = 4 then do; /* .. or blocked? */ 796 check_time: if up_block >= some_time_ago then go to updend; 797 if ute.at.nobump then go to updend; /* no bump daemons */ 798 if ute.uflags.disconnected then do; 799 800 /* disconnected processes get bumped NOW */ 801 interactive_signal = "bump"; /* Sending wakeup to dialup_ saying blocked too long */ 802 call hcs_$wakeup (as_data_$as_procid, ute.event, zap_user, code); 803 end; 804 else do; 805 806 /* Give the user some time to call up and cancel the bump, 807* or finish his work up gracefully */ 808 call asu_$bump_code (utep, as_error_table_$inactive, short, code, installation_parms.warning_time); 809 call sys_log_ (SL_LOG, "act_ctl_: bumping ^a.^a for inactivity", ute.person, ute.project); 810 end; 811 end; 812 813 updend: static_label = updret1; /* If run off end of table or somethng. */ 814 end; 815 816 /* Now update usage for daemons. */ 817 818 dutp = as_data_$dutp; 819 do i = 1 to dutbl.current_size; /* Same sort of scan. */ 820 utep = addr (dutbl.entry (i)); /* Use the fact that anstbl and dutbl look same */ 821 static_label = skip_dmn; /* Set up ucs transfer to go to next daemon. */ 822 if ute.active ^= NOW_HAS_PROCESS then go to skip_dmn; 823 /* skip if nobody there */ 824 pdtep = ute.pdtep; /* Get ptr to PDT entry for daemon */ 825 call update_user; /* Charge daemon. (Gets initializer too.) */ 826 skip_dmn: static_label = updret1; 827 end; 828 829 autp = as_data_$autp; 830 do i = 1 to autbl.current_size; /* Now update absentees. */ 831 utep = addr (autbl.entry (i)); 832 static_label = skip_abs; /* in case fault */ 833 if ute.active = NOW_FREE then go to skip_abs; 834 pdtep = ute.pdtep; 835 call update_user; /* Update all time counters */ 836 837 if divide (ute.cpu_this_process, MILLION, 35, 0) > ute.max_cpu_time then 838 if ^ute.at.nobump then do; /* If over-ran cpu limit. */ 839 call sys_log_ (SL_LOG, "act_ctl_: bumping abs^d ^a.^a - too much time", 840 i, ute.person, ute.project); 841 abs_signal.type = "alar"; /* Sending wake to aum saying out of time */ 842 go to send_wakeup; 843 end; 844 if up_exec = 4 then do; 845 if up_block >= some_time_ago then go to skip_abs; 846 if ute.uflags.suspended then goto skip_abs; /* don't bump suspended job for inactivity */ 847 call sys_log_ (SL_LOG, "act_ctl_: bumping abs^d ^a.^a - inactive too long", 848 i, ute.person, ute.project); 849 abs_signal.type = "inac"; /* Sending wake to aum saying blocked too long */ 850 send_wakeup: abs_signal.index = i; /* .. set index for speedy finding of user */ 851 call hcs_$wakeup (whotab.abs_procid, whotab.abs_event, zap_abs, code); 852 end; 853 854 skip_abs: static_label = updret1; 855 end; 856 857 /* free network_account_array in system area */ 858 if network_account_array_ptr ^= null then do; 859 call CHECK_NETWORK_ACCOUNTING_USE; 860 free network_account_array in (system_area); 861 network_account_array_ptr = null; 862 end; 863 864 call as_meter_ (mtc, mti, mui, mrs, mws, mhh, mel, mqu); 865 866 /* to see if two numbers are relatively equal, we use the following equation: 867* . |A-B| 868* . ----- < TOLERANCE 869* . |A+B| 870* . 871* if this relation is true, A and B are equal within the "tolerance". 872* due to the actual implementation (multiplying both sides by (A+B)), 873* A+B must not be zero. 874**/ 875 876 should_charge = float (mtc - mti, 63); /* total availability. */ 877 did_charge = float (static_total_time_charged, 63); /* did charge this amount */ 878 discrepancy = should_charge - did_charge; /* and this is the error term. */ 879 880 if discrepancy ^= 0e0 /* equation doesn't work if zero (and error is zero anyway!) */ 881 then if abs (discrepancy) >= TOLERANCE * abs (should_charge + did_charge) 882 then if mode ^= "test" then do; /* doesn't work in test mode... */ 883 call sys_log_ (SL_LOG, "act_ctl_: discrepancy of ^.2f mins", discrepancy / MICROSECONDS_PER_MINUTE); 884 call sys_log_ (SL_LOG_SILENT, "act_ctl_: charged ^.2f, available ^.2f mins", 885 (did_charge / MICROSECONDS_PER_MINUTE), (should_charge / MICROSECONDS_PER_MINUTE)); 886 end; 887 if shf ^= anstbl.shift then do; /* Has shift changed? */ 888 call sys_log_ (SL_LOG, "act_ctl_: changing shift from ^d to ^d", anstbl.shift, shf); 889 i = anstbl.shift; /* remember old shift */ 890 anstbl.shift = shf; 891 892 if ^shift_cmnd then do; /* shift command sets whotab stuff */ 893 whotab.last_shift_change_time = anstbl.current_time; /* but we do it here at other shift changes */ 894 call datebin_$next_shift_change (anstbl.current_time, whotab.next_shift_change_time, whotab.shift, (0)); 895 end; 896 897 call load_ctl_$set_maxunits (i); /* The rules may have changed */ 898 go to rescan; /* Catch users with zero shift limit on new shift */ 899 end; 900 else if anstbl.current_time >= whotab.next_shift_change_time then 901 call datebin_$next_shift_change (anstbl.current_time, whotab.next_shift_change_time, (0), (0)); 902 903 call load_ctl_$load_level (binary (mqu * 1e1), (mui * 1e1) / mtc); 904 updret1: static_label = updret2; 905 if alarmfail ^= 0 then go to updret2; /* may have been called manually */ 906 if shift_cmnd then goto updret2; /* or called by the shift command */ 907 next_update = next_update + installation_parms.acct_update * MILLION; 908 last_update_interval = installation_parms.acct_update; /* save for alarm clock check */ 909 call timer_manager_$alarm_wakeup (next_update, "00"b, anstbl.acct_update_chn); 910 updret2: static_label = return_immediately; 911 updatetime = anstbl.current_time; /* Remember when we did it */ 912 call ipc_$unmask_ev_calls (ec); /* remember to allow logins again */ 913 call as_meter_$exit_values (ACCTUP_METER, pagefaults, vcpu_time, real_time); 914 call sys_log_ (SL_LOG, 915 "act_ctl_: ^a update: users = ^d, pf=^d, vcpu=^.3f, rt=^.3f^[, answer table locked^]^[, install(s) pending^]", 916 up_word, anstbl.n_users, pagefaults, vcpu_time / 1.0e6, real_time / 1.0e6, 917 (anstbl.lock_count ^= 0), anstbl.update_pending); 918 return_immediately: 919 return; 920 921 /* This entry is called whenever a process is destroyed, including at logout */ 922 /* called by dialup_, absentee_user_manager_, daemon_user_manager_ & ftp_dialup_ */ 923 924 dp: entry (p); 925 if mode = "dumm" then return; /* accounting disabled */ 926 utep = p; /* Copy ptr to answer table entry. */ 927 928 ansp = as_data_$ansp; 929 anstbl.current_time = clock (); /* Read clock. */ 930 931 cpudelta = ute.cpu_this_process; /* dpg_ bumped cpu_usage */ 932 logdelta = anstbl.current_time - ute.last_update_time; 933 coredelta = ute.mem_this_process; /* ... */ 934 io_ops_delta = 0; /* for now */ 935 static_total_time_charged = static_total_time_charged + cpudelta; 936 937 pdtep = ute.pdtep; /* get ptr to user pdte */ 938 if pdtep = null then go to check_update; /* If null, forget update. */ 939 user.last_update = anstbl.current_time; /* Note update. */ 940 call ipc_$mask_ev_calls (ec); /* In case wait on lock, don't allow ev call. */ 941 call set_lock_$lock (user.lock, 300, ec); /* lock user entry so can update charges */ 942 call ipc_$unmask_ev_calls ((0)); /* be sure not to leave them masked, whatever else happens */ 943 if ec = error_table_$lock_wait_time_exceeded then do; 944 call sys_log_$error_log (SL_LOG_BEEP, ec, "act_ctl_", "While destroying proc for ^a.^a", 945 ute.person, ute.project); /* Fuss. */ 946 go to check_update; /* But let him off easy. */ 947 end; 948 if ute.queue = 0 then call charge_interactive; /* Interactive user? */ 949 else if ute.queue < 0 then call charge_daemon; /* Daemon? */ 950 else call charge_abs; /* Other internal proc for absentees. */ 951 call device_acct_$broom (utep); /* clean up any device_table slots for this process */ 952 953 /* update any final DSA network charges for this user */ 954 network_account_array_ptr = null; 955 if anstbl.login_server_present then do; 956 call as_meter_$enter (NETUP_METER); 957 call network_accounting_gate_$get_process_total (ute.proc_id, 958 system_area_ptr, network_account_array_ptr, error_message, 959 code); 960 if code ^= 0 then 961 call sys_log_$error_log (SL_LOG_BEEP, code, "act_ctl_$dp", 962 "Error from " || error_message); 963 else do; 964 if network_account_array_ptr ^= null then do; 965 if network_account_array.version ^= NET_ACCT_ARRAY_VERSION_1 then do; 966 call sys_log_ (SL_LOG_BEEP, 967 "act_ctl_$dp: Net accounting array version (^a) not supported. Expected version (^a)", 968 network_account_array.version, NET_ACCT_ARRAY_VERSION_1); 969 free network_account_array in (system_area); 970 network_account_array_ptr = null; 971 end; 972 end; 973 call UPDATE_NETWORK_ACCOUNTING (utep); 974 975 /* free network_account_array in system area */ 976 call CHECK_NETWORK_ACCOUNTING_USE; 977 if network_account_array_ptr ^= null then do; 978 free network_account_array in (system_area); 979 network_account_array_ptr = null; 980 end; 981 end; 982 call as_meter_$exit (NETUP_METER); 983 end; 984 985 call set_lock_$unlock (user.lock, ec); /* Done with PDT entry. */ 986 987 go to check_update; /* Should clock have rung? */ 988 989 /* This entrypoint is called when a user logs out. */ 990 /* called by dialup_, absentee_user_manager_, daemon_user_manager_ & ftp_dialup_ */ 991 992 close_account: entry (p); 993 994 utep = p; /* Copy ptr to answer tb */ 995 996 if mode = "dumm" then return; /* accounting disabled */ 997 998 if ute.active < NOW_LOGGED_IN then return; /* Ignore if nobody there. */ 999 ansp = as_data_$ansp; 1000 anstbl.current_time = clock (); /* Read clock. */ 1001 if ute.process_type = PT_ABSENTEE then do; 1002 ttykind = "Absentee"; /* .. */ 1003 icode = QNAME (ute.queue); 1004 end; 1005 else if ute.process_type = PT_DAEMON then do; 1006 ttykind = "Daemon"; /* .. */ 1007 icode = ute.tty_id_code; /* .. */ 1008 end; 1009 else do; /* Interactive */ 1010 if ute.uflags.disconnected then 1011 ttykind = "DISCONNECTED"; 1012 else ttykind = ute.terminal_type; 1013 icode = ute.tty_id_code; /* .. */ 1014 end; 1015 pdtep = ute.pdtep; /* get ptr to user pdte */ 1016 if pdtep ^= null then do; 1017 user.now_in = decrement_and_check (user.now_in, "now_in"); 1018 if ute.queue <= 0 then do; 1019 user.n_foreground = decrement_and_check ((user.n_foreground), "n_foreground"); 1020 if ute.process_type = PT_INTERACTIVE then do; 1021 user.n_interactive = decrement_and_check ((user.n_interactive), "n_interactive"); 1022 if ute.disconnected then 1023 user.n_disconnected = decrement_and_check ((user.n_disconnected), "n_disconnected"); 1024 end; 1025 end; 1026 else user.n_background = decrement_and_check ((user.n_background), "n_background"); 1027 end; 1028 1029 if asmtp ^= null then 1030 asmt.logouts (ute.process_type) = asmt.logouts (ute.process_type) + 1; 1031 /* count logouts for metering */ 1032 1033 go to check_update; /* Done. */ 1034 1035 /* entry point called when system shutdown */ 1036 /* called by as_init_ */ 1037 1038 act_ctl_close: entry; 1039 1040 if mode = "dumm" then return; /* accounting disabled */ 1041 1042 ansp = as_data_$ansp; 1043 anstbl.current_time = clock (); /* Get time of shutdown */ 1044 1045 call as_meter_ (mtc, mti, mui, mrs, mws, mhh, mel, mqu); 1046 call as_meter_$as_meter_stop; /* Stop metering. */ 1047 1048 secs = divide (static_total_time_charged, MILLION, 35, 0); 1049 mins = divide (secs, 60, 35, 0); /* Format last message. */ 1050 secs = mod (secs, 60); /* .. */ 1051 hrs = divide (mins, 60, 35, 0); /* .. */ 1052 mins = mod (mins, 60); /* .. */ 1053 call sys_log_ (SL_LOG, "act_ctl_: shutdown, ^d ^.2f ^.2f ^.2f ^.2f ^d:^d:^d $^.2f", 1054 static_nlogins, mqu, mel, mhh, mrs, 1055 hrs, mins, secs, static_total_dollar_charge); 1056 mode = "dumm"; /* disable accounting */ 1057 return; 1058 1059 1060 /* entry to see if process which has bump pending can have bump cancelled 1061* due to activity since warning of bump */ 1062 /* called by dialup_ */ 1063 1064 activity_unbump: entry (a_atep, a_code); /* see if a user is now active */ 1065 1066 dcl a_atep ptr; 1067 dcl a_code fixed bin (35); 1068 1069 a_code = 0; /* assume the best */ 1070 ansp = as_data_$ansp; 1071 anstbl.current_time = clock (); /* Read clock. */ 1072 some_time_ago = anstbl.current_time - installation_parms.warning_time * MILLION 1073 + INACTIVITY_STABILIZATION_TIME; 1074 call ipc_$mask_ev_calls (ec); /* in case wait on lock */ 1075 static_label = auret1; 1076 on any_other call as_any_other_handler_ ("act_ctl_", NULL_PROC, static_label, static_label); 1077 1078 utep = a_atep; 1079 target_proc = ute.proc_id; /* set up for call */ 1080 call hphcs_$process_status (addr (process_status_return)); /* get process usage */ 1081 1082 if aptptr ^= null & up_exec = 4 & up_block < some_time_ago then 1083 a_code = as_error_table_$inactive; /* still no good */ 1084 if debug_ia_sw then do; /* DEBUG */ 1085 call sys_log_ (SL_LOG, "unbump check for ^a.^a, state = ^d, limit time = ^d, blocked at ^d, delta = ^d", 1086 ute.person, ute.project, up_exec, some_time_ago, up_block, some_time_ago - up_block); 1087 end; 1088 auret1: call ipc_$unmask_ev_calls (ec); 1089 return; 1090 1091 1092 /* entry points to disable and reenable accounting for testing purposes */ 1093 1094 act_ctl_disable: entry; 1095 1096 mode = "dumm"; 1097 call sys_log_ (SL_LOG, "act_ctl_: accounting disabled"); 1098 return; 1099 1100 act_ctl_reable: entry; 1101 1102 mode = "norm"; /* Turn accounting back on. */ 1103 call sys_log_ (SL_LOG, "act_ctl_: accounting enabled."); 1104 ansp = as_data_$ansp; 1105 if anstbl.acct_update_chn = 0 then go to init1; /* Have we started accounting? */ 1106 return; 1107 1108 dcl debug_ia_sw bit (1) int static init ("0"b); 1109 dcl ctlarg char (*); 1110 1111 debug_ia: entry (ctlarg); 1112 call cu_$arg_count (i); 1113 if i = 0 then 1114 goto debug_ia_return; 1115 if ctlarg = "on" then 1116 debug_ia_sw = "1"b; 1117 else if ctlarg = "off" then 1118 debug_ia_sw = "0"b; 1119 debug_ia_return: 1120 call sys_log_ (SL_LOG, "act_ctl_: Inactivity debug ^[on^;off^]", debug_ia_sw); 1121 return; 1122 1123 1124 dcl debug_na_sw bit (1) int static init ("0"b); 1125 1126 debug_na: entry (ctlarg); 1127 call cu_$arg_count (i); 1128 if i = 0 then 1129 goto debug_na_return; 1130 if ctlarg = "on" then 1131 debug_na_sw = "1"b; 1132 else if ctlarg = "off" then 1133 debug_na_sw = "0"b; 1134 call network_accounting_gate_$debug (debug_na_sw); 1135 debug_na_return: 1136 call sys_log_ (SL_LOG, "act_ctl_: Network accounting debug ^[on^;off^]", debug_na_sw); 1137 return; 1138 1139 1140 1141 /* internal subroutines */ 1142 1143 /* This procedure calls the hardcore to find a process's usage, and then charges the usage 1144* via a call to charge_interactive, charge_daemon, or charge_abs. */ 1145 1146 update_user: proc; 1147 1148 target_proc = ute.proc_id; /* set up for call */ 1149 call hphcs_$process_status (addr (process_status_return)); /* get process usage */ 1150 if aptptr = null then do; /* Is user process there? */ 1151 call sys_log_ (SL_LOG_BEEP, "act_ctl_: process ^12.3b for ^a.^a vanished", ute.proc_id, ute.person, 1152 ute.project); 1153 call asu_$bump_user (utep, "Process lost", code, 0); 1154 return; /* Can't update him. */ 1155 end; 1156 1157 cpudelta = process_status_return.virtual_cpu - ute.cpu_this_process; /* Calculate usage in process. */ 1158 logdelta = anstbl.current_time - ute.last_update_time; 1159 coredelta = process_status_return.up_page - ute.mem_this_process; 1160 io_ops_delta = 0; /* for now */ 1161 1162 call set_lock_$lock (user.lock, 15, ec); /* lock user pdt entry */ 1163 if ec = error_table_$lock_wait_time_exceeded then go to ugh1; 1164 static_label = ugh; /* if error in this section, unlock user */ 1165 ute.cpu_this_process = process_status_return.virtual_cpu; /* Fix up anstbl entry for next time. */ 1166 ute.mem_this_process = process_status_return.up_page; /* ... */ 1167 ute.last_update_time = anstbl.current_time; 1168 static_total_time_charged = static_total_time_charged + cpudelta; 1169 user.last_update = anstbl.current_time; /* Note update in PDT */ 1170 if ute.queue = 0 then call charge_interactive; 1171 else if ute.queue < 0 then call charge_daemon; 1172 else call charge_abs; 1173 call device_acct_$update (utep); /* charge for tapes etc. */ 1174 1175 /* update network accounting for this user */ 1176 if anstbl.login_server_present then do; 1177 call as_meter_$enter (NETUP_METER); 1178 call UPDATE_NETWORK_ACCOUNTING (utep); 1179 call as_meter_$exit (NETUP_METER); 1180 end; 1181 1182 ugh: call set_lock_$unlock (user.lock, ec); /* Now free PDT entry. */ 1183 ugh1: return; 1184 1185 end update_user; 1186 1187 1188 1189 /* This procedure charges an absentee for his usage. "pdtep", "atep", and the deltas must be set up. */ 1190 1191 charge_abs: proc; 1192 1193 dcl ii fixed bin; 1194 1195 ii = ute.queue; /* Extract queue number. */ 1196 user.absentee (ii).cpu = user.absentee (ii).cpu + cpudelta; 1197 user.absentee (ii).memory = user.absentee (ii).memory + coredelta; 1198 cost = cpudelta * rs_ptrs (ute.rs_number) -> rate_structure.abs_cpu_price (ii) / MICROSECONDS_PER_HOUR + 1199 coredelta * rs_ptrs (ute.rs_number) -> rate_structure.abs_mem_price (ii) / 1e6; 1200 user.absentee (ii).charge = user.absentee (ii).charge + cost; 1201 user.absolute_spent = user.absolute_spent + cost; 1202 user.dollar_charge = user.dollar_charge + cost; 1203 ute.session_cost = ute.session_cost + cost; 1204 static_total_dollar_charge = static_total_dollar_charge + cost; 1205 1206 end charge_abs; 1207 1208 1209 1210 /* This procedure charges an interactive user for usage. "pdtep" and the deltas must be setup */ 1211 1212 charge_interactive: proc; 1213 1214 dcl ishft fixed bin; 1215 1216 ishft = anstbl.shift; 1217 user.interactive.cpu (ishft) = user.interactive.cpu (ishft) + cpudelta; 1218 user.interactive.connect (ishft) = user.interactive.connect (ishft) + logdelta; 1219 user.interactive.core (ishft) = user.interactive.core (ishft) + coredelta; 1220 user.interactive.io_ops (ishft) = user.interactive.io_ops (ishft) + io_ops_delta; 1221 cost = cpudelta * rs_ptrs (ute.rs_number) -> rate_structure.cpu_price (ishft) / MICROSECONDS_PER_HOUR + 1222 coredelta * rs_ptrs (ute.rs_number) -> rate_structure.core_price (ishft) / 1e6 + 1223 logdelta * rs_ptrs (ute.rs_number) -> rate_structure.log_base_price (ishft) / MICROSECONDS_PER_HOUR + 1224 io_ops_delta * rs_ptrs (ute.rs_number) -> rate_structure.io_ops_price (ishft) / MICROSECONDS_PER_HOUR; 1225 1226 user.interactive.charge (ishft) = user.interactive.charge (ishft) + cost; 1227 user.dollar_charge = user.dollar_charge + cost; 1228 user.absolute_spent = user.absolute_spent + cost; 1229 ute.session_cost = ute.session_cost + cost; 1230 static_total_dollar_charge = static_total_dollar_charge + cost; 1231 1232 end charge_interactive; 1233 1234 1235 1236 /* This procedure charges a daemon for usage. "pdtep" and the deltas must be setup 1237* the difference between this proc and charge_interactive is that daemons do not pay connect. */ 1238 1239 charge_daemon: proc; 1240 1241 dcl ishft fixed bin; 1242 1243 ishft = anstbl.shift; 1244 user.interactive.cpu (ishft) = user.interactive.cpu (ishft) + cpudelta; 1245 user.interactive.connect (ishft) = user.interactive.connect (ishft) + logdelta; 1246 user.interactive.core (ishft) = user.interactive.core (ishft) + coredelta; 1247 user.interactive.io_ops (ishft) = user.interactive.io_ops (ishft) + io_ops_delta; 1248 cost = cpudelta * rs_ptrs (ute.rs_number) -> rate_structure.cpu_price (ishft) / MICROSECONDS_PER_HOUR + 1249 coredelta * rs_ptrs (ute.rs_number) -> rate_structure.core_price (ishft) / 1e6 + 1250 io_ops_delta * rs_ptrs (ute.rs_number) -> rate_structure.io_ops_price (ishft) / MICROSECONDS_PER_HOUR; 1251 1252 user.interactive.charge (ishft) = user.interactive.charge (ishft) + cost; 1253 user.dollar_charge = user.dollar_charge + cost; 1254 user.absolute_spent = user.absolute_spent + cost; 1255 ute.session_cost = ute.session_cost + cost; 1256 static_total_dollar_charge = static_total_dollar_charge + cost; 1257 1258 end charge_daemon; 1259 1260 1261 1262 /* Internal procedure to check resource limits. 1263* 1264* If a user should not be allowed to proceed, this program returns an error code 1265* and has set up the variables "line" and "mlth" with an explanation. 1266* Caller should ensure that adjust_cutoff_ has been called. 1267* 1268* Error codes are: 1269* 1270* . shift limit exceeded (interactive) 1271* . absolute limit exceeded 1272* . month dollar limit exceeded 1273* . cutoff date passed 1274* 1275* On entry, the variable "pdtep" must be pointing to the user's PDT entry. 1276* 1277**/ 1278 1279 checklim: proc (abssw, errcd); 1280 1281 dcl abssw fixed bin, /* >0 if absentee -- don't check interactive limit */ 1282 errcd fixed bin (35); /* error code */ 1283 1284 dcl why char (32), limv float bin, ss fixed bin; 1285 1286 errcd = 0; /* clear error code */ 1287 ss = anstbl.shift; 1288 if user.dollar_charge >= user.dollar_limit then do; 1289 limv = user.dollar_limit; 1290 errcd = as_error_table_$cut_user_mlim_msg; 1291 why = ""; 1292 end; 1293 if abssw <= 0 then /* if not absentee, check shift limit */ 1294 if user.interactive.charge (ss) >= user.shift_limit (ss) then do; 1295 limv = user.shift_limit (ss); 1296 errcd = as_error_table_$cut_user_shift_msg; 1297 call convert_status_code_ (errcd, short, format); 1298 call ioa_$rs (format, line, mlth, limv, ss); 1299 return; 1300 end; 1301 if user.absolute_spent >= user.absolute_limit then do; 1302 limv = user.absolute_limit; 1303 call date_time_ (user.absolute_cutoff, why); 1304 errcd = as_error_table_$cut_user_cut_msg; 1305 end; 1306 if anstbl.current_time >= user.absolute_cutoff then do; 1307 call date_time_ (user.absolute_cutoff, why); 1308 errcd = as_error_table_$cut_user_date_msg; 1309 call convert_status_code_ (errcd, short, format); 1310 call ioa_$rs (format, line, mlth, why); 1311 return; 1312 end; 1313 1314 call convert_status_code_ (errcd, short, format); /* Get nice message for loser */ 1315 call ioa_$rs (format, line, mlth, limv, why); 1316 return; 1317 1318 end checklim; 1319 1320 1321 1322 cutoff_warning: proc (dont_check); 1323 1324 /* this procedure prints a warning message for the user if 1325* 1) the project will be cut off soon (because of funds or date), 1326* 2) the user will be cut off soon (because of funds or date), 1327* 3) the user is supposed to get such warning messages, and 1328* 4) this is not an absentee job. */ 1329 1330 dcl dont_check bit (36) aligned; 1331 1332 dcl remaining float bin; 1333 dcl remaining_pct fixed bin; 1334 dcl (user_warn_days, user_warn_pct) fixed bin; 1335 dcl user_warn_dollars float bin; 1336 dcl (warn_days, warn_pct) fixed bin; 1337 dcl warn_dollars float bin; 1338 1339 dcl ABS fixed bin init (1) static options (constant); 1340 dcl DAYS fixed bin init (2) static options (constant); 1341 dcl PCT fixed bin init (3) static options (constant); 1342 dcl SHIFT fixed bin init (6) static options (constant); 1343 dcl BILLING_PERIOD fixed bin init (7) static options (constant); 1344 1345 pom: proc (type, v, period); 1346 dcl type fixed bin; 1347 dcl v float bin; 1348 dcl period fixed bin; 1349 1350 dcl cut_date char (9); 1351 dcl reason char (64); 1352 1353 call date_time_ (user.absolute_cutoff, cut_date); 1354 if type ^= DAYS then do; /* periods 0-5 defined in adjust_cutoff_ */ 1355 call ioa_$rsnnl ("^[ until" || 1356 "^[^; daily^; monthly^; yearly^; calendar year^; fiscal year^; weekly^]" || 1357 " cutoff on ^a^s^;^2s this ^[shift^;billing period^]^]", 1358 reason, (0), period <= 6, period + 1, cut_date, period = SHIFT); 1359 if type = ABS then do; 1360 call convert_status_code_ (as_error_table_$user_warn_funds, short, format); 1361 call ioa_$rs (format, line, mlth, v, reason); 1362 end; 1363 else do; 1364 call convert_status_code_ (as_error_table_$user_warn_pct, short, format); 1365 call ioa_$rs (format, line, mlth, fixed (v), reason); 1366 end; 1367 end; 1368 else do; 1369 call convert_status_code_ (as_error_table_$user_warn_days, short, format); 1370 call ioa_$rs (format, line, mlth, cut_date); 1371 end; 1372 call write_message; 1373 end pom; 1374 1375 if ute.queue > 0 | ute.adjust_abs_q_no then return; /* no use wasting any time if absentee */ 1376 1377 pdtp = baseptr (baseno (pdtep)); /* we have to look in the header of the user's pdt */ 1378 1379 if pdt.version >= 3 then do; /* version 3 has warning thresholds in it */ 1380 user_warn_days = user.user_warn_days; 1381 user_warn_pct = user.user_warn_pct; 1382 user_warn_dollars = user.user_warn_dollars; 1383 warn_days = user.warn_days; 1384 warn_pct = user.warn_pct; 1385 warn_dollars = user.warn_dollars; 1386 end; 1387 else do; /* older pdts do not, so use defaults */ 1388 user_warn_days = 10; 1389 user_warn_pct = 10; 1390 user_warn_dollars = 10e0; 1391 warn_days = 10; 1392 warn_pct = 10; 1393 warn_dollars = 10e0; 1394 end; 1395 1396 if ^(dont_check & "1"b) & project.pct_balance < warn_pct | /* if low percentage-wise, or */ 1397 (project.pct_balance < 100 & /* (proj w/no limit has pct=100 and dollars=0) */ 1398 project.dollars_to_cutoff < warn_dollars) then do; /* low in absolute dollars */ 1399 call convert_status_code_ (as_error_table_$proj_low_funds, short, format); 1400 call ioa_$rs (format, line, mlth, project.dollars_to_cutoff, project.pct_balance); 1401 call write_message; 1402 end; 1403 1404 if ^(dont_check & "01"b) & project.days_to_cutoff < warn_days then do; /* if near cutoff date */ 1405 call convert_status_code_ (as_error_table_$warn_proj_date, short, format); 1406 call ioa_$rs (format, line, mlth, project.days_to_cutoff); 1407 call write_message; 1408 end; 1409 1410 if user.dollar_limit < OPEN then do; 1411 remaining = max (0e0, user.dollar_limit - user.dollar_charge); 1412 if remaining < user_warn_dollars then /* running out of monthly dollars */ 1413 call pom (ABS, remaining, BILLING_PERIOD); 1414 remaining_pct = ceil (remaining / max (1e-2, user.dollar_limit)) * 100e0; 1415 if remaining_pct < user_warn_pct then /* running out of monthly % */ 1416 call pom (PCT, (remaining_pct), BILLING_PERIOD); 1417 1418 end; 1419 if user.absolute_limit < OPEN then do; 1420 remaining = max (0e0, user.absolute_limit - user.absolute_spent); 1421 if remaining < user_warn_dollars then /* running against periodic limit */ 1422 call pom (ABS, remaining, user.absolute_increm); 1423 remaining_pct = ceil (remaining / max (1e-2, user.absolute_limit)) * 100e0; 1424 if remaining_pct < user_warn_pct then /* running out of periodic % */ 1425 call pom (PCT, (remaining_pct), user.absolute_increm); 1426 1427 end; 1428 if user.shift_limit (anstbl.shift) < OPEN then do; 1429 remaining = max (0e0, user.shift_limit (anstbl.shift) - user.interactive (anstbl.shift).charge); 1430 if remaining < user_warn_dollars then 1431 call pom (ABS, remaining, SHIFT); 1432 remaining_pct = ceil (remaining / max (1e-2, user.shift_limit (anstbl.shift))) * 100e0; 1433 if remaining_pct < user_warn_pct then 1434 call pom (PCT, (remaining_pct), SHIFT); 1435 end; 1436 1437 if user.absolute_increm = 0 then /* absolute cutoff date in effect */ 1438 if user.absolute_cutoff < NEVER then 1439 if divide (user.absolute_cutoff - anstbl.current_time, 1440 24 * 60 * 60 * MILLION, 71, 0) < user_warn_days then 1441 call pom (DAYS, (0), 0); 1442 1443 return; 1444 1445 end cutoff_warning; 1446 1447 1448 1449 write_message: proc; /* to write substr(line,1,mlth) on user or daemon terminal */ 1450 1451 if ute.queue = -1 then /* daemon */ 1452 call sys_log_ (SL_LOG, substr (line, 1, mlth - 1)); /* omit newline since sys_log_ supplies one */ 1453 else call asu_$blast_user (utep, substr (line, 1, mlth), "", 0); 1454 return; 1455 1456 end write_message; 1457 1458 1459 /* This procedure is called to decrement the various process counters in the pdt entry, 1460* and trap a bug where a counter can go negative. It returns the decremented value as a function 1461* return, because the counters are not all of the same precision. */ 1462 1463 decrement_and_check: proc (counter, name) returns (fixed bin); 1464 1465 dcl counter fixed bin; 1466 dcl name char (*); 1467 dcl return_value fixed bin; 1468 1469 return_value = counter - 1; /* decrement counter */ 1470 if return_value < 0 then do; /* trap bug */ 1471 call sys_log_ (SL_LOG_SILENT, "act_ctl_: ^a for ^a.^a is negative (^d) at logout; setting it to zero.", 1472 name, ute.person, ute.project, return_value); 1473 return_value = 0; 1474 end; 1475 1476 return (return_value); 1477 1478 end decrement_and_check; 1479 1480 1481 /* Internal procedure invoked when a fault occurs in update */ 1482 1483 NULL_PROC: procedure; end NULL_PROC; /* cleanup procedure with nothing in it */ 1484 1485 Write_User_Message: 1486 procedure (P_code, P_message); 1487 1488 dcl P_code fixed bin (35) parameter; 1489 dcl P_message char (*) parameter; 1490 1491 dcl message char (512) automatic; 1492 dcl message_lth fixed bin automatic; 1493 dcl message_buffer_cur_lth fixed bin automatic; 1494 dcl message_buffer_max_lth fixed bin automatic; 1495 dcl message_buffer_ptr ptr automatic; 1496 dcl new_message_buffer_max_lth fixed bin automatic; 1497 dcl new_message_buffer_ptr ptr automatic; 1498 1499 dcl status_code_string char (100) aligned automatic; 1500 1501 dcl message_buffer char (message_buffer_max_lth) 1502 based (message_buffer_ptr); 1503 dcl new_message_buffer char (new_message_buffer_max_lth) 1504 based (new_message_buffer_ptr); 1505 1506 dcl astty_$tty_force entry (ptr, ptr, fixed bin, fixed bin (35)); 1507 1508 if P_code ^= 0 then 1509 call convert_status_code_ (P_code, (""), status_code_string); 1510 else status_code_string = ""; 1511 1512 /**** Handle the case were the as_error_table_ entry specifies a null message. 1513* Only skip the message if both the code string and message string are 1514* null. */ 1515 1516 if (status_code_string = "") & (P_message = "") then 1517 return; 1518 1519 call ioa_$rs ("^[^a ^;^s^]^a", message, message_lth, 1520 (status_code_string ^= ""), status_code_string, 1521 rtrim (P_message)); 1522 1523 if ute.channel ^= null then /* user has a MCS channel */ 1524 call astty_$tty_force ((ute.channel), addr (message), 1525 message_lth, (0)); 1526 else do; 1527 message_buffer_ptr = as_data_$ls_message_buffer_ptr; 1528 message_buffer_max_lth = as_data_$ls_message_buffer_max_lth; 1529 message_buffer_cur_lth = as_data_$ls_message_buffer_cur_lth; 1530 1531 if message_buffer_cur_lth + message_lth > message_buffer_max_lth then do; 1532 new_message_buffer_max_lth = message_buffer_max_lth + 1533 min (512, message_buffer_cur_lth + message_lth); 1534 if system_area_ptr = null 1535 then system_area_ptr = get_system_free_area_ (); 1536 allocate new_message_buffer in (system_area) 1537 set (new_message_buffer_ptr); 1538 substr (new_message_buffer, 1, message_buffer_cur_lth) = 1539 substr (message_buffer, 1, message_buffer_cur_lth); 1540 free message_buffer in (system_area); 1541 as_data_$ls_message_buffer_ptr, 1542 message_buffer_ptr = new_message_buffer_ptr; 1543 as_data_$ls_message_buffer_max_lth, 1544 message_buffer_max_lth = new_message_buffer_max_lth; 1545 end; 1546 1547 substr (message_buffer, message_buffer_cur_lth + 1, 1548 message_lth) = message; 1549 as_data_$ls_message_buffer_cur_lth = message_buffer_cur_lth + 1550 message_lth; 1551 end; 1552 return; 1553 end Write_User_Message; 1554 1555 CHECK_NETWORK_ACCOUNTING_USE: proc; 1556 1557 /* this routine will scan through network accounting array and report any 1558* entries which weren't processed during the accounting update */ 1559 1560 dcl net_indx fixed bin; /* index into network_account_array */ 1561 dcl process_id_to_match bit (36) aligned; 1562 dcl purge_bit bit (1); 1563 dcl total_connect_seconds fixed bin (35); /* connect time to charge for */ 1564 dcl total_bytes fixed bin (35); /* bytes to charge for */ 1565 dcl total_packets fixed bin (35); /* packets to charge for */ 1566 1567 if network_account_array_ptr = null then 1568 return; 1569 1570 total_bytes, total_packets, total_connect_seconds = 0; 1571 process_id_to_match, purge_bit = "0"b; 1572 1573 /* loop through all NAT entries */ 1574 do net_indx = 1 to network_account_array.count; 1575 1576 /* look for NAT entries not used in accounting update */ 1577 if ^network_account_array.accounting (net_indx) then do; 1578 1579 /* found unused NAT entry, does it match one I'm accumulating for */ 1580 if process_id_to_match ^= network_account_array.process_id (net_indx) then do; 1581 if process_id_to_match ^= "0"b then do; 1582 call sys_log_ (SL_LOG_SILENT, 1583 "act_ctl_$update: Processid ^w missing. 1584 Not charged for ^d pkt, ^d byte & ^d seconds; was^[ not^] purged.", 1585 process_id_to_match, total_packets, 1586 total_bytes, total_connect_seconds, 1587 ^purge_bit); 1588 end; 1589 1590 /* reset to start accumulating for this user */ 1591 process_id_to_match = network_account_array.process_id (net_indx); 1592 total_bytes, total_packets, total_connect_seconds = 0; 1593 purge_bit = "0"b; 1594 end; 1595 total_bytes = total_bytes + network_account_array.byte_count (net_indx); 1596 total_packets = total_packets + network_account_array.packet_count (net_indx); 1597 total_connect_seconds = total_connect_seconds + network_account_array.connect_time (net_indx); 1598 if network_account_array.purged (net_indx) then 1599 purge_bit = "1"b; 1600 end; 1601 end; 1602 1603 if process_id_to_match ^= "0"b then do; 1604 call sys_log_ (SL_LOG_SILENT, 1605 "act_ctl_$update: Processid ^w missing. 1606 Not charged for ^d pkt, ^d byte & ^d seconds; was^[ not^] purged.", 1607 process_id_to_match, total_packets, total_bytes, 1608 total_connect_seconds, ^purge_bit); 1609 end; 1610 1611 end CHECK_NETWORK_ACCOUNTING_USE; 1612 1613 UPDATE_NETWORK_ACCOUNTING: proc (p); 1614 1615 /* routine to update PDT entry for user defined by p->utep. 1616* When this routine is called, the PDT is locked. */ 1617 1618 dcl p ptr; /* utep to update */ 1619 1620 dcl found_entry bit (1); 1621 dcl net_indices_initialized bit (1) int static init ("0"b); 1622 dcl net_indx fixed bin; /* index into network_account_array */ 1623 dcl total_bytes fixed bin (35); /* bytes to charge for */ 1624 dcl total_connect_seconds fixed bin (35); /* connect time to charge for */ 1625 dcl total_packets fixed bin (35); /* packets to charge for */ 1626 1627 if network_account_array_ptr = null then 1628 return; 1629 1630 utep = p; 1631 1632 /* scan through the network_account_array looking for 1st entry for this 1633* process ID. Since the array is in ascending order based on the 1634* processid ID, we can stop if we hit an entry greater than the PID being 1635* scanned for. 1636* 1637* I know this is a brute force method but it will work for now */ 1638 1639 total_bytes, total_packets, total_connect_seconds = 0; 1640 total_dsa_charges = 0.0; 1641 found_entry = "0"b; 1642 1643 do net_indx = 1 to network_account_array.count; 1644 if ute.proc_id = network_account_array.process_id (net_indx) then do; 1645 total_bytes = total_bytes + network_account_array.byte_count (net_indx); 1646 total_packets = total_packets + network_account_array.packet_count (net_indx); 1647 total_connect_seconds = total_connect_seconds + network_account_array.connect_time (net_indx); 1648 network_account_array.accounting (net_indx) = "1"b; /* show entry accounted for */ 1649 found_entry = "1"b; 1650 end; 1651 else if network_account_array.process_id (net_indx) > ute.proc_id then 1652 goto table_scan_done; 1653 end; 1654 table_scan_done: 1655 if ^found_entry then return; /* no entries in table for this user */ 1656 1657 /* initialize network charge device indices if not already done so */ 1658 if ^net_indices_initialized then 1659 call INIT_NET_DEVICE_INDICES; 1660 1661 /* now update the data in the PDT */ 1662 if total_bytes > 0 & devtab_ix_dsa_kilobyte > 0 then 1663 call CHARGE_DEVICE (devtab_ix_dsa_kilobyte, float (total_bytes, 63) / 1000); 1664 if total_packets > 0 & devtab_ix_dsa_kilopacket > 0 then 1665 call CHARGE_DEVICE (devtab_ix_dsa_kilopacket, float (total_packets, 63) / 1000); 1666 if total_connect_seconds > 0 & devtab_ix_dsa_hour > 0 then 1667 call CHARGE_DEVICE (devtab_ix_dsa_hour, float (total_connect_seconds, 63) / 3600); 1668 1669 if debug_na_sw then do; 1670 call sys_log_ (SL_LOG_SILENT, /* DEBUG */ 1671 "act_ctl_$update: Added ^d pkts, ^d bytes & ^d connect seconds (total cost = $^.2f) to ^a.^a", 1672 total_packets, total_bytes, total_connect_seconds, total_dsa_charges, ute.person, ute.project); 1673 end; 1674 1675 end UPDATE_NETWORK_ACCOUNTING; 1676 1677 CHARGE_DEVICE: proc (P_device_index, P_quantity); 1678 1679 dcl P_device_index fixed bin; 1680 dcl P_quantity float bin (63); 1681 1682 cost = rs_ptrs (ute.rs_number) -> rate_structure.device_price (P_device_index, anstbl.shift) * P_quantity; 1683 user.devices (P_device_index) = user.devices (P_device_index) + cost; 1684 user.dollar_charge = user.dollar_charge + cost; 1685 user.absolute_spent = user.absolute_spent + cost; 1686 ute.session_cost = ute.session_cost + cost; 1687 1688 /* ******************** 1689* We should probabily make a decision when MNA becomes active to add 1690* this charge to static_total_dollar_charge and display total_dsa_charges 1691* as total_mna_charges on the shutdown line 1692* ******************** */ 1693 1694 total_dsa_charges = total_dsa_charges + cost; 1695 1696 end CHARGE_DEVICE; 1697 1698 1699 1700 INIT_NET_DEVICE_INDICES: proc; 1701 1702 /* locate indices in installation parms device table for network data if not already found */ 1703 do devtab_ix_dsa_kilobyte = 1 to installation_parms.ndevices 1704 while (installation_parms.devtab (devtab_ix_dsa_kilobyte).device_id ^= dev_id (dev_dsa_kilobyte)); 1705 end; 1706 if devtab_ix_dsa_kilobyte = installation_parms.ndevices + 1 then 1707 devtab_ix_dsa_kilobyte = 0; 1708 1709 do devtab_ix_dsa_kilopacket = 1 to installation_parms.ndevices 1710 while (installation_parms.devtab (devtab_ix_dsa_kilopacket).device_id ^= dev_id (dev_dsa_kilopacket)); 1711 end; 1712 if devtab_ix_dsa_kilopacket = installation_parms.ndevices + 1 then 1713 devtab_ix_dsa_kilopacket = 0; 1714 1715 do devtab_ix_dsa_hour = 1 to installation_parms.ndevices 1716 while (installation_parms.devtab (devtab_ix_dsa_hour).device_id ^= dev_id (dev_dsa_hour)); 1717 end; 1718 if devtab_ix_dsa_hour = installation_parms.ndevices + 1 then 1719 devtab_ix_dsa_hour = 0; 1720 1721 end INIT_NET_DEVICE_INDICES; 1722 1723 /* format: off */ 1724 /* BEGIN INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The absentee user table is the control data base for the absentee */ 1 6 /* facility. It has a header, with scheduling parameters, then one user */ 1 7 /* table entry for each logged-in absentee job. */ 1 8 /* */ 1 9 /* Programs which use this table must also include */ 1 10 /* user_table_header.incl.pl1 and user_table_entry.incl.pl1. */ 1 11 /* */ 1 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 13 1 14 1 15 /****^ HISTORY COMMENTS: 1 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 17* Replace abs_user_tab.incl.pl1. 1 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 1 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 20* Use ut_header common to all user control tables. 1 21* END HISTORY COMMENTS */ 1 22 1 23 1 24 dcl AUTBL_version_4 fixed bin int static options (constant) init (4); 1 25 1 26 dcl autp ptr automatic init (null); 1 27 1 28 dcl 1 autbl based (autp) aligned, /* a per system table to store info on absentee processes */ 1 29 2 header like ut_header, /* Header common to all user tables. */ 1 30 1 31 /* Counter elements */ 1 32 2 n_abs_run fixed bin, /* actual number of absentee processes current */ 1 33 2 max_abs_users fixed bin, /* max number of background absentee processes permitted */ 1 34 2 n_background_abs fixed bin, /* number of absentee processes not from foreground queue */ 1 35 2 n_sec_fg fixed bin, /* number of secondary foreground absentee jobs */ 1 36 2 idle_units fixed bin, /* used in adjusting abs_maxu dynamically */ 1 37 2 abs_units fixed bin, /* part of anstbl.n_units used by background absentees */ 1 38 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 1 39 2 qres (4) fixed bin, /* number of slots reserved for each background queue */ 1 40 2 rsc_waiting (-1:4) fixed bin, /* number of requests waiting for resources, from each queue */ 1 41 2 qerr (-1:4) fixed bin, /* number of consecutive errors for q (dropped if > QERR_MAX) */ 1 42 2 cpu_limit (4) fixed bin (35), /* current per-queue cpu time limits */ 1 43 1 44 /* absentee user manager values. */ 1 45 2 defer_channel fixed bin (71), /* IPC for time-defered queue entries */ 1 46 2 absentee_rq_chn fixed bin (71), /* IPC channel for absentee requests */ 1 47 2 last_queue_searched fixed bin, /* highest queue looked at by scheduler */ 1 48 2 debugging fixed bin, /* take asdumps at strategic places */ 1 49 2 control, /* see also whotab.incl.pl1 */ 1 50 3 mnbz bit (1) unal, /* must not be zero */ 1 51 3 abs_maxu_auto bit (1) unal, /* 1 if abs maxu has not been set by operator command */ 1 52 3 abs_maxq_auto bit (1) unal, /* 1 if abs maxq has not been set by operator command */ 1 53 3 abs_qres_auto bit (1) unal, /* 1 if abs qres has not been set by operator command */ 1 54 3 abs_cpu_limit_auto bit (1) unal, /* 1 if abs cpu_limit has not been set by operator command */ 1 55 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue has been dropped because of errors */ 1 56 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 1 57 3 abs_stopped bit (1) unal, /* 1 if abs stop command was issued */ 1 58 /* both 1 if we're waiting for the last jobs to log out */ 1 59 3 aum_ctl bit (1) unal, /* for AUM to tell AU to start a new sequence */ 1 60 3 lc_list bit (1) unal, /* for AU to tell AUM that the lc list is non-empty */ 1 61 /* comments in AU and AUM explain aum_ctl and lc_list */ 1 62 3 control_pad (21) bit (1) unal, /* fill out rest of word */ 1 63 2 aum_pad fixed bin, 1 64 1 65 2 entry_pad (80) fixed bin, /* pad table header to 128 words */ 1 66 2 entry (0 refer (autbl.current_size)) like ute; 1 67 1 68 dcl AUTBL_CONTROL_NAMES (15) char(20) varying int static options(constant) init( 1 69 "mnbz", 1 70 "abs_maxu_auto", 1 71 "abs_maxq_auto", 1 72 "abs_qres_auto", 1 73 "abs_cpu_limit_auto", 1 74 "queue_dropped(-1)", 1 75 "queue_dropped( 0)", 1 76 "queue_dropped( 1)", 1 77 "queue_dropped( 2)", 1 78 "queue_dropped( 3)", 1 79 "queue_dropped( 4)", 1 80 "abs_up", 1 81 "abs_stopped", 1 82 "aum_ctl", 1 83 "lc_list"); 1 84 1 85 /* END INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1724 1725 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1725 1726 /* 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 */ 1726 1727 /* 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 ... */ 1727 1728 /* 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 ... */ 1728 1729 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 6 2 6 3 /* These are the names and numbers of the slots in as_meter_table 6 4* (see as_meter_table.incl.pl1). 6 5* 6 6* Written March 1980 by Tom Casey 6 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 6 8**/ 6 9 6 10 6 11 /****^ HISTORY COMMENTS: 6 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 6 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 6 14* A) Add NETUP_METER. 6 15* B) Add AS_METER_NAMES array. 6 16* END HISTORY COMMENTS */ 6 17 6 18 6 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 6 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 6 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 6 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 6 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 6 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 6 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 6 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 6 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 6 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 6 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 6 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 6 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 6 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 6 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 6 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 6 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 6 36* (the attempts might fail because of load control limits) */ 6 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 6 38 6 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 6 40 6 41 /* Bit length of recursion_possible equals highest slot number given above. */ 6 42 6 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 6 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 6 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 6 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 6 47 "FIXPDT", "TRYABSLG", "NETUP"); 6 48 6 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 1729 1730 /* BEGIN INCLUDE FILE as_meter_table.incl.pl1 */ 7 2 7 3 /* This include file describes the segment as_meter_table, normally found in >sc1. 7 4* 7 5* This segment contains meters of the resources used by various subsystems of the 7 6* answering service. Real time, virtual cpu time, and page faults are metered. 7 7* In addition, there are counters of various events of interest, such as logins. 7 8* Care is taken to avoid double counting in cases of recursive entry to a subsystem, 7 9* or cases where one subsystem calls another and both are being metered. 7 10* 7 11* Updates to this segment are made primarily by as_meter_, whose enter and exit 7 12* entry points are called by the subsystems just after entry and just before exit. 7 13* In addition, some procedures keep a pointer to this segment and update it directly. 7 14* This segment is printed by the as_meters command; this can be done by any 7 15* process that has read access to this segment. 7 16* 7 17* The segment is truncated and reinitialized at each startup. 7 18* Each entry in the table is permanently assigned to a particular subsystem. 7 19* The assignments are defined in as_meter_numbers.incl.pl1. 7 20* 7 21* Several variables are declared fixed bin (34). The intention is to avoid the 7 22* generation of code that does double word arithmetic when adding to these variables. 7 23* 7 24* The two switches (asmt.update_in_progress and asmte.x) are declared fixed bin so that the as_meters command can 7 25* implement the -reset option by means of a structure subtraction statement (rather than individual subtraction 7 26* statements for all variables in the structure except the two switches), and be able to be compiled 7 27* with no warnings. For that reason, any new switches should be declared fixed bin. 7 28* 7 29* Written March 1980 by Tom Casey 7 30* Modified May 1981 by T. Casey to add cells to meter cost of doing this metering. 7 31* Modified June 1981 by T. Casey for MR9.0 to add 17th entry for TRYLOG_ABS_METER. 7 32* Modified August 1981 by T. Casey for MR9.0 to change the switches from bit to fixed bin. 7 33**/ 7 34 7 35 7 36 /****^ HISTORY COMMENTS: 7 37* 1) change(86-11-13,Herbst), approve(87-07-21,MCR7694), 7 38* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 7 39* Changed to determine number of as_meter slots (entries) based upon the 7 40* variable hbound(AS_METER_NAMES,1) which is declared in 7 41* as_meter_numbers.incl.pl1. 7 42* END HISTORY COMMENTS */ 7 43 7 44 7 45 dcl ASMT_VERSION_1 fixed bin int static options (constant) init (1); 7 46 7 47 dcl 1 asmt aligned based (asmtp), 7 48 2 version fixed bin, 7 49 2 update_in_progress fixed bin, /* table is inconsistent when this word is ^=0 */ 7 50 2 startup_clock fixed bin (71), /* time at startup */ 7 51 2 latest_clock fixed bin (71), /* time at latest metering update */ 7 52 2 startup_vcpu fixed bin (71), /* vcpu used prior to startup */ 7 53 2 latest_vcpu fixed bin (71), /* current total vcpu usage of initializer process */ 7 54 2 startup_pf fixed bin (34), /* page faults taken prior to startup */ 7 55 2 latest_pf fixed bin (34), /* current total page faults taken by initializer process */ 7 56 2 global_entered fixed bin, /* count of subsystems entered but not yet exited */ 7 57 2 logins (3) fixed bin, /* count of interactive, absentee, and daemon logins */ 7 58 2 logouts (3) fixed bin, /* count of interactive, absentee, and daemon logouts */ 7 59 2 asmt_count fixed bin (34), /* count of calls to asmt entry points */ 7 60 2 asmt_real_time fixed bin (71), /* real time spent in those entry points */ 7 61 2 asmt_vcpu fixed bin (71), /* virtual cpu time spent in those entry points */ 7 62 2 asmt_pf fixed bin (34), /* page faults taken while in those entry points */ 7 63 2 asmt_pad (7) fixed bin, /* pad header to 32 words */ 7 64 2 entry (hbound(AS_METER_NAMES,1)) aligned like asmte; /* 32 word entries */ 7 65 7 66 dcl 1 asmte aligned based (asmtep), 7 67 2 entered fixed bin (34), /* if nonzero, subsystem has been entered but not yet exited */ 7 68 2 entry_count fixed bin (34), /* total entries to subsystem in this bootload */ 7 69 2 update_clock fixed bin (71), /* time of entry or exit (whichever has happened last) */ 7 70 2 tot_real_time fixed bin (71), /* total real time in subsystem, including called subsystems */ 7 71 2 real_time fixed bin (71), /* real time in subsystem, excluding called subsystems */ 7 72 2 x_real_time fixed bin (71), /* exclude this from tot_real to get real, at next exit */ 7 73 2 entry_vcpu fixed bin (71), /* vcpu usage at entry to subsystem */ 7 74 2 tot_vcpu fixed bin (71), /* total vcpu used in subsystem, including called subsystems */ 7 75 2 vcpu fixed bin (71), /* vcpu used in subsystem, excluding called subsystems */ 7 76 2 x_vcpu fixed bin (71), /* exclude this from tot_vcpu to get vcpu, at next exit */ 7 77 2 entry_pf fixed bin (34), /* page faults at entry to subsystem */ 7 78 2 tot_pf fixed bin (34), /* total page faults in subsystem, including called subsystems */ 7 79 2 pf fixed bin (34), /* page faults in subsystem, excluding called subsystems */ 7 80 2 x_pf fixed bin (34), /* exclude this from tot_pf to get pf, at next exit */ 7 81 2 x fixed bin, /* ^=0 if subsystem has nonzero x values at the moment */ 7 82 2 recursive_entry_count fixed bin (34), /* number of entries that were recursive */ 7 83 2 asmte_pad (8) fixed bin; /* pad entry to 32 words */ 7 84 7 85 /* END INCLUDE FILE as_meter_table.incl.pl1 */ 1730 1731 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 8 2 8 3 /* This include file defines the priorities of all of the event channels used by the answering service. 8 4* 8 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 8 6* The names correspond to the functions of the event call handlers. 8 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 8 8* 8 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 8 10* See the code in those procedures for information on the handlers themselves 8 11* (which are entry variables in some cases, and thus could not be documented in this file). 8 12* 8 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 8 14* 8 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 8 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 8 17* 8 18* Written June 1981 by T. Casey for MR9.0 8 19* Modified 1984-10-15 BIM for sac -> as_request. 8 20* as_request is above login, since sac is important and 8 21* dial requests for already logged in users can take 8 22* first dibs over new logins. 8 23**/ 8 24 8 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 8 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 8 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 8 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 8 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 8 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 8 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 8 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 8 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 8 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 8 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 8 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 8 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 8 38 8 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 1731 1732 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 9 2 9 3 /* This include file declares the "author" substructure 9 4* in a form suitable for using the PL/I "like" attribute. 9 5* 9 6* Written 750304 by PG 9 7**/ 9 8 9 9 dcl 1 author_dcl aligned based, 10 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 10 2 10 3 /* the "author" items must always be the first ones in the table. The 10 4* module which moves the converted table to the System Control process 10 5* fills in these data items and assumes them to be at the head of the segment 10 6* regardless of the specific table's actual declaration. The variables 10 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 10 8* respectively. For tables installed in multiple processes, these 10 9* are to be used to lock out multiple installations. */ 10 10 10 11 /* Lock should be used as a modification lock. Since, in general, 10 12* entries may not be moved in system tables, even by installations, 10 13* it is sufficient for only installers and programs that change threads 10 14* to set or respect the lock. Simply updating data in an entry 10 15* requires no such protection. 10 16* 10 17* Last_install_time is used by readers of system tables to detect 10 18* installations or other serious modifications. By checking it before 10 19* and after copying a block of data, they can be protected against 10 20* modifications. 10 21* 10 22* Modules that set the lock should save proc_group_id, and then 10 23* put their group id there for the time they hold the lock. 10 24* if they do not actually install the, they should restore the group id. 10 25**/ 10 26 10 27 2 author aligned, /* validation data about table's author */ 10 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 10 29 3 lock bit (36), /* installation lock */ 10 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 10 31 3 update_authorization bit (1) unal, /* update only authorizations */ 10 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 10 33 3 pad bit (33) unaligned, 10 34 3 last_install_time fixed bin (71), 10 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 10 36 3 w_dir char (64), /* author's working directory */ 10 37 10 38 /* END INCLUDE FILE author.incl.pl1 */ 9 10 9 11 2 pad; 9 12 9 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 1732 1733 /* BEGIN INCLUDE FILE devid.incl.pl1 */ 11 2 11 3 /* Rewritten September 1977 by T. Casey to implement a new method of device charging. */ 11 4 11 5 11 6 /****^ HISTORY COMMENTS: 11 7* 1) change(85-10-07,Herbst), approve(87-07-21,MCR7694), 11 8* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 11 9* Add dsa_kbyt, dsa_kpkt and dsa_hour device types. 11 10* END HISTORY COMMENTS */ 11 11 11 12 11 13 /* This include file is used to avoid conflicts between system code and customer 11 14* sites over the use of elements of the devtab array in installation_parms. 11 15* 11 16* Sites can define new device types for terminal channel charging (for high-speed 11 17* lines, for example), set prices for them in installation_parms, and use their 11 18* names in the charge statement in the CMF. 11 19* 11 20* There also exists a set of system-defined devices, such as tape and disk, and 11 21* this set must be expandable. Code to charge for each one of these devices is 11 22* built into the system. That code can not reference specific elements in the 11 23* devtab array, since a site may have used any given element in that array for 11 24* one of its own devices. This include file solves that problem. 11 25* 11 26* The dev_id array contains the names of devices for which charging code is 11 27* built into the system. That array should be changed whenever new device 11 28* charging code is added. The order of device names in that array is insignificant. 11 29* The constants with names of the form dev_DEVICE are used for program 11 30* readability, to avoid having to reference specific entries in the dev_id 11 31* array with numeric constants as subscripts. 11 32* 11 33* The site must define devices of each of the names in the dev_id array, and 11 34* set prices for them. Otherwise, no charges will be made for use of those 11 35* devices. The ed_installation_parms procedure prints a warning, when 11 36* printing device prices, if any of the required devices is not defined. 11 37* 11 38* The static variables with names of the form devtab_ix_DEVICE are used to 11 39* hold the subscripts of the respective devices' devtab entries. These variables 11 40* must be assigned values at initialization time by the procedures that use them. 11 41* These procedures should call system_info_$device_prices to get a copy of devtab, 11 42* and then search devtab for a device_id equal to dev_id(dev_DEVICE) and remember 11 43* the subscript in devtab_ix_DEVICE. If the device is not defined, the devtab_ix 11 44* variable should remain zero, as an indication that charging for the device is 11 45* to be bypassed. 11 46* 11 47**/ 11 48 dcl dev_id (8) char (8) aligned int static options (constant) init 11 49 ("tape", "tape_mt", "disk", "disk_mt", "lv", 11 50 "dsa_kbyt", "dsa_kpkt", "dsa_hour"); 11 51 11 52 dcl dev_tape fixed bin int static options (constant) init (1); 11 53 dcl dev_tape_mt fixed bin int static options (constant) init (2); 11 54 dcl dev_disk fixed bin int static options (constant) init (3); 11 55 dcl dev_disk_mt fixed bin int static options (constant) init (4); 11 56 dcl dev_lv fixed bin int static options (constant) init (5); 11 57 dcl dev_dsa_kilobyte fixed bin int static options (constant) init (6); 11 58 dcl dev_dsa_kilopacket fixed bin int static options (constant) init (7); 11 59 dcl dev_dsa_hour fixed bin int static options (constant) init (8); 11 60 11 61 dcl devtab_ix_tape fixed bin int static init (0); 11 62 dcl devtab_ix_tape_mt fixed bin int static init (0); 11 63 dcl devtab_ix_disk fixed bin int static init (0); 11 64 dcl devtab_ix_disk_mt fixed bin int static init (0); 11 65 dcl devtab_ix_lv fixed bin int static init (0); 11 66 dcl devtab_ix_dsa_kilobyte fixed bin int static init (0); 11 67 dcl devtab_ix_dsa_kilopacket fixed bin int static init (0); 11 68 dcl devtab_ix_dsa_hour fixed bin int static init (0); 11 69 11 70 /* END INCLUDE FILE devid.incl.pl1 */ 1733 1734 /* 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 */ 1734 1735 /* BEGIN INCLUDE FILE ... daemon_user_table.incl.pl1 */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* The daemon_user_table has one entry per daemon. Daemons are logged in by */ 13 6 /* operator command or automatically. If they do any I/O, it is done via */ 13 7 /* the message coordinator. */ 13 8 /* */ 13 9 /* Programs using this include file must also use user_table_header.incl.pl1 */ 13 10 /* and user_table_entry.incl.pl1. */ 13 11 /* */ 13 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 13 13 14 13 15 /****^ HISTORY COMMENTS: 13 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 13 17* Initially coded from dutbl.incl.pl1. 13 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 13 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 20* A) Add use of ut_header common to all user control tables. 13 21* B) Corrected padding prior to first ute entry. 13 22* END HISTORY COMMENTS */ 13 23 13 24 13 25 dcl DUTBL_version_4 fixed bin int static init (4); /* version of this declaration */ 13 26 13 27 dcl dutp ptr automatic init (null); 13 28 13 29 dcl 1 dutbl based (dutp) aligned, /* Daemon user table */ 13 30 2 header like ut_header, /* Header common to all user tables. */ 13 31 13 32 2 active_count fixed bin, /* the count of active daemons managed by DUM_ */ 13 33 13 34 2 entry_pad (117) fixed bin, /* pad to 128 words */ 13 35 2 entry (0 refer (dutbl.current_size)) like ute; /* daemon user entries */ 13 36 13 37 /* END INCLUDE FILE ... daemon_user_table.incl.pl1 */ 1735 1736 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 14 2 14 3 /* Modified 740723 by PG to add short AIM access names */ 14 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 14 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 14 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 14 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 14 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 14 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 14 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 14 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 14 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 14 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 14 14* strict_trusted_path. */ 14 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 14 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 14 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 14 18 14 19 14 20 /****^ HISTORY COMMENTS: 14 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 14 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 14 23* added vchn_requires_accept parameter. 14 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 14 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 26* Correct formatting problems. 14 27* END HISTORY COMMENTS */ 14 28 14 29 14 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 14 31 14 32 14 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 14 34 2 part_1 like installation_parms_part_1 aligned, 14 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 14 36 14 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 14 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 14 39 14 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 14 41 2 installation_id char (32), /* Name printed at dialup and in who */ 14 42 2 company char (64), /* company name */ 14 43 2 department char (64), /* department */ 14 44 2 companyds char (120), /* company, double spaced */ 14 45 2 departmentds char (120), /* dpeartment double spaced */ 14 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 14 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 14 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 14 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 14 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 14 51 2 ndevices fixed bin, /* number of devices to charge */ 14 52 2 devtab (16), /* Maximum 16 */ 14 53 3 device_id char (8), /* Name of device */ 14 54 3 device_price (0: 7) float bin, /* Price by shift */ 14 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 14 56 2 warning_time fixed bin, /* seconds from warning to logout */ 14 57 2 login_time fixed bin, /* seconds in which to complete login */ 14 58 2 acct_update fixed bin, /* seconds between acct update */ 14 59 2 login_tries fixed bin, /* number of login tries allowed */ 14 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 14 61 2 registration_price float bin, /* fee per month per user */ 14 62 2 dolsign char (1), /* "dollar sign" */ 14 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 14 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 14 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 14 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 14 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 14 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 14 69* Initializer will copy the syserr_log */ 14 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 14 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 14 72 2 fatal_error_loop_count fixed bin (17) unaligned, 14 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 14 74 2 term_real_time_seconds fixed bin (17) unaligned, 14 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 14 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 14 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 14 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 14 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 14 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 14 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 14 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 14 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 14 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 14 85 2 level_names (0:7) char (32), /* Names for security levels. */ 14 86 2 category_names (18) char (32), /* Names for security categories. */ 14 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 14 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 14 89 2 ncon fixed bin, /* Number of config elements. */ 14 90 2 cona (51), /* each entry is 5 words long */ 14 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 14 92 3 shift fixed bin (5) unal, /* Shift number */ 14 93 3 x1 fixed bin (23) unal, 14 94 3 kmem fixed bin (17) unal, /* Memory size */ 14 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 14 96 3 x2 fixed bin (17) unal, 14 97 3 maxa fixed bin (11) unal, /* Max abs users */ 14 98 3 maxq fixed bin (5) unal, /* Max abs q */ 14 99 3 maxu_base fixed bin (17) unal, 14 100 3 response_high fixed bin (17) unal, 14 101 3 response_low fixed bin (17) unal, 14 102 3 x3 fixed bin (17) unal, 14 103 14 104 /* Absentee control parameters. New for MR7.0 */ 14 105 14 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 14 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 14 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 14 109 14 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 14 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 14 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 14 113 14 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 14 115 14 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 14 117 14 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 14 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 14 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 14 121 2 version fixed bin (35), /* must be 2 */ 14 122 2 nrates fixed bin, /* number of rate structures */ 14 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 14 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 14 125 2 require_operator_login bit (1) aligned, /* just what it says */ 14 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 14 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 14 128* mcacs segments for operators */ 14 129 2 password_min_length fixed bin, /* minimum length of passwords */ 14 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 14 131 2 password_change_interval fixed bin, /* number of days until must change */ 14 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 14 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 14 134* "accepted" by operator if personid is not 14 135* signed on system console */ 14 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 14 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 14 138* or someone miscounted when using part of pad2 */ 14 139 14 140 14 141 /* Entries in the following array may be accessed via system_info_$resource_price. 14 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 14 143 14 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 14 145 2 name char (32), 14 146 2 price float bin; 14 147 15 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 15 2 15 3 /* Created on 04/24/78 by Michael R. Jordan */ 15 4 /* Modified 04/10/79 by C. D. Tavares */ 15 5 15 6 dcl rifp ptr; 15 7 15 8 dcl 1 rcp_init_flags based (rifp), 15 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 15 10 2 pad1 bit (2) unaligned, /* obsolete */ 15 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 15 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 15 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 15 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 15 15 15 16 dcl (No_authentication initial (0), 15 17 Nominal_authentication initial (1), 15 18 Automatic_authentication initial (2), 15 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 15 20 15 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 15 22 ("none", "nominal", "automatic", "manual"); 15 23 15 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 14 148 14 149 14 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1736 1737 /* BEGIN INCLUDE FILE: network_account_array.incl.pl1 */ 16 2 16 3 /****^ HISTORY COMMENTS: 16 4* 1) change(86-02-21,Herbst), approve(87-07-31,MCR7694), 16 5* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 16 6* Added process_id field and replaced group_id with it in the key. 16 7* 2) change(87-04-09,Brunelle), approve(87-07-31,MCR7694), 16 8* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 16 9* Completely restructured. 16 10* 3) change(87-05-07,Brunelle), approve(87-07-31,MCR7694), 16 11* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 16 12* Added purged and accounting bit fields. 16 13* 4) change(87-07-31,Brunelle), approve(87-07-31,MCR7694), 16 14* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 16 15* Moved version field from the network_account_data structure to the 16 16* network_account_array structure and changed the value of the constant to 16 17* reflect the move. 16 18* END HISTORY COMMENTS */ 16 19 16 20 /* format: style4 */ 16 21 /* used by the $dump_table, $get_process_total and $read_and_reset_table 16 22* entrypoints of network_accounting_.pl1 */ 16 23 16 24 dcl network_account_array_ptr ptr; 16 25 dcl network_account_array_bound fixed bin; 16 26 16 27 dcl 1 network_account_array aligned based (network_account_array_ptr), 16 28 2 version char (8), 16 29 2 max_count fixed bin, 16 30 2 count fixed bin, 16 31 2 record (network_account_array_bound refer (network_account_array.max_count)) 16 32 aligned like network_account_data; 16 33 16 34 dcl network_account_data_ptr ptr; 16 35 16 36 dcl 1 network_account_data aligned based (network_account_data_ptr), 16 37 2 key, 16 38 3 process_id bit (36) aligned, /* of the process using the connection */ 16 39 3 session_handle fixed bin (35), /* identifier of the connection being charged */ 16 40 3 network_id fixed bin (35), /* identifies the network being used */ 16 41 2 switches unaligned, 16 42 3 delete_sw bit (1) unaligned, /* delete entry when next read */ 16 43 3 unassigned_sw bit (1) unaligned, /* owner connected to the session */ 16 44 3 purged bit (1) unaligned, /* network_accounting_ purged this record */ 16 45 3 accounting bit (1) unaligned, /* used by act_ctl_ */ 16 46 3 mbz bit (32) unaligned, 16 47 2 connect_time fixed bin (35), /* incremental seconds of connect time to charge */ 16 48 2 byte_count fixed bin (35), /* incremental count of bytes to be charged */ 16 49 2 packet_count fixed bin (35); /* incremental count of packets to be charged */ 16 50 16 51 dcl NET_ACCT_ARRAY_VERSION_1 char (8) int static options (constant) init ("NETACTA1"); 16 52 16 53 /* END INCLUDE FILE: network_account_array.incl.pl1 */ 1737 1738 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 17 2 /* Requires user_attributes.incl.pl1 */ 17 3 17 4 /* Modified 740723 by PG to add AIM info */ 17 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 17 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 17 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 17 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 17 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 17 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 17 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 17 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 17 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 17 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 17 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 17 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 17 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 17 18 17 19 dcl (PDT_version init (4), /* version of this declaration */ 17 20 PDT_header_lth init (256), /* length in words of PDT head */ 17 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 17 22 17 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 17 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 17 25 ) fixed bin internal static options (constant); 17 26 17 27 dcl 1 pdt based (pdtp) aligned, 17 28 18 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 18 2 18 3 /* the "author" items must always be the first ones in the table. The 18 4* module which moves the converted table to the System Control process 18 5* fills in these data items and assumes them to be at the head of the segment 18 6* regardless of the specific table's actual declaration. The variables 18 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 18 8* respectively. For tables installed in multiple processes, these 18 9* are to be used to lock out multiple installations. */ 18 10 18 11 /* Lock should be used as a modification lock. Since, in general, 18 12* entries may not be moved in system tables, even by installations, 18 13* it is sufficient for only installers and programs that change threads 18 14* to set or respect the lock. Simply updating data in an entry 18 15* requires no such protection. 18 16* 18 17* Last_install_time is used by readers of system tables to detect 18 18* installations or other serious modifications. By checking it before 18 19* and after copying a block of data, they can be protected against 18 20* modifications. 18 21* 18 22* Modules that set the lock should save proc_group_id, and then 18 23* put their group id there for the time they hold the lock. 18 24* if they do not actually install the, they should restore the group id. 18 25**/ 18 26 18 27 2 author aligned, /* validation data about table's author */ 18 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 18 29 3 lock bit (36), /* installation lock */ 18 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 18 31 3 update_authorization bit (1) unal, /* update only authorizations */ 18 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 18 33 3 pad bit (33) unaligned, 18 34 3 last_install_time fixed bin (71), 18 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 18 36 3 w_dir char (64), /* author's working directory */ 18 37 18 38 /* END INCLUDE FILE author.incl.pl1 */ 17 29 17 30 2 max_size fixed bin, /* max number of entries table can grow */ 17 31 2 current_size fixed bin, /* current size of table (in entries) */ 17 32 2 version fixed bin, /* table version */ 17 33 2 freep fixed bin, /* relptr to begin of free chain */ 17 34 2 n_users fixed bin, /* number of entries actually used */ 17 35 2 project_name char (28), /* name of project */ 17 36 2 project_dir char (64), /* treename of project's directory */ 17 37 2 projfile_version fixed bin, 17 38 2 projentry bit (66*36), 17 39 2 pad3 (5) bit (36) aligned, 17 40 2 reqfile_version fixed bin, 17 41 2 reqentry bit (40*36), 17 42 2 pad4 (9) fixed bin, 17 43 2 sat_version fixed bin, 17 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 17 45 2 pad5 (4) bit (36) aligned, 17 46 2 date_reqfile_copied fixed bin (71), 17 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 17 48 2 pad2l bit (27) unaligned, 17 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 17 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 17 51 2 user (1019) aligned, /* the project definition table entries */ 17 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 17 53 17 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 17 55 17 56 17 57 17 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 17 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 17 60 2 lock bit (36), /* update lock */ 17 61 2 person_id char (24) aligned, /* login name of user */ 17 62 2 now_in fixed bin, /* count of users logged in on this entry */ 17 63 2 password char (8) aligned, /* password for anonymous user */ 17 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 17 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 17 66 2 home_dir char (64) aligned, /* user's default working directory */ 17 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 17 68 2 high_ring fixed bin, /* highest ring user may use */ 17 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 17 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 17 71 2 outer_module char (32), /* outer module used if user is interactive */ 17 72 2 lot_size fixed bin, /* size of linkage offset table */ 17 73 2 kst_size fixed bin, /* size of known segment table */ 17 74 2 cls_size fixed bin, /* size of combined linkage */ 17 75 2 uflags, /* various flags */ 17 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 17 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 17 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 17 79 3 flagpad bit (33) unal, 17 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 17 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 17 82 2 dollar_limit float bin, 17 83 2 dollar_charge float bin, /* total dollars spent this month */ 17 84 2 shift_limit (0: 7) float bin, 17 85 2 daton fixed bin (71), /* date user added to system */ 17 86 2 datof fixed bin (71), /* date user deleted */ 17 87 2 last_login_time fixed bin (71), /* time of last login */ 17 88 2 last_login_unit char (4), /* terminal id last used */ 17 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 17 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 17 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 17 92 2 last_update fixed bin (71), /* time of last transaction */ 17 93 2 logins fixed bin, /* number of logins */ 17 94 2 crashes fixed bin, /* sessions abnormally terminated */ 17 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 17 96 3 charge float bin, /* total dollar charge this shift */ 17 97 3 xxx fixed bin, 17 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 17 99 3 core fixed bin (71), /* core demand in page-microseconds */ 17 100 3 connect fixed bin (71), /* total console time in microseconds */ 17 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 17 102 2 absentee (4), /* absentee use, queues 1-4 */ 17 103 3 charge float bin, /* dollar charge this queue */ 17 104 3 jobs fixed bin, /* number of jobs submitted */ 17 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 17 106 3 memory fixed bin (71), /* total memory demand */ 17 107 2 iod (4), /* io daemon use, queues 1-4 */ 17 108 3 charge float bin, /* dollar charge this queue */ 17 109 3 pieces fixed bin, /* pieces of output requested */ 17 110 3 pad fixed bin (35), 17 111 3 pages fixed bin (35), /* number of pages output */ 17 112 3 lines fixed bin (71), /* total record count of output */ 17 113 2 devices (16) float bin, /* device charges */ 17 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 17 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 17 116 2 absolute_spent float bin, /* Spending against this */ 17 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 17 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 17 119 2 pad_was_authorization bit (72) aligned, 17 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 17 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 17 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 17 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 17 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 17 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 17 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 17 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 17 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 17 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 17 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 17 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 17 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 17 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 17 134 2 user_authorization (2) bit (72) aligned, /* range */ 17 135 2 pdtupad (5) fixed bin, 17 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 17 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 17 138 2 chain fixed bin; /* free chain */ 17 139 17 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 1738 1739 /* BEGIN INCLUDE FILE ... rate_structure.incl.pl1 */ 19 2 19 3 /* Created 81-06-10 by E. N. Kittlitz */ 19 4 19 5 /* The declaration of rate_structure requires declarations contained in 19 6* installation_parms.incl.pl1. 19 7**/ 19 8 19 9 dcl 1 rate_structure based (cur_rs_ptr) aligned, /* describes a rate strcture */ 19 10 2 part_1 like installation_parms_part_1 aligned, 19 11 2 resource (0 refer (rate_structure.nrscp)) like installation_parms_resource_array_part aligned; 19 12 19 13 /* END INCLUDE FILE ... rate_structure.incl.pl1 */ 1739 1740 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 20 2 20 3 20 4 20 5 20 6 /****^ HISTORY COMMENTS: 20 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 20 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 20 9* Expand comment line of project.state to include the renamed state (state = 20 10* 3). 20 11* END HISTORY COMMENTS */ 20 12 20 13 20 14 20 15 /* Modified 740723 by PG to add AIM info */ 20 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 20 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 20 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 20 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 20 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 20 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 20 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 20 23 20 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 20 25 20 26 SAT_header_lth init (466), /* length in words of SAT header */ 20 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 20 28 20 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 20 30 ) fixed bin internal static options (constant); 20 31 20 32 dcl 1 sat based (satp) aligned, 20 33 21 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 21 2 21 3 /* the "author" items must always be the first ones in the table. The 21 4* module which moves the converted table to the System Control process 21 5* fills in these data items and assumes them to be at the head of the segment 21 6* regardless of the specific table's actual declaration. The variables 21 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 21 8* respectively. For tables installed in multiple processes, these 21 9* are to be used to lock out multiple installations. */ 21 10 21 11 /* Lock should be used as a modification lock. Since, in general, 21 12* entries may not be moved in system tables, even by installations, 21 13* it is sufficient for only installers and programs that change threads 21 14* to set or respect the lock. Simply updating data in an entry 21 15* requires no such protection. 21 16* 21 17* Last_install_time is used by readers of system tables to detect 21 18* installations or other serious modifications. By checking it before 21 19* and after copying a block of data, they can be protected against 21 20* modifications. 21 21* 21 22* Modules that set the lock should save proc_group_id, and then 21 23* put their group id there for the time they hold the lock. 21 24* if they do not actually install the, they should restore the group id. 21 25**/ 21 26 21 27 2 author aligned, /* validation data about table's author */ 21 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 21 29 3 lock bit (36), /* installation lock */ 21 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 21 31 3 update_authorization bit (1) unal, /* update only authorizations */ 21 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 21 33 3 pad bit (33) unaligned, 21 34 3 last_install_time fixed bin (71), 21 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 21 36 3 w_dir char (64), /* author's working directory */ 21 37 21 38 /* END INCLUDE FILE author.incl.pl1 */ 20 34 20 35 2 max_size fixed bin, /* max number of entries table can grow */ 20 36 2 current_size fixed bin, /* current size of table (in entries) */ 20 37 2 version fixed bin, /* version number of table (word 32) */ 20 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 20 39 2 n_projects fixed bin, /* number of entries actually used */ 20 40 2 pad_was_max_users bit (36) aligned, 20 41 2 max_units fixed bin, /* maximum number of login-units per session */ 20 42 2 pad_was_max_prim bit (36) aligned, 20 43 2 uwt_size fixed bin, /* size of User Weight Table */ 20 44 2 uwt (24) aligned, /* User Weight Table */ 20 45 3 initproc char (64) unaligned, /* user's initial procedure */ 20 46 3 units fixed bin, /* weight of initial procedure */ 20 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 20 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 20 49 2 project (3258), /* The SAT entries. 255K segment. */ 20 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 20 51 20 52 20 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 20 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 20 55 2 project_id char (12) unaligned, /* project's name */ 20 56 2 project_dir char (64) unaligned, /* project's directory */ 20 57 2 pdt_ptr pointer, /* pointer to current PDT */ 20 58 2 max_users fixed bin, /* maximum number of users from project */ 20 59 2 n_users fixed bin, /* current number */ 20 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 20 61 2 admin (4) aligned, /* list of project's administrators */ 20 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 20 63 3 pad char (2) unal, 20 64 2 cutoff char (1), /* if project is cut off, why. */ 20 65 2 min_ring fixed bin, /* lowest ring for project */ 20 66 2 max_ring fixed bin, /* highest ring for project */ 20 67 2 alias char (8) unal, /* project alias */ 20 68 2 group char (8) unal, /* default group for this project */ 20 69 2 grace_max fixed bin, /* maximum bump grace */ 20 70 2 audit bit (36), /* audit flags for project */ 20 71 2 project_authorization (2) bit (72), /* authorization of this project */ 20 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 20 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 20 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 20 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 20 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 20 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 20 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 20 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 20 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 20 81 2 satpad1 fixed bin (9) unsigned unaligned, 20 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 20 83 2 chain fixed bin; /* if free entry, chain */ 20 84 20 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 1740 1741 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 22 2 22 3 22 4 /****^ HISTORY COMMENTS: 22 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 22 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 22 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 22 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 22 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 22 10* Reorganized by type of data to improve readability. 22 11* END HISTORY COMMENTS */ 22 12 22 13 22 14 /* ACCESS NAMES */ 22 15 dcl ( 22 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 22 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 22 18 ) char(32) ext static; 22 19 22 20 /* PATHNAMES */ 22 21 dcl ( 22 22 sc_stat_$info_dir, /* admin info segs directory */ 22 23 sc_stat_$log_dir, /* as log segs directory */ 22 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 22 25 sc_stat_$sysdir /* system control directory */ 22 26 ) char(168) ext static; 22 27 22 28 /* OTHER CHAR STRINGS */ 22 29 dcl ( 22 30 sc_stat_$master_channel /* Master TTY channel. */ 22 31 ) char(6) aligned ext static; 22 32 22 33 /* LABELS */ 22 34 dcl ( 22 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 22 36 /* ssu_$null_label unless */ 22 37 /* admin_listener is active. */ 22 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 22 39 /* attributable to a particular */ 22 40 /* command. */ 22 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 22 42 ) label variable ext static; 22 43 22 44 /* POINTERS TO */ 22 45 dcl ( 22 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 22 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 22 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 22 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 22 50 /* by sys_log_. */ 22 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 22 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 22 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 22 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 22 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 22 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 22 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 22 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 22 59 ) ptr ext static; 22 60 22 61 /* SWITCHES */ 22 62 dcl ( 22 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 22 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 22 65 sc_stat_$Multics, /* TRUE after answering service started */ 22 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 22 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 22 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 22 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 22 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 22 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 22 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 22 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 22 74 /* if PNT not yet available. */ 22 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 22 76 sc_stat_$test_mode, /* TRUE if in test environment */ 22 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 22 78 /* by operator signed on system console*/ 22 79 ) bit(1) aligned ext static; 22 80 22 81 22 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 1741 1742 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 23 2 23 3 23 4 /****^ HISTORY COMMENTS: 23 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 23 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 23 7* Added sl_info structure and associated named constants for use in calling 23 8* sys_log_$general. 23 9* END HISTORY COMMENTS */ 23 10 23 11 23 12 /* format: style4 */ 23 13 23 14 dcl ( 23 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 23 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 23 17 SL_TYPE init (-1), /* type message */ 23 18 SL_LOG_SILENT init (0), /* log message */ 23 19 SL_LOG init (1), /* log & type message */ 23 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 23 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 23 22 ) fixed bin internal static options (constant); 23 23 23 24 dcl 1 sl_info aligned automatic, 23 25 2 version char(8), /* structure version */ 23 26 2 arg_list_ptr ptr, /* arg_list with values */ 23 27 2 loc, 23 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 23 29 /* These flags control where the corresponding data item is found.*/ 23 30 /* -1: data appears in the corresponding structure element below */ 23 31 /* 0: data is not present anywhere */ 23 32 /* +N: data is Nth item in argument list pointed to by */ 23 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 23 34 /* corresponding structure element. */ 23 35 /* if data = +N: */ 23 36 /* argN is data_ptr, argN+1 is data_len */ 23 37 /* if ioa_msg = +N: */ 23 38 /* argN+1, ... argLAST are arguments substituted into the */ 23 39 /* ioa_msg control string. The formatted msg is returned. */ 23 40 2 flags, 23 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 23 42 3 flags_pad bit(35) unal, 23 43 2 mode fixed bin, /* as-mode, command-mode */ 23 44 2 severity fixed bin, /* error severity */ 23 45 2 code fixed bin(35), /* error table code */ 23 46 2 caller char(65) varying, /* caller refname$entryname*/ 23 47 2 data, /* binary data ptr/length */ 23 48 3 data_ptr ptr, 23 49 3 data_lth fixed bin(21), 23 50 2 class char(10) varying, /* binary data class */ 23 51 2 ioa_msg char(500) varying; /* formatted message text */ 23 52 23 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 54 /* */ 23 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 23 56 /* their data types should be as shown in the structure above, except that */ 23 57 /* character strings should be char(*) nonvarying. */ 23 58 /* */ 23 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 60 23 61 /* value for sl_info.version */ 23 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 23 63 23 64 /* values for sl_info.mode */ 23 65 dcl (SL_INFO_as_mode init(1), 23 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 23 67 23 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 23 69 dcl (SL_INFO_arg_given_in_structure init(-1), 23 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 23 71 23 72 23 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 74 /* */ 23 75 /* The following static structures are commonly used in the Login Server */ 23 76 /* user control software. */ 23 77 /* */ 23 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 79 23 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 23 81 23 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 23 83 2 version char(8) init ("sl_info1"), 23 84 2 arg_list_ptr ptr init (null), 23 85 2 loc, 23 86 3 (mode init (-1), 23 87 severity init ( 1), 23 88 code init ( 2), 23 89 caller init (-1), 23 90 data init ( 0), 23 91 class init ( 0), 23 92 ioa_msg init ( 3)) fixed bin, 23 93 2 flags, 23 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 23 95 3 flags_pad bit(35) unal init ("0"b), 23 96 2 mode fixed bin init ( 1), 23 97 2 severity fixed bin init ( 0), 23 98 2 code fixed bin(35) init ( 0), 23 99 2 caller char(65) varying init (""), 23 100 2 data, 23 101 3 data_ptr ptr init (null), 23 102 3 data_lth fixed bin(21) init ( 0), 23 103 2 class char(10) varying init (""), 23 104 2 ioa_msg char(500) varying init (""); 23 105 23 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 23 107 23 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 23 109 2 version char(8) init ("sl_info1"), 23 110 2 arg_list_ptr ptr init (null), 23 111 2 loc, 23 112 3 (mode init (-1), 23 113 severity init ( 1), 23 114 code init ( 0), 23 115 caller init (-1), 23 116 data init ( 0), 23 117 class init ( 0), 23 118 ioa_msg init ( 2)) fixed bin, 23 119 2 flags, 23 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 23 121 3 flags_pad bit(35) unal init ("0"b), 23 122 2 mode fixed bin init ( 1), 23 123 2 severity fixed bin init ( 0), 23 124 2 code fixed bin(35) init ( 0), 23 125 2 caller char(65) varying init (""), 23 126 2 data, 23 127 3 data_ptr ptr init (null), 23 128 3 data_lth fixed bin(21) init ( 0), 23 129 2 class char(10) varying init (""), 23 130 2 ioa_msg char(500) varying init (""); 23 131 23 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 23 133 23 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 23 135 2 version char(8) init ("sl_info1"), 23 136 2 arg_list_ptr ptr init (null), 23 137 2 loc, 23 138 3 (mode init (-1), 23 139 severity init ( 1), 23 140 code init ( 0), 23 141 caller init (-1), 23 142 data init ( 0), 23 143 class init ( 0), 23 144 ioa_msg init ( 2)) fixed bin, 23 145 2 flags, 23 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 23 147 3 flags_pad bit(35) unal init ("0"b), 23 148 2 mode fixed bin init ( 1), 23 149 2 severity fixed bin init ( 0), 23 150 2 code fixed bin(35) init ( 0), 23 151 2 caller char(65) varying init (""), 23 152 2 data, 23 153 3 data_ptr ptr init (null), 23 154 3 data_lth fixed bin(21) init ( 0), 23 155 2 class char(10) varying init (""), 23 156 2 ioa_msg char(500) varying init (""); 23 157 23 158 23 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 23 160 23 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 23 162 2 version char(8) init ("sl_info1"), 23 163 2 arg_list_ptr ptr init (null), 23 164 2 loc, 23 165 3 (mode init (-1), 23 166 severity init ( 1), 23 167 code init ( 2), 23 168 caller init (-1), 23 169 data init ( 0), 23 170 class init ( 0), 23 171 ioa_msg init ( 4)) fixed bin, 23 172 2 flags, 23 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 23 174 3 flags_pad bit(35) unal init ("0"b), 23 175 2 mode fixed bin init ( 1), 23 176 2 severity fixed bin init ( 0), 23 177 2 code fixed bin(35) init ( 0), 23 178 2 caller char(65) varying init (""), 23 179 2 data, 23 180 3 data_ptr ptr init (null), 23 181 3 data_lth fixed bin(21) init ( 0), 23 182 2 class char(10) varying init (""), 23 183 2 ioa_msg char(500) varying init (""); 23 184 23 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 23 186 23 187 dcl 1 sl_info_code_msg aligned int static options(constant), 23 188 2 version char(8) init ("sl_info1"), 23 189 2 arg_list_ptr ptr init (null), 23 190 2 loc, 23 191 3 (mode init (-1), 23 192 severity init (-1), 23 193 code init ( 1), 23 194 caller init (-1), 23 195 data init ( 0), 23 196 class init ( 0), 23 197 ioa_msg init ( 2)) fixed bin, 23 198 2 flags, 23 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 23 200 3 flags_pad bit(35) unal init ("0"b), 23 201 2 mode fixed bin init ( 1), 23 202 2 severity fixed bin init ( 0), 23 203 2 code fixed bin(35) init ( 0), 23 204 2 caller char(65) varying init (""), 23 205 2 data, 23 206 3 data_ptr ptr init (null), 23 207 3 data_lth fixed bin(21) init ( 0), 23 208 2 class char(10) varying init (""), 23 209 2 ioa_msg char(500) varying init (""); 23 210 23 211 23 212 /* Syntax: call Trace (ioa_ctl, args); */ 23 213 23 214 dcl 1 sl_info_msg aligned int static options(constant), 23 215 2 version char(8) init ("sl_info1"), 23 216 2 arg_list_ptr ptr init (null), 23 217 2 loc, 23 218 3 (mode init (-1), 23 219 severity init (-1), 23 220 code init ( 0), 23 221 caller init (-1), 23 222 data init ( 0), 23 223 class init ( 0), 23 224 ioa_msg init ( 1)) fixed bin, 23 225 2 flags, 23 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 23 227 3 flags_pad bit(35) unal init ("0"b), 23 228 2 mode fixed bin init ( 1), 23 229 2 severity fixed bin init ( 0), 23 230 2 code fixed bin(35) init ( 0), 23 231 2 caller char(65) varying init (""), 23 232 2 data, 23 233 3 data_ptr ptr init (null), 23 234 3 data_lth fixed bin(21) init ( 0), 23 235 2 class char(10) varying init (""), 23 236 2 ioa_msg char(500) varying init (""); 23 237 23 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 1742 1743 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 24 2 /* format: style2,^inddcls,idind32 */ 24 3 24 4 declare 1 terminate_file_switches based, 24 5 2 truncate bit (1) unaligned, 24 6 2 set_bc bit (1) unaligned, 24 7 2 terminate bit (1) unaligned, 24 8 2 force_write bit (1) unaligned, 24 9 2 delete bit (1) unaligned; 24 10 24 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 24 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 24 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 24 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 24 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 24 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 24 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 24 18 24 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 1743 1744 /* BEGIN INCLUDE FILE ... ttyp.incl.pl1 */ 25 2 25 3 dcl max_tty_type fixed bin static init (11); 25 4 25 5 dcl tty_dev_type (0:16) char (8) aligned int static init /* ASCII explanations of terminal type */ 25 6 ("Network", "1050", "2741", "TTY37", "TN300", "ARDS", "CORR2741", "TTY33", 25 7 "TTY38", "G115", "type10", "ASCII", "type12", "type13", "type14", "type15", "type16"); 25 8 25 9 /* Note that device type 0 is used for both absentee and network. Distingush some other way */ 25 10 25 11 /* END INCLUDE FILE ... ttyp.incl.pl1 */ 1744 1745 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 26 2 26 3 26 4 /****^ HISTORY COMMENTS: 26 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 26 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 26 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 26 8* attribute switches. 26 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 26 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 26 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 26 12* be deleted. 26 13* B) Add constants identifying attributes that can be changed by user at 26 14* login, etc. 26 15* END HISTORY COMMENTS */ 26 16 26 17 26 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 26 19 26 20 /* format: style4 */ 26 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 26 22 (2 administrator bit (1), /* 1 system administrator privileges */ 26 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 26 24 2 nobump bit (1), /* 2 user cannot be bumped */ 26 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 26 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 26 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 26 28* . of same project (distinct from "nobump") */ 26 29 2 nolist bit (1), /* 7 don't list user on "who" */ 26 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 26 31 2 multip bit (1), /* 9 user may have several processes */ 26 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 26 33 2 brief bit (1), /* 11 no login or logout message */ 26 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 26 35 2 vhomedir bit (1), /* 13 user may change homedir */ 26 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 26 37 2 sb_ok bit (1), /* 15 user may be standby */ 26 38 2 pm_ok bit (1), /* 16 user may be primary */ 26 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 26 40 2 daemon bit (1), /* 18 user may login as daemon */ 26 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 26 42 2 no_warning bit (1), /* 20 no warning message */ 26 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 26 44* . in PDT: this user has an individual load control group */ 26 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 26 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 26 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 26 48 2 pad bit (12)) unaligned; 26 49 26 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 26 51 ("none", /* 0 */ 26 52 "administrator", /* 1 */ 26 53 "primary_line", /* 2 */ 26 54 "nobump", /* 3 */ 26 55 "guaranteed_login", /* 4 */ 26 56 "anonymous", /* 5 */ 26 57 "nopreempt", /* 6 */ 26 58 "nolist", /* 7 */ 26 59 "dialok", /* 8 */ 26 60 "multip", /* 9 */ 26 61 "bumping", /* 10 */ 26 62 "brief", /* 11 */ 26 63 "vinitproc", /* 12 */ 26 64 "vhomedir", /* 13 */ 26 65 "nostartup", /* 14 */ 26 66 "no_secondary", /* 15 */ 26 67 "no_prime", /* 16 */ 26 68 "no_eo", /* 17 */ 26 69 "daemon", /* 18 */ 26 70 "", /* 19 vdim OBSOLETE */ 26 71 "no_warning", /* 20 */ 26 72 "igroup", /* 21 */ 26 73 "save_pdir", /* 22 */ 26 74 "disconnect_ok", /* 23 */ 26 75 "save_on_disconnect"); /* 24 */ 26 76 26 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 26 78 ("null", /* 0 */ 26 79 "admin", /* 1 */ 26 80 "", "", /* 2 - 3 */ 26 81 "guar", /* 4 */ 26 82 "anon", /* 5 */ 26 83 "", "", /* 6 - 7 */ 26 84 "dial", /* 8 */ 26 85 "multi_login", /* 9 */ 26 86 "preempting", /* 10 */ 26 87 "", /* 11 */ 26 88 "v_process_overseer", /* 12 */ 26 89 "v_home_dir", /* 13 */ 26 90 "no_start_up", /* 14 */ 26 91 "no_sec", /* 15 */ 26 92 "no_primary", /* 16 */ 26 93 "no_edit_only", /* 17 */ 26 94 "op_login", /* 18 */ 26 95 "", /* 19 */ 26 96 "nowarn", /* 20 */ 26 97 "", "", "", /* 21 - 23 */ 26 98 "save"); /* 24 */ 26 99 26 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 26 101 options(constant) init("000000000010000000010000000000000000"b); 26 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 26 103 26 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 26 105 options(constant) init("000000000010000000010000000000000000"b); 26 106 /* PDT value for (brief, no_warning) is default */ 26 107 26 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 26 109 options(constant) init("000100000110010000010000000000000000"b); 26 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 26 111 27 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 27 2 27 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 4 /* */ 27 5 /* This include file describes the attributes of an absentee job. It is */ 27 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 27 7 /* and PIT.incl.pl1. */ 27 8 /* */ 27 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 10 27 11 /****^ HISTORY COMMENTS: 27 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 27 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 14* Separated abs_attributes from the request structure 27 15* (abs_message_format.incl.pl1) so that the identical structure could be 27 16* used in the ute structure (user_table_entry.incl.pl1). 27 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 27 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 19* Added ABS_ATTRIBUTE_NAMES array. 27 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 27 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 27 22* Added the no_start_up flag. SCP6367 27 23* END HISTORY COMMENTS */ 27 24 27 25 dcl 1 user_abs_attributes aligned based, 27 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 27 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 27 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 27 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 27 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 27 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 27 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 27 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 27 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 27 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 27 36 2 attributes_pad bit (26) unaligned; 27 37 27 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 27 39 "restartable", 27 40 "user_deferred_until_time", 27 41 "proxy", 27 42 "set_bit_cnt", 27 43 "time_in_gmt", 27 44 "user_deferred_indefinitely", 27 45 "secondary_ok", 27 46 "truncate_absout", 27 47 "restarted", 27 48 "no_start_up"); 27 49 27 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 27 51 26 112 26 113 26 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 1745 1746 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 28 2 28 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 4 /* */ 28 5 /* This include file requires that the user include */ 28 6 /* user_attributes.incl.pl1 as well. It also includes */ 28 7 /* abs_attributes.incl.pl1 itself. */ 28 8 /* */ 28 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 28 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 28 11 /* */ 28 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 13 28 14 /****^ HISTORY COMMENTS: 28 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 28 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 28 17* This comment for hcom. 28 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 28 19* anstbl.incl.pl1, and dutbl.incl.pl1. 28 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 28 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 28 22* 84-07-12 BIM added min_process_authorization 28 23* 84-12-31 Keith Loepere added pdir_dir_quota 28 24* 85-01-16 by E. Swenson to add ute.session_uid 28 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 28 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 28 27* Added fields for DSA login server support. 28 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 28 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 28 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 28 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 28 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 28 33* Added disconnection_rel_minutes. 28 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 28 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 36* Changed structure under ute.abs_attributes to use like structure in 28 37* abs_attributes.incl.pl1. This allows the same attributes to be used 28 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 28 39* file. 28 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 28 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 28 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 28 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 45* A) Global reorganization to locate things by type of data. 28 46* B) Eliminate ute.uflags.logged_in. 28 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 28 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 49* A) Reduced overlength person and project fields to proper length. 28 50* B) Adjusted dialed-console section to begin on even word boundary. 28 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 28 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 53* Add ute.line_type. 28 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 28 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 28 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 28 57* for the storage. SCP6367 28 58* END HISTORY COMMENTS */ 28 59 28 60 /* format: style4 */ 28 61 28 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 63 /* */ 28 64 /* Each of the named sections below defines a type of data. Typing comes */ 28 65 /* from data associated with the ute entry itself, with the person, with */ 28 66 /* login argument data, from the main user of the data (eg, dialup_, */ 28 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 28 68 /* and is an even number of words long. The total structure is 300 decimal */ 28 69 /* words long. */ 28 70 /* */ 28 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 72 28 73 28 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 28 75 28 76 dcl utep pointer automatic init (null); 28 77 28 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 28 79 28 80 /* Variables which give state of this entry */ 28 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 28 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 28 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 28 84 2 next_free fixed bin, /* points to previous free entry */ 28 85 28 86 /* Information user gave about person_id associated with this entry. */ 28 87 2 person char (24) unal, /* user's name */ 28 88 2 project char (12) unal, /* project of absentee user */ 28 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 28 90 2 tag_pad bit (27) unal, 28 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 28 92 2 login_flags, /* flags for login data */ 28 93 3 cpw bit (1) unal, /* flag for wish to change password */ 28 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 28 95 3 special_pw unal, /* dial or slave */ 28 96 4 dial_pw bit (1) unal, /* true if dial -user */ 28 97 4 slave_pw bit (1) unal, /* true if slave -user */ 28 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 28 99 3 cda bit (1) unal, /* flag to change default authorization */ 28 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 28 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 28 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 28 103 3 pw_pad bit (25) unal, /* spare parts */ 28 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 28 105 /* Must remain last in pw_flags so it does not */ 28 106 /* appear in PW_FLAG_VALUES array below. */ 28 107 2 generated_pw char (8) unal, /* user must type this as new password */ 28 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 28 109 2 process_authorization bit (72), /* access_authorization of this process */ 28 110 28 111 /* Information user gave about process associated with this entry. */ 28 112 2 outer_module char (32) unal, /* Name of console dim */ 28 113 2 home_dir char (64) unal, /* initial home directory */ 28 114 2 init_proc char (64) unal, /* name of login responder */ 28 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 28 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 28 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 28 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 28 119 2 initial_ring fixed bin, /* ring process will be started in */ 28 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 28 121 2 ln_args fixed bin, /* length of string containing arguments */ 28 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 28 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 28 124 28 125 /* Most of the following information is relevant only to absentee processes */ 28 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 28 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 28 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 28 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 28 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 28 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 28 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 28 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 28 134* (but see uflags.adjust_abs_q_no). */ 28 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 28 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 28 137 2 abs_flags, 28 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 28 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 28 140 3 abs_flags_pad bit (34) unal, 28 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 28 142 2 sender char (32) unal, /* name of RJE station that job is from */ 28 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 28 144 2 proxy_project char (9) unal, 28 145 2 proxy_project_pad char (3) unal, 28 146 2 abs_pad fixed bin, 28 147 28 148 /* Information about process actually created */ 28 149 2 proc_id bit (36), /* process id of absentee process */ 28 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 28 151 2 process_authorization_range (2) bit (72) aligned, 28 152 2 audit bit (36), /* audit flags for user */ 28 153 2 lot_size fixed bin, /* Size of linkage offset table */ 28 154 2 kst_size fixed bin, /* Size of process known segment table */ 28 155 2 cls_size fixed bin, /* Size of process combined linkage */ 28 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 28 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 28 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 28 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 28 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 28 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 28 162 2 pdir_pad fixed bin(17) unal, 28 163 2 process_pad fixed bin, 28 164 28 165 /* Information about primary terminal associated with this entry */ 28 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 28 167 2 terminal_type char (32) unaligned, /* terminal type */ 28 168 2 line_type fixed bin, /* line type */ 28 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 28 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 28 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 28 172 28 173 /* Variables useful for dialed terminals */ 28 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 28 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 28 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 28 177 2 dial_server_flags, 28 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 28 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 28 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 28 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 28 182 28 183 /* Information about usage/accounting. Device usage meters are in a 28 184* separate segment, "devtab" */ 28 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 28 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 28 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 28 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 28 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 28 190 2 last_update_time fixed bin (71), /* time of last account update */ 28 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 28 192 2 ndevices fixed bin, /* Count of attached devices */ 28 193 2 device_head fixed bin, /* Table index of head of device chain */ 28 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 28 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 28 196 2 rs_number_pad bit(30) unal, 28 197 2 usage_pad fixed bin, 28 198 28 199 /* Information for dialup_ (control variables). */ 28 200 2 event fixed bin (71), /* event associated with channel or user manager */ 28 201 2 uprojp ptr, /* ptr to user project sat entry */ 28 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 28 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 28 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 28 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 28 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 28 207 2 count fixed bin, /* counter for logins and dialups */ 28 208 2 n_processes fixed bin, /* number of processes created in this session */ 28 209 2 lock_value fixed bin, /* number of locks set for this entry */ 28 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 28 211 2 login_code char (8) unal, /* login command from LOGIN line */ 28 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 28 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 28 214 2 logout_type char (4) unal, /* type of logout */ 28 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 28 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 28 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 28 218 2 work_class fixed bin, /* work class used by priority scheduler */ 28 219 2 group char (8) unal, /* party group identifier */ 28 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 28 221 28 222 2 uflags, /* Miscellaneous flags */ 28 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 28 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 28 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 28 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 28 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 28 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 28 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 28 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 28 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 28 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 28 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 28 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 28 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 28 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 28 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 28 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 28 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 28 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 28 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 28 242 3 uflags_pad bit (17) unal, 28 243 28 244 /* Information used by load_ctl_ for the process */ 28 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 28 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 28 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 28 248 28 249 28 250 /* Information for login server */ 28 251 2 login_server_info, 28 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 28 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 28 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 28 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 28 256 3 process_id bit (36) aligned, /* process_id of login server */ 28 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 28 258 28 259 /* values for ute.process_type */ 28 260 28 261 dcl (PT_INTERACTIVE initial (1), 28 262 PT_ABSENTEE initial (2), 28 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 28 264 28 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 28 266 "INVALID-TYPE", 28 267 "interactive", 28 268 "absentee", 28 269 "daemon"); 28 270 28 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 28 272 "UNKNOWN-TABLE", 28 273 "answer_table", 28 274 "absentee_user_table", 28 275 "daemon_user_table"); 28 276 28 277 28 278 /* values for ute.pw_flags.mask_ctl */ 28 279 28 280 dcl (DO_MASK init ("00"b), 28 281 DONT_MASK init ("01"b), 28 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 28 283 28 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 28 285 "do_mask", "dont_mask", "derive_mask", ""); 28 286 28 287 28 288 /* names for ute.pw_flags */ 28 289 28 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 28 291 "cpw", 28 292 "generate_pw", 28 293 "dial_pw", 28 294 "slave_pw", 28 295 "cdp", 28 296 "cda", 28 297 "auth_given", 28 298 "noprint", 28 299 "operator"); 28 300 28 301 /* names for ute.uflags */ 28 302 28 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 28 304 "dont_call_init_admin", 28 305 "ip_given", 28 306 "ss_given", 28 307 "lvs_attached", 28 308 "send_initial_string", 28 309 "adjust_abs_q_no", 28 310 "foreground_secondary_ok", 28 311 "foreground_job", 28 312 "sus_sent", 28 313 "suspended", 28 314 "ignore_cpulimit", 28 315 "deferral_logged", 28 316 "save_if_disconnected", 28 317 "disconnected", 28 318 "disconnected_list", 28 319 "proc_create_ok", 28 320 "activity_can_unbump", 28 321 "fpe_causes_logout", 28 322 "user_specified_immediate"); 28 323 28 324 /* names for ute.abs_flags */ 28 325 28 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 28 327 "abs_run", 28 328 "notify"); 28 329 28 330 /* names of ute.dial_server_flags */ 28 331 28 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 28 333 "registered", 28 334 "privileged"); 28 335 28 336 /* values of ute.login_result */ 28 337 28 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 28 339 "logged in", 28 340 "login failed, hangup", 28 341 "login failed, try again"); 28 342 28 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 1746 1747 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 29 2 29 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 4 /* */ 29 5 /* This include file declares the header shared by the answer_table, */ 29 6 /* absentee_user_table and daemon_user_table include files. */ 29 7 /* */ 29 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 9 29 10 /****^ HISTORY COMMENTS: 29 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 29 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 13* Initial coding. 29 14* END HISTORY COMMENTS */ 29 15 29 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 29 17 2 header_version fixed bin, /* version of the header (3) */ 29 18 2 entry_version fixed bin, /* version of user table entries */ 29 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 29 20 2 header_length fixed bin, /* length of the header */ 29 21 2 max_size fixed bin, /* max number of entries in this table */ 29 22 2 current_size fixed bin, /* actual size of table (in entries) */ 29 23 2 number_free fixed bin, /* number of free entries in the table. */ 29 24 2 first_free fixed bin, /* index of first entry in the free list. */ 29 25 2 as_procid bit (36), /* process ID of user table manager process */ 29 26 2 ut_header_pad fixed bin; 29 27 29 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 1747 1748 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 30 2 30 3 /* Modified 740723 by PG to add security info */ 30 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 30 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 30 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 30 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 30 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 30 9 30 10 dcl 1 whotab based (whoptr) aligned, 30 11 2 mxusers fixed bin, /* max. number of users on system */ 30 12 2 n_users fixed bin, /* current number of users */ 30 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 30 14 2 n_units fixed bin, /* current load */ 30 15 2 timeup fixed bin (71), /* time system was started */ 30 16 2 session char (8), /* AS state, same as anstbl.session */ 30 17 2 nextsd fixed bin (71), /* time we will shutdown */ 30 18 2 until fixed bin (71), /* projected time we start up again */ 30 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 30 20 2 erfno char (8), /* if a crash, the error number */ 30 21 2 obsolete_why char (32), /* reason for last shutdown */ 30 22 2 installation_id char (32), /* name of installation */ 30 23 2 obsolete_message char (32), /* message for all users */ 30 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 30 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 30 26 2 max_abs_users fixed bin, /* max number of absentee users */ 30 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 30 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 30 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 30 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 30 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 30 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 30 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 30 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 30 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 30 36 2 pad1 bit (9) unal, 30 37 2 pad (3) fixed bin, 30 38 2 version fixed bin, /* structure version */ 30 39 2 header_size fixed bin, /* length of header in words */ 30 40 2 entry_size fixed bin, /* length of entry in words */ 30 41 /* laste_adjust is used only by Answering Service programs */ 30 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 30 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 30 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 30 45 30 46 /* whotab header extension: The header is extended from 64 words by 30 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 30 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 30 49* present. This allows existing programs to function with old definitions of 30 50* whotab. Obviously no new header field can be more than 31 contiguous words in 30 51* length. In the Answering Service, all programs using whotab must be compiled 30 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 30 53 30 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 30 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 30 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 30 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 30 58 2 abs_control, /* see absentee_user_table */ 30 59 3 mnbz bit (1) unal, /* must not be zero */ 30 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 30 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 30 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 30 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 30 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 30 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 30 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 30 67 3 control_pad bit (23) unal, 30 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 30 69 2 installation_request_pid bit (36), /* installation process identifier */ 30 70 2 sysid char (32), /* current system name */ 30 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 30 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 30 73 2 message char (124), /* message for all users */ 30 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 30 75 2 why char (124), /* reason for last shutdown */ 30 76 2 e (1000), /* offset 240o */ 30 77 3 active fixed bin, /* nonzero means logged in */ 30 78 3 person char (28) aligned, /* person name */ 30 79 3 project char (28), /* project id */ 30 80 3 anon fixed bin, /* 1 if anonymous user */ 30 81 3 padding fixed bin (71), 30 82 3 timeon fixed bin (71), /* time of login */ 30 83 3 units fixed bin, /* load units */ 30 84 3 stby fixed bin, /* 1 if stby */ 30 85 3 idcode char (4), /* tty id code */ 30 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 30 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 30 88 3 group char (8), /* party-line group */ 30 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 30 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 30 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 30 92 3 pad2 bit (33) unal, 30 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 30 94 3 process_authorization bit (72); /* access authorization of process */ 30 95 30 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 30 97 30 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 1748 1749 1750 1751 /* BEGIN MESSAGE DOCUMENTATION 1752* 1753* Message: 1754* act_ctl_: accounting disabled 1755* 1756* S: as (severity1) 1757* 1758* T: May occur at any time. 1759* 1760* M: The accounting system has been disabled by a call to 1761* act_ctl_$act_ctl_disable. 1762* 1763* A: $ignore 1764* 1765* 1766* Message: 1767* act_ctl_: accounting enabled. 1768* 1769* S: as (severity1) 1770* 1771* T: May occur at any time. 1772* 1773* M: The accounting system has been enabled, probably after a 1774* special session, by a call to act_ctl_$act_ctl_reable. 1775* 1776* A: $ignore 1777* 1778* 1779* Message: 1780* act_ctl_: alarm clock late or failing by XX.XX mins 1781* 1782* S: as (severity1) 1783* 1784* T: $run 1785* 1786* M: The alarm clock channel has not caused an accounting update 1787* to be performed when it was due. (The time between updates is stored 1788* in the segment installation_parms.) The system performs a manual 1789* accounting update. 1790* This message may appear if the system has entered BOS, and Multics has then been restarted by the GO command. In such case, 1791* the message can be ignored. 1792* 1793* A: $note 1794* 1795* 1796* Message: 1797* act_ctl_: MODE update: users = NN, pf=XX, vcpu=YY.Y, rt=ZZ.Z MESSAGE 1798* 1799* S: as (severity1) 1800* 1801* T: $run 1802* 1803* M: Periodically, the accounting programs read and store the CPU usage 1804* for each user. This message is printed when the update completes. 1805* MODE may be 'Automatic', in which case the update occurred at the normal 1806* system parameter time; 'Manual', where the normal update didn't occur; 1807* or 'Shift Cmnd' where the update occurred due to a shift command. 1808* XX is the number of page faults taken by Initializer for update. 1809* YY.Y is the virtual CPU time taken by Initializer for update. 1810* ZZ.Z is the real time taken by Initializer for update. 1811* MESSAGE may be one or both of the following strings: 1812* 'answer table locked' or 'install(s) pending' 1813* 1814* A: $ignore 1815* The number of seconds between accounting updates is a system parameter 1816* that an installation may change; it is stored in the segment 1817* installation_parms. 1818* 1819* 1820* Message: 1821* act_ctl_: bumping absNN NAME.PROJ - inactive too long 1822* 1823* S: as (severity1) 1824* 1825* T: $run 1826* 1827* M: The absentee job on absentee slot NN for user NAME.PROJ 1828* has remained blocked too long. (The inactive time limit is 1829* stored in the segment installation_parms.) The absentee job 1830* is bumped. 1831* 1832* A: $ignore 1833* 1834* 1835* Message: 1836* act_ctl_: bumping absXX NAME.PROJ - too much time 1837* 1838* S: as (severity1) 1839* 1840* T: $run 1841* 1842* M: The absentee job on absentee slot XX for the user 1843* NAME.PROJ has exceeded the CPU time limit for the queue. (This 1844* limit is stored in the segment installation_parms.) 1845* The absentee job is bumped. 1846* 1847* A: $ignore 1848* 1849* 1850* Message: 1851* act_ctl_: bumping NAME.PROJ for inactivity 1852* 1853* S: as (severity1) 1854* 1855* T: $run 1856* 1857* M: The user with name NAME and project PROJ has been inactive too 1858* long, and is bumped off the system. The maximum inactive time 1859* is stored in the segment installation_parms. 1860* 1861* A: $ignore 1862* 1863* 1864* Message: 1865* act_ctl_: bumping NAME.PROJ. REASON 1866* 1867* S: as (severity1) 1868* 1869* T: $run 1870* 1871* M: The user with name NAME and project PROJ has been bumped 1872* because some per-user limit has been exceeded. REASON tells what was 1873* wrong; it will be a message such as "User resource limit of 1874* $100 monthly exceeded," depending on which user limit has 1875* been exceeded. 1876* 1877* A: $ignore 1878* 1879* 1880* Message: 1881* act_ctl_$init: cannot locate Initializer.SysDaemon pdt entry 1882* 1883* S: as (severity2) 1884* 1885* T: $init 1886* 1887* M: The accounting system requires the entry for Initializer in 1888* the project SysDaemon to be present because certain system metering 1889* figures are kept there. This entry cannot be found, either because 1890* SysDaemon.pdt has been lost, or because its contents have been destroyed. The 1891* system will probably encounter a simfault_xxx error and be unable to 1892* start up. 1893* 1894* A: $contact 1895* Do not attempt to 1896* run the system until this problem has been fixed. 1897* 1898* 1899* Message: 1900* act_ctl_: changing shift from x to y 1901* 1902* S: as (severity1) 1903* 1904* T: $run 1905* 1906* M: The current accounting shift has changed. 1907* The table that tells the beginning time for each shift is stored 1908* in the segment installation_parms. 1909* 1910* A: $ignore 1911* 1912* 1913* Message: 1914* act_ctl_: charged X, available Y mins 1915* 1916* S: as (severity0) 1917* 1918* T: $run 1919* 1920* M: X is the sum of virtual CPU time charged to all processes and Y is the total virtual CPU time used by all processes. 1921* This message logs detailed accounting information and appears whenever the message "act_ctl_: discrepancy of XX.XX mins" appears. 1922* 1923* A: $ignore 1924* 1925* 1926* Message: 1927* act_ctl_: discrepancy of XX.XX mins 1928* 1929* S: as (severity1) 1930* 1931* T: $run 1932* 1933* M: The total time available from traffic control does not agree 1934* with the total time charged to users plus the Initializer time plus 1935* the idle time. Some process has escaped being accounted for. 1936* 1937* A: $inform_sa 1938* 1939* 1940* Message: 1941* act_ctl_$init: ERROR_MESSAGE. creating update channel 1942* 1943* S: as (severity2) 1944* 1945* T: $init 1946* 1947* M: The timer channel that causes accounting updates to be performed 1948* could not be created. All accounting updates will be manual, 1949* triggered by a user logging out. 1950* 1951* A: $inform 1952* 1953* Message: 1954* act_ctl_: Lock wait time exceeded. While destroying proc for NAME.PROJ 1955* 1956* S: as (severity2) 1957* 1958* T: $run 1959* 1960* M: The accounting system was unable to lock the PDT entry for the 1961* user NAME in the project PROJ within its time limit (usually five minutes) 1962* This user attempted to log out or destroy a process. The 1963* entry was probably locked because a system administrator or daemon process 1964* locked the entry and then failed. The system attempts 1965* to continue. 1966* 1967* A: $inform_sa 1968* 1969* 1970* Message: 1971* act_ctl_: process XXXXXXXXXXXX for NAME.PROJ vanished 1972* 1973* S: as (severity2) 1974* 1975* T: $run 1976* 1977* M: Traffic control cannot locate a process for a user who should 1978* have one according to accounting. The system attempts to run 1979* normally, but this user is not charged. An attempt is 1980* made to bump the user in question. This may be the first indication 1981* that the segment >system_control_1>answer_table has been damaged. 1982* 1983* A: $note 1984* 1985* 1986* Message: 1987* act_ctl_: STRING for USER.PROJ is negative (NUM) at logout; 1988* set it to zero. 1989* 1990* S: as (severity2) 1991* 1992* T: $run 1993* 1994* M: A counter value of STRING was decremented by 1 and went negative. 1995* It was noticed when attempting to log out USER on the PROJ project. 1996* This is a sign of possible damage to the PROJ pdt. 1997* 1998* A: $note 1999* 2000* 2001* Message: 2002* act_ctl_$update: Processid XXXXXXXX missing. 2003* Not charged for XX pkt, YY byte and ZZ seconds; was/was not purged. 2004* 2005* S: as (severity2) 2006* 2007* T: $run 2008* 2009* M: After charging network accounting usage for all users on the system, 2010* an entry was found for processid XXXXXXXX. The XX, YY and ZZ are counts of 2011* the usage which the process had. If the entry was for a process which is 2012* no longer logged in, the accounting record was purged from the network 2013* accounting file. 2014* 2015* A: $note 2016* 2017* 2018* Message: 2019* act_ctl_: shutdown, NNN WW.WW XX.XX YY.YY ZZ.ZZ HH:MM:SS $DDD.DD 2020* 2021* S: as (severity1) 2022* 2023* T: $shut 2024* 2025* M: A successful shutdown of the accounting portion of the system 2026* has been accomplished. NNN logins were recorded, for a total usage 2027* of HH:MM:SS of CPU time charged. The other numbers are of interest 2028* to system administrators and programmers. WW.WW is the average queue 2029* length, XX.XX is the average eligible, YY.YY is the thrashing index, 2030* ZZ.ZZ is the average response, and DDD.DD is the total dollar charge 2031* since startup. A shutdown of the hardcore system follows this 2032* message. 2033* 2034* A: $ignore 2035* 2036* 2037* Message: 2038* act_ctl_$init: ERROR_MESSAGE. Cannot unlock PDT PATHNAME. 2039* 2040* S: as (severity2) 2041* 2042* T: $init 2043* 2044* M: This message occurs during answering service initialization 2045* when attempting to unlock all PDTs. ERROR_MESSAGE specifies the 2046* the reason for the problem. The PDT is skipped. Later problems 2047* may arise because of this error. 2048* 2049* A: $inform 2050* 2051* Message: 2052* act_ctl_$init: The PDT is damaged. Cannot unlock PATHNAME. 2053* 2054* S: as (severity2) 2055* 2056* T: $init 2057* 2058* M: This message occurs during answering service initialization 2059* when attempting to unlock all PDTs. The specified PDT had its 2060* damaged switch turned on. Because of this, it was not unlocked 2061* from the previous bootload. It is skipped. Later problems may 2062* arise when an attempt is made to reference this PDT. 2063* 2064* A: $inform 2065* 2066* Message: 2067* act_ctl_$update: Error from ROUTINE: MESSAGE 2068* 2069* S: as (severity2). 2070* 2071* T: $run 2072* 2073* M: The system encountered problems while referencing the 2074* network_accounting_table. The network_accounting_ ROUTINE being 2075* called and MESSAGE text further describe the error. 2076* 2077* A: $inform 2078* 2079* 2080* Message: 2081* act_ctl_$update: Net accounting array version (VERSION_RETURNED) not 2082* supported. Expected version (VERSION_SUPPORTED) 2083* 2084* S: as (severity2). 2085* 2086* T: $run 2087* 2088* M: network_accounting_gate_$read_and_reset_table returned a structure 2089* version which act_ctl_ does not support. $err 2090* 2091* A: $contact_sm 2092* 2093* 2094* Message: 2095* act_ctl_$dp: Net accounting array version (VERSION_RETURNED) not 2096* supported. Expected version (VERSION_SUPPORTED) 2097* 2098* S: as (severity2). 2099* 2100* T: $run 2101* 2102* M: network_accounting_gate_$read_and_reset_table returned a structure 2103* version which act_ctl_ does not support. $err 2104* 2105* A: $contact_sm 2106* 2107* 2108* Message: 2109* act_ctl_$init: illegal value (DD) for accounting update interval in installation_parms. 2110* 2111* S: as (severity2) 2112* 2113* T: $init 2114* 2115* M: The value given in installation_parms.acct_update is less than or 2116* equal to zero. The installation_parms file is probabily damaged. 2117* 2118* A: $contact 2119* Do not attempt to 2120* run the system until this problem has been fixed. 2121* 2122* 2123* END MESSAGE DOCUMENTATION */ 2124 2125 end act_ctl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/21/92 1607.2 act_ctl_.pl1 >spec>install>1038>act_ctl_.pl1 1724 1 08/06/87 1013.4 absentee_user_table.incl.pl1 >ldd>include>absentee_user_table.incl.pl1 1725 2 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1726 3 08/06/87 1013.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 1727 4 08/06/87 1013.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 1728 5 08/06/87 1013.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 1729 6 08/06/87 1013.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 1730 7 08/06/87 1013.4 as_meter_table.incl.pl1 >ldd>include>as_meter_table.incl.pl1 1731 8 01/21/85 1012.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 1732 9 09/09/75 2107.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 9-10 10 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 1733 11 08/06/87 1013.4 devid.incl.pl1 >ldd>include>devid.incl.pl1 1734 12 08/06/87 1013.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1735 13 08/06/87 1012.9 daemon_user_table.incl.pl1 >ldd>include>daemon_user_table.incl.pl1 1736 14 08/06/87 1013.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 14-148 15 11/21/79 1558.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1737 16 08/06/87 1013.5 network_account_array.incl.pl1 >ldd>include>network_account_array.incl.pl1 1738 17 09/13/84 1021.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 17-29 18 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 1739 19 03/27/82 0535.1 rate_structure.incl.pl1 >ldd>include>rate_structure.incl.pl1 1740 20 08/06/87 1516.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 20-34 21 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 1741 22 08/06/87 1013.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 1742 23 08/06/87 1013.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 1743 24 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 1744 25 08/29/75 0938.6 ttyp.incl.pl1 >ldd>include>ttyp.incl.pl1 1745 26 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 26-112 27 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 1746 28 07/14/88 2115.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 1747 29 08/06/87 1013.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 1748 30 01/18/85 1053.2 whotab.incl.pl1 >ldd>include>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. ABS 000171 constant fixed bin(17,0) initial dcl 1339 set ref 1359 1412* 1421* 1430* ACCTUP_METER 000042 constant fixed bin(17,0) initial dcl 6-26 set ref 745* 913* ACCT_UPDATE_PRIO 000160 constant fixed bin(17,0) initial dcl 8-28 set ref 407* BILLING_PERIOD constant fixed bin(17,0) initial dcl 1343 set ref 1412* 1415* DAYS constant fixed bin(17,0) initial dcl 1340 set ref 1354 1437* FIXPDT_METER 000024 constant fixed bin(17,0) initial dcl 6-34 set ref 473* 524* INACTIVITY_STABILIZATION_TIME 000050 constant fixed bin(71,0) initial dcl 186 ref 1072 MICROSECONDS_PER_HOUR 000046 constant fixed bin(35,0) initial dcl 187 ref 1198 1221 1221 1221 1248 1248 MICROSECONDS_PER_MINUTE 000044 constant float bin(63) initial dcl 188 ref 680 883 884 884 MICROSECONDS_PER_WEEK 000042 constant fixed bin(71,0) initial dcl 189 ref 423 423 MILLION 000040 constant fixed bin(35,0) initial dcl 190 ref 463 676 740 837 907 1048 1072 1437 NETUP_METER 000156 constant fixed bin(17,0) initial dcl 6-37 set ref 756* 774* 956* 982* 1177* 1179* NET_ACCT_ARRAY_VERSION_1 000002 constant char(8) initial packed unaligned dcl 16-51 set ref 765 766* 965 966* NEVER 000036 constant fixed bin(71,0) initial dcl 191 ref 1437 NL 012610 constant char(1) initial packed unaligned dcl 195 ref 605 NOW_FREE constant fixed bin(17,0) initial dcl 12-76 ref 833 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 12-76 ref 780 822 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 12-76 ref 638 998 OPEN 000035 constant float bin(27) initial dcl 197 ref 1410 1419 1428 PCT 000157 constant fixed bin(17,0) initial dcl 1341 set ref 1415* 1424* 1433* PT_ABSENTEE constant fixed bin(17,0) initial dcl 28-261 ref 642 1001 PT_DAEMON constant fixed bin(17,0) initial dcl 28-261 ref 648 1005 PT_INTERACTIVE constant fixed bin(17,0) initial dcl 28-261 ref 667 1020 P_code parameter fixed bin(35,0) dcl 1488 set ref 1485 1508 1508* P_device_index parameter fixed bin(17,0) dcl 1679 ref 1677 1682 1683 1683 P_message parameter char packed unaligned dcl 1489 ref 1485 1516 1519 1519 P_quantity parameter float bin(63) dcl 1680 ref 1677 1682 P_utep parameter pointer dcl 567 ref 564 569 QNAME 000030 constant char(4) initial array packed unaligned dcl 198 ref 646 1003 RW_ACCESS 000067 constant bit(3) initial packed unaligned dcl 2-11 set ref 484* SHIFT constant fixed bin(17,0) initial dcl 1342 set ref 1355 1430* 1433* SL_LOG 000171 constant fixed bin(17,0) initial dcl 23-14 set ref 680* 711* 789* 809* 839* 847* 883* 888* 914* 1053* 1085* 1097* 1103* 1119* 1135* 1451* SL_LOG_BEEP 000164 constant fixed bin(17,0) initial dcl 23-14 set ref 409* 456* 486* 496* 526* 760* 766* 944* 960* 966* 1151* SL_LOG_SILENT 000050 constant fixed bin(17,0) initial dcl 23-14 set ref 884* 1471* 1582* 1604* 1670* TERM_FILE_TERM 000000 constant bit(3) initial packed unaligned dcl 24-14 set ref 519* TOLERANCE 000026 constant float bin(63) initial dcl 204 ref 880 UTE_SIZE constant fixed bin(17,0) initial dcl 3-120 ref 778 778 WAIT_LOGOUT_SIG constant fixed bin(17,0) initial dcl 12-25 ref 781 a_atep parameter pointer dcl 1066 ref 1064 1078 a_code parameter fixed bin(35,0) dcl 1067 set ref 1064 1069* 1082* abs builtin function dcl 379 ref 880 880 abs_cpu_price 511 based float bin(27) array level 3 dcl 19-9 ref 1198 abs_event 50 based fixed bin(71,0) level 2 dcl 30-10 set ref 851* abs_mem_price 515 based float bin(27) array level 3 dcl 19-9 ref 1198 abs_procid 52 based bit(36) level 2 dcl 30-10 set ref 851* abs_signal 000542 automatic structure level 1 dcl 354 set ref 851 absda 000100 automatic fixed bin(17,0) dcl 293 set ref 446* 751* absentee 244 based structure array level 2 dcl 17-58 absolute_cutoff 350 based fixed bin(71,0) level 2 dcl 17-58 set ref 1303* 1306 1307* 1353* 1437 1437 absolute_increm 352 based fixed bin(17,0) level 2 dcl 17-58 set ref 1421* 1424* 1437 absolute_limit 346 based float bin(27) level 2 dcl 17-58 ref 1301 1302 1419 1420 1423 absolute_spent 347 based float bin(27) level 2 dcl 17-58 set ref 1201* 1201 1228* 1228 1254* 1254 1301 1420 1685* 1685 abssw parameter fixed bin(17,0) dcl 1281 ref 1279 1293 accounting 7(03) based bit(1) array level 4 packed packed unaligned dcl 16-27 set ref 1577 1648* acct_alarm_fail 124 based fixed bin(17,0) level 2 dcl 3-55 set ref 412* 683* acct_last_update_time 122 based fixed bin(71,0) level 2 dcl 3-55 set ref 739* acct_update 504 based fixed bin(17,0) level 3 dcl 14-33 set ref 455 456* 463 466 907 908 acct_update_chn 120 based fixed bin(71,0) level 2 dcl 3-55 set ref 406* 407* 465* 909* 1105 act_ctl_$update 000044 constant entry external dcl 225 ref 407 407 685 active based fixed bin(17,0) level 2 dcl 28-78 ref 638 780 822 833 998 addr builtin function dcl 379 ref 475 484 486 486 496 496 504 531 778 802 820 831 851 1080 1080 1149 1149 1198 1198 1221 1221 1221 1221 1248 1248 1248 1523 1523 1682 adjust_abs_q_no 431(05) based bit(1) level 3 packed packed unaligned dcl 28-78 ref 703 1375 adjust_cutoff_ 000046 constant entry external dcl 226 ref 616 706 785 alarmfail 000010 internal static fixed bin(17,0) initial dcl 210 set ref 413* 684* 686* 747 905 ansp 000610 automatic pointer initial dcl 3-53 set ref 405* 406 407 412 417 418 423 423 446 448 449 450 462 465 467 576* 577 616 639* 640 674 676 683 696* 697 706 738* 739 739 740 751 755 777 778 785 887 888 889 890 893 894 900 900 909 911 914 914 914 928* 929 932 939 955 999* 1000 1042* 1043 1070* 1071 1072 1104* 1105 3-53* 441 1158 1167 1169 1176 1216 1243 1287 1306 1428 1429 1429 1432 1437 1682 anstbl based structure level 1 dcl 3-55 any_other 000564 stack reference condition dcl 385 ref 743 1076 aptptr 2 000544 automatic pointer level 2 dcl 358 set ref 1082 1150 as_any_other_handler_ 000050 constant entry external dcl 227 ref 743 1076 as_data_$ansp 000230 external static pointer dcl 4-26 ref 405 576 639 696 738 928 999 1042 1070 1104 as_data_$as_procid 000232 external static bit(36) dcl 4-27 set ref 802* as_data_$asmtp 000234 external static pointer dcl 4-30 ref 659 659 659 659 659 659 1029 1029 1029 1029 1029 1029 as_data_$autp 000236 external static pointer dcl 4-31 ref 829 as_data_$dutp 000240 external static pointer dcl 4-37 ref 530 818 as_data_$ls_message_buffer_cur_lth 000254 external static fixed bin(18,0) dcl 4-86 set ref 1529 1549* as_data_$ls_message_buffer_max_lth 000256 external static fixed bin(18,0) dcl 4-87 set ref 1528 1543* as_data_$ls_message_buffer_ptr 000260 external static pointer dcl 4-88 set ref 1527 1541* as_data_$pdtdir 000242 external static char(168) packed unaligned dcl 4-45 set ref 484 486 486 496 496 as_data_$rs_ptrs 000244 external static pointer array dcl 4-49 set ref 455 455 456 456 463 463 466 466 709 709 740 740 788 788 808 808 907 907 908 908 1072 1072 1198 1198 1221 1221 1221 1221 1248 1248 1248 1682 1703 1703 1703 1703 1706 1706 1709 1709 1709 1709 1712 1712 1715 1715 1715 1715 1718 1718 as_data_$satp 000246 external static pointer dcl 4-52 ref 474 474 475 475 as_data_$sysdir 000250 external static char(168) packed unaligned dcl 4-54 ref 401 401 as_data_$whoptr 000252 external static pointer dcl 4-60 ref 423 423 423 423 423 423 423 423 423 423 423 423 423 423 442 442 443 443 450 450 851 851 851 851 893 893 894 894 894 894 900 900 900 900 as_error_table_$cut_proj_date 000172 external static fixed bin(35,0) dcl 273 ref 594 598 as_error_table_$cut_proj_funds 000174 external static fixed bin(35,0) dcl 273 ref 585 589 as_error_table_$cut_proj_other 000176 external static fixed bin(35,0) dcl 273 ref 601 as_error_table_$cut_user_cut_msg 000200 external static fixed bin(35,0) dcl 273 ref 1304 as_error_table_$cut_user_date_msg 000202 external static fixed bin(35,0) dcl 273 ref 1308 as_error_table_$cut_user_mlim_msg 000204 external static fixed bin(35,0) dcl 273 ref 1290 as_error_table_$cut_user_shift_msg 000206 external static fixed bin(35,0) dcl 273 ref 1296 as_error_table_$inactive 000210 external static fixed bin(35,0) dcl 273 set ref 808* 1082 as_error_table_$proj_low_funds 000212 external static fixed bin(35,0) dcl 273 set ref 1399* as_error_table_$user_warn_days 000214 external static fixed bin(35,0) dcl 273 set ref 1369* as_error_table_$user_warn_funds 000216 external static fixed bin(35,0) dcl 273 set ref 1360* as_error_table_$user_warn_pct 000220 external static fixed bin(35,0) dcl 273 set ref 1364* as_error_table_$warn_proj_date 000222 external static fixed bin(35,0) dcl 273 set ref 1405* as_meter_ 000052 constant entry external dcl 228 ref 864 1045 as_meter_$as_meter_init 000054 constant entry external dcl 229 ref 536 as_meter_$as_meter_stop 000056 constant entry external dcl 230 ref 1046 as_meter_$enter 000060 constant entry external dcl 231 ref 473 745 756 956 1177 as_meter_$exit 000062 constant entry external dcl 232 ref 524 774 982 1179 as_meter_$exit_values 000064 constant entry external dcl 233 ref 913 asmt based structure level 1 dcl 7-47 asmte based structure level 1 dcl 7-66 asmtp defined pointer dcl 5-19 ref 659 659 659 1029 1029 1029 astty_$tty_force 000266 constant entry external dcl 1506 ref 1523 asu_$blast_user 000066 constant entry external dcl 234 ref 1453 asu_$bump_code 000070 constant entry external dcl 235 ref 808 asu_$bump_user 000072 constant entry external dcl 236 ref 709 788 1153 at 100 based structure level 2 dcl 28-78 autbl based structure level 1 dcl 1-28 autp 000606 automatic pointer initial dcl 1-26 set ref 829* 830 831 1-26* baseno builtin function dcl 379 ref 1377 baseptr builtin function dcl 379 ref 1377 before builtin function dcl 379 ref 645 binary builtin function dcl 379 ref 903 903 brief 100(10) based bit(1) level 3 packed packed unaligned dcl 28-78 ref 610 618 byte_count 11 based fixed bin(35,0) array level 3 dcl 16-27 ref 1595 1645 ceil builtin function dcl 379 ref 1414 1423 1432 channel 341 based pointer level 2 packed packed unaligned dcl 28-78 ref 1523 1523 charge 124 based float bin(27) array level 3 in structure "user" dcl 17-58 in procedure "act_ctl_" set ref 1226* 1226 1252* 1252 1293 1429 charge 244 based float bin(27) array level 3 in structure "user" dcl 17-58 in procedure "act_ctl_" set ref 1200* 1200 clock builtin function dcl 379 ref 418 577 640 697 701 739 929 1000 1043 1071 code 000101 automatic fixed bin(35,0) dcl 295 set ref 398* 406* 407* 408 409* 484* 485 486* 519* 544* 709* 757* 760 760* 788* 802* 808* 851* 957* 960 960* 1153* codex parameter fixed bin(35,0) dcl 556 set ref 547 564 578* 603* 623* connect 132 based fixed bin(71,0) array level 3 dcl 17-58 set ref 1218* 1218 1245* 1245 connect_time 10 based fixed bin(35,0) array level 3 dcl 16-27 ref 1597 1647 convert_status_code_ 000074 constant entry external dcl 237 ref 604 1297 1309 1314 1360 1364 1369 1399 1405 1508 core 130 based fixed bin(71,0) array level 3 dcl 17-58 set ref 1219* 1219 1246* 1246 core_price 230 based float bin(27) array level 3 dcl 19-9 ref 1221 1248 coredelta 000102 automatic fixed bin(71,0) dcl 296 set ref 933* 1159* 1197 1198 1219 1221 1246 1248 cost 000104 automatic float bin(27) dcl 297 set ref 1198* 1200 1201 1202 1203 1204 1221* 1226 1227 1228 1229 1230 1248* 1252 1253 1254 1255 1256 1682* 1683 1684 1685 1686 1694 count 3 based fixed bin(17,0) level 2 dcl 16-27 ref 1574 1643 counter parameter fixed bin(17,0) dcl 1465 ref 1463 1469 cpu 246 based fixed bin(71,0) array level 3 in structure "user" dcl 17-58 in procedure "act_ctl_" set ref 1196* 1196 cpu 126 based fixed bin(71,0) array level 3 in structure "user" dcl 17-58 in procedure "act_ctl_" set ref 1217* 1217 1244* 1244 cpu_price 200 based float bin(27) array level 3 dcl 19-9 ref 1221 1248 cpu_this_process 356 based fixed bin(71,0) level 2 dcl 28-78 set ref 699* 837 931 1157 1165* cpudelta 000106 automatic fixed bin(71,0) dcl 298 set ref 931* 935 1157* 1168 1196 1198 1217 1221 1244 1248 crash_clock 000110 automatic fixed bin(71,0) dcl 299 set ref 417* 508 508* 536* crashes 123 based fixed bin(17,0) level 2 dcl 17-58 set ref 510* 510 537* 537 ctlarg parameter char packed unaligned dcl 1109 ref 1111 1115 1117 1126 1130 1132 cu_$arg_count 000076 constant entry external dcl 238 ref 1112 1127 current_shift 000636 automatic fixed bin(17,0) dcl 438 set ref 441* 443 current_size 5 based fixed bin(17,0) level 3 in structure "autbl" dcl 1-28 in procedure "act_ctl_" ref 830 current_size 5 based fixed bin(17,0) level 3 in structure "dutbl" dcl 13-29 in procedure "act_ctl_" ref 819 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 3-55 in procedure "act_ctl_" ref 777 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 20-32 in procedure "act_ctl_" ref 474 current_size 36 based fixed bin(17,0) level 2 in structure "pdt" dcl 17-27 in procedure "act_ctl_" ref 500 503 current_time 126 based fixed bin(71,0) level 2 dcl 3-55 set ref 417 418* 423 423 441* 446* 450 462 467 577* 616* 640* 674 676 697* 706* 739* 740 751* 785* 893 894* 900 900* 911 929* 932 939 1000* 1043* 1071* 1072 1158 1167 1169 1306 1437 cut_date 000742 automatic char(9) packed unaligned dcl 1350 set ref 1353* 1355* 1370* cutoff 71 based char(1) level 2 dcl 20-53 ref 581 583 587 588 592 596 597 date_time_ 000100 constant entry external dcl 239 ref 1303 1307 1353 datebin_ 000102 constant entry external dcl 240 ref 446 751 datebin_$next_shift_change 000104 constant entry external dcl 242 ref 441 894 900 datebin_$revert 000106 constant entry external dcl 243 ref 453 days_to_cutoff 112 based fixed bin(17,0) level 2 packed packed unaligned dcl 20-53 set ref 1404 1406* dd 000112 automatic fixed bin(17,0) dcl 301 set ref 446* 453* 751* debug_ia_sw 000036 internal static bit(1) initial packed unaligned dcl 1108 set ref 1084 1115* 1117* 1119* debug_na_sw 000037 internal static bit(1) initial packed unaligned dcl 1124 set ref 1130* 1132* 1134* 1135* 1669 destroy_flag 421 based fixed bin(17,0) level 2 dcl 28-78 ref 781 dev_dsa_hour constant fixed bin(17,0) initial dcl 11-59 ref 1715 dev_dsa_kilobyte constant fixed bin(17,0) initial dcl 11-57 ref 1703 dev_dsa_kilopacket constant fixed bin(17,0) initial dcl 11-58 ref 1709 dev_id 000004 constant char(8) initial array dcl 11-48 ref 1703 1709 1715 device_acct_$broom 000110 constant entry external dcl 244 ref 951 device_acct_$update 000112 constant entry external dcl 245 ref 1173 device_id 241 based char(8) array level 4 dcl 14-33 ref 1703 1709 1715 device_price 243 based float bin(27) array level 4 dcl 19-9 ref 1682 devices 324 based float bin(27) array level 2 dcl 17-58 set ref 1683* 1683 devtab 241 based structure array level 3 in structure "installation_parms" dcl 14-33 in procedure "act_ctl_" devtab 241 based structure array level 3 in structure "rate_structure" dcl 19-9 in procedure "act_ctl_" devtab_ix_dsa_hour 000042 internal static fixed bin(17,0) initial dcl 11-68 set ref 1666 1666* 1715* 1715* 1718 1718* devtab_ix_dsa_kilobyte 000040 internal static fixed bin(17,0) initial dcl 11-66 set ref 1662 1662* 1703* 1703* 1706 1706* devtab_ix_dsa_kilopacket 000041 internal static fixed bin(17,0) initial dcl 11-67 set ref 1664 1664* 1709* 1709* 1712 1712* did_charge 000114 automatic float bin(63) dcl 302 set ref 877* 878 880 884 disconnected 431(13) based bit(1) level 3 packed packed unaligned dcl 28-78 ref 798 1010 1022 discrepancy 000116 automatic float bin(63) dcl 303 set ref 676* 679 680 878* 880 880 883 divide builtin function dcl 379 ref 837 1048 1049 1051 1437 dollar_charge 75 based float bin(27) level 2 dcl 17-58 set ref 1202* 1202 1227* 1227 1253* 1253 1288 1411 1684* 1684 dollar_limit 74 based float bin(27) level 2 dcl 17-58 ref 1288 1289 1410 1411 1414 dollars_to_cutoff 113 based float bin(27) level 2 dcl 20-53 set ref 1396 1400* dont_check 000600 automatic bit(36) dcl 558 in procedure "act_ctl_" set ref 579* 590* 599* 599 618* dont_check parameter bit(36) dcl 1330 in procedure "cutoff_warning" ref 1322 1396 1404 dutbl based structure level 1 dcl 13-29 dutp 000612 automatic pointer initial dcl 13-27 set ref 530* 531 818* 819 820 13-27* e_text parameter varying char(168) dcl 555 set ref 547 564 605* 607* 626* ec 000120 automatic fixed bin(35,0) dcl 304 set ref 741* 912* 940* 941* 943 944* 985* 1074* 1088* 1162* 1163 1182* entry 200 based structure array level 2 in structure "anstbl" dcl 3-55 in procedure "act_ctl_" set ref 778 entry 200 based structure array level 2 in structure "dutbl" dcl 13-29 in procedure "act_ctl_" set ref 531 820 entry 200 based structure array level 2 in structure "autbl" dcl 1-28 in procedure "act_ctl_" set ref 831 errcd parameter fixed bin(35,0) dcl 1281 set ref 1279 1286* 1290* 1296* 1297* 1304* 1308* 1309* 1314* error_message 000121 automatic char(500) packed unaligned dcl 305 set ref 757* 760 957* 960 error_table_$lock_wait_time_exceeded 000224 external static fixed bin(35,0) dcl 287 ref 943 1163 error_table_$out_of_sequence 000226 external static fixed bin(35,0) dcl 287 ref 398 event 376 based fixed bin(71,0) level 2 dcl 28-78 set ref 802* fixed builtin function dcl 379 ref 1365 1365 float builtin function dcl 379 ref 876 877 1662 1664 1666 format 000316 automatic char(100) dcl 306 set ref 604* 605 605 605 605 1297* 1298* 1309* 1310* 1314* 1315* 1360* 1361* 1364* 1365* 1369* 1370* 1399* 1400* 1405* 1406* found_entry 001302 automatic bit(1) packed unaligned dcl 1620 set ref 1641* 1649* 1654 get_system_free_area_ 000114 constant entry external dcl 246 ref 539 1534 hcs_$wakeup 000116 constant entry external dcl 247 ref 802 851 header based structure level 2 in structure "dutbl" dcl 13-29 in procedure "act_ctl_" header based structure level 2 in structure "anstbl" dcl 3-55 in procedure "act_ctl_" header based structure level 2 in structure "autbl" dcl 1-28 in procedure "act_ctl_" hh 000347 automatic fixed bin(17,0) dcl 307 set ref 446* 453* 751* hphcs_$process_status 000120 constant entry external dcl 248 ref 1080 1149 hrs 000350 automatic fixed bin(17,0) dcl 308 set ref 1051* 1053* i 000351 automatic fixed bin(17,0) dcl 309 set ref 474* 475* 644* 645 777* 778* 819* 820* 830* 831 839* 847* 850* 889* 897* 1112* 1113 1127* 1128 icode 000352 automatic char(4) packed unaligned dcl 310 set ref 646* 651* 656* 1003* 1007* 1013* ii 000654 automatic fixed bin(17,0) dcl 1193 set ref 1195* 1196 1196 1197 1197 1198 1198 1200 1200 inactive_time 501 based fixed bin(17,0) level 3 dcl 14-33 ref 740 index builtin function dcl 379 in procedure "act_ctl_" ref 482 644 index 1 000542 automatic fixed bin(35,0) level 2 in structure "abs_signal" dcl 354 in procedure "act_ctl_" set ref 850* initializer_pdtep 000012 internal static pointer initial dcl 211 set ref 505* 525 532 534 534 537 537 initiate_file_ 000122 constant entry external dcl 249 ref 484 input_seg 110 based char(168) level 2 packed packed unaligned dcl 28-78 ref 644 645 installation_parms based structure level 1 dcl 14-33 installation_parms_part_1 based structure level 1 dcl 14-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 14-144 interactive 124 based structure array level 2 dcl 17-58 interactive_signal 000354 automatic char(8) packed unaligned dcl 311 set ref 801* 802 io_ops 134 based fixed bin(71,0) array level 3 dcl 17-58 set ref 1220* 1220 1247* 1247 io_ops_delta 000356 automatic fixed bin(71,0) dcl 312 set ref 934* 1160* 1220 1221 1247 1248 io_ops_price 220 based float bin(27) array level 3 dcl 19-9 ref 1221 1248 ioa_$rs 000124 constant entry external dcl 250 ref 1298 1310 1315 1361 1365 1370 1400 1406 1519 ioa_$rsnnl 000126 constant entry external dcl 251 ref 1355 ip defined pointer dcl 5-21 ref 455 456 463 466 709 740 788 808 907 908 1072 1703 1703 1706 1709 1709 1712 1715 1715 1718 ipc_$create_ev_chn 000130 constant entry external dcl 252 ref 406 ipc_$decl_ev_call_chn 000132 constant entry external dcl 253 ref 407 ipc_$mask_ev_calls 000134 constant entry external dcl 254 ref 741 940 1074 ipc_$unmask_ev_calls 000136 constant entry external dcl 255 ref 912 942 1088 ishft 000674 automatic fixed bin(17,0) dcl 1241 in procedure "charge_daemon" set ref 1243* 1244 1244 1245 1245 1246 1246 1247 1247 1248 1248 1248 1252 1252 ishft 000664 automatic fixed bin(17,0) dcl 1214 in procedure "charge_interactive" set ref 1216* 1217 1217 1218 1218 1219 1219 1220 1220 1221 1221 1221 1221 1226 1226 j 000360 automatic fixed bin(17,0) dcl 313 set ref 482* 483 500* 503* 504* jobid 000361 automatic char(32) packed unaligned dcl 314 set ref 645* 650* 655* jobs 245 based fixed bin(17,0) array level 3 dcl 17-58 set ref 671* 671 key 4 based structure array level 3 dcl 16-27 last_shift_change_time 64 based fixed bin(71,0) level 2 dcl 30-10 set ref 423 423 450* 893* last_update 120 based fixed bin(71,0) level 2 dcl 17-58 set ref 508 508 674* 939* 1169* last_update_interval 000014 internal static fixed bin(71,0) dcl 212 set ref 466* 536* 676 908* last_update_time 366 based fixed bin(71,0) level 2 dcl 28-78 set ref 701* 932 1158 1167* length builtin function dcl 379 ref 605 limv 000714 automatic float bin(27) dcl 1284 set ref 1289* 1295* 1298* 1302* 1315* line 000371 automatic char(168) packed unaligned dcl 315 set ref 626 709 709 711 711 788 788 789 789 1298* 1310* 1315* 1361* 1365* 1370* 1400* 1406* 1451 1451 1453 1453 load_ctl_$load_level 000140 constant entry external dcl 256 ref 903 load_ctl_$set_maxunits 000142 constant entry external dcl 257 ref 897 lock 1 based bit(36) level 2 dcl 17-58 set ref 516* 941* 985* 1162* 1182* lock_count 114 based fixed bin(17,0) level 2 dcl 3-55 ref 914 log_base_price 210 based float bin(27) array level 3 dcl 19-9 ref 1221 logdelta 000444 automatic fixed bin(71,0) dcl 316 set ref 932* 1158* 1218 1221 1245 login_server_present 143 based bit(1) level 2 dcl 3-55 ref 755 955 1176 logins 122 based fixed bin(17,0) level 2 in structure "user" dcl 17-58 in procedure "act_ctl_" set ref 534* 534 665* 665 logins 15 based fixed bin(17,0) array level 2 in structure "asmt" dcl 7-47 in procedure "act_ctl_" set ref 659* 659 logouts 20 based fixed bin(17,0) array level 2 dcl 7-47 set ref 1029* 1029 max builtin function dcl 379 ref 1411 1414 1420 1423 1429 1432 max_count 2 based fixed bin(17,0) level 2 dcl 16-27 ref 769 860 969 978 max_cpu_time 244 based fixed bin(35,0) level 2 dcl 28-78 ref 837 mcode 000446 automatic fixed bin(35,0) dcl 317 set ref 580* 585* 589* 594* 598* 601* 603 604* 610 610* 620* 622 623 707* 708 786* 787 mel 000447 automatic float bin(27) dcl 318 set ref 864* 1045* 1053* mem_this_process 364 based fixed bin(71,0) level 2 dcl 28-78 set ref 700* 933 1159 1166* memory 250 based fixed bin(71,0) array level 3 dcl 17-58 set ref 1197* 1197 message 001012 automatic char(512) packed unaligned dcl 1491 set ref 1519* 1523 1523 1547 message_buffer based char packed unaligned dcl 1501 set ref 1538 1540 1547* message_buffer_cur_lth 001213 automatic fixed bin(17,0) dcl 1493 set ref 1529* 1531 1532 1538 1538 1547 1549 message_buffer_max_lth 001214 automatic fixed bin(17,0) dcl 1494 set ref 1528* 1531 1532 1538 1540 1540 1543* 1547 message_buffer_ptr 001216 automatic pointer dcl 1495 set ref 1527* 1538 1540 1541* 1547 message_lth 001212 automatic fixed bin(17,0) dcl 1492 set ref 1519* 1523* 1531 1532 1547 1549 mhh 000450 automatic float bin(27) dcl 319 set ref 864* 1045* 1053* min builtin function dcl 379 ref 1532 mins 000451 automatic fixed bin(17,0) dcl 320 set ref 1049* 1051 1052* 1052 1053* minute 000452 automatic fixed bin(17,0) dcl 321 set ref 446* 751* mlth 000453 automatic fixed bin(17,0) dcl 322 set ref 626 709 709 711 711 788 788 789 789 1298* 1310* 1315* 1361* 1365* 1370* 1400* 1406* 1451 1451 1453 1453 mm 000454 automatic fixed bin(17,0) dcl 323 set ref 446* 453* 751* mod builtin function dcl 379 ref 1050 1052 mode 000016 internal static char(4) initial dcl 213 set ref 396 401* 574 636 732 880 925 996 1040 1056* 1096* 1102* mqu 000455 automatic float bin(27) dcl 324 set ref 864* 903 903 1045* 1053* mrs 000456 automatic float bin(27) dcl 325 set ref 864* 1045* 1053* mtc 000460 automatic fixed bin(71,0) dcl 326 set ref 864* 876 903 1045* mti 000462 automatic fixed bin(71,0) dcl 327 set ref 864* 876 1045* mui 000464 automatic fixed bin(71,0) dcl 328 set ref 864* 903 1045* mws 000466 automatic fixed bin(17,0) dcl 329 set ref 864* 1045* n_background 361(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 17-58 set ref 513* 672* 672 1026* 1026 n_disconnected 362(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 17-58 set ref 515* 1022* 1022 n_foreground 361 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 17-58 set ref 512* 666* 666 1019* 1019 n_interactive 362 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 17-58 set ref 514* 667* 667 1021* 1021 n_processes 413 based fixed bin(17,0) level 2 dcl 28-78 ref 704 n_users 14 based fixed bin(17,0) level 2 in structure "anstbl" dcl 3-55 in procedure "act_ctl_" set ref 914* n_users 27 based fixed bin(17,0) level 2 in structure "project" dcl 20-53 in procedure "act_ctl_" set ref 480 522* name parameter char packed unaligned dcl 1466 set ref 1463 1471* ncrash 000467 automatic fixed bin(17,0) dcl 330 set ref 472* 509* 509 536* 537 ndevices 240 based fixed bin(17,0) level 3 dcl 14-33 ref 1703 1706 1709 1712 1715 1718 net_indices_initialized constant bit(1) initial packed unaligned dcl 1621 ref 1658 net_indx 001264 automatic fixed bin(17,0) dcl 1560 in procedure "CHECK_NETWORK_ACCOUNTING_USE" set ref 1574* 1577 1580 1591 1595 1596 1597 1598* net_indx 001303 automatic fixed bin(17,0) dcl 1622 in procedure "UPDATE_NETWORK_ACCOUNTING" set ref 1643* 1644 1645 1646 1647 1648 1651* network_account_array based structure level 1 dcl 16-27 set ref 769 860 969 978 network_account_array_ptr 000614 automatic pointer dcl 16-24 set ref 754* 757* 764 765 766 769 770* 858 860 861* 954* 957* 964 965 966 969 970* 977 978 979* 1567 1574 1577 1580 1591 1595 1596 1597 1598 1627 1643 1644 1645 1646 1647 1648 1651 network_account_data based structure level 1 dcl 16-36 network_accounting_gate_$debug 000144 constant entry external dcl 258 ref 1134 network_accounting_gate_$get_process_total 000146 constant entry external dcl 259 ref 957 network_accounting_gate_$read_and_reset_table 000150 constant entry external dcl 260 ref 757 new_message_buffer based char packed unaligned dcl 1503 set ref 1536 1538* new_message_buffer_max_lth 001220 automatic fixed bin(17,0) dcl 1496 set ref 1532* 1536 1536 1538 1543 new_message_buffer_ptr 001222 automatic pointer dcl 1497 set ref 1536* 1538 1541 next_shift 000637 automatic fixed bin(17,0) dcl 439 set ref 441* next_shift_change_time 62 based fixed bin(71,0) level 2 in structure "whotab" dcl 30-10 in procedure "act_ctl_" set ref 423 423 423* 442* 894* 900 900* next_shift_change_time 000634 automatic fixed bin(71,0) dcl 437 in begin block on line 436 set ref 441* 442 next_update 000020 internal static fixed bin(71,0) dcl 214 set ref 453* 462 463* 463 465* 536* 907* 907 909* nobump 100(02) based bit(1) level 3 packed packed unaligned dcl 28-78 ref 797 837 nolog 000470 automatic bit(1) dcl 331 set ref 582* 584* 593* 602 now_in 10 based fixed bin(17,0) level 2 dcl 17-58 set ref 509 510 511* 663* 663 1017* 1017* null builtin function dcl 379 ref 407 407 525 539 659 754 764 770 858 861 938 954 964 970 977 979 1016 1029 1082 1-26 3-53 13-27 28-76 1150 1523 1534 1567 1627 p parameter pointer dcl 1618 in procedure "UPDATE_NETWORK_ACCOUNTING" ref 1613 1630 p parameter pointer dcl 181 in procedure "act_ctl_" ref 15 547 560 634 637 694 698 924 926 992 994 packet_count 12 based fixed bin(35,0) array level 3 dcl 16-27 ref 1596 1646 pagefaults 000471 automatic fixed bin(34,0) dcl 332 set ref 913* 914* part_1 based structure level 2 in structure "installation_parms" dcl 14-33 in procedure "act_ctl_" part_1 based structure level 2 in structure "rate_structure" dcl 19-9 in procedure "act_ctl_" pathname_ 000152 constant entry external dcl 261 ref 486 486 496 496 pct_balance 112(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 20-53 set ref 1396 1396 1400* pdt based structure level 1 dcl 17-27 pdtdir based char(168) packed unaligned dcl 5-23 set ref 484* 486* 486* 496* 496* pdtep 000472 automatic pointer dcl 333 in procedure "act_ctl_" set ref 504* 505 505 508 508 509 510 510 510 511 512 513 514 515 516 614* 616* 662* 663 663 665 665 666 666 667 667 671 671 672 672 674 705* 706* 782* 785* 824* 834* 937* 938 939 941 985 1015* 1016 1017 1017 1019 1019 1021 1021 1022 1022 1026 1026 1162 1169 1182 1196 1196 1197 1197 1200 1200 1201 1201 1202 1202 1217 1217 1218 1218 1219 1219 1220 1220 1226 1226 1227 1227 1228 1228 1244 1244 1245 1245 1246 1246 1247 1247 1252 1252 1253 1253 1254 1254 1288 1288 1289 1293 1293 1295 1301 1301 1302 1303 1306 1307 1353 1377 1380 1381 1382 1383 1384 1385 1410 1411 1411 1414 1419 1420 1420 1421 1423 1424 1428 1429 1429 1432 1437 1437 1437 1683 1683 1684 1684 1685 1685 pdtep 354 based pointer level 2 in structure "ute" dcl 28-78 in procedure "act_ctl_" set ref 532* 614 662 705 782 824 834 937 1015 pdtn 000474 automatic char(32) packed unaligned dcl 334 set ref 481* 482 483* 484* 486* 486* 496* 496* pdtp 000504 automatic pointer dcl 335 set ref 484* 500 503 504 519* 1377* 1379 period parameter fixed bin(17,0) dcl 1348 ref 1345 1355 1355 1355 person 4 based char(24) level 2 packed packed unaligned dcl 28-78 set ref 711* 789* 809* 839* 847* 944* 1085* 1151* 1471* 1670* person_id 2 based char(24) level 2 dcl 17-58 ref 505 preempted 420 based fixed bin(17,0) level 2 dcl 28-78 ref 784 proc_id 276 based bit(36) level 2 dcl 28-78 set ref 957* 1079 1148 1151* 1644 1651 process_id 4 based bit(36) array level 4 dcl 16-27 ref 1580 1591 1644 1651 process_id_to_match 001265 automatic bit(36) dcl 1561 set ref 1571* 1580 1581 1582* 1591* 1603 1604* process_status_return 000544 automatic structure level 1 dcl 358 set ref 1080 1080 1149 1149 process_type 1 based fixed bin(17,0) level 2 dcl 28-78 ref 642 648 659 659 667 1001 1005 1020 1029 1029 project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 28-78 in procedure "act_ctl_" set ref 711* 789* 809* 839* 847* 944* 1085* 1151* 1471* 1670* project 722 based structure array level 2 in structure "sat" dcl 20-32 in procedure "act_ctl_" set ref 475 project based structure level 1 dcl 20-53 in procedure "act_ctl_" project_id 1 based char(12) level 2 packed packed unaligned dcl 20-53 ref 476 481 505 519 purge_bit 001266 automatic bit(1) packed unaligned dcl 1562 set ref 1571* 1582 1593* 1598* 1604 purged 7(02) based bit(1) array level 4 packed packed unaligned dcl 16-27 ref 1598 queue 245 based fixed bin(17,0) level 2 dcl 28-78 set ref 620* 646 664 671 671 703 948 949 1003 1018 1170 1171 1195 1375 1451 rate_structure based structure level 1 dcl 19-9 rcp_init_flags based structure level 1 packed packed unaligned dcl 15-8 real_time 000506 automatic fixed bin(71,0) dcl 336 set ref 913* 914 reason 000745 automatic char(64) packed unaligned dcl 1351 set ref 1355* 1361* 1365* record 4 based structure array level 2 dcl 16-27 remaining 000724 automatic float bin(27) dcl 1332 set ref 1411* 1412 1412* 1414 1420* 1421 1421* 1423 1429* 1430 1430* 1432 remaining_pct 000725 automatic fixed bin(17,0) dcl 1333 set ref 1414* 1415 1415 1423* 1424 1424 1432* 1433 1433 return_value 001002 automatic fixed bin(17,0) dcl 1467 set ref 1469* 1470 1471* 1473* 1476 reverse builtin function dcl 379 ref 605 644 rs_number 374 based fixed bin(6,0) level 2 packed packed unsigned unaligned dcl 28-78 ref 1198 1198 1221 1221 1221 1221 1248 1248 1248 1682 rs_ptrs based pointer array dcl 5-24 ref 1198 1198 1221 1221 1221 1221 1248 1248 1248 1682 rtrim builtin function dcl 379 ref 1519 1519 sat based structure level 1 dcl 20-32 satep 000510 automatic pointer dcl 337 set ref 475* 476 477 480 481 505 519 522 561* 571* 581 583 587 588 592 596 597 1396 1396 1396 1400 1400 1404 1406 satp defined pointer dcl 5-26 ref 474 475 sc_stat_$Go_typed 000262 external static bit(1) dcl 22-62 ref 397 sc_stat_$Multics_typed 000264 external static bit(1) dcl 22-62 ref 397 sd_ptr 000512 automatic pointer dcl 338 set ref 477* 533 secs 000514 automatic fixed bin(17,0) dcl 339 set ref 1048* 1049 1050* 1050 1053* seg_fault_error 000572 stack reference condition dcl 386 ref 494 501 session_cost 370 based float bin(27) level 2 dcl 28-78 set ref 1203* 1203 1229* 1229 1255* 1255 1686* 1686 set_lock_$lock 000154 constant entry external dcl 262 ref 941 1162 set_lock_$unlock 000156 constant entry external dcl 263 ref 985 1182 shf 000515 automatic fixed bin(17,0) dcl 340 set ref 446* 448 449 751* 887 888* 890 shift 61 based fixed bin(17,0) level 2 in structure "whotab" dcl 30-10 in procedure "act_ctl_" set ref 423 423 443* 894* shift 132 based fixed bin(17,0) level 2 in structure "anstbl" dcl 3-55 in procedure "act_ctl_" set ref 448 449* 887 888* 889 890* 1216 1243 1287 1428 1429 1429 1432 1682 shift_cmnd 000601 automatic bit(1) dcl 723 set ref 724* 731* 749 892 906 shift_limit 76 based float bin(27) array level 2 dcl 17-58 ref 1293 1295 1428 1429 1432 short 000516 automatic char(8) dcl 341 set ref 624 808* 1297* 1309* 1314* 1360* 1364* 1369* 1399* 1405* should_charge 000520 automatic float bin(63) dcl 342 set ref 876* 878 880 884 some_time_ago 000522 automatic fixed bin(71,0) dcl 343 set ref 740* 796 845 1072* 1082 1085* 1085 sp parameter pointer dcl 557 ref 547 561 ss 000715 automatic fixed bin(17,0) dcl 1284 set ref 1287* 1293 1293 1295 1298* sss 000524 automatic fixed bin(17,0) dcl 344 set ref 446* 751* static_label 000022 internal static label variable dcl 215 set ref 742* 743* 743* 779* 813* 821* 826* 832* 854* 904* 910* 1075* 1076* 1076* 1164* static_nlogins 000026 internal static fixed bin(17,0) dcl 216 set ref 471* 658* 658 1053* static_total_dollar_charge 000027 internal static float bin(27) dcl 217 set ref 470* 1053* 1204* 1204 1230* 1230 1256* 1256 static_total_time_charged 000030 internal static fixed bin(71,0) dcl 218 set ref 469* 877 935* 935 1048 1168* 1168 status_code_string 001224 automatic char(100) dcl 1499 set ref 1508* 1510* 1516 1519 1519* sub_err_ 000160 constant entry external dcl 264 ref 459 544 substr builtin function dcl 379 set ref 401 483* 605 626 645 709 709 711 711 788 788 789 789 1451 1451 1453 1453 1538* 1538 1547* suspended 431(09) based bit(1) level 3 packed packed unaligned dcl 28-78 ref 846 switches 7 based structure array level 3 packed packed unaligned dcl 16-27 sys_log_ 000162 constant entry external dcl 265 ref 456 526 680 711 766 789 809 839 847 883 884 888 914 966 1053 1085 1097 1103 1119 1135 1151 1451 1471 1582 1604 1670 sys_log_$error_log 000164 constant entry external dcl 266 ref 409 486 496 760 944 960 sysdir defined char(168) packed unaligned dcl 5-28 ref 401 system_area based area(1024) dcl 373 ref 769 860 969 978 1536 1540 system_area_ptr 000032 internal static pointer initial dcl 219 set ref 539 539* 757* 769 860 957* 969 978 1534 1534* 1536 1540 target_proc 000544 automatic bit(36) level 2 dcl 358 set ref 1079* 1148* terminal_type 326 based char(32) level 2 packed packed unaligned dcl 28-78 ref 654 1012 terminate_file_ 000166 constant entry external dcl 267 ref 519 timer_manager_$alarm_wakeup 000170 constant entry external dcl 268 ref 465 909 total_bytes 001304 automatic fixed bin(35,0) dcl 1623 in procedure "UPDATE_NETWORK_ACCOUNTING" set ref 1639* 1645* 1645 1662 1662 1670* total_bytes 001270 automatic fixed bin(35,0) dcl 1564 in procedure "CHECK_NETWORK_ACCOUNTING_USE" set ref 1570* 1582* 1592* 1595* 1595 1604* total_connect_seconds 001267 automatic fixed bin(35,0) dcl 1563 in procedure "CHECK_NETWORK_ACCOUNTING_USE" set ref 1570* 1582* 1592* 1597* 1597 1604* total_connect_seconds 001305 automatic fixed bin(35,0) dcl 1624 in procedure "UPDATE_NETWORK_ACCOUNTING" set ref 1639* 1647* 1647 1666 1666 1670* total_dsa_charges 000525 automatic float bin(27) dcl 345 set ref 1640* 1670* 1694* 1694 total_packets 001271 automatic fixed bin(35,0) dcl 1565 in procedure "CHECK_NETWORK_ACCOUNTING_USE" set ref 1570* 1582* 1592* 1596* 1596 1604* total_packets 001306 automatic fixed bin(35,0) dcl 1625 in procedure "UPDATE_NETWORK_ACCOUNTING" set ref 1639* 1646* 1646 1664 1664 1670* tty_id_code 337 based char(4) level 2 packed packed unaligned dcl 28-78 ref 651 656 1007 1013 ttykind 000526 automatic char(32) packed unaligned dcl 346 set ref 643* 649* 654* 1002* 1006* 1010* 1012* type 000542 automatic char(4) level 2 in structure "abs_signal" dcl 354 in procedure "act_ctl_" set ref 841* 849* type parameter fixed bin(17,0) dcl 1346 in procedure "pom" ref 1345 1354 1359 uflags 431 based structure level 2 dcl 28-78 up_block 6 000544 automatic fixed bin(71,0) level 2 dcl 358 set ref 796 845 1082 1085* 1085 up_exec 4 000544 automatic fixed bin(17,0) level 2 dcl 358 set ref 794 794 844 1082 1085* up_page 12 000544 automatic fixed bin(71,0) level 2 dcl 358 set ref 1159 1166 up_word 000602 automatic char(12) dcl 736 set ref 747* 748* 749* 914* update_pending 115 based bit(1) level 2 dcl 3-55 set ref 914* updatetime 000034 internal static fixed bin(71,0) dcl 220 set ref 467* 676 911* uprojp 400 based pointer level 2 dcl 28-78 set ref 533* 571 user based structure level 1 dcl 17-58 in procedure "act_ctl_" user 400 based structure array level 2 in structure "pdt" dcl 17-27 in procedure "act_ctl_" set ref 504 user_abs_attributes based structure level 1 dcl 27-25 user_attributes based structure level 1 dcl 26-21 user_warn_days 363 based fixed bin(17,0) level 2 in structure "user" packed packed unaligned dcl 17-58 in procedure "act_ctl_" ref 1380 user_warn_days 000726 automatic fixed bin(17,0) dcl 1334 in procedure "cutoff_warning" set ref 1380* 1388* 1437 user_warn_dollars 364 based float bin(27) level 2 in structure "user" dcl 17-58 in procedure "act_ctl_" ref 1382 user_warn_dollars 000730 automatic float bin(27) dcl 1335 in procedure "cutoff_warning" set ref 1382* 1390* 1412 1421 1430 user_warn_pct 000727 automatic fixed bin(17,0) dcl 1334 in procedure "cutoff_warning" set ref 1381* 1389* 1415 1424 1433 user_warn_pct 363(18) based fixed bin(17,0) level 2 in structure "user" packed packed unaligned dcl 17-58 in procedure "act_ctl_" ref 1381 ut_header based structure level 1 dcl 29-16 ute based structure level 1 dcl 28-78 utep 000616 automatic pointer initial dcl 28-76 set ref 531* 532 533 560* 569* 571 610 614 618 620 637* 638 642 644 645 646 648 651 654 656 659 659 662 664 667 671 671 698* 699 700 701 703 703 704 705 709* 711 711 778* 780 781 782 784 788* 789 789 797 798 802 808* 809 809 820* 822 824 831* 833 834 837 837 837 839 839 846 847 847 926* 931 932 933 937 944 944 948 949 951* 957 973* 994* 998 1001 1003 1005 1007 1010 1012 1013 1015 1018 1020 1022 1029 1029 1078* 1079 1085 1085 28-76* 1148 1151 1151 1151 1153* 1157 1158 1159 1165 1166 1167 1170 1171 1173* 1178* 1195 1198 1198 1203 1203 1221 1221 1221 1221 1229 1229 1248 1248 1248 1255 1255 1375 1375 1451 1453* 1471 1471 1523 1523 1630* 1644 1651 1670 1670 1682 1686 1686 v parameter float bin(27) dcl 1347 set ref 1345 1361* 1365 1365 vcpu_time 000536 automatic fixed bin(71,0) dcl 347 set ref 913* 914 verify builtin function dcl 379 ref 605 version 37 based fixed bin(17,0) level 2 in structure "pdt" dcl 17-27 in procedure "act_ctl_" ref 1379 version based char(8) level 2 in structure "network_account_array" dcl 16-27 in procedure "act_ctl_" set ref 765 766* 965 966* virtual_cpu 14 000544 automatic fixed bin(71,0) level 2 dcl 358 set ref 1157 1165 warn_days 000731 automatic fixed bin(17,0) dcl 1336 in procedure "cutoff_warning" set ref 1383* 1391* 1404 warn_days 357 based fixed bin(17,0) level 2 in structure "user" packed packed unaligned dcl 17-58 in procedure "act_ctl_" ref 1383 warn_dollars 360 based float bin(27) level 2 in structure "user" dcl 17-58 in procedure "act_ctl_" ref 1385 warn_dollars 000733 automatic float bin(27) dcl 1337 in procedure "cutoff_warning" set ref 1385* 1393* 1396 warn_pct 000732 automatic fixed bin(17,0) dcl 1336 in procedure "cutoff_warning" set ref 1384* 1392* 1396 warn_pct 357(18) based fixed bin(17,0) level 2 in structure "user" packed packed unaligned dcl 17-58 in procedure "act_ctl_" ref 1384 warning_time 502 based fixed bin(17,0) level 3 dcl 14-33 set ref 709* 788* 808* 1072 whoptr defined pointer dcl 5-29 ref 423 423 423 423 423 423 423 442 443 450 851 851 893 894 894 900 900 whotab based structure level 1 dcl 30-10 why 000704 automatic char(32) packed unaligned dcl 1284 set ref 1291* 1303* 1307* 1310* 1315* wkd 000540 automatic fixed bin(17,0) dcl 348 set ref 446* 751* wordx parameter char(8) dcl 554 set ref 547 564 604* 610 624* yy 000541 automatic fixed bin(17,0) dcl 349 set ref 446* 453* 751* zap_abs based fixed bin(71,0) dcl 374 set ref 851* zap_user based fixed bin(71,0) dcl 375 set ref 802* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 6-28 ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 27-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 8-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 28-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-36 ABS_TRYLOG_METER internal static fixed bin(17,0) initial dcl 6-35 ACTIVE_VALUES internal static char(18) initial array dcl 12-86 ADMIN_METER internal static fixed bin(17,0) initial dcl 6-32 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 26-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 3-51 ASINIT_METER internal static fixed bin(17,0) initial dcl 6-19 ASMT_VERSION_1 internal static fixed bin(17,0) initial dcl 7-45 AS_METER_NAMES internal static char(8) initial array packed unaligned dcl 6-43 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 8-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 AUM_METER internal static fixed bin(17,0) initial dcl 6-22 AUTBL_CONTROL_NAMES internal static varying char(20) initial array dcl 1-68 AUTBL_version_4 internal static fixed bin(17,0) initial dcl 1-24 AU_METER internal static fixed bin(17,0) initial dcl 6-23 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Automatic_authentication internal static fixed bin(17,0) initial dcl 15-16 COMMAND_METER internal static fixed bin(17,0) initial dcl 6-30 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 8-37 CPG_METER internal static fixed bin(17,0) initial dcl 6-24 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 28-280 DIALUP_METER internal static fixed bin(17,0) initial dcl 6-20 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 28-332 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DONT_MASK internal static bit(2) initial packed unaligned dcl 28-280 DO_MASK internal static bit(2) initial packed unaligned dcl 28-280 DPG_METER internal static fixed bin(17,0) initial dcl 6-25 DUM_METER internal static fixed bin(17,0) initial dcl 6-21 DUTBL_version_4 internal static fixed bin(17,0) initial dcl 13-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 INSTALL_METER internal static fixed bin(17,0) initial dcl 6-27 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 8-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 8-32 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 28-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 28-284 MC_PRIO internal static fixed bin(17,0) initial dcl 8-25 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 8-33 MSGCORD_METER internal static fixed bin(17,0) initial dcl 6-29 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 Manual_authentication internal static fixed bin(17,0) initial dcl 15-16 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_HUNG_UP internal static fixed bin(17,0) initial dcl 12-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 12-76 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 No_authentication internal static fixed bin(17,0) initial dcl 15-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 15-16 PDT_entry_lth internal static fixed bin(17,0) initial dcl 17-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 17-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 17-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 17-19 PDT_version internal static fixed bin(17,0) initial dcl 17-19 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 28-265 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_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_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 28-290 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SAC_METER internal static fixed bin(17,0) initial dcl 6-31 SAT_entry_lth internal static fixed bin(17,0) initial dcl 20-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 20-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 20-24 SAT_version internal static fixed bin(17,0) initial dcl 20-24 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 8-27 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 23-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 23-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 23-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 23-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 23-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 23-14 SL_TYPE internal static fixed bin(17,0) initial dcl 23-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 23-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 23-14 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SSU_METER internal static fixed bin(17,0) initial dcl 6-33 STATE_VALUES internal static char(15) initial array dcl 12-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 8-26 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 28-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 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 24-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 24-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 24-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 24-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 24-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 24-15 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 28-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 26-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 26-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 26-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 26-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 28-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_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 30-96 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 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_$buzzardp external static pointer dcl 4-32 as_data_$cdtp external static pointer dcl 4-33 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_$login_words external static fixed bin(17,0) dcl 4-77 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_$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_$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_data_login_words based structure level 1 dcl 4-77 as_procid defined bit(36) dcl 5-17 as_tty based char(6) packed unaligned dcl 5-18 asmtep automatic pointer dcl 294 authentication_level_names internal static char(12) initial array packed unaligned dcl 15-21 author_dcl based structure level 1 dcl 9-9 cur_rs_ptr automatic pointer dcl 300 dev_disk internal static fixed bin(17,0) initial dcl 11-54 dev_disk_mt internal static fixed bin(17,0) initial dcl 11-55 dev_lv internal static fixed bin(17,0) initial dcl 11-56 dev_tape internal static fixed bin(17,0) initial dcl 11-52 dev_tape_mt internal static fixed bin(17,0) initial dcl 11-53 devtab_ix_disk internal static fixed bin(17,0) initial dcl 11-63 devtab_ix_disk_mt internal static fixed bin(17,0) initial dcl 11-64 devtab_ix_lv internal static fixed bin(17,0) initial dcl 11-65 devtab_ix_tape internal static fixed bin(17,0) initial dcl 11-61 devtab_ix_tape_mt internal static fixed bin(17,0) initial dcl 11-62 devtabp defined pointer dcl 5-20 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 14-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 14-38 max_tty_type internal static fixed bin(17,0) initial dcl 25-3 mgtp defined pointer dcl 5-22 network_account_array_bound automatic fixed bin(17,0) dcl 16-25 network_account_data_ptr automatic pointer dcl 16-34 recursion_possible internal static bit(18) initial packed unaligned dcl 6-39 rifp automatic pointer dcl 15-6 sat_htp defined pointer dcl 5-25 sc_stat_$Go external static bit(1) dcl 22-62 sc_stat_$Multics external static bit(1) dcl 22-62 sc_stat_$Star_typed external static bit(1) dcl 22-62 sc_stat_$admin_listener_exit_label external static label variable dcl 22-34 sc_stat_$admin_listener_switch external static bit(1) dcl 22-62 sc_stat_$admin_log_iocb external static pointer dcl 22-45 sc_stat_$admin_log_write_ptr external static pointer dcl 22-45 sc_stat_$admin_sci_ptr external static pointer dcl 22-45 sc_stat_$as_log_write_ptr external static pointer dcl 22-45 sc_stat_$did_part1 external static bit(1) dcl 22-62 sc_stat_$did_part2 external static bit(1) dcl 22-62 sc_stat_$did_part3 external static bit(1) dcl 22-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 22-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 22-21 sc_stat_$initzer_ttyp external static pointer dcl 22-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 22-21 sc_stat_$master_abort_label external static label variable dcl 22-34 sc_stat_$master_channel external static char(6) dcl 22-29 sc_stat_$master_iocb external static pointer dcl 22-45 sc_stat_$master_sci_ptr external static pointer dcl 22-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 22-21 sc_stat_$mc_ansp external static pointer dcl 22-45 sc_stat_$mc_iocb external static pointer dcl 22-45 sc_stat_$mc_is_on external static bit(1) dcl 22-62 sc_stat_$no_operator_login external static bit(1) dcl 22-62 sc_stat_$shutdown_typed external static bit(1) dcl 22-62 sc_stat_$sv1_iocb external static pointer dcl 22-45 sc_stat_$sv2_iocb external static pointer dcl 22-45 sc_stat_$sv3_iocb external static pointer dcl 22-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 22-21 sc_stat_$system_shutdown_label external static label variable dcl 22-34 sc_stat_$test_mode external static bit(1) dcl 22-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 22-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 22-62 scdtp defined pointer dcl 5-27 sl_info automatic structure level 1 dcl 23-24 sl_info_code_msg internal static structure level 1 dcl 23-187 sl_info_msg internal static structure level 1 dcl 23-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 23-161 sl_info_sev_code_msg internal static structure level 1 dcl 23-82 sl_info_sev_coded_msg internal static structure level 1 dcl 23-134 sl_info_sev_msg internal static structure level 1 dcl 23-108 terminate_file_switches based structure level 1 packed packed unaligned dcl 24-4 tty_dev_type internal static char(8) initial array dcl 25-5 NAMES DECLARED BY EXPLICIT CONTEXT. CHARGE_DEVICE 012211 constant entry internal dcl 1677 ref 1662 1664 1666 CHECK_COMMON 002454 constant label dcl 574 ref 562 572 CHECK_NETWORK_ACCOUNTING_USE 011543 constant entry internal dcl 1555 ref 859 976 INIT_NET_DEVICE_INDICES 012253 constant entry internal dcl 1700 ref 1658 NULL_PROC 011243 constant entry internal dcl 1483 ref 743 743 1076 1076 UPDATE_NETWORK_ACCOUNTING 011753 constant entry internal dcl 1613 ref 973 1178 Write_User_Message 011251 constant entry internal dcl 1485 ref 610 act_ctl_ 001152 constant entry external dcl 15 act_ctl_close 006161 constant entry external dcl 1038 act_ctl_disable 006573 constant entry external dcl 1094 act_ctl_reable 006625 constant entry external dcl 1100 activity_unbump 006340 constant entry external dcl 1064 auret1 006562 constant label dcl 1088 ref 1075 charge_abs 007337 constant entry internal dcl 1191 ref 950 1172 charge_daemon 007540 constant entry internal dcl 1239 ref 949 1171 charge_interactive 007425 constant entry internal dcl 1212 ref 948 1170 check 002376 constant entry external dcl 547 check_for_process_creation 002430 constant entry external dcl 564 check_time 004170 constant label dcl 796 check_update 003141 constant label dcl 676 ref 938 946 987 1033 checklim 007644 constant entry internal dcl 1279 ref 620 707 786 close_account 005713 constant entry external dcl 992 cp 003224 constant entry external dcl 694 cutoff_warning 010131 constant entry internal dcl 1322 ref 618 debug_ia 006670 constant entry external dcl 1111 debug_ia_return 006737 constant label dcl 1119 ref 1113 debug_na 006766 constant entry external dcl 1126 debug_na_return 007044 constant label dcl 1135 ref 1128 decrement_and_check 011156 constant entry internal dcl 1463 ref 1017 1019 1021 1022 1026 dp 005273 constant entry external dcl 924 get_pdt 001655 constant label dcl 481 set ref 478 init 001162 constant entry external dcl 392 init1 001212 constant label dcl 405 ref 1105 init_sub_error 002337 constant label dcl 544 set ref 399 410 527 new3 002227 constant label dcl 522 ref 489 498 open_account 002730 constant entry external dcl 634 pom 010573 constant entry internal dcl 1345 ref 1412 1415 1421 1424 1430 1433 1437 rescan 003564 constant label dcl 751 set ref 898 return_immediately 005270 constant label dcl 918 ref 910 send_wakeup 004520 constant label dcl 850 ref 842 shift_cmnd_update 003411 constant entry external dcl 718 skip_abs 004550 constant label dcl 854 ref 832 833 845 846 skip_dmn 004343 constant label dcl 826 ref 821 822 table_scan_done 012037 constant label dcl 1654 ref 1651 ugh 007324 constant label dcl 1182 ref 1164 ugh1 007336 constant label dcl 1183 ref 1163 update 003423 constant entry external dcl 730 update_common 003432 constant label dcl 732 ref 725 update_user 007071 constant entry internal dcl 1146 ref 783 825 835 updend 004303 constant label dcl 813 ref 779 780 781 784 796 797 updret1 005105 constant label dcl 904 ref 742 813 826 854 updret2 005143 constant label dcl 910 set ref 904 905 906 write_message 011062 constant entry internal dcl 1449 ref 1372 1401 1407 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14052 14342 12616 14062 Length 15714 12616 270 1335 1234 34 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME act_ctl_ 1460 external procedure is an external procedure. begin block on line 436 begin block shares stack frame of external procedure act_ctl_. on unit on line 494 158 on unit on unit on line 743 88 on unit on unit on line 1076 88 on unit update_user internal procedure shares stack frame of external procedure act_ctl_. charge_abs internal procedure shares stack frame of external procedure act_ctl_. charge_interactive internal procedure shares stack frame of external procedure act_ctl_. charge_daemon internal procedure shares stack frame of external procedure act_ctl_. checklim internal procedure shares stack frame of external procedure act_ctl_. cutoff_warning internal procedure shares stack frame of external procedure act_ctl_. pom internal procedure shares stack frame of external procedure act_ctl_. write_message internal procedure shares stack frame of external procedure act_ctl_. decrement_and_check internal procedure shares stack frame of external procedure act_ctl_. NULL_PROC 64 internal procedure is assigned to an entry variable. Write_User_Message internal procedure shares stack frame of external procedure act_ctl_. CHECK_NETWORK_ACCOUNTING_USE internal procedure shares stack frame of external procedure act_ctl_. UPDATE_NETWORK_ACCOUNTING internal procedure shares stack frame of external procedure act_ctl_. CHARGE_DEVICE internal procedure shares stack frame of external procedure act_ctl_. INIT_NET_DEVICE_INDICES internal procedure shares stack frame of external procedure act_ctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 alarmfail act_ctl_ 000012 initializer_pdtep act_ctl_ 000014 last_update_interval act_ctl_ 000016 mode act_ctl_ 000020 next_update act_ctl_ 000022 static_label act_ctl_ 000026 static_nlogins act_ctl_ 000027 static_total_dollar_charge act_ctl_ 000030 static_total_time_charged act_ctl_ 000032 system_area_ptr act_ctl_ 000034 updatetime act_ctl_ 000036 debug_ia_sw act_ctl_ 000037 debug_na_sw act_ctl_ 000040 devtab_ix_dsa_kilobyte act_ctl_ 000041 devtab_ix_dsa_kilopacket act_ctl_ 000042 devtab_ix_dsa_hour act_ctl_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME act_ctl_ 000100 absda act_ctl_ 000101 code act_ctl_ 000102 coredelta act_ctl_ 000104 cost act_ctl_ 000106 cpudelta act_ctl_ 000110 crash_clock act_ctl_ 000112 dd act_ctl_ 000114 did_charge act_ctl_ 000116 discrepancy act_ctl_ 000120 ec act_ctl_ 000121 error_message act_ctl_ 000316 format act_ctl_ 000347 hh act_ctl_ 000350 hrs act_ctl_ 000351 i act_ctl_ 000352 icode act_ctl_ 000354 interactive_signal act_ctl_ 000356 io_ops_delta act_ctl_ 000360 j act_ctl_ 000361 jobid act_ctl_ 000371 line act_ctl_ 000444 logdelta act_ctl_ 000446 mcode act_ctl_ 000447 mel act_ctl_ 000450 mhh act_ctl_ 000451 mins act_ctl_ 000452 minute act_ctl_ 000453 mlth act_ctl_ 000454 mm act_ctl_ 000455 mqu act_ctl_ 000456 mrs act_ctl_ 000460 mtc act_ctl_ 000462 mti act_ctl_ 000464 mui act_ctl_ 000466 mws act_ctl_ 000467 ncrash act_ctl_ 000470 nolog act_ctl_ 000471 pagefaults act_ctl_ 000472 pdtep act_ctl_ 000474 pdtn act_ctl_ 000504 pdtp act_ctl_ 000506 real_time act_ctl_ 000510 satep act_ctl_ 000512 sd_ptr act_ctl_ 000514 secs act_ctl_ 000515 shf act_ctl_ 000516 short act_ctl_ 000520 should_charge act_ctl_ 000522 some_time_ago act_ctl_ 000524 sss act_ctl_ 000525 total_dsa_charges act_ctl_ 000526 ttykind act_ctl_ 000536 vcpu_time act_ctl_ 000540 wkd act_ctl_ 000541 yy act_ctl_ 000542 abs_signal act_ctl_ 000544 process_status_return act_ctl_ 000600 dont_check act_ctl_ 000601 shift_cmnd act_ctl_ 000602 up_word act_ctl_ 000606 autp act_ctl_ 000610 ansp act_ctl_ 000612 dutp act_ctl_ 000614 network_account_array_ptr act_ctl_ 000616 utep act_ctl_ 000634 next_shift_change_time begin block on line 436 000636 current_shift begin block on line 436 000637 next_shift begin block on line 436 000654 ii charge_abs 000664 ishft charge_interactive 000674 ishft charge_daemon 000704 why checklim 000714 limv checklim 000715 ss checklim 000724 remaining cutoff_warning 000725 remaining_pct cutoff_warning 000726 user_warn_days cutoff_warning 000727 user_warn_pct cutoff_warning 000730 user_warn_dollars cutoff_warning 000731 warn_days cutoff_warning 000732 warn_pct cutoff_warning 000733 warn_dollars cutoff_warning 000742 cut_date pom 000745 reason pom 001002 return_value decrement_and_check 001012 message Write_User_Message 001212 message_lth Write_User_Message 001213 message_buffer_cur_lth Write_User_Message 001214 message_buffer_max_lth Write_User_Message 001216 message_buffer_ptr Write_User_Message 001220 new_message_buffer_max_lth Write_User_Message 001222 new_message_buffer_ptr Write_User_Message 001224 status_code_string Write_User_Message 001264 net_indx CHECK_NETWORK_ACCOUNTING_USE 001265 process_id_to_match CHECK_NETWORK_ACCOUNTING_USE 001266 purge_bit CHECK_NETWORK_ACCOUNTING_USE 001267 total_connect_seconds CHECK_NETWORK_ACCOUNTING_USE 001270 total_bytes CHECK_NETWORK_ACCOUNTING_USE 001271 total_packets CHECK_NETWORK_ACCOUNTING_USE 001302 found_entry UPDATE_NETWORK_ACCOUNTING 001303 net_indx UPDATE_NETWORK_ACCOUNTING 001304 total_bytes UPDATE_NETWORK_ACCOUNTING 001305 total_connect_seconds UPDATE_NETWORK_ACCOUNTING 001306 total_packets UPDATE_NETWORK_ACCOUNTING THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_l_a r_g_a r_e_as r_ne_as r_le_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac move_label_var make_label_var fl2_to_fx1 tra_ext_1 mpfx2 mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry ceil_fl set_chars_eis divide_fx3 divide_fx4 op_alloc_ op_freen_ index_before_cs clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. act_ctl_$update adjust_cutoff_ as_any_other_handler_ as_meter_ as_meter_$as_meter_init as_meter_$as_meter_stop as_meter_$enter as_meter_$exit as_meter_$exit_values astty_$tty_force asu_$blast_user asu_$bump_code asu_$bump_user convert_status_code_ cu_$arg_count date_time_ datebin_ datebin_$next_shift_change datebin_$revert device_acct_$broom device_acct_$update get_system_free_area_ hcs_$wakeup hphcs_$process_status initiate_file_ ioa_$rs ioa_$rsnnl ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls load_ctl_$load_level load_ctl_$set_maxunits network_accounting_gate_$debug network_accounting_gate_$get_process_total network_accounting_gate_$read_and_reset_table pathname_ set_lock_$lock set_lock_$unlock sub_err_ sys_log_ sys_log_$error_log terminate_file_ timer_manager_$alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$ansp as_data_$as_procid as_data_$asmtp as_data_$autp as_data_$dutp as_data_$ls_message_buffer_cur_lth as_data_$ls_message_buffer_max_lth as_data_$ls_message_buffer_ptr as_data_$pdtdir as_data_$rs_ptrs as_data_$satp as_data_$sysdir as_data_$whoptr as_error_table_$cut_proj_date as_error_table_$cut_proj_funds as_error_table_$cut_proj_other as_error_table_$cut_user_cut_msg as_error_table_$cut_user_date_msg as_error_table_$cut_user_mlim_msg as_error_table_$cut_user_shift_msg as_error_table_$inactive as_error_table_$proj_low_funds as_error_table_$user_warn_days as_error_table_$user_warn_funds as_error_table_$user_warn_pct as_error_table_$warn_proj_date error_table_$lock_wait_time_exceeded error_table_$out_of_sequence sc_stat_$Go_typed sc_stat_$Multics_typed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 26 001140 3 53 001142 13 27 001143 28 76 001144 15 001147 392 001160 396 001170 397 001174 398 001200 399 001202 401 001203 405 001212 406 001216 407 001227 408 001255 409 001257 410 001320 412 001321 413 001323 417 001325 418 001327 423 001332 441 001354 442 001372 443 001377 446 001401 448 001432 449 001436 450 001440 453 001445 455 001472 456 001477 459 001521 462 001550 463 001555 464 001563 465 001564 466 001600 467 001606 469 001611 470 001613 471 001615 472 001616 473 001617 474 001625 475 001637 476 001645 477 001651 478 001652 480 001653 481 001655 482 001660 483 001671 484 001674 485 001731 486 001733 489 002015 494 002016 496 002032 498 002115 500 002120 501 002123 503 002124 504 002133 505 002136 508 002151 509 002155 510 002157 511 002160 512 002161 513 002163 514 002165 515 002167 516 002171 517 002172 519 002174 522 002227 523 002231 524 002233 525 002242 526 002247 527 002266 530 002267 531 002272 532 002275 533 002277 534 002301 536 002302 537 002316 539 002323 542 002336 544 002337 547 002370 560 002413 561 002417 562 002422 564 002423 569 002445 571 002451 572 002453 574 002454 576 002460 577 002463 578 002466 579 002467 580 002470 581 002471 582 002474 583 002475 584 002477 585 002501 586 002504 587 002505 588 002510 589 002512 590 002515 591 002517 592 002520 593 002522 594 002524 595 002527 596 002530 597 002533 598 002535 599 002540 600 002542 601 002543 602 002546 603 002550 604 002552 605 002565 607 002630 608 002633 610 002634 614 002650 616 002653 618 002665 620 002673 622 002704 623 002706 624 002707 626 002713 627 002724 629 002725 634 002726 636 002736 637 002742 638 002746 639 002752 640 002755 642 002760 643 002763 644 002766 645 003002 646 003041 647 003045 648 003046 649 003050 650 003053 651 003056 652 003060 654 003061 655 003064 656 003067 658 003071 659 003073 662 003103 663 003105 664 003106 665 003110 666 003111 667 003116 669 003126 671 003127 672 003131 674 003137 676 003141 679 003155 680 003160 683 003206 684 003211 685 003213 686 003217 689 003221 694 003222 696 003232 697 003236 698 003241 699 003245 700 003247 701 003250 703 003252 704 003257 705 003262 706 003264 707 003276 708 003301 709 003303 711 003341 713 003406 716 003407 718 003410 724 003417 725 003421 730 003422 731 003431 732 003432 738 003436 739 003441 740 003445 741 003455 742 003463 743 003467 745 003536 747 003545 748 003554 749 003557 751 003564 754 003616 755 003620 756 003623 757 003632 760 003656 764 003722 765 003726 766 003733 769 003763 770 003771 774 003773 777 004002 778 004013 779 004020 780 004024 781 004027 782 004032 783 004034 784 004035 785 004040 786 004052 787 004055 788 004057 789 004115 790 004162 794 004163 796 004170 797 004173 798 004177 801 004202 802 004204 803 004230 808 004231 809 004252 813 004303 814 004307 818 004311 819 004315 820 004325 821 004331 822 004335 824 004340 825 004342 826 004343 827 004347 829 004351 830 004355 831 004365 832 004371 833 004375 834 004377 835 004401 837 004402 839 004414 841 004447 842 004451 844 004452 845 004455 846 004460 847 004463 849 004516 850 004520 851 004522 854 004550 855 004554 858 004556 859 004562 860 004563 861 004571 864 004573 876 004620 877 004625 878 004632 880 004635 883 004654 884 004702 887 004737 888 004743 889 004771 890 004774 892 004776 893 005000 894 005005 897 005022 898 005031 900 005032 903 005056 904 005105 905 005111 906 005113 907 005115 908 005123 909 005126 910 005143 911 005147 912 005152 913 005160 914 005175 918 005270 924 005271 925 005301 926 005305 928 005311 929 005314 931 005317 932 005321 933 005324 934 005326 935 005330 937 005334 938 005336 939 005342 940 005344 941 005352 942 005370 943 005400 944 005404 946 005447 948 005450 949 005455 950 005460 951 005461 954 005470 955 005472 956 005475 957 005504 960 005535 964 005577 965 005603 966 005610 969 005640 970 005646 973 005650 976 005652 977 005653 978 005657 979 005665 982 005667 985 005676 987 005710 992 005711 994 005721 996 005725 998 005731 999 005735 1000 005740 1001 005743 1002 005746 1003 005751 1004 005754 1005 005755 1006 005757 1007 005762 1008 005764 1010 005765 1012 005774 1013 005777 1015 006001 1016 006003 1017 006007 1018 006030 1019 006033 1020 006052 1021 006056 1022 006076 1025 006123 1026 006124 1029 006145 1033 006157 1038 006160 1040 006167 1042 006173 1043 006176 1045 006201 1046 006226 1048 006233 1049 006241 1050 006243 1051 006247 1052 006252 1053 006255 1056 006330 1057 006333 1064 006334 1069 006346 1070 006350 1071 006354 1072 006357 1074 006370 1075 006376 1076 006402 1078 006451 1079 006455 1080 006457 1082 006470 1084 006506 1085 006512 1088 006562 1089 006571 1094 006572 1096 006601 1097 006604 1098 006623 1100 006624 1102 006633 1103 006636 1104 006655 1105 006661 1106 006664 1111 006665 1112 006704 1113 006713 1115 006715 1117 006730 1119 006737 1121 006763 1126 006764 1127 007002 1128 007011 1130 007013 1132 007026 1134 007035 1135 007044 1137 007070 1146 007071 1148 007072 1149 007075 1150 007106 1151 007112 1153 007147 1154 007201 1157 007202 1158 007206 1159 007212 1160 007215 1162 007217 1163 007235 1164 007241 1165 007244 1166 007247 1167 007251 1168 007254 1169 007257 1170 007262 1171 007266 1172 007271 1173 007272 1176 007301 1177 007304 1178 007313 1179 007315 1182 007324 1183 007336 1191 007337 1195 007340 1196 007343 1197 007351 1198 007354 1200 007406 1201 007410 1202 007413 1203 007416 1204 007421 1206 007424 1212 007425 1216 007426 1217 007431 1218 007437 1219 007442 1220 007445 1221 007450 1226 007521 1227 007523 1228 007526 1229 007531 1230 007534 1232 007537 1239 007540 1243 007541 1244 007544 1245 007552 1246 007555 1247 007560 1248 007563 1252 007625 1253 007627 1254 007632 1255 007635 1256 007640 1258 007643 1279 007644 1286 007646 1287 007647 1288 007652 1289 007656 1290 007660 1291 007663 1293 007666 1295 007677 1296 007701 1297 007704 1298 007716 1299 007746 1301 007747 1302 007752 1303 007754 1304 007771 1306 007775 1307 010002 1308 010017 1309 010023 1310 010035 1311 010062 1314 010063 1315 010077 1316 010130 1322 010131 1375 010133 1377 010142 1379 010147 1380 010152 1381 010156 1382 010162 1383 010164 1384 010167 1385 010173 1386 010175 1388 010176 1389 010200 1390 010201 1391 010203 1392 010205 1393 010206 1396 010210 1399 010234 1400 010247 1401 010303 1404 010304 1405 010320 1406 010333 1407 010361 1410 010362 1411 010366 1412 010373 1414 010377 1415 010411 1419 010417 1420 010423 1421 010430 1423 010444 1424 010456 1428 010474 1429 010502 1430 010513 1432 010517 1433 010533 1437 010541 1443 010572 1345 010573 1353 010575 1354 010613 1355 010617 1359 010675 1360 010701 1361 010714 1362 010746 1364 010747 1365 010762 1367 011017 1369 011020 1370 011033 1372 011060 1373 011061 1449 011062 1451 011063 1453 011116 1454 011154 1463 011156 1469 011167 1470 011173 1471 011174 1473 011235 1476 011236 1483 011242 1483 011250 1485 011251 1508 011262 1510 011303 1516 011306 1519 011322 1523 011415 1527 011445 1528 011451 1529 011453 1531 011455 1532 011461 1534 011466 1536 011500 1538 011510 1540 011515 1541 011522 1543 011526 1547 011531 1549 011537 1552 011542 1555 011543 1567 011544 1570 011551 1571 011554 1574 011556 1577 011567 1580 011574 1581 011600 1582 011602 1591 011647 1592 011653 1593 011656 1595 011657 1596 011664 1597 011670 1598 011674 1601 011701 1603 011703 1604 011705 1611 011752 1613 011753 1627 011755 1630 011762 1639 011765 1640 011770 1641 011772 1643 011773 1644 012003 1645 012012 1646 012017 1647 012023 1648 012027 1649 012031 1650 012033 1651 012034 1653 012035 1654 012037 1658 012042 1662 012045 1664 012070 1666 012113 1669 012136 1670 012142 1675 012210 1677 012211 1682 012213 1683 012232 1684 012236 1685 012241 1686 012244 1694 012247 1696 012252 1700 012253 1703 012254 1705 012304 1706 012306 1709 012315 1711 012342 1712 012344 1715 012353 1717 012400 1718 012402 1721 012411 ----------------------------------------------------------- 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