*IF DEF,CONTROL                                                            SETHIST1.2      
C ******************************COPYRIGHT******************************    GTS2F400.8605   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8606   
C                                                                          GTS2F400.8607   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8608   
C restrictions as set forth in the contract.                               GTS2F400.8609   
C                                                                          GTS2F400.8610   
C                Meteorological Office                                     GTS2F400.8611   
C                London Road                                               GTS2F400.8612   
C                BRACKNELL                                                 GTS2F400.8613   
C                Berkshire UK                                              GTS2F400.8614   
C                RG12 2SZ                                                  GTS2F400.8615   
C                                                                          GTS2F400.8616   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8617   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8618   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8619   
C Modelling at the above address.                                          GTS2F400.8620   
C ******************************COPYRIGHT******************************    GTS2F400.8621   
C                                                                          GTS2F400.8622   
CLL  Routine: SET_HISTORY_VALUES----------------------------------------   SETHIST1.3      
CLL                                                                        SETHIST1.4      
CLL  Purpose: Updates certain history file values before any calls         SETHIST1.5      
CLL           to write out history file                                    SETHIST1.6      
CLL                                                                        SETHIST1.7      
CLL  Tested under compiler:   cft77                                        SETHIST1.8      
CLL  Tested under OS version: UNICOS 6.1.5A                                SETHIST1.9      
CLL                                                                        SETHIST1.10     
CLL  Author:   R A Stratton                                                SETHIST1.11     
CLL                                                                        SETHIST1.12     
CLL  Model            Modification history from model version 3.0:         SETHIST1.13     
CLL version  date                                                          SETHIST1.14     
CLL   3.3  08/02/94  Modify calls to TIME2SEC/SEC2TIME to output/input     TJ080294.492    
CLL                  elapsed times in days & secs, for portability. TCJ    TJ080294.493    
CLL   3.4  17/06/94  Argument LCAL360 added and passed to SEC2TIME,        GSS1F304.656    
CLL                   TIME2SEC.                        S.J.Swarbrick       WRB1F401.748    
CLL   3.4  27/10/94  Set year correctly for Gregorian calendar             ARJ2F304.2      
CLL  4.1  18/04/96  Set RUN_ID from EXPT_ID & JOB_ID.  RTHBarnes.          WRB1F401.749    
CLL                                                                        ARJ2F304.3      
CLL  Programming standard: UM Doc Paper 3, version 1 (15/1/90)             SETHIST1.16     
CLL                                                                        SETHIST1.17     
CLL  Logical components covered: H                                         SETHIST1.18     
CLL                                                                        SETHIST1.19     
CLL  Project task: H                                                       SETHIST1.20     
CLL                                                                        SETHIST1.21     
CLL  External documentation:                                               SETHIST1.22     
CLL                                                                        SETHIST1.23     
CLL  -------------------------------------------------------------------   SETHIST1.24     
C*L  Interface and arguments: ------------------------------------------   SETHIST1.25     
C                                                                          SETHIST1.26     

      SUBROUTINE SET_HISTORY_VALUES                                         4,7GDR3F305.168    
C                                                                          SETHIST1.28     
      IMPLICIT NONE                                                        SETHIST1.29     
C                                                                          SETHIST1.30     
C*----------------------------------------------------------------------   SETHIST1.31     
C  Common blocks                                                           SETHIST1.32     
C                                                                          SETHIST1.33     
*CALL CMAXSIZE                                                             GDR3F305.169    
*CALL CSUBMODL                                                             GDR3F305.170    
*CALL CHSUNITS                                                             GDR3F305.171    
*CALL CHISTORY                                                             SETHIST1.34     
*CALL CTIME                                                                SETHIST1.35     
*CALL CCONTROL                                                             GDR3F305.172    
C                                                                          SETHIST1.36     
C  Subroutines called                                                      SETHIST1.37     
C                                                                          SETHIST1.38     
      EXTERNAL SEC2TIME,TIME2SEC,STP2TIME                                  TJ080294.494    
