Em Harbour
FUNCTION DomingoDePascoa( nAno )
LOCAL nA, nB, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia
nA := nAno % 19
nB := Int( nAno / 100 )
nC := nAno % 100
nD := Int( nB / 4 )
nE := nB % 4
nF := Int( ( nB + 8 ) / 25 )
nG := Int( ( nB - nF + 1 ) / 3 )
nH := ( 19 * nA + nB - nD - nG + 15 ) % 30
nI := Int( nC / 4 )
nK := nC % 4
nL := ( 32 + 2 * nE + 2 * nI - nH - nK ) % 7
nM := Int( ( nA + 11 * nH + 22 * nL ) / 451 )
nMes := Int( ( nH + nL - 7 * nM + 114 ) / 31 )
nDia := ( ( nH + nL - 7 * nM + 114 ) % 31 ) + 1
RETURN Stod( StrZero( nAno, 4 ) + StrZero( nMes, 2 ) + StrZero( nDia, 2 ) )
Em MySQL
CREATE FUNCTION ze_DomingoDePascoa( nAno INT )
RETURNS DATE
BEGIN
DECLARE nA, nB, nC, nD, nE, nF, nG, nH, nI, nK, nL, nM, nMes, nDia INT;
DECLARE cData DATE;
SET nA = Mod( nAno, 19 );
SET nB = floor( nAno / 100 );
SET nC = Mod( nAno, 100 );
SET nD = floor( nB / 4 );
SET nE = Mod( nB, 4 );
SET nF = floor( ( nB + 8 ) / 25 );
SET nG = floor( ( nB - nF + 1 ) / 3 );
SET nH = Mod( 19 * nA + nB - nD - nG + 15, 30 );
SET nI = floor( nC / 4 );
SET nK = Mod( nC, 4 );
SET nL = Mod( 32 + 2 * nE + 2 * nI - nH - nK, 7 );
SET nM = floor( ( nA + 11 * nH + 22 * nL ) / 451 );
SET nMes = floor( ( nH + nL - 7 * nM + 114 ) / 31 );
SET nDia = Mod( nH + nL - 7 * nM + 114, 31 ) + 1;
SET cData = CONCAT( LPAD( nAno, 4, '0' ), '-', + LPAD( nMes, 2, '0' ), '-', LPAD( nDia, 2, '0' ) );
RETURN cData;
END;