*IF DEF,C80_1A,OR,DEF,UTILIO                                               UIE3F404.54     
C ******************************COPYRIGHT******************************    GTS2F400.8029   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8030   
C                                                                          GTS2F400.8031   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8032   
C restrictions as set forth in the contract.                               GTS2F400.8033   
C                                                                          GTS2F400.8034   
C                Meteorological Office                                     GTS2F400.8035   
C                London Road                                               GTS2F400.8036   
C                BRACKNELL                                                 GTS2F400.8037   
C                Berkshire UK                                              GTS2F400.8038   
C                RG12 2SZ                                                  GTS2F400.8039   
C                                                                          GTS2F400.8040   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8041   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8042   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8043   
C Modelling at the above address.                                          GTS2F400.8044   
C ******************************COPYRIGHT******************************    GTS2F400.8045   
C                                                                          GTS2F400.8046   
CLL  SUBROUTINE READHEAD---------------------------------------            READHE1A.3      
CLL                                                                        READHE1A.4      
CLL AD, DR      <- programmer of some or all of previous code or changes   READHE1A.5      
CLL                                                                        READHE1A.6      
CLL  Model            Modification history from model version 3.0:         READHE1A.7      
CLL version  Date                                                          READHE1A.8      
CLL                                                                        AD060593.4      
CLL   3.2  06/05/93    Skip call to CHKLOOK if PP type file                AD060593.5      
CLL                    Author: A. Dickinson    Reviewer: D. Richardson     AD060593.6      
CLL                                                                        AD221292.1      
CLL  3.1   22/12/92     Allow use by ancillary field headers               AD221292.2      
CLL                     Author A. Dickinson    Reviewer C. Wilson          AD221292.3      
CLL   3.2    13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for          TS150793.153    
CLL                   portability.  Author Tracey Smith.                   TS150793.154    
CLL  3.2   12/05/93     Adapt to read prognostic fields only.              @DYALLOC.3096   
CLL                     Author D. Robinson     Reviewer A. Dickinson       @DYALLOC.3097   
CLL   3.5    28/03/95 MPP code: New code for parallel I/O                  GPB0F305.253    
CLL                                              P.Burton                  GPB0F305.254    
!     3.5  21/06/95  Set lookup(45) if initial dump pre version 3.5        UDG2F305.477    
!                    Author D.M.Goddard    Reviewer S Swarbrick            UDG2F305.478    
!     4.0  06/10/95  Set variable MODEL for all diagnostics in dump        UDG7F400.426    
!                    Author D.M. Goddard                                   UDG7F400.427    
!     4.1  23/05/96  Removed resetting of FIXHD(161) for MPP code          GPB0F401.298    
!                    P.Burton                                              GPB0F401.299    
!     4.1  18/06/96  Changes to cope with changes in STASH addressing      GDG0F401.1230   
!                    Author D.M. Goddard.                                  GDG0F401.1231   
                                                                           UDG2F305.479    
