Syntax Error in Compiling: Påskedag := “første søndag efter første fuldmåne efter forårsjævndøgn”;

Jeg har tidligere her skrevet om beregning af helligdage i Klassisk Dynamics C5, men du skal da heller ikke snydes for en NAV funktion der gør det samme. Her sakset ud af en Codeunit-teksteksport så du lige kan se de nødvendige variable – koder du i NAV kan du så selv implementere den. Beklager at vores blog “æder” indrykningerne, så dem må du også lige selv lave…

 

Algoritmen er i øvrigt at Påskedag er første søndag efter første fuldmåne efter forårsjævndøgn – men NAV compileren forstår det bare ikke rigtigt på den måde 🙂

 

NAV algoritmen er:

PROCEDURE CalcEastern@1000000008(Year@1000000000 : Integer) : Date;
VAR
  a@1000000001 : Integer;
  b@1000000002 : Integer;
  c@1000000003 : Integer;
  d@1000000004 : Integer;
  e@1000000005 : Integer;
  Day@1000000006 : Integer;
  Month@1000000007 : Integer;
BEGIN
  a := Year MOD 19;
  b := Year MOD 4;
  c := Year MOD 7;
  d := (24 + 19*a) MOD 30;
  e := (5 + 2*b + 4*c + 6*d) MOD 7;
  IF (22 + d + e <= 31) AND (22 + d + e >= 1) THEN BEGIN
    Day := 22 + d + e;
    Month := 3;
  END ELSE BEGIN
    Day := d + e - 9;
    Month := 4;
  END;
  CASE TRUE OF
    (Month = 4) AND (Day = 26): EXIT( DMY2DATE(19,4,Year) );
    (Month = 4) AND (Day = 25): EXIT( DMY2DATE(18,4,Year) );
  ELSE
    EXIT( DMY2DATE(Day,Month,Year) );
  END;
END;

 

Ud over ovenstående skal man lige vide hvordan de andre Kirkehelligdage ligger i forhold til Påskedag (det er nemlig den der styrer det). De oplysninger kan du finde i vores tidligere indlæg om algoritmen til Klassisk Dynamics C5 her: Påske og Pinse og Jul står for døren…