$!-----------------------------------------------------------------------------+ $! SPRING_FORWARD.COM - Change from Standard Time to Daylight Savings 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 1.20 of the original tick length. $ IF F$GETSYI("HW_MODEL") .LT. 1024 $ THEN FIVE_HOURS = "1800000" ! VAX $ TICK_LEN = "120000" $ ELSE FIVE_HOURS = "18433179" ! AXP $ TICK_LEN = "11718" $ ENDIF $! $! Adjust the system time forward an hour gradually over five hours. $ PID = F$GETJPI(0,"PID") $ CLOSE/NOLOG SFMAR $ WSF = "WRITE SFMAR" $ OPEN/WRITE SFMAR SF'PID'.MAR $ WSF " .entry tadjust, ^m<>" $ WSF " $cmkrnl_s adjust" $ WSF " movl #1, r0" $ WSF " ret" $ WSF "" $ WSF " .entry adjust, ^m<>" $ WSF " movl #''FIVE_HOURS', G^EXE$GL_TIMEADJUST ; Five hours" $ WSF " movl #''TICK_LEN', G^EXE$GL_TICKLENGTH ; .80 normal" $ WSF " movl #1, r0" $ WSF " ret" $ WSF " .end tadjust" $ CLOSE/NOLOG SFMAR $ MACRO/OBJECT=SF'PID'.OBJ/NOLIST SF'PID'.MAR $ IF F$GETSYI("HW_MODEL") .LT. 1024 $ THEN LINK/NOMAP SF'PID',SYS$SYSTEM:SYS.STB/SEL $ ELSE LINK/NOMAP/SYSEXE SF'PID' $ ENDIF $ RUN SF'PID' $ DELETE/NOLOG/NOCONFIRM SF'PID'.MAR;*,SF'PID'.OBJ;*,SF'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