CLL  Programming standard: Unified Model Documentation Paper No 3          READHE1A.10     
CLL                        Version No 1 15/1/90                            READHE1A.11     
CLL                                                                        READHE1A.12     
CLL  Logical component: R30                                                READHE1A.13     
CLL                                                                        READHE1A.14     
CLL  System task: F3                                                       READHE1A.15     
CLL                                                                        READHE1A.16     
CLL  Purpose: Reads in model dump header records on unit NFTIN and         READHE1A.17     
CLL           checks model and dump dimensions for consistency.            READHE1A.18     
CLL                                                                        READHE1A.19     
CLL  Documentation: Unified Model Documentation Paper No F3                READHE1A.20     
CLL                 Version No 5 9/2/90                                    READHE1A.21     
CLL                                                                        READHE1A.22     
CLL------------------------------------------------------------            READHE1A.23     
C*L Arguments:-------------------------------------------------            READHE1A.24     

      SUBROUTINE READHEAD(NFTIN,FIXHD,LEN_FIXHD,       ! Intent (In)        23,42GDG0F401.1232   
     &                    INTHD,LEN_INTHD,                                 GDG0F401.1233   
     &                    REALHD,LEN_REALHD,                               GDG0F401.1234   
     &                    LEVDEPC,LEN1_LEVDEPC,LEN2_LEVDEPC,               GDG0F401.1235   
     &                    ROWDEPC,LEN1_ROWDEPC,LEN2_ROWDEPC,               GDG0F401.1236   
     &                    COLDEPC,LEN1_COLDEPC,LEN2_COLDEPC,               GDG0F401.1237   
     &                    FLDDEPC,LEN1_FLDDEPC,LEN2_FLDDEPC,               GDG0F401.1238   
     &                    EXTCNST,LEN_EXTCNST,                             GDG0F401.1239   
     &                    DUMPHIST,LEN_DUMPHIST,                           GDG0F401.1240   
     &                    CFI1,LEN_CFI1,                                   GDG0F401.1241   
     &                    CFI2,LEN_CFI2,                                   GDG0F401.1242   
     &                    CFI3,LEN_CFI3,                                   GDG0F401.1243   
     &                    LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP,LEN_DATA,         GDG0F401.1244   
*CALL ARGPPX                                                               GDG0F401.1245   
     &                    START_BLOCK,ICODE,CMESSAGE)   ! Intent (Out)     GDG0F401.1246   
                                                                           READHE1A.40     
      IMPLICIT NONE                                                        READHE1A.41     
                                                                           READHE1A.42     
      INTEGER                                                              READHE1A.43     
     * NFTIN         !IN Unit no of dump                                   READHE1A.44     
     *,LEN_FIXHD     !IN Length of fixed length header                     READHE1A.45     
     *,LEN_INTHD     !IN Length of integer header                          READHE1A.46     
     *,LEN_REALHD    !IN Length of real header                             READHE1A.47     
     *,LEN1_LEVDEPC  !IN 1st dim of level dep consts                       READHE1A.48     
     *,LEN2_LEVDEPC  !IN 2ndt dim of level dep consts                      READHE1A.49     
     *,LEN1_ROWDEPC  !IN 1st dim of row dep consts                         READHE1A.50     
     *,LEN2_ROWDEPC  !IN 2nd dim of row dep consts                         READHE1A.51     
     &,LEN1_COLDEPC  !IN 1st dim of column dep consts                      READHE1A.52     
     &,LEN2_COLDEPC  !IN 2nd dim of column dep consts                      READHE1A.53     
     &,LEN1_FLDDEPC  !IN 1st dim of field dep consts                       READHE1A.54     
     &,LEN2_FLDDEPC  !IN 2nd dim of field dep consts                       READHE1A.55     
     &,LEN_EXTCNST   !IN Length of extra constants                         READHE1A.56     
     &,LEN_DUMPHIST  !IN Length of history block                           READHE1A.57     
     &,LEN_CFI1      !IN Length of comp field index 1                      READHE1A.58     
     &,LEN_CFI2      !IN Length of comp field index 2                      READHE1A.59     
     &,LEN_CFI3      !IN Length of comp field index 3                      READHE1A.60     
     &,LEN1_LOOKUP   !IN 1st dim of lookup                                 READHE1A.61     
     &,LEN2_LOOKUP   !IN 2nd dim of lookup                                 READHE1A.62     
                                                                           READHE1A.63     
      INTEGER                                                              READHE1A.64     
     * LEN_DATA       !IN Length of model data                             READHE1A.65     
     *,START_BLOCK    !OUT Pointer to position of each block.              READHE1A.66     
     *                !Should point to start of model data block on exit   READHE1A.67     
     *,ICODE          !OUT Return code; successful=0                       READHE1A.68     
     *                !                 error > 0                          READHE1A.69     
                                                                           READHE1A.70     
      CHARACTER*(80)                                                       TS150793.155    
     * CMESSAGE       !OUT Error message if ICODE > 0                      READHE1A.72     
                                                                           READHE1A.73     
      INTEGER                                                              READHE1A.74     
     * FIXHD(LEN_FIXHD) !IN Fixed length header                            READHE1A.75     
     *,INTHD(LEN_INTHD) !IN Integer header                                 READHE1A.76     
     *,LOOKUP(LEN1_LOOKUP,LEN2_LOOKUP) !IN PP lookup tables                READHE1A.77     
     *,CFI1(LEN_CFI1+1) !IN Compressed field index no 1                    READHE1A.78     
     *,CFI2(LEN_CFI2+1) !IN Compressed field index no 2                    READHE1A.79     
     *,CFI3(LEN_CFI3+1) !IN Compressed field index no 3                    READHE1A.80     
                                                                           READHE1A.81     
      REAL                                                                 READHE1A.82     
     & REALHD(LEN_REALHD) !IN Real header                                  READHE1A.83     
     &,LEVDEPC(1+LEN1_LEVDEPC*LEN2_LEVDEPC) !IN Lev dep consts             READHE1A.84     
     &,ROWDEPC(1+LEN1_ROWDEPC*LEN2_ROWDEPC) !IN Row dep consts             READHE1A.85     
     &,COLDEPC(1+LEN1_COLDEPC*LEN2_COLDEPC) !IN Col dep consts             READHE1A.86     
     &,FLDDEPC(1+LEN1_FLDDEPC*LEN2_FLDDEPC) !IN Field dep consts           READHE1A.87     
     &,EXTCNST(LEN_EXTCNST+1)   !IN Extra constants                        READHE1A.88     
     &,DUMPHIST(LEN_DUMPHIST+1) !IN History block                          READHE1A.89     
                                                                           READHE1A.90     
C Local arrays:------------------------------------------------            READHE1A.91     
C None                                                                     READHE1A.92     
C -------------------------------------------------------------            READHE1A.93     
C External subroutines called:---------------------------------            READHE1A.94     
      EXTERNAL IOERROR,POSERROR,PR_FIXHD,CHK_LOOK,BUFFIN                   READHE1A.95     
C*-------------------------------------------------------------            READHE1A.96     
! Comdecks:----------------------------------------------------------      GDG0F401.1247   
*CALL CSUBMODL                                                             GDG0F401.1248   
*CALL CPPXREF                                                              GDG0F401.1249   
*CALL PPXLOOK                                                              GDG0F401.1250   
*CALL C_MDI                                                                READHE1A.97     
*CALL CLOOKADD                                                             AD060593.7      
*IF DEF,MPP                                                                GPB0F305.255    
*CALL PARVARS                                                              GPB0F305.256    
*ENDIF                                                                     GPB0F305.257    
C Local variables:---------------------------------------------            READHE1A.98     
      INTEGER K                                                            UDG2F305.480    
      INTEGER LEN_IO                                                       READHE1A.99     
      INTEGER FIXHD_152    !  Original value of FIXHD(152)                 @DYALLOC.3098   
      LOGICAL L_A_DUMP                                                     @DYALLOC.3099   
      LOGICAL L_O_DUMP                                                     @DYALLOC.3100   
      REAL A                                                               READHE1A.100    
C -------------------------------------------------------------            READHE1A.101    
                                                                           READHE1A.102    
      ICODE=0                                                              READHE1A.103    
      CMESSAGE=' '                                                         READHE1A.104    
                                                                           READHE1A.105    
CL 1. Buffer in fixed length header record                                 READHE1A.106    
                                                                           READHE1A.107    
      CALL BUFFIN(NFTIN,FIXHD(1),LEN_FIXHD,LEN_IO,A)                       READHE1A.108    
                                                                           READHE1A.109    
                                                                           READHE1A.110    
C Check for I/O errors                                                     READHE1A.111    
      IF(A.NE.-1.0.OR.LEN_IO.NE.LEN_FIXHD)THEN                             READHE1A.112    
        CALL IOERROR('buffer in of fixed length header',A,LEN_IO           READHE1A.113    
     *               ,LEN_FIXHD)                                           READHE1A.114    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.115    
        ICODE=1                                                            READHE1A.116    
        RETURN                                                             READHE1A.117    
      ENDIF                                                                READHE1A.118    
                                                                           READHE1A.119    
      START_BLOCK=LEN_FIXHD+1                                              READHE1A.120    
                                                                           READHE1A.121    
      FIXHD_152 = FIXHD(152)    !  Store original value                    @DYALLOC.3101   
                                                                           @DYALLOC.3102   
