*IF DEF,SETUP,OR,DEF,COMB,OR,DEF,CONTROL                                   GRB1F305.495    
C ******************************COPYRIGHT******************************    GTS2F400.8065   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8066   
C                                                                          GTS2F400.8067   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8068   
C restrictions as set forth in the contract.                               GTS2F400.8069   
C                                                                          GTS2F400.8070   
C                Meteorological Office                                     GTS2F400.8071   
C                London Road                                               GTS2F400.8072   
C                BRACKNELL                                                 GTS2F400.8073   
C                Berkshire UK                                              GTS2F400.8074   
C                RG12 2SZ                                                  GTS2F400.8075   
C                                                                          GTS2F400.8076   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8077   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8078   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8079   
C Modelling at the above address.                                          GTS2F400.8080   
C ******************************COPYRIGHT******************************    GTS2F400.8081   
C                                                                          GTS2F400.8082   
CLL  Routine: READHK------------------------------------------------       READHK1.3      
CLL                                                                        READHK1.4      
CLL  Purpose: Read the operational model houskeeping file and set up       READHK1.5      
CLL           operational model control variables                          GRB1F305.496    
CLL                                                                        READHK1.7      
CLL  Tested under compiler:   cft77                                        READHK1.8      
CLL  Tested under OS version: UNICOS 5.0                                   READHK1.9      
CLL                                                                        READHK1.10     
CLL  Author:   A.B.SANGSTER       Date:           22 January 1990          READHK1.11     
CLL                                                                        READHK1.12     
CLL  Model            Modification history from model version 3.0:         READHK1.13     
CLL version  date                                                          READHK1.14     
CLL   3.1   1/02/93 : Add comdeck CHSUNITS to def NUNITS for extra i/o     RS030293.65     
CLL                                                                        AD050293.84     
CLL   3.1  05/02/93    Portable Fortran unit no assigns                    AD050293.85     
CLL                    Author: A. Dickinson    Reviewer: R. Stratton       AD050293.86     
CLL   3.3  08/02/94  Modify calls to TIME2SEC/SEC2TIME to output/input     TJ080294.42     
CLL                  elapsed times in days & secs, for portability. TCJ    TJ080294.43     
CLL   3.4  17/06/94  Argument LCAL360 added and passed to SEC2TIME,        GSS1F304.527    
CLL                                                      TIME2SEC          GSS1F304.528    
CLL                                                    S.J.Swarbrick       GSS1F304.529    
CLL   3.4  24/06/94  Use service routine TIME_DF correctly to increment    URB0F304.1      
CLL                  HK by -analysis time to get model basis time. RTHB    URB0F304.2      
CLL  3.5  11/05/95  Sub-models stage 1: History/control files. RTHBarnes   GRB1F305.497    
!LL  4.3  26/02/97  Correct error in argument list of SEC2TIME             ARB2F403.152    
!LL                 present since vn3.4.            RTHBarnes.             ARB2F403.153    
CLL                                                                        READHK1.15     
CLL  Programming standard: UM Doc Paper 3, draft version 3 (15/1/90)       READHK1.16     
CLL                                                                        READHK1.17     
CLL  Logical components covered: C0                                        READHK1.18     
CLL                                                                        READHK1.19     
CLL  Project task: C0                                                      READHK1.20     
CLL                                                                        READHK1.21     
CLL  External documentation: On-line UM document C0 - The top-level        READHK1.22     
CLL                          control system                                READHK1.23     
CLL                                                                        READHK1.24     
C*L  Interface and arguments:                                              READHK1.25     
C                                                                          READHK1.26     

      SUBROUTINE READHK                                                     3,4READHK1.27     
     *         ( UNITHK,ICODE,CMESSAGE)                                    GRB1F305.498    
C                                                                          READHK1.29     
      IMPLICIT NONE                                                        READHK1.30     
C                                                                          READHK1.31     
      INTEGER      UNITHK    ! In  - Operational Model housekeeping file   READHK1.32     
      INTEGER       ICODE    ! Out - Return code from routine              READHK1.33     
      CHARACTER*(*) CMESSAGE ! Out - Return message if failure occured     READHK1.34     
C*                                                                         READHK1.35     
C                                                                          READHK1.36     
CL Common blocks                                                           READHK1.37     
C                                                                          READHK1.38     
*CALL CSUBMODL                                                             GRB1F305.499    
*CALL CHSUNITS                                                             RS030293.66     
*CALL CHISTORY                                                             GRB1F305.500    
*CALL CCONTROL                                                             GRB1F305.501    
C                                                                          READHK1.42     
C*L EXTERNAL subroutines called                                            READHK1.43     
      EXTERNAL TIME2SEC,GET_FILE,SEC2TIME,TIME_DF                          URB0F304.3      
C*                                                                         READHK1.45     
C                                                                          READHK1.46     
C  Local variables                                                         READHK1.47     
C                                                                          READHK1.48     
      INTEGER YEAR,MONTH,DAY,HOUR ! Read but not used                      READHK1.49     
      INTEGER     ITYPE           ! Indicator of operational run mode      READHK1.50     
