From 50c2cbdf85a59b07e5cb398a67067564b3ad3730 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 11 Sep 2017 09:29:57 +0200
Subject: [PATCH] Philippe 11/09/2017: IO: SURFEX: length of record name is set
 with LEN_HREC It was already possible but LEN_HREC was missing in some
 places.

(cherry picked from commit e2fbb2b227e1be392e396e363ac2fbedb32f2aeb)
---
 src/SURFEX/build_emisstabn.F90        |  2 +-
 src/SURFEX/ch_emission_fluxn.F90      |  2 +-
 src/SURFEX/ch_init_snapn.F90          |  2 +-
 src/SURFEX/get_iok_assim.F90          |  2 +-
 src/SURFEX/mode_read_surf_cov.F90     |  2 +-
 src/SURFEX/old_name.F90               |  4 ++--
 src/SURFEX/prep_hor_snow_fields.F90   |  2 +-
 src/SURFEX/read_surf.F90              | 24 ++++++++++++------------
 src/SURFEX/write_bld_descriptionn.F90 |  9 ++++++---
 src/SURFEX/write_diag_ch_snapn.F90    |  2 +-
 src/SURFEX/write_surf.F90             | 12 ++++++------
 src/SURFEX/writesurf_snapn.F90        |  6 +++---
 src/SURFEX/zoom_pgd_cover.F90         |  2 +-
 13 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/src/SURFEX/build_emisstabn.F90 b/src/SURFEX/build_emisstabn.F90
index b4c19af00..e964a7cf7 100644
--- a/src/SURFEX/build_emisstabn.F90
+++ b/src/SURFEX/build_emisstabn.F90
@@ -85,7 +85,7 @@ INTEGER         :: IIND1, IIND2
 INTEGER         :: JSPEC       ! loop index
 INTEGER         :: ITIME       ! loop index
 INTEGER         :: IWS_DEFAULT ! Default Memory window size for emission reading
- CHARACTER (LEN=16):: YRECFM    ! LFI article name
+CHARACTER (LEN=LEN_HREC):: YRECFM    ! LFI article name
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 
 !
diff --git a/src/SURFEX/ch_emission_fluxn.F90 b/src/SURFEX/ch_emission_fluxn.F90
index 49d782159..cb6bfb7f2 100644
--- a/src/SURFEX/ch_emission_fluxn.F90
+++ b/src/SURFEX/ch_emission_fluxn.F90
@@ -89,7 +89,7 @@ INTEGER :: INBTS       ! Number of emission times for a species
 INTEGER :: ITIM1,ITIM2 ! first/last time for interpolation
 INTEGER :: INDX1,INDX2 ! first/next index for data interpolation
 INTEGER :: ISIMTIME, ITPERIOD
- CHARACTER (LEN=16)  :: YRECFM          ! LFI article name
+CHARACTER (LEN=LEN_HREC)  :: YRECFM          ! LFI article name
 TYPE(PRONOSVAR_T),POINTER :: CURPRONOS !Current pronostic variable
 !
 !*       0.3  declaration of saved local variables
diff --git a/src/SURFEX/ch_init_snapn.F90 b/src/SURFEX/ch_init_snapn.F90
index 576767089..e9ead2aa0 100644
--- a/src/SURFEX/ch_init_snapn.F90
+++ b/src/SURFEX/ch_init_snapn.F90
@@ -82,7 +82,7 @@ INTEGER :: ISNAP
 INTEGER             :: IRESP                 !   File 
 INTEGER             :: ILUOUT                ! output listing logical unit
  CHARACTER (LEN=3)   :: YCONVERSION
- CHARACTER (LEN=16)  :: YRECFM                ! management
+ CHARACTER (LEN=LEN_HREC) :: YRECFM                ! management
  CHARACTER (LEN=100) :: YCOMMENT              ! variables
 INTEGER             :: JSPEC                 ! Loop index for chemical species
 INTEGER             :: JSNAP                 ! Loop index for SNAP categories
diff --git a/src/SURFEX/get_iok_assim.F90 b/src/SURFEX/get_iok_assim.F90
index 95361b240..0f96c4c1e 100644
--- a/src/SURFEX/get_iok_assim.F90
+++ b/src/SURFEX/get_iok_assim.F90
@@ -11,7 +11,7 @@ USE PARKIND1 ,ONLY : JPRB
 !
 IMPLICIT NONE
 !
