WW WW EEEEEEE EEEEEEE KK KK LL YY YY WW WW EE EE KK KK LL YY YY WW W WW EE EE KK KK LL YYYY WW WWW WW EEEEE EEEEE KKKKK LL YY WWWW WWWW EE EE KKK KK LL YY WWW WWW EE EE KK KK LL YY WW WW EEEEEEE EEEEEEE KK KK LLLLLLL YY WWWWW WW EE EE KKKK KK LLL YYY WWW WW EEEEEEE EEEEEEE KKK KKK LLLLLLLL YYY W WW EEEEEEE EEEEEEE K KKKK LLLLLLLL YYY W W WW EEEE EEEE KKKKK LLLLLLLL YYY WW WW WW EEEEEEE EEEEEEE K KKKKK LLLLLLL YY WWWWW WW EEEEEEE EEEEEEE KK KKKK LLLLLL YY Y WWWWW WW EE EE KKK KKK LLLLL YYYY WEEKLY An Academic Calendar Program Donald E. Barth 9 July 1983 WEEKLY, an Academic Calendar Program ------ -- -------- -------- ------- The WEEKLY program constructs a calendar of the events which are scheduled for the coming weeks. This calendar can be printed at 12 characters per inch on 15 inch wide paper. The width of each line in the calendar is 157 characters. The events which appear in the calendar are described by files which which are created using an ordinary text editor. Some of these files describe the events which take place on a particular day of the week, such as on every Monday, for several weeks. Other files describe events which take place only once. The calendar includes 1 column for each of the weekdays Monday through Friday, and a single column for the weekend. Weekend events are labeled as to whether they are held both days or only on Saturday or only on Sunday. The calendar includes the starting time, the ending time although this is not required, and a short description of each event. All of the events which start at the same time appear on the same line. A line is ruled across the calendar at the start of each new hour. The first line in each description of an event which occurs only on a single date is darkened to draw attention to the event. The WEEKLY program is written entirely in FORTRAN, but is system dependent both in the construction of the names of the files which it reads and in the use of 5 characters per computer word to store the calendar for a single week while this is being accumulated. The distributed version is for the DECsystem10 and DECsystem20. However, the conversion to other systems should be relatively easy. The program reads the event descriptions using a multiple of an A1 format so that the interpretation of the line can be done in a system independent manner. To save space, if the line contains the text of a description of the event, a FORTRAN ENCODE statement is used to pack 5 characters per computer word. The packed text is stored in a large array which is addressed by date and line. After all of the files which describe the events for a single date have been read, the information for that date is sorted by starting and ending times. The calendar for the week is written into the output file after the information for all 6 columns has been accumulated. The WEEKLY program reads many files, some with predefined names and others with names chosen by the user. The WEEKLY.TOP file contains the text of one or more lines to be written across the top of each weekly calendar. The WEEKLY.DAY file specifies the names of other files which describe the events which occur on the same day of the week for several weeks. The names of the files which describe repeating events should be chosen so as to have meaning to the person who maintains them. Events which occur only once are specified in files which have names of the form DDMMM.YY, where DD is the 2 digit day of the month, MMM is 2 WEEKLY, an Academic Calendar Program the 3 letter month abbreviation, and YY is the right 2 digits of the year. The WEEKLY.DAY File, Establishing a Repeating Schedule --- ------ --- ---- ------------ - --------- -------- Schedules of events which are repeated on a weekly basis are specified by the file named WEEKLY.DAY. This file can specify several different schedules to be applied during various parts of the year. Each schedule is defined by several lines which state the range of dates during which the schedule is to be active and the names of the files which for each day of the week describe the events and the times during the day when these are held. The first of the lines which defines the schedule must start with either of the words REGULAR or SPECIAL and this must be followed directly by a colon. A list of the dates and/or of the ranges of dates when this schedule is to be used must appear to the right of the colon. There can be only one regular schedule for a particular date, but any number of special schedules. If more than one schedule beginning with the word REGULAR is specified in the WEEKLY.DAY file for a particular date, then only the first of these is used for that date. All schedules beginning with the word SPECIAL for a particular date are used regardless of whether there are schedules for the same date which begin with the word REGULAR. The lines which define a single schedule extend up to but do not include the next line which starts with either of the words REGULAR or SPECIAL followed directly by a colon. Spaces can follow the colon after the word REGULAR or SPECIAL, and can also appear between the dates. Dates can be specified in almost any customary manner, but must include numeric day of month, month name or number and either all 4 digits of the year or the right 2 digits of the year. Single dates or ranges of dates can be separated either by commas, by the words AND or OR, or merely by spaces. The words AND and OR are considered to be equivalent. Dates which are to be the starting and ending dates in ranges of dates can be separated either by the words TO or THROUGH. Both TO and THROUGH imply the range of dates including the stated starting and ending dates. Month names are the only words which can be abbreviated in these files, but THRU is accepted as an alternate spelling of THROUGH. The following date specifications are typical of those which are allowed. WEEKLY, an Academic Calendar Program 3 OCTOBER 20 83 OCTOBER-20-83 OCTOBER 20, 83 OCTOBER/20/83 20 OCTOBER 83 20-OCT-83 10-20-83 20 OCTOBER,83 20/OCT/83 10/20/83 Each of the lines which follows that beginning with the word REGULAR or SPECIAL specifies a particular day of the week and the name of the file which specifies the events for that day. Like the words REGULAR and SPECIAL, the day name cannot be abbreviated and must be followed immediately by a colon. The word WEEKDAY followed by a colon can be used to specify all of the days Monday through Friday, the word WEEKEND can be used to specify both of the days Saturday and Sunday, and the word ALL can be used to specify all days of the week. It is not necessary that a particular day of the week be specified, if it is not specified, then there are merely no events which are specified for that day by the current schedule. The file name which follows the colon must be formed of 6 or fewer alphabetic letters A through Z and/or digits. A file name extension or file type consisting of a period and 3 or fewer alphabetic letters and/or digits can follow, but is not necessary. For example, if a particular class schedule applies during most of the weeks in a semester, but different schedules apply during midterm examination week and during final examination week, then the examination schedules would be established before the schedule for the rest of the semester. As long as the midterm week and final week do not overlap, either can be specified first. Such a schedule could be defined by the following lines in the WEEKLY.DAY file. The text appearing to the right of the exclamation points is taken as a comment and is otherwise ignored. Regular: 25/Oct/82 through 10/29/82 !midterm week Monday: monmid.fal Tuesday: tuemid.fal Wednesday: wedmid.fal Thursday: thumid.fal Friday: frimid.fal Regular: 15 December 82 thru December/17/82 !final week Wednesday:wedfin.fal Thursday:thufin.fal Friday:frifin.fal Regular:7-Sep-82 to December 17, 82 !entire fall semester Monday: mon.fal Tuesday: tue.fal Wednesday: wed.fal Thursday: thu.fal Friday: fri.fal Saturday: sat.fal 4 WEEKLY, an Academic Calendar Program The Event Description Files --- ----- ----------- ----- The files which describe the events which are to appear in the calendar all have a similar format. In addition to those which are named directly by the WEEKLY.DAY file, there can be a separate file for each day describing the events taking place on that day. This separate file has a name constructed of the 2 digit day number, then the first 3 letters of the month name, followed by a period and the right 2 digits of the year number. For example, the file named 21NOV.82 would describe the events occurring on the twenty-first of November 1982. Each event description must start with a line which specifies the starting time, or the starting and ending time separated by a minus sign. Times must be expressed as the hour followed immediately by a colon and the minutes. Both the colon and minutes are required. A number which appears at the start of a line is taken to be part of the event description rather than a time if the colon and minutes are missing. Hours can be stated either in the 12 hour system or the 24 hour system. If the time does not bear either an AM or a PM suffix, then 00:00 is the start of the day 00:01 through 11:59 is before noon 12:00 is noon 12:01 through 23:59 is after noon 24:00 is the end of the day If the 12 hour system is used, then an AM suffix is required for times before 1:00am and a PM suffix is required for times of 1:00pm or later. The AM suffix is not required in the 12 hour system for times between 1:00am and noon. If either the AM or PM is used as a suffix, then it must directly follow the minutes without an intervening space. The AM or PM can appear in either upper case (capital letters) or lower case (small letters), but a period must not appear between the letters. Noon should be represented either without a suffix or as 12:00m, where the m stands for the latin word meridies, since 12:00am represents the start of the day or 12 hours before noon, and 12:00pm represents the end of the day or 12 hours after noon. The event descriptions in a particular file can appear in any order and need not be sorted by starting time. The program will sort the entries by both starting and ending times. The program allows a special notice to appear at the top of the schedule for a particular date. Such a special notice must appear at the start of one of the files which describe the events for that day or date, without any preceding timestamp, since once a timestamp is found in a file, it applies to all of the following lines until the next timestamp is encountered. WEEKLY, an Academic Calendar Program 5 If a date or a range of dates is specified to the right of the time or time range, then these dates are the dates when the event is not held. This is really only useful in the files specified by the WEEKLY.DAY file to state exceptions to the repeating schedule. The rules for the construction of the dates and/or ranges of dates are identical to those stated earlier for the WEEKLY.DAY file. All of the entries in these files have a form similar to that shown below. The text appearing to the right of the exclamation points is taken as a comment and is otherwise ignored. 10:00am-11:45am 12 Nov 82 !date when event is not held First line of description !comment Second line . . Final line The first line of the description can be at most 25 characters long. The subsequent lines should be limited to 23 characters each, because these lines will be indented 2 spaces to the right in the calendar. Long lines are not split or wrapped around, instead the excess characters are discarded. There can be at most 500 lines of descriptive text, excluding timestamps, in the column for any particular date. An Example of a Calendar Produced by the WEEKLY Program -- ------- -- - -------- -------- -- --- ------ ------- A set of typical files and the results which are produced by this program when these files are processed are shown below. Since the calendar which is produced is much wider than this document, only the right edge of calendar is shown. The week chosen in the example is the week containing Thanksgiving Day in 1982. The WEEKLY.DAY file specifies 2 regular schedules, one for Thanksgiving itself, and another for the rest of the year. Since only 1 regular schedule can be used for any particular date, the file which specifies the schedule for Thursday is not used on Thanksgiving Day. CONTENTS OF THE WEEKLY.DAY FILE Regular:November 25, 82 !no classes on Thanksgiving day Regular:1-Jan-82 to 31-Dec-82 Thursday:thu.sch Friday:FRI.sch Saturday:Sat.sch Sunday:Sun.sch Weekend:end.sch 6 WEEKLY, an Academic Calendar Program CONTENTS OF FILE THU.SCH CONTENTS OF FILE FRI.SCH 8:30-9:00 9:15 Early birds breakfast Eastern European Finance Cafeteria, east end Room C19 9:00 9:00-11:00 Plant Biology Advanced Basket weaving Room A16 John Smith House 8:30-9:00 Early birds breakfast Cafeteria, east end 9:00 General anatomy Room B56 CONTENTS OF FILE SAT.SCH CONTENTS OF FILE SUN.SCH 8:00-12:00 10:00 Saturday morning cartoons Nondenominational service Memorial Union Lounge Old Chapel (bring snacks) 9:15 Organic Chemistry Advanced Lab until dusk CONTENTS OF FILE END.SCH 10:45-12:45 Late birds brunch Cafeteria, west end CONTENTS OF FILE 25NOV.82 CONTENTS OF FILE 26NOV.82 Thanksgiving recess today 12:00 no classes are to be held Dean's Lunch Guest speaker: Jim Smith CONTENTS OF FILE 27NOV.82 CONTENTS OF FILE 28NOV.82 9:00 9:00 Head of Charles Raft Race Choir Practice Anything that floats 9:00 Big Tag Sale, 55 Main St Vendors wanted The dialog between the user and the program when the files listed above were processed is listed below. The The responses typed by the user appear to the right of the question marks. WEEKLY, an Academic Calendar Program 7 Starting date (a Monday)? November 22, 1982 Mon 22-Nov-1982 Show how many weeks? 1 Name of output file? test.out Answer 0 if on Decwriter, 1 if on Diablo Will calendar be printed on Decwriter or Diablo? 0 Mon 22-Nov-1982, Lines: 0 Tue 23-Nov-1982, Lines: 0 Wed 24-Nov-1982, Lines: 0 Thu 25-Nov-1982, Lines: 2 Fri 26-Nov-1982, Lines: 11 S/S 28-Nov-1982, Lines: 15 The right edge of the resulting calendar is shown below. All columns to the left of the Thursday column were empty. Only the notice about classes being cancelled for Thanksgiving appeared in the Thursday column. Friday Saturday 26-Nov-82 and Sunday -------+-------------------------+-------------------------+ s today| |8:00-12:00 m Saturday | be held| |Saturday morning cartoons| | | Memorial Union Lounge | | | (bring snacks) | |8:30-9:00 am | | |Early birds breakfast | | | Cafeteria, east end | | -------+-------------------------+-------------------------+ |9:00 am |9:00 am Saturday | |General anatomy |Head of Charles Raft Race| | Room B56 | Anything that floats | |9:00-11:00 am |Big Tag Sale, 55 Main St | |Advanced Basket weaving | Vendors wanted | | John Smith House |9:00 am Sunday | | |Choir Practice | |9:15 am |9:15 am Saturday | |Eastern European Finance |Organic Chemistry | | Room C19 | Advanced Lab | | | until dusk | -------+-------------------------+-------------------------+ | |10:00 am Sunday | | |Nondenominational service| | | Old Chapel | | |10:45-12:45 pm Both days| | |Late birds brunch | | | Cafeteria, west end | -------+-------------------------+-------------------------+ |12:00 m | | |Dean's Lunch | | | Guest speaker: | | | Jim Smith | | -------+-------------------------+-------------------------+