*IF DEF,RECON                                                              SETFHEA1.2      
C ******************************COPYRIGHT******************************    GTS2F400.8551   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8552   
C                                                                          GTS2F400.8553   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8554   
C restrictions as set forth in the contract.                               GTS2F400.8555   
C                                                                          GTS2F400.8556   
C                Meteorological Office                                     GTS2F400.8557   
C                London Road                                               GTS2F400.8558   
C                BRACKNELL                                                 GTS2F400.8559   
C                Berkshire UK                                              GTS2F400.8560   
C                RG12 2SZ                                                  GTS2F400.8561   
C                                                                          GTS2F400.8562   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8563   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8564   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8565   
C Modelling at the above address.                                          GTS2F400.8566   
C ******************************COPYRIGHT******************************    GTS2F400.8567   
C                                                                          GTS2F400.8568   
CLL  SUBROUTINE SETFHEAD----------------------------------------           SETFHEA1.3      
CLL                                                                        SETFHEA1.4      
CLL  Purpose: Initialises fixed length header.                             SETFHEA1.5      
CLL                                                                        SETFHEA1.6      
CLL  Written by A. Dickinson                                               SETFHEA1.7      
CLL                                                                        SETFHEA1.8      
CLL  Model            Modification history from model version 3.0:         SETFHEA1.9      
CLL version  date                                                          SETFHEA1.10     
CLL                                                                        SETFHEA1.11     
CLL   3.1  10/02/93    Date and time calls made portable                   AD100293.1      
CLL                    Author: A. Dickinson    Reviewer: F. Rawlins        AD100293.2      
CLL   3.4  05/10/94    Add no of prognostic fields to FIXHD(153)           GDR2F304.77     
CLL                    for dumps. D.Robinson   Reviewer: D. Goddard        GDR2F304.78     
!     4.4  25/04/97    Changes to read well-formed records if the          GBC5F404.436    
!                      input dumpfile is in that format (almost PP file    GBC5F404.437    
!                      format)                                             GBC5F404.438    
!                        Author: Bob Carruthers, Cray Research             GBC5F404.439    
CLL                                                                        AD100293.3      
CLL  Logical components covered: S1                                        SETFHEA1.12     
CLL                                                                        SETFHEA1.13     
CLL  Documentation: UM Documentation Paper F3                              SETFHEA1.14     
CLL------------------------------------------------------------            SETFHEA1.15     
C*L Arguments:-------------------------------------------------            SETFHEA1.16     

      SUBROUTINE SETFHEAD(FIXHD                                             2,1SETFHEA1.17     
     *,LEN_FIXHD                                                           SETFHEA1.18     
     *,LEN_INTHD                                                           SETFHEA1.19     
     *,LEN_REALHD                                                          SETFHEA1.20     
     *,LEN1_LEVDEPC,LEN2_LEVDEPC                                           SETFHEA1.21     
     *,LEN1_ROWDEPC,LEN2_ROWDEPC                                           SETFHEA1.22     
     *,LEN1_COLDEPC,LEN2_COLDEPC                                           SETFHEA1.23     
     *,LEN1_FLDDEPC,LEN2_FLDDEPC                                           SETFHEA1.24     
     *,LEN_EXTCNST                                                         SETFHEA1.25     
     *,LEN_DUMPHIST                                                        SETFHEA1.26     
     *,LEN_CFI1,LEN_CFI2,LEN_CFI3                                          SETFHEA1.27     
     *,LEN1_LOOKUP,LEN2_LOOKUP                                             SETFHEA1.28     
     *,LEN_DATA                                                            SETFHEA1.29     
     *,VDAYNUM                                                             SETFHEA1.30     
     *,VYEAR,VMONTH,VDAY,VHOUR,VMINUTE                                     SETFHEA1.31     
     *,IDAYNUM                                                             SETFHEA1.32     
     *,IYEAR,IMONTH,IDAY,IHOUR,IMINUTE                                     SETFHEA1.33     
     *,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11                                  SETFHEA1.34     
     *,IPOS)                                                               SETFHEA1.35     
                                                                           SETFHEA1.36     
      IMPLICIT NONE                                                        SETFHEA1.37     
                                                                           SETFHEA1.38     
      INTEGER                                                              SETFHEA1.39     
     * LEN_FIXHD                                                           SETFHEA1.40     
     *,LEN_INTHD                                                           SETFHEA1.41     
     *,LEN_REALHD                                                          SETFHEA1.42     
     *,LEN1_LEVDEPC,LEN2_LEVDEPC                                           SETFHEA1.43     
     *,LEN1_ROWDEPC,LEN2_ROWDEPC                                           SETFHEA1.44     
     *,LEN1_COLDEPC,LEN2_COLDEPC                                           SETFHEA1.45     
     *,LEN1_FLDDEPC,LEN2_FLDDEPC                                           SETFHEA1.46     
     *,LEN_EXTCNST                                                         SETFHEA1.47     
     *,LEN_DUMPHIST                                                        SETFHEA1.48     
     *,LEN_CFI1                                                            SETFHEA1.49     
     *,LEN_CFI2                                                            SETFHEA1.50     
     *,LEN_CFI3                                                            SETFHEA1.51     
     *,LEN1_LOOKUP,LEN2_LOOKUP                                             SETFHEA1.52     
     *,LEN_DATA                                                            SETFHEA1.53     
     *,VDAYNUM                                                             SETFHEA1.54     
     *,VYEAR            !                                                  SETFHEA1.55     
     *,VMONTH           !                                                  SETFHEA1.56     
     *,VDAY             !>IN Verification date & time                      SETFHEA1.57     
     *,VHOUR            !                                                  SETFHEA1.58     
     *,VMINUTE          !                                                  SETFHEA1.59     
     *,IDAYNUM                                                             SETFHEA1.60     
     *,IYEAR            !                                                  SETFHEA1.61     
     *,IMONTH           !                                                  SETFHEA1.62     
     *,IDAY             !>IN Initial date & time                           SETFHEA1.63     
     *,IHOUR            !                                                  SETFHEA1.64     
     *,IMINUTE          !                                                  SETFHEA1.65     
     *,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11                                  SETFHEA1.66     
     *,IPOS             !OUT Start address of data in UM dump              SETFHEA1.67     
                                                                           SETFHEA1.68     
      INTEGER                                                              SETFHEA1.69     
     * FIXHD(LEN_FIXHD)                                                    SETFHEA1.70     
