COBOL Intrinsic Date Functions

[an error occurred while processing this directive]

The standard ACCEPT statement for getting the system date was a large part of the Y2K problem, since it only allowed for two-digit years. The 1989 revision of the COBOL standard introduced the following functions for doing date manipuation, all of which use four-digit years. Of course, these will not prevent a Y10K problem, but by then one may hope that COBOL will have been superseded.

Since CURRENT-DATE expects an alphanumeric item, whereas the other functions expect plain numeric items, you should define the data item used to get the current date as follows:

01  DATE-TODAY.
    05  DATE-TODAY-NUM PIC 9(8).
			

OR

01  DATE-TODAY PIC X(8).
01  DATE-TODAY-NUM REDEFINES DATE-TODAY PIC 9(8).
			

Then use DATE-TODAY with CURRENT-DATE and DATE-TODAY-NUM with everything else.

NB. In the following explanations, "numeric" always means PIC 9 DISPLAY.

CURRENT-DATE

Syntax

MOVE FUNCTION CURRENT-DATE TO data-item.

Action

Returns the current date in YYYYMMDD format. data-item must either be PIC X(8) or a group item.

INTEGER-OF-DATE

Syntax

COMPUTE dest = FUNCTION INTEGER-OF-DATE (source).

Action

Converts source into an integer representing the number of days between December 31, 1600 and source and stores it in dest. source must be a numeric data item containing a date formatted YYYYMMDD. dest must be a numeric data item of at least 6 digits.

DATE-OF-INTEGER

Syntax

COMPUTE dest = FUNCTION DATE-OF-INTEGER (source).

Action

Converts source into a date formatted YYYYMMDD and stores it in dest. source must be a numeric data item. dest must be a numeric data item of 8 digits.

INTEGER-OF-DAY

Syntax

COMPUTE dest = FUNCTION INTEGER-OF-DAY (source).

Action

Converts source into an integer representing the number of days between December 31, 1600 and source and stores it in dest. source must be a numeric data item containing a date formatted YYYYDDD; this is sometimes referred to as a date in Julian format. dest must be a numeric data item of at least 6 digits.

DAY-OF-INTEGER

Syntax

COMPUTE dest = FUNCTION DAY-OF-INTEGER (source).

Action

Converts source into a date formatted YYYYDDD and stores it in dest. source must be a numeric data item containing a positive integer. dest must be a numeric data item of 7 digits.