- CHARACTER(LEN=16), INTENT(IN) :: HREC
+ CHARACTER(LEN=LEN_HREC), INTENT(IN) :: HREC
 INTEGER, INTENT(OUT) :: KOK
 !
 INTEGER :: ILEN
diff --git a/src/SURFEX/mode_read_surf_cov.F90 b/src/SURFEX/mode_read_surf_cov.F90
index b4077f1e5..311fe54e8 100644
--- a/src/SURFEX/mode_read_surf_cov.F90
+++ b/src/SURFEX/mode_read_surf_cov.F90
@@ -48,7 +48,7 @@ INTEGER, INTENT(OUT) :: KRESP               ! KRESP  : return-code if a problem
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC) :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: JJ
 INTEGER            :: JCOVER
diff --git a/src/SURFEX/old_name.F90 b/src/SURFEX/old_name.F90
index d3a92baa5..ddaf96dc4 100644
--- a/src/SURFEX/old_name.F90
+++ b/src/SURFEX/old_name.F90
@@ -56,8 +56,8 @@ IMPLICIT NONE
 !
 !
  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! main program
- CHARACTER(LEN=LEN_HREC), INTENT(IN)  :: HRECIN   ! name of field to be read
- CHARACTER(LEN=LEN_HREC), INTENT(OUT) :: HRECOUT  ! name of field to be read is old file
+ CHARACTER(LEN=*),  INTENT(IN)  :: HRECIN   ! name of field to be read
+ CHARACTER(LEN=*),  INTENT(OUT) :: HRECOUT  ! name of field to be read is old file
 !
 !
 !*       0.2   Declarations of local variables
diff --git a/src/SURFEX/prep_hor_snow_fields.F90 b/src/SURFEX/prep_hor_snow_fields.F90
index bf968b142..e844d00a7 100644
--- a/src/SURFEX/prep_hor_snow_fields.F90
+++ b/src/SURFEX/prep_hor_snow_fields.F90
@@ -130,7 +130,7 @@ REAL,DIMENSION(:,:,:), ALLOCATABLE  :: ZVEGTYPE_PATCH    ! fraction of each vegt
 INTEGER                             :: JPATCH    ! loop counter on patches
 INTEGER                             :: JLAYER    ! loop counter on layers
 INTEGER                             :: IVERSION  ! surface version
- CHARACTER(LEN=16)                   :: YRECFM    ! record name
+CHARACTER(LEN=LEN_HREC)             :: YRECFM    ! record name
 INTEGER                             :: IRESP     ! error return code
 LOGICAL                             :: GGLACIER
 !
diff --git a/src/SURFEX/read_surf.F90 b/src/SURFEX/read_surf.F90
index 4fdd75370..71dd5c622 100644
--- a/src/SURFEX/read_surf.F90
+++ b/src/SURFEX/read_surf.F90
@@ -273,7 +273,7 @@ INTEGER, INTENT(OUT) :: KRESP             ! KRESP  : return-code if a problem ap
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 REAL   :: XTIME0
 INTEGER            :: INFOMPI
@@ -424,7 +424,7 @@ INTEGER, INTENT(OUT) :: KRESP             ! KRESP  : return-code if a problem ap
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: IL, IOK
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -550,7 +550,7 @@ INTEGER, INTENT(OUT) :: KRESP               ! KRESP  : return-code if a problem
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: IL1, IL2, IOK
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -657,7 +657,7 @@ INTEGER, INTENT(OUT) :: KRESP                 ! KRESP  : return-code if a proble
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: IL1, IL2, IL3
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -752,7 +752,7 @@ INTEGER, INTENT(OUT) :: KRESP            ! KRESP  : return-code if a problem app
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 REAL   :: XTIME0
 INTEGER            :: INFOMPI
@@ -905,7 +905,7 @@ INTEGER, INTENT(OUT) :: KRESP                ! KRESP  : return-code if a problem
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: IL
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -1019,7 +1019,7 @@ INTEGER, INTENT(OUT) :: KRESP             ! KRESP  : return-code if a problem ap
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 REAL   :: XTIME0
 INTEGER            :: INFOMPI
