.RM72 .LM5 .center 72;VAXDTC .center 72;VAX Desk Top Calendar .center 72;James Downward .center 72;27-JUL-1984 .HEADERS ON .STHL ,0 .AP .flags bold .hl 1 Introduction VAXDTC is a new, improved, VAX-only version of Mitch Wyle's original RSX DTC program. The original DTC ran only on RSX. Glen Everhart, cleaned up some of the code, added some features, and made a VAX version. This rewrite is based on Glen Everhart's version. The goals of this version are to .list .le;Keep a sorted calendar file with duplicate entries removed, .le;Improve on-line help, .le;Improve display readability, .le;Provide hooks for a VPW interface ("bomb proofing") .le;Improve reliability .le;Provide the ability to produce a printed calendar list .end list In this version, some features of Glen Everhart's DTC version are latent, but not present in the menu (such as scheduling). These features are those which I believe should be redone in a more VAX-compatible fashon at a future date. Rather than try and support them in their current unwieldly state, I chose to remove them from the menu. .hl 1 VAXDTC Replaces Datebook in VPW VAXDTC is faster and easier to use than DATEBOOK ever was and doesn't require VAX Datatrieve to use. Consequently, it replaces DATEBOOK in VPW V4.0 Hooks are also provided by the QCHECK command to update a symbol DTC__APMT with the number of appointments for that day. This is so menu displays can show the number of appointments for the day without the user having to invoke DTC. The inclusion of DTC in VPW involved three changes; .list .le;When VPW is invoked, it only checks the DTC calendar. .le;The VPW TODAY command, uses DTC not DATEBOOK. .le;VPW automatically displays the number of appointments scheduled as part of the menu display so that a constant reminder is present. .end list .hl 1 VAXDTC The DTC program provides an on-line, appointment scheduler and calendar facility. The program currently supports four major functions: .list .le;Day-At-a-Glance .le;Month-At-A-Glance .le;Week-At-A-Glance, and .le;Year-At-A-Glance. .end list DTC is defined as a foreign command for each user by SYS$VPWFILES:SETVPWSYS.COM. DTC may either be used from within VPW or the program may be invoked by: .lit $DTC ! Use DTC interactively $DTC [[option] [date]] ! Send commands to DTC directly .end lit Numrous commands (including D for Day, W for Week, M for Month, etc.) exist. If no option is given, the a menu is displayed. A command is then requested after each menu display, until the user types EX to exit. The basic date format is mm/dd/yy for Day and Week command, and mm/yy for the Month command. Time is specified in HH:MM format but appointments can only be made for half hour time slots. For example, the command D 1/03/84 displays appointments for January third, 1984. Then entering .lit 9:00 .end lit at the Command: prompt, would insert the appointment specified by the appointment string into the 9:00 time slot on the specified date. When DTC starts up, the default date is set to the current day's date. Subsequently, any date entered as a DTC command sets the default date to the newly entered date. The I command (for initialize) may be used to reset the default date back to the current date. Appointments can be made interactively from within DTC or directly via a DCL command. A DCL command to enter an appointment in one's calendar might be: .lit $DTC D 010183 9:00 Fred Taylor interview .end lit .hl 1 Terminal Requirements VAXDTC runs only on VT100 compatible terminals (VT100 and VT200 terminals). Because the NBI word processor has an "almost" VT100 compatible emulation mode, VAXDTC "almost" runs correctly on the NBI. The major exception is that the year display is not operational for the NBI. .hl 1 Time Format The basic time format is HH:MM. Calendar entries may be made from 8:00 am to 4:30 pm in half hour increments. Since a meeting or appointment may last longer than a single half hour time block it is also possible to enter schedule a block of time by entering range of times in HH1:MM1>HH2:MM2 format where HH1:MM1 represents the first time slot the appointment uses and HH2:MM2 represents the last time slot the appointment uses. Times outside the range from 8:00 am to 4:30 pm are treated as evening appointments and are posted as if they occured at 5:00 pm. .hl 1 Date Format Dates may be given as mmddyy, mm/dd/yy, or dd-mmm-yy. For example, June 6, 1984 could be represented by: .lit 6/6/84 060684 6-Jun-84 .end lit If the forms without either '/' or '-' is used, then each component number of mm, dd, and yy must be a two digit number. Leading zeros must be inserted if necessary into the date string. It is also possible to change the default date incrementally from its current value by 'nn' units. The syntax of this command is .lit + or - nnU where nn = interval U = D for Day = Y for Week = M for Month = Y for Year .end literal .hl 1 HELP DTC has a built in help facility. Help may be obtained by pressing the PF2 key. On VT2xx terminals in 7 bit mode, HELP may also be obtained by pressing the HELP hey. The Help information displayed depends on the previous command given to DTC. For example, if the DAY command was just used, DTC will display HELP on the DAY command by default. The first time the PF2 key is pressed, the current default help information is displayed. The second time, the key is pressed, DTC prompts for a topic, and you can request any DTC Help which is available. If you enter a carriage return to a request for a HELP topic, DTC resets the help information to introductory HELP information. .hl 1 DTC Data File The DTC appointment records are kept in SYS$LOGIN:DTC.DAT. This is an ASCII file with fixed length records. DTC tries to keep appointments in its calendar file in chronological order. Since appointments can be made in any order for any date and time, it is necessary for DTC to sort the appointments into chronological order after new appointments are added. When this occurs, a message is displayed that the appointment file is being sorted. The process of sorting involves creating a new file, sorting records into it, and deleting the old file. For best performance, DTC's file size should be kept as small as possible (improves sorting speed). So it is important to purge old appointments (past weeks, months) from one's calendar when they are no longer needed. .hl 1 Commands When DTC is invoked a menu displaying a list of the major commands is displayed. .keep .nofill ^*D\* [mm/dd/yy] - Appointment Schedule for dd/mm/yy ^*EV\* [Text] - Add/change Evening Appointment ^*W\* [mm/dd/yy] - Week-At-A-Glance for week of dd mm yy ^*M\* [mm/yy] - Month-At-A-Glance for mm yy ^*Y\* [yy] - Year at a Glance ^*PR\* [mm/dd/yy..]- Print list of appointments ^*PU\* [mm/dd/yy] - Purge appointments prior to mm/dd/yy ^*I\* - Reset default date to today. ^*PF2\* - Display Help information ^*PF4\* - VPW Command Screen ^*EX\* - Exit Command: .b .fill .nokeep These commands and several others will be discussed in subsequent sections. .hl 2 Day at a Glance Command The basic command for entering an appointment or viewing a days events is the Day command. The format for the Day command is (brackets enclose optional entries) .lit D [mm/dd/yy] [HH:MM[>hh2:mm2] Text...Text...] .end lit The date string can be in any of the allowed formats. If the date is not present, it defaults to the current or default day. The appointment string is optional and if present is entered as the appointment for that day and time. If not present, the current day's appointments are displayed, and DTC waits for a command to be input. The format of an appointment string is either .lit HH:MM Text.....Text (60 characters worth of text) .end lit to make an entry for time HH:MM, or .lit HH:MM>hh2:mm2 Text.....Text (60 characters worth of text) .end lit to reserve a block of time from HH:MM to hh2:mm2. The appointment text string may be omitted entirely in which case DTC positions the terminal cursor to the proper appointment time and allows the user to input the appointment message at the proper position. If a carriage return is entered at this point, any previous appointment string at that time is deleted. This makes it easy to remove appointments which were previously scheduled. If a Control-Z is entered, no changes are made and DTC returns to the main menu. When an appointment string is entered, the day's appointments will be updated, and DTC will again wait for another command. If RETURN is entered, DTC will return to the main menu. .hl 2 Evening Command An evening appointment is any appointment outside of normal working hours (8:00 am to 4:30 pm inclusive). All evening appointments are assigned a time of 17:00 (5:00 pm) for display purposes. The EV command can be used to enter an appointment. When EV is typed, the calendar for the current day is displayed and the cursor moves to the Evening entry location. .hl 2 Week at a Glance Command The format for the Week command is .lit W [mm/dd/yy] .end lit The date string can be in any of the allowed formats. If it is not present the date defaults to the current or default day. The week containing the specified day will be displayed. Every day on which an appointment exists, will have those appointment times displayed. After the weeks appointments are displayed, DTC will wait for a RETURN (return to main menu) or command string to be entered. .hl 1 Month at a Glance Command The format for the Month command is .lit W [mm/yy] .end lit If no date string is given, the display will default to the current or default month and year. Three month calender displays are presented, the previous month, the selected month, and the next month. If the current date corresponds to any day in the month display, that day is highlighted. Any date in the selected month which has calender entries, will be flagged with a highlighted asterix ('_*'). When DTC finishes displaying the month, it waits for input (with the calender dispalyed). Enter a RETURN, to return to the the main menu, or a valid DTC command to perform some other function. .hl 1 Year at a Glance Command The format for the Year command is Y [yy] If no year is given, the display will default to the current display. The current date in the year display will be displayed highlighted on VT100 compatible terminals. The year display can not work on NBI terminals in VT100 emulation mode because the NBI emulation does not support 132 column video display. .hl 2 Initialize Command The I[nitialize] command is used to reset the default date back to the current date. .hl 2 Locate Command The L[ocate] command is used to locate a block of half hour periods during the week including the optional date which can be used in scheduling a meeting. The format of the command is .lit L [mm/dd/yy] n .end lit where n is the number of contiguous half hour time slots to look for and the optional date selects the week interval to search in. When the command is issued, a standard week display will appear. However, each time printed on the screen does not represent an appointment. Rather, the times represent starting times available for scheduling a meeting of the required length. Note that no evening times will be scheduled (17:00 or later). .hl 2 Print Command The Print command is used to print the appointments for a given date or a range of dates either on the line printer, the letter quality printer, a scratch file or the user's terminal. By default output goes to the fast line printer (SYS$PRINT). The format of the command is .tp 10 .lit PR[int] [MM/DD/YY[>mm/dd/yy]] [Output] where Output may be one of LQ - Letter Quality Printer PRINTER - Current printer (SYS$PRINT) SCRATCH - SCRATCH.FIL TERM - User's Terminal TT: - User's Terminal .end lit The dates if present may be in any of the allowed formats. If no date is specified, the current default date is used. If only one date is specified, only entries for that date will be printed. If two dates are specified, all entries from the first date specified to the last date specified will be printed. .hl 2 Purge The Purge command is used to remove old appointments from the calendar so that they do not clutter the calendar needlessly. The DTC calendar is not purged automatically, rather it is only purged of old appointments when the Purge command is used. Note that the first two letters, PU, of the Purge command are required to distinguish this command from the Print command. The format of the Purge command is .lit PU[rge] [mm/dd/yy] .end lit If the optional date is not speciified, all appointments prior to the current date are removed from the current calendar file. If the optional date is specified, all appointments prior to that date are purged from the calendar file. The process of purging files, involves creating a new appointment file, copying just the records to be retained to it, and finally deleting the old appointment file. In the event of an error (out of disk quota or some such), DTC attempts to retain the original file. .hl 2 Check Command The CHECK command is designed to be used in DCL command mode. If the command DTC CHECK is given (for example, it is in the user's LOGIN.COM file), DTC will check to see if any appointments are scheduled for that day. If they are, DTC will issue a message saying how many appointments exist for that day. .hl 2 QCheck Command QCHECK requests DTC to perform a quiet check for the number of appointments the user has that day. DTC prints no messages but sets the DCL symbol DTC__APMT to be the number of half hour appointments scheduled for that day. .hl 2 Today Command The T[oday] command is designed for use as a DCL command. If the command DTC TODAY is given (and DTC is a foreign command), the appointment list for the current day is displayed, and DTC exits back to DCL without disturbing the display. .hl 2 Calendar Command The C[alendar] command is designed for use as a DCL command. If the command DTC Calendar is given (and DTC is a foreign command), the calendar for the current year is displayed, and DTC exits back to DCL without disturbing the display. This command will not work on NBI terminals in VT100 mode. .hl 1 Installation of VAXDTC To install VAXDTC on a VMS system two things must be done. .list .le;Copy DTCVAX.EXE to SYS$SYSVPWFILES. .LE;Insert DTC.HLP into SYS$SYSVPWFILES:VPW.HLB .LE;Define a foreign command (DTC:==$SYS$SYSVPWFILES:DTCVAX) .END LIST .hl 1 Future Work Work on VAXDTC has not completely terminated but the functionality as descrbed here should remain unchanged. There are a number of features which would be useful to incorporate into VAXDTC one day if time permits including .list .le;Use of the keypad to reduce keystrokes and make menu selection faster. .le;Incorporate the Reminder System within DTC. .le;Allow DTC to schedule find a convenient meeting time for a collection of named individuals. .end list What gets done in the future also, will be affected by comments from users as to what they like, and what they don't like. As always, comments are welcome.