home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1994-03-08 | 26.1 KB | 816 lines |
- >Desk_diary
- Provides a printed Desk-diary with personalised anniversary-dates, calculated-ages etc
- (C) A H Evans 1993
- First written on a BBC Model B and used successfully for 5 years
- Rewritten (1992) in Basic 5 on an A3000 and suitable for Archimedes computers
- This is version 2.10 of September 1993
- There is a Full Data Description at the End of the Program
- This program has no GOTO instructions; it was developed using DeskEdit.
- The program controls the printer directly ie: no driver is needed.
- It was tested on an Epson FX-80.
- To change fonts or adjust for incompatible printers, alter the Print
- Procedures at the end. Refer to 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 Set-up Procedure Below to adjust for each year:
- 1. Set year, and variable holidays in Diary-dates Data at End of 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 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
- $;" ";
- )(first%=
- :change_year%=
- :endofdata%=
- mstart%(15)
- month_list%(200),date_list%(200),condition_list%(200),message_list$(200)
- i%=0
- 15: mstart%(i%)=-1:
- :i%=0
- Read Diary-dates data: First item is Diary-year
- yr%: year%=
- (yr%)
- 1-year$=
- year%:
- (year$)<2 year$="0"+year$
- year%>=51 fullyear%=1900+year%
- fullyear%=2000+year%
- year%= 0 lastyear%=99
- lastyear%=year%-1
- 4Alastyear$=
- lastyear%:
- (lastyear$)<2 lastyear$="0"+lastyear$
- year%=99 nextyear%= 0
- nextyear%=year%+1
- 6Anextyear$=
- nextyear%:
- (nextyear$)<2 nextyear$="0"+nextyear$
- Read Diary-dates data in order: Month, Date, Condition, Message
- first%
- month%:previous_month%=month%:mstart%(month%)=i%:first%=
- month%:
- Read and test first data-item (Month)
- month%>13
- lastdatum%=month%
- @K endofdata%=
- :month_list%(i%)=999:
- Stop reading at Month >13 say 999
- month%<0
- month%<previous_month%
- C;
- '" Data-list Error: Month (";i%;")= ";month%
- DD
- '" Month number must rise from 0 (or more) to 13 (or less)"
- E
- endofdata%
- date%:
- Read and test second data-item (Date)
- date%<1
- date%>31
- K9
- '" Data-list Error: Date (";i%;")= ";date%
- L=
- '" Date number must be between 1 and 31 inclusive":
- Input rest of data-line: Condition & Message-string
- endofdata%
- condition_list%(i%),message_list$(i%)
- month_list%(i%)=month%
- month%>previous_month% mstart%(month%)=i%:previous_month%=month%
- U. date_list%(i%)=date%:entries%=i%:i%=i%+1
- endofdata%
- Mainprog Start; Select option
- first%=TRUE
- 'Until False' at end; Loops progam until QUIT option taken
- Loops options until satisfied
- ^C
- change_year is set True again if CHANGE option taken
- _Astart%=0:finish%=56:preview_lines%=0:adjust%=
- :diary_print%=
- `?printer_on%=
- FALSE allows printer output to screen only
- change_year%
- '" Diary-year can be any year from 1951 to 2050"
- '" Year is specified by two digits or less eg:"
- '" Enter 93 for 1993; enter 94 for 1994 etc up to 99 for 1999"
- '" Enter 0 for 2000; enter 1 for 2001 etc up to 50 for 2050"
- ''" Enter number from 0 to 99 for Diary-year: ";
- ""year%:year$=
- year%:
- (year$)<2 year$="0"+year$
- year%>=51 fullyear%=1900+year%
- fullyear%=2000+year%
- year%>=0
- year%<=99
- year%= 0 lastyear%=99
- lastyear%=year%-1
- nC lastyear$=
- lastyear%:
- (lastyear$)<2 lastyear$="0"+lastyear$
- year%=99 nextyear%= 0
- nextyear%=year%+1
- pC nextyear$=
- nextyear%:
- (nextyear$)<2 nextyear$="0"+nextyear$
- :change_year%=
- Emerge with Year
- '" Choose: Preview Data-list (option 0)"
- " Preview Diary messages (option 1)"
- " Preview & print Diary messages (option 2)"
- " Print part-year Diary (option 3)"
- " Print full-year Diary (option 4)"
- '" Change Diary-year (now "+
- fullyear%+") (option C)"
- '" Terminate program (Quit) (option Q) :";
- :key$=
- "01234cCqQ",key$)<>0:opt%=
- key$="c"
- key$="C" opt%=-1:change_year%=
- key$="q"
- key$="Q"
- Emerge with Option opt% or Quit
- opt%=0
- Data-list check below
- FORi%=0 TO 15:PRINT mstart%(i%);:NEXT:PRINTentries%: PROCanykey(1,1)
- " First item on Data-list = ";yr%
- i%=0
- entries%
- month_list%(i%),date_list%(i%),condition_list%(i%)," ";message_list$(i%)
- (i%+1)
- 4=0
- (i%+1)
- 8=0
- anykey(0,1)
- " Last item on Data-list = ";lastdatum%
- anykey(1,0)
- opt%=3
- ''" Enter Week Number for Start of print (0 - 50): "start%
- start%>=0
- start%<=50
- ' " Enter Week Number for Finish of print (1 - 56): "finish%
- finish%>start%
- finish%<=56
- finish%-start%>=50 opt%=4:adjust%=
- Emerge with new values for start% and finish%
- opt%>=1
- '" Choose: Include special dates (option I )"
- '" Exclude special dates (option X ) :";
- :key$=
- "iIxXeE",key$)<>0:special%=key$="i"
- key$="I"
- Emerge with value for special%
- opt%>=3
- '" Check that your requirements are: "
- opt%=3
- 24"Print Diary from Wk ";start%;" to Wk ";finish%
- opt%=4
- 24"Print Diary for the full year"
- special%
- %
- 24"Include Special dates"'
- 24"Exclude Special dates"'
- adjust%
- ''" NB Prints of 50 weeks or more are changed to full year"'
- Emerge with values displayed for confirmation below
- opt%>=3
- confirm(" Confirm these are your requirements (Y/N):",0) opt%=-1
- opt%>=2
- confirm(" Confirm printer is on for printed diary (Y/N):",0)
- printer_on%=
- opt%>=1:
- Matches CHANGE Repeat at top
- Initialise before print-loop
- PROCsunday_start must be first, certainly before PROCadjust_printer
- sunday_start:
- Sets Left (l) & Right (r): sundate, date, month, week
- Printer can remain on throughout Opt2
- opt%=2
- printer_on%
- Printer cannot remain on throughout Opt3
- If printer is not confirmed-on, printer procedures have no action
- Skipped weeks are bypassed through preview section which must not print
- opt%>=3
- adjust_printer:
- Incl VDU2/3; Printer off
- Print-loop follows
- @ Print-loop increases lweek% by 2 at end
- Daily and Weekly increments are at Loop-end
- Gdiary_print%=(opt%=3
- lweek%+2>start%
- lweek% <=finish%)
- opt%=4
- diary_print%
- Preview skips this printing section
- lmonth%=0 lmonthyr$=lmonth$+" "+lastyear$
- rmonth%=0 rmonthyr$=rmonth$+" "+lastyear$
- lmonth%>=1
- lmonth%<=12 lmonthyr$=lmonth$+" "+year$
- rmonth%>=1
- rmonth%<=12 rmonthyr$=rmonth$+" "+year$
- lmonth%=13 lmonthyr$=lmonth$+" "+nextyear$
- rmonth%=13 rmonthyr$=rmonth$+" "+nextyear$
- Print Month+Year Heading; Line in Rem identifies Printout-line
- month_font:
- Incl VDU2; Printer on
- i%=1
- 20);:
- vline:
- Lines 1-3
- " "+lmonthyr$;
- 20);:
- vline:
- ;" "+rmonthyr$
- i%=1
- 20);:
- vline:
- Lines 5,6
- hline:
- Line 7
- Printer off
- Preview enters this section
- # Loop for 7 days
- day%=0
- get_day
- message("L",lmonth%,ldate%):
- message("R",rmonth%,rdate%)
- diary_print%
- Preview skips this printing section
- Line 0=Blank, Line 1=Day: Sun Mon Tue etc
- day_font:
- Incl VDU2; Printer on & left on
- 40);:
- vline:
- Line 0
- day$+" "+lmessage$;
- 40);:
- vline:
- Line 1L
- ;" "+day$+" "+rmessage$:
- Line 1R
- Lines 2,3=Blank, Line 4=Date, Line 5=Blank
- date_font:
- Incl VDU2; Printer still on
- i%=1
- 20);:
- vline:
- Lines 2,3
- ldate%<10
- ldate%;
- 20);:
- vline:
- Line 4L
- rdate%<10
- ;" ";
- ;" "+
- rdate%:
- Line 4R
- 20);:
- vline:
- Line 5
- Line 6=Week on Mon, otherwise Blank; Line 7=Hline
- week_font:
- Incl VDU2; Printer still on
- day%=1
- /
- Week number is printed on Monday only
- % lweek$=
- lweek%:rweek$=
- rweek%
- )
- lweek%>=1
- lweek%<=week5253%
- -
- "Week "+lweek$;
- 40);:
- vline:
- 0
- 40);:
- vline:
- 6L Blank
-
- )
- rweek%>=1
- rweek%<=week5253%
- 3
- ;" Week "+rweek$:
- 6
- :
- 6R Blank
-
- +
- Continue Tue day%=2 to Sat day%=6
- /
- 40);:
- vline:
- :
- 6 Blank
- hline:
- 3:
- Stop printer REM 7
- $ Preview Routine; Preview enters this section
- lmessage$+rmessage$<>""
- space$=" "
- ldate%<10 space$=" "
- lmessage$<>""
- C
- preview_lines%>=5 preview_lines%=0:
- opt%=1
- anykey(1,1)
- ) preview_lines%=preview_lines%+1
- ?
- '" "+lmonth$+space$+
- ldate%+" "+day$+" "+lmessage$
-
- space$=" "
- rdate%<10 space$=" "
- rmessage$<>""
- D
- preview_lines%>=5 preview_lines%=0:
- opt%=1
- anykey(1,1)
- ) preview_lines%=preview_lines%+1
- A
- (30);rmonth$+space$+
- rdate%+" "+day$+" "+rmessage$
-
- % Daily Increments
- #ldate%=ldate%+1:rdate%=rdate%+1
- ldate%>monthend% lmonth%=lmonth%+1:ldate%=1:
- get_month("L",
- rdate%>monthend% rmonth%=rmonth%+1:rdate%=1:
- get_month("R",
- End of day%=0 TO 6 Loop
- Weekly Increments; Set starting values for new Left-week
- #lmonth%=rmonth%:lmonth$=rmonth$
- *lsundate%=rdate%:rsundate%=lsundate%+7
- rsundate%>monthend%
- G rmonth%=rmonth%+1:rsundate%=rsundate%-monthend%:
- get_month("R",
- %ldate%=lsundate%:rdate%=rsundate%
- #lweek%=lweek%+2:rweek%=rweek%+2
- diary_print%
- printer_on%
- vtab:
- Incl VDU2/3; Printer off
- New half-page if printing; see note below
- To help keep most of one month on display when diary page is open,
- LWk35 (Start=-1) or LWk 36 (Start=0) is moved to the top of a page
- diary_print%
- (lweek%=35
- lweek%=36)
- lweek%>finish%
- opt% =2
- printer_on%
- 3: printer_on%=
- opt%>=3
- printer_on%
- restore_printer:printer_on%=
- opt%>=3 Ends at Top-of-Form with Printer off (VDU3)
- fold%=
- :prfold%=
- opt%=1
- 4B fold%=
- confirm(" Do you want folding instructions (Y/N)",1)
- opt%=2
- 6D fold%=
- confirm(" Do you want folding instructions (Y/N)",1)
- 7M prfold%=
- confirm(" Do you want printed folding instructions (Y/N)",1)
- prfold% fold%=
- fold%
- prfold%
- fold%
- ''" Place the stack of fanfolded paper on a covered table"
- '" The table should be covered to protect it from glue"
- '" Remove the tractor-strips but do not separate the pages"
- '" Ensure that the words 'TOP' are in view on top"
- fold%
- anykey(3,1):
- ''" Fold the top sheet exactly in half by folding down its"
- " top edge to lie exactly along its bottom edge"
- '" The words 'TOP' are now out-of-sight inside"
- fold%
- anykey(3,1):
- ''" Make a SHARP crease EXACTLY along the half-page line"
- '" The accuracy and quality of this crease are important"
- fold%
- anykey(3,1):
- ''" Hold the folded first page and the next page together"
- '" Open pages 2 & 3 out flat to reveal the front of page 2"
- fold%
- anykey(3,1):
- ''" Again, fold top-edge down to bring the top and bottom"
- " perforated edges of page 2 together"
- '" Crease at the mid-line of the second page"
- fold%
- anykey(3,1):
- ''" Hold the stack of folded pages together"
- '" Fold them underneath the top half of the next page"
- '" Crease again at the mid-line of the next page"
- fold%
- anykey(3,1):
- ''" Continue this folding cycle until you have a neat fanfold"
- '" Ensure that all the creases are SHARP"
- '" Fanfold can be opened anywhere to reveal four diary weeks"
- fold%
- anykey(3,1):
- ''" Apply a non-crinkle paste-glue such as Prittstick"
- " to a band about 1/2 inch (1 cm) wide between"
- " each of the folds which are in the middle of a page"
- '" NB: GLUE LINE IS NOT AT THE PERFORATIONS"
- fold%
- anykey(3,1):
- ''" The glued surfaces are all blank back-surfaces"
- '" Torn perforations will not cause this diary to fall apart"
- fold%
- anykey(3,1)
- 1,12:
- & ***** DAY/DATE FINDING PROCS BELOW: *****
- sunday_start:
- Sets Left & Right (l/r): sundate, date, month, week
- year%
- 4=0 leap%=
- leap%=
- 2000 DIV400=0 therfore Leap
- year%>=50 lsundate%=129-year%-(year%- 1)
- Calc for 1950 -1999
- year% <50 lsundate%= 29-year%-(year%+99)
- Calc for 2000 -2049
- lsundate%<19 lsundate%=lsundate%+7:
- lsundate%>=19
- lsundate%>25 lsundate%=lsundate%-7:
- lsundate%<=25
- wDrsundate%=lsundate%+7:
- rsundate%=32 rsundate%=1:
- NB Max lsun=25
- x%ldate%=lsundate%:rdate%=rsundate%
- y(lmonth%=0:lmonth$="Dec":monthend%=31
- lsundate%=25 rmonth%=1:rmonth$="Jan"
- rmonth%=0:rmonth$="Dec"
- lsundate%=22
- leap%
- lsundate%=21 week5253%=53
- week5253%=52
- lsundate%<=20 lweek%=-1:rweek%=0
- lweek%=0:rweek%=1
- get_month(side$,endofmonth%):
- month%,m$
- side$="L" month%=lmonth%
- month%=rmonth%
- month%
- 0, 12: m$="Dec"
- 1, 13: m$="Jan"
- 2: m$="Feb"
- 3: m$="Mar"
- 4: m$="Apr"
- 5: m$="May"
- 6: m$="Jun"
- 7: m$="Jly"
- 8: m$="Aug"
- 9: m$="Sep"
- 10: m$="Oct"
- 11: m$="Nov"
- endofmonth%
- monthend%=31
- month%=2 monthend%=28:
- leap% monthend%=29
- month%=4
- month%=6
- month%=9
- month%=11 monthend%=30
- monthend must never change when rsundate is updated by lsundate+7
- K
- even if rsundate=1; monthend% must always wait for daily update
- side$="L" lmonth$=m$
- rmonth$=m$
- get_day:
- day%
- 0: day$=" Sun"
- 1: day$=" Mon"
- 2: day$=" Tue"
- 3: day$=" Wed"
- 4: day$=" Thu"
- 5: day$=" Fri"
- 6: day$=" Sat"
- anykey(lbefore,lafter)
- lbefore>0
- lbefore>1
- lbefore>2
- " Anykey to continue ";:key%=
- lafter>0
- lafter>1
- lafter>2
- confirm(string$,line%)
- 'string$;:
- line%>0
- line%>1
- line%>2
- :key$=
- key$="y"
- key$="Y"
- key$="n"
- key$="N"
- =key$="y"
- key$="Y"
- ***** MESSAGE PROCS (FN) BELOW: *****
- message(side$,month%,date%)
- adjustment%,i%,message$: message$=""
- Finds a Message to match a date
- *Note:
- If two messages coincide ie are due to appear on the same date
- The message lower in Data-list will overwrite the higher message
- Hadjustment%=0:
- month%=0 adjustment%=-1
- month%=13 adjustment%=1
- $adjusted_year%=year%+adjustment%
- adjusted_year%= -1 adjusted_year%=99
- adjusted_year%=100 adjusted_year%= 0
- i%=mstart%(month%)
- i%>=0
- i%<=entries%
- date%=date_list%(i%)
- F cond%=condition_list%(i%):abscond%=
- (cond%):positive%=cond%>=0
- 6 checkyear%=abscond%<=99:addage%=abscond%>=1000
- "
- (positive%
- special%)
-
- checkyear%
- @
- adjusted_year%=abscond% message$=message_list$(i%)
-
-
- addage%
- J message$=message_list$(i%)+
- (fullyear%+adjustment%-abscond%)
- (
- message$=message_list$(i%)
-
-
-
- ' i%=i%+1:
- month_list%(i%)>month%:
- Repeat loop ends when a new Month-number is encountered
- side$="L" lmessage$=message$
- rmessage$=message$
- ( ***** PRINT PROCS BELOW: ***** NB No action if printer_on%=FALSE
- adjust_printer:
- Adjust printer line-space, VFU etc
- printer_on%
- 1,27:
- 1,64:
- Initialise: ESC "@" page3-64
- 1,27:
- 1,79:
- Cancel skip-over perforations: ESC "O" page3-87
- 1,27:
- 1,51:
- 1,18:
- Line-space=18/216 inch ESC "3" 18 page3-24
- 1,27:
- 1,98:
- 1,56:
- 1,122:
- Set Vertical Format Unit channel 0: ESC "b" 0 56 122 0 page3-98
- Vtabs go to Lines 56 to print at middle, 122 to print at top,
- then they go to top of form 132 to print at normal position
- Use one or two Vtabs together (56, 122) only from top half
- Use only one Vtab from bottom half (122, avoid 132)
- " ";:
- i%= 1
- 15:
- ;" Top ";:
- vtab:
- Pr off
- opt%=3
- start%>=35
- <
- ((start%-lweek%)
- 2 =0
- vtab:
- Late start
- ((start%-lweek%)
- 2 =1
- vtab:
- Early start
- matches page-starts for Start= -1 or 0 before and after Wk35/36
- Starts-up and finishes with printer off due to Vtab
- restore_printer:
- Restore printer to normal and cease output
- printer_on%
- 1,12:
- Form Feed " page3-12
- 1,27:
- 1,64:
- Initialise: ESC "@" page3-64
- Starts-up and finishes with printer off
- vtab:
- Vertical Tab code 11 page 3-11
- printer_on%
- 1,11:
- Starts-up and finishes with printer off
- vline:
- ESC "L" 2 0 255 255 page 3-81
- printer_on%
- 1,27:
- 1,76:
- 1,255:
- 1,255:
- Dual Bit-image
- Leaves printer on
- hline:
- Underline ESC "-" 0=off 1=on page 3-55
- printer_on%
- week_font
- 1,27:
- 1,45:
- 1,1:
- Underline on
- " ";:
- 1,27:
- 1,76:
- 1,255:
- 1,255:
- Vline
- i%=41
- ;" ";:
- 1,27:
- 1,45:
- 1,0:
- Underline off
- Leaves printer on
- month_font:
- ESC "!" 56 page 3-32
- printer_on%
- 1,27:
- 1,33:
- 1,56:
- Enlarged Double-strike Emphasised: 5 ch/in
- Leaves printer on
- day_font:
- ESC "!" 24 page 3-32
- printer_on%
- 1,27:
- 1,33:
- 1,24:
- Double-strike Emphasised: 10 ch/in
- Leaves printer on
- week_font:
- ESC "!" 8 page 3-32
- printer_on%
- 1,27:
- 1,33:
- 1,8 :
- Emphasised: 10 ch/in
- Leaves printer on
- date_font:
- ESC "!" 56 page 3-32 NB as month_font
- printer_on%
- 1,27:
- 1,33:
- 1,56:
- Enlarged Double-strike Emphasised: 5 ch/in
- Leaves printer on
- ) ***** YEAR/MONTH/DATE DATA BELOW: *****
- 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-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
- 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 AVOID THEM
- After the Year-number, the First-number is the Month-number:
- 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 not inserted out of order
- Second-number is Date-number:
- This is checked to be in range 0 - 31 only
- Dates do not have to be in ascending order or any order
- A message could be set against Feb 30 but it would never be printed
- Third-number is Condition-number (let's call it C)
- Absolute values of C greater than say 2000 will probably not be useful
- The effect of C depend upon how many digits it has and its sign
- Consider +ve values of C:
- From 0 to 99 (1 or 2 digits), message is printed in 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
- From 100 to 999 (3 digits), the message is printed in any Diary-year
- All 3-digit numbers have the same effect; choose one and stick to it
- I use 111; its easy to type
- From 1000 upwards (4+ digits), the message is printed in any Diary-year
- immediately followed by an integer number calculated by the program
- The number makes sense if thought of as the 'age' of a person (or item)
- For this to be useful the value of C will be either:
- the year-of-birth of the person whose birthday is marked by the message
- or the year-of-acquisition of the item whose anniversary is marked
- 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 1988, consider:
- DATA 12, 29, 1988, "Rover is "
- In the Diary for 1994 (say), this would print the reminder: Rover is 6
- To include a corresponding message in the December of the outgoing year
- (the overlapping month called Month 0 at the start of the diary),
- you could add:
- DATA 0, 29, 1988, "Rover is "
- Now Consider -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
- You may want to prevent personal messages from being included in a diary
- printed for a friend
- The action of C depends on its size, just the same as for +ve values
- Calculate the value of C required normally, then precede it by '-'
- Example
- The dates above are made special and put in order:
- DATA 0, 29, -1988, "Rover is "
- DATA 8, 24, -1982, "Sarah is "
- DATA 12, 29, -1988, "Rover is "
- Finally, End the Data-list with any Month-number greater than 13 eg: 999
- The rest of the line can be blank or can contain comment
- 0, 25, 111, "Christmas" Dec of year before Diary year
- 0, 26, 111, "Boxing"
- 0, 29, -1977, "Rover is " Program adjusts age to year before
- 0, 21, 111, "Shortest Day"
- 1, 1, 111, "New Year" Jan
- 1, 1, 92, "New Leap Year"
- 1, 1, 96, "New Leap Year"
- 1, 3, 94, "Holiday"
- 1, 2, 95, "Holiday"
- 2, 14, 111, "Valentine"
- 2, 20, -1987, "Little Joe will be "
- 2, 23, 93, "Shrove/Pancake"
- 2, 15, 94, "Shrove/Pancake"
- 3, 3, 92, "Shrove/Pancake" Mar
- 3, 10, -111, "Fido's Birthday"
- 3, 20, 111, "Spring Equinox"
- 3, 28, 92, "Clocks Forward"
- 3, 27, 93, "Clocks Forward" Provisional date
- 3, 26, 94, "Clocks Forward" Provisional date
- 3, 29, 92, "Mothers Day"
- 3, 21, 93, "Mothers Day"
- 3, 13, 94, "Mothers Day"
- 4, 17, 92, "Good Friday" Apr
- 4, 9, 93, "Good Friday"
- 4, 1, 94, "Good Friday"
- 4, 19, 92, "Easter"
- 4, 20, 92, "Easter"
- 4, 11, 93, "Easter"
- 4, 12, 93, "Easter"
- 4, 3, 94, "Easter"
- 4, 4, 94, "Easter"
- 5, 4, 92, "Mayday"
- 5, 3, 93, "Mayday"
- 5, 2, 94, "Mayday"
- 5, 25, 92, "Spring"
- 5, 31, 93, "Spring"
- 5, 30, 94, "Spring"
- 6, 21, 111, "Longest Day"
- 8, 31, 92, "Late Summer"
- 8, 30, 93, "Late Summer"
- 8, 29, 94, "Late Summer"
- 9, 22, 92, "Autumn Equinox"
- 9, 23, 93, "Autumn Equinox"
- 9, 23, 94, "Autumn Equinox"
- 10, 24, 92, "Clocks Back"
- 10, 30, 93, "Clocks Back" Provisional date
- 10, 31, 94, "Clocks Back" Provisional date
- 11, 5, 111, "Bonfire" Nov
- 12, 21, 111, "Shortest Day" Dec
- 12, 25, 111, "Christmas"
- 12, 26, 111, "Boxing"
- 12, 28, 92, "Holiday"
- 12, 28, 93, "Holiday"
- 12, 27, 93, "Holiday"
- 12, 27, 94, "Holiday"
- 12, 29, -1977, "Rover is "
- 13, 1, 111, "New Year" Jan of year following Diary year
- 13, 1, 96, "New Leap Year"
- 999 End of Data
-