La manipulación de fechas es una tarea fundamental en la programación, y el lenguaje COBOL, ampliamente utilizado en sistemas financieros y de negocios, proporciona herramientas especiales para manejar fechas efectivamente.
Antes de sumergirnos en las rutinas y formatos de fechas en COBOL, es importante entender cómo se representan las fechas en este lenguaje. En COBOL, las fechas pueden representarse en diferentes formatos, pero el más común es AAAAMMDD
, donde AAAA
representa el año, MM
el mes y DD
el día.
COBOL no cuenta con funciones integradas para el manejo de fechas, como otros lenguajes de programación modernos. Sin embargo, existen varias rutinas que los programadores han desarrollado a lo largo de los años para trabajar con fechas.
Con la introducción de COBOL-85 y versiones posteriores, se agregaron funciones estándar para el manejo de fechas, como CURRENT-DATE
que devuelve la fecha y hora actual.
01 FECHA-ACTUAL.
05 FECHA-AÑO PIC 9(04).
05 FECHA-MES-DIA PIC 9(04).
05 FILLER PIC X.
05 FECHA-HORA PIC 9(06).
MOVE FUNCTION CURRENT-DATE TO FECHA-ACTUAL
Los programadores a menudo crean sus propias rutinas para calcular diferencias entre fechas, sumar o restar días a una fecha, o para validar fechas.
PROCEDURE DIVISION.
MOVE 20230315 TO WS-FECHA
MOVE 10 TO WS-DIAS-A-SUMAR
CALL "SUMAR_DIAS_A_FECHA" USING WS-FECHA WS-DIAS-A-SUMAR WS-FECHA-NUEVA
DISPLAY "NUEVA FECHA: " WS-FECHA-NUEVA
Aquí, SUMAR_DIAS_A_FECHA
sería una rutina creada por el usuario que toma una fecha y un número de días, y devuelve la nueva fecha.
La representación de las fechas en COBOL es crucial para el funcionamiento correcto de las rutinas. Además del formato AAAAMMDD
, las fechas también pueden representarse como:
DDMMYYYY
MMDDAAAA
AAAADD
)Las fechas julianas son útiles para cálculos de días transcurridos y se representan con el año seguido del día del año (de 001 a 365 o 366 en años bisiestos).
Aquí un ejemplo de cómo convertir una fecha Gregoriana a una fecha Juliana:
PROCEDURE DIVISION.
MOVE 20230315 TO WS-FECHA-GREGORIANA
CALL "CONVERTIR_A_JULIANA" USING WS-FECHA-GREGORIANA WS-FECHA-JULIANA
DISPLAY "FECHA JULIANA: " WS-FECHA-JULIANA
En este caso, CONVERTIR_A_JULIANA
sería una rutina para convertir la fecha Gregoriana en su equivalente Juliana.
Vamos a crear un ejemplo de rutina que suma días a una fecha en COBOL utilizando el formato AAAAMMDD
.
IDENTIFICATION DIVISION.
PROGRAM-ID. SUMAR_DIAS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-FECHA PIC 9(08).
01 WS-DIAS-A-SUMAR PIC 9(04).
01 WS-FECHA-NUEVA PIC 9(08).
PROCEDURE DIVISION.
MOVE 20230315 TO WS-FECHA
MOVE 10 TO WS-DIAS-A-SUMAR
CALL "SUMAR_DIAS_A_FECHA" USING WS-FECHA WS-DIAS-A-SUMAR WS-FECHA-NUEVA
DISPLAY "NUEVA FECHA: " WS-FECHA-NUEVA
STOP RUN.
SUMAR_DIAS_A_FECHA.
... // Aquí iría la lógica para sumar días a la fecha
En este ejemplo, WS-FECHA
es la fecha original, WS-DIAS-A-SUMAR
es el número de días a sumar y WS-FECHA-NUEVA
es la fecha resultante.
Para más detalles sobre la manipulación de fechas en COBOL y ejemplos de rutinas, los siguientes enlaces pueden ser útiles:
Recuerda que las rutinas para manejo de fechas pueden variar dependiendo del sistema y la versión de COBOL que estés utilizando. Por tanto, es importante consultar la documentación específica para tu entorno de desarrollo COBOL.