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.

Output of Calendar


Back to home Back to home