*IF DEF,HPRT                                                               HPRINT1.2      
C ******************************COPYRIGHT******************************    GTS2F400.4015   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.4016   
C                                                                          GTS2F400.4017   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.4018   
C restrictions as set forth in the contract.                               GTS2F400.4019   
C                                                                          GTS2F400.4020   
C                Meteorological Office                                     GTS2F400.4021   
C                London Road                                               GTS2F400.4022   
C                BRACKNELL                                                 GTS2F400.4023   
C                Berkshire UK                                              GTS2F400.4024   
C                RG12 2SZ                                                  GTS2F400.4025   
C                                                                          GTS2F400.4026   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.4027   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.4028   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.4029   
C Modelling at the above address.                                          GTS2F400.4030   
C ******************************COPYRIGHT******************************    GTS2F400.4031   
C                                                                          GTS2F400.4032   
CLL  Routine: HPRINT-------------------------------------------------      HPRINT1.3      
CLL                                                                        HPRINT1.4      
CLL  Purpose: Master routine for printing out summary reports from         HPRINT1.5      
CLL           History File records.                                        HPRINT1.6      
CLL                                                                        HPRINT1.7      
CLL           Also updates model resubmit job parameters from latest       HPRINT1.8      
CLL           history block information                                    HPRINT1.9      
CLL                                                                        HPRINT1.10     
CLL  Tested under compiler:   cft77                                        HPRINT1.11     
CLL  Tested under OS version: UNICOS 5.0                                   HPRINT1.12     
CLL                                                                        HPRINT1.13     
CLL  Author:   A.Sangster                                                  HPRINT1.14     
CLL                                                                        HPRINT1.15     
CLL  Model            Modification history from model version 3.0:         HPRINT1.16     
CLL version  date                                                          HPRINT1.17     
CLL                                                                        AD050293.206    
CLL   3.1  05/02/93    Portable Fortran unit no assigns                    AD050293.207    
CLL                    Author: A. Dickinson    Reviewer: R. Stratton       AD050293.208    
CLL                                                                        HPRINT1.18     
CLL  Programming standard: UM Doc Paper 3, draft version 3 (15/1/90)       HPRINT1.19     
CLL                                                                        HPRINT1.20     
CLL  Logical components covered: H5                                        HPRINT1.21     
CLL                                                                        HPRINT1.22     
CLL  Project task: H                                                       HPRINT1.23     
CLL                                                                        HPRINT1.24     
CLL  Documentation:  Unified Model Documentation Paper                     HPRINT1.25     
CLL                  H- History Bricks                                     HPRINT1.26     
CLL                  Version 5  18/6/90                                    HPRINT1.27     
CLL                                                                        HPRINT1.28     
C*L Interface and arguments                                                HPRINT1.29     
C                                                                          HPRINT1.30     

      PROGRAM HPRINT                                                       ,8HPRINT1.31     
C                                                                          HPRINT1.32     
      IMPLICIT NONE                                                        HPRINT1.33     
C*                                                                         HPRINT1.34     
C                                                                          HPRINT1.35     
C Common blocks                                                            HPRINT1.36     
C                                                                          HPRINT1.37     
*CALL CSUBMODL                                                             GGH0F305.1      
*CALL CHSUNITS                                                             GGH0F305.2      
*CALL CHISTORY                                                             HPRINT1.38     
C                                                                          HPRINT1.39     
C*L EXTERNAL subroutines called                                            HPRINT1.40     
      EXTERNAL INITCHST,PRINTHST,READHIST,WRITRSUB,EREPORT,ABORT           HPRINT1.41     
      EXTERNAL GET_FILE                                                    AD050293.210    
C*                                                                         HPRINT1.42     
C                                                                          HPRINT1.43     
C  Local variables                                                         HPRINT1.44     
C                                                                          HPRINT1.45     
      INTEGER  ICODE,         !)Work- Return codes from called routines    HPRINT1.46     
     *         IABORT,        !)                                           HPRINT1.47     
     *         ICOUNT,        ! Work- History record counter               HPRINT1.48     
     *         HIST_UNIT,     ! Work- History file unit number             HPRINT1.49     
     *         RSUB_UNIT      ! Work- Resubmit parameter file unit no.     HPRINT1.50     
     *     ,NO_OF_RECORDS  !No of records user wants printed               GGH0F305.3      
C                                                                          HPRINT1.51     
      CHARACTER*256 CMESSAGE  ! Work- Return message if failure occured    HPRINT1.52     
      CHARACTER*80 FILENAME                                                AD050293.209    
C                                                                          HPRINT1.53     
      LOGICAL                                                              HPRINT1.54     
     *LONG,         ! If true,  print out expanded history report          HPRINT1.55     
     *LAST_RECORD   ! If true,  process last history record only           HPRINT1.56     
C                   ! If false, process all history records                HPRINT1.57     
C                                                                          HPRINT1.58     
      PARAMETER(HIST_UNIT=10)                                              HPRINT1.59     
      PARAMETER(RSUB_UNIT=7)                                               HPRINT1.60     
C                                                                          HPRINT1.61     
      NAMELIST/PRINTOPT/                                                   HPRINT1.62     
     *LONG,LAST_RECORD,NO_OF_RECORDS                                       GGH0F305.4      
CL                                                                         HPRINT1.64     
CL 0. Set default values and read namelist input                           HPRINT1.65     
CL                                                                         HPRINT1.66     
      ICOUNT=0                                                             HPRINT1.67     
      ICODE=0                                                              HPRINT1.68     
      LONG          = .TRUE.                                               HPRINT1.69     
      LAST_RECORD   = .TRUE.                                               HPRINT1.70     
      NO_OF_RECORDS = 100                                                  GGH0F305.5      
      CMESSAGE='HPRINT  : Problem reading namelist PRINTOPT'               HPRINT1.71     
      READ(5,PRINTOPT,END=50,ERR=999)                                      HPRINT1.72     
  50  CONTINUE                                                             HPRINT1.73     
