home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 2 BBS
/
02-BBS.zip
/
easyon1a.zip
/
EASYTIME.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1993-09-27
|
7KB
|
244 lines
/* EasyTime */
/* Ver 1.0 */
/* Copyright 1993 by Mark Bernard */
/*******************/
/** Configuration **/
/*******************/
/** Paths and Filenames **/
LogFile = "C:\bink\bink.log"
FlagFile = "C:\maxp\EasyTime.Flg" /* Flag File */
EasyOnLog = "C:\bink\EasyOn.log" /* To log time adjustments */
/** Options: 1 = yes, 0 = no **/
LogTimeChange = 1
/** Other **/
TimeZone = 0 /* offset from LOCAL time - limit of ± 23 */
DateString = "Date ="
TimeString = "Time ="
ConnectString = "Connect "
/** End Configuration **/
/***********************/
arg p.1 p.2
DoFlag = linein(FlagFile,1,1)
DoFlag = strip(DoFlag,'Both')
if DoFlag = "Loaded" then
do
if RxFuncquery(SysLoadFuncs) > 0 then
do
call RxFuncAdd 'SysLoadFuncs','RexxUtil','SysLoadFuncs'
call SysLoadFuncs
end /* do */
call SysFileSearch DateString, LogFile,'hit.',N
do i=1 to hit.0; end /* do */
i=(i-1)
LineNum = word(hit.i,1)
LineNum = strip(LineNum,'B')
/*line number of last "DateString" hit */
call SysFileSearch ConnectString, Logfile, 'con.',N
do j = 1 to con.0; end /* do */
j = (j-1)
LineCon = word(con.j,1)
LineCon = strip(LineCon,'B')
/* Line number of last "Connect" message */
if ((LineCon > LineNum) & ((LineCon-LineNum) < 5)) then /* use */
do
TeleDate = hit.i
DatePos = pos(DateString, hit.i) + length(DateString)
/* position of the result code in TeleDate */
TeleDate = substr(TeleDate, DatePos)
TeleDate = strip(TeleDate, 'Both')
/* remove leading and trailing blanks */
call SysFileSearch TimeString, Logfile, 'hit.',N
do i = 1 to hit.0; end /* do */
i = (i-1)
TeleTime = hit.i
TimePos = pos(TimeString, hit.i) + length(TimeString)
/* position of the result code in TeleDate */
TeleTime = substr(TeleTime, TimePos)
TeleTime = strip(TeleTime, 'Both')
/* remove leading and trailing blanks */
Tyear = substr(date('O'),1, 2)
Tmonth = substr(Teledate, 1, 2)
Tmonth = strip(Tmonth, 'Leading', "0")
Tday = substr(Teledate, 3, 2)
Tday = strip(Tday, 'Leading', "0")
Thour = substr(TeleTime, 1, 2)
Thour = strip(Thour, 'Leading', "0")
Tmin = substr(TeleTime, 3, 2)
call TZadjust TimeZone
if length(Tyear) < 2 then TYear = insert("0", Tyear)
if length(Tmonth) < 2 then Tmonth = insert("0", Tmonth)
if length(Tday) < 2 then Tday = insert("0", Tday)
if length(Thour) < 2 then Thour = insert("0", Thour)
if length(TMin) < 2 then Tmin = insert("0", Tmin)
TeleDate = insert(Tday, Tyear,0,3,"-")
TeleDate = insert(Tmonth, TeleDate,0,3,"-")
TeleTime = insert(Tmin, "30", 0, 3, ":")
TeleTime = insert(Thour,TeleTime, 0, 3, ":")
end /* use */
if LogTimeChange = 1 then do
LogDate = date('N')
Entry = TeleTime
Entry = insert(" / ", Entry)
Entry = insert(TeleDate, Entry)
Entry = insert(" EasyTime: Reset to: ", Entry)
Entry = insert(time('N'), Entry)
dd = word(LogDate, 1)
if length(dd) = 1 then dd = insert("0", dd)
mon = word(LogDate, 2)
yy = word(Logdate, 3)
yy = substr(yy, 3)
Entry = insert(dd, Entry, 0, 3, " ") /* mon */
Entry = insert(mon, Entry, 0, 4, " ") /* dd */
Entry = insert(yy, Entry, 0, 3, " ") /* yy mon dd time*/
Entry = insert("# ", Entry)
call lineout EasyOnLog, Entry
end /* do - LogTimeChange */
"DATE" TeleDate /* set system date and time */
"TIME" TeleTime
call lineout FlagFile, "UnLoaded ",1 /* "UnLoad" EasyTime */
end /* do - "Loaded" */
exit
TZAdjust:
TZ = arg(1)
Thour = Thour + TZ
if TZ = 0 then nop
else if Thour > 23 | Thour < 0 then do /* other day */
if Thour > 23 then do /* next day */
Thour = Thour - 24
Tday = Tday + 1
select
when Tmonth = 2 & Tday > 28 then do
if (Tyear/4 - format(Tyear/4,4,0)) = 0 then do
if Tday > 29 then do
Tmonth = 3
Tday = 1
end /* do */
end /* do */
else do /* not a leap year */
TMonth = 3
Tday = 1
end /* do */
end /*do */
when Tmonth = 4 then if Tday > 30 then do
Tmonth = 5
Tday = 1
end /* do */
when Tmonth = 6 then if Tday > 30 then do
Tmonth = 7
Tday = 1
end /* do */
when Tmonth = 9 then if Tday > 30 then do
Tmonth = 10
Tday = 1
end /* do */
when Tmonth = 11 then if Tday > 30 then do
Tmonth = 12
Tday = 1
end /* do */
when Tmonth = 12 then if Tday > 31 then do
Tyear = Tyear + 1
Tmonth = 1
Tday = 1
end /* do */
otherwise do
if Tday > 31 then do
Tmonth = Tmonth + 1
Tday = 1
end /* do */
end /* do */
end /* select */
end /* do - next day */
else do /* previous day */
Thour = 24 + Thour
Tday = Tday - 1
if Tday < 1 then
select
when Tmonth = 1 then do
Tyear = Tyear - 1
Tmonth = 12
Tday = 31
end /* do */
when Tmonth = 3 then do
if (Tyear/4 - format(Tyear/4,4,0) = 0) then do
Tmonth = 2
Tday = 29
end /* do */
else do /* not a leap year */
TMonth = 2
Tday = 28
end /* do */
end /* do */
when Tmonth = 5 then do
Tmonth = 4
Tday = 30
end /* do */
when Tmonth = 7 then do
Tmonth = 6
Tday = 30
end /* do */
when Tmonth = 10 then do
Tmonth = 9
Tday = 30
end /* do */
when Tmonth = 12 then do
Tmonth = 11
Tday = 30
end /* do */
otherwise do
Tmonth = Tmonth - 1
Tday = 31
end /* do */
end /* select */
end /* do - previous day */
end /* do Other day */
return