C     Test if atmos dump read in                                           @DYALLOC.3103   
      L_A_DUMP = FIXHD(5).EQ.1 .AND. FIXHD(2).EQ.1                         @DYALLOC.3104   
     *           . AND . LEN_DATA.NE.IMDI                                  @DYALLOC.3105   
                                                                           @DYALLOC.3106   
C     Test if ocean dump read in                                           @DYALLOC.3107   
      L_O_DUMP = FIXHD(5).EQ.1 .AND. FIXHD(2).EQ.2                         @DYALLOC.3108   
     *           . AND . LEN_DATA.NE.IMDI                                  @DYALLOC.3109   
                                                                           @DYALLOC.3110   
      IF (L_A_DUMP .OR. L_O_DUMP) THEN                                     @DYALLOC.3111   
        IF (FIXHD(152).NE.LEN2_LOOKUP) THEN                                @DYALLOC.3112   
CXX       WRITE (6,*) 'FIXHD(152) being reset from ',FIXHD(152),' to ',    @DYALLOC.3113   
CXX  *    LEN2_LOOKUP                                                      @DYALLOC.3114   
          FIXHD(152) = LEN2_LOOKUP                                         @DYALLOC.3115   
        ENDIF                                                              @DYALLOC.3116   
*IF -DEF,MPP                                                               GPB0F401.300    
        IF (FIXHD(161).NE.LEN_DATA) THEN                                   @DYALLOC.3117   
CXX       WRITE (6,*) 'FIXHD(161) being reset from ',FIXHD(161),' to ',    @DYALLOC.3118   
CXX  *    LEN_DATA                                                         @DYALLOC.3119   
          FIXHD(161) = LEN_DATA                                            @DYALLOC.3120   
        ENDIF                                                              @DYALLOC.3121   
*ENDIF                                                                     GPB0F401.301    
      ENDIF                                                                @DYALLOC.3122   
                                                                           @DYALLOC.3123   
C Check validity of data and print out fixed header information            READHE1A.122    
                                                                           READHE1A.123    
*IF DEF,MPP                                                                GPB0F305.258    
      IF (mype .EQ. 0) THEN                                                GPB0F305.259    
*ENDIF                                                                     GPB0F305.260    
      CALL PR_FIXHD(FIXHD,LEN_FIXHD,LEN_INTHD,LEN_REALHD,LEN1_LEVDEPC      READHE1A.124    
     *,LEN2_LEVDEPC,LEN1_ROWDEPC,LEN2_ROWDEPC,LEN1_COLDEPC,LEN2_COLDEPC    READHE1A.125    
     *,LEN1_FLDDEPC,LEN2_FLDDEPC,LEN_EXTCNST,LEN_DUMPHIST,LEN_CFI1         READHE1A.126    
     *,LEN_CFI2,LEN_CFI3,LEN1_LOOKUP,LEN2_LOOKUP,LEN_DATA                  READHE1A.127    
     *,ICODE,CMESSAGE)                                                     READHE1A.128    
                                                                           READHE1A.129    
      IF(ICODE.GT.0)RETURN                                                 READHE1A.130    
                                                                           READHE1A.131    
*IF DEF,MPP                                                                GPB0F305.261    
      ENDIF                                                                GPB0F305.262    
*ENDIF                                                                     GPB0F305.263    
CL 2. Buffer in integer constants                                          READHE1A.132    
                                                                           READHE1A.133    
      IF(FIXHD(100).GT.0)THEN                                              READHE1A.134    
                                                                           READHE1A.135    
C Check for error in file pointers                                         READHE1A.136    
       IF(FIXHD(100).NE.START_BLOCK)THEN                                   READHE1A.137    
        CALL POSERROR('integer constants',START_BLOCK,100,FIXHD(100))      READHE1A.138    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.139    
        ICODE=2                                                            READHE1A.140    
        RETURN                                                             READHE1A.141    
       ENDIF                                                               READHE1A.142    
                                                                           READHE1A.143    
      CALL BUFFIN(NFTIN,INTHD(1),FIXHD(101),LEN_IO,A)                      READHE1A.144    
                                                                           READHE1A.145    
C Check for I/O errors                                                     READHE1A.146    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(101))THEN                           READHE1A.147    
        CALL IOERROR('buffer in of integer constants',A,LEN_IO,            READHE1A.148    
     *               FIXHD(101))                                           READHE1A.149    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.150    
        ICODE=3                                                            READHE1A.151    
        RETURN                                                             READHE1A.152    
       ENDIF                                                               READHE1A.153    
                                                                           READHE1A.154    
       START_BLOCK=START_BLOCK+FIXHD(101)                                  READHE1A.155    
                                                                           READHE1A.156    
      ENDIF                                                                READHE1A.157    
                                                                           READHE1A.158    
CL 3. Buffer in real constants                                             READHE1A.159    
                                                                           READHE1A.160    
      IF(FIXHD(105).GT.0)THEN                                              READHE1A.161    
                                                                           READHE1A.162    
C Check for error in file pointers                                         READHE1A.163    
       IF(FIXHD(105).NE.START_BLOCK)THEN                                   READHE1A.164    
        CALL POSERROR('real constants',START_BLOCK,105,FIXHD(105))         READHE1A.165    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.166    
        ICODE=4                                                            READHE1A.167    
        RETURN                                                             READHE1A.168    
       ENDIF                                                               READHE1A.169    
                                                                           READHE1A.170    
