*IF DEF,CONTROL,OR,DEF,RECON,OR,DEF,UTILS,OR,DEF,SCMA                      GKR1F405.26     
C ******************************COPYRIGHT******************************    GTS2F400.8425   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8426   
C                                                                          GTS2F400.8427   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8428   
C restrictions as set forth in the contract.                               GTS2F400.8429   
C                                                                          GTS2F400.8430   
C                Meteorological Office                                     GTS2F400.8431   
C                London Road                                               GTS2F400.8432   
C                BRACKNELL                                                 GTS2F400.8433   
C                Berkshire UK                                              GTS2F400.8434   
C                RG12 2SZ                                                  GTS2F400.8435   
C                                                                          GTS2F400.8436   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8437   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8438   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8439   
C Modelling at the above address.                                          GTS2F400.8440   
C ******************************COPYRIGHT******************************    GTS2F400.8441   
C                                                                          GTS2F400.8442   
CLL  Routine: SEC2TIM0 -------------------------------------------------   SEC2TIM1.3      
CLL                                                                        SEC2TIM1.4      
CLL  Purpose: Converts from an integer number of elapsed seconds since     SEC2TIM1.5      
CLL           the model basis time to a calendar date/time, using the      SEC2TIM1.6      
CLL           absolute calendar zero point as a reference.  30-day         SEC2TIM1.7      
CLL           month or standard calendar may be used.                      SEC2TIM1.8      
CLL           NB: BASIS_TIME_SECS is the number of seconds from the        SEC2TIM1.9      
CLL           calendar zero point to the basis time for the run, and       SEC2TIM1.10     
CLL           is calculated in INITTIME.                                   SEC2TIM1.11     
CLL                                                                        SEC2TIM1.12     
CLL  Tested under compiler:   cft77                                        SEC2TIM1.13     
CLL  Tested under OS version: UNICOS 5.1                                   SEC2TIM1.14     
CLL                                                                        SEC2TIM1.15     
CLL  Author:   T.C.Johns                                                   SEC2TIM1.16     
CLL                                                                        SEC2TIM1.17     
CLL  Model            Modification history from model version 3.0:         SEC2TIM1.18     
CLL version  date                                                          SEC2TIM1.19     
CLL  3.1    12/01/93  Correct error on day 366 in leap year (-CAL360).     TJ120193.1      
CLL   3.3  01/02/94  Modify calling arguments and internal calculations    TJ080294.29     
CLL                  to split days/seconds, for 32-bit portability. TCJ    TJ080294.30     
CLL   3.4  17/06/94  DEF CAL360 replaced by LOGICAL LCAL360                GSS1F304.648    
CLL                                                 S.J.Swarbrick          GSS1F304.649    
CLL   4.5  10/07/98  Correct possible out of range error in array          GKW0F405.1      
CLL                  DAYS_IN_MONTHS for leap years.  JC Thil               GKW0F405.2      
CLL   4.5  28/10/98  Changed def line to use superdef UTILS instead of     GKR1F405.23     
CLL                  DEF,UTILHIST,OR,DEF,FLDIO,OR,DEF,UTILIO which         GKR1F405.24     
CLL                  allowed addition of SCMA def.  K Rogers               GKR1F405.25     
CLL                                                                        SEC2TIM1.21     
CLL  Programming standard: UM Doc Paper 3, version 1 (15/1/90)             SEC2TIM1.22     
CLL                                                                        SEC2TIM1.23     
CLL  Logical components covered: S62                                       SEC2TIM1.24     
CLL                                                                        SEC2TIM1.25     
CLL  Project task: S62                                                     SEC2TIM1.26     
CLL                                                                        SEC2TIM1.27     
CLL  External documentation: On-line UM document C0 - The top-level        SEC2TIM1.28     
CLL                          control system                                SEC2TIM1.29     
CLL                                                                        SEC2TIM1.30     
CLL  -------------------------------------------------------------------   SEC2TIM1.31     
C*L  Interface and arguments: ------------------------------------------   SEC2TIM1.32     
C                                                                          SEC2TIM1.33     

      SUBROUTINE SEC2TIME(ELAPSED_DAYS,ELAPSED_SECS                         26TJ080294.31     
     &,                   BASIS_TIME_DAYS,BASIS_TIME_SECS                  TJ080294.32     
     &,                   I_YEAR,I_MONTH,I_DAY,I_HOUR,I_MINUTE,I_SECOND    SEC2TIM1.35     
     &,                   I_DAY_NUMBER,LCAL360)                            GSS1F304.650    