C*-------------------------------------------------------------            SETFHEA1.71     
                                                                           SETFHEA1.72     
      INTEGER I,LLLL                                                       SETFHEA1.73     
                                                                           SETFHEA1.81     
*CALL C_MDI                                                                SETFHEA1.82     
*CALL CNTL_IO                                                              GBC5F404.440    
                                                                           SETFHEA1.83     
C--------------------------------------------------------------            SETFHEA1.84     
C Initialise fixed length header                                           SETFHEA1.85     
C--------------------------------------------------------------            SETFHEA1.86     
                                                                           SETFHEA1.87     
      DO I=1,LEN_FIXHD                                                     SETFHEA1.88     
        FIXHD(I)=IMDI                                                      SETFHEA1.89     
      ENDDO                                                                SETFHEA1.90     
                                                                           SETFHEA1.91     
      CALL DATE_TIME(FIXHD(35),FIXHD(36),FIXHD(37)                         AD100293.4      
     *,FIXHD(38),FIXHD(39),FIXHD(40))                                      AD100293.5      
                                                                           SETFHEA1.107    
C Initial time                                                             SETFHEA1.108    
      FIXHD(21)=IYEAR                                                      SETFHEA1.109    
      FIXHD(22)=IMONTH                                                     SETFHEA1.110    
      FIXHD(23)=IDAY                                                       SETFHEA1.111    
      FIXHD(24)=IHOUR                                                      SETFHEA1.112    
      FIXHD(25)=IMINUTE                                                    SETFHEA1.113    
      FIXHD(26)=0                                                          SETFHEA1.114    
      FIXHD(27)=IDAYNUM                                                    SETFHEA1.115    
                                                                           SETFHEA1.116    
