Holidays related to Easter: Difference between revisions

Content deleted Content added
Dedalus (talk | contribs)
No edit summary
Line 1,034:
2020 Easter: Sun 12 Apr, Ascension: Thu 21 May, Pentecost: Sun 31 May, Trinity: Sun 7 Jun, Corpus: Thu 11 Jun
</pre>
 
=={{header|COBOL}}==
<lang cobol>
identification division.
program-id. Easter.
environment division.
configuration section.
repository.
function date-of-integer intrinsic
function integer-of-date intrinsic
function mod intrinsic.
data division.
working-storage section.
77 days pic 9(2).
77 a pic 9(2).
77 b pic 9(2).
77 c pic 9(2).
77 d pic 9(2).
77 e pic 9(2).
77 f pic 9(2).
77 g pic 9(2).
77 h pic 9(2).
77 i pic 9(2).
77 k pic 9(2).
77 l pic 9(2).
77 m pic 9(2).
77 week-day pic 9(1).
77 numerator pic 9(4).
77 integer-date pic 9(18).
01 month-tab value "JanFebMarAprMayJunJulAugSepOctNovDec".
05 month-abreviated pic x(3) occurs 12.
01 week-day-tab value "SunMonTueWedThuFriSat".
05 week-day-abreviated pic x(3) occurs 7.
01 easter-date pic 9(8).
01 filler redefines easter-date.
05 easter-year pic 9(4).
05 easter-month pic 9(2).
05 easter-day pic 9(2).
 
01 holiday-date pic 9(8).
01 filler redefines holiday-date.
05 holiday-year pic 9(4).
05 holiday-month pic 9(2).
05 holiday-day pic 9(2).
 
01 edt-date.
05 edt-week-day pic x(3).
05 filler pic x value space.
05 edt-day pic z(2).
05 filler pic x value space.
05 edt-month pic x(3).
 
procedure division.
main.
display "Christian holidays, related to Easter, for each centennial from 1700 to 2100 CE:"
perform varying easter-year from 1700 by 100 until easter-year > 2100
perform output-holydays
end-perform
display " "
 
display "Christian holidays, related to Easter, for years from 2010 to 2020 CE:"
perform varying easter-year from 2010 by 1 until easter-year > 2020
perform output-holydays
end-perform
display " "
 
stop run
.
output-holydays.
display easter-year " " no advancing
perform calculate-easter
 
move 0 to days
perform add-days
display " Easter: " edt-date no advancing
 
move 39 to days
perform add-days
display " Ascension: " edt-date no advancing
 
move 49 to days
perform add-days
display " Pentecost: " edt-date no advancing
 
move 56 to days
perform add-days
display " Trinity: " edt-date no advancing
 
move 60 to days
perform add-days
display " Corpus: " edt-date
.
calculate-easter.
compute a = mod(easter-year, 19)
compute b = easter-year / 100
compute c = mod(easter-year, 100)
compute d = b / 4
compute e = mod(b, 4)
compute f = (b + 8) / 25
compute g = (b - f + 1) / 3
compute h = mod((19 * a + b - d - g + 15), 30)
compute i = c / 4
compute k = mod(c, 4)
compute l = mod((32 + 2 * e + 2 * i - h - k), 7)
compute m = (a + 11 * h + 22 * l) / 451
compute numerator = h + l - 7 * m + 114
compute easter-month = numerator / 31
compute easter-day = mod(numerator, 31) + 1
.
add-days.
if days = 0
move easter-date to holiday-date
move 1 to week-day
else
compute holiday-date = date-of-integer(integer-of-date(easter-date) + days)
compute week-day = mod(integer-of-date(easter-date) + days, 7) + 1
end-if
move week-day-abreviated(week-day) to edt-week-day
move month-abreviated(holiday-month) to edt-month
move holiday-day to edt-day
.
</lang>
{{out}}
Implemented the task for 1700 and greater years because COBOL is a Business language and their routines only works after Day zero that is equals to 00:00:00 31 December 1600
 
<pre>Christian holidays, related to Easter, for each centennial from 1700 to 2100 CE:
1700 Easter: Sun 11 Apr Ascension: Thu 20 May Pentecost: Sun 30 May Trinity: Sun 6 Jun Corpus: Thu 10 Jun
1800 Easter: Sun 13 Apr Ascension: Thu 22 May Pentecost: Sun 1 Jun Trinity: Sun 8 Jun Corpus: Thu 12 Jun
1900 Easter: Sun 15 Apr Ascension: Thu 24 May Pentecost: Sun 3 Jun Trinity: Sun 10 Jun Corpus: Thu 14 Jun
2000 Easter: Sun 23 Apr Ascension: Thu 1 Jun Pentecost: Sun 11 Jun Trinity: Sun 18 Jun Corpus: Thu 22 Jun
2100 Easter: Sun 28 Mar Ascension: Thu 6 May Pentecost: Sun 16 May Trinity: Sun 23 May Corpus: Thu 27 May
 
Christian holidays, related to Easter, for years from 2010 to 2020 CE:
2010 Easter: Sun 4 Apr Ascension: Thu 13 May Pentecost: Sun 23 May Trinity: Sun 30 May Corpus: Thu 3 Jun
2011 Easter: Sun 24 Apr Ascension: Thu 2 Jun Pentecost: Sun 12 Jun Trinity: Sun 19 Jun Corpus: Thu 23 Jun
2012 Easter: Sun 8 Apr Ascension: Thu 17 May Pentecost: Sun 27 May Trinity: Sun 3 Jun Corpus: Thu 7 Jun
2013 Easter: Sun 31 Mar Ascension: Thu 9 May Pentecost: Sun 19 May Trinity: Sun 26 May Corpus: Thu 30 May
2014 Easter: Sun 20 Apr Ascension: Thu 29 May Pentecost: Sun 8 Jun Trinity: Sun 15 Jun Corpus: Thu 19 Jun
2015 Easter: Sun 5 Apr Ascension: Thu 14 May Pentecost: Sun 24 May Trinity: Sun 31 May Corpus: Thu 4 Jun
2016 Easter: Sun 27 Mar Ascension: Thu 5 May Pentecost: Sun 15 May Trinity: Sun 22 May Corpus: Thu 26 May
2017 Easter: Sun 16 Apr Ascension: Thu 25 May Pentecost: Sun 4 Jun Trinity: Sun 11 Jun Corpus: Thu 15 Jun
2018 Easter: Sun 1 Apr Ascension: Thu 10 May Pentecost: Sun 20 May Trinity: Sun 27 May Corpus: Thu 31 May
2019 Easter: Sun 21 Apr Ascension: Thu 30 May Pentecost: Sun 9 Jun Trinity: Sun 16 Jun Corpus: Thu 20 Jun
2020 Easter: Sun 12 Apr Ascension: Thu 21 May Pentecost: Sun 31 May Trinity: Sun 7 Jun Corpus: Thu 11 Jun</pre>
 
 
=={{header|Common Lisp}}==