C                                                                          SETHIST1.40     
C  Local variables                                                         SETHIST1.41     
C                                                                          SETHIST1.42     
      INTEGER                                                              SETHIST1.43     
     &     ELAPSED_DAYS            ! Elapsed time since basis time(days)   TJ080294.495    
     &,    ELAPSED_SECS            ! Elapsed time since basis time(secs)   TJ080294.496    
     &,    ELAPSED_DAYA            ! time since basis time atmosphere      TJ080294.497    
     &,    ELAPSED_SECA            ! time since basis time atmosphere      SETHIST1.45     
     &,    ELAPSED_DAYO            ! time since basis time Ocean           TJ080294.498    
     &,    ELAPSED_SECO            ! time since basis time Ocean           SETHIST1.46     
     &,    FINAL_DAYS              ! target time (days)                    TJ080294.499    
     &,    FINAL_SECS              ! target time (seconds)                 TJ080294.500    
     &,    J_YEAR                  ! Year                                  SETHIST1.48     
     &,    J_MONTH                 ! month                                 SETHIST1.49     
     &,    J_DAY                   ! day                                   SETHIST1.50     
     &,    J_HOUR                  ! hour                                  SETHIST1.51     
     &,    J_MINUTE                ! minute                                SETHIST1.52     
     &,    J_SECOND                ! second                                SETHIST1.53     
     &,    J_DAY_NUMBER            ! day number                            SETHIST1.54     
CL                                                                         SETHIST1.55     
CL----------------------------------------------------------------------   SETHIST1.56     
CL 1. Set Run target  reached so far ready for possible resubmission       SETHIST1.57     
CL                                                                         SETHIST1.58     
*IF DEF,ATMOS                                                              SETHIST1.59     
*IF -DEF,OCEAN                                                             SETHIST1.60     
      CALL STP2TIME(STEPim(A_IM),                                          GDR3F305.173    
     &              STEPS_PER_PERIODim(A_IM),SECS_PER_PERIODim(A_IM),      GDR3F305.174    
     &              ELAPSED_DAYS,ELAPSED_SECS)                             TJ080294.502    
*ELSE                                                                      SETHIST1.62     
      CALL STP2TIME(STEPim(A_IM),                                          GDR3F305.175    
     &              STEPS_PER_PERIODim(A_IM),SECS_PER_PERIODim(A_IM),      GDR3F305.176    
     &              ELAPSED_DAYA,ELAPSED_SECA)                             TJ080294.504    
      CALL STP2TIME(STEPim(O_IM),                                          GDR3F305.177    
     &              STEPS_PER_PERIODim(O_IM),SECS_PER_PERIODim(O_IM),      GDR3F305.178    
     &              ELAPSED_DAYO,ELAPSED_SECO)                             TJ080294.506    
      IF (ELAPSED_DAYA.LT.ELAPSED_DAYO) THEN                               TJ080294.507    
        ELAPSED_DAYS=ELAPSED_DAYA                                          TJ080294.508    
        ELAPSED_SECS=ELAPSED_SECA                                          TJ080294.509    
      ELSE                                                                 TJ080294.510    
        ELAPSED_DAYS=ELAPSED_DAYO                                          TJ080294.511    
        ELAPSED_SECS=ELAPSED_SECO                                          TJ080294.512    
      ENDIF                                                                TJ080294.513    
*ENDIF                                                                     SETHIST1.66     
*ENDIF                                                                     SETHIST1.67     
*IF DEF,OCEAN                                                              SETHIST1.68     
      CALL STP2TIME(STEPim(O_IM),                                          GDR3F305.179    
     &              STEPS_PER_PERIODim(O_IM),SECS_PER_PERIODim(O_IM),      GDR3F305.180    
     &               ELAPSED_DAYS,ELAPSED_SECS)                            @GCP1F304.2      
