*IF DEF,CONTROL,AND,DEF,ATMOS                                              STMAXLN1.2      
C ******************************COPYRIGHT******************************    GTS2F400.9667   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.9668   
C                                                                          GTS2F400.9669   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.9670   
C restrictions as set forth in the contract.                               GTS2F400.9671   
C                                                                          GTS2F400.9672   
C                Meteorological Office                                     GTS2F400.9673   
C                London Road                                               GTS2F400.9674   
C                BRACKNELL                                                 GTS2F400.9675   
C                Berkshire UK                                              GTS2F400.9676   
C                RG12 2SZ                                                  GTS2F400.9677   
C                                                                          GTS2F400.9678   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.9679   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.9680   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.9681   
C Modelling at the above address.                                          GTS2F400.9682   
C ******************************COPYRIGHT******************************    GTS2F400.9683   
C                                                                          GTS2F400.9684   
CLL Subroutine ST_MAXLEN ----------------------------------------------    STMAXLN1.3      
CLL                                                                        STMAXLN1.4      
CLL Purpose : Returns max value of STASH_MAXLEN for consecutive code       STMAXLN1.5      
CLL          sections for use in dynamically allocating STASHWORK.         STMAXLN1.6      
CLL                                                                        STMAXLN1.7      
CLL Level 2 control routine                                                STMAXLN1.8      
CLL Version for CRAY YMP                                                   STMAXLN1.9      
CLL                                                                        STMAXLN1.10     
CLL  Model            Modification history:                                STMAXLN1.11     
CLL version  Date                                                          STMAXLN1.12     
CLL   3.2  18/06/93  New control interfacing routine required because      STMAXLN1.13     
CLL                   of dynamic allocation changes. R.T.H.Barnes.         STMAXLN1.14     
CLL                                                                        STMAXLN1.15     
CLL Programming standard : unified model documentation paper No 3          STMAXLN1.16     
CLL                                                                        STMAXLN1.17     
CLL System components covered :                                            STMAXLN1.18     
CLL                                                                        STMAXLN1.19     
CLL System task : Stash from dynamics routines                             STMAXLN1.20     
CLL                                                                        STMAXLN1.21     
CLL Documentation : Unified model documentation paper no.                  STMAXLN1.22     
CLL                                                                        STMAXLN1.23     
CLLEND -----------------------------------------------------------------   STMAXLN1.24     
C*L Arguments                                                              STMAXLN1.25     

      SUBROUTINE ST_MAXLEN(STASH_LEN,SECTION_1,SECTION_2,                   4GDR4F305.390    
     &                     internal_model,                                 GDR4F305.391    
*CALL ARGSIZE                                                              STMAXLN1.27     
*CALL ARGSTS                                                               STMAXLN1.28     
     &                                ICODE,CMESSAGE)                      STMAXLN1.29     
                                                                           STMAXLN1.30     
      IMPLICIT NONE                                                        STMAXLN1.31     
                                                                           STMAXLN1.32     
*CALL CMAXSIZE                                                             STMAXLN1.33     
*CALL CSUBMODL                                                             GSS1F305.940    
*CALL TYPSIZE                                                              STMAXLN1.34     
*CALL TYPSTS                                                               STMAXLN1.35     
                                                                           STMAXLN1.36     
      INTEGER                                                              STMAXLN1.37     
     &       STASH_LEN,   ! max STASH length for consecutive sections      STMAXLN1.38     
     &       SECTION_1,   ! First section                                  STMAXLN1.39     
     &       SECTION_2,   ! Last section                                   STMAXLN1.40     
     &       internal_model, ! Internal Model Identifier                   GDR4F305.392    
     &       ICODE        ! Return code : 0 Normal Exit                    STMAXLN1.42     
C                         !             : >0 Error                         STMAXLN1.43     
                                                                           STMAXLN1.44     
      CHARACTER*(*)                                                        STMAXLN1.45     
     &       CMESSAGE     ! Error message if return code >0                STMAXLN1.46     
                                                                           STMAXLN1.47     
C External subroutines called : NONE                                       STMAXLN1.48     
                                                                           STMAXLN1.49     
C Local Variables :                                                        GDR4F305.393    
                                                                           GDR4F305.394    
      INTEGER SECTION        ! Loop variable                               GDR4F305.395    
      INTEGER im_ident       ! Internal Model Identifier                   GDR4F305.396    
      INTEGER im_index       ! Internal Model Index for STASH              GDR4F305.397    
                                                                           STMAXLN1.51     
      ICODE=0                                                              STMAXLN1.52     
      CMESSAGE='  '                                                        STMAXLN1.53     
                                                                           STMAXLN1.54     
      im_ident = internal_model                                            GDR4F305.398    
      im_index = internal_model_index(im_ident)                            GDR4F305.399    
                                                                           GDR4F305.400    
      STASH_LEN = 1                                                        STMAXLN1.55     
      DO SECTION = SECTION_1,SECTION_2                                     STMAXLN1.56     
        STASH_LEN = MAX(STASH_LEN,STASH_MAXLEN(SECTION,im_index))          GDR4F305.401    
      END DO                                                               STMAXLN1.58     
                                                                           STMAXLN1.59     
      RETURN                                                               STMAXLN1.60     
      END                                                                  STMAXLN1.61     
                                                                           STMAXLN1.62     
*ENDIF                                                                     STMAXLN1.63