C Validity time                                                            SETFHEA1.117    
      FIXHD(28)=VYEAR                                                      SETFHEA1.118    
      FIXHD(29)=VMONTH                                                     SETFHEA1.119    
      FIXHD(30)=VDAY                                                       SETFHEA1.120    
      FIXHD(31)=VHOUR                                                      SETFHEA1.121    
      FIXHD(32)=VMINUTE                                                    SETFHEA1.122    
      FIXHD(33)=0                                                          SETFHEA1.123    
      FIXHD(34)=VDAYNUM                                                    SETFHEA1.124    
                                                                           SETFHEA1.125    
C Dump version number                                                      SETFHEA1.126    
      FIXHD(1)=F1                                                          SETFHEA1.127    
c--if the version is less than 16, change it                               GBC5F404.441    
c      if(fixhd(1).le.15) fixhd(1)=16                                      GBC5F404.442    
C Atmosphere or Ocean                                                      SETFHEA1.128    
      FIXHD(2)=F2                                                          SETFHEA1.129    
C Vertical coord type                                                      SETFHEA1.130    
      FIXHD(3)=F3                                                          SETFHEA1.131    
C Horizontal grid type                                                     SETFHEA1.132    
      FIXHD(4)=F4                                                          SETFHEA1.133    
C Instantaneous data                                                       SETFHEA1.134    
      FIXHD(5)=F5                                                          SETFHEA1.135    
C                                                                          SETFHEA1.136    
      FIXHD(6)=F6                                                          SETFHEA1.137    
C                                                                          SETFHEA1.138    
      FIXHD(7)=F7                                                          SETFHEA1.139    
C Gregorian calendar                                                       SETFHEA1.140    
      FIXHD(8)=F8                                                          SETFHEA1.141    
C Grid                                                                     SETFHEA1.142    
      FIXHD(9)=F9                                                          SETFHEA1.143    
C                                                                          SETFHEA1.144    
      FIXHD(10)=F10                                                        SETFHEA1.145    
C Projection number                                                        SETFHEA1.146    
      FIXHD(11)=F11                                                        SETFHEA1.147    
                                                                           SETFHEA1.148    
C Integer constants                                                        SETFHEA1.149    
      IPOS=LEN_FIXHD+1                                                     SETFHEA1.150    
      FIXHD(100)=IPOS                                                      SETFHEA1.151    
      FIXHD(101)=LEN_INTHD                                                 SETFHEA1.152    
                                                                           SETFHEA1.153    
C Real constants                                                           SETFHEA1.154    
      IPOS=IPOS+FIXHD(101)                                                 SETFHEA1.155    
      FIXHD(105)=IPOS                                                      SETFHEA1.156    
      FIXHD(106)=LEN_REALHD                                                SETFHEA1.157    
                                                                           SETFHEA1.158    
C Level dependent constants                                                SETFHEA1.159    
      IPOS=IPOS+FIXHD(106)                                                 SETFHEA1.160    
      LLLL=LEN1_LEVDEPC*LEN2_LEVDEPC                                       SETFHEA1.161    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.162    
       FIXHD(110)=IMDI                                                     SETFHEA1.163    
       FIXHD(111)=IMDI                                                     SETFHEA1.164    
       FIXHD(112)=IMDI                                                     SETFHEA1.165    
      ELSE                                                                 SETFHEA1.166    
       FIXHD(110)=IPOS                                                     SETFHEA1.167    
       FIXHD(111)=LEN1_LEVDEPC                                             SETFHEA1.168    
       FIXHD(112)=LEN2_LEVDEPC                                             SETFHEA1.169    
      ENDIF                                                                SETFHEA1.170    
                                                                           SETFHEA1.171    
