-- Procedimiento Fechar que inicializa una fecha en el primer
-- parámetro, usando el segundo parámetro como día, el tercero como
-- mes y el cuarto como año. Si los parámetros diesen lugar a una
-- fecha incorrecta, se lanzará la excepción Fecha_Incorrecta.
procedure Fechar(F: out Fecha; Di, Me, An: in Positive) is
begin
if ((Me = 4) or (Me = 6) or (Me = 9) or (Me = 11)) and (Di >30) then
raise Fecha_Incorrecta; --lanza una excepción
end if;
if (Me = 2) and (Di > 29)then
raise Fecha_Incorrecta; --lanza una excepción
end if;
if (Me = 2) and (Di = 29)then
if (An rem 4 = 0) then
if ((An rem 100 = 0) and (An rem 400 /= 0)) then
raise Fecha_Incorrecta; --lanza una excepción
end if;
end if;
if (An rem 4 /= 0) then
raise Fecha_Incorrecta; --lanza una excepción
end if;
end if;
f.D:= Di;
F.M:= Me;
F.A:= An;
end Fechar;