Implementazioni di algoritmi/Calcolo della Pasqua: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 889:
</source>
 
== Altri progettiCOBOL ==
{{interprogetto|w=Calcolo della Pasqua|w_etichetta=calcolo della Pasqua|w_preposizione=riguardante il}}
 
[[Categoria:Implementazioni di algoritmi|Pasqua]]
 
{{Avanzamento|100%|98 aprileSettembre 20092015}}
 
 
 
 
 
****************************************************************
*Autore: R
*Date: 24-Feb-2014
* Dato l'anno calcola la data della Pasqua
****************************************************************
identification division.
program-id. easter.
*
data division.
working-storage section.
01 w-a pic 9(008) usage comp-x value 0.
01 w-b pic 9(008) value 0.
01 w-c pic 9(008) value 0.
01 w-d pic 9(008) value 0.
01 w-z pic 9(008) value 0.
01 w-f pic 9(008) value 0.
01 w-g pic 9(008) value 0.
01 w-h pic 9(008) value 0.
01 w-i pic 9(008) value 0.
01 w-j pic 9(008) value 0.
01 w-mm pic 9(002) value 0.
01 w-gg pic 9(002) value 0.
01 w-x pic 9(008) value 0.
*
****************************************************************
*
*linkage section.
01 lk-year pic 9(004).
01 lk-easter-date pic 9(008).
01 lk-status pic s9(02).
*
****************************************************************
*
*procedure division using lk-year lk-easter-date lk-status.
procedure division.
*
l-begin.
move 2015 to lk-year.
move 0 to lk-easter-date
move 0 to lk-status
*
if lk-year not numeric
move zeros to lk-year
move 01 to lk-status
go to l-end.
*
if lk-year < 1580
or lk-year > 2050
move zeros to lk-year
move 02 to lk-status
go to l-end.
*
l-calcolate.
*
*
move function mod(lk-year 19) to w-a
* divide lk-year by 19 giving w-x
* remainder w-a
*
divide lk-year by 100 giving w-b
remainder w-c
*
divide w-b by 4 giving w-d
remainder w-z
*
compute w-f = (w-b + 8) / 25
*
compute w-g = (w-b - w-f + 1) / 3
*
compute w-h = (19 * w-a) + w-b - w-d - w-g + 15
*
compute w-h = function mod(w-h 30)
*
divide w-c by 4 giving w-i remainder w-j
*
compute w-c = (w-z + w-i) * 2 + 32 - w-h - w-j
*
compute w-c = function mod(w-c 7)
*
compute w-b = (w-a + (11 * w-h) + (22 * w-c)) / 451.
*
compute w-a = w-h + w-c - (7 * w-b) + 114
*
compute w-gg = function mod(w-a 31) + 1
*
divide w-a by 31 giving w-mm
 
string lk-year
w-mm
w-gg delimited by size
into lk-easter-date.
l-end.
exit program.
stop run.
*
******************************************************************
end program easter.