C Check for I/O errors                                                     READHE1A.171    
      CALL BUFFIN(NFTIN,REALHD(1),FIXHD(106),LEN_IO,A)                     READHE1A.172    
                                                                           READHE1A.173    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(106))THEN                           READHE1A.174    
        CALL IOERROR('buffer in of real constants',A,LEN_IO,               READHE1A.175    
     *                FIXHD(106))                                          READHE1A.176    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.177    
        ICODE=5                                                            READHE1A.178    
        RETURN                                                             READHE1A.179    
       ENDIF                                                               READHE1A.180    
                                                                           READHE1A.181    
       START_BLOCK=START_BLOCK+FIXHD(106)                                  READHE1A.182    
                                                                           READHE1A.183    
                                                                           READHE1A.184    
      ENDIF                                                                READHE1A.185    
                                                                           READHE1A.186    
CL 4. Buffer in level dependent constants                                  READHE1A.187    
                                                                           READHE1A.188    
      IF(FIXHD(110).GT.0.AND.LEN1_LEVDEPC.NE.0)THEN                        AD221292.4      
                                                                           READHE1A.190    
C Check for error in file pointers                                         READHE1A.191    
       IF(FIXHD(110).NE.START_BLOCK)THEN                                   READHE1A.192    
        CALL POSERROR('level dependent constants',                         READHE1A.193    
     *  START_BLOCK,110,FIXHD(110))                                        READHE1A.194    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.195    
        ICODE=6                                                            READHE1A.196    
        RETURN                                                             READHE1A.197    
       ENDIF                                                               READHE1A.198    
                                                                           READHE1A.199    
      CALL BUFFIN(NFTIN,LEVDEPC(1),FIXHD(111)*FIXHD(112),LEN_IO,A)         READHE1A.200    
                                                                           READHE1A.201    
C Check for I/O errors                                                     READHE1A.202    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(111)*FIXHD(112))THEN                READHE1A.203    
        CALL IOERROR('buffer in of level dependent constants',A,LEN_IO,    READHE1A.204    
     *               FIXHD(111)*FIXHD(112))                                READHE1A.205    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.206    
        ICODE=7                                                            READHE1A.207    
        RETURN                                                             READHE1A.208    
       ENDIF                                                               READHE1A.209    
                                                                           READHE1A.210    
       START_BLOCK=START_BLOCK+FIXHD(111)*FIXHD(112)                       READHE1A.211    
                                                                           READHE1A.212    
*IF DEF,MPP                                                                GPB0F305.264    
       IF (mype .EQ. 0) THEN                                               GPB0F305.265    
*ENDIF                                                                     GPB0F305.266    
       WRITE(6,'('' '')')                                                  READHE1A.213    
       WRITE(6,'('' LEVEL DEPENDENT CONSTANTS'')')                         READHE1A.214    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(111)*FIXHD(112)   READHE1A.215    
                                                                           READHE1A.216    
*IF DEF,MPP                                                                GPB0F305.267    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.268    
*ENDIF                                                                     GPB0F305.269    
      ENDIF                                                                READHE1A.217    
                                                                           READHE1A.218    
CL 5. Buffer in row dependent constants                                    READHE1A.219    
                                                                           READHE1A.220    
      IF(FIXHD(115).GT.0.AND.LEN1_ROWDEPC.NE.0)THEN                        AD221292.5      
                                                                           READHE1A.222    
C Check for error in file pointers                                         READHE1A.223    
       IF(FIXHD(115).NE.START_BLOCK)THEN                                   READHE1A.224    
        CALL POSERROR('row dependent constants',                           READHE1A.225    
     *  START_BLOCK,115,FIXHD(115))                                        READHE1A.226    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.227    
        ICODE=8                                                            READHE1A.228    
        RETURN                                                             READHE1A.229    
       ENDIF                                                               READHE1A.230    
                                                                           READHE1A.231    
      CALL BUFFIN(NFTIN,ROWDEPC(1),FIXHD(116)*FIXHD(117),LEN_IO,A)         READHE1A.232    
                                                                           READHE1A.233    
C Check for I/O errors                                                     READHE1A.234    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(116)*FIXHD(117))THEN                READHE1A.235    
        CALL IOERROR('buffer in of row dependent constants',A,LEN_IO,      READHE1A.236    
     *                FIXHD(116)*FIXHD(117))                               READHE1A.237    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.238    
        ICODE=9                                                            READHE1A.239    
        RETURN                                                             READHE1A.240    
      ENDIF                                                                READHE1A.241    
                                                                           READHE1A.242    
                                                                           READHE1A.243    
       START_BLOCK=START_BLOCK+FIXHD(116)*FIXHD(117)                       READHE1A.244    
                                                                           READHE1A.245    
*IF DEF,MPP                                                                GPB0F305.270    
       IF (mype .EQ. 0) THEN                                               GPB0F305.271    
*ENDIF                                                                     GPB0F305.272    
       WRITE(6,'('' '')')                                                  READHE1A.246    
       WRITE(6,'('' ROW DEPENDENT CONSTANTS'')')                           READHE1A.247    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(116)*FIXHD(117)   READHE1A.248    
                                                                           READHE1A.249    
*IF DEF,MPP                                                                GPB0F305.273    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.274    
*ENDIF                                                                     GPB0F305.275    
      ENDIF                                                                READHE1A.250    
                                                                           READHE1A.251    
CL 6. Buffer in column dependent constants                                 READHE1A.252    
                                                                           READHE1A.253    
      IF(FIXHD(120).GT.0.AND.LEN1_COLDEPC.NE.0)THEN                        AD221292.6      
                                                                           READHE1A.255    
C Check for error in file pointers                                         READHE1A.256    
       IF(FIXHD(120).NE.START_BLOCK)THEN                                   READHE1A.257    
        CALL POSERROR('column dependent constants',                        READHE1A.258    
     *  START_BLOCK,120,FIXHD(120))                                        READHE1A.259    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.260    
        ICODE=10                                                           READHE1A.261    
        RETURN                                                             READHE1A.262    
       ENDIF                                                               READHE1A.263    
                                                                           READHE1A.264    
      CALL BUFFIN(NFTIN,COLDEPC(1),FIXHD(121)*FIXHD(122),LEN_IO,A)         READHE1A.265    
                                                                           READHE1A.266    
