*IF DEF,A10_1A,OR,DEF,A10_1B,OR,DEF,A10_1C                                 AAD2F404.247    
*IF -DEF,SCMA                                                              AJC0F405.286    
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13008  
C                                                                          GTS2F400.13009  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13010  
C restrictions as set forth in the contract.                               GTS2F400.13011  
C                                                                          GTS2F400.13012  
C                Meteorological Office                                     GTS2F400.13013  
C                London Road                                               GTS2F400.13014  
C                BRACKNELL                                                 GTS2F400.13015  
C                Berkshire UK                                              GTS2F400.13016  
C                RG12 2SZ                                                  GTS2F400.13017  
C                                                                          GTS2F400.13018  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13019  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13020  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13021  
C Modelling at the above address.                                          GTS2F400.13022  
C ******************************COPYRIGHT******************************    GTS2F400.13023  
C                                                                          GTS2F400.13024  
CLL   SUBROUTINE DIAG10_QC--------------------------------------------     DIA10Q1A.3      
CLL                                                                        DIA10Q1A.4      
CLL  PURPOSE: Process diagnostics on qcl/qcf before dynamics               DIA10Q1A.5      
CLL                                                                        DIA10Q1A.6      
CLL B Macpherson<- programmer of some or all of previous code or changes   DIA10Q1A.7      
CLL                                                                        DIA10Q1A.8      
CLL  Model            Modification history from model version 3.0:         DIA10Q1A.9      
CLL version  Date                                                          DIA10Q1A.10     
CLL                                                                        DIA10Q1A.11     
CLL 4.0     1/9/95   New deck based on DIA10A1A                            DIA10Q1A.12     
!LL 4.3     11/02/97 Added ARGFLDPT and ARGPPX arguments   P.Burton        GPB1F403.1179   
!LL 4.5     28/10/98 Introduce Single Column Model. J-C Thil.              AJC0F405.287    
CLL                                                                        DIA10Q1A.13     
CLL   Programming standard: U M DOC  Paper NO. 4,                          DIA10Q1A.14     
CLL                                                                        DIA10Q1A.15     
CLL   Logical components covered :                                         DIA10Q1A.16     
CLL                                                                        DIA10Q1A.17     
CLL   Project task: P1                                                     DIA10Q1A.18     
CLL                                                                        DIA10Q1A.19     
CLL   External documentation:                                              DIA10Q1A.20     
CLL                                                                        DIA10Q1A.21     
CLLEND---------------------------------------------------------------      DIA10Q1A.22     
                                                                           DIA10Q1A.23     
C*L  ARGUMENTS:------------------------------------------------------      DIA10Q1A.24     
                                                                           DIA10Q1A.25     

      SUBROUTINE DIAG10_QC(QCL,QCF,                                         1,2DIA10Q1A.26     
     &                     ROW_LENGTH,P_LEVELS,Q_LEVELS,P_FIELD,           DIA10Q1A.27     
     &                     NSECTS,NITEMS,TOTITEMS,NUM_STASH_LEVELS,        DIA10Q1A.28     
     &                     NUM_LEVEL_LISTS,LEN_STLIST,STASHLEN,SF,         DIA10Q1A.29     
     &                     STINDEX,STLIST,SI,STASH_LEVELS,STASHWORK,       DIA10Q1A.30     
     &                     im_ident,                                       GPB1F403.1180   
*CALL ARGFLDPT                                                             GPB1F403.1181   
*CALL ARGPPX                                                               GPB1F403.1182   
     &                     ICODE,CMESSAGE)                                 DIA10Q1A.31     
                                                                           DIA10Q1A.32     
      IMPLICIT NONE                                                        DIA10Q1A.33     
                                                                           DIA10Q1A.34     
      INTEGER                                                              DIA10Q1A.35     
     &  P_FIELD            !IN  1ST DIMENSION OF FIELD OF PSTAR            DIA10Q1A.36     
     &, ROW_LENGTH         !IN  NUMBER OF POINTS PER ROW                   DIA10Q1A.37     
     &, P_LEVELS           !IN  NUMBER OF PRESSURE LEVELS                  DIA10Q1A.38     
     &, Q_LEVELS           !IN  NUMBER OF WET LEVELS                       DIA10Q1A.39     
                                                                           DIA10Q1A.40     
      INTEGER                                                              GPB1F403.1183   
     &  im_ident           !IN : Internal model indent                     GPB1F403.1184   
                                                                           GPB1F403.1185   
