home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
apps
/
bbs
/
today201
/
todays.doc
< prev
next >
Wrap
Text File
|
1994-10-29
|
70KB
|
2,047 lines
Version 2.01 10/29/94
TODAYS
A program to display events and information on a date in history
Original program by
Mike Butler
This Atari ST version by
Chuck Grimsby
Documentation written with the assistance of
Ira C. Brickman
Hello out there in FREEWARE-land! It's me once again, with
another program. Or rather, another version of a program!
THE FILES IN THIS DISTRIBUTION PACKAGE
RELEASE.201 "Press" Release message.
UPGRADE.201 For users upgrading from verson 2.00. Details some of
the changes.
SAMPLE1.RPT Sample TODAYS.RPT files that show various ways you
SAMPLE2.RPT can use the functions in TODAYS to display various
SAMPLE3.RPT things.
SAMPLE4.RPT
TODAYS.PRG: The program which brings together information from
v. 2.01 various text files, selects and sorts the information
based on the system date of your computer, and prints or
displays the information in a report.
TODAYS.RPT: The report layout and format.
TODAY.RDT: A 'test' file to show how the new Range Date feature can
be used.
TODAY.LNT: Lenten calender for 1994. Just for fun!
TODAY.HOL: US holidays. Again, just for fun.
TODAYS.LNG: Tells TODAYS how to print or display numerical
information, and the words for any error reports
generated.
TODAYRPT.FMT: A Help File that explains the various function codes that
can be used in reports.
TODAYS.RPX: A Help File of sorts that lists most of the function
codes used to calculate and print or display information
in reports.
T_UP201.PRG: A program for users upgrading from version 2.00. Converts
the old TODAYS.INF and TODAYS.HDR to the new TODAYS.CFG.
T_SETUP.PRG A program to help new users set up and run TODAYS v.201.
TODAYSCFG.NEW A TODAYS.CFG 'template' file to be used by the TUP201.PRG
PLEASE (for those updating from earlier versions on TODAYS) and
DO NOT T_SETUP.PRG (for new users). This file contains special
ALTER "codes" that TUP201.PRG and T_SETUP.PRG will use to help
THIS FILE! in the conversion or set up process.
TODAYS.DOC: This documentation file for TODAYS users.
TODAYS_H.DOC: A longer history, and thank you to those who have helped
in the development of the TODAYS program.
Note! You must run T_SETUP.PRG or T_UP201.PRG before running
TODAYS.PRG! These programs will create the configuration file
(TODAYS.CFG) for TODAYS. TODAYS.CFG is *NOT* included in the
distribution archive so that _will_ run one of the above programs!
A SHORT HISTORY OF TODAYS
This program has a rather curious history. In about 1987 or
1988, one of my favorite BBS's (The FlightLine BBS (612-544-5118), 24
hours, 365 Days, 300/1200/2400/9600/14.4 Baud HST/V.32 _still_ one my
favorites after all these years!) ran a program that created a
"welcome" message to it's users that listed what happened on that date
in history. It was a nice program, but from time to time it would
"hiccup" and strange things would happen. After watching these
"hiccups" for a while, I finally got fed up and decided to do something
about it.
I tried to find a copy of the program through the 'normal'
sources (local BBSs, User Group libraries, GEnie, CompuServe, etc.)
but I couldn't find it. Finally, I requested, and got, a copy of the
program and it's data files from the SysOp of that BBS. There wasn't
any documentation with the programs, but I proceeded to "reverse-
engineer" the data files to create a program that was a bit more
stable. TODAYS.TOS version 1.01 was the result.
After releasing that version to the general Atari ST public, I
started getting requests, make that *REQUESTS*, to "enhance" the
program. For a while, I granted the requests and I was releasing new
versions darn near weekly. Then I got bored with it and moved on to
other programs. Late in 1991, I started thinking of the program
again, got out all those old enhancement requests, added a few of my
own ideas, and started working on it. In 1992, I released versions
1.95 through 2.00. 2.00 had some bugs in it, so in early 1993 I
released version 2.00b. I was already hard at work on version 2.01,
but I thought it was important to get out a good _quality_ program that
was useable.
Well, that's my history with the program. The history of this
program's concept is even older, and stranger, than that! Someone
(sorry, I lost the person's name) was kind enough to E-Mail me a copy
of the IBM/PC version of TODAY complete with docs. (No version of the
ST program I've ever seen has had any documentation with it!) As it
turns out, this program goes way back to the days before there were
home computers, only main frames!
According to the information I now have, It was originally
written by Mike Butler in PL/1 on a VM/CMS system. He should receive
all the credit for the basic data file format, and for most of the data
in the TODAYSDAT.LZH files as well! (You'll note a _strong_ San
Francisco "flavor" to the files. I assume that's where Mike Butler is
or was when he wrote them.)
The two Atari ST versions of the "TODAY.TOS" (note that the word
"today" is singular) programs I've seen were written by John Nastasi.
This program retains it's compatibility with earlier versions,
and even with current versions on other computers, however this
program is HEAVILY enhanced and may use the data files in ways that
other versions on other computers do not. To put it another way:
"This program maintains DOWNWARD compatibility,
but not necessarily CROSS compatibility!"
SET UP
Before you begin, you will want to get a copy of the data files
from somewhere. They are fairly easy to find. Both GEnie and
CompuServe have them in both their IBM/PC and Atari ST areas. Simply
do a search for the word 'TODAY' or 'HISTORY' in those areas and you'll
find them. (In GEnie's Atari ST RoundTable, the file is called
"TODAYDAT.LZH" and is file # 26468. Or at least it _was_ when I
uploaded it!)
I don't distribute the data files with this program as once
downloaded, there's no need to do it again, and why make users pay for
all that extra download time?
Feel free to make up your own (or add to those you already have)
by following the format laid down in the DATA FILES section of this
document.
NOTE: Many other programs of this type, both for the Atari ST/TT
computers, IBM/Clones, Macintosh, and others use similar data
structures and can be easily converted over.
OK, now that you've got some data to work with, you'll need to
set up some files to tell the program what to do.
NOTE: Users are *strongly* urged to take a moment and print out
the TODAYS.CFG, TODAYS.RPT, and TODAYRPT.FMT files included in the
distribution archive before continuing! This isn't required, however
it does make the set up, and the understanding of the set up, MUCH
simpler!
TODAYS.CFG
TODAYS.CFG provides the program with most of the information it
needs to run. TODAYS.CFG can be created with any word processor or
text editor that can save ASCII documents. Take a look now at the
TODAYS.CFG file that was included with this distribution package.
You'll see that it's "self-documented", that is to say that all the
commands are explained within the TODAYS.CFG file itself.
The commands in TODAYS.CFG tell TODAYS how you want the program to
run. There are more commands in there then I originally thought there
ever would be, but then that's what happens with a user driven program.
TODAYS.LNG
The TODAYS.LNG file contains the 'language' or words that the
program will use for things like the day of the week, the names of the
months, the time of day, numbers, etc.
It also contains the words TODAYS will use in error messages,
should it need to give one. You may edit this file as much as you
like, however: DO NOT CHANGE THE ORDER! (Things will get _really_
messed up if you do!)
For those of you who would rather have the text come out in
French, German, Spanish, or whatever, here's where you make those
changes.
The only 'tricky' thing about the TODAYS.LNG file is that TODAYS
will only use whatever is from the leftmost edge of the line to
wherever you've put a semi-colon (;) on the line. Anything after that
is ignored, so feel free to make whatever comments you like after the
semi-colon.
The format of TODAYS.LNG is simple, pure ASCII. Please feel free
to include whatever other codes you want to make whatever changes you
want to happen in it. TODAYS won't do any checking on the file other
then the semi-colon mentioned above, and checking the first line of the
file for the version number.
As I just mentioned, the first line of TODAYS.LNG must contain the
version number! This is rather important as running with mis-matched
TODAYS.LNG and TODAYS programs can produce some very weird results! No
harm will come from it, but the output of TODAYS won't make much sense.
TODAYS will check the first line of the TODAYS.LNG file for the
version number, and if it doesn't match the version number of the
program, TODAYS will self-abort it's run.
NOTE: Since the way other languages work for converting numerical
symbols to words is different from English, I can't make any sort of
guaranty that the routine I use in this program will work, but feel
free to give it a shot!
ALSO NOTE: If you change the names of the months in the
TODAYS.LNG file, you'll also have to change the names of the TODAY.mmm
monthly files. TODAYS gets the names of file to read by using the
three leftmost characters of the month names in TODAYS.LNG.
DATA FILES
The file structure of the TODAY.mmm files is a simple, but
EXTREMELY efficient and effective one!
In the TODAYDAT.LZH file (available from GEnie and many local
BBSs), there are separate data files for each month, with the extender
being the 3-character name of the month. i.e. the January file should
be named TODAY.JAN, the February file TODAY.FEB, the March file
TODAY.MAR and so on.
Just to make sure, the extenders are: JAN, FEB, MAR, APR, MAY,
JUN, JUL, AUG, SEP, OCT, NOV, and DEC. (If you're not running in
English, please see the note about month names in the TODAYS.LNG
section.)
The program reads these files according to what month the system
clock is set to. If the system clock is set for a day in January the
TODAY.JAN file is read, if it's set for a date in February the
TODAY.FEB file is read, and so on.
Older versions required these files, but current versions allow
you to have them or not. (I think it is a good idea to have them
though, just for simple data management.) You can have other files of
course, just simply tell TODAYS the filename extenders you want to use
in your TODAYS.CFG file after the keyword 'AdditionalFiles'. You can
also have all your data in one big file if you so wish: the one you
name with the keyword 'AlternateFile' in your TODAYS.CFG file.
You can also use all three methods at the same time!
You do not have to put the data into any particular order. If you
want to separate out the birthdays from the events and put them in
chronological order feel free to do so. TODAYS won't care WHAT order
they are in!
All the data files follow the exact same format:
The first 10 characters on each line is data for the program to
use, the rest is information to be displayed.
Each event needs a separate line.
Each line can be as long or as short as you want it to be. TODAYS
will "wrap" the lines automatically for you. (This is a feature unique
to TODAYS. The versions on other computers don't have it!) I tested
it with a couple of 255 character long lines, and it does quite well.
Some typical lines in your data files might look like this:
B03211685 Johnann Sabatian Bach (composer)
S03271945 The Last V-2 rocket is fired in WW II
D04261989 Lucille Ball died
The First Character of Each Line:
The first character on the line tells the program what type of
event this is. Although the original TODAY program only supported 3
types of events, TODAYS allows you to use whatever you want for your
data types, and however many you want! There are however two
exceptions to this that are hard coded into the program. Those are:
* (which means "Ignore this line"), and
^ (which means "Friday the 13th").
Unfortunately, you can't use % as a type code either due to the way
that the report generation routine works.
The Date:
The next 4 characters on the line (Columns 2-5) are for the month
and day. Both the month and the day are ALWAYS 2 characters long each!
(i.e. January 5th is 0105, February 9th is 0209, and November 21st is
1121.) You may use spaces instead of 0's as place holders if you like,
just remember that you *MUST* use either a space or a 0 to make
everything work right.
Using The Day of The Year Instead of The Date:
A request was made to allow the user to use the 'day of the year'
or 'Julian Period' instead of the month and the day. Since this was
rather easy to code, I put it in. This is another feature unique to
the Atari ST/TT version. By putting a pound sign (#) in character 2,
characters 3-5 become the day of the year. As above, use either
leading zeros or spaces to make the date 3 characters long.
When using the day of the year, remember that on leap years the
'day of the year' will be one day greater then on non-leap years for
dates after February 29th, the 59th day of the year. (On non-leap
years, the 59th day of the year is March 1st, on leap years, it's
February 29th.)
Using the 7-digit Julian date instead of the Gregorian date:
You may also use a 'Julian date' by placing a ^ in column 2 and
then the 7-digit julian date in columns 3-9.
To tell the truth, I'm not sure how well this works as I've only
heard back from one user who's used it, but he says it works fine.
The Year:
The next 4 characters on the line (characters 6-9) are for the
year the event or birthday occurred. In cases of holidays and
repeating events such as the American Independence Day (July 4th) the
year isn't used, so for Holidays these characters can be left blank or
filled with zeros.
For years "B.C.", you can use a negative number _IF_ it will fit
into these four characters. Use either spaces or zeros as place
holders if you need them for 3 or 2 digit years.
Your Event:
Characters in positions 11 and beyond are for whatever text you
want displayed or printed.
The 10th Character:
You may have noticed I skipped over the 10th character of the data
line. The 10th character is a "strange" one, but quite useful.
Suppose you have a holiday, like Thanksgiving for instance, that occurs
ONLY on Thursdays. In this case, a 5 should be the 10th character in
the data line about Thanksgiving. (Thursday is the 5th day of the
week, starting with Sunday as Day 1 of the week.)
Memorial Day, which can only happen on a Monday, should have a
2 as the 10th character since Monday is the 2nd day of the week.
Election days in the USA can only happen on Tuesdays, so the 10th
character is a 3.
Ash Wednesdays can only happen on Wednesdays, so the 10th
character is a 4.
Good Friday can only happen on a Friday so a 6 is the 10th
character.
Get the picture? Saturday Holidays get a 7 and Sunday holidays
have a 1 in character 10. (Did I get every day of the week??)
If an Event takes two or more lines to describe, you can put a C
into the 10th character. (Since TODAYS allows the use of very long
lines, this is fairly rare, but to maintain compatibility with older
versions, and just in case, I left it in.)
NOTE: Using a C in character 10 causes the program to 'append'
the text on the line to the _last_ _line_ _accepted_. If the line,
when displayed, isn't 'attached' to the correct line, go into your data
files and see if they are in the proper order, and that the two dates
(in characters 2-9) match.
See, I told you character 10 codes were weird. But wait! There's
more! The following character codes are "unique" to the Atari ST/TT
version of TODAYS, and may not work on programs for other computers:
If the event only happens on weekdays (Monday through Friday)
placing a 8 in into the 10th character will stop it from being
displayed on the weekend.
If the event happens only on weekends (either Saturday or
Sunday), placing a 9 as the 10th character will prevent the line from
being displayed on weekdays.
If the event happens only on Business days (as you've configured
your business days in TODAYS.CFG), placing a B in the 10th character
will tell TODAYS to only display the line on business days.
If the event happens only on Non-Business days (as you've
configured your business days in TODAYS.CFG), placing a N in the 10th
character will tell TODAYS to only display the line on days that are
not in your BusinessDays configuration line.
If you want a line to be displayed only if it's a Leap year,
placing a L in the 10th character will do that.
If you want a line to be displayed _only_ on non-leap years,
placing a R in the 10th character will allow that. (Regular year. I
ran out of codes...)
If you want a line to be displayed _only_ if the month, day of
month, and year all match the date you're running for, placing a E in
the 10th character will allow this to happen. (A "Exact" match.)
CALCULATED DATES
The TODAYS program also supports six more functions that the
original TODAY program didn't. Nor, as far as I can tell, do current
versions on other computers. These I refer to as "Calculated dates",
and here's how they work:
If there is an asterisk (*) in character 10, the program will
calculate the number of days from the system date to that date. The
program will return with the number of days until that date, then a
space, then whatever text you have on that line. For example, suppose
in your TODAY.DEC you have the following line:
S1225 *More shopping days until Christmas!
You'll note that there isn't a year defined. Since Christmas occurs
every year on the same date, one isn't needed.
On November 25th, the program will print out:
30 More shopping days until Christmas!
On December 16th, the program will print out:
9 More shopping days until Christmas!
Unfortunately, on December 26th, the program will print out:
365 More shopping days until Christmas!
If you don't want this line to be printed out after the date has
happened, use a plus sign (+) instead of a asterisk (*) in character
10.
A minus sign (-) in character 10 gives the number of days SINCE
the date in characters 2-5.
Remember that "Age Value" in the TODAYS.CFG file? Here is where
it is used. If you have set a Age Value of 30 in your TODAY.CFG file,
and you have a pound sign (#) in character 10 instead of the asterisk
(*), this line will only be printed out if today's date is within 30
days of 12/25. It won't be printed out after that date, or before 30
days before 12/25.
Placing a percent sign (%) in character 10 does the same as a #,
except instead of giving the number of days until the date, you get the
number of days since an event, until you hit the Age limit set in the
TODAYS.CFG file.
Placing a ampersand (&) in character 10 does the same as using
both the % and #. You get both the number of days until the date, and
the number of days since the date, as long as it's within the range set
with the Age value.
Column 10 Summary:
The following summary is presented in the data file format.
If, for example, you have a calculated event on July 4th, you can
use character 10 in the following ways:
This is the 10th character
|
\|/
S0704 1Print if the event is on a Sunday
S0704 2Print if the event is on a Monday
S0704 3Print if the event is on a Tuesday
S0704 4Print if the event is on a Wednesday
S0704 5Print if the event is on a Thursday
S0704 6Print if the event is on a Friday
S0704 7Print if the event is on a Saturday
S0704 8Print if the event is on a Weekday (Monday - Friday)
S0704 9Print if the event is on a Weekend (Saturday or Sunday)
S0704 BPrint if the event is on a BusinessDay
S0704 CThis line is a continuation of the previous line
S0704 EPrint *only* if the month, day, and year match today's date
S0704 LPrint *only* if it's a leap year
S0704 NPrint if the event is on a non-BusinessDay
S0704 RPrint *only* if it's a Regular (non-leap) year
S0704 *Calculate the number of days ALWAYS
S0704 +Calculate the number of days UNTIL
S0704 -Calculate the number of days SINCE
S0704 #Calculate the number of days UNTIL (within Age Range)
S0704 %Calculate the number of days SINCE (within Age Range)
S0704 &Calculate the number of days both UNTIL & SINCE (Age Range)
No year was used in the above chart, so TODAYS will calculate to
the _next_ occurrence of the date in characters 2-5 for the *, +, # and
& codes, and the number days since the _last_ occurrence for codes - and
%.
Year values _can_ be used with the character 10 codes. If, for
example, you wish to calculate the number of days from now until
January 1, 2000, do the following:
S01012000*days until January 1, 2000.
Obviously, you'll _want_ to use a year value with the character
10 code E. Otherwise, it'd just appear every year! (TODAYS
automatically fills in "missing" data in columns 2-9 with the current
run settings.)
YEARLY, MONTHLY AND WEEKLY EVENTS
Through careful use of the month field (characters 2 and 3), the
day field (characters 4 and 5), the year field (characters 6-9) and
character 10 (as the day of the week field), you can create lines that
will be displayed on every day of a year, every day of a specific
month, on a specific date of any month, on specific days of the week,
or any combination of the above.
It's best to set up 'categories' for these types in your
TODAYS.CFG and TODAYS.RPT files. For these examples, we'll use type Y
for Yearly events (a line to be displayed on every day of a year),
type ! for Monthly events (a line that will be displayed on every day
of the month) and type @ for our Weekly events (ones that will appear
only on specific days of the week).
Yearly Events:
1992 is the Year of the Frog. Not really, but let's just suppose
it is. To set up a line in your TODAY.mmm files, you'll first have to
set up a Type category Y in your TODAYS.RPT file and your TODAYS.CFG
file for type Y events. (In the distribution files, I've already done
that, so you can just look at those files to see how it's done.) Now,
put in your TODAY.mmm files a line that says:
Y 1992 Year of the Frog
Now whenever TODAYS is run in 1992, you will get a line that says:
"1992 - Year of the Frog"
as a part of the 'Yearly Events' listing.
If you only put this line in your TODAY.JAN file, this line will
only come out in January, 1992. If you put it only in your TODAY.FEB
file, it'll only come out in February, 1992. To have it come out on
every day of the year you'll either have to put it in every TODAY.mmm
monthly file, OR in one of the AdditionalFiles you've told TODAYS
to read in the TODAYS.CFG file, like for instance the HOL (holiday)
file. Since the AdditionalFiles are read on every run, the program
will be able to find it every time TODAYS is run.
Users of the AlternateFile can put it in there with the rest of
their data since that file is read every time the program is run.
Monthly Events:
Suppose that on every day in February, you want to be told that
February is "African-American History Month". Assuming that you've set
up type code ! to be Monthly events in your TODAYS.CFG and TODAYS.RPT
files, you could then put the following line into your TODAY.FEB file:
!02 African-American History Month
Then on every day in February
"African-American History Month"
would be displayed as part of the 'Monthly Events' listing.
The beauty of doing it this way is that you only need one line to
do something like this instead of one line for each day of the month.
Weekly Events:
Weekly events work somewhat like Monthly and Yearly events, but
with these, they will only come out on certain days of the week. For
instance, suppose you have this line in your TODAY.HOL file:
@ 6Thank God It's FRIDAY!!!!
Every friday then you would get:
Thank God It's FRIDAY!!!!
displayed as part of the Weekly events listing.
Combining Yearly, Monthly, and Weekly Events:
As I mentioned before, through careful use of the Month, Day, and
Year fields, along with character 10 as a day of the week field, you
can create lines that will only show up on specific days of the month,
months of the year, specific days of the week and so on and so forth.
Suppose, for instance, you've agreed to water someone's plants for
the month they're away on vacation. You could then put a line in your
data files to remind you to do that with a line like this:
@06 5Go water Sue's plants!
Then every Thursday in June,
"Go water Sue's plants!"
would be displayed.
If you want the line to show up ONLY during 1992, adding in the
year to characters 5-9 like this:
@06 19925Go water Sue's plants!
Then every Thursday in June 1992
"Go water Sue's plants!"
would be displayed.
You can also use the day field in characters 4 and 5 to cause a
line to show up or not.
Suppose your car payment is due on the 15th of each month. In
that case you could use the line:
! 15 Car payment due
to cause:
"Car payment due"
to be displayed on the 15th of each month.
Although it may feel like it, you really don't pay for your car
forever, so by adding in a year value you can cause it to show up only
during a specific year:
! 151992 Car payment due
Now "Car payment due" will only show up on the 15th of every month
during 1992.
By making several lines that are the same except for the year you
can cause it to appear over the life of the loan:
! 151992 Car Payment due
! 151993 Car Payment due
! 151994 Car Payment due
If the above lines are in your data file(s), "Car Payment due" will be
displayed along with the other monthly events on the 15th of every
month from 1992 to 1994.
One of the drawbacks with the above method is that it requires a
line for every POSSIBLE date. Since Mother's Day, for instance, could
happen either on May 10th, or May 8th, or May 14th, or May 13th, or
whatever, you will have to have a separate line for each of these
dates, and for whatever other possible dates it could occur on AND a 1
in character 10 so that it will only show up on a Sunday. There is a
way around this though, through a method I call "Range Dating".
RANGE DATING
Beginning with TODAYS version 2.01, you can make one line cover
several dates with a concept I call "Range Dating". Range dating is
very simple to use. For example, here is a Range Date line that will
cover 7 days:
E0911+6 National Ball Room Dance Week
The above line will be displayed on every day from September 11th
to September 18th. The +6 in character positions 6 and 7 tell TODAYS
to display the line for an additional 6 days after September 11th (A
total of 7 days).
You can set the range to be anything you need, up to 999 days, or
about 2 years and 9 months!
Range dating can also be combined with the character 10 codes to
make lines that will only appear on Mondays, Tuesday, Wednesdays, etc.
over a specific range. The line below, for example, will only show up
on Mondays in August, from the first of the month to the 15th:
E0801+14 1Don't forget to send Mom her tickets!
Or you can combine Range dates with calculations. See if you can
figure out when the line below will show up:
E0514+51 -days since the corn was planted.
If you guessed from May 14th until July 4th, you're right! (I
wonder if it's high as an elephant's eye?)
Unfortunately, you can not use range dating to happen during a
specific year, since the year characters are used for the range value.
Range dates can work over year-ends, months and month-ends, but if
you intend to do that, be sure to put your line in one of the files
that will be read regardless of which month it is (in any of the files
listed under the keywords 'AdditionalFile' or AlternateFile' in your
TODAYS.CFG file).
One of the files you _should_ have gotten in the distribution
archive is TODAYS.RDT. This file, the "Range Date Test" file, shows
how Range Dates can be used in a variety of methods to make lines show
up at specific times of the month and year.
REPORTS
Starting with version 1.20 users can "design" the output report
through the use of a "TODAYS.RPT" file. The use of a TODAYS.RPT file
is not required, since the program also has it's own built in "default"
report.
TODAYS will look in three locations for TODAYS.RPT, and use the
first one it finds. It will first look in the Path set in the
TODAYS.CFG file, then in the default directory where TODAYS and
TODAYS.CFG are, and then where the Alternate data file is (if you're
using one).
TODAYS.RPT may contain any characters including VT-52, VT-100,
TX2, or IGS codes, so feel free to knock yourself out with that stuff.
(Personally I don't care much for it, but then I'm not running your
system, am I??)
The TODAYS.RPT file format uses two groups of "codes" to tell the
program where and what information you want printed out. Some of
these are generated internally by the TODAYS program, others come from
the lines of your TODAY.mmm data files. They're fairly simple, but
can be VERY confusing, so please read carefully!
Header Codes:
The simplest to explain of the two types of codes you can use in
your TODAYS.RPT file are called 'Header Codes'. These codes tell the
program where and in what order you would like the information that
TODAYS gathered from your data files to be printed out.
Header Codes all begin with the characters %H and end with
another percent sign (%). The next character after the %H tells the
program which type of data you want displayed at that point. For
instance, %HA% would tell the program that you want the type "A" data
to be printed there. The header line you've defined for type A data in
your TODAYS.CFG file will come out before the actual lines to provide a
'Heading' for the data.
Additionally (starting with version 2.01 of TODAYS), you can have
the program left or right justify the header line, or even center it.
The next character, the C for instance in the code %HAC% will tell
TODAYS to Center the header line. Replace the C with a L, and the
program will Left justify the line. If you use a R instead of a C or a
L, the program with Right justify the header line.
You may also tell TODAYS how many characters you want TODAYS to
left, right, or center on by adding that value after the L,R, or C.
%HAC69% tells TODAYS to Center the header line on 69 characters. If
you don't give TODAYS a value to left, right or center on, TODAYS will
use the Wrap value set in your TODAYS.CFG.
You should have one Header Code for each type of data in your
TODAY.mmm files in your TODAYS.RPT file. If you don't have a Header
Code for a type of data TODAYS has gathered, the data for that type
simply won't be displayed. That's not a 'bug' of the program, by the
way, that's a feature I designed in. (Seriously!) If you don't care
about type Q events, simply don't have a Heading Code for type Q data
(%HQ%) in your TODAYS.RPT file.
You may use and re-use your Header Codes as often as you'd like
in your TODAYS.RPT file. If you'd like the Type A events to come out
twice, all you have to do is to have two Header Codes for type A
events (%HA% twice) in your TODAYS.RPT file.
Function Codes:
Before I start talking about Function Codes, I want to *strongly*
urge you to print out the TODAYRPT.FMT file from the distribution
archive if you haven't already. This file tells all about the various
Function Codes and their options in a format that's _very_ easy to read
and understand.
Function Codes are calculations TODAYS does based on your
computer's current system calendar and clock settings, and the
information from the lines from your data files. They allow your
report to have the date, the day of the week, month, year, and more in
the way YOU want it.
TODAYS will even give you information on the various seasons, all
in a variety of formats.
This has been done to give YOU the flexibility you want in your
reports, so pick whichever best fit your needs for whatever you'd like
to see.
Function Codes are made up of 8 distinct parts. Function Codes
all begin with a %F. The next three characters tell TODAYS which
function you want (again, please refer to the TODAYRPT.FMT file for
all the various functions available), the next two characters tell the
program how you want it displayed (cardinal or ordinal, words or
numbers, etc.). The next characters tell how you want the program to
'justify' or 'align' the result of the Function Code. Finally, as with
the Header Code, another percent (%) sign ends the Code
The % characters, at the beginning and end, act as Start/Stop
marks for the program, just like with the Header codes. The words or
numbers which are the result of the Function Code are inserted BETWEEN
them, and the %'s are deleted.
For the following section, I refer to a "position" within the
code. Since the % characters must always be at the beginning and end,
do not count their "position." "Position 4," then, is the 4th
character *within* the beginning and ending % signs. Position 1 of a
Function Code is always the letter F.
Let's take a close look at one specific Function Code and how you
can use it in your report. Let's use the day of the week. Referring
to the list of Function Names in the TODAYRPT.FMT file, we find that
DOW is the 'function' for the Day of the Week. Remembering that all
Function Codes start with "%F", we attach the "DOW" to it, and so far
we have "%FDOW".
Like DOW, all functions are three letters long and are in
positions 2, 3, and 4 within a Function Code.
Now we have another decision to make: How do we want it
displayed.
Display Types (Position 5):
If you want the result of your Function Code to come out as a
number, you would put an N in position 5. "N" stands for "Numeric".
The code would look like this:
%FDOWN (Remember that it's not complete until you put in the
final %)
Some of the functions also have 'words' attached to them in the
TODAYS.LNG file. These are the functions for day of the week, the
months, the seasons, the 'periods' of the day (morning, afternoon,
evening, and night), and AM and PM. There are also a few functions
that deal with times and dates that are 'pre-defined' by normal usage.
Time is usually expressed in the format <hour>:<minute>:<second>
for example, and dates use either <month>/<day>/<year> or, in European
format as <day>.<month>.<year>, when we write them out.
With some functions, like DOW, you have a choice of words or
numbers. You might want to have the word for the day of the week come
out rather then the number ("Wednesday" for example rather then "4").
To do this, you'll want to put to put the letter A (for 'As defined')
in position 5 after %FDOW (rather then the N I mentioned above.)
To use the name of the day of the week, our function code would
look like this:
%FDOWA
Suppose you _do_ want the word 'Wednesday' to come out for your
day of the week, but you'd rather have it come out in all capital
letters (WEDNESDAY rather the Wednesday). By replacing the letter A
with a U (for Upper), TODAYS will do that for you.
"But Chuck, I _do_ want the number 4 to come out, but I want it
to come out as 'Four'! Can TODAYS do that?"
Oh, it sure can! All you have to do is to put a C where the A,
U, or N is in position 5 in the Function Code. C stands for
'Cardinal', and Cardinal numbers are those used when counting.
You can even have it come out as a 'Fourth', which is a 'Ordinal'
number by placing an O after %FDOW (that's a capital letter "o", not
the number 0 by the way). Ordinal numbers are numbers used when
you're showing order or succession, so to say that its the 'Fourth day
of the week' is (probably) better then saying that its the 'Four day
of the week', but you'll probably want to check that out with a
English Major. Me, I flunked English, so I speak American, where
there are no rules! <grin>
If you'd like the result to be displayed in Roman Numerals, you
would place a R in position 5, making the code (so far):
%FDOWR
Placing a E in position 5 gives you access to the External file
support routine. This uses the resultant number of the code to read
the resultant-th line PLUS 1 from a file named as a part of the
function code.
For example: %FDOWEd:\bbs\weekday.txt% will cause the program to
figure out the day of the week, add 1 to it, then read in that many
lines from the file "WEEKDAY.TXT" in the d:\bbs\ directory, and
replaces the function code with whatever it finds there. If the day
of the week was Wednesday, it would use the 5th line of the file and
insert that line into the report. (Wednesday is the fourth day of the
week, so 4+1=5 -> fifth line of d:\bbs\weekday.txt.)
In case you're wondering why the plus 1, that's so that function
calls resulting in 0 can still be used.
Modifiers (Position 6):
You can further 'modify' the Display Type with a Modifier Code in
position 6 of the Function Code. Here there are 4 options, but not
all of them may be available to you depending upon what Display Type
you choose.
If you've chosen to use either the A or U options, you can modify
it with the letter W. In other words, you want the program to display
the result of the Function Code "As a Word". Using the above example,
the code so far would look like this:
%FDOWAW
If you've chosen to have the result come out as either "Four" or
"Fourth" by putting either a C or an O, then you'll also want to put a
W in position 6. The code in the example would look like this:
%FDOWCW
The W modifier option can be used all the Display Types with the
exception of Roman Numerals (a R in position 5).
There is some 'duplication' in the results of some of the codes.
If you have a N in position 5 and a W in position 6, you'll get the
same thing as if you had put a C in position 5. Why the duplication?
Well, what else would you expect if you ask the program to produce a
"Numeric Word"?
If you want the number "4" to come out, but you want it to come
out as "4th", well, you can do that too! Simply put a N in the
display type, and then a S in position 6. (S is short for 'suffix'.)
That'll cause the program to give you the 'Numeric with Suffix'.
There's a fourth option available in the Modifier position, but
it doesn't have much use when dealing with a single digit number such
as the day of the week.
Placing an E in the 6th position will result in Each digit of the
number being converted over to words. This was originally designed
for the STD (STarDate) Function Code, so that each number would come
out as a separate word, just as they do on the TV show "Star Trek".
For example, if the STarDate was "48823" and you used the E modifier,
TODAYS would place "Four Eight Eight Two Three" in your report.
The only time the E option is valid is if you have either an O, a C,
or an N in the Display type.
Using the Each modifier with the O display type results in
'Ordinal' words, by the way, so use with caution. (For 48823 you'd
get out "Fourth Eighth Eighth Second Third" which doesn't make much
sense to me, but if you like it, feel free to use it.)
Justification:
The last Function Code option is the Justification. There are 5
options here, and they'll work regardless of what you've got in the
other code positions. You can choose from having the result of your
Function Code justified Left, Right, Centered, with zeros (if and only
if you've both positions 5 and 6 as numbers) or No Justification. No
Justification is probably what most of you will choose. The other
justification methods are used to either 'trim' the result off or if
you want you report to look like a table of some form.
When I described the Function Code format above I left out one
position. If you've got a printout of the TODAYRPT.FMT file, you've
probably already noticed that. Position 8 (and, if you need it 9, 10,
etc.) is for a number which can be between 1 and 32,767. It'll be
used to help you 'trim off' unwanted characters in your result, or to
help you line things up so that the results always appear in the same
place every time you run TODAYS.
Left and Right Justification:
You may want your report to come out with sort of a 'table' feel
to it. The SAMPLE2.RPT included in the release archive is an example
of what I mean. There are two 'characters' of numbers in the report,
one for the 'day of' numbers, and another for the 'days remaining'
numbers. Since these numbers change on a daily basis and sometimes
they're two digits long, sometimes one, sometimes three, the only way
to get them to line up nicely is to have the program 'justify' them so
that regardless of how long the number is, it'll always line up with
the other numbers.
The justification itself is really simple. Once you've told it
how long you want the result number (or word) to be, the program will
add spaces to either the left or right side of the result so that it
matches the length you've told it you want. Left justification adds
trailing spaces, right justification adds leading spaces.
"0" Justification:
Placing a 0 in position 7 is the same as doing right
justification, however instead of spaces, the program will add 0s to
the left of the result number to the length you've told it to be.
This way, you can have codes that come out like "030" or "003" rather
then " 30" or " 3". The 0 justification simply adds leading zeros.
Despite what I said above, the 0 option, in position 7, is only
valid if you have a N in both positions 4 and 5. Sorry about that.
Centering:
The Centering justification is a rarely used option. Basically
it works the same way as your typing teacher taught you how to center
a word on a page (if you're one of those people like me who's old
enough to have had a typing teacher!). It takes the 'justification
value' and subtracts the length of the result from it, then divides
that number in half, and puts that many spaces in front of the result,
and the same number of spaces after the result. It's useful for
making your report come out like this:
Saturday
July
25th
1992
by simply putting:
%FDOWAWC69%
%FMONAWC69%
%FDOMNSC69%
%FYR4NNC69%
in your report. You'll note that I didn't need to use a lot of spaces
in the report, but I sure got a lot out of the program!
Trimming:
Suppose that you've decided that you want your day of the week
result to show up as "Wed" rather then "Wednesday". By using the
'trimming' available to you in the Justification you can do that. All
you need to do is to use Left justification and a justification value
of 3 in position 8. Your code then, would look like this:
%FDOWAWL3%
You can also trim 'right' by using Right justification, however
for the day of the week option it's a bit silly. If you use the code
%FDOWAWR3%, all you'll ever get out of it will be "day" since the last
three characters of the days of the week is "day". You might find it
useful for other codes though.
Math!
You can do _limited_ math funtions within TODAYS. *Very* limited!
Currently the only math allowed is addition, subtraction,
multipication, division, and modula (MOD).
To use TODAYS math within Function codes, the equation you want
TODAYS to perform *MUST* be enclosed in the brackets: []. For example,
to have TODAYS find the day of the year and add 6 to it, you would use
the code: %FDOY[+6]NNN%. (The NNN can be any valid Display Type,
Modifier, and Justification. I just picked those for simplicity.)
You may choose to do more then one operation within the brackets
if you so choose. The math is performed in a simple left to right
operation. For example, %FJOD[&3+1*10]NNN% will find the Julian Date,
mod 3 it, add 1, and multiply the result by 10. "Nesting" of
parenthases or brackets is *not* allowed! Only left to right
operations!
One example of how you might use math in a function code is in a
Birthday display. Suppose that you've got a line in your data file
that goes:
#0508 #Days until Julie's Birthday
This will give you a reminder of how many days until Julie's birthday.
Great, but how _old_ will she be this birthday? There's no way to
calculate that, because if you put a year value in it, the line won't
show up at all because the year is past, and countdowns never appear on
the date that's on the line! So let's change the line a little bit so
that it _will_ show her age:
#0508 #%FTUCNNR9% %FTUCPWN% Until Julie's %FYR4[-1989]NSN% Birthday
The %FTUCNNR9% aligns the number of days until the date on the line
to be right for 9 spaces.
The %FTUCPWN% tells TODAYS to figure out if it's "Days" or just
the singluar "Day" (as in 1 day).
The %FYR4[-1989]NSN% figures out the current year to 4 digits
(that's the YR4 part), subtracts 1989 from it (that's the [-1989] part)
and then figures out the correct "th", "nd", or "st" plural suffix to
add on.
With the line above, on 05/01/1994, we'd see in our report the
line:
7 Days Until Julie's 5th Birthday
As I said before, that's one example. Feel free to make up your
own to do whatever you need.
A WORD ABOUT THE TODAYS.RPT, THE DEFAULT REPORT AND HEADER LINES
If you've reached this point in the documentation you're probably
some what confused on what all is going on with these reports. The
program has a built in report, but you can use your own. Why, you
might be asking, are all the header lines for the various types in the
TODAYS.CFG file rather then in the TODAYS.RPT file?!? And if we don't
have to have those header lines, why are they there?!? A bit of
history about the program may answer those questions for you.
The original TODAY/ST program, and even the current TODAY/PC
program allows users to have only 3 types of data: Birthdays, Special
events, and Reminders. The programs separated the types for you,
provided their own headers, and that was that. Very little user
customization is allowed.
Even in the most current version of TODAY/PC (version 3.4 as of
this writing) about all the user can select is the colors of the
various parts of the display. None of the %F options are available,
nor are any of the %H options. You get what the programmer likes, and
that's it. Period. Personally, that's too restrictive for my tastes
(and hopefully yours!), so I added in the TODAYS.RPT file. In there,
users can customize to their heart's delight.
The header lines used to be in the TODAYS.RPT file and not in the
TODAYS.CFG file, but there was a problem. Suppose you didn't find a
birthday in your run. Well, out would pop the header for birthdays,
but since there weren't any birthdays to display, all you got was a
blank line.
There was also a problem in the 'built-in' report. How could I
'move' the header lines from the TODAYS.RPT file to the built-in
report? Especially if the user chose not to use a TODAYS.RPT file at
all!
After fiddling around a while, I decided to put the header lines
into the TODAYS.CFG file. This allowed them to be in two places at
the same time (both the TODAYS.RPT file and the built-in report) and
still allowed them to be user-configurable. And by first looking to
see what data the program had collected, the program could figure out
which to use and which not to use!
Although putting the header lines in the TODAYS.CFG file solved
one problem, it's created another. (It always seems to work that
way.) Suppose you declare a type in your TODAYS.RPT file, but don't
make a header line for it in your TODAYS.CFG file? Well, the answer
is that it'll still be printed out, there just won't be a header line
for it. Also, if you've got your TODAYS.RPT file set up like I've set
it up in the one that is distributed with the program, it'll appear to
'merge' in with the data from the previous category under the heading
for that category. That will also happen if you're using the built-in
report.
ERRORS!!!
If TODAYS can't understand something in either your TODAYS.CFG or
TODAYS.RPT files, or if it can't find the files you tell it to use,
TODAYS will generate a report in the default directory called
TODAYS.ERR. This file will attempt to explain to you what it found
wrong.
I have to admit here that I didn't try to have the program
describe in detail every possible error that could occur, but it does
do things like report codes it doesn't understand in your TODAYS.RPT
file, files you told it to use but it can't find, etc., etc.
When something goes wrong, your first response should be to look
for a TODAYS.ERR file. It'll help you fix 99.999% of your problems.
The TODAYS.ERR file may also be re-directed to another file if you
so choose, through the use of the ErrorFile keyword in the TODAYS.CFG
file. If you have re-directed the Error Report, please look for the
errors in _that_ file.
LIMITS
Although I've tried to keep as many limits out of this program as
possible, there are a few I can't do anything about. Most
significantly is the 32,767 limit imposed by programming in GFA and
most other languages.
About the only time a user will encounter this limit is in the
text files they create. Users should be aware that the maximum file
size for the TODAYS.RPT is 32,767 characters *AFTER* all the %F
commands have been converted. It's going to be VERY rare that a user
will encounter this, you'd have to have quite a file for this to
happen! Basically, you shouldn't worry about it unless you get an
error code 10 while the program is converting TODAYS.RPT. (Error code
10 is the GFA error for 'line too long'.)
An even rarer event would be having a 32,767 characters in a
single line of data to be displayed. Since that's about 409 lines each
being 80 characters long all with a C in character 10 one after the
other, you'll probably never see that.
Your data files can be longer than 32,767 bytes, just to make that
clear. It's just the individual lines within the file that can't be
more than 32,767 characters long.
RUNNING TODAYS
To run the TODAYS program after you've got it set up, simply
double click on the program.
While TODAYS in running, you can press the "Undo" key to 'abort'
the read of a data file. This is useful to those of you who are '1
big file' users and have a large file sorted by the date.
Once you've pressed the Undo key, the program will go on to read
the next file you've told the program to use in your TODAYS.CFG file,
or to produce the report if it's the last file that's to be read in.
No other key presses have any effect, and pressing the Undo key
will not generate an error.
"Quick Mode" can be used to speed up the reading of the data
files. When Quick Mode is used, the program will self-abort the
reading of a data file when it detects that the line it's reading is of
a date greater then the date it's running for.
In other words, if the date TODAYS is running for is February 4th
and Quick Mode is turned on, TODAYS will stop reading that data file
as soon as it detects a date on the data file line as one that comes
after February 4th. Be sure to have your data files sorted on
characters 2-9 if your using Quick Mode!
Quick Mode will also work with the 'file numbering' method so
that you can tell TODAYS which files to apply Quick Mode to.
To apply Quick Mode only to the AdditionalFiles and/or
AlternateFile in your TODAYS.CFG file, you should give TODAYS the
command /q13 on the command line. To apply it only to the monthly
files, use /q-13.
Your individual usage of the number may vary according to your
needs and how many files you have.
If, for instance, you have two AdditionalFiles in your TODAYS.CFG
and an AlternateFile as well, the first AdditionalFile would be file
number 13, the second would be file number 14, and the AlternateFile
would be number 15. So if you wanted to apply quick mode to only the
AlternateFile, you would use q15. To apply quick mode to *all* the
files *except* the AlternateFile, you'd use /q-14.
As mentioned above, TODAYS can now be run as a TTP or GTP program.
There are a variety of "switches" that you can set to change things
within the program, including what date to run for.
NOTE: You *must* still use a TODAYS.CFG file. The command line
switches are intended to make temporary changes to your TODAYS.CFG
file, not replace it!
Command Line switches for TODAYS version 2.01:
/a - set age value
/d - set date (mm/dd/yyyy or dd.mm.yyyy if yyyy not given, uses
current year. note FOUR digit year!)
/fa - set alternate file to use
/fc - set which/where TODAYS.CFG file to use
/fe - set error report file/peripheral name
/fl - set TODAYS.LNG file to use
/fo - set output file/peripheral name
/fp - set default path
/fr - set report file to use
/f+ - set additional files to use
/i - set second line indents
/m - set replace/append mode for output
/n - set nomonthly mode on (TODAYS won't look for or use the
TODAY.mmm monthly files)
/q - set quick mode on/files to use Quick Mode on
/s - set sort mode and/or categories to sort on
/t - set test mode (noshow,show,show2,showa)
/v - ok to use version x.xx LNG file
/vi - ignore version numbers (use only with *extreme* caution!)
/w - set column to wrap the lines on
/0 - set 0's replacement string
/1 - use only the alternate file ("1 big file" mode)
/$c - set carriage return string
/$s - set year/text separator string
/$t - set pre-text string
/$y - set pre-year string
usage:
/w40 /frD:\bbs\xe\atascii.rpt /d12/31 /mR /foD:\BBS\XE\WELCOME.TXT
meanings:
/w40 - wrap on the 40th column (40 column screen)
/frd:\bbs\xe\atascii.rpt - use the "ATASCII.RPT" file in D:\BBS\XE\
/d12/31 - run for December 31st of current year
/mR - Replace the output file if one is already there
/foD:\BBS\XE\WELCOME.TXT - send report to the "WELCOME.TXT" in the
D:\BBS\XE\ folder
NOTE: When using the /f commands, it is best to use the complete
GEM <drive>:\<path>\<filename.ext> description for the file you want
TODAYS to use.
When sending output to the screen, please use the keyword CON:
including the colon (:). For printer output, use PRN: including the
colon.
SCREEN OUTPUT
It is not suggested, however you _can_ send the output from TODAYS
directly to the monitor. The reason it's not suggested is that there
is almost always more then one "screen full" of output, and it will
scroll by _very_ fast.
Beginning with TODAYS version 2.01 however, there is a routine
that will allow you to "hold" the display if you wish. Note: The
following _only_ works if you have selected to send your output to
"CON:" in your TODAYS.CFG, or on the command line when you run
TODAYS.TTP!
When TODAYS is done processing the data files, doing any sorting
you tell it to do, ect., TODAYS will prompt you to "press any key to
continue". After you do so, TODAYS will start sending it's output to
the screen. You may press any key, at any time, to "hold" the display.
When TODAYS detects that you have pressed a key, it will display a
inverse video "bar" where you stopped it, and prompt you to "press any
key to continue or wait for the timer to reach 0". If you look to the
very right of the bar, you'll see a "clock" of sorts that counts down.
When it reaches zero, or if you press a key, TODAYS will erase the bar
and continue on displaying the data.
You may use the "hold" as often as you want during the display.
This feature was added due to the sheer volume of user requests for
such a feature.
Unfortunately, there's no provision for TODAYS to go backwards in
it's display. If you need a feature like this, you'll need to write
the output file to disk and use a file viewer of some kind.
The time you want the display to "hold" for is adjustable through
the use of the Hold keyword in TODAYS.CFG.
The reason there's a "clock" there, in case you're interested, is
that TODAYS is run by several BBS System Operators, and the clock
allows TODAYS to exit, gracefully, if it's left unattended, so that
their BBS won't be locked up all night (or all weekend!) waiting for
someone to press a key. This tends to upset BBS users more then
SysOps, not so suprisingly....
LEGAL STUFF
This program was written and complied in GFA Basic version 3.6, on
a Atari TT computer. This work is my own, I didn't 'borrow' any
routines from anyone else.
The program name, TODAYS, the documentation, and the program
itself is Copyright 1993 to me, Chuck Grimsby. Feel free, however, to
distribute the program as far as you feel you want to. PLEASE do not
alter the distribution archive in any manor when you do so. (Plain
common courtesy, I should think....)
You do not have to send me any money to use this program. I
donate it's _USE_ to the Atari user base freely. (Heck, I'm going to
program regardless what bucks you send! Programming is my hobby. It's
what I call 'fun'.)
If you feel a real need to send money, send it to some charity you
feel deserves it. (Feel free to include your own retirement, or kid's
college fund.)
Those of you who are married, send a flower or some cheap gift to
your spouse. (That includes you women out there!)
Those of you who are single, send one to your mom, dad, sister,
brother, girlfriend, boyfriend, boss, co-worker, or present one to some
stranger you pass on the street. (It's fun. The looks on their
faces...)
Formerly married? Send one to your ex-spouse. That'll confuse
the heck out of 'em! <grin> (Probably'll blow their lawyer's mind
too!)
What else should I say here? Oh, I suppose something like:
"You use this program at your own risk. I cannot be held
responsible for any physical or monetary loss incurred by it's
use or mis-use, fitness for use, or inability to use."
Or something like that. Basically, if you choose to use the
program, don't blame me if things go wrong. All I can say for sure is
that it works on my system, with my data files, and my system
configuration.
Problems? Questions? Requests for changes?
All of the above can be sent to me at the electronic address
below:
The FlightLine BBS 612-544-5118 1200-14.4 (HST/V.32 dual) 24 hours
FIDO-Net: 1:282/47.1 (Route through 1:282/47.0 please.
I'm *not* in the nodelist!)
AtariNet: 51:1/15
GEnie: C.GRIMSBY
I also read the Atari_ST echo on FIDO-Net and Usenet's
comp.sys.atari.st newsgroup, so you can send me a message through there
as well.
Note to FIDO-Net users: I received a several inquiries about this
program via FIDO-Net's "Net Mail" (Private user-to-user on different
systems). Unfortunately, I wasn't able to respond to some of the
messages because the SysOps of those systems don't allow their users to
receive Net Mail. (Why they allow them to send them is something I'm
still trying to figure out...) Just be aware that if you don't get a
response from me, I may have tried to, but for some reason it just
didn't get through. <sigh> Where's that "Information Highway" on-
ramp?!?