$!-----------------------------------------------------------------------------+ $! FALL_BACK.COM - Change from Daylight Savings Time to Standard Time | $!-----------------------------------------------------------------------------+ $! Author of MACRO-32 code: Jamie Hanrahan $! From the basic idea of: Lee Leahy $! Author of simple DCL shell: Harry Flowers $! $! Note: Will not work if you have DECdts installed; see the DECdts $! documentation for directions on changing time with DECdts. $! $! Turn on privileges we need. $ PREVPRIV = F$SETPRV("CMKRNL,LOG_IO,OPER") $! $! Set the appropriate values for five hours worth of $! ticks and .80 of the original tick length. $ IF F$GETSYI("HW_MODEL") .LT. 1024 $ THEN FIVE_HOURS = "1800000" ! VAX $ TICK_LEN = "80000" $ ELSE FIVE_HOURS = "18433179" ! AXP $ TICK_LEN = "7812" $ ENDIF $! $! Adjust the system time back an hour gradually over five hours. $ PID = F$GETJPI(0,"PID") $ CLOSE/NOLOG FBMAR $ WFB = "WRITE FBMAR" $ OPEN/WRITE FBMAR FB'PID'.MAR $ WFB " .entry tadjust, ^m<>" $ WFB " $cmkrnl_s adjust" $ WFB " movl #1, r0" $ WFB " ret" $ WFB "" $ WFB " .entry adjust, ^m<>" $ WFB " movl #''FIVE_HOURS', G^EXE$GL_TIMEADJUST ; Five hours" $ WFB " movl #''TICK_LEN', G^EXE$GL_TICKLENGTH ; .80 normal" $ WFB " movl #1, r0" $ WFB " ret" $ WFB " .end tadjust" $ CLOSE/NOLOG FBMAR $ MACRO/OBJECT=FB'PID'.OBJ/NOLIST FB'PID'.MAR $ IF F$GETSYI("HW_MODEL") .LT. 1024 $ THEN LINK/NOMAP FB'PID',SYS$SYSTEM:SYS.STB/SEL $ ELSE LINK/NOMAP/SYSEXE FB'PID' $ ENDIF $ RUN FB'PID' $ DELETE/NOLOG/NOCONFIRM FB'PID'.MAR;*,FB'PID'.OBJ;*,FB'PID'.EXE;* $! $! Wait five (six) hours for adjustment to end. $ WAIT 06:00:00 $! $! Set current time to current time; update TOY clock $ SET TIME="''F$CVTIME("","ABSOLUTE","TIME")'" ! The time is now $ WAIT 00:00:03 $ SET TIME ! Update SYS.EXE & reset TOY clock $! $! Restore privileges and exit. $ PREVPRIV = F$SETPRV(PREVPRIV) $ EXIT