The CURRENT-DATE function provides access to the current system date and time. Learn to use this intrinsic function for date/time operations, formatting, and calculations in business applications.
12345678910111213141516WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 FORMATTED-DATE PIC X(10). 01 FORMATTED-TIME PIC X(8). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME DISPLAY 'Current date/time: ' CURRENT-DATE-TIME *> Extract date portion (YYYYMMDD) MOVE CURRENT-DATE-TIME(1:8) TO FORMATTED-DATE DISPLAY 'Date: ' FORMATTED-DATE *> Extract time portion (HHMMSS) MOVE CURRENT-DATE-TIME(9:6) TO FORMATTED-TIME DISPLAY 'Time: ' FORMATTED-TIME.
CURRENT-DATE returns a 14-character string in YYYYMMDDHHMMSS format. Use reference modification to extract date (positions 1-8) and time (positions 9-14) components for processing.
123456789101112131415161718192021WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 FORMATTED-DATE. 05 YEAR PIC X(4). 05 MONTH PIC X(2). 05 DAY PIC X(2). 01 DISPLAY-DATE PIC X(10). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME *> Parse date components MOVE CURRENT-DATE-TIME(1:4) TO YEAR MOVE CURRENT-DATE-TIME(5:2) TO MONTH MOVE CURRENT-DATE-TIME(7:2) TO DAY *> Format as MM/DD/YYYY STRING MONTH '/' DAY '/' YEAR INTO DISPLAY-DATE END-STRING DISPLAY 'Formatted date: ' DISPLAY-DATE.
Parse date components using reference modification and format them using STRING statements. Create user-friendly date formats like MM/DD/YYYY or DD-MM-YYYY for display purposes.
123456789101112131415161718192021WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 FORMATTED-TIME. 05 HOUR PIC X(2). 05 MINUTE PIC X(2). 05 SECOND PIC X(2). 01 DISPLAY-TIME PIC X(8). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME *> Parse time components MOVE CURRENT-DATE-TIME(9:2) TO HOUR MOVE CURRENT-DATE-TIME(11:2) TO MINUTE MOVE CURRENT-DATE-TIME(13:2) TO SECOND *> Format as HH:MM:SS STRING HOUR ':' MINUTE ':' SECOND INTO DISPLAY-TIME END-STRING DISPLAY 'Formatted time: ' DISPLAY-TIME.
Extract time components (hour, minute, second) from positions 9-14 of the CURRENT-DATE result. Format time in readable formats like HH:MM:SS for display and logging purposes.
123456789101112131415161718WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 CURRENT-DATE-NUM PIC 9(8). 01 FUTURE-DATE-NUM PIC 9(8). 01 DAYS-DIFFERENCE PIC S9(5). 01 FUTURE-DATE PIC X(8). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME MOVE CURRENT-DATE-TIME(1:8) TO CURRENT-DATE-NUM *> Calculate date 30 days in the future COMPUTE FUTURE-DATE-NUM = FUNCTION INTEGER-OF-DATE(CURRENT-DATE-NUM) + 30 MOVE FUNCTION DATE-OF-INTEGER(FUTURE-DATE-NUM) TO FUTURE-DATE-NUM MOVE FUTURE-DATE-NUM TO FUTURE-DATE DISPLAY 'Current date: ' CURRENT-DATE-NUM DISPLAY 'Future date: ' FUTURE-DATE.
Perform date calculations by converting dates to integer values using INTEGER-OF-DATE, performing arithmetic operations, then converting back using DATE-OF-INTEGER. This enables date arithmetic.
12345678910111213141516171819202122WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 CURRENT-DATE-NUM PIC 9(8). 01 BIRTH-DATE PIC 9(8) VALUE 19900101. 01 CURRENT-YEAR PIC 9(4). 01 BIRTH-YEAR PIC 9(4). 01 AGE PIC 9(3). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME MOVE CURRENT-DATE-TIME(1:8) TO CURRENT-DATE-NUM *> Extract years MOVE CURRENT-DATE-NUM(1:4) TO CURRENT-YEAR MOVE BIRTH-DATE(1:4) TO BIRTH-YEAR *> Calculate age COMPUTE AGE = CURRENT-YEAR - BIRTH-YEAR DISPLAY 'Current year: ' CURRENT-YEAR DISPLAY 'Birth year: ' BIRTH-YEAR DISPLAY 'Age: ' AGE.
Calculate age by extracting year components from current date and birth date. Use simple arithmetic to determine age. For precise age calculation, consider month and day components as well.
123456789101112131415161718192021WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 CURRENT-DATE-NUM PIC 9(8). 01 DUE-DATE PIC 9(8). 01 DAYS-OVERDUE PIC S9(5). 01 OVERDUE-FLAG PIC X VALUE 'N'. PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME MOVE CURRENT-DATE-TIME(1:8) TO CURRENT-DATE-NUM *> Calculate days overdue COMPUTE DAYS-OVERDUE = FUNCTION INTEGER-OF-DATE(CURRENT-DATE-NUM) - FUNCTION INTEGER-OF-DATE(DUE-DATE) IF DAYS-OVERDUE > 0 MOVE 'Y' TO OVERDUE-FLAG DISPLAY 'Account is ' DAYS-OVERDUE ' days overdue' ELSE DISPLAY 'Account is current' END-IF.
Use CURRENT-DATE for business operations like calculating overdue accounts, payment due dates, and account aging. Compare current date with due dates to determine account status.
12345678910111213141516171819202122WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 TIMESTAMP PIC X(19). 01 LOG-ENTRY PIC X(100). PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME *> Create timestamp for logging STRING CURRENT-DATE-TIME(1:4) '-' CURRENT-DATE-TIME(5:2) '-' CURRENT-DATE-TIME(7:2) ' ' CURRENT-DATE-TIME(9:2) ':' CURRENT-DATE-TIME(11:2) ':' CURRENT-DATE-TIME(13:2) INTO TIMESTAMP END-STRING STRING TIMESTAMP ' - ' 'Transaction processed' INTO LOG-ENTRY END-STRING DISPLAY LOG-ENTRY.
Generate timestamps for logging and audit trails. Format the CURRENT-DATE result into readable timestamp format (YYYY-MM-DD HH:MM:SS) for inclusion in log entries and audit records.
1234567891011121314151617181920212223242526WORKING-STORAGE SECTION. 01 CURRENT-DATE-TIME PIC X(14). 01 CURRENT-DATE-NUM PIC 9(8). 01 INPUT-DATE PIC 9(8). 01 DATE-VALID PIC X VALUE 'N'. PROCEDURE DIVISION. MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-TIME MOVE CURRENT-DATE-TIME(1:8) TO CURRENT-DATE-NUM *> Validate input date is not in the future IF INPUT-DATE > CURRENT-DATE-NUM DISPLAY 'Error: Date cannot be in the future' MOVE 'N' TO DATE-VALID ELSE MOVE 'Y' TO DATE-VALID END-IF. *> Validate date is not too old (more than 10 years) COMPUTE CURRENT-DATE-NUM = FUNCTION INTEGER-OF-DATE(CURRENT-DATE-NUM) - 3650 MOVE FUNCTION DATE-OF-INTEGER(CURRENT-DATE-NUM) TO CURRENT-DATE-NUM IF INPUT-DATE < CURRENT-DATE-NUM DISPLAY 'Error: Date is too old' MOVE 'N' TO DATE-VALID END-IF.
Use CURRENT-DATE for date validation. Check that input dates are not in the future, not too old, or within acceptable business ranges. This ensures data integrity in date-sensitive applications.