C                                 ! 1 - Global main run                    READHK1.51     
C                                 ! 2 - Global update run                  READHK1.52     
C                                 ! 3 - Limited area run                   READHK1.53     
      INTEGER     INDIC           ! Read but not used                      READHK1.54     
      INTEGER     IDAY1,ISEC1     ! Days/seconds from calendar zero        URB0F304.4      
      INTEGER     IDAY,ISEC       ! Days/seconds from calendar zero        TJ080294.44     
      INTEGER     DEL_SEC         ! Increment in seconds                   URB0F304.5      
      CHARACTER*80 FILENAME                                                GRB1F305.502    
      CHARACTER*4 TYPE            ! Type of run                            READHK1.56     
C                                 ! 'NRUN' -  New run                      READHK1.57     
C                                 ! 'CRUN' -  Continuation                 READHK1.58     
C                                 ! 'RRUN' -  Complete rerun               READHK1.59     
CL                                                                         GRB1F305.503    
CL 0. Initialise                                                           GRB1F305.504    
CL                                                                         GRB1F305.505    
!       LCAL360 = .FALSE. ! already set in model; was not in qxcombine     GRB1F305.506    
CL                                                                         READHK1.60     
CL 1. Open rewind and read record                                          READHK1.61     
CL                                                                         READHK1.62     
      CALL GET_FILE(UNITHK,FILENAME,80,ICODE)                              GTD0F400.167    
        OPEN(UNITHK,FILE=FILENAME,IOSTAT=ICODE,DELIM='APOSTROPHE')         PXNAMLST.12     
C                                                                          READHK1.64     
C Check for error                                                          READHK1.65     
C                                                                          READHK1.66     
      IF(ICODE .GT.0)THEN                                                  READHK1.67     
        CMESSAGE='READHK  : Failed in OPEN of input unit'                  READHK1.68     
        GOTO 999                                                           READHK1.69     
      ELSEIF(ICODE .LT. 0)THEN                                             READHK1.70     
        WRITE(6,*)'READHK  : Warning message on OPEN of input unit'        GIE0F403.586    
        WRITE(6,*)'IOSTAT= ',ICODE                                         GIE0F403.587    
      ENDIF                                                                READHK1.73     
C                                                                          READHK1.74     
      REWIND(UNITHK)                                                       READHK1.75     
      READ(UNITHK,50,END=100,IOSTAT=ICODE)                                 READHK1.76     
     *                       YEAR,MONTH,DAY,HOUR,INDIC,ITYPE,TYPE          READHK1.77     
C                                                                          READHK1.78     
C Set MODEL_BASIS_TIME from HKfile time                                    READHK1.79     
C                                                                          READHK1.80     
      CALL TIME2SEC(YEAR,MONTH,DAY,HOUR,0,0,                               TJ080294.45     
     &              0,0,IDAY1,ISEC1,LCAL360)                               URB0F304.6      
      DEL_SEC = -3600*MODEL_ANALYSIS_HRS                                   URB0F304.7      
      CALL TIME_DF(IDAY1,ISEC1,0,DEL_SEC,IDAY,ISEC)                        URB0F304.8      
      CALL SEC2TIME(IDAY,ISEC,0,0,                                         TJ080294.47     
     &              MODEL_BASIS_TIME(1),MODEL_BASIS_TIME(2),               TJ080294.48     
     *              MODEL_BASIS_TIME(3),MODEL_BASIS_TIME(4),               TJ080294.49     
     &              MODEL_BASIS_TIME(5),MODEL_BASIS_TIME(6),               ARB2F403.154    
     &              IDAY1,LCAL360)                                         ARB2F403.155    
C                                                                          READHK1.86     
C Check for error                                                          READHK1.87     
C                                                                          READHK1.88     
      IF(ICODE .GT.0)THEN                                                  READHK1.89     
        CMESSAGE='READHK  : Failed in READ of housekeeping file'           READHK1.90     
        GOTO 999                                                           READHK1.91     
      ELSEIF(ICODE .LT. 0)THEN                                             READHK1.92     
      WRITE(6,*)'READHK  : Warning message on READ of housekeeping file'   GIE0F403.588    
        WRITE(6,*)'IOSTAT= ',ICODE                                         GIE0F403.589    
      ENDIF                                                                READHK1.95     
C                                                                          READHK1.96     
  50  FORMAT(I4,5I2,A4)                                                    READHK1.97     
CL                                                                         READHK1.98     
CL 2. Set appropriate history variables                                    READHK1.99     
CL                                                                         READHK1.100    
      RUN_INDIC_OP=ITYPE                                                   READHK1.101    
      IF(TYPE .EQ. 'NRUN')RUN_TYPE='Setup'                                 READHK1.102    
      IF(TYPE .EQ. 'CRUN')RUN_TYPE='Continue'                              READHK1.103    
      IF(TYPE .EQ. 'RRUN')RUN_TYPE='Rerun'                                 READHK1.104    
 100  CONTINUE                                                             READHK1.105    
 999  CONTINUE                                                             READHK1.106    
CL                                                                         READHK1.107    
CL 3. Close and return                                                     READHK1.108    
CL                                                                         READHK1.109    
      CLOSE(UNITHK)                                                        READHK1.110    
      RETURN                                                               READHK1.111    
      END                                                                  READHK1.112    
*ENDIF                                                                     READHK1.113