
Años Bisiestos
El que existan años bisiestos, es para absorber la diferencia entre el
año solar (algo mas de 365,25 días) y el año de calendario (365) días.
La explicación correcta que se adoptó en la reforma de Gregorio XIII en
el año 1583, indica que:
Serán años bisiestos, todos aquellos
que sean múltiplos de cuatro, excepto los que simultáneamente sean múltiplos de cien,
salvo que a su vez lo sean de cuatrocientos.
Esto significa que desde el año 1.600 no se había dado, que un cambio de
centuria coincidiera con un año bisiesto y, por supuesto, informaticamente,
es la primera vez que sucede algo así.
Por lo tanto el año 2.000 será bisiesto, pero el 2.100, 2.200 y 2.300 no lo serán,
claro que para entonces....
Si lo que queremos es determinar cuantos días va a tener el mes de Febrero del año sobre el
que estamos trabajando, una manera de hacerlo es la siguiente:
Nos definimos una tabla con los valores de los días por defecto.
...
WORKING-STORAGE SECTION.
01 TABLADIAS.
02 FILLER PIC X(24) VALUE
"310031303130313130313031".
01 DIASTABLA REDEFINES TABLADIAS.
02 ELEDIA PIC 99 OCCURS 12 TIMES.
01 RESULTADO PIC 9(6).
01 RESTO PIC 9(6).
...
Después, justo al entrar en la Procedure ejecutamos la siguiente rutina:
PROCEDURE DIVISION.
BISIESTO.
DIVIDE 4 INTO (el_año) GIVING RESULTADO REMAINDER RESTO.
IF RESTO NOT = 0 GO NOBIS.
(Si no es múltiplo de 4, no es bisiesto seguro, por lo tanto nos vamos).
DIVIDE 100 INTO (el_año) GIVING RESULTADO REMAINDER RESTO.
IF RESTO NOT = 0 GO BIS
(Llegados aquí, si no es múltiplo de 100 seguro que es bisiesto)
ELSE
DIVIDE 400 INTO (el_año) GIVING RESULTADO REMAINDER RESTO
IF RESTO = 0 GO BIS ELSE GO NOBIS.
(Si es múltiplo de 400 es bisiesto, sino lo es, no es bisiesto).
GO EMPEZAR.
BIS. (Si es bisiesto, movemos 29 al elemento 2 que corresponde a Febrero y seguimos).
MOVE 29 TO ELEDIA (2).
GO EMPEZAR.
NOBIS. (Si no es bisiesto, movemos 28 al elemento 2 que corresponde a Febrero).
MOVE 28 TO ELEDIA (2).
EMPEZAR. ...
De ésta forma nos aseguraremos que el valor de la tabla que contiene los
días de cada mes está correctamente, asignándole a Febrero los que
realmente le corresponden según sea bisiesto o no.
|
|