SUBROUTINE DATE4 (BUF) C+ C C FUNCTIONAL DESCRIPTION: C C DATE4 can be used to replace the DATE intrinsic subroutine with C CHARACTER argument where a four-digit year is desired. It uses C the Fortran 90 standard DATE_AND_TIME intrinsic which is C available in DIGITAL Fortran 77 V6.5 on OpenVMS VAX, V7.1 on C OpenVMS Alpha and V4.1 on DIGITAL UNIX, as well as in all C Fortran 90 compilers. C C Note that since DATE returned a nine-character string, the C application must be modified to expect an eleven-character C return from DATE4. C C If DATE was called with a numeric type argument, use DATE4N C instead. C C C FORMAL PARAMETERS: C C BUF: C CHARACTER*11, output C The current date is written to BUF in the form dd-mmm-yyyy C C C- IMPLICIT NONE CHARACTER*(*) BUF INTEGER*4 DT_VALUES(8) ! Return values from DATE_AND_TIME CHARACTER*11 TEMP_DATE CHARACTER*3 MONTHS(12) ! Month names DATA MONTHS /'JAN','FEB','MAR','APR','MAY','JUN', 1 'JUL','AUG','SEP','OCT','NOV','DEC'/ CHARACTER*8 UDATE ! Dummy variables used as arguments to CHARACTER*10 UTIME ! DATE_AND_TIME so that this code can CHARACTER*5 UZONE ! compiled by an F9x compiler C C Get current date values C CALL DATE_AND_TIME (UDATE,UTIME,UZONE,DT_VALUES) C C Format date C WRITE (TEMP_DATE,'(I2,''-'',A,''-'',I4)') DT_VALUES(3), 1 MONTHS(DT_VALUES(2)),DT_VALUES(1) C C Store result C BUF = TEMP_DATE RETURN END SUBROUTINE DATE4N (BUF) C+ C C FUNCTIONAL DESCRIPTION: C C DATE4N can be used to replace the DATE intrinsic subroutine C with numeric argument where a four-digit year is desired. It C uses the Fortran 90 standard DATE_AND_TIME intrinsic which is C available in DIGITAL Fortran 77 V6.5 on OpenVMS VAX, V7.1 on C OpenVMS Alpha and V4.1 on DIGITAL UNIX, as well as in all C Fortran 90 compilers. C C Note that since DATE returned a nine-character string, the C application must be modified to expect an eleven-character C return from DATE4N. C C If DATE was called with a CHARACTER type argument, use DATE4 C instead. C C C FORMAL PARAMETERS: C C BUF: C numeric (INTEGER, REAL, LOGICAL) array, minimum 11 bytes C The current date is written to BUF in the form dd-mmm-yyyy C C C- IMPLICIT NONE BYTE BUF(11) INTEGER*4 DT_VALUES(8) ! Return values from DATE_AND_TIME INTEGER I CHARACTER*11 TEMP_DATE CHARACTER*3 MONTHS(12) ! Month names DATA MONTHS /'JAN','FEB','MAR','APR','MAY','JUN', 1 'JUL','AUG','SEP','OCT','NOV','DEC'/ CHARACTER*8 UDATE ! Dummy variables used as arguments to CHARACTER*10 UTIME ! DATE_AND_TIME so that this code can CHARACTER*5 UZONE ! compiled by an F9x compiler C C Get current date values C CALL DATE_AND_TIME (UDATE,UTIME,UZONE,DT_VALUES) C C Format date C WRITE (TEMP_DATE,'(I2,''-'',A,''-'',I4)') DT_VALUES(3), 1 MONTHS(DT_VALUES(2)),DT_VALUES(1) C C Store result C DO I=1,11 BUF(I) = ICHAR(TEMP_DATE(I:I)) END DO RETURN END SUBROUTINE IDATE4 (MONTH,DAY,YEAR) C+ C C FUNCTIONAL DESCRIPTION: C C IDATE4 can be used to replace the IDATE intrinsic subroutine C where a four-digit year is desired. It uses the Fortran 90 C standard DATE_AND_TIME intrinsic which is available in DIGITAL C Fortran 77 V6.5 on OpenVMS VAX, V7.1 on OpenVMS Alpha and V4.1 C on DIGITAL UNIX, as well as in all Fortran 90 compilers. C C C FORMAL PARAMETERS: C C MONTH: C INTEGER*4, output - the current month number C DAY: C INTEGER*4, output - the current day number C YEAR: C INTEGER*4, output - the current year number using four digits C C- IMPLICIT NONE INTEGER*4 MONTH,DAY,YEAR INTEGER*4 DT_VALUES(8) ! Return values from DATE_AND_TIME CHARACTER*8 UDATE ! Dummy variables used as arguments to CHARACTER*10 UTIME ! DATE_AND_TIME so that this code can CHARACTER*5 UZONE ! compiled by an F9x compiler C C Get current date values C CALL DATE_AND_TIME (UDATE,UTIME,UZONE,DT_VALUES) C C Store results C MONTH = DT_VALUES(2) DAY = DT_VALUES(3) YEAR = DT_VALUES(1) RETURN END