Calendar
                                     --------

Calendar is a S*BASIC script to produce an annual calendar on an A4 sheet of
paper, as shown below. You can choose different starting years and months by
fiddling the parameters in the section ** Output harness. Eg:

        PrtCal3x4 2023, 1

would print a similar calendar to the one below, except the year would be
2023 and the starting month January.

The point of publishing this script is, that without too much difficulty, it is
possible to create simple calendars of various types to fit different purposes,
by re-using some of the procedures provided:


Global variables

box% = 2:               Grid size: Each date entry is this wide (+ 1 space)
fdow = 1:               First day of week (0..6, Sunday = 0)

The remaining global variables (except as described below) are dependent on how
you wish to format the output, so theyll be up to you..


proc  Init

This procedure initialises the global calendar variables Mnth$, Mnth% and yr%,
where
        Mnth$() is an array of month names in full. Alter to suit language
        Mnth%() is the accumulated number of days for each month
        yr%()   will hold the entire calendar ready for formatting


proc Calendar(y%, m%)

produces an annual calendar for the year y%, starting at month m%, in the array
yr%(month%, week%, day%). This calendar can be formatted in various ways, as
shown in the example procedure PrtCal3x4.


proc GetMhd$

fills the global variable mhd$ (month header) with the header to print above
each month block. The first day of the week plus spacing requirements are set
in the global variables fdow and box%, respectively (see global variables,
above). Eg: fdow = 1, box% = 2 => mhd$ = 'Mo Tu We Th Fr Sa Su'


The procedures Pad$, LF and Center$ may be useful in assisting with formatting.
The remaining procedures are used by the calendar calculation part of the
program and dont need to be understood to be used.



Update
======

V0.11 - SuperBASIC-compatible version for Qdos, updated to work with
        "negative" date values, so will produce correct calendars beyond
        2029 Jan 19 03:14:07.

V0.12 - Still SuperBASIC compatible, but Qdos and Minerva need an
        extra toolkit to cater for the unsigned long word date
        calculations. SMSQ/E has these commands built in. This makes it
        possible to create accurate calendars until 2097 Feb 06 06:28:15!

        The date toolkits, by Lawrence Reeves, packaged by me, can be found
        under Toolkits at Knoware.no. There are two different versions,
        one for Qdos and another for Minerva.

        This version has an extra kick: Load the code into QD with the
        SBAS/QD Thing installed and a suitably configured and active
        FileInfo2. Pressing F10 in QD then creates the calendar and pops
        the finished product up into another QD (or other configured
        editor) for immediate viewing. If you dont want this feature,
        simply remove the FI2_CALL line (around line number 148) then the
        calendar will go to the location designated in the configuration
        section (around line 130).


Enjoy!


                                 Calendar for 2096

               January                 February                 March

        Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su

                           1           1  2  3  4  5              1  2  3  4

         2  3  4  5  6  7  8     6  7  8  9 10 11 12     5  6  7  8  9 10 11

         9 10 11 12 13 14 15    13 14 15 16 17 18 19    12 13 14 15 16 17 18

        16 17 18 19 20 21 22    20 21 22 23 24 25 26    19 20 21 22 23 24 25

        23 24 25 26 27 28 29    27 28 29                26 27 28 29 30 31

        30 31

                April                    May                     June

        Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su

                           1        1  2  3  4  5  6                 1  2  3

         2  3  4  5  6  7  8     7  8  9 10 11 12 13     4  5  6  7  8  9 10

         9 10 11 12 13 14 15    14 15 16 17 18 19 20    11 12 13 14 15 16 17

        16 17 18 19 20 21 22    21 22 23 24 25 26 27    18 19 20 21 22 23 24

        23 24 25 26 27 28 29    28 29 30 31             25 26 27 28 29 30

        30

                 July                   August                September

        Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su

                           1           1  2  3  4  5                    1  2

         2  3  4  5  6  7  8     6  7  8  9 10 11 12     3  4  5  6  7  8  9

         9 10 11 12 13 14 15    13 14 15 16 17 18 19    10 11 12 13 14 15 16

        16 17 18 19 20 21 22    20 21 22 23 24 25 26    17 18 19 20 21 22 23

        23 24 25 26 27 28 29    27 28 29 30 31          24 25 26 27 28 29 30

        30 31

               October                 November                December

        Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su

         1  2  3  4  5  6  7              1  2  3  4                    1  2

         8  9 10 11 12 13 14     5  6  7  8  9 10 11     3  4  5  6  7  8  9

        15 16 17 18 19 20 21    12 13 14 15 16 17 18    10 11 12 13 14 15 16

        22 23 24 25 26 27 28    19 20 21 22 23 24 25    17 18 19 20 21 22 23

        29 30 31                26 27 28 29 30          24 25 26 27 28 29 30

                                                        31




                  Conditions and DISCLAIMER as per Knoware.no

Generated by QuickHTM, 2022 Oct 04