Developer Guide and Reference

ID 767251
Date 10/31/2024
Public
Document Table of Contents

DATE Intrinsic Procedure

Intrinsic Subroutine (Generic): Returns the current date as set within the system. DATE can be used as an intrinsic subroutine or as a portability routine. It is an intrinsic procedure unless you specify USE IFPORT. Intrinsic subroutines cannot be passed as actual arguments.

CALL DATE (buf)

buf

(Output) Is a variable, array, or array element of any data type, or a character substring. It must contain at least nine bytes of storage.

The date is returned as a 9-byte ASCII character string taking the form dd-mmm-yy, where:

dd

is the 2-digit date

mmm

is the 3-letter month

yy

is the last two digits of the year

If buf is of numeric type and smaller than 9 bytes, data corruption can occur.

If buf is of character type, its associated length is passed to the subroutine. If buf is smaller than 9 bytes, the subroutine truncates the date to fit in the specified length. If an array of type character is passed, the subroutine stores the date in the first array element, using the element length, not the length of the entire array.

CAUTION:

The two-digit year return value may cause problems with the year 2000. Use DATE_AND_TIME instead.

Example

CHARACTER*1 DAY(9)
…
CALL DATE (DAY)
PRINT *, DAY

The length of the first array element in CHARACTER array DAY is passed to the DATE subroutine. The subroutine then truncates the date to fit into the 1-character element, producing an incorrect result. For example, if the above is executed on August 14, 2024, the output is:

1

If DAY is declared with character length 9, a correct result will be produced:

CHARACTER(LEN=9) DAY
…
CALL DATE (DAY)
PRINT *, DAY

If the above is executed on August 14, 2024, the output is:

14-Aug-24