The 'PrintDiary' program prints a desk_diary showing nearly a
complete month on each page. It inserts a blank half-page to help
synchronise the dates with the 4-week pages. Days can annotated with
personalised anniversary-dates, calculated-ages etc.
 
  
It was first written on a BBC Model B and used successfully for
5years; it was then rewritten in 1992 in Basic 5 on an A3000 and is
now suitable for Archimedes computers.

  
The program has no GOTO instructions and it was developed using
DeskEdit from Risc User. I strongly recommend Deskedit for writing
letters and editing programs. 'PrintDiary' controls the printer
directly ie: no driver is needed; it was tested using an Epson FX-80.


To change fonts or adjust for incompatible printers, alter the Print
Procedures at the end of the program. Refer to the corresponding
control codes for your own printer. Note that a pitch of 12 lines/inch
is set-up instead of the default 6 lines/inch. Vertical tabulation is
set to give a half-page tab and one allowing printing just below the
perforations. Reversing is also necessary.

11 inch x 241 mm fanfold paper is normally used.
 
 
Follow the Set-up Procedure Below to adjust for each year:
     
 1. Set the year, and its variable holidays in the Diary-dates DATA
      statements at the End of the Program.
 
 2. Other items are controlled when the program is run eg:
 
 3. Set opt%=0 & 1 for Previews to check raw data, messages, and
      dates.
 
 4. Then Set opt%=4 for the Final Print which takes about 50 minutes.
 
 5. opt%=3 will give a partial print if your printer fouls up (my
      Epson never has).
 
 6. For a detailed screen-only preview, use a printing option but
       reply N (=NO) when asked to confirm that the printer is on.


 
There is a Full Data Description followed by live data at the End of
the Program; it is copied here for convenience:


This Data-list is correct for 1993.
Those dates already decided for 1994 are included with
condition-numbers which will activate them when Diary-year 1994 is
selected.
 
Dates for 1992 have been left in as examples; they can be removed now.
You will need to replace my Birthdays and other Anniversaries with
events that you need to remember; it takes some effort but it lasts
for years when you've done it.
 
The program initialises the printer to suit itself and restores it to
normal on exit. The printer will reverse-step over the perforations
and the initialisation is for a page which is only half-a-fanfold-page
in length. This will be cancelled when a print ends normally but a
paper foul-up will leave the printer wondering where it is.
 
Read the following notes and experiment in one of the non-printing
preview modes. Then print a summary of the special dates and check it
thoroughly again and again. Leave it overnight in case you have any
more bright ideas.

You can print replacement sections but its better to go for one good
print only. Ensure that you have at least 13 sheets of fanfold and a
good ribbon before the full printout.
 
The Data-list is headed by the Diary-year number in long or short
form, ie: 93 or 1993,  0 or 00 or 2000,  7 or 2007,  29 or 2029.
 
Thereafter the data is read in sets of 3 integers followed by a
string. The order is: Month,  Date,  Condition,  Message-string.

Comments following the string to the line-end will be ignored
providing that they are alpha-only.

      TAKE CARE WITH COMMENTS OR (BETTER) AVOID THEM ALTOGETHER
 
After the Year-number, the First-number is the Month-number:
The Month-number must rise from 0 (or more) to 13 (or less); 0  means
Dec of year before Diary-year, 1 is Jan of Diary-year; 13 means Jan of
year after Diary-year. A Month-number can be missed out but one cannot
be inserted out of order.
 
The Second-number is the Date-number:
This is checked to be in range 0 - 31 only.
A message could be set against Feb 30 but it would never be printed.
Dates do not have to be in ascending order; they can be out of order.
 
