This program displays a calendar of the current month on the video screen.
************************************************************************
* PROGRAM: CALENDAR.Q *
* PURPOSE: DISPLAYS A CALENDAR OF CURRENT MONTH ON VIDEO SCREEN. *
************************************************************************
EQUATE DAY_LINE TO ' SUN MON TUE WED THR FRI SAT '
EQUATE TOP_LINE TO 'ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿'
EQUATE VERTICAL_LINE TO '³ ³ ³ ³ ³ ³ ³ ³'
EQUATE CROSS_LINE TO 'ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄ´'
EQUATE BOTTOM_LINE TO 'ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ'
EQUATE SHADOW_LINE1 TO 'ßßßßßßßßßßßßßßßßßßßß'
EQUATE SHADOW_LINE2 TO 'ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß'
EQUATE DAYS-IN-MONTHS TO WST100-124
EQUATE MAX-DAYS TO WST100-101
EQUATE MAX-DAYS-SUB TO WST125-126-I
EQUATE ROW TO WST127-128-I
EQUATE COL TO WST129-130-I
EQUATE WORK-DAY TO WST131-132-I
EQUATE COUNT-DAY TO WST133-134-I
EQUATE WORK1-YEAR TO WST135-138-F
EQUATE WORK2-YEAR TO WST139-140-I
*
EQUATE WHITE-ON-BLACK TO 7
EQUATE WHITE-ON-RED TO 71
EQUATE WHITE-ON-BLUE TO 23
EQUATE LTWHITE-ON-BLUE TO 31
EQUATE LTWHITE-ON-GREEN TO 47
EQUATE LTWHITE-ON-RED TO 79
EQUATE BLACK-ON-WHITE TO 112
*
EQUATE TITLE-COLOR TO LTWHITE-ON-BLUE
EQUATE CALENDAR-COLOR TO LTWHITE-ON-RED
EQUATE BACKGROUND-COLOR TO BLACK-ON-WHITE
*
COLOR BACKGROUND-COLOR
CURSOR OFF
CLS
PERFORM 100 * DRAW CALENDAR
010 GETKEY WST100 WST101 NOWAIT
CURSOR 3 58
DISPLAY 'TIME: ' NOSKIP
DISPLAY TIME1-8
IF WST100 IS LOVALUES
GO TO 010.
CURSOR ON
COLOR WHITE-ON-BLACK
CLS
END
100 CURSOR 2 31
COLOR TITLE-COLOR
DISPLAY ' Month of '
CURSOR 2 41
DISPLAY MONTH
CURSOR 2 51
COLOR BACKGROUND-COLOR
DISPLAY 'ÜÜ'
CURSOR 3 10
DISPLAY 'DATE: ' NOSKIP
DISPLAY DATE6-8 NOSKIP
DISPLAY DATE9-10 NOSKIP
DISPLAY '/' NOSKIP
DISPLAY DATE1-4 NOSKIP
CURSOR 3 58
DISPLAY 'TIME: ' NOSKIP
DISPLAY TIME1-8
CURSOR 3 33
DISPLAY SHADOW_LINE1
CURSOR 4 9
COLOR CALENDAR-COLOR
DISPLAY DAY_LINE
COLOR BACKGROUND-COLOR
CURSOR 4 73
DISPLAY 'ÜÜ'
CURSOR 5 9
COLOR CALENDAR-COLOR
DISPLAY TOP_LINE
COLOR BACKGROUND-COLOR
CURSOR 5 73
DISPLAY 'ÛÛ'
COLOR CALENDAR-COLOR
*
MOVE '312831303130313130313031' TO DAYS-IN-MONTHS
MOVE DATE1-4 TO WORK1-YEAR
DIVIDE WORK1-YEAR BY 4
MOVE WORK1-YEAR TO WORK2-YEAR
IF WORK1-YEAR = WORK2-YEAR * Leap year?
ADD 1 TO MAX-DAYS (3).
*
MOVE DATE6-7 TO MAX-DAYS-SUB
IF MAX-DAYS-SUB > 1
MULTIPLY MAX-DAYS-SUB BY 2
SUBTRACT 1 FROM MAX-DAYS-SUB.
*
IF DAY1-3 = 'Sun'
MOVE 1 TO COL
ELSE
IF DAY1-3 = 'Mon'
MOVE 2 TO COL
ELSE
IF DAY1-3 = 'Tue'
MOVE 3 TO COL
ELSE
IF DAY1-3 = 'Wed'
MOVE 4 TO COL
ELSE
IF DAY1-3 = 'Thu'
MOVE 5 TO COL
ELSE
IF DAY1-3 = 'Fri'
MOVE 6 TO COL
ELSE
IF DAY1-3 = 'Sat'
MOVE 7 TO COL.
MOVE DATE9-10 TO WORK-DAY
MOVE 01 TO COUNT-DAY
110 IF WORK-DAY = 1
GO TO 120.
SUBTRACT 1 FROM COL
IF COL < 1
MOVE 7 TO COL.
SUBTRACT 1 FROM WORK-DAY
GO TO 110
120 MULTIPLY COL BY 9
SUBTRACT 7 FROM COL
MOVE 5 TO ROW
130 MOVE VERTICAL_LINE TO WST1
PERFORM 200
ADD 1 TO ROW
CURSOR ROW 9
DISPLAY WST1-64
COLOR BACKGROUND-COLOR
CURSOR ROW 73
DISPLAY 'ÛÛ'
COLOR CALENDAR-COLOR
ADD 1 TO ROW
CURSOR ROW 9
DISPLAY VERTICAL_LINE
COLOR BACKGROUND-COLOR
CURSOR ROW 73
DISPLAY 'ÛÛ'
COLOR CALENDAR-COLOR
IF COUNT-DAY <= MAX-DAYS (MAX-DAYS-SUB) * EXCEEDED MAX DAYS IN MONTH?
ADD 1 TO ROW
CURSOR ROW 9
DISPLAY CROSS_LINE
COLOR BACKGROUND-COLOR
CURSOR ROW 73
DISPLAY 'ÛÛ'
COLOR CALENDAR-COLOR
GO TO 130.
ADD 1 TO ROW
CURSOR ROW 9
DISPLAY BOTTOM_LINE
COLOR BACKGROUND-COLOR
CURSOR ROW 73
DISPLAY 'ÛÛ'
COLOR BACKGROUND-COLOR
ADD 1 TO ROW
CURSOR ROW 11
DISPLAY SHADOW_LINE2
199 EXIT
200 MOVE COUNT-DAY TO WST1-2 (COL)
IF WST1 (COL) = '0'
MOVE WST2 (COL) TO WST1-2 (COL).
IF COUNT-DAY > MAX-DAYS (MAX-DAYS-SUB) * EXCEEDED MAX DAYS IN MONTH?
MOVE SPACES TO WST1-2 (COL).
ADD 9 TO COL
ADD 1 TO COUNT-DAY
IF COL > 56
MOVE 02 TO COL
EXIT.
GO TO 200
299 EXIT
Program output.

Back to home