
SETDATE.TXT               Version 1.C                           1994.12.29
                                                     

sample data:
YR MTH DAY HR MIN SEC HTH DOW DL TODAY DFS
LY NY TDAY UDAY CM CD WOY NM
P4 3 8 P5 720 880 AD5 1 AD3 -30      =
 
Those variables that the user wants to have in his environment are found
before the first "=" sign at the start of this file. SETDATE.COM reads 
this documentation file to determine which of the variables is required,
or uses one parameter. 

The set of possible variables is:

YR MTH DAY HR MIN SEC HTH DOW D3 DL TODAY TMTH UMTH DFS DTE WOM NS
LY NY CENT TH UH TM UM TS US THU UHU 12H TDAY UDAY CM CD WOY NM MX
P0, P1..P9  AD0, AD1..AD9

The P variables (period) are P0, P1 to P9 and are used as period indicators.
If one of these is used, it must be followed by 2 numbers representing the 
start and end of the period. if the numbers are both <= 24, the numbers are
taken as hours, otherwise they are taken as minutes. If your data is 
P4 12 14, you will get an output of SET P4=Y if the program is run between 
12:00 and 14:00 hrs, and SET P4=N otherwise. You can have a period extending 
past midnight with numbers like 23 7.

Variables AD0, AD1..AD9 (Another Date) enable you to get the day, month and
year of a date which is a given number of days from the present. AD3 1
will give something similar to
   SET AD3D=23
   SET AD3M=08
   SET AD3Y=94
representing tomorrow's date.

Previous dates are found by using negative numbers - the date 30 days 
ago is given by using a negative value of 30 (AD8 -30).

Use of time and date environment variables:-

Having parts of the date and time in environment variables is handy when
making backups, or otherwise naming files or directories according to date.
The program SETDATE results in an output which may be redirected to make
a batch file, which then is CALLed to create the nominated environment 
variables as described below. You can change the behaviour of a batch
file depending on the time of day by using the period variables.

SETDATE provides time variables down to hundredths of seconds and has a ready-
made combination called TODAY which may be convenient.  The DOW (Day Of Week) 
variable is available at 2 characters to enable a file name like 941205Tu.txt 
to be made. A 3 character day and long version of day are available. Minutes 
or seconds may be useful in doing intermediate backups of source code when 
compiling via a batch file and can be used several times per day. Hundredths 
may be useful in providing a random seed for games, display of screens or 
other events. 

The program stops and warns if the system year is not at least 1994.

Ways to use SETDATE are shown in examples below.

If any of the variable names appear at the start of this file before "="
and the program is run from the same directory as the documentation file 
(or consider using the APPEND command), those variables will be written 
out with the current data (so keep a standard list and just copy it to 
the top and edit it there). Order and spacing do not matter, case does 
(so you could include a lower case note in the list). 

From version 1.C, a parameter may be used. If present, this will be used 
and the file will not be read. This is useful in case only a few variables 
are required. E.g. 

      SETDATE "TODAY P 8 17 AD5 -90

The trailing quote is not required (in DOS 5). 

Just run the program to see what your selection will bring. When 
satisfactory, redirect it to a batch file and call it. If most names 
are used, the output looks something like this:

SET TODAY=940515
SET YR=94
SET TMTH=0
SET UMTH=5
SET MTH=05
SET MX=5
SET THU=6
SET UHU=0
SET HTH=60
SET TDAY=1
SET UDAY=5
SET NM=0803
SET WOM=3
SET DAY=15
SET HR=13
SET TH=1
SET UH=3
SET 12H=1
SET MIN=23
SET TM=2
SET UM=3
SET SEC=37
SET TS=3
SET US=7
SET LY=1993
SET NY=1995
SET CENT=19
SET DOW=Su
SET D3=Sun
SET DL=Sunday
SET CD=u
SET CM=y
SET DFS=135
SET WOY=20
SET DTE=230
SET NS=06774

but you will probably want to be selective about what to include.

---------------------------------------------------------------------------
SETTODAY may called from the AUTOEXEC.BAT file but in addition, may be called
from any other batch file or run separately.

This file, SETTODAY.BAT or something like it, is what is required to make 
the variables (the directory \UTIL contains SETDATE.DOC and there is a 
path to SETDATE.COM):

     :settoday.bat
     rem change directory to where the data file is
     cd\util
     setdate >c:\setdate.bat
     call c:\setdate
---------------------------------------------------------------------------

EXAMPLES:

:File: ec.bat
rem Edit the file of data captured from the bulletin board, then rename.
ed caught.txt/e
ren caught.txt %yr%%mth%%day%%min%.txt


:File: nl.bat
:new letter
rem A 2 character command line parameter is allowed to enable the creation 
rem of lots of letters every day. The $ in the directory name makes it sort
rem to the top of the tree.
ed c:\$geoff\%yr%%mth%%day%%1.txt 