*CALL TYPFLDPT                                                             GPB1F403.1186   
*CALL CSUBMODL                                                             GPB1F403.1187   
*CALL CPPXREF                                                              GPB1F403.1188   
*CALL PPXLOOK                                                              GPB1F403.1189   
      INTEGER                                                              DIA10Q1A.41     
     &  ICODE              !OUT RETURN CODE. NON-ZERO IF ERROR-DETECTED    DIA10Q1A.42     
                                                                           DIA10Q1A.43     
      CHARACTER                                                            DIA10Q1A.44     
     &  CMESSAGE*(*)       !OUT ERROR MESSAGE                              DIA10Q1A.45     
                                                                           DIA10Q1A.46     
C INPUT DATA                                                               DIA10Q1A.47     
                                                                           DIA10Q1A.48     
      REAL                                                                 DIA10Q1A.49     
     &  QCL  (P_FIELD,Q_LEVELS) !IN PRIMARY MODEL ARRAY FOR QCL            DIA10Q1A.50     
     &, QCF  (P_FIELD,Q_LEVELS) !IN PRIMARY MODEL ARRAY FOR QCF            DIA10Q1A.51     
                                                                           DIA10Q1A.52     
C STASH REQUIREMENTS.                                                      DIA10Q1A.53     
                                                                           DIA10Q1A.54     
      INTEGER                                                              DIA10Q1A.55     
     &  NSECTS             !IN NO OF PROCESSING SECTIONS (MASTER PCRS)     DIA10Q1A.56     
     &, NITEMS             !IN MAX NO OF STASH ITEMS IN A SECTION          DIA10Q1A.57     
     &, TOTITEMS           !IN MAX NO OF TOTAL STASH ITEMS                 DIA10Q1A.58     
     &, NUM_STASH_LEVELS   !IN MAX NUMBER OF LEVELS IN A LEVELS LIST       DIA10Q1A.59     
     &, NUM_LEVEL_LISTS    !IN MAX NUMBER OF LEVELS LIST                   DIA10Q1A.60     
     &, LEN_STLIST         !IN LENGTH OF LIST OF ITEMS FROM STASH          DIA10Q1A.61     
     &, STASHLEN           !IN SIZE OF STASHWORK                           DIA10Q1A.62     
                                                                           DIA10Q1A.63     
      INTEGER                                                              DIA10Q1A.64     
     &  STINDEX(2,NITEMS,0:NSECTS)    !IN                                  DIA10Q1A.65     
     &, STLIST(LEN_STLIST,TOTITEMS)   !IN                                  DIA10Q1A.66     
     &, SI(NITEMS,0:NSECTS)           !IN                                  DIA10Q1A.67     
     &, STASH_LEVELS(NUM_STASH_LEVELS+1,NUM_LEVEL_LISTS) !IN               DIA10Q1A.68     
                                                                           DIA10Q1A.69     
      LOGICAL                                                              DIA10Q1A.70     
     &  SF(0:NITEMS,0:NSECTS)        !IN                                   DIA10Q1A.71     
                                                                           DIA10Q1A.72     
      REAL                                                                 DIA10Q1A.73     
     &  STASHWORK(STASHLEN) !INOUT. WORK SPACE HOLDING STASH OUTPUT.       DIA10Q1A.74     
                                                                           DIA10Q1A.75     
C*--------------------------------------------------------------------     DIA10Q1A.76     
                                                                           DIA10Q1A.77     