C Check for I/O errors                                                     READHE1A.267    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(121)*FIXHD(122))THEN                READHE1A.268    
        CALL IOERROR('buffer in of column dependent constants',A,LEN_IO,   READHE1A.269    
     *               FIXHD(121)*FIXHD(122))                                READHE1A.270    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.271    
        ICODE=11                                                           READHE1A.272    
        RETURN                                                             READHE1A.273    
       ENDIF                                                               READHE1A.274    
                                                                           READHE1A.275    
       START_BLOCK=START_BLOCK+FIXHD(121)*FIXHD(122)                       READHE1A.276    
                                                                           READHE1A.277    
*IF DEF,MPP                                                                GPB0F305.276    
       IF (mype .EQ. 0) THEN                                               GPB0F305.277    
*ENDIF                                                                     GPB0F305.278    
       WRITE(6,'('' '')')                                                  READHE1A.278    
       WRITE(6,'('' COLUMN DEPENDENT CONSTANTS'')')                        READHE1A.279    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(121)*FIXHD(122)   READHE1A.280    
                                                                           READHE1A.281    
*IF DEF,MPP                                                                GPB0F305.279    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.280    
*ENDIF                                                                     GPB0F305.281    
      ENDIF                                                                READHE1A.282    
                                                                           READHE1A.283    
CL 7. Buffer in constants stored as fields                                 READHE1A.284    
                                                                           READHE1A.285    
      IF(FIXHD(125).GT.0.AND.LEN1_FLDDEPC.NE.0)THEN                        AD221292.7      
                                                                           READHE1A.287    
C Check for error in file pointers                                         READHE1A.288    
       IF(FIXHD(125).NE.START_BLOCK)THEN                                   READHE1A.289    
        CALL POSERROR('fields of constants',                               READHE1A.290    
     *  START_BLOCK,125,FIXHD(125))                                        READHE1A.291    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.292    
        ICODE=12                                                           READHE1A.293    
        RETURN                                                             READHE1A.294    
       ENDIF                                                               READHE1A.295    
                                                                           READHE1A.296    
      CALL BUFFIN(NFTIN,FLDDEPC(1),FIXHD(126)*FIXHD(127),LEN_IO,A)         READHE1A.297    
                                                                           READHE1A.298    
C Check for I/O errors                                                     READHE1A.299    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(126)*FIXHD(127))THEN                READHE1A.300    
        CALL IOERROR('buffer in of field dependent constants',A,LEN_IO,    READHE1A.301    
     *               FIXHD(126)*FIXHD(127))                                READHE1A.302    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.303    
        ICODE=13                                                           READHE1A.304    
        RETURN                                                             READHE1A.305    
       ENDIF                                                               READHE1A.306    
                                                                           READHE1A.307    
       START_BLOCK=START_BLOCK+FIXHD(126)*FIXHD(127)                       READHE1A.308    
                                                                           READHE1A.309    
*IF DEF,MPP                                                                GPB0F305.282    
       IF (mype .EQ. 0) THEN                                               GPB0F305.283    
*ENDIF                                                                     GPB0F305.284    
       WRITE(6,'('' '')')                                                  READHE1A.310    
       WRITE(6,'('' FIELD DEPENDENT CONSTANTS'')')                         READHE1A.311    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(126)*FIXHD(127)   READHE1A.312    
                                                                           READHE1A.313    
*IF DEF,MPP                                                                GPB0F305.285    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.286    
*ENDIF                                                                     GPB0F305.287    
      ENDIF                                                                READHE1A.314    
                                                                           READHE1A.315    
CL 8. Buffer in extra constants                                            READHE1A.316    
                                                                           READHE1A.317    
      IF(FIXHD(130).GT.0.AND.LEN_EXTCNST.NE.0)THEN                         AD221292.8      
                                                                           READHE1A.319    
C Check for error in file pointers                                         READHE1A.320    
       IF(FIXHD(130).NE.START_BLOCK)THEN                                   READHE1A.321    
        CALL POSERROR('extra constants',                                   READHE1A.322    
     *  START_BLOCK,130,FIXHD(130))                                        READHE1A.323    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.324    
        ICODE=14                                                           READHE1A.325    
        RETURN                                                             READHE1A.326    
       ENDIF                                                               READHE1A.327    
                                                                           READHE1A.328    
      CALL BUFFIN(NFTIN,EXTCNST(1),FIXHD(131),LEN_IO,A)                    READHE1A.329    
                                                                           READHE1A.330    
C Check for I/O errors                                                     READHE1A.331    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(131))THEN                           READHE1A.332    
        CALL IOERROR('buffer in extra constants',A,LEN_IO,                 READHE1A.333    
     *               FIXHD(131))                                           READHE1A.334    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.335    
        ICODE=15                                                           READHE1A.336    
        RETURN                                                             READHE1A.337    
       ENDIF                                                               READHE1A.338    
                                                                           READHE1A.339    
       START_BLOCK=START_BLOCK+FIXHD(131)                                  READHE1A.340    
                                                                           READHE1A.341    
*IF DEF,MPP                                                                GPB0F305.288    
       IF (mype .EQ. 0) THEN                                               GPB0F305.289    
*ENDIF                                                                     GPB0F305.290    
       WRITE(6,'('' '')')                                                  READHE1A.342    
       WRITE(6,'('' EXTRA CONSTANTS'')')                                   READHE1A.343    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(131)              READHE1A.344    
                                                                           READHE1A.345    
*IF DEF,MPP                                                                GPB0F305.291    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.292    
*ENDIF                                                                     GPB0F305.293    
      ENDIF                                                                READHE1A.346    
                                                                           READHE1A.347    
CL 9. Buffer in temporary history block                                    READHE1A.348    
                                                                           READHE1A.349    
      IF(FIXHD(135).GT.0.AND.LEN_DUMPHIST.NE.0)THEN                        AD221292.9      
                                                                           READHE1A.351    
