include file: CPPXREF 126
CLL  Comdeck: CPPXREF --------------------------------------------------   CPPXREF.2      
CLL                                                                        CPPXREF.3      
CLL  Purpose: Holds PARAMETERs describing structure of PP_XREF file,       CPPXREF.4      
CLL           and some values for valid entries.                           CPPXREF.5      
CLL                                                                        CPPXREF.6      
CLL  Author    Dr T Johns                                                  CPPXREF.7      
CLL                                                                        CPPXREF.8      
CLL  Model            Modification history from model version 3.0:         CPPXREF.9      
CLL version  Date                                                          CPPXREF.10     
CLL  3.3   26/10/93  M. Carter. Part of an extensive mod that:             MC261093.3      
CLL                  1.Removes the limit on primary STASH item numbers.    MC261093.4      
CLL                  2.Removes the assumption that (section,item)          MC261093.5      
CLL                    defines the sub-model.                              MC261093.6      
CLL                  3.Thus allows for user-prognostics.                   MC261093.7      
CLL                  Add a PPXREF record for model number.                 MC261093.8      
CLL  4.0   26/07/95  T.Johns.  Add codes for real/int/log data types.      GTJ0F400.1      
CLL  3.5   10/3/94   Sub-Models project:                                   GSS1F305.7      
CLL                 List of PPXREF addressing codes augmented, in order    GSS1F305.8      
CLL                 to include all of the pre_STASH master information     GSS1F305.9      
CLL                 in the new PPXREF file.                                GSS1F305.10     
CLL                 PPXREF_CODELEN increased to 38.                        GSS1F305.11     
CLL                 PPXREF_IDLEN deleted - no longer relevant.             GSS1F305.12     
CLL                   S.J.Swarbrick                                        GSS1F305.13     
CLL  4.1   June 96  Wave model parameters included.                        GSS3F401.7      
CLL                 ppx_ address parameters adjusted to allow for          GSS3F401.8      
CLL                  reading option code as 4x5 digit groups.              GSS3F401.9      
CLL                   S.J.Swarbrick                                        GSS3F401.10     
CLL                                                                        CPPXREF.11     
CLL  Logical components covered: C40                                       CPPXREF.12     
CLL                                                                        CPPXREF.13     
C-----------------------------------------------------------------------   CPPXREF.14     
C Primary file record definition                                           CPPXREF.15     
      INTEGER                                                              CPPXREF.16     
     *       PPXREF_IDLEN,PPXREF_CHARLEN,PPXREF_CODELEN                    CPPXREF.17     
     *      ,PPXREF_PACK_PROFS                                             GSS1F305.14     
      PARAMETER(                                                           CPPXREF.19     
     *       PPXREF_IDLEN=2,               ! length of id in a record      CPPXREF.20     
! WARNING: PPXREF_CHARLEN must be an exact multiple of 4                   GSS1F305.15     
!                         to avoid overwriting                             GSS1F305.16     
     *       PPXREF_CHARLEN=36,            ! total length of characters    CPPXREF.21     
     *       PPXREF_PACK_PROFS=10,         ! number of packing profiles    GSS1F305.17     
     *       PPXREF_CODELEN=40)            ! total length of codes         GSS3F401.11     
C Derived file record sizes                                                CPPXREF.24     
      INTEGER                                                              CPPXREF.25     
     *       PPX_CHARWORD,PPX_RECORDLEN                                    CPPXREF.26     
      PARAMETER(                                                           CPPXREF.27     
C            Assume that an integer is at least 4 bytes long.              CPPXREF.28     
C            This wastes some space and memory on 8 byte machines.         CPPXREF.29     
     *       PPX_CHARWORD=((PPXREF_CHARLEN+3)/4), ! i.e., ppx_charword=9   GSS1F305.19     
     *       PPX_RECORDLEN=                                                GSS1F305.20     
     *           PPX_CHARWORD+PPXREF_CODELEN)  ! read buffer record len    CPPXREF.32     
