Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL Date Arithmetic

Intermediate 🕑 12 min read 👁 0 views

COBOL Date Arithmetic

Perform date calculations using intrinsic functions and standard techniques.

Integer-of-Date

```cobol COMPUTE WS-INT-DATE = FUNCTION INTEGER-OF-DATE(WS-DATE) ``` Converts YYYYMMDD to integer (days since Dec 31, 1600).

Date-of-Integer

```cobol COMPUTE WS-DATE = FUNCTION DATE-OF-INTEGER(WS-INT-DATE) ```

Adding Days

```cobol COMPUTE WS-INT = FUNCTION INTEGER-OF-DATE(WS-DATE) ADD 30 TO WS-INT COMPUTE WS-NEW-DATE = FUNCTION DATE-OF-INTEGER(WS-INT) ```

Days Between Dates

```cobol COMPUTE WS-DAYS = FUNCTION INTEGER-OF-DATE(END-DATE) - FUNCTION INTEGER-OF-DATE(START-DATE) ```

Day of Week

```cobol ACCEPT WS-DOW FROM DAY-OF-WEEK COMPUTE WS-DOW = FUNCTION MOD( FUNCTION INTEGER-OF-DATE(WS-DATE), 7) + 1 ```

Leap Year Check

```cobol IF FUNCTION MOD(WS-YEAR, 4) = 0 AND (FUNCTION MOD(WS-YEAR, 100) NOT = 0 OR FUNCTION MOD(WS-YEAR, 400) = 0) SET LEAP-YEAR TO TRUE END-IF. ```

Code Example

       IDENTIFICATION DIVISION.
       PROGRAM-ID. DATE-CALC-DEMO.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-DATE1 PIC 9(8) VALUE 20241225.
       01 WS-DATE2 PIC 9(8) VALUE 20250115.
       01 WS-INT1 PIC 9(7).
       01 WS-INT2 PIC 9(7).
       01 WS-DAYS PIC S9(5).
       01 WS-NEW-DATE PIC 9(8).
       PROCEDURE DIVISION.
      * Convert to integers
           COMPUTE WS-INT1 = FUNCTION INTEGER-OF-DATE(WS-DATE1)
           COMPUTE WS-INT2 = FUNCTION INTEGER-OF-DATE(WS-DATE2)
           
      * Days between dates
           COMPUTE WS-DAYS = WS-INT2 - WS-INT1
           DISPLAY 'Days between: ' WS-DAYS
           
      * Add 30 days
           ADD 30 TO WS-INT1
           COMPUTE WS-NEW-DATE = FUNCTION DATE-OF-INTEGER(WS-INT1)
           DISPLAY 'Date + 30: ' WS-NEW-DATE
           
           STOP RUN.