Pasen valt elk jaar op een verschillende zondag. Volgens de kerkelijke regel valt Pasen op de eerste zondag na de eerste volle maan na 21 maart. Er moet een programma komen dat een lijstje afbeeldt met de paasdata voor de jaren 1999 tot en met 2005.
4/04/1999: Pasen 23/04/2000: Pasen 15/04/2001: Pasen 31/03/2002: Pasen 20/04/2003: Pasen 11/04/2004: Pasen 27/03/2005: Pasen
Voor het bepalen van de paasdatum bestaat een algoritme. Het structuurdiagram Bereken-paasdatum beschrijft dit algoritme. Deze subroutine verwacht dat de variabele jaartal gevuld is met een getal uit de reeks 1900 - 2099. Als resultaat van de subroutine zijn de variabelen paasdag en paasmaand gevuld.
Opgave 4.33 van het werkboek is een vervolg op dit voorbeeld en vraagt als uitbreiding op dit programma om de dag en de maand van hemelvaartsdag en pinksteren te berekenen.
Figuur 4.9 PSD Herhaling
Figuur 4.10 PSD Bepaalpaasdatum
illustratie: Geert Nijmolen
IDENTIFICATION DIVISION PROGRAM-ID. Paasdatum. *Auteur: Andree Hollander *Datum: 1988/06/21 DATA DIVISION. WORKING-STORAGE SECTION. 01 hulpvariabelen. 02 A pic 99. 02 B pic 9. 02 C pic 99. 02 D pic 99. 02 E pic 9. 02 F pic S99. 02 doet-er-niet-toe pic 9. 02 tussenresultaat pic 999. 01 paasvariabelen. 02 paasmaand pic 9. 02 paasdag pic 99. 01 afdrukregel. 02 dag pic Z9/. 02 maand pic 99/. 02 jaar pic 9(4). 02 filler pic XX value ": ". 02 feest pic X(15). PROCEDURE DIVISION. Herhaling. Perform with test before varying jaartal from 1999 by 1 until jaartal > 2005 perform Bepaal-Paasdatum move paasdag to dag move paasmaand to maand move "Pasen" to feest display afdrukregel end-perform stop run. Bepaal-Paasdatum. * Algoritme van de wiskundige Gauss divide jaar by 19 giving doet-er-niet-toe remainder A divide jaar by 4 giving doet-er-niet-toe remainder B divide jaar by 7 giving doet-er-niet-toe remainder C compute tussenresultaat = 19 * A + 24 divide tussenresultaat by 30 giving doet-er-niet-toe remainder D compute tussenresultaat = 5 + 2 * B + 4 *C + 6 * D divide tussenresultaat by 7 giving doet-er-niet-toe remainder E compute F = D + E - 9 if F > 0 then move 4 to paasmaand if F = 26 then move 19 to paasdag else if F = 25 and D = 28 then move 18 to paasdag else move F to paasdag end-if end-if else move 3 to paasmaand add F to 31 giving paasdag end-if.