C Row dependent constants                                                  SETFHEA1.172    
      IPOS=IPOS+LLLL                                                       SETFHEA1.173    
      LLLL=LEN2_ROWDEPC*LEN1_ROWDEPC                                       SETFHEA1.174    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.175    
       FIXHD(115)=IMDI                                                     SETFHEA1.176    
       FIXHD(116)=IMDI                                                     SETFHEA1.177    
       FIXHD(117)=IMDI                                                     SETFHEA1.178    
      ELSE                                                                 SETFHEA1.179    
       FIXHD(115)=IPOS                                                     SETFHEA1.180    
       FIXHD(116)=LEN1_ROWDEPC                                             SETFHEA1.181    
       FIXHD(117)=LEN2_ROWDEPC                                             SETFHEA1.182    
      ENDIF                                                                SETFHEA1.183    
                                                                           SETFHEA1.184    
C Column dependent constants                                               SETFHEA1.185    
      IPOS=IPOS+LLLL                                                       SETFHEA1.186    
      LLLL=LEN1_COLDEPC*LEN2_COLDEPC                                       SETFHEA1.187    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.188    
       FIXHD(120)=IMDI                                                     SETFHEA1.189    
       FIXHD(121)=IMDI                                                     SETFHEA1.190    
       FIXHD(122)=IMDI                                                     SETFHEA1.191    
      ELSE                                                                 SETFHEA1.192    
       FIXHD(120)=IPOS                                                     SETFHEA1.193    
       FIXHD(121)=LEN1_COLDEPC                                             SETFHEA1.194    
       FIXHD(122)=LEN2_COLDEPC                                             SETFHEA1.195    
      ENDIF                                                                SETFHEA1.196    
                                                                           SETFHEA1.197    
C Fields of constants                                                      SETFHEA1.198    
      IPOS=IPOS+LLLL                                                       SETFHEA1.199    
      LLLL=LEN1_FLDDEPC*LEN2_FLDDEPC                                       SETFHEA1.200    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.201    
       FIXHD(125)=IMDI                                                     SETFHEA1.202    
       FIXHD(126)=IMDI                                                     SETFHEA1.203    
       FIXHD(127)=IMDI                                                     SETFHEA1.204    
      ELSE                                                                 SETFHEA1.205    
       FIXHD(125)=IPOS                                                     SETFHEA1.206    
       FIXHD(126)=LEN1_FLDDEPC                                             SETFHEA1.207    
       FIXHD(127)=LEN2_FLDDEPC                                             SETFHEA1.208    
      ENDIF                                                                SETFHEA1.209    
      FIXHD(128)=IMDI                                                      SETFHEA1.210    
      FIXHD(129)=IMDI                                                      SETFHEA1.211    
                                                                           SETFHEA1.212    
C Extra constants                                                          SETFHEA1.213    
      IPOS=IPOS+LLLL                                                       SETFHEA1.214    
      LLLL=LEN_EXTCNST                                                     SETFHEA1.215    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.216    
       FIXHD(130)=IMDI                                                     SETFHEA1.217    
       FIXHD(131)=IMDI                                                     SETFHEA1.218    
      ELSE                                                                 SETFHEA1.219    
       FIXHD(130)=IPOS                                                     SETFHEA1.220    
       FIXHD(131)=LEN_EXTCNST                                              SETFHEA1.221    
      ENDIF                                                                SETFHEA1.222    
                                                                           SETFHEA1.223    
C Temp history record                                                      SETFHEA1.224    
      IPOS=IPOS+LLLL                                                       SETFHEA1.225    
      LLLL=LEN_DUMPHIST                                                    SETFHEA1.226    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.227    
       FIXHD(135)=IMDI                                                     SETFHEA1.228    
       FIXHD(136)=IMDI                                                     SETFHEA1.229    
      ELSE                                                                 SETFHEA1.230    
       FIXHD(135)=IPOS                                                     SETFHEA1.231    
       FIXHD(136)=LEN_DUMPHIST                                             SETFHEA1.232    
      ENDIF                                                                SETFHEA1.233    
                                                                           SETFHEA1.234    
