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