C*L   DEFINE LOCAL VARIABLES USED IN THIS ROUTINE----------                DIA10Q1A.78     
      INTEGER                                                              DIA10Q1A.79     
     &  FIRST_P       ! first point for COPYDIAG for P grid                DIA10Q1A.80     
     & ,LAST_P        ! last point for COPYDIAG for  P grid                DIA10Q1A.81     
                                                                           DIA10Q1A.82     
                                                                           DIA10Q1A.83     
C*--------------------------------------------------------------------     DIA10Q1A.84     
                                                                           DIA10Q1A.85     
C*L   EXTERNAL SUBROUTINES CALLED ------------------------------------     DIA10Q1A.86     
      EXTERNAL COPYDIAG_3D                                                 DIA10Q1A.87     
C*--------------------------------------------------------------------     DIA10Q1A.88     
                                                                           DIA10Q1A.89     
CL    MAXIMUM VECTOR LENGTH ASSUMED IS P_FIELD                             DIA10Q1A.90     
                                                                           DIA10Q1A.91     
      FIRST_P=FIRST_FLD_PT                                                 GPB1F403.1190   
      LAST_P=LAST_P_FLD_PT                                                 GPB1F403.1191   
                                                                           DIA10Q1A.94     
CL SECTION 1 qcl                                                           DIA10Q1A.95     
                                                                           DIA10Q1A.96     
      IF ( SF(229,10) ) THEN                                               DIA10Q1A.97     
        CALL COPYDIAG_3D (STASHWORK(SI(229,10)),QCL,FIRST_P,               DIA10Q1A.98     
     &                    LAST_P,P_FIELD,ROW_LENGTH,Q_LEVELS,              DIA10Q1A.99     
     &                    STLIST(1,STINDEX(1,229,10)),LEN_STLIST,          DIA10Q1A.100    
     &                    STASH_LEVELS,                                    DIA10Q1A.101    
     &                    NUM_STASH_LEVELS+1,                              GPB1F403.1192   
     &                    im_ident,10,229,                                 GPB1F403.1193   
*CALL ARGPPX                                                               GPB1F403.1194   
     &                    ICODE,CMESSAGE)                                  GPB1F403.1195   
        IF(ICODE.GT.0) THEN                                                DIA10Q1A.103    
          RETURN                                                           DIA10Q1A.104    
        END IF                                                             DIA10Q1A.105    
      END IF                                                               DIA10Q1A.106    
                                                                           DIA10Q1A.107    
CL SECTION 2 qcf                                                           DIA10Q1A.108    
                                                                           DIA10Q1A.109    
      IF ( SF(230,10) ) THEN                                               DIA10Q1A.110    
        CALL COPYDIAG_3D (STASHWORK(SI(230,10)),QCF,FIRST_P,               DIA10Q1A.111    
     &                    LAST_P,P_FIELD,ROW_LENGTH,Q_LEVELS,              DIA10Q1A.112    
     &                    STLIST(1,STINDEX(1,230,10)),LEN_STLIST,          DIA10Q1A.113    
     &                    STASH_LEVELS,                                    DIA10Q1A.114    
     &                    NUM_STASH_LEVELS+1,                              GPB1F403.1196   
     &                    im_ident,10,230,                                 GPB1F403.1197   
*CALL ARGPPX                                                               GPB1F403.1198   
     &                    ICODE,CMESSAGE)                                  GPB1F403.1199   
        IF(ICODE.GT.0) THEN                                                DIA10Q1A.116    
          RETURN                                                           DIA10Q1A.117    
        END IF                                                             DIA10Q1A.118    
      END IF                                                               DIA10Q1A.119    
                                                                           DIA10Q1A.120    
      RETURN                                                               DIA10Q1A.121    
      END                                                                  DIA10Q1A.122    
*ENDIF                                                                     DIA10Q1A.123    
*ENDIF                                                                     AJC0F405.288