*IF DEF,CONVIEEE,OR,DEF,CONVPP,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP      UJG4F401.1      
C ******************************COPYRIGHT******************************    GTS2F400.5833   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.5834   
C                                                                          GTS2F400.5835   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.5836   
C restrictions as set forth in the contract.                               GTS2F400.5837   
C                                                                          GTS2F400.5838   
C                Meteorological Office                                     GTS2F400.5839   
C                London Road                                               GTS2F400.5840   
C                BRACKNELL                                                 GTS2F400.5841   
C                Berkshire UK                                              GTS2F400.5842   
C                RG12 2SZ                                                  GTS2F400.5843   
C                                                                          GTS2F400.5844   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.5845   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.5846   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.5847   
C Modelling at the above address.                                          GTS2F400.5848   
C ******************************COPYRIGHT******************************    GTS2F400.5849   
C                                                                          GTS2F400.5850   
CLL  Subroutine FIND_MAX_FIELD_SIZE ---------------------------------      MAXFLD1.3      
CLL                                                                        MAXFLD1.4      
CLL  Purpose:  Reads in and searches LOOKUP header for maximum field       MAXFLD1.5      
CLL            size                                                        MAXFLD1.6      
CLL                                                                        MAXFLD1.7      
CLL  Written by A. Dickinson                                               MAXFLD1.8      
CLL                                                                        MAXFLD1.9      
CLL  Model            Modification history:                                MAXFLD1.10     
CLL version  Date                                                          MAXFLD1.11     
CLL  4.3      17/04/97    Tidy DEFS and code so that blank source is not   GEX1F403.1      
CLL                        produced (A. Brady)                             GEX1F403.2      
!    4.4      25/04/97    Changes to make the addresses well-formed for    GBC5F404.180    
!                         Cray I/O.                                        GBC5F404.181    
!                           Author: Bob Carruthers, Cray Research          GBC5F404.182    
CLL                                                                        MAXFLD1.12     
CLL  Logical component number: E5                                          MAXFLD1.13     
CLL                                                                        MAXFLD1.14     
CLL  External Documentation: None                                          MAXFLD1.15     
CLL                                                                        MAXFLD1.16     
CLLEND                                                                     MAXFLD1.17     
C*L  Arguments:--------------------------------------------------------    MAXFLD1.18     
                                                                           MAXFLD1.19     

      SUBROUTINE FIND_MAX_FIELD_SIZE                                        5,4MAXFLD1.20     
*IF DEF,CONVIEEE,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP                    GEX1F403.3      
     & (NFTIN,LEN1_LOOKUP,LEN2_LOOKUP,FIXHD,MAX_FIELD_SIZE,                UBC1F402.110    
     &  wgdos_expand)                                                      UBC1F402.111    
*ELSE                                                                      UBC1F402.112    
     & (NFTIN,LEN1_LOOKUP,LEN2_LOOKUP,FIXHD,MAX_FIELD_SIZE)                UBC1F402.113    
*ENDIF                                                                     UBC1F402.114    
                                                                           MAXFLD1.22     
      IMPLICIT NONE                                                        MAXFLD1.23     
                                                                           MAXFLD1.24     
      INTEGER                                                              MAXFLD1.25     
     & NFTIN          !IN Unit number of file                              MAXFLD1.26     
     &,LEN1_LOOKUP    !IN 1st dim of LOOKUP array                          MAXFLD1.27     
     &,LEN2_LOOKUP    !IN 2nd dim of LOOKUP array                          MAXFLD1.28     
     &,FIXHD(*)       !IN Fixed length header                              MAXFLD1.29     
     &,MAX_FIELD_SIZE !OUT Maximum size of field held on file              MAXFLD1.30     
*IF DEF,CONVIEEE,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP                    GEX1F403.4      
      integer wgdos_expand                                                 UBC1F402.116    
*ENDIF                                                                     UBC1F402.117    
C -------------------------------------------------------------            MAXFLD1.31     
C Workspace usage:---------------------------------------------            MAXFLD1.32     
                                                                           MAXFLD1.33     
      INTEGER                                                              MAXFLD1.34     
     & LOOKUP(LEN1_LOOKUP,LEN2_LOOKUP) ! Lookup header                     MAXFLD1.35     
                                                                           MAXFLD1.36     