C                                                                          SEC2TIM1.37     
      IMPLICIT NONE                                                        SEC2TIM1.38     
      LOGICAL LCAL360                                                      GSS1F304.651    
C                                                                          SEC2TIM1.39     
      INTEGER                                                              SEC2TIM1.40     
     &     ELAPSED_DAYS,           ! IN  - elapsed days since basis time   TJ080294.33     
     1     ELAPSED_SECS,           ! IN  - elapsed secs in part of day     TJ080294.34     
     &     BASIS_TIME_DAYS,        ! IN  - whole days to basis time        TJ080294.35     
     2     BASIS_TIME_SECS,        ! IN  - secs in day at basis time       TJ080294.36     
C                                  !       relative to calendar zero       TJ080294.37     
     2     I_SECOND,               ! OUT - model time (seconds)            SEC2TIM1.43     
     3     I_MINUTE,               ! OUT - model time (minutes)            SEC2TIM1.44     
     4     I_HOUR,                 ! OUT - model time (hours)              SEC2TIM1.45     
     5     I_DAY,                  ! OUT - model time (days)               SEC2TIM1.46     
     6     I_MONTH,                ! OUT - model time (months)             SEC2TIM1.47     
     7     I_YEAR,                 ! OUT - model time (years)              SEC2TIM1.48     
     8     I_DAY_NUMBER            ! OUT - model time (day number)         SEC2TIM1.49     
                                                                           SEC2TIM1.50     
C                                                                          SEC2TIM1.51     
C*----------------------------------------------------------------------   SEC2TIM1.52     
C                                                                          SEC2TIM1.54     
C  Common blocks                                                           SEC2TIM1.55     
C                                                                          SEC2TIM1.56     
*CALL CDAYDATA                                                             SEC2TIM1.57     
C                                                                          SEC2TIM1.59     
C  Local variables                                                         SEC2TIM1.60     
C                                                                          SEC2TIM1.61     
      INTEGER                                                              SEC2TIM1.62     
     &       SECOND      ! number of seconds since calendar zero           SEC2TIM1.63     
C                                                                          SEC2TIM1.64     
CL----------------------------------------------------------------------   SEC2TIM1.65     
CL 1. Add elapsed time to basis time in days/seconds to get elapsed        TJ080294.38     
CL     since calendar zero, and convert to hours, minutes, seconds and     SEC2TIM1.67     
CL     total days since calendar zero                                      SEC2TIM1.68     
CL                                                                         SEC2TIM1.69     
      SECOND   = BASIS_TIME_SECS+ELAPSED_SECS                              SEC2TIM1.70     
      I_DAY    = BASIS_TIME_DAYS+ELAPSED_DAYS+SECOND/86400                 TJ080294.39     
      SECOND   = MOD(SECOND,86400)                                         TJ080294.40     
      I_HOUR   = MOD(SECOND/3600,24)                                       SEC2TIM1.71     
      I_MINUTE = MOD(SECOND/60  ,60)                                       SEC2TIM1.72     
      I_SECOND = MOD(SECOND,60)                                            SEC2TIM1.73     
CL----------------------------------------------------------------------   SEC2TIM1.75     
CL 2. Convert day number to date                                           SEC2TIM1.76     
CL                                                                         SEC2TIM1.77     
      IF (LCAL360) THEN                                                    GSS1F304.652    
CL                                                                         SEC2TIM1.79     
CL 2.1 30-day month (360 day year) calendar                                SEC2TIM1.80     
CL                                                                         SEC2TIM1.81     
      I_YEAR  = I_DAY/360                                                  SEC2TIM1.82     
      I_MONTH = MOD(I_DAY/30,12)+1                                         SEC2TIM1.83     
      I_DAY   = MOD(I_DAY,30)+1                                            SEC2TIM1.84     
      I_DAY_NUMBER = I_DAY+30*(I_MONTH-1)                                  SEC2TIM1.85     
                                                                           GSS1F304.653    
      ELSE                                                                 GSS1F304.654    
