home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / apps / bbs / today201 / todays.doc < prev    next >
Text File  |  1994-10-29  |  70KB  |  2,047 lines

  1.      Version 2.01                                                   10/29/94
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.                                      TODAYS
  9.  
  10.        A program to display events and information on a date in history
  11.  
  12.                              Original program by
  13.                                  Mike Butler
  14.  
  15.                            This Atari ST version by
  16.                                 Chuck Grimsby
  17.  
  18.                  Documentation written with the assistance of
  19.                                Ira C. Brickman
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.           Hello out there in FREEWARE-land!  It's me once again, with
  70.      another program.  Or rather, another version of a program!
  71.  
  72.                     THE FILES IN THIS DISTRIBUTION PACKAGE
  73.  
  74.      RELEASE.201   "Press" Release message.
  75.      UPGRADE.201   For users upgrading from verson 2.00.  Details some of
  76.                    the changes.
  77.  
  78.      SAMPLE1.RPT   Sample TODAYS.RPT files that show various ways you
  79.      SAMPLE2.RPT   can use the functions in TODAYS to display various
  80.      SAMPLE3.RPT   things.
  81.      SAMPLE4.RPT
  82.  
  83.      TODAYS.PRG:   The program which brings together information from
  84.       v. 2.01      various text files, selects and sorts the information
  85.                    based on the system date of your computer, and prints or
  86.                    displays the information in a report.
  87.  
  88.      TODAYS.RPT:   The report layout and format.
  89.  
  90.      TODAY.RDT:    A 'test' file to show how the new Range Date feature can
  91.                    be used.
  92.  
  93.      TODAY.LNT:    Lenten calender for 1994.  Just for fun!
  94.      TODAY.HOL:    US holidays.  Again, just for fun.
  95.  
  96.      TODAYS.LNG:   Tells TODAYS how to print or display numerical
  97.                    information, and the words for any error reports
  98.                    generated.
  99.  
  100.      TODAYRPT.FMT: A Help File that explains the various function codes that
  101.                    can be used in reports.
  102.  
  103.      TODAYS.RPX:   A Help File of sorts that lists most of the function
  104.                    codes used to calculate and print or display information
  105.                    in reports.
  106.  
  107.      T_UP201.PRG:  A program for users upgrading from version 2.00. Converts
  108.                    the old TODAYS.INF and TODAYS.HDR to the new TODAYS.CFG.
  109.  
  110.      T_SETUP.PRG   A program to help new users set up and run TODAYS v.201.
  111.  
  112.      TODAYSCFG.NEW A TODAYS.CFG 'template' file to be used by the TUP201.PRG
  113.        PLEASE      (for those updating from earlier versions on TODAYS) and
  114.        DO NOT      T_SETUP.PRG (for new users).  This file contains special
  115.        ALTER       "codes" that TUP201.PRG and T_SETUP.PRG will use to help
  116.       THIS FILE!   in the conversion or set up process.
  117.  
  118.      TODAYS.DOC:   This documentation file for TODAYS users.
  119.  
  120.      TODAYS_H.DOC: A longer history, and thank you to those who have helped
  121.                    in the development of the TODAYS program.
  122.  
  123.      Note!  You must run T_SETUP.PRG or T_UP201.PRG before running
  124.      TODAYS.PRG!  These programs will create the configuration file
  125.      (TODAYS.CFG) for TODAYS.  TODAYS.CFG is *NOT* included in the
  126.      distribution archive so that _will_ run one of the above programs!
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.                             A SHORT HISTORY OF TODAYS
  135.  
  136.           This program has a rather curious history.  In about 1987 or
  137.      1988, one of my favorite BBS's (The FlightLine BBS (612-544-5118), 24
  138.      hours, 365 Days, 300/1200/2400/9600/14.4 Baud HST/V.32 _still_ one my
  139.      favorites after all these years!) ran a program that created a
  140.      "welcome" message to it's users that listed what happened on that date
  141.      in history.  It was a nice program, but from time to time it would
  142.      "hiccup" and strange things would happen.  After watching these
  143.      "hiccups" for a while, I finally got fed up and decided to do something
  144.      about it.
  145.  
  146.           I tried to find a copy of the program through the 'normal'
  147.      sources (local BBSs, User Group libraries, GEnie, CompuServe, etc.)
  148.      but I couldn't find it.  Finally, I requested, and got, a copy of the
  149.      program and it's data files from the SysOp of that BBS.  There wasn't
  150.      any documentation with the programs, but I proceeded to "reverse-
  151.      engineer" the data files to create a program that was a bit more
  152.      stable.  TODAYS.TOS version 1.01 was the result.
  153.  
  154.           After releasing that version to the general Atari ST public, I
  155.      started getting requests, make that *REQUESTS*, to "enhance" the
  156.      program.  For a while, I granted the requests and I was releasing new
  157.      versions darn near weekly.  Then I got bored with it and moved on to
  158.      other programs.  Late in 1991, I started thinking of the program
  159.      again, got out all those old enhancement requests, added a few of my
  160.      own ideas, and started working on it.  In 1992, I released versions
  161.      1.95 through 2.00.  2.00 had some bugs in it, so in early 1993 I
  162.      released version 2.00b.  I was already hard at work on version 2.01,
  163.      but I thought it was important to get out a good _quality_ program that
  164.      was useable.
  165.  
  166.           Well, that's my history with the program.  The history of this
  167.      program's concept is even older, and stranger, than that!  Someone
  168.      (sorry, I lost the person's name) was kind enough to E-Mail me a copy
  169.      of the IBM/PC version of TODAY complete with docs. (No version of the
  170.      ST program I've ever seen has had any documentation with it!)  As it
  171.      turns out, this program goes way back to the days before there were
  172.      home computers, only main frames!
  173.  
  174.           According to the information I now have, It was originally
  175.      written by Mike Butler in PL/1 on a VM/CMS system.  He should receive
  176.      all the credit for the basic data file format, and for most of the data
  177.      in the TODAYSDAT.LZH files as well!  (You'll note a _strong_ San
  178.      Francisco "flavor" to the files.  I assume that's where Mike Butler is
  179.      or was when he wrote them.)
  180.  
  181.           The two Atari ST versions of the "TODAY.TOS" (note that the word
  182.      "today" is singular) programs I've seen were written by John Nastasi.
  183.  
  184.           This program retains it's compatibility with earlier versions,
  185.      and even with current versions on other computers, however this
  186.      program is HEAVILY enhanced and may use the data files in ways that
  187.      other versions on other computers do not.  To put it another way:
  188.  
  189.                "This program maintains DOWNWARD compatibility,
  190.                   but not necessarily CROSS compatibility!"
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.                                    SET UP
  201.  
  202.           Before you begin, you will want to get a copy of the data files
  203.      from somewhere.  They are fairly easy to find.  Both GEnie and
  204.      CompuServe have them in both their IBM/PC and Atari ST areas.  Simply
  205.      do a search for the word 'TODAY' or 'HISTORY' in those areas and you'll
  206.      find them. (In GEnie's Atari ST RoundTable, the file is called
  207.      "TODAYDAT.LZH" and is file # 26468. Or at least it _was_ when I
  208.      uploaded it!)
  209.  
  210.           I don't distribute the data files with this program as once
  211.      downloaded, there's no need to do it again, and why make users pay for
  212.      all that extra download time?
  213.  
  214.           Feel free to make up your own (or add to those you already have)
  215.      by following the format laid down in the DATA FILES section of this
  216.      document.
  217.  
  218.           NOTE: Many other programs of this type, both for the Atari ST/TT
  219.      computers, IBM/Clones, Macintosh, and others use similar data
  220.      structures and can be easily converted over.
  221.  
  222.           OK, now that you've got some data to work with, you'll need to
  223.      set up some files to tell the program what to do.
  224.  
  225.           NOTE: Users are *strongly* urged to take a moment and print out
  226.      the TODAYS.CFG, TODAYS.RPT, and TODAYRPT.FMT files included in the
  227.      distribution archive before continuing!  This isn't required, however
  228.      it does make the set up, and the understanding of the set up, MUCH
  229.      simpler!
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                                   TODAYS.CFG
  267.  
  268.           TODAYS.CFG provides the program with most of the information it
  269.      needs to run.  TODAYS.CFG can be created with any word processor or
  270.      text editor that can save ASCII documents.  Take a look now at the
  271.      TODAYS.CFG file that was included with this distribution package.
  272.      You'll see that it's "self-documented", that is to say that all the
  273.      commands are explained within the TODAYS.CFG file itself.
  274.  
  275.           The commands in TODAYS.CFG tell TODAYS how you want the program to
  276.      run.  There are more commands in there then I originally thought there
  277.      ever would be, but then that's what happens with a user driven program.
  278.  
  279.  
  280.                                   TODAYS.LNG
  281.  
  282.           The TODAYS.LNG file contains the 'language' or words that the
  283.      program will use for things like the day of the week, the names of the
  284.      months, the time of day, numbers, etc.
  285.  
  286.           It also contains the words TODAYS will use in error messages,
  287.      should it need to give one.  You may edit this file as much as you
  288.      like, however: DO NOT CHANGE THE ORDER!  (Things will get _really_
  289.      messed up if you do!)
  290.  
  291.           For those of you who would rather have the text come out in
  292.      French, German, Spanish, or whatever, here's where you make those
  293.      changes.
  294.  
  295.           The only 'tricky' thing about the TODAYS.LNG file is that TODAYS
  296.      will only use whatever is from the leftmost edge of the line to
  297.      wherever you've put a semi-colon (;) on the line.  Anything after that
  298.      is ignored, so feel free to make whatever comments you like after the
  299.      semi-colon.
  300.  
  301.           The format of TODAYS.LNG is simple, pure ASCII.  Please feel free
  302.      to include whatever other codes you want to make whatever changes you
  303.      want to happen in it.  TODAYS won't do any checking on the file other
  304.      then the semi-colon mentioned above, and checking the first line of the
  305.      file for the version number.
  306.  
  307.           As I just mentioned, the first line of TODAYS.LNG must contain the
  308.      version number!  This is rather important as running with mis-matched
  309.      TODAYS.LNG and TODAYS programs can produce some very weird results!  No
  310.      harm will come from it, but the output of TODAYS won't make much sense.
  311.  
  312.           TODAYS will check the first line of the TODAYS.LNG file for the
  313.      version number, and if it doesn't match the version number of the
  314.      program, TODAYS will self-abort it's run.
  315.  
  316.           NOTE: Since the way other languages work for converting numerical
  317.      symbols to words is different from English, I can't make any sort of
  318.      guaranty that the routine I use in this program will work, but feel
  319.      free to give it a shot!
  320.  
  321.           ALSO NOTE: If you change the names of the months in the
  322.      TODAYS.LNG file, you'll also have to change the names of the TODAY.mmm
  323.      monthly files.  TODAYS gets the names of file to read by using the
  324.      three leftmost characters of the month names in TODAYS.LNG.
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.                                   DATA FILES
  333.  
  334.           The file structure of the TODAY.mmm files is a simple, but
  335.      EXTREMELY efficient and effective one!
  336.  
  337.           In the TODAYDAT.LZH file (available from GEnie and many local
  338.      BBSs), there are separate data files for each month, with the extender
  339.      being the 3-character name of the month. i.e. the January file should
  340.      be named TODAY.JAN, the February file TODAY.FEB, the March file
  341.      TODAY.MAR and so on.
  342.  
  343.           Just to make sure, the extenders are: JAN, FEB, MAR, APR, MAY,
  344.      JUN, JUL, AUG, SEP, OCT, NOV, and DEC.  (If you're not running in
  345.      English, please see the note about month names in the TODAYS.LNG
  346.      section.)
  347.  
  348.           The program reads these files according to what month the system
  349.      clock is set to.  If the system clock is set for a day in January the
  350.      TODAY.JAN file is read, if it's set for a date in February the
  351.      TODAY.FEB file is read, and so on.
  352.  
  353.           Older versions required these files, but current versions allow
  354.      you to have them or not. (I think it is a good idea to have them
  355.      though, just for simple data management.)  You can have other files of
  356.      course, just simply tell TODAYS the filename extenders you want to use
  357.      in your TODAYS.CFG file after the keyword 'AdditionalFiles'.  You can
  358.      also have all your data in one big file if you so wish: the one you
  359.      name with the keyword 'AlternateFile' in your TODAYS.CFG file.
  360.  
  361.           You can also use all three methods at the same time!
  362.  
  363.           You do not have to put the data into any particular order.  If you
  364.      want to separate out the birthdays from the events and put them in
  365.      chronological order feel free to do so.  TODAYS won't care WHAT order
  366.      they are in!
  367.  
  368.  
  369.           All the data files follow the exact same format:
  370.  
  371.           The first 10 characters on each line is data for the program to
  372.      use, the rest is information to be displayed.
  373.  
  374.           Each event needs a separate line.
  375.  
  376.           Each line can be as long or as short as you want it to be.  TODAYS
  377.      will "wrap" the lines automatically for you. (This is a feature unique
  378.      to TODAYS.  The versions on other computers don't have it!)  I tested
  379.      it with a couple of 255 character long lines, and it does quite well.
  380.  
  381.      Some typical lines in your data files might look like this:
  382.  
  383.      B03211685 Johnann Sabatian Bach (composer)
  384.      S03271945 The Last V-2 rocket is fired in WW II
  385.      D04261989 Lucille Ball died
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.                        The First Character of Each Line:
  399.  
  400.           The first character on the line tells the program what type of
  401.      event this is.  Although the original TODAY program only supported 3
  402.      types of events, TODAYS allows you to use whatever you want for your
  403.      data types, and however many you want!  There are however two
  404.      exceptions to this that are hard coded into the program.  Those are:
  405.  
  406.           * (which means "Ignore this line"), and
  407.           ^ (which means "Friday the 13th").
  408.  
  409.           Unfortunately, you can't use % as a type code either due to the way
  410.      that the report generation routine works.
  411.  
  412.                                    The Date:
  413.  
  414.           The next 4 characters on the line (Columns 2-5) are for the month
  415.      and day. Both the month and the day are ALWAYS 2 characters long each!
  416.      (i.e. January 5th is 0105, February 9th is 0209, and November 21st is
  417.      1121.) You may use spaces instead of 0's as place holders if you like,
  418.      just remember that you *MUST* use either a space or a 0 to make
  419.      everything work right.
  420.  
  421.                  Using The Day of The Year Instead of The Date:
  422.  
  423.           A request was made to allow the user to use the 'day of the year'
  424.      or 'Julian Period' instead of the month and the day.  Since this was
  425.      rather easy to code, I put it in.  This is another feature unique to
  426.      the Atari ST/TT version.  By putting a pound sign (#) in character 2,
  427.      characters 3-5 become the day of the year.  As above, use either
  428.      leading zeros or spaces to make the date 3 characters long.
  429.  
  430.           When using the day of the year, remember that on leap years the
  431.      'day of the year' will be one day greater then on non-leap years for
  432.      dates after February 29th, the 59th day of the year.  (On non-leap
  433.      years, the 59th day of the year is March 1st, on leap years, it's
  434.      February 29th.)
  435.  
  436.            Using the 7-digit Julian date instead of the Gregorian date:
  437.  
  438.           You may also use a 'Julian date' by placing a ^ in column 2 and
  439.      then the 7-digit julian date in columns 3-9.
  440.  
  441.           To tell the truth, I'm not sure how well this works as I've only
  442.      heard back from one user who's used it, but he says it works fine.
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.                                    The Year:
  465.  
  466.           The next 4 characters on the line (characters 6-9) are for the
  467.      year the event or birthday occurred.  In cases of holidays and
  468.      repeating events such as the American Independence Day (July 4th) the
  469.      year isn't used, so for Holidays these characters can be left blank or
  470.      filled with zeros.
  471.  
  472.           For years "B.C.", you can use a negative number _IF_ it will fit
  473.      into these four characters.  Use either spaces or zeros as place
  474.      holders if you need them for 3 or 2 digit years.
  475.  
  476.                                   Your Event:
  477.  
  478.           Characters in positions 11 and beyond are for whatever text you
  479.      want displayed or printed.
  480.  
  481.  
  482.                               The 10th Character:
  483.  
  484.           You may have noticed I skipped over the 10th character of the data
  485.      line.  The 10th character is a "strange" one, but quite useful.
  486.      Suppose you have a holiday, like Thanksgiving for instance, that occurs
  487.      ONLY on Thursdays.  In this case, a 5 should be the 10th character in
  488.      the data line about Thanksgiving.  (Thursday is the 5th day of the
  489.      week, starting with Sunday as Day 1 of the week.)
  490.  
  491.           Memorial Day, which can only happen on a Monday, should have a
  492.      2 as the 10th character since Monday is the 2nd day of the week.
  493.  
  494.           Election days in the USA can only happen on Tuesdays, so the 10th
  495.      character is a 3.
  496.  
  497.           Ash Wednesdays can only happen on Wednesdays, so the 10th
  498.      character is a 4.
  499.  
  500.           Good Friday can only happen on a Friday so a 6 is the 10th
  501.      character.
  502.  
  503.           Get the picture?  Saturday Holidays get a 7 and Sunday holidays
  504.      have a 1 in character 10.  (Did I get every day of the week??)
  505.  
  506.           If an Event takes two or more lines to describe, you can put a C
  507.      into the 10th character.  (Since TODAYS allows the use of very long
  508.      lines, this is fairly rare, but to maintain compatibility with older
  509.      versions, and just in case, I left it in.)
  510.  
  511.           NOTE: Using a C in character 10 causes the program to 'append'
  512.      the text on the line to the _last_ _line_ _accepted_.  If the line,
  513.      when displayed, isn't 'attached' to the correct line, go into your data
  514.      files and see if they are in the proper order, and that the two dates
  515.      (in characters 2-9) match.
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.           See, I told you character 10 codes were weird.  But wait!  There's
  531.      more!  The following character codes are "unique" to the Atari ST/TT
  532.      version of TODAYS, and may not work on programs for other computers:
  533.  
  534.           If the event only happens on weekdays (Monday through Friday)
  535.      placing a 8 in into the 10th character will stop it from being
  536.      displayed on the weekend.
  537.  
  538.           If the event happens only on weekends (either Saturday or
  539.      Sunday), placing a 9 as the 10th character will prevent the line from
  540.      being displayed on weekdays.
  541.  
  542.           If the event happens only on Business days (as you've configured
  543.      your business days in TODAYS.CFG), placing a B in the 10th character
  544.      will tell TODAYS to only display the line on business days.
  545.  
  546.           If the event happens only on Non-Business days (as you've
  547.      configured your business days in TODAYS.CFG), placing a N in the 10th
  548.      character will tell TODAYS to only display the line on days that are
  549.      not in your BusinessDays configuration line.
  550.  
  551.           If you want a line to be displayed only if it's a Leap year,
  552.      placing a L in the 10th character will do that.
  553.  
  554.           If you want a line to be displayed _only_ on non-leap years,
  555.      placing a R in the 10th character will allow that. (Regular year.  I
  556.      ran out of codes...)
  557.  
  558.           If you want a line to be displayed _only_ if the month, day of
  559.      month, and year all match the date you're running for, placing a E in
  560.      the 10th character will allow this to happen. (A "Exact" match.)
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.                                CALCULATED DATES
  597.  
  598.           The TODAYS program also supports six more functions that the
  599.      original TODAY program didn't.  Nor, as far as I can tell, do current
  600.      versions on other computers.  These I refer to as "Calculated dates",
  601.      and here's how they work:
  602.  
  603.           If there is an asterisk (*) in character 10, the program will
  604.      calculate the number of days from the system date to that date.  The
  605.      program will return with the number of days until that date, then a
  606.      space, then whatever text you have on that line. For example, suppose
  607.      in your TODAY.DEC you have the following line:
  608.  
  609.      S1225    *More shopping days until Christmas!
  610.  
  611.      You'll note that there isn't a year defined.  Since Christmas occurs
  612.      every year on the same date, one isn't needed.
  613.  
  614.      On November 25th, the program will print out:
  615.  
  616.         30 More shopping days until Christmas!
  617.  
  618.      On December 16th, the program will print out:
  619.  
  620.          9 More shopping days until Christmas!
  621.  
  622.      Unfortunately, on December 26th, the program will print out:
  623.  
  624.        365 More shopping days until Christmas!
  625.  
  626.           If you don't want this line to be printed out after the date has
  627.      happened, use a plus sign (+) instead of a asterisk (*) in character
  628.      10.
  629.  
  630.           A minus sign (-) in character 10 gives the number of days SINCE
  631.      the date in characters 2-5.
  632.  
  633.           Remember that "Age Value" in the TODAYS.CFG file?  Here is where
  634.      it is used.  If you have set a Age Value of 30 in your TODAY.CFG file,
  635.      and you have a pound sign (#) in character 10 instead of the asterisk
  636.      (*), this line will only be printed out if today's date is within 30
  637.      days of 12/25.  It won't be printed out after that date, or before 30
  638.      days before 12/25.
  639.  
  640.           Placing a percent sign (%) in character 10 does the same as a #,
  641.      except instead of giving the number of days until the date, you get the
  642.      number of days since an event, until you hit the Age limit set in the
  643.      TODAYS.CFG file.
  644.  
  645.           Placing a ampersand (&) in character 10 does the same as using
  646.      both the % and #.  You get both the number of days until the date, and
  647.      the number of days since the date, as long as it's within the range set
  648.      with the Age value.
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.      Column 10 Summary:
  663.  
  664.           The following summary is presented in the data file format.
  665.  
  666.           If, for example, you have a calculated event on July 4th, you can
  667.      use character 10 in the following ways:
  668.  
  669.      This is the 10th character
  670.                |
  671.               \|/
  672.  
  673.      S0704     1Print if the event is on a Sunday
  674.      S0704     2Print if the event is on a Monday
  675.      S0704     3Print if the event is on a Tuesday
  676.      S0704     4Print if the event is on a Wednesday
  677.      S0704     5Print if the event is on a Thursday
  678.      S0704     6Print if the event is on a Friday
  679.      S0704     7Print if the event is on a Saturday
  680.      S0704     8Print if the event is on a Weekday (Monday - Friday)
  681.      S0704     9Print if the event is on a Weekend (Saturday or Sunday)
  682.      S0704     BPrint if the event is on a BusinessDay
  683.      S0704     CThis line is a continuation of the previous line
  684.      S0704     EPrint *only* if the month, day, and year match today's date
  685.      S0704     LPrint *only* if it's a leap year
  686.      S0704     NPrint if the event is on a non-BusinessDay
  687.      S0704     RPrint *only* if it's a Regular (non-leap) year
  688.      S0704     *Calculate the number of days ALWAYS
  689.      S0704     +Calculate the number of days UNTIL
  690.      S0704     -Calculate the number of days SINCE
  691.      S0704     #Calculate the number of days UNTIL (within Age Range)
  692.      S0704     %Calculate the number of days SINCE (within Age Range)
  693.      S0704     &Calculate the number of days both UNTIL & SINCE (Age Range)
  694.  
  695.           No year was used in the above chart, so TODAYS will calculate to
  696.      the _next_ occurrence of the date in characters 2-5 for the *, +, # and
  697.      & codes, and the number days since the _last_ occurrence for codes - and
  698.      %.
  699.           Year values _can_ be used with the character 10 codes.  If, for
  700.      example, you wish to calculate the number of days from now until
  701.      January 1, 2000, do the following:
  702.  
  703.      S01012000*days until January 1, 2000.
  704.  
  705.           Obviously, you'll _want_ to use a year value with the character
  706.      10 code E.  Otherwise, it'd just appear every year!  (TODAYS
  707.      automatically fills in "missing" data in columns 2-9 with the current
  708.      run settings.)
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.                       YEARLY, MONTHLY AND WEEKLY EVENTS
  729.  
  730.           Through careful use of the month field (characters 2 and 3), the
  731.      day field (characters 4 and 5), the year field (characters 6-9) and
  732.      character 10 (as the day of the week field), you can create lines that
  733.      will be displayed on every day of a year, every day of a specific
  734.      month, on a specific date of any month, on specific days of the week,
  735.      or any combination of the above.
  736.  
  737.           It's best to set up 'categories' for these types in your
  738.      TODAYS.CFG and TODAYS.RPT files.  For these examples, we'll use type Y
  739.      for Yearly events (a line to be displayed on every day of a year),
  740.      type ! for Monthly events (a line that will be displayed on every day
  741.      of the month) and type @ for our Weekly events (ones that will appear
  742.      only on specific days of the week).
  743.  
  744.                                  Yearly Events:
  745.  
  746.           1992 is the Year of the Frog.  Not really, but let's just suppose
  747.      it is.  To set up a line in your TODAY.mmm files, you'll first have to
  748.      set up a Type category Y in your TODAYS.RPT file and your TODAYS.CFG
  749.      file for type Y events.  (In the distribution files, I've already done
  750.      that, so you can just look at those files to see how it's done.)  Now,
  751.      put in your TODAY.mmm files a line that says:
  752.  
  753.      Y    1992 Year of the Frog
  754.  
  755.      Now whenever TODAYS is run in 1992, you will get a line that says:
  756.  
  757.           "1992 - Year of the Frog"
  758.  
  759.      as a part of the 'Yearly Events' listing.
  760.  
  761.           If you only put this line in your TODAY.JAN file, this line will
  762.      only come out in January, 1992.  If you put it only in your TODAY.FEB
  763.      file, it'll only come out in February, 1992.  To have it come out on
  764.      every day of the year you'll either have to put it in every TODAY.mmm
  765.      monthly file, OR in one of the AdditionalFiles you've told TODAYS
  766.      to read in the TODAYS.CFG file, like for instance the HOL (holiday)
  767.      file.  Since the AdditionalFiles are read on every run, the program
  768.      will be able to find it every time TODAYS is run.
  769.  
  770.           Users of the AlternateFile can put it in there with the rest of
  771.      their data since that file is read every time the program is run.
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.                                 Monthly Events:
  795.  
  796.           Suppose that on every day in February, you want to be told that
  797.      February is "African-American History Month".  Assuming that you've set
  798.      up type code ! to be Monthly events in your TODAYS.CFG and TODAYS.RPT
  799.      files, you could then put the following line into your TODAY.FEB file:
  800.  
  801.      !02       African-American History Month
  802.  
  803.      Then on every day in February
  804.  
  805.            "African-American History Month"
  806.  
  807.      would be displayed as part of the 'Monthly Events' listing.
  808.  
  809.           The beauty of doing it this way is that you only need one line to
  810.      do something like this instead of one line for each day of the month.
  811.  
  812.                                  Weekly Events:
  813.  
  814.           Weekly events work somewhat like Monthly and Yearly events, but
  815.      with these, they will only come out on certain days of the week.  For
  816.      instance, suppose you have this line in your TODAY.HOL file:
  817.  
  818.      @        6Thank God It's FRIDAY!!!!
  819.  
  820.      Every friday then you would get:
  821.  
  822.            Thank God It's FRIDAY!!!!
  823.  
  824.      displayed as part of the Weekly events listing.
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.                  Combining Yearly, Monthly, and Weekly Events:
  861.  
  862.           As I mentioned before, through careful use of the Month, Day, and
  863.      Year fields, along with character 10 as a day of the week field, you
  864.      can create lines that will only show up on specific days of the month,
  865.      months of the year, specific days of the week and so on and so forth.
  866.           
  867.           Suppose, for instance, you've agreed to water someone's plants for
  868.      the month they're away on vacation.  You could then put a line in your
  869.      data files to remind you to do that with a line like this:
  870.  
  871.      @06      5Go water Sue's plants!
  872.  
  873.      Then every Thursday in June,
  874.  
  875.           "Go water Sue's plants!"
  876.  
  877.      would be displayed.
  878.  
  879.           If you want the line to show up ONLY during 1992, adding in the
  880.      year to characters 5-9 like this:
  881.  
  882.      @06  19925Go water Sue's plants!
  883.  
  884.      Then every Thursday in June 1992
  885.  
  886.           "Go water Sue's plants!"
  887.  
  888.      would be displayed.
  889.  
  890.           You can also use the day field in characters 4 and 5 to cause a
  891.      line to show up or not.
  892.  
  893.           Suppose your car payment is due on the 15th of each month.  In
  894.      that case you could use the line:
  895.  
  896.      !  15     Car payment due
  897.  
  898.      to cause:
  899.  
  900.           "Car payment due"
  901.  
  902.      to be displayed on the 15th of each month.
  903.  
  904.           Although it may feel like it, you really don't pay for your car
  905.      forever, so by adding in a year value you can cause it to show up only
  906.      during a specific year:
  907.  
  908.      !  151992 Car payment due
  909.  
  910.      Now "Car payment due" will only show up on the 15th of every month
  911.      during 1992.
  912.  
  913.           By making several lines that are the same except for the year you
  914.      can cause it to appear over the life of the loan:
  915.  
  916.      !  151992 Car Payment due
  917.      !  151993 Car Payment due
  918.      !  151994 Car Payment due
  919.  
  920.      If the above lines are in your data file(s), "Car Payment due" will be
  921.      displayed along with the other monthly events on the 15th of every
  922.      month from 1992 to 1994.
  923.  
  924.  
  925.  
  926.           One of the drawbacks with the above method is that it requires a
  927.      line for every POSSIBLE date.  Since Mother's Day, for instance, could
  928.      happen either on May 10th, or May 8th, or May 14th, or May 13th, or
  929.      whatever, you will have to have a separate line for each of these
  930.      dates, and for whatever other possible dates it could occur on AND a 1
  931.      in character 10 so that it will only show up on a Sunday.  There is a
  932.      way around this though, through a method I call "Range Dating".
  933.  
  934.                                   RANGE DATING
  935.  
  936.           Beginning with TODAYS version 2.01, you can make one line cover
  937.      several dates with a concept I call "Range Dating".  Range dating is
  938.      very simple to use.   For example, here is a Range Date line that will
  939.      cover 7 days:
  940.  
  941.      E0911+6   National Ball Room Dance Week
  942.  
  943.           The above line will be displayed on every day from September 11th
  944.      to September 18th.  The +6 in character positions 6 and 7 tell TODAYS
  945.      to display the line for an additional 6 days after September 11th (A
  946.      total of 7 days).
  947.  
  948.           You can set the range to be anything you need, up to 999 days, or
  949.      about 2 years and 9 months!
  950.  
  951.           Range dating can also be combined with the character 10 codes to
  952.      make lines that will only appear on Mondays, Tuesday, Wednesdays, etc.
  953.      over a specific range.  The line below, for example, will only show up
  954.      on Mondays in August, from the first of the month to the 15th:
  955.  
  956.      E0801+14 1Don't forget to send Mom her tickets!
  957.  
  958.           Or you can combine Range dates with calculations.  See if you can
  959.      figure out when the line below will show up:
  960.  
  961.      E0514+51 -days since the corn was planted.
  962.  
  963.           If you guessed from May 14th until July 4th, you're right!  (I
  964.      wonder if it's high as an elephant's eye?)
  965.  
  966.           Unfortunately, you can not use range dating to happen during a
  967.      specific year, since the year characters are used for the range value.
  968.  
  969.           Range dates can work over year-ends, months and month-ends, but if
  970.      you intend to do that, be sure to put your line in one of the files
  971.      that will be read regardless of which month it is (in any of the files
  972.      listed under the keywords 'AdditionalFile' or AlternateFile' in your
  973.      TODAYS.CFG file).
  974.  
  975.           One of the files you _should_ have gotten in the distribution
  976.      archive is TODAYS.RDT.  This file, the "Range Date Test" file, shows
  977.      how Range Dates can be used in a variety of methods to make lines show
  978.      up at specific times of the month and year.
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.                                    REPORTS
  993.  
  994.           Starting with version 1.20 users can "design" the output report
  995.      through the use of a "TODAYS.RPT" file.  The use of a TODAYS.RPT file
  996.      is not required, since the program also has it's own built in "default"
  997.      report.
  998.  
  999.           TODAYS will look in three locations for TODAYS.RPT, and use the
  1000.      first one it finds.  It will first look in the Path set in the
  1001.      TODAYS.CFG file, then in the default directory where TODAYS and
  1002.      TODAYS.CFG are, and then where the Alternate data file is (if you're
  1003.      using one).
  1004.  
  1005.           TODAYS.RPT may contain any characters including VT-52, VT-100,
  1006.      TX2, or IGS codes, so feel free to knock yourself out with that stuff.
  1007.      (Personally I don't care much for it, but then I'm not running your
  1008.      system, am I??)
  1009.  
  1010.           The TODAYS.RPT file format uses two groups of "codes" to tell the
  1011.      program where and what information you want printed out.  Some of
  1012.      these are generated internally by the TODAYS program, others come from
  1013.      the lines of your TODAY.mmm data files.  They're fairly simple, but
  1014.      can be VERY confusing, so please read carefully!
  1015.  
  1016.                                  Header Codes:
  1017.  
  1018.           The simplest to explain of the two types of codes you can use in
  1019.      your TODAYS.RPT file are called 'Header Codes'.  These codes tell the
  1020.      program where and in what order you would like the information that
  1021.      TODAYS gathered from your data files to be printed out.
  1022.  
  1023.           Header Codes all begin with the characters %H and end with
  1024.      another percent sign (%).  The next character after the %H tells the
  1025.      program which type of data you want displayed at that point.  For
  1026.      instance, %HA%  would tell the program that you want the type "A" data
  1027.      to be printed there.  The header line you've defined for type A data in
  1028.      your TODAYS.CFG file will come out before the actual lines to provide a
  1029.      'Heading' for the data.
  1030.  
  1031.           Additionally (starting with version 2.01 of TODAYS), you can have
  1032.      the program left or right justify the header line, or even center it.
  1033.      The next character, the C for instance in the code %HAC% will tell
  1034.      TODAYS to Center the header line.  Replace the C with a L, and the
  1035.      program will Left justify the line.  If you use a R instead of a C or a
  1036.      L, the program with Right justify the header line.
  1037.  
  1038.           You may also tell TODAYS how many characters you want TODAYS to
  1039.      left, right, or center on by adding that value after the L,R, or C.
  1040.      %HAC69% tells TODAYS to Center the header line on 69 characters.  If
  1041.      you don't give TODAYS a value to left, right or center on, TODAYS will
  1042.      use the Wrap value set in your TODAYS.CFG.
  1043.  
  1044.           You should have one Header Code for each type of data in your
  1045.      TODAY.mmm files in your TODAYS.RPT file.  If you don't have a Header
  1046.      Code for a type of data TODAYS has gathered, the data for that type
  1047.      simply won't be displayed.  That's not a 'bug' of the program, by the
  1048.      way, that's a feature I designed in. (Seriously!)  If you don't care
  1049.      about type Q events, simply don't have a Heading Code for type Q data
  1050.      (%HQ%) in your TODAYS.RPT file.
  1051.  
  1052.           You may use and re-use your Header Codes as often as you'd like
  1053.      in your TODAYS.RPT file.  If you'd like the Type A events to come out
  1054.      twice, all you have to do is to have two Header Codes for type A
  1055.      events (%HA% twice) in your TODAYS.RPT file.
  1056.  
  1057.  
  1058.                                 Function Codes:
  1059.  
  1060.           Before I start talking about Function Codes, I want to *strongly*
  1061.      urge you to print out the TODAYRPT.FMT file from the distribution
  1062.      archive if you haven't already.  This file tells all about the various
  1063.      Function Codes and their options in a format that's _very_ easy to read
  1064.      and understand.
  1065.  
  1066.           Function Codes are calculations TODAYS does based on your
  1067.      computer's current system calendar and clock settings, and the
  1068.      information from the lines from your data files.  They allow your
  1069.      report to have the date, the day of the week, month, year, and more in
  1070.      the way YOU want it.
  1071.  
  1072.           TODAYS will even give you information on the various seasons, all
  1073.      in a variety of formats.
  1074.  
  1075.           This has been done to give YOU the flexibility you want in your
  1076.      reports, so pick whichever best fit your needs for whatever you'd like
  1077.      to see.
  1078.  
  1079.           Function Codes are made up of 8 distinct parts.  Function Codes
  1080.      all begin with a %F.  The next three characters tell TODAYS which
  1081.      function you want (again, please refer to the TODAYRPT.FMT file for
  1082.      all the various functions available), the next two characters tell the
  1083.      program how you want it displayed (cardinal or ordinal, words or
  1084.      numbers, etc.).  The next characters tell how you want the program to
  1085.      'justify' or 'align' the result of the Function Code.  Finally, as with
  1086.      the Header Code, another percent (%) sign ends the Code
  1087.  
  1088.           The % characters, at the beginning and end, act as Start/Stop
  1089.      marks for the program, just like with the Header codes. The words or
  1090.      numbers which are the result of the Function Code are inserted BETWEEN
  1091.      them, and the %'s are deleted.
  1092.  
  1093.           For the following section, I refer to a "position" within the
  1094.      code.  Since the % characters must always be at the beginning and end,
  1095.      do not count their "position."   "Position 4," then, is the 4th
  1096.      character *within* the beginning and ending % signs.  Position 1 of a
  1097.      Function Code is always the letter F.
  1098.  
  1099.           Let's take a close look at one specific Function Code and how you
  1100.      can use it in your report.  Let's use the day of the week.  Referring
  1101.      to the list of Function Names in the TODAYRPT.FMT file, we find that
  1102.      DOW is the 'function' for the Day of the Week.  Remembering that all
  1103.      Function Codes start with "%F", we attach the "DOW" to it, and so far
  1104.      we have "%FDOW".
  1105.  
  1106.           Like DOW, all functions are three letters long and are in
  1107.      positions 2, 3, and 4 within a Function Code.
  1108.  
  1109.           Now we have another decision to make:  How do we want it
  1110.      displayed.
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.                           Display Types (Position 5):
  1125.  
  1126.           If you want the result of your Function Code to come out as a
  1127.      number, you would put an N in position 5.  "N" stands for "Numeric".
  1128.      The code would look like this:
  1129.  
  1130.           %FDOWN   (Remember that it's not complete until you put in the
  1131.                     final %)
  1132.  
  1133.           Some of the functions also have 'words' attached to them in the
  1134.      TODAYS.LNG file.  These are the functions for day of the week, the
  1135.      months, the seasons, the 'periods' of the day (morning, afternoon,
  1136.      evening, and night), and AM and PM.  There are also a few functions
  1137.      that deal with times and dates that are 'pre-defined' by normal usage.
  1138.  
  1139.           Time is usually expressed in the format <hour>:<minute>:<second>
  1140.      for example, and dates use either <month>/<day>/<year> or, in European
  1141.      format as <day>.<month>.<year>, when we write them out.
  1142.  
  1143.           With some functions, like DOW, you have a choice of words or
  1144.      numbers.  You might want to have the word for the day of the week come
  1145.      out rather then the number ("Wednesday" for example rather then "4").
  1146.      To do this,  you'll want to put to put the letter A (for 'As defined')
  1147.      in position 5 after %FDOW (rather then the N I mentioned above.)
  1148.  
  1149.           To use the name of the day of the week, our function code would
  1150.      look like this:
  1151.  
  1152.          %FDOWA
  1153.  
  1154.           Suppose you _do_ want the word 'Wednesday' to come out for your
  1155.      day of the week, but you'd rather have it come out in all capital
  1156.      letters (WEDNESDAY rather the Wednesday).  By replacing the letter A
  1157.      with a U (for Upper), TODAYS will do that for you.
  1158.  
  1159.           "But Chuck, I _do_ want the number 4 to come out, but I want it
  1160.      to come out as 'Four'!  Can TODAYS do that?"
  1161.  
  1162.           Oh, it sure can!  All you have to do is to put a C where the A,
  1163.      U, or N is in position 5 in the Function Code.  C stands for
  1164.      'Cardinal', and Cardinal numbers are those used when counting.
  1165.  
  1166.           You can even have it come out as a 'Fourth', which is a 'Ordinal'
  1167.      number by placing an O after %FDOW (that's a capital letter "o", not
  1168.      the number 0 by the way).  Ordinal numbers are numbers used when
  1169.      you're showing order or succession, so to say that its the 'Fourth day
  1170.      of the week' is (probably) better then saying that its the 'Four day
  1171.      of the week', but you'll probably want to check that out with a
  1172.      English Major.  Me, I flunked English, so I speak American, where
  1173.      there are no rules!  <grin>
  1174.  
  1175.           If you'd like the result to be displayed in Roman Numerals, you
  1176.      would place a R in position 5, making the code (so far):
  1177.  
  1178.            %FDOWR
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.           Placing a E in position 5 gives you access to the External file
  1191.      support routine.  This uses the resultant number of the code to read
  1192.      the resultant-th line PLUS 1 from a file named as a part of the
  1193.      function code.
  1194.  
  1195.           For example: %FDOWEd:\bbs\weekday.txt% will cause the program to
  1196.      figure out the day of the week, add 1 to it, then read in that many
  1197.      lines from the file "WEEKDAY.TXT" in the d:\bbs\ directory, and
  1198.      replaces the function code with whatever it finds there.  If the day
  1199.      of the week was Wednesday, it would use the 5th line of the file and
  1200.      insert that line into the report.  (Wednesday is the fourth day of the
  1201.      week, so 4+1=5 -> fifth line of d:\bbs\weekday.txt.)
  1202.  
  1203.           In case you're wondering why the plus 1, that's so that function
  1204.      calls resulting in 0 can still be used.
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.                             Modifiers (Position 6):
  1257.  
  1258.           You can further 'modify' the Display Type with a Modifier Code in
  1259.      position 6 of the Function Code.  Here there are 4 options, but not
  1260.      all of them may be available to you depending upon what Display Type
  1261.      you choose.
  1262.  
  1263.           If you've chosen to use either the A or U options, you can modify
  1264.      it with the letter W.  In other words, you want the program to display
  1265.      the result of the Function Code "As a Word".  Using the above example,
  1266.      the code so far would look like this:
  1267.  
  1268.           %FDOWAW
  1269.  
  1270.           If you've chosen to have the result come out as either "Four" or
  1271.      "Fourth" by putting either a C or an O, then you'll also want to put a
  1272.      W in position 6.  The code in the example would look like this:
  1273.  
  1274.           %FDOWCW
  1275.  
  1276.           The W modifier option can be used all the Display Types with the
  1277.      exception of Roman Numerals (a R in position 5).
  1278.  
  1279.           There is some 'duplication' in the results of some of the codes.
  1280.      If you have a N in position 5 and a W in position 6, you'll get the
  1281.      same thing as if you had put a C in position 5.  Why the duplication?
  1282.      Well, what else would you expect if you ask the program to produce a
  1283.      "Numeric Word"?
  1284.  
  1285.           If you want the number "4" to come out, but you want it to come
  1286.      out as "4th", well, you can do that too!  Simply put a N in the
  1287.      display type, and then a S in position 6.  (S is short for 'suffix'.)
  1288.      That'll cause the program to give you the 'Numeric with Suffix'.
  1289.  
  1290.           There's a fourth option available in the Modifier position, but
  1291.      it doesn't have much use when dealing with a single digit number such
  1292.      as the day of the week.
  1293.  
  1294.           Placing an E in the 6th position will result in Each digit of the
  1295.      number being converted over to words.  This was originally designed
  1296.      for the STD (STarDate) Function Code, so that each number would come
  1297.      out as a separate word, just as they do on the TV show "Star Trek".
  1298.      For example, if the STarDate was "48823" and you used the E modifier,
  1299.      TODAYS would place "Four Eight Eight Two Three" in your report.
  1300.      The only time the E option is valid is if you have either an O, a C,
  1301.      or an N in the Display type.
  1302.  
  1303.           Using the Each modifier with the O display type results in
  1304.      'Ordinal' words, by the way, so use with caution.  (For 48823 you'd
  1305.      get out "Fourth Eighth Eighth Second Third" which doesn't make much
  1306.      sense to me, but if you like it, feel free to use it.)
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.                                  Justification:
  1323.  
  1324.           The last Function Code option is the Justification.  There are 5
  1325.      options here, and they'll work regardless of what you've got in the
  1326.      other code positions.  You can choose from having the result of your
  1327.      Function Code justified Left, Right, Centered, with zeros (if and only
  1328.      if you've both positions 5 and 6 as numbers) or No Justification.  No
  1329.      Justification is probably what most of you will choose.  The other
  1330.      justification methods are used to either 'trim' the result off or if
  1331.      you want you report to look like a table of some form.
  1332.  
  1333.           When I described the Function Code format above I left out one
  1334.      position.  If you've got a printout of the TODAYRPT.FMT file, you've
  1335.      probably already noticed that.  Position 8 (and, if you need it 9, 10,
  1336.      etc.) is for a number which can be between 1 and 32,767.  It'll be
  1337.      used to help you 'trim off' unwanted characters in your result, or to
  1338.      help you line things up so that the results always appear in the same
  1339.      place every time you run TODAYS.
  1340.  
  1341.                          Left and Right Justification:
  1342.  
  1343.           You may want your report to come out with sort of a 'table' feel
  1344.      to it.  The SAMPLE2.RPT included in the release archive is an example
  1345.      of what I mean.  There are two 'characters' of numbers in the report,
  1346.      one for the 'day of' numbers, and another for the 'days remaining'
  1347.      numbers.  Since these numbers change on a daily basis and sometimes
  1348.      they're two digits long, sometimes one, sometimes three, the only way
  1349.      to get them to line up nicely is to have the program 'justify' them so
  1350.      that regardless of how long the number is, it'll always line up with
  1351.      the other numbers.
  1352.  
  1353.           The justification itself is really simple.  Once you've told it
  1354.      how long you want the result number (or word) to be, the program will
  1355.      add spaces to either the left or right side of the result so that it
  1356.      matches the length you've told it you want.  Left justification adds
  1357.      trailing spaces, right justification adds leading spaces.
  1358.  
  1359.                                "0" Justification:
  1360.  
  1361.           Placing a 0 in position 7 is the same as doing right
  1362.      justification, however instead of spaces, the program will add 0s to
  1363.      the left of the result number to the length you've told it to be.
  1364.      This way, you can have codes that come out like "030" or "003" rather
  1365.      then " 30" or "  3".  The 0 justification simply adds leading zeros.
  1366.  
  1367.           Despite what I said above, the 0 option, in position 7, is only
  1368.      valid if you have a N in both positions 4 and 5.  Sorry about that.
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.                                    Centering:
  1389.  
  1390.           The Centering justification is a rarely used option.  Basically
  1391.      it works the same way as your typing teacher taught you how to center
  1392.      a word on a page (if you're one of those people like me who's old
  1393.      enough to have had a typing teacher!).  It takes the 'justification
  1394.      value' and subtracts the length of the result from it, then divides
  1395.      that number in half, and puts that many spaces in front of the result,
  1396.      and the same number of spaces after the result.  It's useful for
  1397.      making your report come out like this:
  1398.  
  1399.                                    Saturday
  1400.                                      July
  1401.                                      25th
  1402.                                      1992
  1403.  
  1404.      by simply putting:
  1405.  
  1406.      %FDOWAWC69%
  1407.      %FMONAWC69%
  1408.      %FDOMNSC69%
  1409.      %FYR4NNC69%
  1410.  
  1411.      in your report.  You'll note that I didn't need to use a lot of spaces
  1412.      in the report, but I sure got a lot out of the program!
  1413.  
  1414.                                    Trimming:
  1415.  
  1416.           Suppose that you've decided that you want your day of the week
  1417.      result to show up as "Wed" rather then "Wednesday".  By using the
  1418.      'trimming' available to you in the Justification you can do that.  All
  1419.      you need to do is to use Left justification and a justification value
  1420.      of 3 in position 8.  Your code then, would look like this:
  1421.  
  1422.      %FDOWAWL3%
  1423.  
  1424.           You can also trim 'right' by using Right justification, however
  1425.      for the day of the week option it's a bit silly.  If you use the code
  1426.      %FDOWAWR3%, all you'll ever get out of it will be "day" since the last
  1427.      three characters of the days of the week is "day".  You might find it
  1428.      useful for other codes though.
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.                                       Math!
  1455.  
  1456.           You can do _limited_ math funtions within TODAYS.  *Very* limited!
  1457.      Currently the only math allowed is addition, subtraction,
  1458.      multipication, division, and modula (MOD).
  1459.  
  1460.           To use TODAYS math within Function codes, the equation you want
  1461.      TODAYS to perform *MUST* be enclosed in the brackets: [].  For example,
  1462.      to have TODAYS find the day of the year and add 6 to it, you would use
  1463.      the code: %FDOY[+6]NNN%.  (The NNN can be any valid Display Type,
  1464.      Modifier, and Justification.  I just picked those for simplicity.)
  1465.  
  1466.           You may choose to do more then one operation within the brackets
  1467.      if you so choose.  The math is performed in a simple left to right
  1468.      operation.  For example, %FJOD[&3+1*10]NNN% will find the Julian Date,
  1469.      mod 3 it, add 1, and multiply the result by 10.  "Nesting" of
  1470.      parenthases or brackets is *not* allowed!  Only left to right
  1471.      operations!
  1472.  
  1473.          One example of how you might use math in a function code is in a
  1474.      Birthday display.  Suppose that you've got a line in your data file
  1475.      that goes:
  1476.  
  1477.      #0508    #Days until Julie's Birthday
  1478.  
  1479.      This will give you a reminder of how many days until Julie's birthday.
  1480.      Great, but how _old_ will she be this birthday?  There's no way to
  1481.      calculate that, because if you put a year value in it, the line won't
  1482.      show up at all because the year is past, and countdowns never appear on
  1483.      the date that's on the line!  So let's change the line a little bit so
  1484.      that it _will_ show her age:
  1485.  
  1486.      #0508    #%FTUCNNR9% %FTUCPWN% Until Julie's %FYR4[-1989]NSN% Birthday
  1487.  
  1488.          The %FTUCNNR9% aligns the number of days until the date on the line
  1489.      to be right for 9 spaces.
  1490.           The %FTUCPWN% tells TODAYS to figure out if it's "Days" or just
  1491.      the singluar "Day" (as in 1 day).
  1492.           The %FYR4[-1989]NSN% figures out the current year to 4 digits
  1493.      (that's the YR4 part), subtracts 1989 from it (that's the [-1989] part)
  1494.      and then figures out the correct "th", "nd", or "st" plural suffix to
  1495.      add on.
  1496.  
  1497.          With the line above, on 05/01/1994, we'd see in our report the
  1498.      line:
  1499.  
  1500.              7 Days Until Julie's 5th Birthday
  1501.  
  1502.          As I said before, that's one example.  Feel free to make up your
  1503.      own to do whatever you need.
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.        A WORD ABOUT THE TODAYS.RPT, THE DEFAULT REPORT AND HEADER LINES
  1521.  
  1522.           If you've reached this point in the documentation you're probably
  1523.      some what confused on what all is going on with these reports.  The
  1524.      program has a built in report, but you can use your own.  Why, you
  1525.      might be asking, are all the header lines for the various types in the
  1526.      TODAYS.CFG file rather then in the TODAYS.RPT file?!?  And if we don't
  1527.      have to have those header lines, why are they there?!?  A bit of
  1528.      history about the program may answer those questions for you.
  1529.  
  1530.           The original TODAY/ST program, and even the current TODAY/PC
  1531.      program allows users to have only 3 types of data: Birthdays, Special
  1532.      events, and Reminders.  The programs separated the types for you,
  1533.      provided their own headers, and that was that.  Very little user
  1534.      customization is allowed.
  1535.  
  1536.           Even in the most current version of TODAY/PC (version 3.4 as of
  1537.      this writing) about all the user can select is the colors of the
  1538.      various parts of the display.  None of the %F options are available,
  1539.      nor are any of the %H options.  You get what the programmer likes, and
  1540.      that's it.  Period.  Personally, that's too restrictive for my tastes
  1541.      (and hopefully yours!), so I added in the TODAYS.RPT file.  In there,
  1542.      users can customize to their heart's delight.
  1543.  
  1544.           The header lines used to be in the TODAYS.RPT file and not in the
  1545.      TODAYS.CFG file, but there was a problem.  Suppose you didn't find a
  1546.      birthday in your run.  Well, out would pop the header for birthdays,
  1547.      but since there weren't any birthdays to display, all you got was a
  1548.      blank line.
  1549.  
  1550.           There was also a problem in the 'built-in' report.  How could I
  1551.      'move' the header lines from the TODAYS.RPT file to the built-in
  1552.      report?  Especially if the user chose not to use a TODAYS.RPT file at
  1553.      all!
  1554.  
  1555.           After fiddling around a while, I decided to put the header lines
  1556.      into the TODAYS.CFG file.  This allowed them to be in two places at
  1557.      the same time (both the TODAYS.RPT file and the built-in report) and
  1558.      still allowed them to be user-configurable.  And by first looking to
  1559.      see what data the program had collected, the program could figure out
  1560.      which to use and which not to use!
  1561.  
  1562.           Although putting the header lines in the TODAYS.CFG file solved
  1563.      one problem, it's created another.  (It always seems to work that
  1564.      way.)  Suppose you declare a type in your TODAYS.RPT file, but don't
  1565.      make a header line for it in your TODAYS.CFG file?  Well, the answer
  1566.      is that it'll still be printed out, there just won't be a header line
  1567.      for it.  Also, if you've got your TODAYS.RPT file set up like I've set
  1568.      it up in the one that is distributed with the program, it'll appear to
  1569.      'merge' in with the data from the previous category under the heading
  1570.      for that category. That will also happen if you're using the built-in
  1571.      report.
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.                                   ERRORS!!!
  1587.  
  1588.           If TODAYS can't understand something in either your TODAYS.CFG or
  1589.      TODAYS.RPT files, or if it can't find the files you tell it to use,
  1590.      TODAYS will generate a report in the default directory called
  1591.      TODAYS.ERR.  This file will attempt to explain to you what it found
  1592.      wrong.
  1593.  
  1594.           I have to admit here that I didn't try to have the program
  1595.      describe in detail every possible error that could occur, but it does
  1596.      do things like report codes it doesn't understand in your TODAYS.RPT
  1597.      file, files you told it to use but it can't find, etc., etc.
  1598.  
  1599.           When something goes wrong, your first response should be to look
  1600.      for a TODAYS.ERR file.  It'll help you fix 99.999% of your problems.
  1601.  
  1602.           The TODAYS.ERR file may also be re-directed to another file if you
  1603.      so choose, through the use of the ErrorFile keyword in the TODAYS.CFG
  1604.      file.  If you have re-directed the Error Report, please look for the
  1605.      errors in _that_ file.
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.                                     LIMITS
  1653.  
  1654.           Although I've tried to keep as many limits out of this program as
  1655.      possible, there are a few I can't do anything about.  Most
  1656.      significantly is the 32,767 limit imposed by programming in GFA and
  1657.      most other languages.
  1658.  
  1659.           About the only time a user will encounter this limit is in the
  1660.      text files they create.  Users should be aware that the maximum file
  1661.      size for the TODAYS.RPT is 32,767 characters *AFTER* all the %F
  1662.      commands have been converted.  It's going to be VERY rare that a user
  1663.      will encounter this, you'd have to have quite a file for this to
  1664.      happen!  Basically, you shouldn't worry about it unless you get an
  1665.      error code 10 while the program is converting TODAYS.RPT.  (Error code
  1666.      10 is the GFA error for 'line too long'.)
  1667.  
  1668.           An even rarer event would be having a 32,767 characters in a
  1669.      single line of data to be displayed.  Since that's about 409 lines each
  1670.      being 80 characters long all with a C in character 10 one after the
  1671.      other, you'll probably never see that.
  1672.  
  1673.           Your data files can be longer than 32,767 bytes, just to make that
  1674.      clear.  It's just the individual lines within the file that can't be
  1675.      more than 32,767 characters long.
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.                                  RUNNING TODAYS
  1719.  
  1720.           To run the TODAYS program after you've got it set up, simply
  1721.      double click on the program.
  1722.  
  1723.           While TODAYS in running, you can press the "Undo" key to 'abort'
  1724.      the read of a data file.  This is useful to those of you who are '1
  1725.      big file' users and have a large file sorted by the date.
  1726.  
  1727.           Once you've pressed the Undo key, the program will go on to read
  1728.      the next file you've told the program to use in your TODAYS.CFG file,
  1729.      or to produce the report if it's the last file that's to be read in.
  1730.  
  1731.           No other key presses have any effect, and pressing the Undo key
  1732.      will not generate an error.
  1733.  
  1734.           "Quick Mode" can be used to speed up the reading of the data
  1735.      files.  When Quick Mode is used, the program will self-abort the
  1736.      reading of a data file when it detects that the line it's reading is of
  1737.      a date greater then the date it's running for.
  1738.  
  1739.           In other words, if the date TODAYS is running for is February 4th
  1740.      and Quick Mode is turned on, TODAYS will stop reading that data file
  1741.      as soon as it detects a date on the data file line as one that comes
  1742.      after February 4th.  Be sure to have your data files sorted on
  1743.      characters 2-9 if your using Quick Mode!
  1744.  
  1745.           Quick Mode will also work with the 'file numbering' method so
  1746.      that you can tell TODAYS which files to apply Quick Mode to.
  1747.  
  1748.           To apply Quick Mode only to the AdditionalFiles and/or
  1749.      AlternateFile in your TODAYS.CFG file, you should give TODAYS the
  1750.      command /q13 on the command line.  To apply it only to the monthly
  1751.      files, use /q-13.
  1752.  
  1753.           Your individual usage of the number may vary according to your
  1754.      needs and how many files you have.
  1755.  
  1756.           If, for instance, you have two AdditionalFiles in your TODAYS.CFG
  1757.      and an AlternateFile as well, the first AdditionalFile would be file
  1758.      number 13, the second would be file number 14, and the AlternateFile
  1759.      would be number 15.  So if you wanted to apply quick mode to only the
  1760.      AlternateFile, you would use q15.  To apply quick mode to *all* the
  1761.      files *except* the AlternateFile, you'd use /q-14.
  1762.  
  1763.           As mentioned above, TODAYS can now be run as a TTP or GTP program.
  1764.      There are a variety of "switches" that you can set to change things
  1765.      within the program, including what date to run for.
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.           NOTE: You *must* still use a TODAYS.CFG file.  The command line
  1785.      switches are intended to make temporary changes to your TODAYS.CFG
  1786.      file, not replace it!
  1787.  
  1788.                Command Line switches for TODAYS version 2.01:
  1789.  
  1790.       /a  - set age value
  1791.       /d  - set date (mm/dd/yyyy or dd.mm.yyyy  if yyyy not given, uses
  1792.                       current year. note FOUR digit year!)
  1793.       /fa - set alternate file to use
  1794.       /fc - set which/where TODAYS.CFG file to use
  1795.       /fe - set error report file/peripheral name
  1796.       /fl - set TODAYS.LNG file to use
  1797.       /fo - set output file/peripheral name
  1798.       /fp - set default path
  1799.       /fr - set report file to use
  1800.       /f+ - set additional files to use
  1801.       /i  - set second line indents
  1802.       /m  - set replace/append mode for output
  1803.       /n  - set nomonthly mode on (TODAYS won't look for or use the
  1804.               TODAY.mmm monthly files)
  1805.       /q  - set quick mode on/files to use Quick Mode on
  1806.       /s  - set sort mode and/or categories to sort on
  1807.       /t  - set test mode (noshow,show,show2,showa)
  1808.       /v  - ok to use version x.xx LNG file
  1809.       /vi - ignore version numbers (use only with *extreme* caution!)
  1810.       /w  - set column to wrap the lines on
  1811.       /0  - set 0's replacement string
  1812.       /1  - use only the alternate file ("1 big file" mode)
  1813.       /$c - set carriage return string
  1814.       /$s - set year/text separator string
  1815.       /$t - set pre-text string
  1816.       /$y - set pre-year string
  1817.  
  1818.      usage:
  1819.  
  1820.       /w40 /frD:\bbs\xe\atascii.rpt /d12/31 /mR /foD:\BBS\XE\WELCOME.TXT
  1821.  
  1822.      meanings:
  1823.  
  1824.       /w40 - wrap on the 40th column (40 column screen)
  1825.       /frd:\bbs\xe\atascii.rpt - use the "ATASCII.RPT" file in D:\BBS\XE\
  1826.       /d12/31 - run for December 31st of current year
  1827.       /mR - Replace the output file if one is already there
  1828.       /foD:\BBS\XE\WELCOME.TXT - send report to the "WELCOME.TXT" in the
  1829.               D:\BBS\XE\ folder
  1830.  
  1831.           NOTE:  When using the /f commands, it is best to use the complete
  1832.      GEM <drive>:\<path>\<filename.ext> description for the file you want
  1833.      TODAYS to use.
  1834.  
  1835.           When sending output to the screen, please use the keyword CON:
  1836.      including the colon (:).  For printer output, use PRN: including the
  1837.      colon.
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.                                   SCREEN OUTPUT
  1851.  
  1852.           It is not suggested, however you _can_ send the output from TODAYS
  1853.      directly to the monitor.  The reason it's not suggested is that there
  1854.      is almost always more then one "screen full" of output, and it will
  1855.      scroll by _very_ fast.
  1856.  
  1857.           Beginning with TODAYS version 2.01 however, there is a routine
  1858.      that will allow you to "hold" the display if you wish.  Note: The
  1859.      following _only_ works if you have selected to send your output to
  1860.      "CON:" in your TODAYS.CFG, or on the command line when you run
  1861.      TODAYS.TTP!
  1862.  
  1863.           When TODAYS is done processing the data files, doing any sorting
  1864.      you tell it to do, ect., TODAYS will prompt you to "press any key to
  1865.      continue".  After you do so, TODAYS will start sending it's output to
  1866.      the screen.  You may press any key, at any time, to "hold" the display.
  1867.      When TODAYS detects that you have pressed a key, it will display a
  1868.      inverse video "bar" where you stopped it, and prompt you to "press any
  1869.      key to continue or wait for the timer to reach 0".  If you look to the
  1870.      very right of the bar, you'll see a "clock" of sorts that counts down.
  1871.      When it reaches zero, or if you press a key, TODAYS will erase the bar
  1872.      and continue on displaying the data.
  1873.  
  1874.           You may use the "hold" as often as you want during the display.
  1875.      This feature was added due to the sheer volume of user requests for
  1876.      such a feature.
  1877.  
  1878.           Unfortunately, there's no provision for TODAYS to go backwards in
  1879.      it's display.  If you need a feature like this, you'll need to write
  1880.      the output file to disk and use a file viewer of some kind.
  1881.  
  1882.           The time you want the display to "hold" for is adjustable through
  1883.      the use of the Hold keyword in TODAYS.CFG.
  1884.  
  1885.           The reason there's a "clock" there, in case you're interested, is
  1886.      that TODAYS is run by several BBS System Operators, and the clock
  1887.      allows TODAYS to exit, gracefully, if it's left unattended, so that
  1888.      their BBS won't be locked up all night (or all weekend!) waiting for
  1889.      someone to press a key.  This tends to upset BBS users more then
  1890.      SysOps, not so suprisingly....
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.                                  LEGAL STUFF
  1917.  
  1918.           This program was written and complied in GFA Basic version 3.6, on
  1919.      a Atari TT computer.  This work is my own, I didn't 'borrow' any
  1920.      routines from anyone else.
  1921.  
  1922.           The program name, TODAYS, the documentation, and the program
  1923.      itself is Copyright 1993 to me, Chuck Grimsby.  Feel free, however, to
  1924.      distribute the program as far as you feel you want to.  PLEASE do not
  1925.      alter the distribution archive in any manor when you do so.  (Plain
  1926.      common courtesy, I should think....)
  1927.  
  1928.           You do not have to send me any money to use this program.  I
  1929.      donate it's _USE_ to the Atari user base freely.  (Heck, I'm going to
  1930.      program regardless what bucks you send!  Programming is my hobby.  It's
  1931.      what I call 'fun'.)
  1932.  
  1933.           If you feel a real need to send money, send it to some charity you
  1934.      feel deserves it.  (Feel free to include your own retirement, or kid's
  1935.      college fund.)
  1936.  
  1937.           Those of you who are married, send a flower or some cheap gift to
  1938.      your spouse.  (That includes you women out there!)
  1939.  
  1940.           Those of you who are single, send one to your mom, dad, sister,
  1941.      brother, girlfriend, boyfriend, boss, co-worker, or present one to some
  1942.      stranger you pass on the street.  (It's fun. The looks on their
  1943.      faces...)
  1944.  
  1945.           Formerly married?  Send one to your ex-spouse.  That'll confuse
  1946.      the heck out of 'em!  <grin>  (Probably'll blow their lawyer's mind
  1947.      too!)
  1948.  
  1949.           What else should I say here?  Oh, I suppose something like:
  1950.  
  1951.  
  1952.           "You use this program at your own risk.  I cannot be held
  1953.           responsible for any physical or monetary loss incurred by it's
  1954.           use or mis-use, fitness for use, or inability to use."
  1955.  
  1956.  
  1957.           Or something like that.  Basically, if you choose to use the
  1958.      program, don't blame me if things go wrong.  All I can say for sure is
  1959.      that it works on my system, with my data files, and my system
  1960.      configuration.
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.           Problems?  Questions?  Requests for changes?
  1983.  
  1984.           All of the above can be sent to me at the electronic address
  1985.      below:
  1986.  
  1987.      The FlightLine BBS  612-544-5118 1200-14.4 (HST/V.32 dual) 24 hours
  1988.      FIDO-Net:           1:282/47.1 (Route through 1:282/47.0 please.
  1989.                                      I'm *not* in the nodelist!)
  1990.      AtariNet:           51:1/15
  1991.      GEnie:              C.GRIMSBY
  1992.  
  1993.           I also read the Atari_ST echo on FIDO-Net and Usenet's
  1994.      comp.sys.atari.st newsgroup, so you can send me a message through there
  1995.      as well.
  1996.  
  1997.           Note to FIDO-Net users:  I received a several inquiries about this
  1998.      program via FIDO-Net's "Net Mail" (Private user-to-user on different
  1999.      systems).  Unfortunately, I wasn't able to respond to some of the
  2000.      messages because the SysOps of those systems don't allow their users to
  2001.      receive Net Mail.  (Why they allow them to send them is something I'm
  2002.      still trying to figure out...)  Just be aware that if you don't get a
  2003.      response from me, I may have tried to, but for some reason it just
  2004.      didn't get through.  <sigh>  Where's that "Information Highway" on-
  2005.      ramp?!?
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.