CL                                                                         HPRINT1.74     
CL 1. Set common block area to zero or blank                               HPRINT1.75     
CL                                                                         HPRINT1.76     
      CALL INITCHST                                                        HPRINT1.77     
CL                                                                         HPRINT1.78     
CL 2. Read History file and loop through records                           HPRINT1.79     
CL                                                                         HPRINT1.80     
      IF(.NOT. LAST_RECORD) THEN                                           HPRINT1.81     
C                                                                          HPRINT1.82     
C Process each record in turn                                              HPRINT1.83     
C                                                                          HPRINT1.84     
        CALL GET_FILE(HIST_UNIT,FILENAME,80,ICODE)                         GTD0F400.158    
      OPEN(HIST_UNIT,FILE=FILENAME,FORM='FORMATTED',IOSTAT=ICODE,          PXNAMLST.2      
     & DELIM='APOSTROPHE')                                                 PXNAMLST.3      
C                                                                          HPRINT1.87     
C Check for error                                                          HPRINT1.88     
C                                                                          HPRINT1.89     
      IF(ICODE .GT.0)THEN                                                  HPRINT1.90     
        CMESSAGE='HPRINT  : Failed in OPEN of history file'                HPRINT1.91     
        GOTO 999                                                           HPRINT1.92     
      ELSEIF(ICODE .LT. 0)THEN                                             HPRINT1.93     
        WRITE(6,*)'HPRINT  : Warning message on OPEN of history file'      GIE0F403.260    
        WRITE(6,*)'IOSTAT= ',ICODE                                         GIE0F403.261    
      ENDIF                                                                HPRINT1.96     
C                                                                          HPRINT1.97     
      REWIND(HIST_UNIT)                                                    HPRINT1.98     
C                                                                          HPRINT1.99     
 100  READ(HIST_UNIT,NLIHISTO,END=200,ERR=200)                             GGH0F305.7      
      READ(HIST_UNIT,NLCHISTO)                                             GGH0F305.8      
      READ(HIST_UNIT,NLIHISTG)                                             GGH0F305.9      
      READ(HIST_UNIT,NLCHISTG)                                             GGH0F305.10     
      READ(HIST_UNIT,NLCFILES)                                             GGH0F305.11     
C                                                                          HPRINT1.104    
C Check for error                                                          HPRINT1.105    
C                                                                          HPRINT1.106    
      IF(ICODE .GT.0)THEN                                                  HPRINT1.107    
        CMESSAGE='HPRINT  : Failed in READ of history file'                HPRINT1.108    
        GOTO 999                                                           HPRINT1.109    
      ELSEIF(ICODE .LT. 0)THEN                                             HPRINT1.110    
        WRITE(6,*)'HPRINT  : Warning message on READ of history file'      GIE0F403.262    
        WRITE(6,*)'IOSTAT= ',ICODE                                         GIE0F403.263    
      ENDIF                                                                HPRINT1.113    
C                                                                          HPRINT1.114    
C                                                                          HPRINT1.115    
      ICOUNT=ICOUNT+1                                                      HPRINT1.116    
      CALL PRINTHST(ICOUNT,LONG)                                           HPRINT1.117    
      IF (ICOUNT .EQ. (NO_OF_RECORDS - 1)) GOTO 200                        GGH0F305.12     
C                                                                          HPRINT1.118    
      GOTO 100                                                             HPRINT1.119    
 200  CONTINUE                                                             HPRINT1.120    
      ELSE                                                                 HPRINT1.121    
C                                                                          HPRINT1.122    
C Process last record only                                                 HPRINT1.123    
C                                                                          HPRINT1.124    
      CALL READHIST(HIST_UNIT,ICODE,CMESSAGE)                              HPRINT1.125    
      IF(ICODE .GT. 0)GOTO 999                                             HPRINT1.126    
C                                                                          HPRINT1.127    
      LONG      = .TRUE.                                                   HPRINT1.128    
C                                                                          HPRINT1.129    
      CALL PRINTHST(ICOUNT,LONG)                                           HPRINT1.130    
C                                                                          HPRINT1.131    
      ENDIF                                                                HPRINT1.132    
CL                                                                         HPRINT1.133    
CL 3. Update resubmit file with current model resubmit information         HPRINT1.134    
CL    in history file                                                      HPRINT1.135    
CL                                                                         HPRINT1.136    
      CALL WRITRSUB(RSUB_UNIT,ICODE,CMESSAGE)                              HPRINT1.137    
      IF(ICODE .GT. 0)GOTO 999                                             HPRINT1.138    
CL                                                                         HPRINT1.139    
CL 4.0 Normal exit                                                         HPRINT1.140    
CL                                                                         HPRINT1.141    
      STOP                                                                 HPRINT1.142    
CL                                                                         HPRINT1.143    
CL 4.1 Output error message if problem                                     HPRINT1.144    
CL                                                                         HPRINT1.145    
 999  CONTINUE                                                             HPRINT1.146    
      IF (ICODE.EQ.0) ICODE=1                                              HPRINT1.147    
      CALL EREPORT(ICODE,CMESSAGE)                                         HPRINT1.148    
      CALL ABORT                                                           HPRINT1.149    
      STOP                                                                 HPRINT1.150    
      END                                                                  HPRINT1.151    
*ENDIF                                                                     HPRINT1.152