C Check for error in file pointers                                         READHE1A.352    
       IF(FIXHD(135).NE.START_BLOCK)THEN                                   READHE1A.353    
        CALL POSERROR('history',                                           READHE1A.354    
     *  START_BLOCK,136,FIXHD(136))                                        READHE1A.355    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.356    
        ICODE=16                                                           READHE1A.357    
        RETURN                                                             READHE1A.358    
       ENDIF                                                               READHE1A.359    
                                                                           READHE1A.360    
      CALL BUFFIN(NFTIN,DUMPHIST(1),FIXHD(136),LEN_IO,A)                   READHE1A.361    
                                                                           READHE1A.362    
C Check for I/O errors                                                     READHE1A.363    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(136))THEN                           READHE1A.364    
        CALL IOERROR('buffer in of history file',A,LEN_IO,                 READHE1A.365    
     *               FIXHD(136))                                           READHE1A.366    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.367    
        ICODE=17                                                           READHE1A.368    
        RETURN                                                             READHE1A.369    
       ENDIF                                                               READHE1A.370    
                                                                           READHE1A.371    
       START_BLOCK=START_BLOCK+FIXHD(136)                                  READHE1A.372    
                                                                           READHE1A.373    
*IF DEF,MPP                                                                GPB0F305.294    
       IF (mype .EQ. 0) THEN                                               GPB0F305.295    
*ENDIF                                                                     GPB0F305.296    
       WRITE(6,'('' '')')                                                  READHE1A.374    
       WRITE(6,'('' TEMPORARY HISTORY BLOCK'')')                           READHE1A.375    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(136)              READHE1A.376    
                                                                           READHE1A.377    
*IF DEF,MPP                                                                GPB0F305.297    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.298    
*ENDIF                                                                     GPB0F305.299    
      ENDIF                                                                READHE1A.378    
                                                                           READHE1A.379    
CL 10. Buffer in compressed field index1                                   READHE1A.380    
                                                                           READHE1A.381    
      IF(FIXHD(140).GT.0.AND.LEN_CFI2.NE.0)THEN                            AD221292.10     
                                                                           READHE1A.383    
C Check for error in file pointers                                         READHE1A.384    
                                                                           READHE1A.385    
       IF(FIXHD(140).NE.START_BLOCK)THEN                                   READHE1A.386    
        CALL POSERROR('compressed field index1',                           READHE1A.387    
     *  START_BLOCK,140,FIXHD(140))                                        READHE1A.388    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.389    
        ICODE=18                                                           READHE1A.390    
        RETURN                                                             READHE1A.391    
       ENDIF                                                               READHE1A.392    
                                                                           READHE1A.393    
      CALL BUFFIN(NFTIN,CFI1(1),FIXHD(141),LEN_IO,A)                       READHE1A.394    
                                                                           READHE1A.395    
C Check for I/O errors                                                     READHE1A.396    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(141))THEN                           READHE1A.397    
        CALL IOERROR('buffer in of compressed index1',A,LEN_IO,            READHE1A.398    
     *               FIXHD(141))                                           READHE1A.399    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.400    
        ICODE=19                                                           READHE1A.401    
        RETURN                                                             READHE1A.402    
       ENDIF                                                               READHE1A.403    
                                                                           READHE1A.404    
       START_BLOCK=START_BLOCK+FIXHD(141)                                  READHE1A.405    
                                                                           READHE1A.406    
*IF DEF,MPP                                                                GPB0F305.300    
       IF (mype .EQ. 0) THEN                                               GPB0F305.301    
*ENDIF                                                                     GPB0F305.302    
       WRITE(6,'('' '')')                                                  READHE1A.407    
       WRITE(6,'('' COMPRESSED FIELD INDEX NO 1'')')                       READHE1A.408    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(141)              READHE1A.409    
                                                                           READHE1A.410    
*IF DEF,MPP                                                                GPB0F305.303    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.304    
*ENDIF                                                                     GPB0F305.305    
      ENDIF                                                                READHE1A.411    
                                                                           READHE1A.412    
CL 11. Buffer in compressed field index2                                   READHE1A.413    
                                                                           READHE1A.414    
      IF(FIXHD(142).GT.0.AND.LEN_CFI2.NE.0)THEN                            AD221292.11     
                                                                           READHE1A.416    
C Check for error in file pointers                                         READHE1A.417    
       IF(FIXHD(142).NE.START_BLOCK)THEN                                   READHE1A.418    
        CALL POSERROR('compressed field index2',                           READHE1A.419    
     *  START_BLOCK,142,FIXHD(142))                                        READHE1A.420    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.421    
        ICODE=20                                                           READHE1A.422    
        RETURN                                                             READHE1A.423    
       ENDIF                                                               READHE1A.424    
                                                                           READHE1A.425    
      CALL BUFFIN(NFTIN,CFI2(1),FIXHD(143),LEN_IO,A)                       READHE1A.426    
                                                                           READHE1A.427    
C Check for I/O errors                                                     READHE1A.428    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(143))THEN                           READHE1A.429    
       CALL IOERROR('buffer in of compressed index2',A,LEN_IO,             READHE1A.430    
     *               FIXHD(143))                                           READHE1A.431    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.432    
        ICODE=21                                                           READHE1A.433    
        RETURN                                                             READHE1A.434    
       ENDIF                                                               READHE1A.435    
                                                                           READHE1A.436    
       START_BLOCK=START_BLOCK+FIXHD(143)                                  READHE1A.437    
                                                                           READHE1A.438    
*IF DEF,MPP                                                                GPB0F305.306    
       IF (mype .EQ. 0) THEN                                               GPB0F305.307    
*ENDIF                                                                     GPB0F305.308    
       WRITE(6,'('' '')')                                                  READHE1A.439    
       WRITE(6,'('' COMPRESSED FIELD INDEX NO 2'')')                       READHE1A.440    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(143)              READHE1A.441    
                                                                           READHE1A.442    
*IF DEF,MPP                                                                GPB0F305.309    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.310    
*ENDIF                                                                     GPB0F305.311    
      ENDIF                                                                READHE1A.443    
                                                                           READHE1A.444    