CL                                                                         SEC2TIM1.87     
CL 2.2 Gregorian calendar                                                  SEC2TIM1.88     
CL                                                                         SEC2TIM1.89     
      I_YEAR = (I_DAY/DAYS_PER_4C)*400                                     SEC2TIM1.90     
      I_DAY = I_DAY-(I_DAY/DAYS_PER_4C)*DAYS_PER_4C                        SEC2TIM1.91     
CL     Catch special case 31 Dec in leap years                             TJ120193.2      
      IF (I_DAY.EQ.4*DAYS_PER_C) THEN                                      TJ120193.3      
        I_YEAR = I_YEAR+400                                                TJ120193.4      
        I_DAY = DAYS_PER_Y+1                                               TJ120193.5      
      ELSE                                                                 TJ120193.6      
        I_YEAR = I_YEAR+(I_DAY/DAYS_PER_C)*100                             TJ120193.7      
        I_DAY = I_DAY-(I_DAY/DAYS_PER_C)*DAYS_PER_C                        TJ120193.8      
        I_YEAR = I_YEAR+(I_DAY/DAYS_PER_4Y)*4                              TJ120193.9      
        I_DAY = I_DAY-(I_DAY/DAYS_PER_4Y)*DAYS_PER_4Y                      TJ120193.10     
        IF (I_DAY.EQ.4*DAYS_PER_Y) THEN                                    TJ120193.11     
          I_YEAR = I_YEAR+4                                                TJ120193.12     
          I_DAY = DAYS_PER_Y+1                                             TJ120193.13     
        ELSE                                                               TJ120193.14     
          I_YEAR = I_YEAR+(I_DAY/DAYS_PER_Y) + 1                           TJ120193.15     
          I_DAY = I_DAY-(I_DAY/DAYS_PER_Y)*DAYS_PER_Y + 1                  TJ120193.16     
        ENDIF                                                              TJ120193.17     
      ENDIF                                                                TJ120193.18     
      I_DAY_NUMBER = I_DAY                                                 SEC2TIM1.98     
CL     Find month/day from day no in year                                  SEC2TIM1.99     
      I_MONTH = 1                                                          SEC2TIM1.100    
      DO WHILE ((I_MONTH .le. 12) .and.                                    GKW0F405.3      
     &  (I_DAY .gt. DAYS_IN_MONTH(I_MONTH)))                               GKW0F405.4      
        I_DAY = I_DAY-DAYS_IN_MONTH(I_MONTH)                               SEC2TIM1.103    
        I_MONTH = I_MONTH+1                                                SEC2TIM1.104    
      ENDDO                                                                GKW0F405.5      
CL     Adjust if leap year and after February                              SEC2TIM1.107    
      IF (I_MONTH.GT.2 .AND. MOD(I_YEAR,4).EQ.0 .AND.                      SEC2TIM1.108    
     &    (MOD(I_YEAR,400).EQ.0 .OR. MOD(I_YEAR,100).NE.0)) THEN           SEC2TIM1.109    
        I_DAY = I_DAY-1                                                    SEC2TIM1.110    
        IF (I_DAY.EQ.0) THEN                                               SEC2TIM1.111    
          I_MONTH = I_MONTH-1                                              SEC2TIM1.112    
          I_DAY = DAYS_IN_MONTH(I_MONTH)                                   SEC2TIM1.113    
          IF (I_MONTH.EQ.2) I_DAY=29                                       SEC2TIM1.114    
        ENDIF                                                              SEC2TIM1.115    
      ENDIF                                                                SEC2TIM1.116    
      END IF  !  LCAL360                                                   GSS1F304.655    
CL----------------------------------------------------------------------   SEC2TIM1.118    
      RETURN                                                               TJ080294.41     
      END                                                                  SEC2TIM1.119    
C                                                                          SEC2TIM1.120    
*ENDIF                                                                     SEC2TIM1.121