Hola a tod@s:
Soy nuevo en la lista, estudio Ingeneria Técnica en informática de gestión, tengo que realizar una páctica, pero me da problemas en el siguiente procedimiento:
-- 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;
En el fichero ads tengo la siguiente especificación:
private
-- -- Estructura de representación del tad fechas
type Fecha is record
D: Positive range 1..31;
M: Positive range 1..12;
A: Positive range 1..9999;
end record;
end Fechas;
El procedimiento lo que hace es inicializar la fecha, comprueba que no hay error en la fecha es decir que los meses que solo tienen 30 dias no se ponga 31,
que el mes de febrero no tengan más de 28 días, salvo que sea bisiesto que entonces no puede tener más de 29 dias,
Bueno el problema es que al mandarlo a la universidad vía internet, hay un programa que copila y te poner la nota y te indica los erroes que tienes, en mi caso me pone que en este procedimiento Falla, lanza una excepción inesperada.
Espero haberme explicado, os agradeceria una ayuda al respecto, yo no veo donde puede estar el error. Gracias de antemano
Un cordial saludo
José Manuel
Gran Canaria/España