| 
 |  | 
Each line of the file represents a single appointment. An appointment consists of two fields: a time and a description. One or more tabs must separate the two fields. Appointments may occur in any order, and times in a variety of convenient formats should be permitted.
The program, which we will call calendar, takes three command-line options. The first two of these are options that have no value after the option:
calendar -t <calfile display an ordered list of today's appointments calendar -n <calfile print the next appointmentFor example, suppose it is currently 2PM on April 26. Then the command:
calendar -t <calfilewould print:
       Your appointments for 04/26/91:
           12:00:00        lunch with Andy
           15:00:00        group meeting
while this command:
calendar -n <calfilewould print:
       Your next appointment is on 04/26/91:
           15:00:00        group meeting
Finally, the
-r option takes a regular expression
which is used to limit consideration
to those appointments the user is interested in.
For example to determine when the
next appointment with a family member will occur, the user can say:
calendar -n -r 'wife|brother|aunt|uncle' <calfilewhich would print:
       Your next appointment is on 04/29/91:
           14:00:00        visit Aunt Edna
The remainder of
this tutorial is devoted to implementing the electronic appointment calendar.