C -------------------------------------------------------------            MAXFLD1.37     
C Local variables:---------------------------------------------            MAXFLD1.38     
                                                                           MAXFLD1.39     
      INTEGER                                                              MAXFLD1.40     
     & LEN_IO    ! No of words transferred by BUFFIN                       MAXFLD1.41     
     &,K         ! Loop index                                              MAXFLD1.42     
                                                                           MAXFLD1.43     
     &,ICODE     !Return code from setpos                                  GTD0F400.93     
      REAL                                                                 MAXFLD1.44     
     & A         ! BUFFIN error code                                       MAXFLD1.45     
*IF DEF,CONVIEEE,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP                    GEX1F403.5      
      integer pack_type                                                    UBC1F402.119    
c                                                                          UBC1F402.120    
*CALL CLOOKADD                                                             UBC1F402.121    
*ENDIF                                                                     UBC1F402.122    
*CALL CNTL_IO                                                              GBC5F404.183    
                                                                           MAXFLD1.46     
C -------------------------------------------------------------            MAXFLD1.47     
C*L External subroutines called:-------------------------------            MAXFLD1.48     
      EXTERNAL SETPOS,BUFFIN,IOERROR,ABORT                                 MAXFLD1.49     
C*-------------------------------------------------------------            MAXFLD1.50     
                                                                           MAXFLD1.51     
CL Internal structure: none                                                MAXFLD1.52     
                                                                           MAXFLD1.53     
C Move to start of Look Up Table                                           MAXFLD1.54     
      CALL SETPOS(NFTIN,FIXHD(150)-1,ICODE)                                GTD0F400.94     
                                                                           MAXFLD1.56     
C Read in fields from LOOKUP table                                         MAXFLD1.57     
      CALL BUFFIN(NFTIN,LOOKUP(1,1),FIXHD(151)*FIXHD(152),LEN_IO,A)        MAXFLD1.58     
                                                                           MAXFLD1.59     
C Check for I/O errors                                                     MAXFLD1.60     
      IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(151)*FIXHD(152))THEN                 MAXFLD1.61     
        CALL IOERROR('buffer in of lookup table',A,LEN_IO,                 MAXFLD1.62     
     *               FIXHD(151)*FIXHD(152))                                MAXFLD1.63     
        CALL ABORT                                                         MAXFLD1.64     
      ENDIF                                                                MAXFLD1.65     
                                                                           MAXFLD1.66     
C Find maximum field size                                                  MAXFLD1.67     
      MAX_FIELD_SIZE=0                                                     MAXFLD1.68     
      DO K=1,LEN2_LOOKUP                                                   MAXFLD1.69     
*IF DEF,CONVIEEE,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP                    GEX1F403.6      
        pack_type=mod(lookup(lbpack, k),10)                                UBC1F402.124    
        if(pack_type.eq.1 .or. pack_type.eq.3) then                        UBC1F402.125    
          max_field_size=max(max_field_size,                               UBC1F402.126    
     2     lookup(lbrow, k)*lookup(lbnpt, k), lookup(lblrec,k))            UBC1F402.127    
        else if(pack_type.eq.2) then                                       UBC1F402.128    
          max_field_size=max(max_field_size,                               UBC1F402.129    
     2     ((lookup(lblrec,k)+1)/2)*2)                                     UBC1F402.130    
        else                                                               UBC1F402.131    
          max_field_size=max(max_field_size,lookup(lblrec,k))              UBC1F402.132    
        endif                                                              UBC1F402.133    
*ELSE                                                                      UBC1F402.134    
        MAX_FIELD_SIZE=MAX0(MAX_FIELD_SIZE,LOOKUP(15,K))                   UBC1F402.135    
*ENDIF                                                                     UBC1F402.136    
      ENDDO                                                                MAXFLD1.71     
*IF DEF,CONVIEEE,OR,DEF,CUMF,OR,DEF,PUMF,OR,DEF,CAMDUMP                    GEX1F403.7      
c                                                                          UBC1F402.138    
      max_field_size=((max_field_size+um_sector_size-1)/                   GBC5F404.184    
     2 um_sector_size)*um_sector_size                                      GBC5F404.185    
      write(6,'(//''Maximum Field Size = '',i7/)') max_field_size          UBC1F402.139    
*ENDIF                                                                     UBC1F402.140    
                                                                           MAXFLD1.72     
      RETURN                                                               MAXFLD1.73     
      END                                                                  MAXFLD1.74     
*ENDIF                                                                     MAXFLD1.75