@@ -1164,7 +1164,7 @@ INTEGER, INTENT(OUT) :: KRESP           ! KRESP  : return-code if a problem appe
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 REAL   :: XTIME0
 INTEGER            :: INFOMPI
@@ -1305,7 +1305,7 @@ INTEGER, INTENT(OUT) :: KRESP                ! KRESP  : return-code if a problem
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=100) :: YCOMMENT
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: IL
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
@@ -1413,7 +1413,7 @@ INTEGER, INTENT(OUT) :: KRESP            ! KRESP  : return-code if a problem app
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 !
 REAL   :: XTIME0
@@ -1586,7 +1586,7 @@ INTEGER, INTENT(OUT) :: KRESP              ! KRESP  : return-code if a problem a
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: ILUOUT
 INTEGER            :: INFOMPI
@@ -1755,7 +1755,7 @@ INTEGER, INTENT(OUT) :: KRESP            ! KRESP  : return-code if a problem app
 !
 !*      0.2   Declarations of local variables
 !
- CHARACTER(LEN=16)  :: YREC
+ CHARACTER(LEN=LEN_HREC)  :: YREC
  CHARACTER(LEN=1)   :: YDIR
 INTEGER            :: ILUOUT
 INTEGER            :: INFOMPI
diff --git a/src/SURFEX/write_bld_descriptionn.F90 b/src/SURFEX/write_bld_descriptionn.F90
index 2b00c1dbf..4f5bbd0c0 100644
--- a/src/SURFEX/write_bld_descriptionn.F90
+++ b/src/SURFEX/write_bld_descriptionn.F90
@@ -81,7 +81,8 @@ INTEGER                         :: IRESP
 INTEGER                         :: I1, I2
 INTEGER                         :: JL
 INTEGER                         :: ITOT
- CHARACTER(LEN=100)              :: YCOMMENT
+CHARACTER(LEN=LEN_HREC)         :: YRECFM
+CHARACTER(LEN=100)              :: YCOMMENT
 !-------------------------------------------------------------------------------
 !-------------------------------------------------------------------------------
 !
@@ -102,9 +103,10 @@ ZWORK(5) = FLOAT(BDD%NDESC_ROOF_LAYER)
 ZWORK(6) = FLOAT(BDD%NDESC_ROAD_LAYER)
 ZWORK(7) = FLOAT(BDD%NDESC_FLOOR_LAYER)
 !
+YRECFM='Bld_dimensions'
 YCOMMENT='Configuration numbers for descriptive building data'
  CALL WRITE_SURF(DGU, U, &
-                 HPROGRAM,'BLD_DESC_CNF',ZWORK,IRESP,YCOMMENT,'-','Bld_dimensions  ')
+                 HPROGRAM,'BLD_DESC_CNF',ZWORK,IRESP,YCOMMENT,'-',YRECFM)
 DEALLOCATE(ZWORK)
 !
 !-------------------------------------------------------------------------------
@@ -192,9 +194,10 @@ END DO
  CALL UP_DESC_IND_W(BDD%NDESC_AGE) ; ZWORK(I1:I2) = FLOAT(BDD%NDESC_AGE_LIST(:))
  CALL UP_DESC_IND_W(BDD%NDESC_AGE) ; ZWORK(I1:I2) = FLOAT(BDD%NDESC_AGE_DATE(:))
 !
+YRECFM='Bld_parameters  '
 YCOMMENT='Descriptive building data'
  CALL WRITE_SURF(DGU, U, &
-                 HPROGRAM,'BLD_DESC_DAT',ZWORK,IRESP,YCOMMENT,'-','Bld_parameters  ')
+                 HPROGRAM,'BLD_DESC_DAT',ZWORK,IRESP,YCOMMENT,'-',YRECFM)
 DEALLOCATE(ZWORK)
 !
 IF (LHOOK) CALL DR_HOOK('WRITE_BLD_DESCRIPTION_n',1,ZHOOK_HANDLE)
diff --git a/src/SURFEX/write_diag_ch_snapn.F90 b/src/SURFEX/write_diag_ch_snapn.F90
index d20efe15c..1ccf147fc 100644
--- a/src/SURFEX/write_diag_ch_snapn.F90
+++ b/src/SURFEX/write_diag_ch_snapn.F90
@@ -67,7 +67,7 @@ TYPE(CH_EMIS_SNAP_t), INTENT(INOUT) :: CHN
 !
 
 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
- CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be read
+ CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be read
  CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 !
 INTEGER           :: JSPEC
diff --git a/src/SURFEX/write_surf.F90 b/src/SURFEX/write_surf.F90
index 12c51ed98..72920d7eb 100644
--- a/src/SURFEX/write_surf.F90
+++ b/src/SURFEX/write_surf.F90
@@ -50,7 +50,7 @@ INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 END SUBROUTINE WRITE_SURFX1
 !
      SUBROUTINE WRITE_SURFX2 (DGU, U, &
@@ -71,7 +71,7 @@ INTEGER,              INTENT(OUT) :: KRESP    ! KRESP  : return-code if a proble
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 END SUBROUTINE WRITE_SURFX2
 !
 !RJ: interface to WRITE_SURFX2COV moved out
@@ -111,7 +111,7 @@ INTEGER,               INTENT(OUT) :: KRESP    ! KRESP  : return-code if a probl
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 END SUBROUTINE WRITE_SURFN1
 !
      SUBROUTINE WRITE_SURFC0 (DGU, U, &
@@ -453,7 +453,7 @@ INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=LEN_HREC)  :: YREC
@@ -606,7 +606,7 @@ INTEGER,              INTENT(OUT) :: KRESP    ! KRESP  : return-code if a proble
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=LEN_HREC)  :: YREC
@@ -919,7 +919,7 @@ INTEGER,               INTENT(OUT) :: KRESP    ! KRESP  : return-code if a probl
 !                                             ! 'H' : field with
 !                                             !       horizontal spatial dim.
 !                                             ! '-' : no horizontal dim.
- CHARACTER(LEN=LEN_HREC), OPTIONAL,  INTENT(IN) :: HNAM_DIM
+ CHARACTER(LEN=16), OPTIONAL,  INTENT(IN) :: HNAM_DIM
 !*      0.2   Declarations of local variables
 !
  CHARACTER(LEN=LEN_HREC)  :: YREC
diff --git a/src/SURFEX/writesurf_snapn.F90 b/src/SURFEX/writesurf_snapn.F90
index 4efed20c2..649ef1057 100644
--- a/src/SURFEX/writesurf_snapn.F90
+++ b/src/SURFEX/writesurf_snapn.F90
@@ -44,9 +44,9 @@ TYPE(CH_EMIS_SNAP_t), INTENT(INOUT) :: CHN
 !*       0.2   declarations of local variables
 !
 INTEGER             :: IRESP    ! I/O error code
- CHARACTER (LEN=16)  :: YRECFM   ! article name
- CHARACTER (LEN=100) :: YCOMMENT ! comment
- CHARACTER(LEN=100):: YCOMMENTUNIT   ! Comment string : unit of the datas in the field to write
+CHARACTER(LEN=LEN_HREC) :: YRECFM   ! article name
+CHARACTER(LEN=100)      :: YCOMMENT ! comment
+CHARACTER(LEN=100)      :: YCOMMENTUNIT   ! Comment string : unit of the datas in the field to write
 INTEGER             :: ILUOUT   ! Unit number for prints
 INTEGER             :: JSPEC    ! Loop index for emission species
 INTEGER             :: JSNAP    ! Loop index for SNAP categories
diff --git a/src/SURFEX/zoom_pgd_cover.F90 b/src/SURFEX/zoom_pgd_cover.F90
index f0ab22b28..a32fab0e0 100644
--- a/src/SURFEX/zoom_pgd_cover.F90
+++ b/src/SURFEX/zoom_pgd_cover.F90
@@ -119,7 +119,7 @@ REAL, DIMENSION(:,:), POINTER     :: ZCOVER
 REAL, DIMENSION(:,:), POINTER :: ZSEA1, ZWATER1, ZNATURE1, ZTOWN1
 REAL, DIMENSION(:,:), POINTER :: ZSEA2, ZWATER2, ZNATURE2, ZTOWN2
 REAL, DIMENSION(:),   ALLOCATABLE :: ZSUM
- CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be read
+ CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be read
  CHARACTER(LEN=100) :: YCOMMENT
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !------------------------------------------------------------------------------
-- 
GitLab