C                                                                          CPPXREF.33     
C-----------------------------------------------------------------------   CPPXREF.34     
C Addressing codes within PPXREF                                           GSS1F305.21     
      INTEGER                                                              CPPXREF.36     
     &       ppx_model_number   ,                                          GSS1F305.22     
     &       ppx_section_number ,ppx_item_number    ,                      GSS1F305.23     
     &       ppx_version_mask   ,ppx_space_code     ,                      GSS1F305.24     
     &       ppx_timavail_code  ,ppx_grid_type      ,                      GSS1F305.25     
     &       ppx_lv_code        ,ppx_lb_code        ,                      GSS1F305.26     
     &       ppx_lt_code        ,ppx_lev_flag       ,                      GSS1F305.27     
     &       ppx_opt_code       ,ppx_pt_code        ,                      GSS1F305.28     
     &       ppx_pf_code        ,ppx_pl_code        ,                      GSS1F305.29     
     &       ppx_ptr_code       ,ppx_lbvc_code      ,                      GSS1F305.30     
     &       ppx_dump_packing   ,ppx_rotate_code    ,                      GSS1F305.31     
     &       ppx_field_code     ,ppx_user_code      ,                      GSS1F305.32     
     &       ppx_meto8_levelcode,ppx_meto8_fieldcode,                      GSS1F305.33     
     &       ppx_cf_levelcode   ,ppx_cf_fieldcode   ,                      GSS1F305.34     
     &       ppx_base_level     ,ppx_top_level      ,                      GSS1F305.35     
     &       ppx_ref_LBVC_code  ,ppx_data_type      ,                      GSS1F305.36     
     &       ppx_packing_acc    ,ppx_pack_acc                              GSS1F305.37     
      PARAMETER(                                                           GSS1F305.38     
     &       ppx_model_number   = 1,  ! Model number address               GSS1F305.39     
     &       ppx_section_number = 2,  ! Section number address             GSS1F305.40     
     &       ppx_item_number    = 3,  ! Item number address                GSS1F305.41     
     &       ppx_version_mask   = 4,  ! Version mask address               GSS1F305.42     
     &       ppx_space_code     = 5,  ! Space code address                 GSS1F305.43     
     &       ppx_timavail_code  = 6,  ! Time availability code address     GSS1F305.44     
     &       ppx_grid_type      = 7,  ! Grid type code address             GSS1F305.45     
     &       ppx_lv_code        = 8,  ! Level type code address            GSS1F305.46     
     &       ppx_lb_code        = 9,  ! First level code address           GSS1F305.47     
     &       ppx_lt_code        =10,  ! Last level code address            GSS1F305.48     
     &       ppx_lev_flag       =11,  ! Level compression flag address     GSS1F305.49     
     &       ppx_opt_code       =12,  ! Sectional option code address      GSS1F305.50     
     &       ppx_pt_code        =16,  ! Pseudo dimension type address      GSS3F401.12     
     &       ppx_pf_code        =17,  ! First pseudo dim code address      GSS3F401.13     
     &       ppx_pl_code        =18,  ! Last pseudo dim code address       GSS3F401.14     
     &       ppx_ptr_code       =19,  ! Section 0 point-back code addres   GSS3F401.15     
     &       ppx_dump_packing   =20,  ! Dump packing code address          GSS3F401.16     
     &       ppx_lbvc_code      =21,  ! PP LBVC code address               GSS3F401.17     
     &       ppx_rotate_code    =22,  ! Rotation code address              GSS3F401.18     
     &       ppx_field_code     =23,  ! PP field code address              GSS3F401.19     
     &       ppx_user_code      =24,  ! User code address                  GSS3F401.20     
     &       ppx_meto8_levelcode=25,  ! CF level code address              GSS3F401.21     
     &       ppx_meto8_fieldcode=26,  ! CF field code address              GSS3F401.22     
     &       ppx_cf_levelcode   =25,                                       GSS3F401.23     
     &       ppx_cf_fieldcode   =26,                                       GSS3F401.24     
     &       ppx_base_level     =27,  ! Base level code address            GSS3F401.25     
     &       ppx_top_level      =28,  ! Top level code address             GSS3F401.26     
     &       ppx_ref_lbvc_code  =29,  ! Ref level LBVC code address        GSS3F401.27     
     &       ppx_data_type      =30,  ! Data type code address             GSS3F401.28     
     &       ppx_packing_acc    =31,  ! Packing accuracy code address (1   GSS3F401.29     
     &       ppx_pack_acc       =31)                                       GSS3F401.30     
C                                                                          GSS1F305.70     
C Valid grid type codes                                                    CPPXREF.42     
      INTEGER                                                              CPPXREF.43     
     &       ppx_atm_nonstd,ppx_atm_tall,ppx_atm_tland,ppx_atm_tsea,       CPPXREF.44     
     &       ppx_atm_uall,ppx_atm_uland,ppx_atm_usea,ppx_atm_compressed,   CPPXREF.45     
     &       ppx_atm_ozone,ppx_atm_tzonal,ppx_atm_uzonal,ppx_atm_rim,      CPPXREF.46     
     &       ppx_atm_tmerid,ppx_atm_umerid,ppx_atm_scalar,                 CPPXREF.47     
     &       ppx_atm_cuall,ppx_atm_cvall,                                  CPPXREF.48     
     &       ppx_ocn_nonstd,ppx_ocn_tall,ppx_ocn_tcomp,ppx_ocn_tfield,     CPPXREF.49     
     &       ppx_ocn_uall,ppx_ocn_ucomp,ppx_ocn_ufield,                    CPPXREF.50     
     &       ppx_ocn_tzonal,ppx_ocn_uzonal,ppx_ocn_tmerid,                 CPPXREF.51     
     &       ppx_ocn_umerid,ppx_ocn_scalar,ppx_ocn_rim,                    CPPXREF.52     
     &       ppx_ocn_cuall,ppx_ocn_cvall,                                  GSS3F401.31     
     &       ppx_wam_all,ppx_wam_sea,ppx_wam_rim                           GSS3F401.32     
C Valid rotation type codes                                                CPPXREF.54     
      INTEGER                                                              CPPXREF.55     
     &       ppx_unrotated,ppx_elf_rotated                                 CPPXREF.56     
C Valid level type codes                                                   CPPXREF.57     
      INTEGER                                                              CPPXREF.58     
     &       ppx_full_level,ppx_half_level                                 CPPXREF.59     
C Valid data type codes                                                    GTJ0F400.2      
      INTEGER                                                              GTJ0F400.3      
     &       ppx_type_real,ppx_type_int,ppx_type_log                       GTJ0F400.4      
C Valid meto8 level type codes                                             CPPXREF.60     
      INTEGER                                                              CPPXREF.61     
     &       ppx_meto8_surf                                                CPPXREF.62     
C Valid dump packing codes                                                 CPPXREF.63     
      INTEGER                                                              CPPXREF.64     
     &       ppx_pack_off,ppx_pack_32,ppx_pack_wgdos,ppx_pack_cfi1         CPPXREF.65     
C                                                                          CPPXREF.66     
C                                                                          MC261093.11     
C                                                                          MC261093.12     
C                                                                          CPPXREF.82     
      PARAMETER(                                                           CPPXREF.83     
     &       ppx_atm_nonstd=0,      ! Non-standard atmos grid              CPPXREF.84     
     &       ppx_atm_tall=1,        ! All T points (atmos)                 CPPXREF.85     
     &       ppx_atm_tland=2,       ! Land-only T points (atmos)           CPPXREF.86     
     &       ppx_atm_tsea=3,        ! Sea-only T points (atmos)            CPPXREF.87     
     &       ppx_atm_tzonal=4,      ! Zonal field at T points (atmos)      CPPXREF.88     
     &       ppx_atm_tmerid=5,      ! Merid field at T points (atmos)      CPPXREF.89     
     &       ppx_atm_uall=11,       ! All u points (atmos)                 CPPXREF.90     
     &       ppx_atm_uland=12,      ! Land-only u points (atmos)           CPPXREF.91     
     &       ppx_atm_usea=13,       ! Sea-only u points (atmos)            CPPXREF.92     
     &       ppx_atm_uzonal=14,     ! Zonal field at u points (atmos)      CPPXREF.93     
     &       ppx_atm_umerid=15,     ! Merid field at u points (atmos)      CPPXREF.94     
     &       ppx_atm_scalar=17,     ! Scalar (atmos)                       CPPXREF.95     
     &       ppx_atm_cuall=18,      ! All C-grid (u) points (atmos)        CPPXREF.96     
     &       ppx_atm_cvall=19,      ! All C-grid (v) points (atmos)        CPPXREF.97     
     &       ppx_atm_compressed=21, ! Compressed land points (atmos)       CPPXREF.98     
     &       ppx_atm_ozone=22,      ! Field on ozone grid (atmos)          CPPXREF.99     
     &       ppx_atm_rim=25,        ! Rim type field (LAM BCs atmos)       CPPXREF.100    
     &       ppx_ocn_nonstd=30,     ! Non-standard ocean grid              CPPXREF.101    
     &       ppx_ocn_tcomp=31,      ! Compressed T points (ocean)          CPPXREF.102    
     &       ppx_ocn_ucomp=32,      ! Compressed u points (ocean)          CPPXREF.103    
     &       ppx_ocn_tall=36,       ! All T points incl. cyclic (ocean)    CPPXREF.104    
     &       ppx_ocn_uall=37,       ! All u points incl. cyclic (ocean)    CPPXREF.105    
     &       ppx_ocn_cuall=38,      ! All C-grid (u) points (ocean)        CPPXREF.106    
     &       ppx_ocn_cvall=39,      ! All C-grid (v) points (ocean)        CPPXREF.107    
     &       ppx_ocn_tfield=41,     ! All non-cyclic T points (ocean)      CPPXREF.108    
     &       ppx_ocn_ufield=42,     ! All non-cyclic u points (ocean)      CPPXREF.109    
     &       ppx_ocn_tzonal=43,     ! Zonal n-c field at T points(ocean)   CPPXREF.110    
     &       ppx_ocn_uzonal=44,     ! Zonal n-c field at u points(ocean)   CPPXREF.111    
     &       ppx_ocn_tmerid=45,     ! Merid n-c field at T points(ocean)   CPPXREF.112    
     &       ppx_ocn_umerid=46,     ! Merid n-c field at u points(ocean)   CPPXREF.113    
     &       ppx_ocn_scalar=47,     ! Scalar (ocean)                       CPPXREF.114    
     &       ppx_ocn_rim=51,        ! Rim type field (LAM BCs ocean)       GSS3F401.33     
     &       ppx_wam_all=60,        ! All points (wave model)              GSS3F401.34     
     &       ppx_wam_sea=62,        ! Sea points only (wave model)         GSS3F401.35     
     &       ppx_wam_rim=65)        ! Rim type field (LAM BCs wave)        GSS3F401.36     
C                                                                          CPPXREF.116    
      PARAMETER(                                                           CPPXREF.117    
     &       ppx_unrotated=0,       ! Unrotated output field               CPPXREF.118    
     &       ppx_elf_rotated=1)     ! Rotated ELF field                    CPPXREF.119    
C                                                                          CPPXREF.120    
      PARAMETER(                                                           CPPXREF.121    
     &       ppx_full_level=1,      ! Model full level                     CPPXREF.122    
     &       ppx_half_level=2)      ! Model half level                     CPPXREF.123    
C                                                                          GTJ0F400.5      
      PARAMETER(                                                           GTJ0F400.6      
     &       ppx_type_real=1,       ! Real data type                       GTJ0F400.7      
     &       ppx_type_int=2,        ! Integer data type                    GTJ0F400.8      
     &       ppx_type_log=3)        ! Logical data type                    GTJ0F400.9      
C                                                                          CPPXREF.124    
      PARAMETER(                                                           CPPXREF.125    
     &       ppx_meto8_surf=9999)   ! MetO8 surface type code              CPPXREF.126    
C                                                                          CPPXREF.127    
      PARAMETER(                                                           CPPXREF.128    
     &       ppx_pack_off=0,        ! Field not packed (ie. 64 bit)        CPPXREF.129    
     &       ppx_pack_32=-1,        ! Field packed to 32 bit in dump       CPPXREF.130    
     &       ppx_pack_wgdos=1,      ! Field packed by WGDOS method         CPPXREF.131    
     &       ppx_pack_cfi1=11)      ! Field packed using CFI1 (ocean)      CPPXREF.132    
C                                                                          CPPXREF.133