CL 12. Buffer in compressed field index3                                   READHE1A.445    
                                                                           READHE1A.446    
      IF(FIXHD(144).GT.0.AND.LEN_CFI3.NE.0)THEN                            AD221292.12     
                                                                           READHE1A.448    
C Check for error in file pointers                                         READHE1A.449    
       IF(FIXHD(144).NE.START_BLOCK)THEN                                   READHE1A.450    
        CALL POSERROR('compressed field index3',                           READHE1A.451    
     *  START_BLOCK,144,FIXHD(144))                                        READHE1A.452    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.453    
        ICODE=22                                                           READHE1A.454    
        RETURN                                                             READHE1A.455    
       ENDIF                                                               READHE1A.456    
                                                                           READHE1A.457    
      CALL BUFFIN(NFTIN,CFI3(1),FIXHD(145),LEN_IO,A)                       READHE1A.458    
                                                                           READHE1A.459    
C Check for I/O errors                                                     READHE1A.460    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(145))THEN                           READHE1A.461    
        CALL IOERROR('buffer in of compressed index3',A,LEN_IO,            READHE1A.462    
     *               FIXHD(145))                                           READHE1A.463    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.464    
        ICODE=23                                                           READHE1A.465    
        RETURN                                                             READHE1A.466    
       ENDIF                                                               READHE1A.467    
                                                                           READHE1A.468    
       START_BLOCK=START_BLOCK+FIXHD(145)                                  READHE1A.469    
                                                                           READHE1A.470    
*IF DEF,MPP                                                                GPB0F305.312    
       IF (mype .EQ. 0) THEN                                               GPB0F305.313    
*ENDIF                                                                     GPB0F305.314    
       WRITE(6,'('' '')')                                                  READHE1A.471    
       WRITE(6,'('' COMPRESSED FIELD INDEX NO 3'')')                       READHE1A.472    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(145)              READHE1A.473    
                                                                           READHE1A.474    
*IF DEF,MPP                                                                GPB0F305.315    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.316    
*ENDIF                                                                     GPB0F305.317    
      ENDIF                                                                READHE1A.475    
                                                                           READHE1A.476    
CL 13. Buffer in lookup table                                              READHE1A.477    
                                                                           READHE1A.478    
      IF(FIXHD(150).GT.0)THEN                                              READHE1A.479    
                                                                           READHE1A.480    
C Supress checking if not full dump                                        AD221292.13     
      IF(LEN_DUMPHIST.NE.0)THEN                                            AD221292.14     
C Check for error in file pointers                                         READHE1A.481    
       IF(FIXHD(150).NE.START_BLOCK)THEN                                   READHE1A.482    
        CALL POSERROR('lookup table',                                      READHE1A.483    
     *  START_BLOCK,150,FIXHD(150))                                        READHE1A.484    
        CMESSAGE='READHEAD: Addressing conflict'                           READHE1A.485    
        ICODE=24                                                           READHE1A.486    
        RETURN                                                             READHE1A.487    
       ENDIF                                                               READHE1A.488    
      ENDIF                                                                AD221292.15     
                                                                           READHE1A.489    
C Move to start of Look Up Table                                           @DYALLOC.3124   
      CALL SETPOS(NFTIN,FIXHD(150)-1,ICODE)                                GTD0F400.125    
                                                                           @DYALLOC.3125   
C Read in fields from LOOKUP table                                         @DYALLOC.3126   
      CALL BUFFIN(NFTIN,LOOKUP(1,1),FIXHD(151)*FIXHD(152),LEN_IO,A)        READHE1A.490    
                                                                           READHE1A.491    
C Check for I/O errors                                                     READHE1A.492    
       IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(151)*FIXHD(152))THEN                READHE1A.493    
        CALL IOERROR('buffer in of lookup table',A,LEN_IO,                 READHE1A.494    
     *               FIXHD(151)*FIXHD(152))                                READHE1A.495    
        CMESSAGE='READHEAD: I/O error'                                     READHE1A.496    
        ICODE=25                                                           READHE1A.497    
        RETURN                                                             READHE1A.498    
       ENDIF                                                               READHE1A.499    
                                                                           READHE1A.500    
C Point to start of data section ( Use original FIXHD(152) )               @DYALLOC.3127   
       START_BLOCK=START_BLOCK+FIXHD(151)*FIXHD_152                        @DYALLOC.3128   
                                                                           READHE1A.502    
*IF DEF,MPP                                                                GPB0F305.318    
       IF (mype .EQ. 0) THEN                                               GPB0F305.319    
*ENDIF                                                                     GPB0F305.320    
       WRITE(6,'('' '')')                                                  READHE1A.503    
       WRITE(6,'('' LOOKUP TABLE'')')                                      READHE1A.504    
       WRITE(6,'('' '',I8,'' 64-bit words long'')')FIXHD(151)*FIXHD(152)   READHE1A.505    
                                                                           READHE1A.506    
       IF (FIXHD(152).LT.FIXHD_152) THEN                                   @DYALLOC.3129   
         WRITE(6,'('' '')')                                                @DYALLOC.3130   
         WRITE(6,'('' '',I6,'' Entries in Look Up Table.'')') FIXHD_152    @DYALLOC.3131   
         WRITE(6,'('' '',I6,'' Entries read in.'')') FIXHD(152)            @DYALLOC.3132   
       ENDIF                                                               @DYALLOC.3133   
                                                                           READHE1A.507    
*IF DEF,MPP                                                                GPB0F305.321    
      ENDIF ! mype .EQ. 0                                                  GPB0F305.322    
*ENDIF                                                                     GPB0F305.323    
!---------------------------------------------------------------           UDG7F400.428    
! Reset LOOKUP(45) if not set                                              UDG7F400.429    
!---------------------------------------------------------------           UDG7F400.430    
                                                                           UDG7F400.431    
        DO K=1,LEN2_LOOKUP                                                 UDG7F400.432    
          IF(LOOKUP(45,K).EQ.0.OR.LOOKUP(45,K).EQ.IMDI)THEN                UDG7F400.433    
                                                                           UDG7F400.434    
