IDENTIFICATIONDIVISION. * PROGRAM-ID. EASTER. * DATE-WRITTEN. 08/30/98. * * Calculate Date of Easter. * * ******************************* * * * * * Judson D. McClendon * * * Sun Valley Systems * * * 4522 Shadow Ridge Pkwy * * * Pinson, AL 35126-2192 * * * 205-680-0460 * * * * * ******************************* * ENVIRONMENTDIVISION. * DATADIVISION. * WORKING-STORAGESECTION. * * * ****************************************************************** * * * E A S T E R W O R K A R E A * * * ****************************************************************** *
01 EASTER-WORK-AREA.
03 EW-DATE PIC 9(08) VALUE ZEROS.
03 EW-DATE-X REDEFINES EW-DATE.
05 EW-YEAR PIC 9(04).
05 EW-MONTH PIC 9(02).
05 EW-DAY PIC 9(02).
03 EW-GOLDEN-NBR PIC 9(06).
03 EW-CENT PIC 9(03).
03 EW-LEAP-CENT PIC 9(06).
03 EW-LUNAR-CORR PIC 9(08).
03 EW-SUNDAY-CORR PIC 9(08).
03 EW-EPACT PIC 9(08).
03 EW-FULL-MOON PIC 9(08).
03 EW-WORK1 PIC 9(08).
03 EW-WORK2 PIC 9(08).
03 EW-MONTH-NAMES VALUE "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC".
05 EW-MONTH-NAME OCCURS 12 TIMES PIC X(03). * PROCEDUREDIVISION. * *
000000-CONTROL. * DISPLAY"ENTER YEAR FOR EASTER". ACCEPT EW-YEAR. * PERFORM 001000-EASTER-CALC
THRU 001000-EXIT. * DISPLAY"EASTER FALLS ON "
EW-MONTH-NAME(EW-MONTH) " "
EW-DAY. *
000000-EXIT. STOPRUN. * * * ****************************************************************** * * * E A S T E R C A L C * * * * * * CALCULATES THE DATE OF EASTER FOR ANY DATE IN THE * * GREGORIAN CALENDAR. * * * * USAGE: MOVE <EASTER YEAR> TO EW-YEAR. * * PERFORM 001000-EASTER-CALC * * THRU 001000-EXIT. * * * * RESULT: EW-DATE = DATE OF EASTER IN YYYYMMDD FORM. * * * ****************************************************************** *
001000-EASTER-CALC. * **** COMPUTE EW-GOLDEN-NBR = **** FUNCTION REM (EW-YEAR, 19) + 1. DIVIDE 19 INTO EW-YEAR GIVING EW-WORK1 REMAINDER EW-GOLDEN-NBR. ADD 1 TO EW-GOLDEN-NBR. * COMPUTE EW-CENT =
(EW-YEAR / 100) + 1. * COMPUTE EW-LEAP-CENT =
((3 * EW-CENT) / 4) - 12. * COMPUTE EW-LUNAR-CORR =
((8 * EW-CENT + 5) / 25) - 5. * COMPUTE EW-SUNDAY-CORR =
((5 * EW-YEAR) / 4) - EW-LEAP-CENT - 10. * **** COMPUTE EW-EPACT = **** FUNCTION REM ((11 * EW-GOLDEN-NBR + 20 **** + EW-LUNAR-CORR - EW-LEAP-CENT), 30). COMPUTE EW-EPACT =
11 * EW-GOLDEN-NBR + 20 + EW-LUNAR-CORR - EW-LEAP-CENT. DIVIDE 30 INTO EW-EPACT GIVING EW-WORK1 REMAINDER EW-EPACT. * IF (EW-EPACT = 24) OR
( (EW-EPACT = 25) AND
(EW-GOLDEN-NBR > 11) ) ADD 1 TO EW-EPACT. * COMPUTE EW-FULL-MOON = 44 - EW-EPACT. IF (EW-FULL-MOON < 21) ADD 30 TO EW-FULL-MOON. * **** COMPUTE EW-DAY = **** EW-FULL-MOON + 7 **** - FUNCTION REM ((EW-SUNDAY-CORR + EW-FULL-MOON), 7). ADD EW-SUNDAY-CORR EW-FULL-MOON GIVING EW-WORK1. DIVIDE 7 INTO EW-WORK1 GIVING EW-WORK2 REMAINDER EW-WORK1. COMPUTE EW-DAY =
EW-FULL-MOON + 7 - EW-WORK1. * IF (EW-DAY > 31) MOVE 4 TO EW-MONTH SUBTRACT 31 FROM EW-DAY ELSE MOVE 3 TO EW-MONTH. MOVE EW-YEAR TO EW-YEAR. *
001000-EXIT. EXIT.
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.17Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.