COMPILATION LISTING OF SEGMENT datebin_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1638.0 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 11 datebin_: 12 procedure (Clock, Absda, Mo, Da, Yr, Hr, Min, Sec, Wkday, S) options (separate_static); 13 14 /* DATEBIN_ - utility functions for date conversion. 15* 16* Keith Willis July 1971 17* 18* Modified April 1976 by T. Casey, to: 19* * check the shift information that is now kept in whotab, as well as that in installation_parms; 20* * initiate whotab and installation_parms in an internal procedure and complain if unable to; 21* * add a test entry point to change sysdir and null ip and whoptr, forcing initiation of new tables. 22* * (the latter two features copied from system_info_) 23* 24* Modified March 1979 by G. Palter, to: 25* * fix the bug in the revert entry wherein any date in Jan or Feb which 26* * was beyond the end of Feb (eg: 2/29/79) was converted incorrectly. 27* * This bug caused users with a daily limit to not be allowed to login 28* * on the last day of February each year. 29* 30* Largely rewritten April 1980 by C. Hornig for per-process time zones. 31* 32* Modified July 1984 by Jim Lippard to use the system time zone when 33* calculating the system shift. 34* 35* Modified Dec 1984 by JAFalksen to return the correct value for Absda 36**/ 37 38 dcl (Shift1, Shift2, Dayr_clk) fixed bin, /* parameters */ 39 (Mo, Da, Yr, Hr, Min, Sec) fixed bin, 40 (Absda, Wkday, S) fixed bin, 41 (Dayr_mo, Datofirst) fixed bin, 42 (Clock, Oldclock) fixed bin (71); 43 44 dcl sub_err_ entry options (variable); 45 dcl decode_clock_value_$all 46 entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (71), 47 fixed bin, char (3), fixed bin, fixed bin, fixed bin (35)); 48 dcl encode_clock_value_ 49 entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (71), fixed bin, char (3), 50 fixed bin (71), fixed bin (35)); 51 dcl encode_clock_value_$offsets 52 entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (71), 53 fixed bin, char (3), fixed bin (71), fixed bin (35)); 54 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 55 dcl sys_info$time_zone ext char (3); 56 57 dcl (ip, whoptr) ptr int static init (null); 58 dcl sysdir char (168) int static init (">system_control_dir"); 59 60 dcl shift_from_whotab bit aligned; 61 dcl ec fixed bin (35); 62 dcl (clk, save_clock) fixed bin (71); 63 dcl (shift, day, month, year, hour, minute, second, day_of_week, abs_date, day_of_year) fixed bin; 64 dcl (sys_hour, sys_minute, sys_day_of_week) fixed bin; 65 dcl microsecond fixed bin (71); 66 67 dcl (binary, clock, divide, mod, null) builtin; 68 69 /* ======================================================= */ 70 71 /* ENTRY: datebin_ (clock, absda, mo, da, yr, hr, min, sec, wkday, s); 72* 73* clock (fixed bin (71)) is the time to be broken down (input) 74* absda fixed bin is the number of days since 1/1/1901 (output) 75* mo fixed bin is the month (output) 76* da fixed bin is the day of the month (output) 77* yr fixed bin is the year (01-99) (output) 78* hr fixed bin is the hour (0-23) (output) 79* min fixed bin is the minute (0-59) (output) 80* sec fixed bin is the second (0-59) (output) 81* wkday fixed bin is the day of the week (monday = 1, Sunday = 7) (output) 82* s fixed bin is the shift (from installation_parms) (0-7) (output) 83**/ 84 85 Absda, Mo, Da, Yr, Hr, Min, Sec, Wkday, S = 0; /* in case error */ 86 call decode_clock (Clock); 87 call calc_shift; 88 Absda = abs_date; 89 Mo = month; 90 Da = day; 91 Yr = year; 92 Hr = hour; 93 Min = minute; 94 Sec = second; 95 Wkday = day_of_week; 96 S = shift; 97 return_to_caller: 98 return; 99 100 /* ------------------------------------------------------- */ 101 102 /* ENTRY: datebin_$shift (Clock, s); 103* 104* clock (fixed bin (71)) is the clock reading (input) 105* s (fixed bin) is the shift for that clock reading (output) */ 106 107 datebin_$shift: 108 entry (Clock, S); 109 110 S = -1; 111 call decode_clock (Clock); 112 call calc_shift; 113 S = shift; 114 return; 115 116 /* ------------------------------------------------------- */ 117 118 /* ENTRY: datebin_$wkday(clock,wkday); 119* 120* clock(fixed bin(71)) is the number of microseconds since 000 GMT Jan. 1,1901(input) 121* wkday(fixed bin) is the current day of the week(Monday=1 and Sunday=7) (output) 122**/ 123 124 wkday: 125 entry (Clock, Wkday); 126 127 Wkday = 0; 128 call decode_clock (Clock); 129 Wkday = day_of_week; 130 return; 131 132 /* ------------------------------------------------------- */ 133 134 /* Entry: datebin_$time (clock, hr, min, sec); 135* 136* Clock (fixed bin (71)) is the number of microseconds since 000 GMT Jan. 1,1901 (input) 137* hr (fixed bin) is the current hour (output) 138* min (fixed bin) is the current minute (output) 139* sec (fixed bin) is the current second (output) 140**/ 141 142 time: 143 entry (Clock, Hr, Min, Sec); 144 145 Hr, Min, Sec = -1; /* in case error */ 146 call decode_clock (Clock); 147 Hr = hour; 148 Min = minute; 149 Sec = second; 150 return; 151 152 /* ------------------------------------------------------- */ 153 154 /* ENTRY: datebin_$dayr_clk (clock, dayr_clk); 155* 156* clock (fixed bin (71)) is the number of microseconds since 000 GMT Jan. 1,1901 (input) 157* dayr_clk (fixed bin) is the day of current year since Jan. 1 (output) 158**/ 159 160 dayr_clk: 161 entry (Clock, Dayr_clk); 162 163 Dayr_clk = -1; /* in case error */ 164 call decode_clock (Clock); 165 Dayr_clk = day_of_year; 166 return; 167 168 /* ------------------------------------------------------- */ 169 170 /* ENTRY: datebin_$revert (mo, da, yr, min, sec, clock); 171* 172* where all arguments are defined as above and first 5 are input while the last is output */ 173 174 revert: 175 entry (Mo, Da, Yr, Hr, Min, Sec, Clock); /* build a clock reading given the month day year etc */ 176 177 call encode_clock_value_ (1, 2, 1901, 0, 0, 0, 0, 0, (""), save_clock, ec); 178 call encode_clock_value_$offsets (save_clock, Mo - 1, Da - 2, Yr - 1901, Hr, Min, Sec, 0, 0, (""), Clock, ec); 179 if ec ^= 0 then Clock = 0; 180 return; 181 182 /* ------------------------------------------------------- */ 183 184 /* ENTRY: datebin_$revertabs (absda, clock); 185* 186* absda (fixed bin) is the number of days since Jan.1, 1901 (input) 187* clock (fixed bin (71)) is the number of microseconds since Jan.1, 1901 00 GMT (output) */ 188 189 revertabs: 190 entry (Absda, Clock); /* build a clock reading given the absolute day */ 191 192 Clock = 0; 193 call encode_clock_value_ (12, 31, 1900, 0, 0, 0, 0, 0, "", save_clock, ec); 194 call encode_clock_value_$offsets (save_clock, 0, Absda, 0, 0, 0, 0, 0, 0, "", Clock, ec); 195 return; 196 197 /* ------------------------------------------------------- */ 198 199 /* ENTRY: datebin_$clockathr (hr, clock); 200* 201* hr (fixed bin) is the hour (local zone) that the clock is to be set to (input) 202* clock (fixed bin (71)) is the number of microseconds since 000 GMT Jan.1, 1901 (output) */ 203 204 clockathr: 205 entry (Hr, Clock); /* return a clock for hour=hr following clock now */ 206 207 call find_midnight (clock () - Hr * 3600000000); 208 Clock = clk + 3600000000 * (24 + Hr); 209 return; 210 211 /* ------------------------------------------------------- */ 212 213 /* ENTRY: datebin_$datofirst (yr, datofirst); 214* 215* yr (fixed bin) is the year (input) 216* datofirst (fixed bin) is the number of days from Jan.1,1901 up to but not including Jan.1 of "yr" (output) */ 217 218 datofirst: 219 entry (Yr, Datofirst); 220 221 call encode_clock_value_ (1, 1, Yr, 0, 0, 0, 0, 0, (""), clk, ec); 222 call decode_clock (clk); 223 Datofirst = abs_date; 224 return; 225 226 /* ------------------------------------------------------- */ 227 228 /* ENTRY: datebin_$dayr_mo (mo, da, yr, dayr_mo); 229* 230* mo (fixed bin) is the month (input) 231* da (fixed bin) is the day of the month (input) 232* yr (fixed bin) is the year month and day belong to (input) 233* dayr_mo (fixed bin) is the day of the year =1-366 (output) */ 234 235 dayr_mo: 236 entry (Mo, Da, Yr, Dayr_mo); 237 238 call encode_clock_value_ (Mo, Da, Yr, 0, 0, 0, 0, 0, (""), clk, ec); 239 call decode_clock (clk); 240 Dayr_mo = day_of_year; 241 return; 242 243 /* ------------------------------------------------------- */ 244 245 /* ENTRY: datebin_$last_midnight (clock); 246* 247* clock (fixed bin (71)) is the clock reading at midnight before "now" */ 248 249 last_midnight: 250 entry (Clock); 251 252 call find_midnight (clock ()); 253 Clock = clk; 254 return; 255 256 /* ------------------------------------------------------- */ 257 258 /* ENTRY: datebin_$this_midnight (clock); 259* 260* clock (fixed bin (71)) is the clock reading as it will be at midnight tonight (output) */ 261 262 this_midnight: 263 entry (Clock); 264 265 call find_midnight (clock ()); 266 Clock = clk + 86400000000; 267 return; 268 269 /* ------------------------------------------------------- */ 270 271 /* ENTRY: datebin_$preceding_midnight (oldclock, clock); 272* 273* oldclock (fixed bin (71)) is a calendar clock reading (input) 274* clock (fixed bin (71)) is a clock reading for midnight of the preceding day (output) */ 275 276 preceding_midnight: 277 entry (Oldclock, Clock); 278 279 call find_midnight (Oldclock); 280 Clock = clk; 281 return; 282 283 /* ------------------------------------------------------- */ 284 285 /* ENTRY: datebin_$following_midnight (oldclock, clock); 286* 287* oldclock (fixed bin (71)) is a calendar clock reading (input) 288* clock (fixed bin (71)) is a clock reading for midnight of that day (output) */ 289 290 following_midnight: 291 entry (Oldclock, Clock); 292 293 call find_midnight (Oldclock); 294 Clock = clk + 86400000000; 295 return; 296 297 /* ------------------------------------------------------- */ 298 299 /* ENTRY: datebin_$next_shift_change (oldclock, newclock, shift, newshift); 300* clock (fixed bin (71)) given clock reading (input) 301* newclock (fixed bin (71)) clock reading for next shift change (output) 302* shift (fixed bin) shift at oldclock (output) 303* newshift (fixed bin) shift at clock (output) */ 304 305 next_shift_change: 306 entry (Oldclock, Clock, Shift1, Shift2); 307 308 Clock = 0; /* in case of error */ 309 Shift1, Shift2 = -1; /* ... */ 310 call decode_clock (Oldclock); 311 call calc_shift; 312 Shift1 = shift; 313 if shift_from_whotab then do; 314 Clock = whotab.next_shift_change_time; 315 call datebin_$shift (whotab.next_shift_change_time, Shift2); 316 end; 317 else do; 318 minute = minute - mod (minute, 30); 319 call encode_clock_value_ (month, day, year, hour, minute, (0), (0), (0), (""), save_clock, ec); 320 do while ((shift = Shift1) & (save_clock - Oldclock < 7 * 86400000000)); 321 call encode_clock_value_$offsets (save_clock, 0, 0, 0, 0, 30, 0, 0, 0, (""), clk, ec); 322 call decode_clock (clk); 323 call calc_shift; 324 end; 325 Clock = clk; 326 Shift2 = shift; 327 end; 328 return; 329 330 /* ---------------------------------------- */ 331 332 decode_clock: 333 procedure (Clock); 334 dcl Clock fixed bin (71); 335 336 save_clock = Clock; 337 call decode_clock_value_$all (save_clock, month, day, year, hour, minute, second, microsecond, day_of_week, 338 (""), abs_date, day_of_year, ec); 339 end decode_clock; 340 341 /* ---------------------------------------- */ 342 343 calc_shift: 344 procedure; 345 call decode_clock_value_$all (save_clock, (0), (0), (0), sys_hour, sys_minute, (0), (0), sys_day_of_week, 346 (sys_info$time_zone), (0), (0), ec); 347 348 if ec ^= 0 then return; 349 350 if ip = null () then do; 351 call hcs_$initiate (sysdir, "installation_parms", "", 0, 1, ip, ec); 352 353 if ip = null () then do; 354 call sub_err_ (ec, "datebin_", "c", null (), (0), "^a>installation_parms", sysdir); 355 goto return_to_caller; 356 end; 357 end; 358 if whoptr = null () then do; 359 call hcs_$initiate (sysdir, "whotab", "", 0, 1, whoptr, ec); 360 if whoptr = null () then do; 361 call sub_err_ (ec, "datebin_", "c", null (), (0), "^a>whotab", sysdir); 362 goto return_to_caller; 363 end; 364 end; 365 366 if (save_clock >= whotab.last_shift_change_time) & (save_clock < whotab.next_shift_change_time) then do; 367 shift_from_whotab = "1"b; 368 shift = whotab.shift; 369 end; 370 else do; 371 shift_from_whotab = "0"b; 372 shift = 373 binary (installation_parms.shifttab (48 * sys_day_of_week + 2 * sys_hour + divide (sys_minute, 30, 17, 0) - 47), 374 3); 375 end; 376 end calc_shift; 377 378 /* ------------------------------------------------------- */ 379 380 find_midnight: 381 procedure (Clock); 382 dcl Clock fixed bin (71) parameter; 383 384 call decode_clock (Clock); 385 call encode_clock_value_ (month, day, year, 0, 0, 0, 0, 0, (""), clk, ec); 386 end find_midnight; 387 388 /* ------------------------------------------------------- */ 389 390 test_datebin: 391 entry (test_sysdir); 392 dcl test_sysdir char (*); 393 394 sysdir = test_sysdir; 395 ip, whoptr = null (); 396 return; 397 398 /* ---------------------------------------- */ 399 1 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 1 2 1 3 /* Modified 740723 by PG to add short AIM access names */ 1 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 1 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 1 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 1 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 1 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 1 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 1 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 1 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 1 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 1 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 1 14* strict_trusted_path. */ 1 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 1 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 1 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 1 18 1 19 1 20 /****^ HISTORY COMMENTS: 1 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 1 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 1 23* added vchn_requires_accept parameter. 1 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 1 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 1 26* Correct formatting problems. 1 27* END HISTORY COMMENTS */ 1 28 1 29 1 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 1 31 1 32 1 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 1 34 2 part_1 like installation_parms_part_1 aligned, 1 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 1 36 1 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 1 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 1 39 1 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 1 41 2 installation_id char (32), /* Name printed at dialup and in who */ 1 42 2 company char (64), /* company name */ 1 43 2 department char (64), /* department */ 1 44 2 companyds char (120), /* company, double spaced */ 1 45 2 departmentds char (120), /* dpeartment double spaced */ 1 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 1 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 1 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 1 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 1 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 1 51 2 ndevices fixed bin, /* number of devices to charge */ 1 52 2 devtab (16), /* Maximum 16 */ 1 53 3 device_id char (8), /* Name of device */ 1 54 3 device_price (0: 7) float bin, /* Price by shift */ 1 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 1 56 2 warning_time fixed bin, /* seconds from warning to logout */ 1 57 2 login_time fixed bin, /* seconds in which to complete login */ 1 58 2 acct_update fixed bin, /* seconds between acct update */ 1 59 2 login_tries fixed bin, /* number of login tries allowed */ 1 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 1 61 2 registration_price float bin, /* fee per month per user */ 1 62 2 dolsign char (1), /* "dollar sign" */ 1 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 1 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 1 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 1 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 1 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 1 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 1 69* Initializer will copy the syserr_log */ 1 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 1 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 1 72 2 fatal_error_loop_count fixed bin (17) unaligned, 1 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 1 74 2 term_real_time_seconds fixed bin (17) unaligned, 1 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 1 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 1 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 1 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 1 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 1 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 1 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 1 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 1 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 1 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 1 85 2 level_names (0:7) char (32), /* Names for security levels. */ 1 86 2 category_names (18) char (32), /* Names for security categories. */ 1 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 1 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 1 89 2 ncon fixed bin, /* Number of config elements. */ 1 90 2 cona (51), /* each entry is 5 words long */ 1 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 1 92 3 shift fixed bin (5) unal, /* Shift number */ 1 93 3 x1 fixed bin (23) unal, 1 94 3 kmem fixed bin (17) unal, /* Memory size */ 1 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 1 96 3 x2 fixed bin (17) unal, 1 97 3 maxa fixed bin (11) unal, /* Max abs users */ 1 98 3 maxq fixed bin (5) unal, /* Max abs q */ 1 99 3 maxu_base fixed bin (17) unal, 1 100 3 response_high fixed bin (17) unal, 1 101 3 response_low fixed bin (17) unal, 1 102 3 x3 fixed bin (17) unal, 1 103 1 104 /* Absentee control parameters. New for MR7.0 */ 1 105 1 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit @š†à#ŸzŒj!ŸfÚèâP”@ r¬´^=Lš†Ø}š†Ø}~™ÿœ&H‚ &>v¨n„l0œ`â®â ’Hš†à#–zˆ*@š†à#Ž>Carry š†à#PÄKMultics š†à#¬rž*@š†à#:IMFT š†à#–*š†à#¼žˆz@Àš†à#Ò´žÄz@Àš†à#ˆèDaemon š†à#Ú¼zˆ*@Àš†à#ðÒâˆ*@Àš†à#*Weaver š†à#Úøˆ*@Àš†à#>¤CLJones š†à#ð*@Àš†à#¤ Baryza š†à#2$*@Àš†à#X Leskiw š†à#H:*@Àš†à#žþHussein š†à#^2P*@Àš†à#ˆ SysDaemon š†à#H*@š†à#X&š†àÓ=i$ánn:èaf<bc š†àÓMLþ˜ÂŸzŒø”P:èaj!š†à#PHP*@Àš†àÓªžˆz@Àš†àÓRetriever š†à#²”žÄz@Àš†àÓȪºˆ*@Àš†àÓ*XRBarstad š†à#вzˆ*@Àš†àÓØÈâˆ*@Àš†àÓàÐøˆ*@Àš†àÓöØ:è*@Àš†àÓÄ Calgary š†à# àþ*@Àš†àÓ:Ž Huen š†à#"ö*@Àš†àÓ$žJRGray š†à#8 **@Àš†àÓâºRWaters š†à#@"*@Àš†àÓH8$*@Àš†àÓŒ@:*@Àš†àÓŒ*@š†àÓÚf&š†àÄ=i$Ð``ŽˆaX$carry.normal š†àÄMLþ˜†£Df$~ÒŽˆaiš†à#†zˆ*@š†àÄœ~Žˆ*@š†àÄþzHornig š†à#²†¤ˆ*Àš†àÄøBenjamin š†à#ºœ:è*Àš†àIJ*Àš†àÄʺ:*Àš†àÄÒÂP*@š†àÄÊ*š†àÄ@X&š†àÔ=i$Òâ⎈aÚ%carry.special š†àÔMLþš…Í„$8ŽˆaÆš†à#zˆ*@š†àÔŽˆ*@š†àÔ¤ˆ*Àš†àÔ :è*Àš†àÔ(*Àš†àÔ0 :*Àš†àÔ8(P*@š†àÔ0*š†àÔúÚ&š†à¶=i$ÔH¼âˆav@<ncarry_standard.ec š†à¶MLþj|W$fòâˆa#Gš†à#nzˆ*@š†à¶Êfâˆ*Àš†à¶„H@count_changed.ec š†à¶’v@carry_remake.ec š†à¶ „@;carry_update.ec š†à¶®’@:clear_holds.ec š†à¶¼ @)reload_carry.ec š†à¶®@0cleanup_carry.ec š†à¶Òn¤ˆ*Àš†à¶ÚÊ:è*Àš†à¶âÒ*Àš†à¶êÚ:*Àš†à¶òâP*@š†à¶ê*š†à¶f@&š†à×=i$Öial (2), 2 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 2 20 2 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 2 22 ("none", "nominal", "automatic", "manual"); 2 23 2 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 1 148 1 149 1 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 400 3 1 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 3 2 3 3 /* Modified 740723 by PG to add security info */ 3 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 3 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 3 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 3 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 3 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 3 9 3 10 dcl 1 whotab based (whoptr) aligned, 3 11 2 mxusers fixed bin, /* max. number of users on system */ 3 12 2 n_users fixed bin, /* current number of users */ 3 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 3 14 2 n_units fixed bin, /* current load */ 3 15 2 timeup fixed bin (71), /* time system was started */ 3 16 2 session char (8), /* AS state, same as anstbl.session */ 3 17 2 nextsd fixed bin (71), /* time we will shutdown */ 3 18 2 until fixed bin (71), /* projected time we start up again */ 3 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 3 20 2 erfno char (8), /* if a crash, the error number */ 3 21 2 obsolete_why char (32), /* reason for last shutdown */ 3 22 2 installation_id char (32), /* name of installation */ 3 23 2 obsolete_message char (32), /* message for all users */ 3 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 3 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 3 26 2 max_abs_users fixed bin, /* max number of absentee users */ 3 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 3 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 3 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 3 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 3 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 3 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 3 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 3 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 3 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 3 36 2 pad1 bit (9) unal, 3 37 2 pad (3) fixed bin, 3 38 2 version fixed bin, /* structure version */ 3 39 2 header_size fixed bin, /* length of header in words */ 3 40 2 entry_size fixed bin, /* length of entry in words */ 3 41 /* laste_adjust is used only by Answering Service programs */ 3 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 3 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 3 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 3 45 3 46 /* whotab header extension: The header is extended from 64 words by 3 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 3 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 3 49* present. This allows existing programs to function with old definitions of 3 50* whotab. Obviously no new header field can be more than 31 contiguous words in 3 51* length. In the Answering Service, all programs using whotab must be compiled 3 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 3 53 3 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 3 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 3 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 3 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 3 58 2 abs_control, /* see absentee_user_table */ 3 59 3 mnbz bit (1) unal, /* must not be zero */ 3 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 3 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 3 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 3 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 3 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 3 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 3 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 3 67 3 control_pad bit (23) unal, 3 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 3 69 2 installation_request_pid bit (36), /* installation process identifier */ 3 70 2 sysid char (32), /* current system name */ 3 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 3 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 3 73 2 message char (124), /* message for all users */ 3 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 3 75 2 why char (124), /* reason for last shutdown */ 3 76 2 e (1000), /* offset 240o */ 3 77 3 active fixed bin, /* nonzero means logged in */ 3 78 3 person char (28) aligned, /* person name */ 3 79 3 project char (28), /* project id */ 3 80 3 anon fixed bin, /* 1 if anonymous user */ 3 81 3 padding fixed bin (71), 3 82 3 timeon fixed bin (71), /* time of login */ 3 83 3 units fixed bin, /* load units */ 3 84 3 stby fixed bin, /* 1 if stby */ 3 85 3 idcode char (4), /* tty id code */ 3 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 3 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 3 88 3 group char (8), /* party-line group */ 3 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 3 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 3 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 3 92 3 pad2 bit (33) unal, 3 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 3 94 3 process_authorization bit (72); /* access authorization of process */ 3 95 3 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 3 97 3 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 401 402 403 end datebin_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1539.4 datebin_.pl1 >special_ldd>install>MR12.1-1054>datebin_.pl1 400 1 08/04/87 1140.0 installation_parms.incl.pl1 >spec>install>1056>installation_parms.incl.pl1 1-148 2 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 401 3 01/18/85 0953.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. Absda parameter fixed bin(17,0) dcl 38 set ref 11 85* 88* 189 194* Clock parameter fixed bin(71,0) dcl 382 in procedure "find_midnight" set ref 380 384* Clock parameter fixed bin(71,0) dcl 334 in procedure "decode_clock" ref 332 336 Clock parameter fixed bin(71,0) dcl 38 in procedure "datebin_" set ref 11 86* 107 111* 124 128* 142 146* 160 164* 174 178* 179* 189 192* 194* 204 208* 249 253* 262 266* 276 280* 290 294* 305 308* 314* 325* Da parameter fixed bin(17,0) dcl 38 set ref 11 85* 90* 174 178 235 238* Datofirst parameter fixed bin(17,0) dcl 38 set ref 218 223* Dayr_clk parameter fixed bin(17,0) dcl 38 set ref 160 163* 165* Dayr_mo parameter fixed bin(17,0) dcl 38 set ref 235 240* Hr parameter fixed bin(17,0) dcl 38 set ref 11 85* 92* 142 145* 147* 174 178* 204 207 208 Min parameter fixed bin(17,0) dcl 38 set ref 11 85* 93* 142 145* 148* 174 178* Mo parameter fixed bin(17,0) dcl 38 set ref 11 85* 89* 174 178 235 238* Oldclock parameter fixed bin(71,0) dcl 38 set ref 276 279* 290 293* 305 310* 320 S parameter fixed bin(17,0) dcl 38 set ref 11 85* 96* 107 110* 113* Sec parameter fixed bin(17,0) dcl 38 set ref 11 85* 94* 142 145* 149* 174 178* Shift1 parameter fixed bin(17,0) dcl 38 set ref 305 309* 312* 320 Shift2 parameter fixed bin(17,0) dcl 38 set ref 305 309* 315* 326* Wkday parameter fixed bin(17,0) dcl 38 set ref 11 85* 95* 124 127* 129* Yr parameter fixed bin(17,0) dcl 38 set ref 11 85* 91* 174 178 218 221* 235 238* abs_date 000116 automatic fixed bin(17,0) dcl 63 set ref 88 223 337* binary builtin function dcl 67 ref 372 clk 000102 automatic fixed bin(71,0) dcl 62 set ref 208 221* 222* 238* 239* 253 266 280 294 321* 322* 325 385* clock builtin function dcl 67 ref 207 252 252 265 265 day 000107 automatic fixed bin(17,0) dcl 63 set ref 90 319* 337* 385* day_of_week 000115 automatic fixed bin(17,0) dcl 63 set ref 95 129 337* day_of_year 000117 automatic fixed bin(17,0) dcl 63 set ref 165 240 337* decode_clock_value_$all 000012 constant entry external dcl 45 ref 337 345 divide builtin function dcl 67 ref 372 ec 000101 automatic fixed bin(35,0) dcl 61 set ref 177* 178* 179 193* 194* 221* 238* 319* 321* 337* 345* 348 351* 354* 359* 361* 385* encode_clock_value_ 000014 constant entry external dcl 48 ref 177 193 221 238 319 385 encode_clock_value_$offsets 000016 constant entry external dcl 51 ref 178 194 321 hcs_$initiate 000020 constant entry external dcl 54 ref 351 359 hour 000112 automatic fixed bin(17,0) dcl 63 set ref 92 147 319* 337* installation_parms based structure level 1 dcl 1-33 installation_parms_part_1 based structure level 1 dcl 1-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 1-144 ip 000000 internal static pointer initial dcl 57 set ref 350 351* 353 372 395* last_shift_change_time 64 based fixed bin(71,0) level 2 dcl 3-10 ref 366 microsecond 000124 automatic fixed bin(71,0) dcl 65 set ref 337* minute 000113 automatic fixed bin(17,0) dcl 63 set ref 93 148 318* 318 318 319* 337* mod builtin function dcl 67 ref 318 month 000110 automatic fixed bin(17,0) dcl 63 set ref 89 319* 337* 385* next_shift_change_time 62 based fixed bin(71,0) level 2 dcl 3-10 set ref 314 315* 366 null builtin function dcl 67 ref 350 353 354 354 358 360 361 361 395 part_1 based structure level 2 dcl 1-33 rcp_init_flags based structure level 1 packed unaligned dcl 2-8 save_clock 000104 automatic fixed bin(71,0) dcl 62 set ref 177* 178* 193* 194* 319* 320 321* 336* 337* 345* 366 366 second 000114 automatic fixed bin(17,0) dcl 63 set ref 94 149 337* shift 61 based fixed bin(17,0) level 2 in structure "whotab" dcl 3-10 in procedure "datebin_" ref 368 shift 000106 automatic fixed bin(17,0) dcl 63 in procedure "datebin_" set ref 96 113 312 320 326 368* 372* shift_from_whotab 000100 automatic bit(1) dcl 60 set ref 313 367* 371* shifttab 144 based bit(3) array level 3 packed unaligned dcl 1-33 ref 372 sub_err_ 000010 constant entry external dcl 44 ref 354 361 sys_day_of_week 000122 automatic fixed bin(17,0) dcl 64 set ref 345* 372 sys_hour 000120 automatic fixed bin(17,0) dcl 64 set ref 345* 372 sys_info$time_zone 000022 external static char(3) unaligned dcl 55 ref 345 sys_minute 000121 automatic fixed bin(17,0) dcl 64 set ref 345* 372 sysdir 000004 internal static char(168) initial unaligned dcl 58 set ref 351* 354* 359* 361* 394* test_sysdir parameter char unaligned dcl 392 ref 390 394 whoptr 000002 internal static pointer initial dcl 57 set ref 314 315 358 359* 360 366 366 368 395* whotab based structure level 1 dcl 3-10 year 000111 automatic fixed bin(17,0) dcl 63 set ref 91 319* 337* 385* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Automatic_authentication internal static fixed bin(17,0) initial dcl 2-16 Manual_authentication internal static fixed bin(17,0) initial dcl 2-16 No_authentication internal static fixed bin(17,0) initial dcl 2-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 2-16 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 3-96 authentication_level_names internal static char(12) initial array unaligned dcl 2-21 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 1-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 1-38 rifp automatic pointer dcl 2-6 NAMES DECLARED BY EXPLICIT CONTEXT. calc_shift 001536 constant entry internal dcl 343 ref 87 112 311 323 clockathr 000661 constant entry external dcl 204 datebin_ 000063 constant entry external dcl 11 datebin_$shift 000164 constant entry external dcl 107 ref 315 datofirst 000715 constant entry external dcl 218 dayr_clk 000306 constant entry external dcl 160 dayr_mo 001006 constant entry external dcl 235 decode_clock 001470 constant entry internal dcl 332 ref 86 111 128 146 164 222 239 310 322 384 find_midnight 002144 constant entry internal dcl 380 ref 207 252 265 279 293 following_midnight 001167 constant entry external dcl 290 last_midnight 001076 constant entry external dcl 249 next_shift_change 001217 constant entry external dcl 305 preceding_midnight 001143 constant entry external dcl 276 return_to_caller 000157 constant label dcl 97 ref 355 362 revert 000341 constant entry external dcl 174 revertabs 000522 constant entry external dcl 189 test_datebin 001442 constant entry external dcl 390 this_midnight 001117 constant entry external dcl 262 time 000245 constant entry external dcl 142 wkday 000214 constant entry external dcl 124 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2500 2602 2232 2524 Length 3100 2232 24 262 246 56 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME datebin_ 328 external procedure is an external procedure. decode_clock internal procedure shares stack frame of external procedure datebin_. calc_shift internal procedure shares stack frame of external procedure datebin_. find_midnight internal procedure shares stack frame of external procedure datebin_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000000 ip datebin_ 000002 whoptr datebin_ 000004 sysdir datebin_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME datebin_ 000100 shift_from_whotab datebin_ 000101 ec datebin_ 000102 clk datebin_ 000104 save_clock datebin_ 000106 shift datebin_ 000107 day datebin_ 000110 month datebin_ 000111 year datebin_ 000112 hour datebin_ 000113 minute datebin_ 000114 second datebin_ 000115 day_of_week datebin_ 000116 abs_date datebin_ 000117 day_of_year datebin_ 000120 sys_hour datebin_ 000121 sys_minute datebin_ 000122 sys_day_of_week datebin_ 000124 microsecond datebin_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_in call_ext_out_desc call_ext_out return_mac mdfx1 ss_ext_entry ss_ext_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. decode_clock_value_$all encode_clock_value_ encode_clock_value_$offsets hcs_$initiate sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. sys_info$time_zone LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000053 85 000115 86 000126 87 000134 88 000135 89 000137 90 000141 91 000143 92 000145 93 000147 94 000151 95 000153 96 000155 97 000157 107 000160 110 000176 111 000200 112 000206 113 000207 114 000211 124 000212 127 000226 128 000227 129 000235 130 000237 142 000240 145 000263 146 000267 147 000275 148 000277 149 000301 150 000303 160 000304 163 000316 164 000321 165 000327 166 000332 174 000333 177 000365 178 000436 179 000511 180 000515 189 000516 192 000534 193 000536 194 000607 195 000656 204 000657 207 000673 208 000703 209 000710 218 000711 221 000725 222 000773 223 000775 224 001000 235 001001 238 001022 239 001065 240 001067 241 001072 249 001073 252 001106 253 001112 254 001114 262 001115 265 001127 266 001133 267 001136 276 001137 279 001153 280 001162 281 001164 290 001165 293 001177 294 001206 295 001211 305 001212 308 001227 309 001231 310 001235 311 001243 312 001244 313 001247 314 001251 315 001255 316 001265 318 001266 319 001274 320 001335 321 001355 322 001426 323 001430 324 001431 325 001432 326 001434 328 001436 390 001437 394 001455 395 001464 396 001467 332 001470 336 001472 337 001474 339 001535 343 001536 345 001537 348 001610 350 001613 351 001620 353 001671 354 001676 355 001751 358 001752 359 001756 360 002023 361 002030 362 002104 366 002105 367 002113 368 002115 369 002117 371 002120 372 002121 376 002143 380 002144 384 002146 385 002154 386 002217 ----------------------------------------------------------- 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