C Compress index 1                                                         SETFHEA1.235    
      IPOS=IPOS+LLLL                                                       SETFHEA1.236    
      LLLL=LEN_CFI1                                                        SETFHEA1.237    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.238    
        FIXHD(140)=IMDI                                                    SETFHEA1.239    
        FIXHD(141)=IMDI                                                    SETFHEA1.240    
      ELSE                                                                 SETFHEA1.241    
        FIXHD(140)=IPOS                                                    SETFHEA1.242    
        FIXHD(141)=LEN_CFI1                                                SETFHEA1.243    
      ENDIF                                                                SETFHEA1.244    
C Compress index 2                                                         SETFHEA1.245    
      IPOS=IPOS+LLLL                                                       SETFHEA1.246    
      LLLL=LEN_CFI2                                                        SETFHEA1.247    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.248    
        FIXHD(142)=IMDI                                                    SETFHEA1.249    
        FIXHD(143)=IMDI                                                    SETFHEA1.250    
      ELSE                                                                 SETFHEA1.251    
        FIXHD(142)=IPOS                                                    SETFHEA1.252    
        FIXHD(143)=LEN_CFI2                                                SETFHEA1.253    
      ENDIF                                                                SETFHEA1.254    
C Compress index 3                                                         SETFHEA1.255    
      IPOS=IPOS+LLLL                                                       SETFHEA1.256    
      LLLL=LEN_CFI3                                                        SETFHEA1.257    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.258    
        FIXHD(144)=IMDI                                                    SETFHEA1.259    
        FIXHD(145)=IMDI                                                    SETFHEA1.260    
      ELSE                                                                 SETFHEA1.261    
        FIXHD(144)=IPOS                                                    SETFHEA1.262    
        FIXHD(145)=LEN_CFI3                                                SETFHEA1.263    
      ENDIF                                                                SETFHEA1.264    
                                                                           SETFHEA1.265    
C LOOKUP                                                                   SETFHEA1.266    
      IPOS=IPOS+LLLL                                                       SETFHEA1.267    
      LLLL=LEN1_LOOKUP*LEN2_LOOKUP                                         SETFHEA1.268    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.269    
       FIXHD(150)=IMDI                                                     SETFHEA1.270    
       FIXHD(151)=IMDI                                                     SETFHEA1.271    
       FIXHD(152)=IMDI                                                     SETFHEA1.272    
      ELSE                                                                 SETFHEA1.273    
       FIXHD(150)=IPOS                                                     SETFHEA1.274    
       FIXHD(151)=LEN1_LOOKUP                                              SETFHEA1.275    
       FIXHD(152)=LEN2_LOOKUP                                              SETFHEA1.276    
C      For dumps, add no of prognostic fields to FIXHD                     GDR2F304.79     
C      In Reconfiguration LEN2_LOOKUP = No of prognostic fields            GDR2F304.80     
       IF (FIXHD(5).EQ.1) THEN                                             GDR2F304.81     
         FIXHD(153) = LEN2_LOOKUP                                          GDR2F304.82     
       ENDIF                                                               GDR2F304.83     
      ENDIF                                                                SETFHEA1.277    
                                                                           SETFHEA1.278    
C Model data                                                               SETFHEA1.279    
      IPOS=IPOS+LLLL                                                       SETFHEA1.280    
      LLLL=LEN_DATA                                                        SETFHEA1.281    
      IF(LLLL.EQ.0)THEN                                                    SETFHEA1.282    
       FIXHD(160)=IMDI                                                     SETFHEA1.283    
       FIXHD(161)=IMDI                                                     SETFHEA1.284    
      ELSE                                                                 SETFHEA1.285    
       fixhd(160)=    ! make sure the data starts on a sector bndry        GBC5F404.443    
     2  ((ipos+um_sector_size-1)/um_sector_size)*um_sector_size+1          GBC5F404.444    
       FIXHD(161)=LEN_DATA                                                 SETFHEA1.287    
      ENDIF                                                                SETFHEA1.288    
                                                                           SETFHEA1.289    
      RETURN                                                               SETFHEA1.290    
      END                                                                  SETFHEA1.291    
                                                                           SETFHEA1.292    
*ENDIF                                                                     SETFHEA1.293