:dt.bat          G.Cutter        93.11.08
:done today
:(for Australia - order the variables to suit your country)
dir /on |find "%day%-%mth%-%yr%"


@echo off
:test.bat                  G.Cutter                     93.01.10
:                                           Data was P8   15 19
rem "Display the file if in period 8"
if .%P8%==.Y goto showit
goto missit
:showit
type c:\config.sys
pause
:missit

@echo off
:setmthc.bat          Geoff Cutter           94-07-13
REM Useful in making a ORACLE type date (13-JUL-94)
if %mth%==01 set MTHC=JAN
if %mth%==02 set MTHC=FEB
if %mth%==03 set MTHC=MAR
if %mth%==04 set MTHC=APR
if %mth%==05 set MTHC=MAY
if %mth%==06 set MTHC=JUN
if %mth%==07 set MTHC=JUL
if %mth%==08 set MTHC=AUG
if %mth%==09 set MTHC=SEP
if %mth%==10 set MTHC=OCT
if %mth%==11 set MTHC=NOV
if %mth%==12 set MTHC=DEC


To increase environment space, if required, try
     shell=c:\command.com /p /e:877
in the CONFIG.SYS file and restart the computer.

       LY=Last year -          2 characters
       NY=Next year -          2 characters
       CENT=Century -          2 characters
       TH=Tens of hours -      1 character
       UH=Units of hours -     1 character
       TM=Tens of minutes -    1 character
       UM=Units of minutes -   1 character
       TS=Tens of seconds -    1 character
       US=Units of seconds -   1 character
       TDAY = Tens of days -   1 character
       UDAY = Units of days  - 1 character
       TMTH = Tens of month  - 1 character
       UMTH = Units of month - 1 character
       THU=Tens of hundredths of seconds - 1 character
       UHU=Units of hundredths of seconds - 1 character
       12H=Hours (12 Hour time) - 2 characters
       NS=Seconds so far today  - 5 characters
       CM=Character for Month   - 1 character       see below
       CD=Character for Day     - 1 character       see below

       Monday     writes "m"      when CD is in the list
       Tuesday    writes "t"
       Wednesday  writes "w"
       Thursday   writes "h"
       Friday     writes "f"
       Saturday   writes "s"
       Sunday     writes "u"

       January    writes "j"      when CM is in the list
       February   writes "f"   
       March      writes "m"   
       April      writes "a"
       May        writes "y"
       June       writes "u"
       July       writes "l"
       August     writes "g"
       September  writes "s"
       October    writes "o"
       November   writes "n"
       December   writes "d" 

       DFS    -  Days From Start of year  - 3 characters
       DTE    -  Days To End of year      - 3 characters

       WOM=Week Of Month - 1 digit (for such things as the 3rd 
       Thursday in the month.)
 
       WOY=Week Of Year - 2 digits

       NM=Number of Minutes so far today - 4 digits

       P0-P9 - logical output (Y or N) depending on time of day for 
       up to 10 periods

       MX=Month of year in hex. Useful if a single character is required 
       for a month so that file extentions can be made up from %MX%%DAY%

       AD0-AD9 - with a following number, outputs a date representing the 
       date which is that number of days away from the present date (+ or -).
---------------------------------------------------------------------------
I have changed some code concerning Pn since version A as I can't get the 
concatenate function to work properly. I now just use substitution instead,
here and for AD.

Some of the numbers are limited to 32k, eg the number of days from the
the system date that the program will work for. I might fix this next time.
In the mean time, 87 years will have to do.

In this version I have taken out the HALT when the system date is not
at least as much as the compile date. This is to enable the program to 
generate a suitable date for an XT knowing the number of days from 1980-1-1.
A message appears as a remark in the output if appropriate so as not to 
prevent batch file operation.

What I am working on (obviously unfinished) now is:

@echo off
:incnum.bat                   Geoff Cutter             94-09-17
REM D: is a RAM drive
d:
copy incnum.bat c:\batch
if not exist *.gcc goto explain
dir *.gcc |find /i "GCC" >count.$$$
del *.gcc
strings gcc= read count.$$$,1
strings gcc2= parse %gcc%,1,
set gcc=
strings gcc3= add %gcc2%,1
rem >%gcc3%.gcc
echo AD5 %gcc3% =>c:\temp\setdate.doc
type c:\util\setdate.doc >>c:\temp\setdate.doc
c:
cd\temp
setdate

goto end

:explain
echo  This batch file takes a file name which is a number and 
echo  increments it and saves it to the new value. Useful if 
echo  you have an XT and wish to have an approx date (days 
echo  from 80-01-01). Knowing the days, use SETDATE to find
echo  the date that number of days from there. If this is 
echo  done once every day, the date will be correct on the XT.
echo  Use a variable such as AD5 in SETDATE to set up variables
echo  for setting the date.

echo A file of the form NNNN.GCC should exist where NNNN is the number
echo to be incremented.
echo A file has been created for you for testing. Run %0 again.
rem >8.gcc
:end

---------------------------------------------------------------------------
