*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