The Third-number is the Condition-number (let's call it C):
Absolute values of C greater than say 2000 will probably not be
useful. The effect of C depends upon how many digits it has and its
sign.

Consider positive (+ve) values of C:
 
  C values from 0 to 99 (1 or 2 digits), cause messages to be printed
    in the matching year only:
        eg If C=94 message printed in Diary-year 1994 only
           If C= 6 message printed in Diary-year 2006 only
           If C=28 message printed in Diary-year 2028 only.
 
  C values from 100 to 999 (3 digits), cause messages to be printed in
    any Diary-year. All 3-digit numbers have the same effect; choose
    one and stick to it. I use 111 because it is easy to type.
 
  C values from 1000 upwards (4+ digits), cause messages to be printed
    in any Diary-year and they are immediately followed by an integer
    number calculated by the program.
    
  The number makes sense if thought of as the 'age' of a person or the
    'age' of an item.
  For this to be useful the value of C will be either:
    the year-of-birth of the person whose birthday occurs on that day,
    or the year-of-acquisition of the item whose anniversary it is.
    
 
Example 1:
 
  If Sarah was born on Aug 24th 1982, the following data might be
    suitable:
     
    DATA  8,  24, 1982,   "Sarah is "
 
    In the Diary for 1994 (say), this would print the reminder:
       
      'Sarah is 12' for the appropriate date ie Aug 24th.
    
 
Example 2:
 
  If your car (or dog) was acquired (born) on Dec 29th 1977, consider:
 
    DATA 12,  29, 1977,   "Rover is "
 
    In the Diary for 1994 (say), this would print the reminder:
       
      'Rover is 17' for  Dec 29th 1994.
     
 
  To include a corresponding message in the December of the outgoing
    year (in this case 1993), you will need to put it into the
    overlapping month called Month 0 at the start of the diary.
    To do this, you could add:
         
    DATA  0,  29, 1977,   "Rover is "
    
    In the Diary for 1994 (say), this would print the reminder:
       
      'Rover is 16' for  Dec 29th 1993.
      
     Dec 93 appears at the start of the '94 Diary.
     Dec 94 appears at the  end  of the '94 Diary; followed by Jan 95.
     
  
 
Now Consider negative (-ve) values of C:
  Negative values of C mark dates as 'Special dates'
  Special dates included in the data-list, can be excluded from the
    your print-out by an option at run-time. This enables you to
    prevent personal messages from being included in a diary being
    printed for a friend.
 
  The action of C depends on its size, just the same as for +ve
    values. In fact you simply calculate the value of C required
    normally, and then preface it by a minus-sign: '-'
 
Example 3:
 
  The dates above are made special and put in order:
 
    DATA  0,  29, -1977,   "Rover is "
    DATA  8,  24, -1982,   "Sarah is "
    DATA 12,  29, -1977,   "Rover is "
    
  Now I can stop these messages from appearing in a Diary that I am
    printing for a friend, I can choose to include them or exclude
    them at run-time just prior to printing.
 
 
End the Data-list with 'bogus' Month-number, ie a number in the
  position of a Month-number but obviously too big ie greater than 13.
  
  I use 999 but anything > 13 will do
  
  The rest of the line can be blank or can contain comment.
  
  
Finally, a note on Holidays:
       
  Christmas and New-year Holidays are sometimes difficult.

    When Christmas or Boxing Day falls on a Saturday or Sunday the
    following Monday and perhaps Tuesday will be a Holiday. This can
    be thunk out (my personal past-tense of the verb to think) or
    ignored.
    
  Other Holidays are easy because they are mainly Mondays.
    I never use the term 'Bank Holiday' because I have no great liking
    for banks and I don't wish to spoil MY HOLIDAY by thinking that I am
    indebted to a bank for it. In your diary you can call these days
    whatever you like.
 
The live data copied from the program follows:
 
:
DATA  93
:
DATA  0,  25,   111,   "Christmas"       Dec of year before Diary year
DATA  0,  26,   111,   "Boxing"
DATA  0,  29, -1977,   "Rover is "       Program adjusts age to year before
DATA  0,  21,   111,   "Shortest Day"
:
DATA  1,   1,   111,   "New Year"        Jan
DATA  1,   1,    92,   "New Leap Year"
DATA  1,   1,    96,   "New Leap Year"
DATA  1,   3,    94,   "Holiday"
DATA  1,   2,    95,   "Holiday"
DATA  1,  10, -1900,   "Granny might be "
DATA  1,  20, -1980,   "Big Joe will be "
:
DATA  2,   8, -1966,   "Peter is "       Feb
DATA  2,  14,   111,   "Valentine"
DATA  2,  20, -1987,   "Little Joe will be "
DATA  2,  23,    93,   "Shrove/Pancake"
DATA  2,  15,    94,   "Shrove/Pancake"
:
DATA  3,   3,    92,   "Shrove/Pancake"  Mar
DATA  3,  10,  -111,   "Fido's Birthday"
DATA  3,  20,   111,   "Spring Equinox"
DATA  3,  28,    92,   "Clocks Forward"
DATA  3,  27,    93,   "Clocks Forward"  Provisional date
DATA  3,  26,    94,   "Clocks Forward"  Provisional date
DATA  3,  29,    92,   "Mothers Day"
DATA  3,  21,    93,   "Mothers Day"
DATA  3,  13,    94,   "Mothers Day"
:
DATA  4,  17,    92,   "Good Friday"     Apr
DATA  4,   9,    93,   "Good Friday"
DATA  4,   1,    94,   "Good Friday"
DATA  4,  19,    92,   "Easter"
DATA  4,  20,    92,   "Easter"
DATA  4,  11,    93,   "Easter"
DATA  4,  12,    93,   "Easter"
DATA  4,   3,    94,   "Easter"
DATA  4,   4,    94,   "Easter"
DATA  4,  29, -1967,   "R"
DATA  4,   2, -1981,   "M"
:
DATA  5,   1,   111,   "Pay Water Bill"  May
DATA  5,   4,    92,   "Mayday"
DATA  5,   3,    93,   "Mayday"
DATA  5,   2,    94,   "Mayday"
DATA  5,  10,  -111,   "Catto's Birthday"
DATA  5,  25,    92,   "Spring"
DATA  5,  31,    93,   "Spring"
DATA  5,  30,    94,   "Spring"
:
DATA  6,  10, -1973,   "Sue is "         Jun
DATA  6,  21,   111,   "Longest Day"
DATA  7,  29, -1986,   "Richard is "     Jly
DATA  7,  30, -1982,   "Robert will be "
:
DATA  8,  24, -1982,   "Sarah is "       Aug
DATA  8,  31,    92,   "Late Summer"
DATA  8,  30,    93,   "Late Summer"
DATA  8,  29,    94,   "Late Summer"
:
DATA  9,  10,  -111,   "MOT"             Sep
DATA  9,  22,    92,   "Autumn Equinox"
DATA  9,  23,    93,   "Autumn Equinox"
DATA  9,  23,    94,   "Autumn Equinox"
:
DATA 10,   1,   111,   "Pay Water Bill"  Oct
DATA 10,  24,    92,   "Clocks Back"
DATA 10,  30,    93,   "Clocks Back"     Provisional date
DATA 10,  31,    94,   "Clocks Back"     Provisional date
:
DATA 11,   5,   111,   "Bonfire"         Nov
DATA 11,   5, -1983,   "Bonfire, Daniel is "
:
DATA 12,  21,   111,   "Shortest Day"    Dec
DATA 12,  25,   111,   "Christmas"
DATA 12,  26,   111,   "Boxing"
DATA 12,  28,    92,   "Holiday"
DATA 12,  28,    93,   "Holiday"
DATA 12,  27,    93,   "Holiday"
DATA 12,  27,    94,   "Holiday"
DATA 12,  29, -1977,   "Rover is "
:
DATA 13,   1,   111,   "New Year"        Jan of year following Diary year
DATA 13,   1,    96,   "New Leap Year"
:
DATA 999                                 End of Data
