COMPILATION LISTING OF SEGMENT console_report Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/12/82 1257.8 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 console_report: proc; 12 13 /* CONSOLE_REPORT - produce a report of console use 14* 15* Input is a series of answering service logs. 16* THVV 2/71 17* 18* Modified to accept longer terminal types, channel id's, tty id's S. Herbst 06/28/79. 19* 20* Modified 80 April 28 by Art Beattie; fix bug when tsg.tary entries are exchanged during sorting; overlay and 21* storage structures weren't large enough. Added usage feature. Accept -reset (-rs) as well as -clear to reset meters. 22* Accept -report_reset (-rr) to conform to tools standard user interface. 23* */ 24 25 dcl dn char (168) aligned, /* Dir name. */ 26 en char (32) aligned, /* Entry name */ 27 temp_en char (32) aligned, /* for renaming temp copies */ 28 (coxx, dpxx) char (4) aligned, /* Dummy report titles */ 29 (cods, dpds) char (120) aligned, /* company & department */ 30 chnid char (32) aligned, /* TTY channel ID */ 31 tty_type char (32) aligned, /* Terminal type */ 32 tty_idcode char (16) aligned, /* Terminal ID code */ 33 (fls, lls) char (16) aligned, /* Format strings for first & last login */ 34 tty_str char (54) aligned, /* concatenated tty type and comment for printing */ 35 d12v char (12) aligned varying, 36 (count_len, space_len) fixed bin, 37 d fixed bin, /* distance for sort */ 38 nargs fixed bin, /* number of arguments in this call */ 39 report_reset bit (1) init ("0"b), /* switch to remember -report_reset arg usage */ 40 swap bit (1) aligned, /* switch for sort */ 41 (i, j, k, m, n, ii, jj, kk, mm) fixed bin, /* indices */ 42 (min, sec) fixed bin, /* temps for usage */ 43 (tbuf, tbuf1) char (120) aligned, /* scratch */ 44 reason char (8) aligned, 45 slog fixed bin (71), /* Connect time. */ 46 scpu fixed bin (71), /* CPU time */ 47 ap ptr, /* Arg ptr */ 48 al fixed bin, /* Arg length */ 49 bchr char (al) unaligned based (ap), /* Argument */ 50 ec fixed bin (35), /* Error code */ 51 personname char (32) aligned, /* Name of user */ 52 ending_time fixed bin (71), /* for dump_logged_in */ 53 starting_time fixed bin (71), 54 sys_log_ptr ptr; 55 56 dcl WHITE char (2) int static options (constant) init (" "); /* SP HT */ 57 dcl NULL char (1) int static options (constant) init (""); /* \000 */ 58 59 dcl error_table_$too_many_names fixed bin(35) ext static; 60 dcl error_table_$wrong_no_of_args fixed bin(35) ext static; 61 62 dcl com_err_ entry options (variable); 63 dcl cu_$arg_count entry (fixed bin); 64 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 65 dcl cv_dec_ entry (char (*)) returns (fixed bin); 66 dcl date_time_ entry (fixed bin (71), char (*) aligned); 67 dcl expand_pathname_ entry (char (*), char (*) aligned, char (*) aligned, fixed bin (35)); 68 dcl get_wdir_ entry returns (char (168) aligned); 69 dcl (get_temp_segments_, release_temp_segments_) entry (char (*), (*) ptr, fixed bin (35)); 70 dcl hcs_$chname_file entry (char (*) aligned, char (*) aligned, char (*) aligned, 71 char (*) aligned, fixed bin (35)); 72 dcl hcs_$delentry_file entry (char (*) aligned, char (*) aligned, fixed bin (35)); 73 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, 74 fixed bin, fixed bin, ptr, fixed bin (35)); 75 dcl hcs_$make_seg entry (char (*) aligned, char (*) aligned, char (*) aligned, 76 fixed bin (5), ptr, fixed bin (35)); 77 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 78 dcl hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 79 dcl (ioa_, ioa_$rsnnl) entry options (variable); 80 dcl system_info_$titles entry (char (*) aligned, char (*) aligned, char (*) aligned, char (*) aligned); 81 dcl unique_chars_ entry (bit (*)) returns (char (15)); 82 83 dcl (addr, convert, divide, hbound, index, length, ltrim, null, rtrim, search, substr, unspec, verify) builtin; 84 85 dcl cleanup condition; 86 1 1 /* Declaration of the system log file. 1 2* 1 3* This file contains all error messages put out by the answering service */ 1 4 1 5 dcl 1 sys_log_file based (sys_log_ptr) aligned, 1 6 2 count fixed bin, /* number of messages */ 1 7 2 max fixed bin, /* maximum number */ 1 8 2 ttime fixed bin (71), /* date & time of last message */ 1 9 2 lep fixed bin, /* last entry processed by daily_log_process */ 1 10 2 lls char (12), /* suffix on last log */ 1 11 2 array (8159), 1 12 3 time fixed bin (71), /* time of entry */ 1 13 3 svty fixed bin, /* severity of entry */ 1 14 3 line char (116); /* error message. entry is 32 words */ 1 15 1 16 /* end of system log declaration */ 87 2 1 /* BEGIN INCLUDE FILE ... console_report_data.incl.pl1 */ 2 2 2 3 dcl (esp, tsp) ptr; 2 4 2 5 dcl 1 eseg based (esp) aligned, /* declaration of termuseg */ 2 6 2 version fixed bin, /* = 1 */ 2 7 2 nue fixed bin, /* Number of entries. */ 2 8 2 esh (7) fixed bin, 2 9 2 elt (18723), /* One entry per terminal-user combination */ 2 10 3 hrs fixed bin (71), /* Connect time */ 2 11 3 cpu fixed bin (71), /* CPU usage */ 2 12 3 cnt fixed bin, /* Number of logins */ 2 13 3 nxt fixed bin, /* Next entry on chain for terminal. */ 2 14 3 name char (32); /* User name */ 2 15 2 16 dcl 1 tsg based (tsp) aligned, /* Declaration of "termseg" */ 2 17 2 version fixed bin, /* = 1 */ 2 18 2 nterms fixed bin, /* Number of entries */ 2 19 2 nlogins fixed bin, /* Number of logins total */ 2 20 2 f_login fixed bin (71), /* Time of first login */ 2 21 2 l_login fixed bin (71), /* Time of last login */ 2 22 2 tottime fixed bin (71), /* Total connect time */ 2 23 2 totcpu fixed bin (71), /* Total CPU time */ 2 24 2 totnolog fixed bin, 2 25 2 ntypes fixed bin, /* Number of different types */ 2 26 2 typtab (250), /* Table by type */ 2 27 3 t char (32), /* Terminal type */ 2 28 3 c fixed bin (71), /* CPU */ 2 29 3 u fixed bin (71), /* Connect */ 2 30 3 p fixed bin, /* Number of different terminals */ 2 31 3 q fixed bin, /* Number of logins */ 2 32 3 tnolog fixed bin, /* Number of refused logins */ 2 33 3 tnolog1 fixed bin, 2 34 2 tary (9926), /* One entry per terminal */ 2 35 3 tt char (32), /* Terminal type (2741 etc) */ 2 36 3 id char (16), /* Terminal ID code */ 2 37 3 hr fixed bin (71), /* Total connect time */ 2 38 3 cp fixed bin (71), /* Total CPU time. */ 2 39 3 ct fixed bin, /* Count of logins. */ 2 40 3 nolog fixed bin, /* Number of refused logins */ 2 41 3 nolog1 fixed bin, 2 42 3 uc fixed bin, /* Pointer to chain of user entries in termuseg */ 2 43 3 cm char (20) aligned; /* Comment. Location of terminal */ 2 44 2 45 dcl console_report_data_version_1 fixed bin static init (1); 2 46 2 47 /* END INCLUDE FILE ... console_report_data.incl.pl1 */ 88 89 90 dcl (old_esp, old_tsp) ptr; 91 92 dcl 1 old_eseg based (old_esp) aligned, /* obsolete version termuseg */ 93 2 old_nue fixed bin, 94 2 old_esh (7) fixed bin, 95 2 old_elt (18000), 96 3 old_hrs fixed bin (71), 97 3 old_cpu fixed bin (71), 98 3 old_cnt fixed bin, 99 3 old_nxt fixed bin, 100 3 old_name char (32); 101 102 dcl 1 old_tsg based (old_tsp) aligned, /* obsolete version termseg */ 103 2 old_nterms fixed bin, 104 2 old_nlogins fixed bin, 105 2 old_f_login fixed bin (71), 106 2 old_l_login fixed bin (71), 107 2 old_tottime fixed bin (71), 108 2 old_totcpu fixed bin (71), 109 2 old_totnolog fixed bin, 110 2 old_ntypes fixed bin, 111 2 old_typtab (32), 112 3 old_t char (8), 113 3 old_c fixed bin (71), 114 3 old_u fixed bin (71), 115 3 old_p fixed bin, 116 3 old_q fixed bin, 117 3 old_tnolog fixed bin, 118 3 old_tnolog1 fixed bin, 119 2 old_tary (12000), 120 3 old_tt char (8), 121 3 old_id char (4), 122 3 old_ct fixed bin, 123 3 old_hr fixed bin (71), 124 3 old_cp fixed bin (71), 125 3 old_nolog fixed bin, 126 3 old_nolog1 fixed bin, 127 3 old_uc fixed bin, 128 3 old_cm char (20) aligned; 129 130 131 dcl 1 tab (18724) aligned based (tab_ptr), /* Temp table to correlate login/logout */ 132 2 ton fixed bin (71), /* Time of login */ 133 2 tty char (32), /* Channel ID */ 134 2 ix1 fixed bin (35), /* "i" - index in termseg */ 135 2 ix2 fixed bin (35), /* "j" - index in termuseg */ 136 2 ix3 fixed bin (35); /* "jj" - index in type table */ 137 138 dcl tab_ptrs (1) ptr init (null); 139 dcl tab_ptr ptr init (null); 140 dcl ttop fixed bin init (0); /* limit of tab array */ 141 142 dcl 1 mover like tsg.tary based aligned; /* swap structure */ 143 dcl 1 buffer like tsg.tary; /* swap buffer */ 144 145 /* ============================= */ 146 147 call cu_$arg_count (nargs); /* get number of args in this call */ 148 if nargs = 0 then do; 149 call com_err_ (error_table_$wrong_no_of_args, "console_report", 150 "^/Usage:^-console_report {as_log_paths} {-control_args}^/Args:^--print, -pr^/^2-causes a report to be generated and displayed on user_output^/^--sort^-sorts the data base by ident codes^/^--reset, -rs^/^2-resets the meters"); 151 return; 152 end; 153 154 en = "termseg"; /* Locate data segments */ 155 call hcs_$make_seg ((get_wdir_ ()), en, "", 1011b, tsp, ec); 156 if tsp = null then go to er; 157 en = "termuseg"; /* ... */ 158 call hcs_$make_seg ((get_wdir_ ()), en, "", 1011b, esp, ec); 159 if esp = null then go to er; 160 161 if esp -> old_eseg.old_nue ^= console_report_data_version_1 then call convert_eseg; /* COMPATIBILITY; */ 162 if tsp -> old_tsg.old_nterms ^= console_report_data_version_1 then call convert_tsg; /* DELETE LATER */ 163 164 m = 1; /* Loop on arguments. */ 165 arglp: call cu_$arg_ptr (m, ap, al, ec); /* Get an argument. */ 166 if ec ^= 0 then go to exit; 167 if bchr = "-print" | bchr = "-pr" then go to part2; 168 if bchr = "-sort" then go to sortpart; 169 if bchr = "-clear" | bchr = "-reset" | bchr = "-rs" then go to clearit; 170 if bchr = "-report_reset" | bchr = "-rr" then do; 171 report_reset = "1"b; 172 go to part2; 173 end; 174 175 call expand_pathname_ (bchr, dn, en, ec); 176 if ec ^= 0 then do; /* ... so process the log */ 177 er: call com_err_ (ec, "console_report", en); 178 return; 179 end; 180 call hcs_$initiate (dn, en, "", 0, 1, sys_log_ptr, ec); 181 if sys_log_ptr = null then go to er; 182 183 if tab_ptr = null then do; /* get temp seg first time through loop */ 184 on cleanup call cleanup_temp; 185 call get_temp_segments_ ("console_report", tab_ptrs, ec); 186 if ec ^= 0 then do; 187 en = "temp segment"; /* for printing error message */ 188 go to er; 189 end; 190 tab_ptr = tab_ptrs (1); 191 end; 192 193 starting_time = time (1); /* Set things up */ 194 do i = 1 to count; /* Scan entire log. */ 195 ending_time = time (i); /* Remember this */ 196 if substr (line (i), 1, 9) = "as_init_:" then do; 197 mm = i; /* look for a jump in the clock */ 198 scanbak: if ending_time - time (mm) < 60000000 then do; /* Taka 1 min to crash */ 199 ending_time = time (mm); 200 mm = mm - 1; 201 if mm > 0 then go to scanbak; 202 end; 203 call dump_logged_in; 204 starting_time = time (i); 205 go to endloop; 206 end; 207 if substr (line (i), 1, 12) = "lg_ctl_: no " then do; 208 mm = index (line (i), " chn "); 209 tbuf = substr (line (i), mm+5); 210 mm = index (tbuf, " "); 211 tbuf1 = substr (tbuf, mm+1); 212 tbuf = tbuf1; 213 mm = index (tbuf, " "); 214 tty_type = substr (tbuf, 1, mm-1); 215 tbuf1 = substr (tbuf, mm+1); 216 tbuf = tbuf1; 217 mm = index (tbuf, " "); 218 tty_idcode = substr (tbuf, 1, mm-1); 219 mm = index (tbuf, " reason "); 220 tbuf1 = substr (tbuf, mm+8); 221 tbuf = tbuf1; 222 mm = index (tbuf, " "); 223 reason = substr (tbuf, 1, mm-1); 224 call lookup1; 225 if j ^= 0 then do; 226 totnolog = totnolog + 1; 227 tnolog (jj) = tnolog (jj) + 1; 228 tsg.nolog (j) = tsg.nolog (j) + 1; 229 end; 230 go to endloop; 231 end; 232 if substr (line (i), 1, 6) = "LOGOUT" then do; /* Consider logout and login entries only */ 233 234 call parse_line (line (i)); 235 236 do ii = 1 to ttop while (tab (ii).tty ^= chnid); end; 237 if ii > ttop then do; /* If not there, switched logs while user was on */ 238 call lookup; /* Find i and j for this terminal/user */ 239 if j = 0 then go to endloop; /* Ignore absentee */ 240 slog = time (i) - starting_time; /* Assume that first entry has best time. */ 241 end; 242 else do; /* Normal case. Located note made at login (below) */ 243 tab (ii).tty = ""; /* Blank out entry. */ 244 slog = time (i) - tab.ton (ii); /* Calculate connect time. */ 245 j = tab (ii).ix1; /* Retrieve termseg index */ 246 k = tab (ii).ix2; /* .. and termuseg index */ 247 jj = tab (ii).ix3; 248 end; 249 /* tbuf = remainder of line after username */ 250 kk = verify (tbuf, " "); /* Strip blanks. */ 251 mm = index (tbuf, ":"); /* Find colon. */ 252 min = cv_dec_ (substr (tbuf, kk, mm-kk)); 253 sec = cv_dec_ (substr (tbuf, mm+1, 2)); 254 scpu = 1000000 * (sec + 60 * min); /* Calculate CPU time in usec. */ 255 tsg.hr (j) = tsg.hr (j) + slog; /* Record connect time. */ 256 tsg.cp (j) = tsg.cp (j) + scpu; /* .. and cpu time */ 257 c (jj) = c (jj) + scpu; 258 u (jj) = u (jj) + slog; 259 hrs (k) = hrs (k) + slog; /* ... */ 260 cpu (k) = cpu (k) + scpu; /* ... */ 261 tottime = tottime + slog; /* ... */ 262 totcpu = totcpu + scpu; 263 go to endloop; 264 end; 265 if substr (line (i), 1, 6) ^= "LOGIN " then go to endloop; 266 call parse_line (line (i)); 267 call lookup; /* Login entry. Locate termseg and termuseg entry */ 268 if j = 0 then go to endloop; /* Ignore absentee */ 269 if f_login = 0 then f_login = time (i); /* Check first and last login */ 270 else if time (i) < f_login then f_login = time (i); 271 else if time (i) > l_login then l_login = time (i); 272 nlogins = nlogins + 1; /* Total logins */ 273 do ii = 1 to ttop while (tab (ii).tty ^= ""); end; 274 if ii > ttop then do; 275 if ii > hbound (tab, 1) then do; /* this should be error_table_$too_many_entries which doesn't exist */ 276 call com_err_ (error_table_$too_many_names, "console_report", 277 "Exceeded internal limit of ^d entries.", hbound (tab, 1)); 278 go to exit; 279 end; 280 ttop = ii; 281 end; 282 tab (ii).tty = chnid; /* ... so we can get connect time at logout */ 283 tab (ii).ton = time (i); /* ... */ 284 tsg.ct (j) = tsg.ct (j) + 1; /* count logins/terminal */ 285 tab (ii).ix1 = j; /* remember where termseg entry is */ 286 elt (k).cnt = elt (k).cnt + 1; /* count logins/terminal/user */ 287 tab (ii).ix2 = k; /* remember user loc too */ 288 tab (ii).ix3 = jj; /* .. and termtype loc */ 289 q (jj) = q (jj) + 1; /* Count logins */ 290 endloop: end; 291 292 ending_time = time (count); /* get as close as possible */ 293 call dump_logged_in; /* Simulate logout */ 294 295 call hcs_$terminate_noname (sys_log_ptr, ec); /* Done with this log. Get next */ 296 nxtarg: m = m + 1; /* If any */ 297 go to arglp; 298 299 clearit: do j = 1 to nterms; /* Entry clears termseg and termuseg */ 300 tsg.ct (j) = 0; /* Login count */ 301 tsg.uc (j) = 0; /* Chain */ 302 tsg.hr (j) = 0; /* Connect */ 303 tsg.cp (j) = 0; /* CPU */ 304 end; 305 f_login, l_login, tottime, totcpu = 0; /* Clear header */ 306 totnolog = 0; /* .. */ 307 do jj = 1 to ntypes; 308 c (jj), u (jj) = 0; /* Clear type table use */ 309 q (jj) = 0; /* ... */ 310 tnolog (jj) = 0; /* ... */ 311 end; 312 nlogins = 0; 313 call hcs_$truncate_seg (esp, 0, ec); /* Ditch whole seg */ 314 go to nxtarg; 315 316 sortpart: d = nterms; /* Sort termseg */ 317 pass: swap = "0"b; 318 d = divide (d+1, 2, 17, 0); /* Ornery Shell short */ 319 do j = 1 to (nterms-d); 320 if tsg.id (j) > tsg.id (j+d) then do; 321 swap = "1"b; 322 addr (buffer) -> mover = addr (tary (j)) -> mover; 323 addr (tary (j)) -> mover = addr (tary (j+d)) -> mover; 324 addr (tary (j+d)) -> mover = addr (buffer) -> mover; 325 end; 326 end; 327 if d > 1 then go to pass; 328 if swap then go to pass; 329 go to nxtarg; 330 331 332 part2: call system_info_$titles (coxx, dpxx, cods, dpds); /* Print terminal report */ 333 call ioa_ ("^|^-^a^/^/^-^-^a", cods, dpds); 334 call ioa_ ("^/^- Multics terminal usage"); 335 call date_time_ (f_login, fls); 336 call date_time_ (l_login, lls); 337 call ioa_ ("^/^- Period from ^a to ^a", fls, lls); 338 call ioa_ ("^/^/^12xType^11xCount^4xLogins Nologins^7xCPU^3xConnect^/"); 339 do jj = 1 to ntypes; /* List type table */ 340 if index (t (jj), NULL) = 0 & t (jj) ^= "" then do; /* valid entry */ 341 if p (jj) = 0 then count_len = 1; 342 else count_len = length( ltrim (convert (d12v, p (jj)), "0 ")); 343 space_len = 20 - count_len - length (rtrim (t (jj))) - 1; 344 call ioa_ ("^12x^[^a^/^vx^s^;^a^s^vx^]^d^10d^10d ^9a ^9a", 345 space_len < 0, t (jj), 30 - count_len, space_len + 1, 346 p (jj), q (jj), tnolog (jj), cv (c (jj)), cv (u (jj))); 347 end; 348 end; 349 call ioa_ ("^/^15xTOTAL ^10d^10d^10d ^9a ^9a", nterms, nlogins, totnolog, cv (totcpu), cv (tottime)); 350 call ioa_ ("^/^/ID^3xType^6xLocation^13xLogins Nologins^7xCPU^3xConnect^/^6xUser"); 351 do j = 1 to nterms; /* Dump each terminal */ 352 if tsg.hr (j) = 0 | index (tsg.id (j), NULL) ^= 0 then go to gluk; /* no time or invalid */ 353 if index (tsg.cm (j), NULL) ^= 0 then tty_str = tsg.tt (j); 354 else tty_str = rtrim (tsg.tt (j)) || " " || tsg.cm (j); 355 call ioa_ ("^/^[^a^/^4x^;^4a^] ^[^a^/^34x^;^29a^]^8d^10d ^9a ^9a", 356 length (rtrim (tsg.id (j))) > 4, tsg.id (j), 357 length (rtrim (tty_str)) > 29, tty_str, 358 tsg.ct (j), tsg.nolog (j), cv (tsg.cp (j)), cv (tsg.hr (j))); 359 k = tsg.uc (j); 360 do while (k ^= 0); /* List users of terminal */ 361 call ioa_ ("^6x^32a^4d^11x^9a ^9a", 362 name (k), cnt (k), cv (cpu (k)), cv (hrs (k))); 363 k = nxt (k); /* Follow chanin */ 364 end; 365 gluk: end; 366 367 if report_reset then do; 368 report_reset = "0"b; 369 go to clearit; 370 end; 371 372 go to nxtarg; 373 374 exit: call hcs_$terminate_noname (tsp, ec); 375 call hcs_$terminate_noname (esp, ec); 376 call cleanup_temp; 377 return; 378 379 380 cv: proc (usec) returns (char (9)); 381 dcl usec fixed bin (71); 382 dcl (hr, min, xx) fixed bin; 383 dcl ans char (9); 384 385 hr = divide (usec+59000000, 3600000000, 17, 0); 386 min = divide (usec+59000000 - hr*3600000000, 60000000, 17, 0); 387 call ioa_$rsnnl ("^6d:^2d", ans, xx, hr, min); 388 if substr (ans, 8, 1) = " " then substr (ans, 8, 1) = "0"; 389 return (ans); 390 391 end cv; 392 393 convert_eseg: proc; 394 395 old_esp = esp; 396 temp_en = unique_chars_ ("0"b); 397 call hcs_$make_seg ((get_wdir_ ()), temp_en, "", 1011b, esp, ec); 398 if esp = null then do; 399 no_eseg: call com_err_ (ec, "console_report", 400 "Unable to convert termuseg to current version."); 401 go to exit; 402 end; 403 404 eseg.version = console_report_data_version_1; 405 nue = old_nue; 406 unspec (esh) = unspec (old_esh); 407 do i = 1 to nue; 408 unspec (elt (i)) = unspec (old_elt (i)); 409 end; 410 411 call hcs_$delentry_file ((get_wdir_ ()), "termuseg", ec); 412 call hcs_$chname_file ((get_wdir_ ()), temp_en, temp_en, "termuseg", ec); 413 if ec ^= 0 then go to no_eseg; 414 415 end convert_eseg; 416 417 418 convert_tsg: proc; 419 420 old_tsp = tsp; 421 temp_en = unique_chars_ ("0"b); 422 call hcs_$make_seg ((get_wdir_ ()), temp_en, "", 1011b, tsp, ec); 423 if tsp = null then do; 424 no_tsg: call com_err_ (ec, "console_report", 425 "Unable to convert termseg to current version."); 426 go to exit; 427 end; 428 429 tsg.version = console_report_data_version_1; 430 nterms = old_nterms; 431 nlogins = old_nlogins; 432 f_login = old_f_login; 433 l_login = old_l_login; 434 tottime = old_tottime; 435 totcpu = old_totcpu; 436 totnolog = old_totnolog; 437 ntypes = old_ntypes; 438 do i = 1 to ntypes; 439 t (i) = old_t (i); 440 c (i) = old_c (i); 441 u (i) = old_u (i); 442 p (i) = old_p (i); 443 q (i) = old_q (i); 444 tnolog (i) = old_tnolog (i); 445 tnolog1 (i) = old_tnolog1 (i); 446 end; 447 do i = 1 to nterms; 448 tsg.tt (i) = old_tt (i); 449 tsg.id (i) = old_id (i); 450 tsg.hr (i) = old_hr (i); 451 tsg.cp (i) = old_cp (i); 452 tsg.ct (i) = old_ct (i); 453 tsg.nolog (i) = old_nolog (i); 454 tsg.nolog1 (i) = old_nolog1 (i); 455 tsg.uc (i) = old_uc (i); 456 tsg.cm (i) = old_cm (i); 457 end; 458 459 call hcs_$delentry_file ((get_wdir_ ()), "termseg", ec); 460 call hcs_$chname_file ((get_wdir_ ()), temp_en, temp_en, "termseg", ec); 461 if ec ^= 0 then go to no_tsg; 462 463 end convert_tsg; 464 465 466 parse_line: proc (a_text); 467 468 dcl (a_text, text) char (116) aligned; 469 dcl start fixed bin; 470 471 text = a_text; 472 start = 8; 473 tty_type = next_atom(); 474 tty_idcode = next_atom(); 475 chnid = next_atom(); 476 personname = next_atom(); 477 if substr (personname, 1, 1) = "*" then do; 478 start = index (personname, "."); 479 if start ^= 0 then personname = "anonymous." || substr (personname, start + 1); 480 end; 481 tbuf = substr (text, start); 482 483 484 next_atom: proc returns (char (64)); 485 486 text = ltrim (substr (text, start), WHITE); 487 start = search (text, WHITE); 488 return (substr (text, 1, start - 1)); 489 490 end next_atom; 491 492 end parse_line; 493 494 495 lookup1: proc; 496 497 personname = ""; 498 499 lookup: entry; 500 501 if tty_type = "Absentee" then do; /* forget these */ 502 j = 0; 503 return; 504 end; 505 do jj = 1 to ntypes; /* Get term type */ 506 if t (jj) = tty_type then go to f2; 507 end; 508 ntypes = ntypes + 1; 509 t (jj) = tty_type; 510 p (jj), q (jj) = 0; 511 c (jj), u (jj) = 0; 512 tnolog (jj) = 0; 513 f2: do j = 1 to nterms; /* Search termseg */ 514 if tty_type = tsg.tt (j) then if tty_idcode = tsg.id (j) then go to f1; 515 end; 516 if nterms >= hbound (tsg.tary, 1) then do; /* array bound exceeded */ 517 call com_err_ (error_table_$too_many_names, "console_report", 518 "Array limit ^d in termseg exceeded.", hbound (tsg.tary, 1)); 519 go to exit; 520 end; 521 j, nterms = nterms + 1; /* Make new termseg entry. New terminal */ 522 p (jj) = p (jj) + 1; 523 tsg.tt (j) = tty_type; 524 tsg.id (j) = tty_idcode; 525 tsg.cm (j) = ""; 526 tsg.hr (j) = 0; 527 tsg.ct (j) = 0; 528 tsg.cp (j) = 0; 529 tsg.nolog (j) = 0; 530 tsg.uc (j) = 0; 531 f1: 532 if personname = "" then return; 533 k = tsg.uc (j); /* Now scan termuseg */ 534 n = 0; 535 do while (k ^= 0); /* .. look for user name */ 536 if elt (k).name = personname then return; 537 n = k; 538 k = elt (k).nxt; 539 end; 540 if nue >= hbound (eseg.elt, 1) then do; /* array bound exceeded */ 541 call com_err_ (error_table_$too_many_names, "console_report", 542 "Array limit ^d in termuseg exceeded.", hbound (eseg.elt, 1)); 543 go to exit; 544 end; 545 k, nue = nue + 1; /* Make new termuseg entry */ 546 elt (k).cnt, elt (k).nxt = 0; 547 elt (k).hrs = 0; 548 elt (k).cpu = 0; 549 elt (k).name = personname; 550 if n = 0 then tsg.uc (j) = nue; /* Thread in */ 551 else elt (n).nxt = nue; 552 553 end lookup1; 554 555 dump_logged_in: proc; 556 557 do ii = 1 to ttop; /* Pretend everybody logs out now */ 558 if tab (ii).tty ^= "" then do; /* .. by dumping our scratchpad */ 559 slog = ending_time - tab (ii).ton; /* ... */ 560 if slog < 0 then slog = 0; 561 j = tab (ii).ix1; /* ... */ 562 k = tab (ii).ix2; /* ... */ 563 jj = tab (ii).ix3; /* ... */ 564 tsg.hr (j) = tsg.hr (j) + slog; /* ... */ 565 hrs (k) = hrs (k) + slog; /* ... */ 566 u (jj) = u (jj) + slog; /* ... */ 567 tottime = tottime + slog; /* ... */ 568 end; 569 end; 570 ttop = 0; 571 572 end dump_logged_in; 573 574 cleanup_temp: proc; 575 576 if tab_ptrs (1) ^= null then call release_temp_segments_ ("console_report", tab_ptrs, ec); 577 578 end cleanup_temp; 579 580 end console_report; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/12/82 1045.2 console_report.pl1 >spec>on>11/12/82>console_report.pl1 87 1 01/05/79 1311.1 syslog.incl.pl1 >ldd>include>syslog.incl.pl1 88 2 11/07/79 0749.0 console_report_data.incl.pl1 >ldd>include>console_report_data.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. NULL constant char(1) initial unaligned dcl 57 ref 340 352 353 WHITE constant char(2) initial unaligned dcl 56 ref 486 487 a_text parameter char(116) dcl 468 ref 466 471 addr builtin function dcl 83 ref 322 322 323 323 324 324 al 000470 automatic fixed bin(17,0) dcl 25 set ref 165* 167 167 168 169 169 169 170 170 175 175 ans 000607 automatic char(9) unaligned dcl 383 set ref 387* 388 388* 389 ap 000466 automatic pointer dcl 25 set ref 165* 167 167 168 169 169 169 170 170 175 array 10 based structure array level 2 dcl 1-5 bchr based char unaligned dcl 25 set ref 167 167 168 169 169 169 170 170 175* buffer 000534 automatic structure level 1 unaligned dcl 143 set ref 322 324 c 26 based fixed bin(71,0) array level 3 dcl 2-16 set ref 257* 257 308* 344* 344* 440* 511* chnid 000270 automatic char(32) dcl 25 set ref 236 282 475* cleanup 000510 stack reference condition dcl 85 ref 184 cm 7702 based char(20) array level 3 dcl 2-16 set ref 353 354 456* 525* cnt 16 based fixed bin(17,0) array level 3 dcl 2-5 set ref 286* 286 361* 546* cods 000174 automatic char(120) dcl 25 set ref 332* 333* com_err_ 000014 constant entry external dcl 62 ref 149 177 276 399 424 517 541 console_report_data_version_1 constant fixed bin(17,0) initial dcl 2-45 ref 161 162 404 429 convert builtin function dcl 83 ref 342 count based fixed bin(17,0) level 2 dcl 1-5 ref 194 292 count_len 000342 automatic fixed bin(17,0) dcl 25 set ref 341* 342* 343 344 coxx 000172 automatic char(4) dcl 25 set ref 332* cp 7674 based fixed bin(71,0) array level 3 dcl 2-16 set ref 256* 256 303* 355* 355* 451* 528* cpu 14 based fixed bin(71,0) array level 3 dcl 2-5 set ref 260* 260 361* 361* 548* ct 7676 based fixed bin(17,0) array level 3 dcl 2-16 set ref 284* 284 300* 355* 452* 527* cu_$arg_count 000016 constant entry external dcl 63 ref 147 cu_$arg_ptr 000020 constant entry external dcl 64 ref 165 cv_dec_ 000022 constant entry external dcl 65 ref 252 253 d 000344 automatic fixed bin(17,0) dcl 25 set ref 316* 318* 318 319 320 323 324 327 d12v automatic varying char(12) dcl 25 ref 342 date_time_ 000024 constant entry external dcl 66 ref 335 336 divide builtin function dcl 83 ref 318 385 386 dn 000100 automatic char(168) dcl 25 set ref 175* 180* dpds 000232 automatic char(120) dcl 25 set ref 332* 333* dpxx 000173 automatic char(4) dcl 25 set ref 332* ec 000471 automatic fixed bin(35,0) dcl 25 set ref 155* 158* 165* 166 175* 176 177* 180* 185* 186 295* 313* 374* 375* 397* 399* 411* 412* 413 422* 424* 459* 460* 461 576* elt 12 based structure array level 2 dcl 2-5 set ref 408* 540 541 541 en 000152 automatic char(32) dcl 25 set ref 154* 155* 157* 158* 175* 177* 180* 187* ending_time 000502 automatic fixed bin(71,0) dcl 25 set ref 195* 198 199* 292* 559 error_table_$too_many_names 000010 external static fixed bin(35,0) dcl 59 set ref 276* 517* 541* error_table_$wrong_no_of_args 000012 external static fixed bin(35,0) dcl 60 set ref 149* eseg based structure level 1 dcl 2-5 esh 2 based fixed bin(17,0) array level 2 dcl 2-5 set ref 406* esp 000516 automatic pointer dcl 2-3 set ref 158* 159 161 259 259 260 260 286 286 313* 361 361 361 361 361 361 363 375* 395 397* 398 404 405 406 407 408 536 538 540 540 541 541 545 545 546 546 547 548 549 550 551 551 565 565 expand_pathname_ 000026 constant entry external dcl 67 ref 175 f_login 4 based fixed bin(71,0) level 2 dcl 2-16 set ref 269 269* 270 270* 305* 335* 432* fls 000314 automatic char(16) dcl 25 set ref 335* 337* get_temp_segments_ 000032 constant entry external dcl 69 ref 185 get_wdir_ 000030 constant entry external dcl 68 ref 155 158 397 411 412 422 459 460 hbound builtin function dcl 83 ref 275 276 276 516 517 517 540 541 541 hcs_$chname_file 000036 constant entry external dcl 70 ref 412 460 hcs_$delentry_file 000040 constant entry external dcl 72 ref 411 459 hcs_$initiate 000042 constant entry external dcl 73 ref 180 hcs_$make_seg 000044 constant entry external dcl 75 ref 155 158 397 422 hcs_$terminate_noname 000046 constant entry external dcl 77 ref 295 374 375 hcs_$truncate_seg 000050 constant entry external dcl 78 ref 313 hr 7672 based fixed bin(71,0) array level 3 in structure "tsg" dcl 2-16 in procedure "console_report" set ref 255* 255 302* 352 355* 355* 450* 526* 564* 564 hr 000604 automatic fixed bin(17,0) dcl 382 in procedure "cv" set ref 385* 386 387* hrs 12 based fixed bin(71,0) array level 3 dcl 2-5 set ref 259* 259 361* 361* 547* 565* 565 i 000350 automatic fixed bin(17,0) dcl 25 set ref 194* 195 196 197 204 207 208 209 232 234 240 244 265 266 269 270 270 271 271 283* 407* 408 408* 438* 439 439 440 440 441 441 442 442 443 443 444 444 445 445* 447* 448 448 449 449 450 450 451 451 452 452 453 453 454 454 455 455 456 456* id 7666 based char(16) array level 3 dcl 2-16 set ref 320 320 352 355 355* 449* 514 524* ii 000355 automatic fixed bin(17,0) dcl 25 set ref 236* 236* 237 243 244 245 246 247 273* 273* 274 275 280 282 283 285 287 288 557* 558 559 561 562 563* index builtin function dcl 83 ref 208 210 213 217 219 222 251 340 352 353 478 ioa_ 000052 constant entry external dcl 79 ref 333 334 337 338 344 349 350 355 361 ioa_$rsnnl 000054 constant entry external dcl 79 ref 387 ix1 12 based fixed bin(35,0) array level 2 dcl 131 set ref 245 285* 561 ix2 13 based fixed bin(35,0) array level 2 dcl 131 set ref 246 287* 562 ix3 14 based fixed bin(35,0) array level 2 dcl 131 set ref 247 288* 563 j 000351 automatic fixed bin(17,0) dcl 25 set ref 225 228 228 239 245* 255 255 256 256 268 284 284 285 299* 300 301 302 303* 319* 320 320 322 323 323 324* 351* 352 352 353 353 354 354 355 355 355 355 355 355 355 355 359* 502* 513* 514 514* 521* 523 524 525 526 527 528 529 530 533 550 561* 564 564 jj 000356 automatic fixed bin(17,0) dcl 25 set ref 227 227 247* 257 257 258 258 288 289 289 307* 308 308 309 310* 339* 340 340 341 342 343 344 344 344 344 344 344 344 344* 505* 506* 509 510 510 511 511 512 522 522 563* 566 566 k 000352 automatic fixed bin(17,0) dcl 25 set ref 246* 259 259 260 260 286 286 287 359* 360 361 361 361 361 361 361 363* 363 533* 535 536 537 538* 538 545* 546 546 547 548 549 562* 565 565 kk 000357 automatic fixed bin(17,0) dcl 25 set ref 250* 252 252 252 252 l_login 6 based fixed bin(71,0) level 2 dcl 2-16 set ref 271 271* 305* 336* 433* length builtin function dcl 83 ref 342 343 355 355 line 13 based char(116) array level 3 dcl 1-5 set ref 196 207 208 209 232 234* 265 266* lls 000320 automatic char(16) dcl 25 set ref 336* 337* ltrim builtin function dcl 83 ref 342 486 m 000353 automatic fixed bin(17,0) dcl 25 set ref 164* 165* 296* 296 min 000361 automatic fixed bin(17,0) dcl 25 in procedure "console_report" set ref 252* 254 min 000605 automatic fixed bin(17,0) dcl 382 in procedure "cv" set ref 386* 387* mm 000360 automatic fixed bin(17,0) dcl 25 set ref 197* 198 199 200* 200 201 208* 209 210* 211 213* 214 215 217* 218 219* 220 222* 223 251* 252 252 253 253 mover based structure level 1 dcl 142 set ref 322* 322 323* 323 324* 324 n 000354 automatic fixed bin(17,0) dcl 25 set ref 534* 537* 550 551 name 20 based char(32) array level 3 dcl 2-5 set ref 361* 536 549* nargs 000345 automatic fixed bin(17,0) dcl 25 set ref 147* 148 nlogins 2 based fixed bin(17,0) level 2 dcl 2-16 set ref 272* 272 312* 349* 431* nolog 7677 based fixed bin(17,0) array level 3 dcl 2-16 set ref 228* 228 355* 453* 529* nolog1 7700 based fixed bin(17,0) array level 3 dcl 2-16 set ref 454* nterms 1 based fixed bin(17,0) level 2 dcl 2-16 set ref 299 316 319 349* 351 430* 447 513 516 521 521* ntypes 15 based fixed bin(17,0) level 2 dcl 2-16 set ref 307 339 437* 438 505 508* 508 nue 1 based fixed bin(17,0) level 2 dcl 2-5 set ref 405* 407 540 545 545* 550 551 null builtin function dcl 83 ref 138 139 156 159 181 183 398 423 576 nxt 17 based fixed bin(17,0) array level 3 dcl 2-5 set ref 363 538 546* 551* old_c 16 based fixed bin(71,0) array level 3 dcl 102 ref 440 old_cm 527 based char(20) array level 3 dcl 102 ref 456 old_cp 522 based fixed bin(71,0) array level 3 dcl 102 ref 451 old_ct 517 based fixed bin(17,0) array level 3 dcl 102 ref 452 old_elt 10 based structure array level 2 dcl 92 ref 408 old_eseg based structure level 1 dcl 92 old_esh 1 based fixed bin(17,0) array level 2 dcl 92 ref 406 old_esp 000522 automatic pointer dcl 90 set ref 395* 405 406 408 old_f_login 2 based fixed bin(71,0) level 2 dcl 102 ref 432 old_hr 520 based fixed bin(71,0) array level 3 dcl 102 ref 450 old_id 516 based char(4) array level 3 dcl 102 ref 449 old_l_login 4 based fixed bin(71,0) level 2 dcl 102 ref 433 old_nlogins 1 based fixed bin(17,0) level 2 dcl 102 ref 431 old_nolog 524 based fixed bin(17,0) array level 3 dcl 102 ref 453 old_nolog1 525 based fixed bin(17,0) array level 3 dcl 102 ref 454 old_nterms based fixed bin(17,0) level 2 dcl 102 ref 162 430 old_ntypes 13 based fixed bin(17,0) level 2 dcl 102 ref 437 old_nue based fixed bin(17,0) level 2 dcl 92 ref 161 405 old_p 22 based fixed bin(17,0) array level 3 dcl 102 ref 442 old_q 23 based fixed bin(17,0) array level 3 dcl 102 ref 443 old_t 14 based char(8) array level 3 dcl 102 ref 439 old_tary 514 based structure array level 2 dcl 102 old_tnolog 24 based fixed bin(17,0) array level 3 dcl 102 ref 444 old_tnolog1 25 based fixed bin(17,0) array level 3 dcl 102 ref 445 old_totcpu 10 based fixed bin(71,0) level 2 dcl 102 ref 435 old_totnolog 12 based fixed bin(17,0) level 2 dcl 102 ref 436 old_tottime 6 based fixed bin(71,0) level 2 dcl 102 ref 434 old_tsg based structure level 1 dcl 102 old_tsp 000524 automatic pointer dcl 90 set ref 420* 430 431 432 433 434 435 436 437 439 440 441 442 443 444 445 448 449 450 451 452 453 454 455 456 old_tt 514 based char(8) array level 3 dcl 102 ref 448 old_typtab 14 based structure array level 2 dcl 102 old_u 20 based fixed bin(71,0) array level 3 dcl 102 ref 441 old_uc 526 based fixed bin(17,0) array level 3 dcl 102 ref 455 p 32 based fixed bin(17,0) array level 3 dcl 2-16 set ref 341 342 344* 442* 510* 522* 522 personname 000472 automatic char(32) dcl 25 set ref 476* 477 478 479* 479 497* 531 536 549 q 33 based fixed bin(17,0) array level 3 dcl 2-16 set ref 289* 289 309* 344* 443* 510* reason 000460 automatic char(8) dcl 25 set ref 223* release_temp_segments_ 000034 constant entry external dcl 69 ref 576 report_reset 000346 automatic bit(1) initial unaligned dcl 25 set ref 25* 171* 367 368* rtrim builtin function dcl 83 ref 343 354 355 355 scpu 000464 automatic fixed bin(71,0) dcl 25 set ref 254* 256 257 260 262 search builtin function dcl 83 ref 487 sec 000362 automatic fixed bin(17,0) dcl 25 set ref 253* 254 slog 000462 automatic fixed bin(71,0) dcl 25 set ref 240* 244* 255 258 259 261 559* 560 560* 564 565 566 567 space_len 000343 automatic fixed bin(17,0) dcl 25 set ref 343* 344 344 start 000675 automatic fixed bin(17,0) dcl 469 set ref 472* 478* 479 479 481 486 487* 488 starting_time 000504 automatic fixed bin(71,0) dcl 25 set ref 193* 204* 240 substr builtin function dcl 83 set ref 196 207 209 211 214 215 218 220 223 232 252 252 253 253 265 388 388* 477 479 481 486 488 swap 000347 automatic bit(1) dcl 25 set ref 317* 321* 328 sys_log_file based structure level 1 dcl 1-5 sys_log_ptr 000506 automatic pointer dcl 25 set ref 180* 181 193 194 195 196 198 199 204 207 208 209 232 234 240 244 265 266 269 270 270 271 271 283 292 292 295* system_info_$titles 000056 constant entry external dcl 80 ref 332 t 16 based char(32) array level 3 dcl 2-16 set ref 340 340 343 344* 439* 506 509* tab based structure array level 1 dcl 131 set ref 275 276 276 tab_ptr 000530 automatic pointer initial dcl 139 set ref 139* 183 190* 236 243 244 245 246 247 273 275 276 276 282 283 285 287 288 558 559 561 562 563 tab_ptrs 000526 automatic pointer initial array dcl 138 set ref 138* 185* 190 576 576* tary 7656 based structure array level 2 dcl 2-16 set ref 322 323 323 324 516 517 517 tbuf 000363 automatic char(120) dcl 25 set ref 209* 210 211 212* 213 214 215 216* 217 218 219 220 221* 222 223 250 251 252 252 253 253 481* tbuf1 000421 automatic char(120) dcl 25 set ref 211* 212 215* 216 220* 221 temp_en 000162 automatic char(32) dcl 25 set ref 396* 397* 412* 412* 421* 422* 460* 460* text 000640 automatic char(116) dcl 468 set ref 471* 481 486* 486 487 488 time 10 based fixed bin(71,0) array level 3 dcl 1-5 ref 193 195 198 199 204 240 244 269 270 270 271 271 283 292 tnolog 34 based fixed bin(17,0) array level 3 dcl 2-16 set ref 227* 227 310* 344* 444* 512* tnolog1 35 based fixed bin(17,0) array level 3 dcl 2-16 set ref 445* ton based fixed bin(71,0) array level 2 dcl 131 set ref 244 283* 559 totcpu 12 based fixed bin(71,0) level 2 dcl 2-16 set ref 262* 262 305* 349* 349* 435* totnolog 14 based fixed bin(17,0) level 2 dcl 2-16 set ref 226* 226 306* 349* 436* tottime 10 based fixed bin(71,0) level 2 dcl 2-16 set ref 261* 261 305* 349* 349* 434* 567* 567 tsg based structure level 1 dcl 2-16 tsp 000520 automatic pointer dcl 2-3 set ref 155* 156 162 226 226 227 227 228 228 255 255 256 256 257 257 258 258 261 261 262 262 269 269 270 270 271 271 272 272 284 284 289 289 299 300 301 302 303 305 305 305 305 306 307 308 308 309 310 312 316 319 320 320 322 323 323 324 335 336 339 340 340 341 342 343 344 344 344 344 344 344 344 344 349 349 349 349 349 349 349 351 352 352 353 353 354 354 355 355 355 355 355 355 355 355 359 374* 420 422* 423 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 447 448 449 450 451 452 453 454 455 456 505 506 508 508 509 510 510 511 511 512 513 514 514 516 516 517 517 521 521 522 522 523 524 525 526 527 528 529 530 533 550 564 564 566 566 567 567 tt 7656 based char(32) array level 3 dcl 2-16 set ref 353 354 448* 514 523* ttop 000532 automatic fixed bin(17,0) initial dcl 140 set ref 140* 236 237 273 274 280* 557 570* tty 2 based char(32) array level 2 dcl 131 set ref 236 243* 273 282* 558 tty_idcode 000310 automatic char(16) dcl 25 set ref 218* 474* 514 524 tty_str 000324 automatic char(54) dcl 25 set ref 353* 354* 355 355* tty_type 000300 automatic char(32) dcl 25 set ref 214* 473* 501 506 509 514 523 typtab 16 based structure array level 2 dcl 2-16 u 30 based fixed bin(71,0) array level 3 dcl 2-16 set ref 258* 258 308* 344* 344* 441* 511* 566* 566 uc 7701 based fixed bin(17,0) array level 3 dcl 2-16 set ref 301* 359 455* 530* 533 550* unique_chars_ 000060 constant entry external dcl 81 ref 396 421 unspec builtin function dcl 83 set ref 406* 406 408* 408 usec parameter fixed bin(71,0) dcl 381 ref 380 385 386 verify builtin function dcl 83 ref 250 version based fixed bin(17,0) level 2 in structure "eseg" dcl 2-5 in procedure "console_report" set ref 404* version based fixed bin(17,0) level 2 in structure "tsg" dcl 2-16 in procedure "console_report" set ref 429* xx 000606 automatic fixed bin(17,0) dcl 382 set ref 387* NAMES DECLARED BY EXPLICIT CONTEXT. arglp 000700 constant label dcl 165 ref 297 cleanup_temp 005151 constant entry internal dcl 574 ref 184 376 clearit 002114 constant label dcl 299 ref 169 369 console_report 000454 constant entry external dcl 11 convert_eseg 003470 constant entry internal dcl 393 ref 161 convert_tsg 003747 constant entry internal dcl 418 ref 162 cv 003403 constant entry internal dcl 380 ref 344 344 344 344 349 349 349 349 355 355 355 355 361 361 361 361 dump_logged_in 005057 constant entry internal dcl 555 ref 203 293 endloop 002071 constant label dcl 290 ref 205 230 239 263 265 268 er 001016 constant label dcl 177 ref 156 159 181 188 exit 003354 constant label dcl 374 ref 166 278 401 426 519 543 f1 004723 constant label dcl 531 ref 514 f2 004573 constant label dcl 513 ref 506 gluk 003345 constant label dcl 365 ref 352 lookup 004525 constant entry internal dcl 499 ref 238 267 lookup1 004520 constant entry internal dcl 495 ref 224 next_atom 004447 constant entry internal dcl 484 ref 473 474 475 476 no_eseg 003567 constant label dcl 399 ref 413 no_tsg 004046 constant label dcl 424 ref 461 nxtarg 002112 constant label dcl 296 ref 314 329 372 parse_line 004342 constant entry internal dcl 466 ref 234 266 part2 002300 constant label dcl 332 set ref 167 172 pass 002210 constant label dcl 317 ref 327 328 scanbak 001226 constant label dcl 198 ref 201 sortpart 002205 constant label dcl 316 ref 168 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6304 6366 6017 6314 Length 6646 6017 62 244 265 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME console_report 877 external procedure is an external procedure. on unit on line 184 64 on unit cv internal procedure shares stack frame of external procedure console_report. convert_eseg internal procedure shares stack frame of external procedure console_report. convert_tsg internal procedure shares stack frame of external procedure console_report. parse_line internal procedure shares stack frame of external procedure console_report. next_atom internal procedure shares stack frame of external procedure console_report. lookup1 internal procedure shares stack frame of external procedure console_report. dump_logged_in internal procedure shares stack frame of external procedure console_report. cleanup_temp 82 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME console_report 000100 dn console_report 000152 en console_report 000162 temp_en console_report 000172 coxx console_report 000173 dpxx console_report 000174 cods console_report 000232 dpds console_report 000270 chnid console_report 000300 tty_type console_report 000310 tty_idcode console_report 000314 fls console_report 000320 lls console_report 000324 tty_str console_report 000342 count_len console_report 000343 space_len console_report 000344 d console_report 000345 nargs console_report 000346 report_reset console_report 000347 swap console_report 000350 i console_report 000351 j console_report 000352 k console_report 000353 m console_report 000354 n console_report 000355 ii console_report 000356 jj console_report 000357 kk console_report 000360 mm console_report 000361 min console_report 000362 sec console_report 000363 tbuf console_report 000421 tbuf1 console_report 000460 reason console_report 000462 slog console_report 000464 scpu console_report 000466 ap console_report 000470 al console_report 000471 ec console_report 000472 personname console_report 000502 ending_time console_report 000504 starting_time console_report 000506 sys_log_ptr console_report 000516 esp console_report 000520 tsp console_report 000522 old_esp console_report 000524 old_tsp console_report 000526 tab_ptrs console_report 000530 tab_ptr console_report 000532 ttop console_report 000534 buffer console_report 000604 hr cv 000605 min cv 000606 xx cv 000607 ans cv 000640 text parse_line 000675 start parse_line THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_g_a alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry set_cs_eis index_cs_eis divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_dec_ date_time_ expand_pathname_ get_temp_segments_ get_wdir_ hcs_$chname_file hcs_$delentry_file hcs_$initiate hcs_$make_seg hcs_$terminate_noname hcs_$truncate_seg ioa_ ioa_$rsnnl release_temp_segments_ system_info_$titles unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$too_many_names error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000453 25 000461 138 000462 139 000471 140 000472 147 000473 148 000501 149 000503 151 000533 154 000534 155 000537 156 000605 157 000611 158 000614 159 000662 161 000666 162 000672 164 000676 165 000700 166 000715 167 000717 168 000731 169 000735 170 000751 171 000761 172 000763 175 000764 176 001014 177 001016 178 001043 180 001044 181 001107 183 001113 184 001117 185 001141 186 001166 187 001170 188 001173 190 001174 193 001176 194 001201 195 001210 196 001215 197 001224 198 001226 199 001241 200 001243 201 001245 203 001247 204 001250 205 001255 207 001256 208 001262 209 001272 210 001304 211 001315 212 001323 213 001326 214 001337 215 001343 216 001351 217 001354 218 001365 219 001371 220 001400 221 001410 222 001413 223 001424 224 001430 225 001431 226 001433 227 001435 228 001440 230 001443 232 001444 234 001453 236 001461 236 001477 237 001501 238 001504 239 001505 240 001507 241 001515 243 001516 244 001524 245 001534 246 001536 247 001540 250 001542 251 001554 252 001565 253 001613 254 001636 255 001643 256 001652 257 001655 258 001663 259 001666 260 001675 261 001700 262 001703 263 001706 265 001707 266 001711 267 001717 268 001720 269 001722 270 001733 271 001744 272 001747 273 001750 273 001766 274 001770 275 001773 276 001775 278 002033 280 002034 282 002035 283 002043 284 002052 285 002056 286 002060 287 002063 288 002065 289 002067 290 002071 292 002073 293 002100 295 002101 296 002112 297 002113 299 002114 300 002124 301 002127 302 002130 303 002133 304 002134 305 002136 306 002144 307 002145 308 002154 309 002162 310 002163 311 002164 312 002166 313 002170 314 002204 316 002205 317 002210 318 002211 319 002215 320 002226 321 002246 322 002250 323 002255 324 002264 326 002270 327 002272 328 002275 329 002277 332 002300 333 002323 334 002347 335 002363 336 002401 337 002417 338 002442 339 002456 340 002466 341 002507 342 002516 343 002540 344 002557 348 002670 349 002672 350 002752 351 002766 352 002776 353 003016 354 003035 355 003106 359 003241 360 003246 361 003250 363 003337 364 003344 365 003345 367 003347 368 003351 369 003352 372 003353 374 003354 375 003365 376 003376 377 003402 380 003403 385 003405 386 003414 387 003423 388 003454 389 003462 393 003470 395 003471 396 003473 397 003515 398 003563 399 003567 401 003617 404 003620 405 003622 406 003625 407 003631 408 003640 409 003650 411 003652 412 003704 413 003744 415 003746 418 003747 420 003750 421 003752 422 003774 423 004042 424 004046 426 004076 429 004077 430 004101 431 004104 432 004107 433 004111 434 004113 435 004115 436 004117 437 004121 438 004123 439 004131 440 004144 441 004151 442 004153 443 004155 444 004157 445 004161 446 004163 447 004165 448 004175 449 004210 450 004217 451 004224 452 004226 453 004230 454 004232 455 004234 456 004236 457 004243 459 004245 460 004277 461 004337 463 004341 466 004342 471 004344 472 004350 473 004352 474 004357 475 004365 476 004372 477 004377 478 004403 479 004414 480 004434 481 004435 492 004446 484 004447 486 004451 487 004500 488 004512 495 004520 497 004521 499 004524 501 004526 502 004532 503 004533 505 004534 506 004544 507 004553 508 004555 509 004557 510 004564 511 004566 512 004572 513 004573 514 004603 515 004621 516 004623 517 004627 519 004665 521 004666 522 004671 523 004674 524 004702 525 004711 526 004715 527 004717 528 004720 529 004721 530 004722 531 004723 533 004730 534 004735 535 004736 536 004740 537 004751 538 004753 539 004757 540 004760 541 004764 543 005022 545 005023 546 005026 547 005031 548 005034 549 005035 550 005041 551 005052 553 005056 555 005057 557 005060 558 005067 559 005077 560 005104 561 005107 562 005111 563 005113 564 005115 565 005124 566 005133 567 005141 569 005144 570 005146 572 005147 574 005150 576 005156 578 005207 ----------------------------------------------------------- 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