Download text file
#if 0
    ----------------------------                            PowerBASIC 
 ---|          DASoft          |------------------------------------------
    ----------------------------         Code           DATE: 2006-01-22
    | FILE NAME EasterComp.bas |          by
    ----------------------------  Don Schullian, Jr.

              This code is released into the Public Domain
       ----------------------------------------------------------
        No guarantee as to the viability, accuracy, or safety of
         use of this code is implied, warranted, or guaranteed
       ----------------------------------------------------------
                         Use at your own risk!
       ----------------------------------------------------------
                  CONTACT AUTHOR AT don@DASoftVSS.com
 -------------------------------------------------------------------------

 This code was gleened from the internet and I've only tested it and set
 the three functions into the same format.
#endif

#if 1

#COMPILE EXE
#DEBUG ERROR ON
#DIM ALL

DECLARE FUNCTION ComputeCatholicEaster (BYVAL Year&) AS STRING
DECLARE FUNCTION ComputeGreekEaster    (BYVAL Year&) AS STRING
DECLARE FUNCTION ComputeRussianEaster  (BYVAL Year&,OPT BYVAL JulianDate&) AS STRING

'
'------------------------------------------------------------------------------
'
FUNCTION PBMAIN () AS LONG

  DIM C AS LOCAL STRING
  DIM G AS LOCAL STRING
  DIM J AS LOCAL STRING
  DIM R AS LOCAL STRING
  DIM T AS LOCAL STRING
  DIM Y AS LOCAL LONG

  Y = VAL(RIGHT$(DATE$,4))
  G = ComputeGreekEaster   (Y)
  C = ComputeCatholicEaster(Y)
  R = ComputeRussianEaster (Y)
  J = ComputeRussianEaster (Y,1)

  T = "For the year" & STR$(Y) & $CRLF & _
      C & " Catholic" & $CRLF & _
      G & " Greek"    & $CRLF & _
      R & " Russian"  & $CRLF & _
      J & " Russian Julian Calendar"

  MSGBOX T

END FUNCTION

#endif
'
'------------------------------------------------------------------------------
'
FUNCTION ComputeCatholicEaster (BYVAL Year AS LONG) AS STRING

  DIM C AS LOCAL LONG
  DIM D AS LOCAL LONG
  DIM I AS LOCAL LONG
  DIM J AS LOCAL LONG
  DIM K AS LOCAL LONG
  DIM L AS LOCAL LONG
  DIM M AS LOCAL LONG
  DIM N AS LOCAL LONG

  C = Year \ 100
  N = Year - 19 * ( Year \ 19 )
  K = ( C - 17 ) \ 25
  I = C - C \ 4 - ( C - K ) \ 3 + 19 * N + 15
  I = I - 30 * ( I \ 30 )
  I = I - ( I \ 28 ) * ( 1 - ( I \ 28 ) * ( 29 \ ( I + 1 ) ) * ( ( 21 - N ) \ 11 ) )
  J = Year + Year \ 4 + I + 2 - C + C \ 4
  J = J - 7 * ( J \ 7 )
  L = I - J
  M = 3 + ( L + 40 ) \ 44
  D = L + 28 - 31 * ( M \ 4 )

  FUNCTION = FORMAT$(M,"0#\-") & FORMAT$(D,"0#")

END FUNCTION
'
'------------------------------------------------------------
'
FUNCTION ComputeGreekEaster (BYVAL Year AS LONG) AS STRING

  DIM D AS LOCAL LONG
  DIM I AS LOCAL LONG
  DIM J AS LOCAL LONG
  DIM M AS LOCAL LONG

  I = (Year MOD 19)
  I = (19 * I + 15) MOD 30
  J = (Year + Year \ 4 + I) MOD 7
  J = I - J
  M = 3 + (J + 40) \ 44
  D = J + 28 - 31 * (M \ 4)

  IF M = 4 THEN
      D = D + 31
    ELSEIF M <> 3 THEN
      D = D + 21
  END IF

  D = D + (Year \ 100 - Year \ 400 - 2)

  SELECT CASE AS LONG D
    CASE < 31 : M = 3
    CASE < 61 : M = 4 : D = D - 31
    CASE ELSE : M = 5 : D = D - 61
  END SELECT

  FUNCTION = FORMAT$(M,"0#\-") & FORMAT$(D,"0#")

END FUNCTION
'
'------------------------------------------------------------------------------
'
FUNCTION ComputeRussianEaster (BYVAL Year   AS LONG, _
                           OPT BYVAL Julian AS LONG  ) AS STRING

   DIM RA AS LOCAL LONG
   DIM RB AS LOCAL LONG
   DIM R1 AS LOCAL LONG
   DIM R2 AS LOCAL LONG
   DIM R3 AS LOCAL LONG
   DIM R4 AS LOCAL LONG
   DIM R5 AS LOCAL LONG
   DIM D  AS LOCAL LONG
   DIM M  AS LOCAL LONG

   IF Year > 2099 THEN EXIT FUNCTION

   R1 = Year MOD 19
   R2 = Year MOD  4
   R3 = Year MOD  7
   RA = 19 * R1 + 16
   R4 = RA MOD 30
   RB = 2 * R2 + 4 * R3 + 6 * R4
   R5 = RB MOD 7
   D  = R4 + R5

   IF Julian = 0 THEN
       IF D  < 27 THEN
           M = 4 : D = D + 3
         ELSE
           M = 5 : D = D - 27
       END IF
     ELSE
       IF D < 11 THEN
           M = 3 : D = D + 21
         ELSE
           M = 4 : D = D - 10
       END IF
   END IF

   FUNCTION = FORMAT$(M,"0#\-") & FORMAT$(D,"0#")

END FUNCTION