This is file /usr/lib/cal.dat or ~/.cal.dat under unix, cal.dat otherwise.

This is a sample data file for the CAL program.  When CAL uses the
single-month calendar format, it will display 'special' dates, or
appointments, for that month to the right of the calendar.  If the
current date happens to fall on one of these special dates, it will be
flagged by an asterisk.  The special date descriptions are specified
in this file as single lines, formatted as follows:

YYYY MM DD NW xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

YYYY is the year,
MM is the month (01 - 12),
DD is the day (00 if the NW field is used),
NW is the weekday-of-month code (00 if the DD field is used)
xxxx... is the message, if longer than 50 characters it will be truncated.

The data MUST occupy the character fields as shown.  If YYYY is specified
as -999, the month and day are assumed to be annual events such as holidays,
and the description will be displayed for any year.  If MM is specified
as -9, the day is assumed to be a monthly event for that year.  If DD is
specified as -9, the description will be displayed every day, *provided*
that the YYYY and MM fields can match the current month and year.

In the weekday-of-month code NW, N signifies on which weekday W the special
date occurs.  For example, 31 indicates the third sunday.  Values of W
range from 1 to 7, for Sunday to Saturday, respectively.  A value of 9 for
N indicates "last" as in 95 for "last thursday."  A negative value will
indicate EACH day; for example -2 indicates "each monday."

The NW code is assumed to indicate a periodically-recurring date IF the
year, month, and day are all positive and the year is 1970 or more.  In
this case, NW is the length of the period.  See the payday example below.

You can display birthdays and anniversaries by putting the year of birth
(or other special event) inside brackets or braces, in the description.
This number is converted to the number of years since the year you indicate.
If brackets [] are used, the number will be displayed unchanged.  If
braces {} are used, they will not be displayed, but the number will have
an ordinal suffix, as in 21st, 32nd, 43rd, 54th, etc.  If the number in
brackets or braces is greater than the current year, the number will be
displayed unchanged (and braces WILL be displayed).  Example:
"Alex's {1961} birthday" will display as "Alex's 32nd birthday" (if the
current year is 1993).

NOTE:  If cal is invoked with the --europe switch, the W values from 1-7 
denote Monday(1) to Sunday(7), rather than Sunday(1) to Saturday(7).

A line must start with -999 or a 4-digit number to be considered as data.
Any other lines (like these you're reading) are ignored.  Dates may be
specified in any order, in any amount.  Cal will display no more
appointments than specified with the -max commandline option (default 24).

Annual days:

YYYY MM DD NW Description

-999 01 01 00 New Year's Day
-999 01 00 32 Martin Luther King Day
-999 02 14 00 St. Valentine's Day
-999 03 17 00 St. Patrick's Day
-999 04 01 00 All Fool's Day
-999 04 15 00 Income Tax return due
-999 05 00 21 Mother's Day
-999 05 00 92 Memorial Day
-999 06 00 31 Father's Day
-999 07 04 00 Independence Day
-999 09 00 12 Labor Day
-999 10 31 00 Halloween
-999 11 00 45 Thanksgiving Day

-999 09 07 00 My {1961} birthday
-999 12 29 00 Someone's {1970} birthday
-999 01 04 00 Someone else will be [1970] today

Monthly days:

-999 -9 02 00 Rent is due!
-999 -9 00 46 JACO meeting

Weekly days (all years, all months):

-999 -9 00 -3 Take out the garbage

Daily days:

-999 -9 -9 00 Daily reminder: Get some exercise!

Periodically-occurring days:

1995 11 03 14 --- Payday! ---

Other specific days:

1994 11 08 00 Election Day
