    SUBROUTINE GETDATE(IYR, IMO, IDY, IUTC, CYR, CMON, CDAY, CUTC)
!>-------------------------------------------------------------------------------------------------- 
!> SUBROUTINE GETDATE
!> 
!> SUBPROGRAM: GETDATE - 
!> PROGRAMMER: ?????
!> ORG: ?????
!> DATE: ??-??-??       
!>     
!> ABSTRACT:
!> ?????
!>     
!> PROGRAM HISTORY LOG:
!> 87-08-??  ?????     - ORIGINATOR
!> 18-01-15  LUCCI     - MODERNIZATION OF THE CODE, INCLUDING:
!>                       * F77 TO F90/F95
!>                       * INDENTATION & UNIFORMIZATION CODE
!>                       * REPLACEMENT OF COMMONS BLOCK FOR MODULES
!>                       * DOCUMENTATION WITH DOXYGEN
!>                       * OPENMP FUNCTIONALITY 
!>
!> INPUT ARGUMENT LIST:
!> NONE
!>
!> OUTPUT ARGUMENT LIST:
!> NONE
!>
!> INPUT/OUTPUT ARGUMENT LIST:
!> NONE
!>    
!> USE MODULES: F77KINDS
!>              
!> 
!> DRIVER     : SOLARD
!>              SSTCH
!>              SSTCH_GREGORIAN_CALENDAR
!>              SSTCH_360_DAY_CALENDAR
!>              VEGUPDT
!>              VEGUPDT_GREGORIAN_CALENDAR
!>              VEGUPDT_360_DAY_CALENDAR
!>              ZENITH
!>              ZENITH_GREGORIAN_CALENDAR
!>              ZENITH_360_DAY_CALENDAR
!>              
!> CALLS      : -----
!>--------------------------------------------------------------------------------------------------
    USE F77KINDS
!
    IMPLICIT NONE
!
    INTEGER(KIND=I4KIND)                                                  , INTENT(IN)          ::&
    & IYR     , IMO     , IDY     , IUTC
!
    INTEGER(KIND=I4KIND)                                                  , INTENT(OUT)         ::&
    & CYR     , CMON    , CDAY    , CUTC
!
    INTEGER(KIND=I4KIND)                                                                        ::&
    & YR      , MON     , DAY     , UTC
!
    INTEGER(KIND=I4KIND), DIMENSION(12)                                                         ::&
    & MONL
!
    INTEGER(KIND=I4KIND)                                                                        ::&
    & DYSTEP
!
    YR  = IYR
    MON = IMO
    DAY = IDY
    UTC = IUTC
!
    DATA MONL /30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30/
!
    DYSTEP = 0
!
    IF (UTC >= 24) THEN
        DYSTEP = DYSTEP + (UTC / 24)
        UTC    = (MOD(UTC, 24))
    END IF
!
    DAY = DAY + DYSTEP
!
    DO
        IF (DAY > MONL(MON)) THEN
            DAY = DAY - MONL(MON)
            MON = MON + 1
!
            IF (MON == 13) THEN
                MON = 1
                YR  = YR + 1
            END IF
!
        ELSE
!
            EXIT
!
        END IF
!
    END DO
!
    CYR  = YR
    CMON = MON
    CDAY = DAY
    CUTC = UTC
!
    RETURN
!
    END SUBROUTINE GETDATE
