C'è un problema:

la variabile meseX viene inizializzata solo se il mese è 1 o 2:

codice:
if (mese = 1) then begin
      meseX := 13;
      anno := anno-1
   end;
   if (mese = 2) then begin
      meseX := 14;
      anno := anno-1
   end;
ma viene utilizzata sempre:
codice:
uno := ((meseX + 1) * 3) div 5;
e
codice:
cinque := giorno + (meseX * 2) + uno + anno + due - tre + quattro + 2;
in effetti il progrmma funziona solo se il mese è 1 o 2 per il resto sbaglia!

poi non riesco ha capire il calcolo che fa!