COBOL Future Date Calculation

Contributed by: Don Stafford, Director of Information Technologies, UAV Entertainment Corporation

We needed a routine to calculate a date in the future, based on business days, not on calendar days. In searching the internet, no COBOL source could be found.
However, several routines were found in various other programming languages.
I took several of those and adapted the code to MicroFocus Cobol. In Working Storage, you need the following variables:       01 CalDays                         PIC 9(3).
      01 BusDays                        PIC 9(3).
      01 DelDay                          PIC 9(3).
      01 DelWks                         PIC 9(3).
      01 WS-DAY-OF-WEEK        PIC 9(2).
      01 DAYS-TO-ADD              PIC 9(3).
      01 DATE-YMD-IN               PIC 9(8).
      01 DATE-YMD-OUT            PIC 9(8).
      01 DATE-DAY                    PIC 9(8). In the Procedure Division, you have 2 paragraphs:       ADD-BUS-DAYS-TO-DATE.          PERFORM GET-DAY-OF-WEEK-FOR-DATE.
         IF WS-DAY-OF-WEEK = 6
            MOVE 5 TO WS-DAY-OF-WEEK
            SUBTRACT 1 FROM DAYS-TO-ADD.          MOVE DAYS-TO-ADD TO CalDays,
                                                        BusDays.          COMPUTE DelDay = WS-DAY-OF-WEEK + DAYS-TO-ADD.          IF DelDay > 5
            COMPUTE BusDays = BusDays - ( 6 - WS-DAY-OF-WEEK )
            COMPUTE CalDays = CalDays + 2
            COMPUTE DelWks = BusDays / 5
            COMPUTE DAYS-TO-ADD = CalDays + (DelWks * 2).           PERFORM ADD-DAYS-TO-DATE.       ADD-DAYS-TO-DATE.          COMPUTE DATE-DAY = FUNCTION INTEGER-OF-DATE (DATE-YMD-IN).
         ADD DAYS-TO-ADD TO DATE-DAY.
         COMPUTE DATE-YMD-OUT = FUNCTION DATE-OF-INTEGER (DATE-DAY). The current (base) date is moved into DATE-YMD-IN.
The number of (business) days to add is moved into DAYS-TO-ADD.
You then call  ADD-BUS-DAYS-TO-DATE.
The resulting date is in DATE-YMD-OUT. Obvious note:  If you call ADD-DAYS-TO-DATE, it simply calculates a date in the future without regards to weekends.
Not-so-obvious note:  If you make ADD-DAYS-TO-DATE a PIC S9(3), then ADD-DAYS-TO-DATE will add or subtract days.  The ADD-BUS-DAYS-TO-DATE only works with +(positive) numbers.
------------------------------------------------------------------------
Don Stafford, Director of Information Technologies
UAV Entertainment Corporation
2200 Carolina Place
Fort Mill, SC  29708

This website uses cookies to manage authentication, navigation, and other functions. By using our website, you agree that we can place these types of cookies on your device.

View e-Privacy Directive Documents

You have declined cookies. This decision can be reversed.

You have allowed cookies to be placed on your computer. This decision can be reversed.

Login

Member Login