COMPILATION LISTING OF SEGMENT b_and_w Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/09/85 1106.1 mst Tue 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 /* format: style3 */ 11 12 b_and_w: 13 procedure options (variable); 14 15 /* produce "black and white" chart */ 16 17 /* Modified 1984-08-31 BIM for v3 usage totals */ 18 19 dcl dn char (168), 20 en char (32), 21 (l1, l2) char (120), 22 xx char (1), 23 datstr char (16), 24 datstr1 char (16), 25 fmts char (4) init ("from"), 26 c4 char (4), 27 (i, j, k, l, m, n) fixed bin, 28 time2 fixed bin (71), 29 ap ptr, 30 al fixed bin (21), 31 an fixed bin init (2), 32 bchr char (al) unaligned based (ap), 33 ec fixed bin (35), 34 xtotp ptr; 35 36 dcl (absda, mm, dd, yy, hh, mmm, ss, wkd, xwkd, xmm, xdd, xyy, shf) 37 fixed bin; 38 39 declare arg_count fixed bin; 40 41 dcl (addr, null, substr, index, unspec, length, bit, fixed, divide, mod, abs) 42 builtin; 43 44 dcl datebin_$revert entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (71)); 45 dcl datebin_ entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 46 fixed bin, fixed bin, fixed bin); 47 dcl system_info_$titles entry options (variable); 48 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 49 dcl expand_pathname_$add_suffix 50 entry (character (*), character (*), character (*), character (*), fixed binary (35)); 51 dcl ioa_ entry options (variable); 52 dcl ioa_$rsnnl entry options (variable); 53 dcl date_time_ entry (fixed bin (71), char (*)); 54 dcl com_err_$suppress_name 55 entry () options (variable); 56 dcl com_err_ entry options (variable); 57 58 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 59 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 60 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)) 61 ; 62 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 63 64 dcl error_table_$badopt fixed bin (35) ext; 65 dcl error_table_$unimplemented_version 66 fixed bin (35) ext; 67 68 dcl linex char (130) int static init ((130)"-"); 69 dcl format char (44) int static init ("|^4a|^16a|^16a|^16a|^16a|^16a|^16a|^16a|^4a|"); 70 dcl head char (132) int static 71 init ( 72 " Time Sunday^10x Monday^10x Tuesday^9x Wednesday^7x Thursday^8x Friday^10x Saturday^8x Time" 73 ); 74 75 declare cleanup condition; 76 declare ME char (32) init ("b_and_w") int static options (constant); 77 78 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 79 2 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 2 2 /* format: style2,^inddcls,idind32 */ 2 3 2 4 declare 1 terminate_file_switches based, 2 5 2 truncate bit (1) unaligned, 2 6 2 set_bc bit (1) unaligned, 2 7 2 terminate bit (1) unaligned, 2 8 2 force_write bit (1) unaligned, 2 9 2 delete bit (1) unaligned; 2 10 2 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 2 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 2 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 2 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 2 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 2 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 2 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 2 18 2 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 80 3 1 /* BEGIN INCLUDE FILE ... use_totals.incl.pl1 */ 3 2 /* format: style3 */ 3 3 3 4 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures. (UNCA) 3 5* Modified May 1980 by R. McDonald to include printer page charge, replaces cpu time in iod. (UNCA) 3 6* Modified July 1981 by C. Hornig to eliminate rs_number and master_proj from bin, 3 7* - split it into sub-structures for convenience in conversion, 3 8* - and make version a character string. 3 9* Modified August 1981 by T. Casey to put back rs_number in bin. 3 10* Modified 1984-08-31 BIM for half-year billing cycles, which is all 3 11* that will fit in a segment. 3 12**/ 3 13 3 14 dcl use_totals_ptr pointer; 3 15 dcl 1 use_totals based (use_totals_ptr) aligned, 3 16 2 meters, 3 17 3 generated fixed bin (71), /* Time usage data generated. */ 3 18 3 period_begin fixed bin (71), /* Earliest time covered */ 3 19 3 period_end fixed bin (71), /* Latest time */ 3 20 3 disk_available 3 21 fixed bin (35), /* Total disk capacity in MULT partition. */ 3 22 3 disk_left fixed bin (35), /* Total disk unused.. */ 3 23 3 version char (8), /* revision of this include file */ 3 24 3 pad1 (6) fixed bin, /* Gross system statistics, determined from answering service meters. */ 3 25 3 uptime fixed bin (71), /* Time system has been on the air. */ 3 26 3 sys_starts fixed bin, /* Number of bootloads */ 3 27 3 sys_crash fixed bin, /* Number of crashes */ 3 28 3 cpu_avail fixed bin (71), /* CPU time available. >= uptime by two-cpu time */ 3 29 3 idle fixed bin (71), /* Total idle for all causes */ 3 30 3 initializer fixed bin (71), /* Initializer usage */ 3 31 3 total_cpu fixed bin (71), /* Total VIRTUAL cpu from bins - so get overhead */ 3 32 3 zidle fixed bin (71), /* Total zero idle. */ 3 33 3 mpidle fixed bin (71), /* Total MP idle */ 3 34 3 pad2 (6) fixed bin (71), /* variables used while reading answering service meters */ 3 35 3 zidle_since_boot 3 36 fixed bin (71), /* Zero idle since boot */ 3 37 3 mpidle_since_boot 3 38 fixed bin (71), /* MP idle since boot */ 3 39 3 time_last_boot 3 40 fixed bin (71), /* Time of last bootload */ 3 41 3 time_last_sample 3 42 fixed bin (71), /* Time of last 15-minute sample */ 3 43 3 uptime_since_boot 3 44 fixed bin (71), /* Time system on air since last boot */ 3 45 3 cpu_avail_since_boot 3 46 fixed bin (71), /* CPU available since boot */ 3 47 3 idle_since_boot 3 48 fixed bin (71), /* Idle time since boot */ 3 49 3 last_sysid char (8), /* Current system ID */ 3 50 3 n_users_on fixed bin, /* Users on at last sample */ 3 51 3 n_stat_gaps fixed bin, /* Number of times we missed getting all data */ 3 52 /* Statistics by day, for black and white chart. */ 3 53 2 b_and_w, 3 54 3 origin fixed bin (71), /* Base time for slot 1 */ 3 55 3 max_day_log fixed bin, /* Highest used day. */ 3 56 3 max_qhour fixed bin, /* Highest quarter in highest day */ 3 57 3 daylog (190), /* array of days. */ 3 58 4 qh (96), /* Quarter-hour within the day. */ 3 59 5 time fixed bin (71), /* Time of sample. */ 3 60 5 sysid char (8), /* System ID */ 3 61 5 dump_number 3 62 fixed (18) unsigned unaligned, 3 63 5 flags unaligned, 3 64 6 shutdown 3 65 bit (1), 3 66 6 pad bit (17), 3 67 5 cpu fixed bin (5) unsigned unaligned, 3 68 5 nunits fixed bin (13) unsigned unaligned, 3 69 /* Number of load units */ 3 70 5 kmem fixed bin (18) unsigned unaligned, 3 71 5 starttime fixed bin (71), /* Boot time */ 3 72 5 crashtime fixed bin (71), /* Time of crash */ 3 73 /**** User-classification info, loaded once a month. defines usage bins. bin 1 is always "other" */ 3 74 2 bins, 3 75 3 ntypes fixed bin, /* Number of valid bins */ 3 76 3 n_select fixed bin, /* Number of selectors */ 3 77 3 bin_data (3258) aligned, 3 78 4 select_proj char (12) aligned, /* Project ID - same number as in sat */ 3 79 4 select_ut fixed bin, /* Bin number for the project */ 3 80 /* Usage bins for each usage type. Determined from summarizing the PDT's. 3 81* * Note - bin "use_totals.ut (use_totals.ntypes+1)" is a zeroed bin which can be used to represent non-existent bins. 3 82* * e.g. Last month's use_totals seg has a bin that has been removed from this month's use_totals seg. 3 83**/ 3 84 3 ut (301), /* array usage by project type */ 3 85 4 utype char (24), /* Label for usage bin */ 3 86 4 dollar_charge 3 87 float bin, /* total dollars spent this month */ 3 88 4 logins fixed bin, /* number of logins */ 3 89 4 crashes fixed bin, /* sessions abnormally terminated */ 3 90 4 nproj fixed bin, /* projects in this class */ 3 91 4 nusers fixed bin, /* users in this class */ 3 92 4 disk_psec fixed bin (71), /* Total page-seconds */ 3 93 4 disk_quota fixed bin (35), /* Total quota */ 3 94 4 disk_usage fixed bin (35), /* Disk occupancy */ 3 95 4 misc float bin, /* Miscellaneous charges */ 3 96 4 flag char (4), /* paying categories = "$" */ 3 97 4 flag1 char (4), /* used to control reporting of categories */ 3 98 4 pad1a (3) fixed bin (35), 3 99 4 rs_number fixed bin, /* rate structure number for all projects in this bin */ 3 100 4 pad1b (14) fixed bin (35), 3 101 4 interactive (0:7), /* interactive use, shifts 0-7 */ 3 102 5 charge float bin, /* total dollar charge this shift */ 3 103 5 pad1 fixed bin, 3 104 5 cpu fixed bin (71), /* cpu usage in microseconds */ 3 105 5 core fixed bin (71), /* core demand in page-microseconds */ 3 106 5 connect fixed bin (71), /* total console time in microseconds */ 3 107 5 io_ops fixed bin (71), /* total terminal i/o ops */ 3 108 4 absentee (4), /* absentee use, queues 1-4 */ 3 109 5 charge float bin, /* dollar charge this queue */ 3 110 5 jobs fixed bin, /* number of jobs submitted */ 3 111 5 cpu fixed bin (71), /* total cpu time in microseconds */ 3 112 5 memory fixed bin (71), /* total memory usage in mu */ 3 113 4 iod (4), /* io daemon use, queues 1-4 */ 3 114 5 charge float bin, /* dollar charge this queue */ 3 115 5 pieces fixed bin, /* pieces of output requested */ 3 116 5 pad2 fixed bin, 3 117 5 pages fixed bin, /* number of pages output */ 3 118 5 lines fixed bin (71), /* total record count of output */ 3 119 4 devices (16) float bin; /* device charges */ 3 120 3 121 dcl USE_TOTALS_VERSION_2 3 122 char (8) static options (constant) initial ("usetot_2"); 3 123 dcl USE_TOTALS_VERSION_3 3 124 char (8) static options (constant) initial ("usetot_3"); 3 125 3 126 /* END INCLUDE FILE ... use_totals.incl.pl1 */ 81 82 83 84 use_totals_ptr = null (); 85 on cleanup call clean_up; 86 call cu_$arg_count (arg_count, ec); 87 if ec ^= 0 88 then do; 89 call com_err_ (ec, ME); 90 return; 91 end; 92 if arg_count = 0 93 then do; 94 call com_err_$suppress_name (0, ME, "Usage: b_and_w USE_TOTALS"); 95 return; 96 end; 97 call cu_$arg_ptr (1, ap, al, (0)); 98 call expand_pathname_$add_suffix (bchr, "use_totals", dn, en, ec); 99 if ec ^= 0 100 then do; 101 call com_err_ (ec, ME, "Invalid use totals pathname ^a.", bchr); 102 return; 103 end; 104 call initiate_file_ (dn, en, R_ACCESS, use_totals_ptr, (0), ec); 105 if ec ^= 0 106 then do; 107 call com_err_ (ec, ME, "^a", pathname_ (dn, en)); 108 return; 109 end; 110 111 if use_totals.version ^= USE_TOTALS_VERSION_3 112 then 113 UT_VERSION_ERROR: 114 do; 115 call com_err_ (error_table_$unimplemented_version, ME, "^a is not version 3.", pathname_ (dn, en)); 116 go to ERROR; 117 end; 118 119 call datebin_ (use_totals.time_last_sample, absda, mm, dd, yy, hh, mmm, ss, wkd, shf); 120 if wkd = 7 121 then wkd = 0; 122 123 call datebin_$revert (mm, dd - wkd, yy, 0, 0, 0, time2); 124 call date_time_ (time2, datstr1); 125 call date_time_ (use_totals.time_last_sample, datstr); 126 127 do an = 2 to arg_count; 128 call cu_$arg_ptr (an, ap, al, (0)); 129 if bchr = "-week" 130 then do; 131 call datebin_$revert (mm, dd - wkd - 1, yy, 23, 59, 0, time2); 132 /* 2359 saturday */ 133 call date_time_ (time2, datstr); /* Change title to last date. */ 134 datstr1 = "last week"; 135 fmts = "for"; 136 wkd = wkd + 7; 137 end; 138 else if index (bchr, "-") = 1 139 then do; 140 call com_err_ (error_table_$badopt, ME, "^a", bchr); 141 go to ERROR; 142 end; 143 else do; 144 call expand_pathname_$add_suffix (bchr, "use_totals", dn, en, ec); 145 if ec ^= 0 146 then do; 147 call com_err_ (ec, ME, "Invalid second use totals pathname ^a", bchr); 148 go to ERROR; 149 end; 150 call initiate_file_ (dn, en, R_ACCESS, xtotp, (0), ec); 151 if ec ^= 0 152 then do; 153 call com_err_ (ec, ME, "^a", pathname_ (dn, en)); 154 go to ERROR; 155 end; 156 call datebin_ (xtotp -> use_totals.time_last_sample, absda, xmm, xdd, xyy, hh, mmm, ss, xwkd, 157 shf); 158 if xwkd = 7 159 then xwkd = 0; 160 if xtotp -> use_totals.version ^= USE_TOTALS_VERSION_3 161 then goto UT_VERSION_ERROR; 162 end; 163 end; 164 165 call system_info_$titles (xx, xx, l1, l2); 166 call ioa_ ("^|^-^-^a^/^/^-^-^-^a^/", l1, l2); 167 call ioa_ ("^-^-Multics availability ^a ^a to ^a^/", fmts, datstr1, datstr); 168 call ioa_ (head); 169 call ioa_ (linex); 170 do i = 0 to 95; 171 c4 = timef (i); 172 if c4 = "0800" 173 then call ioa_ (linex); 174 else if c4 = "1200" 175 then call ioa_ ("^|"); 176 else if c4 = "1800" 177 then call ioa_ (linex); 178 call ioa_ (format, c4, block (i, 0), block (i, 1), block (i, 2), block (i, 3), block (i, 4), block (i, 5), 179 block (i, 6), c4); 180 end; 181 call ioa_ (linex); 182 183 ERROR: 184 call clean_up; 185 return; 186 187 188 timef: 189 proc (ii) returns (char (4)); 190 191 dcl ii fixed bin; 192 193 dcl t fixed bin, 194 tstr char (4), 195 ti fixed bin; 196 197 t = divide (ii, 4, 17, 0); 198 call ioa_$rsnnl ("^2d00", tstr, ti, t); 199 if substr (tstr, 1, 1) = " " 200 then substr (tstr, 1, 1) = "0"; 201 t = mod (ii, 4); 202 if t = 0 203 then ; 204 else if t = 1 205 then tstr = ""; 206 else if t = 2 207 then substr (tstr, 3, 2) = "30"; 208 else if t = 3 209 then tstr = ""; 210 return (tstr); 211 212 end timef; 213 214 block: 215 proc (qhour, dow) returns (char (16)); /* This procedure returns the data for a particular time */ 216 217 dcl (qhour, dow) fixed bin; /* INPUT args: quarter-hour and day-of-week */ 218 219 dcl answer char (16); /* Assembly area for answer */ 220 dcl (ix, xix) fixed bin, /* Indices in this (and last) month's data */ 221 junk fixed bin, 222 q fixed bin; /* One plus quarter-hour */ 223 224 q = qhour + 1; 225 ix = use_totals.max_day_log + dow - wkd; /* Get "day number" in use_totals database. */ 226 if ix > use_totals.max_day_log 227 then answer = ""; /* Return blanks for future */ 228 else if (ix = use_totals.max_day_log) & (q > use_totals.max_qhour) 229 then answer = ""; 230 else if ix <= 1 231 then do; /* First day of month, or before? */ 232 xix = xtotp -> use_totals.max_day_log + dow - xwkd; 233 /* YES. Use last month. */ 234 if xix > xtotp -> use_totals.max_day_log 235 then answer = ""; /* GAP here */ 236 else if (xix = xtotp -> use_totals.max_day_log) & (q > xtotp -> use_totals.max_qhour) 237 then go to zurk; /* Falls in this month after all. */ 238 else if xix <= 0 239 then answer = ""; /* Shouldn't happen. Off begin of prev month. */ 240 else if xtotp -> use_totals.daylog (xix).qh (q).dump_number > 0 241 then answer = " " || ltrim (char (xtotp -> use_totals.daylog (xix).qh (q).dump_number)); 242 else if xtotp -> use_totals.daylog (xix).qh (q).shutdown 243 then answer = " shutdown"; 244 else if xtotp -> use_totals.daylog (xix).qh (q).cpu = 0 245 then answer = " DOWN"; 246 else call ioa_$rsnnl ("^6.1f ^1d ^3d", answer, junk, 247 xtotp -> use_totals.daylog (xix).qh (q).nunits / 10e0, 248 xtotp -> use_totals.daylog (xix).qh (q).cpu, xtotp -> use_totals.daylog (xix).qh (q).kmem); 249 250 return (answer); /* Found in prev month. */ 251 end; /* .. preceding is genuine bruteforce solution. */ 252 else /* Must be in this month. */ 253 zurk: 254 if use_totals.daylog (ix).qh (q).dump_number > 0 255 /* See if ERF number is set, indicate crash */ 256 then answer = " " || ltrim (char (use_totals.daylog (ix).qh (q).dump_number)); 257 else if use_totals.daylog (ix).qh (q).shutdown 258 then answer = " shutdown"; 259 else if use_totals.daylog (ix).qh (q).cpu = 0 260 then answer = " DOWN"; 261 else call ioa_$rsnnl ("^6.1f ^1d ^3d", answer, junk, use_totals.daylog (ix).qh (q).nunits / 10e0, 262 use_totals.daylog (ix).qh (q).cpu, use_totals.daylog (ix).qh (q).kmem); 263 264 return (answer); /* puff puff */ 265 266 end block; 267 268 clean_up: 269 procedure; 270 271 if use_totals_ptr ^= null () 272 then call terminate_file_ (use_totals_ptr, (0), TERM_FILE_TERM, (0)); 273 if xtotp ^= null () 274 then call terminate_file_ (xtotp, (0), TERM_FILE_TERM, (0)); 275 return; 276 end clean_up; 277 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1133.4 b_and_w.pl1 >spec>on>41-15>b_and_w.pl1 79 1 04/08/85 1113.3 access_mode_values.incl.pl1 >spec>on>41-15>access_mode_values.incl.pl1 80 2 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 81 3 12/07/84 1102.2 use_totals.incl.pl1 >ldd>include>use_totals.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. ME 000004 constant char(32) initial unaligned dcl 76 set ref 89* 94* 101* 107* 115* 140* 147* 153* R_ACCESS 000003 constant bit(3) initial unaligned dcl 1-11 set ref 104* 150* TERM_FILE_TERM 000002 constant bit(3) initial unaligned dcl 2-14 set ref 271* 273* USE_TOTALS_VERSION_3 000000 constant char(8) initial unaligned dcl 3-123 ref 111 160 absda 000304 automatic fixed bin(17,0) dcl 36 set ref 119* 156* al 000276 automatic fixed bin(21,0) dcl 19 set ref 97* 98 98 101 101 128* 129 138 140 140 144 144 147 147 an 000277 automatic fixed bin(17,0) initial dcl 19 set ref 19* 127* 128* answer 000354 automatic char(16) unaligned dcl 219 set ref 226* 228* 234* 238* 240* 242* 244* 246* 250 252* 257* 259* 261* 264 ap 000274 automatic pointer dcl 19 set ref 97* 98 101 128* 129 138 140 144 147 arg_count 000321 automatic fixed bin(17,0) dcl 39 set ref 86* 92 127 b_and_w 76 based structure level 2 dcl 3-15 bchr based char unaligned dcl 19 set ref 98* 101* 129 138 140* 144* 147* c4 000270 automatic char(4) unaligned dcl 19 set ref 171* 172 174 176 178* 178* cleanup 000322 stack reference condition dcl 75 ref 85 com_err_ 000150 constant entry external dcl 56 ref 89 101 107 115 140 147 153 com_err_$suppress_name 000146 constant entry external dcl 54 ref 94 cpu 107 based fixed bin(5,0) array level 5 packed unsigned unaligned dcl 3-15 set ref 244 246* 259 261* cu_$arg_count 000154 constant entry external dcl 59 ref 86 cu_$arg_ptr 000134 constant entry external dcl 48 ref 97 128 date_time_ 000144 constant entry external dcl 53 ref 124 125 133 datebin_ 000130 constant entry external dcl 45 ref 119 156 datebin_$revert 000126 constant entry external dcl 44 ref 123 131 datstr 000257 automatic char(16) unaligned dcl 19 set ref 125* 133* 167* datstr1 000263 automatic char(16) unaligned dcl 19 set ref 124* 134* 167* daylog 102 based structure array level 3 dcl 3-15 dd 000306 automatic fixed bin(17,0) dcl 36 set ref 119* 123 131 divide builtin function dcl 41 ref 197 dn 000100 automatic char(168) unaligned dcl 19 set ref 98* 104* 107* 107* 115* 115* 144* 150* 153* 153* dow parameter fixed bin(17,0) dcl 217 ref 214 225 232 dump_number 106 based fixed bin(18,0) array level 5 packed unsigned unaligned dcl 3-15 ref 240 240 252 252 ec 000300 automatic fixed bin(35,0) dcl 19 set ref 86* 87 89* 98* 99 101* 104* 105 107* 144* 145 147* 150* 151 153* en 000152 automatic char(32) unaligned dcl 19 set ref 98* 104* 107* 107* 115* 115* 144* 150* 153* 153* error_table_$badopt 000162 external static fixed bin(35,0) dcl 64 set ref 140* error_table_$unimplemented_version 000164 external static fixed bin(35,0) dcl 65 set ref 115* expand_pathname_$add_suffix 000136 constant entry external dcl 49 ref 98 144 flags 106(18) based structure array level 5 packed unaligned dcl 3-15 fmts 000267 automatic char(4) initial unaligned dcl 19 set ref 19* 135* 167* format 000051 internal static char(44) initial unaligned dcl 69 set ref 178* head 000064 internal static char(132) initial unaligned dcl 70 set ref 168* hh 000310 automatic fixed bin(17,0) dcl 36 set ref 119* 156* i 000271 automatic fixed bin(17,0) dcl 19 set ref 170* 171* 178* 178* 178* 178* 178* 178* 178* 178* 178* 178* 178* 178* 178* 178* ii parameter fixed bin(17,0) dcl 191 ref 188 197 201 index builtin function dcl 41 ref 138 initiate_file_ 000156 constant entry external dcl 60 ref 104 150 ioa_ 000140 constant entry external dcl 51 ref 166 167 168 169 172 174 176 178 181 ioa_$rsnnl 000142 constant entry external dcl 52 ref 198 246 261 ix 000360 automatic fixed bin(17,0) dcl 220 set ref 225* 226 228 230 252 252 257 259 261 261 261 junk 000362 automatic fixed bin(17,0) dcl 220 set ref 246* 261* kmem 107(18) based fixed bin(18,0) array level 5 packed unsigned unaligned dcl 3-15 set ref 246* 261* l1 000162 automatic char(120) unaligned dcl 19 set ref 165* 166* l2 000220 automatic char(120) unaligned dcl 19 set ref 165* 166* linex 000010 internal static char(130) initial unaligned dcl 68 set ref 169* 172* 176* 181* max_day_log 100 based fixed bin(17,0) level 3 dcl 3-15 ref 225 226 228 232 234 236 max_qhour 101 based fixed bin(17,0) level 3 dcl 3-15 ref 228 236 meters based structure level 2 dcl 3-15 mm 000305 automatic fixed bin(17,0) dcl 36 set ref 119* 123* 131* mmm 000311 automatic fixed bin(17,0) dcl 36 set ref 119* 156* mod builtin function dcl 41 ref 201 null builtin function dcl 41 ref 84 271 273 nunits 107(05) based fixed bin(13,0) array level 5 packed unsigned unaligned dcl 3-15 ref 246 261 pathname_ 000152 constant entry external dcl 58 ref 107 107 115 115 153 153 q 000363 automatic fixed bin(17,0) dcl 220 set ref 224* 228 236 240 240 242 244 246 246 246 252 252 257 259 261 261 261 qh 102 based structure array level 4 dcl 3-15 qhour parameter fixed bin(17,0) dcl 217 ref 214 224 shf 000320 automatic fixed bin(17,0) dcl 36 set ref 119* 156* shutdown 106(18) based bit(1) array level 6 packed unaligned dcl 3-15 ref 242 257 ss 000312 automatic fixed bin(17,0) dcl 36 set ref 119* 156* substr builtin function dcl 41 set ref 199 199* 206* system_info_$titles 000132 constant entry external dcl 47 ref 165 t 000342 automatic fixed bin(17,0) dcl 193 set ref 197* 198* 201* 202 204 206 208 terminate_file_ 000160 constant entry external dcl 62 ref 271 273 ti 000344 automatic fixed bin(17,0) dcl 193 set ref 198* time2 000272 automatic fixed bin(71,0) dcl 19 set ref 123* 124* 131* 133* time_last_sample 62 based fixed bin(71,0) level 3 dcl 3-15 set ref 119* 125* 156* tstr 000343 automatic char(4) unaligned dcl 193 set ref 198* 199 199* 204* 206* 208* 210 use_totals based structure level 1 dcl 3-15 use_totals_ptr 000330 automatic pointer dcl 3-14 set ref 84* 104* 111 119 125 225 226 228 228 252 252 257 259 261 261 261 271 271* version 10 based char(8) level 3 dcl 3-15 ref 111 160 wkd 000313 automatic fixed bin(17,0) dcl 36 set ref 119* 120 120* 123 131 136* 136 225 xdd 000316 automatic fixed bin(17,0) dcl 36 set ref 156* xix 000361 automatic fixed bin(17,0) dcl 220 set ref 232* 234 236 238 240 240 242 244 246 246 246 xmm 000315 automatic fixed bin(17,0) dcl 36 set ref 156* xtotp 000302 automatic pointer dcl 19 set ref 150* 156 160 232 234 236 236 240 240 242 244 246 246 246 273 273* xwkd 000314 automatic fixed bin(17,0) dcl 36 set ref 156* 158 158* 232 xx 000256 automatic char(1) unaligned dcl 19 set ref 165* 165* xyy 000317 automatic fixed bin(17,0) dcl 36 set ref 156* yy 000307 automatic fixed bin(17,0) dcl 36 set ref 119* 123* 131* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 2-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 2-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 2-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 2-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 2-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 2-15 USE_TOTALS_VERSION_2 internal static char(8) initial unaligned dcl 3-121 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 abs builtin function dcl 41 addr builtin function dcl 41 bit builtin function dcl 41 fixed builtin function dcl 41 j automatic fixed bin(17,0) dcl 19 k automatic fixed bin(17,0) dcl 19 l automatic fixed bin(17,0) dcl 19 length builtin function dcl 41 m automatic fixed bin(17,0) dcl 19 n automatic fixed bin(17,0) dcl 19 terminate_file_switches based structure level 1 packed unaligned dcl 2-4 unspec builtin function dcl 41 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR 001703 constant label dcl 183 ref 116 141 148 154 UT_VERSION_ERROR 000543 constant label dcl 111 ref 160 b_and_w 000171 constant entry external dcl 12 block 002003 constant entry internal dcl 214 ref 178 178 178 178 178 178 178 178 178 178 178 178 178 178 clean_up 002431 constant entry internal dcl 268 ref 85 183 timef 001710 constant entry internal dcl 188 ref 171 zurk 002245 constant label dcl 252 ref 236 NAMES DECLARED BY CONTEXT OR IMPLICATION. char builtin function ref 240 252 ltrim builtin function ref 240 252 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3044 3232 2627 3054 Length 3512 2627 166 244 215 116 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME b_and_w 474 external procedure is an external procedure. on unit on line 85 64 on unit timef internal procedure shares stack frame of external procedure b_and_w. block internal procedure shares stack frame of external procedure b_and_w. clean_up 84 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 linex b_and_w 000051 format b_and_w 000064 head b_and_w STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME b_and_w 000100 dn b_and_w 000152 en b_and_w 000162 l1 b_and_w 000220 l2 b_and_w 000256 xx b_and_w 000257 datstr b_and_w 000263 datstr1 b_and_w 000267 fmts b_and_w 000270 c4 b_and_w 000271 i b_and_w 000272 time2 b_and_w 000274 ap b_and_w 000276 al b_and_w 000277 an b_and_w 000300 ec b_and_w 000302 xtotp b_and_w 000304 absda b_and_w 000305 mm b_and_w 000306 dd b_and_w 000307 yy b_and_w 000310 hh b_and_w 000311 mmm b_and_w 000312 ss b_and_w 000313 wkd b_and_w 000314 xwkd b_and_w 000315 xmm b_and_w 000316 xdd b_and_w 000317 xyy b_and_w 000320 shf b_and_w 000321 arg_count b_and_w 000330 use_totals_ptr b_and_w 000342 t timef 000343 tstr timef 000344 ti timef 000354 answer block 000360 ix block 000361 xix block 000362 junk block 000363 q block THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return mod_fx1 enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name cu_$arg_count cu_$arg_ptr date_time_ datebin_ datebin_$revert expand_pathname_$add_suffix initiate_file_ ioa_ ioa_$rsnnl pathname_ system_info_$titles terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000170 19 000176 84 000202 85 000204 86 000226 87 000237 89 000241 90 000256 92 000257 94 000261 95 000306 97 000307 98 000327 99 000370 101 000372 102 000425 104 000426 105 000464 107 000466 108 000535 111 000536 115 000543 116 000616 119 000617 120 000650 123 000654 124 000705 125 000722 127 000740 128 000747 129 000765 131 000773 133 001027 134 001044 135 001047 136 001051 137 001053 138 001054 140 001066 141 001120 144 001121 145 001162 147 001164 148 001217 150 001220 151 001256 153 001260 154 001327 156 001330 158 001362 160 001366 163 001373 165 001375 166 001417 167 001442 168 001471 169 001502 170 001513 171 001517 172 001521 174 001536 176 001554 178 001567 180 001670 181 001672 183 001703 185 001707 188 001710 197 001712 198 001715 199 001743 201 001751 202 001756 204 001760 206 001765 208 001772 210 001776 214 002003 224 002005 225 002010 226 002015 228 002023 230 002033 232 002036 234 002043 236 002051 238 002055 240 002063 242 002146 244 002157 246 002166 250 002237 252 002245 257 002331 259 002342 261 002351 264 002422 268 002430 271 002436 273 002471 275 002525 ----------------------------------------------------------- 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