Cálculos con fechas en COBOL


El COBOL de IBM para z/OS incluye dos funciones que simplifican mucho los cálculos con fechas, gracias a que convierten una fecha en formato AAAAMMDD en su equivalente numérico y a la inversa. Ello nos permite hacer sumas o restas con fechas fácilmente, sin necesidad de tener en cuenta el número de días de cada mes o si alguno de los años que intervienen en el cálculo es bisiesto.

Las funciones son:

INTEGER-OF-DATE (argumento)

El argumento debe ser un número entero que represente una fecha en formato AAAAMMDD comprendida entre 16010101 y 99991231.

El resultado es un número entero en el rango de 1 a 3.067.671 que representa el número de días transcurridos entre el 31 de diciembre de 1600 y la fecha del argumento.

DATE-OF-INTEGER (argumento)

El argumento debe ser un número entero comprendido entre 1 y 3.067.671 que represente el número de días transcurridos desde el 31 de diciembre de 1600.

El resultado es la fecha en formato AAAAMMDD equivalente al número entero pasado como argumento.

Ejemplos:

Definimos las  variables

01  W-FECHA1            PIC 9(08).
01  W-FECHA2            PIC 9(08).
01  W-DIAS              PIC 9(04).

1)  Calcular el número días de diferencia entre el 5 de marzo de 2012 y el 10 de febrero de 2011.

MOVE  20120305  TO W-FECHA2
MOVE  20110210  TO W-FECHA1

COMPUTE W-DIAS =
FUNCTION INTEGER-OF-DATE(W-FECHA2) -
FUNCTION INTEGER-OF-DATE(W-FECHA1)

2) Restarle diez días al 7 de marzo de 2013.

MOVE 20130307 TO W-FECHA1

COMPUTE W-FECHA2 =
FUNCTION DATE-OF-INTEGER (
FUNCTION INTEGER-OF-DATE(W-FECHA1) - 10 )




Deja un comentario