*ENDIF                                                                     SETHIST1.70     
CL                                                                         SETHIST1.71     
CL  convert ELAPSED_DAYS/SECS back into a time relative to Basis time      TJ080294.514    
CL                                                                         SETHIST1.73     
      CALL SEC2TIME(ELAPSED_DAYS,ELAPSED_SECS,0,0,                         TJ080294.515    
     &              J_YEAR,J_MONTH,J_DAY,J_HOUR,                           TJ080294.516    
     &              J_MINUTE,J_SECOND,J_DAY_NUMBER,LCAL360)                GSS1F304.661    
      IF (LCAL360) THEN                                                    ARJ2F304.4      
      RUN_RESUBMIT_TARGET(1)=J_YEAR                                        SETHIST1.76     
      ELSE                                                                 ARJ2F304.5      
        RUN_RESUBMIT_TARGET(1)=J_YEAR-1                                    ARJ2F304.6      
      ENDIF                                                                ARJ2F304.7      
      RUN_RESUBMIT_TARGET(2)=J_MONTH-1                                     SETHIST1.77     
      RUN_RESUBMIT_TARGET(3)=J_DAY-1                                       SETHIST1.78     
      RUN_RESUBMIT_TARGET(4)=J_HOUR                                        SETHIST1.79     
      RUN_RESUBMIT_TARGET(5)=J_MINUTE                                      SETHIST1.80     
      RUN_RESUBMIT_TARGET(6)=J_SECOND                                      SETHIST1.81     
                                                                           SETHIST1.82     
CL                                                                         SETHIST1.83     
CL check to see if final target date reached if resubmission is            SETHIST1.84     
CL  operating.                                                             SETHIST1.85     
CL                                                                         SETHIST1.86     
      IF (RUN_RESUBMIT.EQ.'Y') THEN                                        SETHIST1.87     
CL                                                                         SETHIST1.88     
CL  Work out final target date required  in seconds                        SETHIST1.89     
CL                                                                         SETHIST1.90     
        J_YEAR   = RUN_TARGET_END(1)                                       SETHIST1.91     
        J_MONTH  = RUN_TARGET_END(2)                                       SETHIST1.92     
        J_DAY    = RUN_TARGET_END(3)                                       SETHIST1.93     
        J_HOUR   = RUN_TARGET_END(4)                                       SETHIST1.94     
        J_MINUTE = RUN_TARGET_END(5)                                       SETHIST1.95     
        J_SECOND = RUN_TARGET_END(6)                                       SETHIST1.96     
      IF (LCAL360) THEN                                                    GSS1F304.662    
        CALL TIME2SEC(J_YEAR,J_MONTH+1,J_DAY+1,J_HOUR,J_MINUTE,            SETHIST1.98     
     &                J_SECOND,0,0,FINAL_DAYS,FINAL_SECS,LCAL360)          GSS1F304.663    
      ELSE                                                                 GSS1F304.664    
        CALL TIME2SEC(J_YEAR+1,J_MONTH+1,J_DAY+1,J_HOUR,J_MINUTE,          SETHIST1.101    
     &                J_SECOND,0,0,FINAL_DAYS,FINAL_SECS,LCAL360)          GSS1F304.665    
      END IF                                                               GSS1F304.666    
        IF (ELAPSED_DAYS.GE.FINAL_DAYS.AND.ELAPSED_SECS.GE.FINAL_SECS)     TJ080294.520    
     &  THEN                                                               TJ080294.521    
          RUN_RESUBMIT='N'                                                 SETHIST1.105    
      WRITE(6,*)'SETHIST: final target date reached automatic resubmiss    GIE0F403.621    
     &ion switched off'                                                    SETHIST1.107    
        ENDIF                                                              SETHIST1.108    
      ENDIF                                                                SETHIST1.109    
C  Set RUN_IN for qxhistreport                                             WRB1F401.750    
      RUN_ID = EXPT_ID//JOB_ID                                             WRB1F401.751    
                                                                           SETHIST1.110    
      RETURN                                                               SETHIST1.111    
CL----------------------------------------------------------------------   SETHIST1.112    
      END                                                                  SETHIST1.113    
C                                                                          SETHIST1.114    
*ENDIF                                                                     SETHIST1.115