!Section 0: Prognostic fields.                                             UDG7F400.435    
          IF(LOOKUP(42,K).LE.100.OR.                                       UDG7F400.436    
     &      (LOOKUP(42,K).GE.200.AND.LOOKUP(42,K).LE.205))THEN             UDG7F400.437    
            LOOKUP(45,K)=1                                                 UDG7F400.438    
                                                                           UDG7F400.439    
          ELSE IF((LOOKUP(42,K).GT.100.AND.LOOKUP(42,K).LE.176).OR.        UDG7F400.440    
     &            (LOOKUP(42,K).GE.180.AND.LOOKUP(42,K).LT.200))THEN       UDG7F400.441    
            LOOKUP(45,K)=2                                                 UDG7F400.442    
                                                                           UDG7F400.443    
          ELSE IF((LOOKUP(42,K).GE.177.AND.LOOKUP(42,K).LE.179).OR.        UDG7F400.444    
     &            (LOOKUP(42,K).GE.210.AND.LOOKUP(42,K).LE.212))THEN       UDG7F400.445    
            LOOKUP(45,K)=3                                                 UDG7F400.446    
                                                                           UDG7F400.447    
! Sections 1 - 99: Diagnostic fields                                       UDG7F400.448    
          ELSE IF(LOOKUP(42,K).GE.1000.AND.LOOKUP(42,K).LE.29999)THEN      UDG7F400.449    
            IF((LOOKUP(42,K).GE.21177.AND.LOOKUP(42,K).LE.21179).OR.       UDG7F400.450    
     &         (LOOKUP(42,K).GE.21225.AND.LOOKUP(42,K).LE.21227).OR.       UDG7F400.451    
     &         (LOOKUP(42,K).GE.22177.AND.LOOKUP(42,K).LE.22179).OR.       UDG7F400.452    
     &         (LOOKUP(42,K).GE.22225.AND.LOOKUP(42,K).LE.22227).OR.       UDG7F400.453    
     &         (LOOKUP(42,K).GE.23177.AND.LOOKUP(42,K).LE.23179).OR.       UDG7F400.454    
     &         (LOOKUP(42,K).GE.23225.AND.LOOKUP(42,K).LE.23227).OR.       UDG7F400.455    
     &         (LOOKUP(42,K).GE.24177.AND.LOOKUP(42,K).LE.24179).OR.       UDG7F400.456    
     &         (LOOKUP(42,K).GE.24225.AND.LOOKUP(42,K).LE.24227))THEN      UDG7F400.457    
              LOOKUP(45,K)=3        !Slab diagnostic                       UDG7F400.458    
                                                                           UDG7F400.459    
            ELSE                                                           UDG7F400.460    
              LOOKUP(45,K)=1        !Atmosphere diagnostic                 UDG7F400.461    
                                                                           UDG7F400.462    
            END IF                                                         UDG7F400.463    
                                                                           UDG7F400.464    
          ELSE IF(LOOKUP(42,K).GE.30000.AND.LOOKUP(42,K).LE.99999)THEN     UDG7F400.465    
            IF(LOOKUP(42,K).GE.40000.AND.LOOKUP(42,K).LE.40999)THEN        UDG7F400.466    
              LOOKUP(45,K)=3        !Slab diagnostic                       UDG7F400.467    
                                                                           UDG7F400.468    
            ELSE                                                           UDG7F400.469    
              LOOKUP(45,K)=2        !Ocean diagnostic                      UDG7F400.470    
                                                                           UDG7F400.471    
            END IF                                                         UDG7F400.472    
                                                                           UDG7F400.473    
          ELSE                                                             UDG7F400.474    
            WRITE(6,*) 'WARNING: User defined field found - ',             UDG7F400.475    
     &                 'STASH code : ', LOOKUP(42,K)                       UDG7F400.476    
            WRITE(6,*) ' Internal model number can not be defined.'        UDG7F400.477    
            WRITE(6,*) ' Setting internal model number to atmosphere.'     UDG7F400.478    
            LOOKUP(45,K)=1                                                 UDG7F400.479    
                                                                           UDG7F400.480    
          ENDIF                                                            UDG7F400.481    
                                                                           UDG7F400.482    
        ENDIF                                                              UDG7F400.483    
                                                                           UDG7F400.484    
      ENDDO                                                                UDG7F400.485    
C---------------------------------------------------------------           READHE1A.508    
C  Reset LOOKUP headers if dump created earlier than vn2.8                 READHE1A.509    
C---------------------------------------------------------------           READHE1A.510    
                                                                           READHE1A.511    
      IF(FIXHD(12).LT.208)THEN                                             READHE1A.512    
        CALL NEWPACK(LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP)                       READHE1A.513    
      ENDIF                                                                READHE1A.514    
                                                                           READHE1A.515    
C Check LOOKUP for consistency with PARAMETER statements                   READHE1A.516    
      IF(LOOKUP(LBNREC,1).EQ.0 . OR.                                       AD060593.8      
C        Prog lookups in dump before vn3.2:                                AD060593.9      
     *  (LOOKUP(LBNREC,1).EQ.IMDI. AND. FIXHD(12).LE.301)) THEN            AD060593.10     
        IF(LEN_DATA.NE.IMDI)THEN                                           READHE1A.517    
      CALL CHK_LOOK(FIXHD,LOOKUP,LEN1_LOOKUP,LEN_DATA,                     GDG0F401.1251   
*CALL ARGPPX                                                               GDG0F401.1252   
     &              ICODE,CMESSAGE)                                        GDG0F401.1253   
        ENDIF                                                              READHE1A.520    
      ENDIF                                                                AD060593.11     
                                                                           READHE1A.521    
      ENDIF                                                                READHE1A.522    
                                                                           READHE1A.523    
      RETURN                                                               READHE1A.524    
      END                                                                  READHE1A.525    
*ENDIF                                                                     READHE1A.526