"The Daily Plan-It" A Smart Date-Parsing Filter
Copyright (c) 1986 by David W. Burleigh
Plan-It is a tool for keeping track of important dates with the least
possible effort. You create a file in which you store messages to
yourself. Each message begins with a date code that tells Plan-It when
to display the message. The power of Plan-It comes from the ways you
can express dates. For example, here is the contents of a typical
Plan-It message file:
@3/17/86 Doctor's appointment today at 3pm.
@5/10/86 Call Jack to remind him about the conversation we had in
January and to see if he's made any progress on that estimate.
@8/12/* Mom & Dad's wedding anniversary; don't forget to call tonight.
@*/th/* Prepare weekly report for Boss this afternoon.
@6/21/*-7 Jane's birthday is one week from now; buy a present.
(She hinted that she'd like a Cabbage Patch doll or an Erector Set.)
@4/15/*-60 Checkpoint: tax day is two months away.
@4/15/*-30 Checkpoint: tax day is one month away. Do you have all
necessary forms? Have you received all 1099 forms from clients?
@4/15/*-14 Checkpoint: tax day is two weeks away, are you ready?
@*/lb/* Last business day of the month; get your subway pass.
@*/lf/* Last Friday of the month; mortgage payment due.
@*/2m/* Staff meeting this afternoon. [2nd Monday of every month]
@10/12/85+42 Business-builder's Seminar. [Every six weeks
It's easy to build up a message file that keeps track of your important
obligations and reminds you before it's too late. Simply use your
favorite text editor to build and maintain your message file, and let
Plan-It review it each day by including the following command in your
AUTOEXEC.BAT file or Unix login profile:
Plan-It acts like a filter in that it reads its input from the standard
input, "filters" out messages that don't apply to the current date, and
sends current messages to the standard output (normally the terminal
screen). You specify the message file that Plan-It is to review by
entering the file's name after the "<" character on the command line.
You can also specify a date for which you want messages displayed
(default is the current date), as in:
In fact, you can omit the year and Plan-It will assume the current year.
You can also specify the date incrementally:
This instructs Plan-It to display messages for a date 7 days after the
Unlike many utilities available today, Plan-It does not remain in memory
after it finishes executing, therefore it does not nibble away at your
available memory or interfere in the execution of other programs.
While the standard version of Plan-It is written for MS-DOS systems, it
can be modified easily to run on any system that has a C compiler and
supports I/O redirection. Plan-It makes only one explicit call to the
operating system, to get the current date. Everything else is standard
C code. Read on for information on how to obtain the source code for
The Message File Format
Messages in the message file must have the following form:
m may be either "*", indicating "every month",
or an integer from 1 to 12 indicating a specific month;
d may be either "*", indicating "every day",
or an integer from 1 to 31 indicating a specific date,
or the letter "l", indicating the last day of the month,
or "lb", indicating the last business day of the month,
or one of "su m tu w th f sa" indicating every such day,
or one of "Nsu Nm Ntu Nw Nth Nf Nsa", where "N" is an
integer from 1 to 5, indicating the "Nth" such day of the month,
or one of "lsu lm ltu lw lth lf lsa", indicating the last such
day of the month;
y may be either "*", indicating "every year",
or a two-digit integer representing the last two digits of
a year between 1900 and 2000 A.D.
You may also specify an entry of the form:
where "n" is an integer value indicating that the message applies to the
date "m/d/y" and every nth day subsequent to it. In this case, the date
must be explicitly specified (no asterisks or non-numeric day codes).
Finally, you may specify an entry of the form:
where "n" is an integer value indicating how many days prior to the date
specified in "m/d/y" you want the message to be displayed. In this case,
the date CAN include asterisks and non-numeric day codes.
The date must begin with "@" as the first character on the line. The
text of the message is delimited from the date by at least one blank and
can continue on as many subsequent lines as you like. The message is
terminated by the next line that begins with "@", or by the end of the
file, whichever comes first.
How to Get Source Code
For the latest version of Plan-It, complete with source code and
documentation, send $10 to:
David W. Burleigh
Burleigh Software Engineering
36 Moultrie Street, Boston, MA 02124
If you have suggestions or bugs to report, please send them either to
the above address, or online to:
dwb (Byte Information Exchange) [email protected]
(Mailnet & Arpanet)
If you upload Plan-It to any publicly-accessible bulletin board system
(BBS), I ask two things of you:
1) Let me know the name & phone number of the BBS. This lets me keep
track of the distribution channels and know where Plan-It needs to
be updated when new versions are available.
2) Do NOT upload modified versions of Plan-It. I am very receptive to
suggestions, and would prefer to implement them myself than to have
many independent programmers enhancing Plan-It in different and
probably incompatible ways.