diff --git a/src/LIB/NEWLFI/src/lficom0.h b/src/LIB/NEWLFI/src/lficom0.h
index 06aee5c4368b42f8b237af923309f92254626985..68fa8a59464e2e891ee1e6a0413126fe334d3d6a 100644
--- a/src/LIB/NEWLFI/src/lficom0.h
+++ b/src/LIB/NEWLFI/src/lficom0.h
@@ -62,7 +62,7 @@ C
 C
       LOGICAL LPCRAY, LPRECH
 C
-      PARAMETER ( JPNCPN=16, JPLARD=512, JPNPDF=20, JPXUFM=100 )
+      PARAMETER ( JPNCPN=LEN_HREC, JPLARD=512, JPNPDF=20, JPXUFM=100 )
       PARAMETER ( JPNXFI=300, JPFACX=120, JPNPIA=4, JPNXPR=100 )
 C
 C     Implementation-dependent symbolic constants (except for JPNCMO and
diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 8318e5f0559455e04f6816443730bcac41207f7f..85421dc8ec31580a3e69f9af4e959073be56f4dc 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -259,7 +259,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER             :: ILUOUT       ! logical unit
 INTEGER             :: ISPLIT_PPM   ! temporal time splitting 
 INTEGER             :: IIB, IIE, IJB, IJE
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 7025d323a4c4db0c8b7c5bacee4b049fe86cafb5..26873c0ae94a03337e77ec68d21f26711493893b 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -221,7 +221,7 @@ INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 INTEGER             :: JITER,ITERMAX  ! iterative loop for first order adjustment
 INTEGER             :: ILUOUT     ! Logical unit of output listing 
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 !-------------------------------------------------------------------------------
 !
 !*       1.     PRELIMINARIES
diff --git a/src/MNH/call_rttov11.f90 b/src/MNH/call_rttov11.f90
index 876ec667a6961ed2a3167649383241bd8bcbcc34..220a7f2fe350ebe2415539e9b4700c3f3e5b19a7 100644
--- a/src/MNH/call_rttov11.f90
+++ b/src/MNH/call_rttov11.f90
@@ -219,7 +219,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=22) :: YCOMMENT       ! Comment string
 CHARACTER(LEN=8)  :: YINST  
 CHARACTER(LEN=4)  :: YBEG, YEND
diff --git a/src/MNH/call_rttov8.f90 b/src/MNH/call_rttov8.f90
index 72a8a91000cbdd9d17bfffe0677d58d70bb1e41e..2646bc96b652bbbd9850eb558963dd7574be1715 100644
--- a/src/MNH/call_rttov8.f90
+++ b/src/MNH/call_rttov8.f90
@@ -622,7 +622,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=22) :: YCOMMENT       ! Comment string
 CHARACTER(LEN=8)  :: YINST  
 CHARACTER(LEN=4)  :: YBEG, YEND
diff --git a/src/MNH/check_zhat.f90 b/src/MNH/check_zhat.f90
index cf2592d036f0705fbe015750930bec4a72a06f8f..7c4207be179a9f2b74fdfa97c60fbc3950716f9a 100644
--- a/src/MNH/check_zhat.f90
+++ b/src/MNH/check_zhat.f90
@@ -109,7 +109,7 @@ REAL                :: ZLEN2                ! Decay scale for small-scale topogr
 INTEGER             :: IRESP                ! return-code if problems occured
 INTEGER             :: ILUOUT0              ! logical unit for file CLUOUT0
 INTEGER             :: IGRID,ILENCH         !   File 
-CHARACTER (LEN=16)  :: YRECFM               ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM               ! management
 CHARACTER (LEN=100) :: YCOMMENT             ! variables 
 LOGICAL             :: GTHINSHELL
 !
diff --git a/src/MNH/check_zs.f90 b/src/MNH/check_zs.f90
index b564a4dac061c5d1299236af1d3bc8c35627a87f..4c73d928f3b6b2f78c1443564a7f42c3aef02b64 100644
--- a/src/MNH/check_zs.f90
+++ b/src/MNH/check_zs.f90
@@ -110,7 +110,7 @@ INTEGER,             INTENT(IN)    :: KJINF     ! domain, compared to the old
 INTEGER             :: IRESP                ! return-code if problems occured
 INTEGER             :: ILUOUT0              ! logical unit for file CLUOUT0
 INTEGER             :: IGRID,ILENCH         !   File 
-CHARACTER (LEN=16)  :: YRECFM               ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM               ! management
 CHARACTER (LEN=100) :: YCOMMENT             ! variables 
 !
 INTEGER             :: IDXRATIO = 0         ! aspect ratios during previous
diff --git a/src/MNH/compare_dad.f90 b/src/MNH/compare_dad.f90
index b23db5199600e42c3566738c6b56468c0eec849f..abba812181ce734a165535507cb6d0c96cea6539 100644
--- a/src/MNH/compare_dad.f90
+++ b/src/MNH/compare_dad.f90
@@ -98,7 +98,7 @@ INTEGER             :: IIU_1,IIU_2    ! Upper dimension in x direction
 INTEGER             :: IJU_1,IJU_2    ! Upper dimension in y direction
 INTEGER             :: IKU_1,IKU_2    ! Upper dimension in z direction
 !
-CHARACTER (LEN=16) :: YRECFM
+CHARACTER (LEN=LEN_HREC) :: YRECFM
 INTEGER            :: ILENCH, IGRID
 CHARACTER (LEN=100):: YCOMMENT
 CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
diff --git a/src/MNH/compute_r00.f90 b/src/MNH/compute_r00.f90
index a59a5c939bb069a10408927add93591900ca9b47..47da250919299d653fed38824ccbfd4c45e2d345 100644
--- a/src/MNH/compute_r00.f90
+++ b/src/MNH/compute_r00.f90
@@ -99,7 +99,7 @@ INTEGER  :: ININAR               ! number of articles  present in
 INTEGER  :: ITYPE                ! type of file (conv2dia and transfer)
 !
 CHARACTER (LEN=100)                :: YCOMMENT
-CHARACTER (LEN=16)                 :: YRECFM
+CHARACTER (LEN=LEN_HREC)                 :: YRECFM
 INTEGER                            :: IFILECUR,JFILECUR,NIU,NJU,NKU,IGRID,ILENCH
 INTEGER                            :: NFILES,JLOOP
 REAL                               :: ZXOR,ZYOR,ZDX,ZDY
diff --git a/src/MNH/free_atm_profile.f90 b/src/MNH/free_atm_profile.f90
index e0bd002a10eb3146b4c079d48baa8d9b24e8df25..be226a6effa4283c9aebbd2b37ebdc86f3b43932 100644
--- a/src/MNH/free_atm_profile.f90
+++ b/src/MNH/free_atm_profile.f90
@@ -162,7 +162,7 @@ INTEGER                               :: IIMIN, IIMAX, IJMIN, IJMAX
 
 INTEGER           :: IRESP                !
 INTEGER           :: IGRID, ILENCH        !
-CHARACTER(LEN=16) :: YRECFM               ! name of field to be recorded
+CHARACTER(LEN=LEN_HREC) :: YRECFM               ! name of field to be recorded
 CHARACTER(LEN=100):: YCOMMENT             ! comment to be recorded
 
 REAL, DIMENSION(SIZE(PZMASS_MX,1),SIZE(PZMASS_MX,2)) &
diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90
index a04f63482dbfb138285d57f56511e7cb0a86d111..6e1a6299656c4e55728e37f723cf2b821b5f1d1d 100644
--- a/src/MNH/ice_adjust.f90
+++ b/src/MNH/ice_adjust.f90
@@ -253,7 +253,7 @@ INTEGER             :: ILENG      ! Length of comment string in LFIFM file
 INTEGER             :: IGRID      ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
 INTEGER             :: IIU,IJU,IKU! dimensions of dummy arrays
 INTEGER             :: IIB,IJB    ! Horz index values of the first inner mass points
diff --git a/src/MNH/ice_adjust_elec.f90 b/src/MNH/ice_adjust_elec.f90
index 4c7b2c622af2869693247ad15dc973c3d86a8ae0..1f36d139cbdc9265b4ef00a4617dda4ad91d8572 100644
--- a/src/MNH/ice_adjust_elec.f90
+++ b/src/MNH/ice_adjust_elec.f90
@@ -287,7 +287,7 @@ INTEGER             :: ILENG      ! Length of comment string in LFIFM file
 INTEGER             :: IGRID      ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
 INTEGER             :: IIU,IJU,IKU! dimensions of dummy arrays
 INTEGER             :: IIB,IJB    ! Horz index values of the first inner mass points
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index 5b596df31a305628ec165e938a2470739448e909..9af3141ec91c946c47810856443e8c90eafc244d 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -134,7 +134,7 @@ CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
 INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT!comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM  ! Name of the desired field in LFIFM file
 
 !
 !----------------------------------------------------------------------------
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index 7878ae9704f1a04d6b82bcc67ee9b5ab5a651037..7b102d7fdd970fc71488ad3fcdb1e4ab3ca78fa0 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -308,7 +308,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PLBYRS  ,PLBYSVS  ! in x and y-d
 INTEGER                :: ILUOUT                     !  Logical unit number
                                                      ! associated with HLUOUT 
 INTEGER                :: IGRID,ILENCH,IRESP,ININAR      !  File 
-CHARACTER (LEN=16)     :: YRECFM                               ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM                               ! management
 CHARACTER (LEN=100)    :: YCOMMENT                             ! variables 
 CHARACTER(LEN=2)       :: YDIR 
 CHARACTER (LEN=40)     :: YTITLE                     !  Title for date print 
diff --git a/src/MNH/ini_deep_convection.f90 b/src/MNH/ini_deep_convection.f90
index d3e9e033ed0ca7c9a9c0d944cc96899cdc6b80db..6176028812b1cd7633a110245c2dc834361592c2 100644
--- a/src/MNH/ini_deep_convection.f90
+++ b/src/MNH/ini_deep_convection.f90
@@ -180,7 +180,7 @@ REAL, DIMENSION(:,:),   INTENT(INOUT) :: PCG_TOTAL_NUMBER ! Total number of CG
 !
 INTEGER                :: ILUOUT
 INTEGER                :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)     :: YRECFM                    ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM                    ! management
 CHARACTER (LEN=100)    :: YCOMMENT                  ! variables  
 INTEGER                :: JSV                       ! number of tracers
 !
diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90
index ced5e6c72a6d177b3d8eb8f17c0fc4be916ee7d7..d468fed174cd9f45547467d25f14b4ebcdcd0131 100644
--- a/src/MNH/ini_lb.f90
+++ b/src/MNH/ini_lb.f90
@@ -218,7 +218,7 @@ INTEGER             :: JSV,JRR                    ! Loop index for MOIST AND
                                                   !  additional scalar variables 
 INTEGER             :: IRR                        !  counter for moist variables
 INTEGER             :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)  :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM              ! management
 CHARACTER (LEN=100) :: YCOMMENT            ! variables  
 CHARACTER (LEN=2)   :: YDIR
 CHARACTER (LEN=4)   :: YDIRLB
diff --git a/src/MNH/ini_ls.f90 b/src/MNH/ini_ls.f90
index 25672c80bb149eb6def930e178e4db78ec71ed4e..7b8b7d34b165069affeeeb60977e8937a53d274e 100644
--- a/src/MNH/ini_ls.f90
+++ b/src/MNH/ini_ls.f90
@@ -125,7 +125,7 @@ LOGICAL,               INTENT(IN),   OPTIONAL :: OSTEADY_DMASS ! Md evolution lo
 !*       0.2   declarations of local variables
 !
 INTEGER             :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)  :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM              ! management
 CHARACTER (LEN=100) :: YCOMMENT            ! variables  
 CHARACTER(LEN=2)    :: YDIR                ! 
 INTEGER                :: ILUOUT                     !  Logical unit number
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index c9aa1051eaa15125e938ed54592739c971f1a9dd..ffea563e79633940dd7aed222c31935a1ffe6333 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -452,7 +452,7 @@ CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
 INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT!comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM  ! Name of the desired field in LFIFM file
 INTEGER             :: IIU     ! Upper dimension in x direction (local)
 INTEGER             :: IJU     ! Upper dimension in y direction (local)
 INTEGER             :: IIU_ll  ! Upper dimension in x direction (global)
diff --git a/src/MNH/ini_param_elec.f90 b/src/MNH/ini_param_elec.f90
index e6b8039ebd2afdbc741727879aec52fb54a40dd0..8a3f2edf2bb646ecfe61818b2959ec1a0ab62f58 100644
--- a/src/MNH/ini_param_elec.f90
+++ b/src/MNH/ini_param_elec.f90
@@ -135,7 +135,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZMANSELL1, ZMANSELL2 ! Used to initialize
                                                           ! XMANSELL array
 INTEGER             :: IGRID,ILENCH,IRESP
 CHARACTER (LEN=100) :: YCOMMENT
-CHARACTER (LEN=16)  :: YRECFM
+CHARACTER (LEN=LEN_HREC)  :: YRECFM
 CHARACTER (LEN=2)   :: YDIR
 !
 INTEGER             :: JLWC, JTEMP
diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index 7494a0f4138d45906396e2f2973c2d7cf3f7815f..f1a637a9b06ae9a1d9b0c997ff75e404d0d66f78 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -148,7 +148,7 @@ CHARACTER(LEN=*), INTENT(IN), OPTIONAL  :: HCHEMFILE  ! Name of the chem file
 INTEGER                :: ILUOUT                     !  Logical unit number
                                                      ! associated with HLUOUT 
 INTEGER                :: IGRID,ILENCH,IRESP,ININAR      !  File 
-CHARACTER (LEN=16)     :: YRECFM                               ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM                               ! management
 CHARACTER (LEN=100)    :: YCOMMENT                             ! variables 
 CHARACTER(LEN=2)       :: YDIR 
 CHARACTER(LEN=32)      :: YDESFM
diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90
index 27926cdf69b23c9229c70ad9aba9c044088f587b..2c4a1762ff789b05f99d9300b30cb586fc84479d 100644
--- a/src/MNH/ini_radiations.f90
+++ b/src/MNH/ini_radiations.f90
@@ -177,7 +177,7 @@ REAL, DIMENSION(:,:,:),     INTENT(OUT) :: PRADEFF ! effective radius
 !*       0.2   declarations of local variables
 !
 INTEGER                :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)     :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM              ! management
 CHARACTER (LEN=100)    :: YCOMMENT            ! variables  
 !
 INTEGER, DIMENSION(0:11) :: IBIS, INOBIS ! Cumulative number of days per month
diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90
index 6c2cee16b749190123f8046af87bc2a048c17db5..44e51a776fd4f187b967c9452c850f3f88b43305 100644
--- a/src/MNH/ini_radiations_ecmwf.f90
+++ b/src/MNH/ini_radiations_ecmwf.f90
@@ -280,7 +280,7 @@ REAL, DIMENSION(:,:),ALLOCATABLE :: ZLON          ! longitude
 REAL, DIMENSION(SIZE(PSTATM,1)) :: ZZSTAT ! half level altitudes of standard atm.
 !
 INTEGER                :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)     :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM              ! management
 CHARACTER (LEN=100)    :: YCOMMENT            ! variables  
 !
 INTEGER :: IINFO_ll                   ! return code of parallel routine
diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90
index 503eebc7247e3a16cc2f6c5c4974a614aae97e1f..61f716b439ba127316377caf18be3e43bccd2fd0 100644
--- a/src/MNH/ini_segn.f90
+++ b/src/MNH/ini_segn.f90
@@ -219,7 +219,7 @@ INTEGER            :: IRESP,ILUSEG,ININAR         ! File management variables
 INTEGER            :: IGRID,ILENCH                !             "
 CHARACTER(LEN=100) :: YCOMMENT                    !             "
 CHARACTER(LEN=2)   :: YDIR    ! Type  of the data field in LFIFM file
-CHARACTER (LEN=16) :: YRECFM  ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC) :: YRECFM  ! Name of the desired field in LFIFM file
 CHARACTER (LEN=5)  :: YCONF                       ! Local variables which have
 LOGICAL            :: GFLAT                       ! the same definition as the
 LOGICAL            :: GUSERV,GUSERC,GUSERR,GUSERI ! variables in module MODD_CONF,
diff --git a/src/MNH/ini_size_spawn.f90 b/src/MNH/ini_size_spawn.f90
index b0a17124acc93244c49296d7c3dff1db9c6587ea..3117f1f1fc833db95ba94822f6d841231963eb47 100644
--- a/src/MNH/ini_size_spawn.f90
+++ b/src/MNH/ini_size_spawn.f90
@@ -132,7 +132,7 @@ CHARACTER (LEN=5)  :: YPRESOPT        ! Pressure solver option of model 1
 INTEGER            :: IITR            ! Iterations of pressure solver of model 1
 CHARACTER (LEN=28) :: YMY_NAME, YDAD_NAME
 CHARACTER (LEN=2)  :: YSTORAGE_TYPE
-CHARACTER (LEN=16) :: YRECFM
+CHARACTER (LEN=LEN_HREC) :: YRECFM
 INTEGER            :: ILENCH, IGRID
 CHARACTER (LEN=100):: YCOMMENT
 INTEGER            :: IMI
diff --git a/src/MNH/ini_sizen.f90 b/src/MNH/ini_sizen.f90
index 3a94236b61c9b6218202ba8472489f31d6f36c36..c25a82751d8ae5bd2d458380d16340b0c8960eb5 100644
--- a/src/MNH/ini_sizen.f90
+++ b/src/MNH/ini_sizen.f90
@@ -150,7 +150,7 @@ CHARACTER(LEN=2)    :: YDIR    ! Type  of the data field in LFIFM file
 INTEGER             :: IGRID   ! C-grid indicator in LFIFM file 
 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM  ! Name of the desired field in LFIFM file
 INTEGER             :: IJPHEXT
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 15bc6f897429e13f083d68ae310371ab83d10562..15322b6a9e0e8c1c8c3e56ec59cf350298608781 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -157,7 +157,7 @@ CHARACTER(LEN=2)    :: YDIR   ! Type  of the data field in LFIFM file
 INTEGER             :: IGRID   ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH  ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT!comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM  ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM  ! Name of the desired field in LFIFM file
 INTEGER             :: IIU     ! Upper dimension in x direction (local)
 INTEGER             :: IJU     ! Upper dimension in y direction (local)
 INTEGER             :: IIU_ll  ! Upper dimension in x direction (global)
diff --git a/src/MNH/ini_surf_rad.f90 b/src/MNH/ini_surf_rad.f90
index 9eb2433c78ac509f60b3c17f4edfba1449af6944..b42199c00ad494d9903f491c7708ad7b22c4f0f8 100644
--- a/src/MNH/ini_surf_rad.f90
+++ b/src/MNH/ini_surf_rad.f90
@@ -82,7 +82,7 @@ REAL, DIMENSION(:,:),   INTENT(OUT) :: PTSRAD    ! radiative surface temperature
 !*       0.2   declarations of local variables
 !
 INTEGER                :: IGRID,ILENCH,IRESP  !   File 
-CHARACTER (LEN=16)     :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM              ! management
 CHARACTER (LEN=100)    :: YCOMMENT            ! variables  
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/init_for_convlfi.f90 b/src/MNH/init_for_convlfi.f90
index 7384e4cdca321f77559dbf0cdf829362c94dd9c4..518ed32ce64b7d91145f9dc0f0c944edff30c6de 100644
--- a/src/MNH/init_for_convlfi.f90
+++ b/src/MNH/init_for_convlfi.f90
@@ -106,7 +106,7 @@ CHARACTER(LEN=*),       INTENT(IN)    :: HLUOUT      ! output listing
 !*       0.2   Local variables
 !
 INTEGER  :: IGRID,ILENCH,IRESP,ILUOUT          ! return code of file management
-CHARACTER (LEN=16)     :: YRECFM               ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM               ! management
 CHARACTER (LEN=100)    :: YCOMMENT             ! variables
 CHARACTER (LEN=2)      :: YDIR                 !
 INTEGER, DIMENSION(3)  :: ITDATE               ! date array
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index d4b667566b0361547633198cf8745855678d0e8d..303fbc4d64c7cdf9fd1df1271319c84976ce0078 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -167,7 +167,7 @@ INTEGER             :: IGRID      ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH     ! Length of comment string in LFIFM file
 INTEGER             :: ILUOUT     ! Logical unit of output listing 
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 
 ! For Activation :                       
 LOGICAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) &
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 1c2032fd957fc4efc657ef23b872577d6a07637e..ab37577e70a6bc178ff9d82eb054b951539f6449 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -265,7 +265,7 @@ INTEGER                  :: IIE,IJE    ! Horz index values of the last inner mas
 INTEGER                  :: JITER,ITERMAX  ! iterative loop for first order adjustment
 INTEGER                  :: ILUOUT     ! Logical unit of output listing 
 CHARACTER (LEN=100)      :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)       :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)       :: YRECFM     ! Name of the desired field in LFIFM file
 !
 INTEGER                           :: ISIZE
 REAL, DIMENSION(:), ALLOCATABLE   :: ZRTMIN
diff --git a/src/MNH/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index a7cb0438fccb5ad2f2be35818dde616909b6811c..514aecbd57f84aa1b0bb13ef4b7379fc30cd4c5d 100644
--- a/src/MNH/ls_coupling.f90
+++ b/src/MNH/ls_coupling.f90
@@ -263,7 +263,7 @@ REAL, DIMENSION(:,:,:,:),        INTENT(OUT) :: PLBYRS  ,PLBYSVS  ! in x and y-d
 INTEGER                :: ILUOUT                     !  Logical unit number
                                                      ! associated with HLUOUT 
 INTEGER                :: IGRID,ILENCH,IRESP   !  File 
-CHARACTER (LEN=16)     :: YRECFM                     ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM                     ! management
 CHARACTER (LEN=100)    :: YCOMMENT                   ! variables  
 CHARACTER(LEN=2)       :: YDIR
 REAL                   :: ZLENG                      ! Interpolation length
diff --git a/src/MNH/menu_diachro.f90 b/src/MNH/menu_diachro.f90
index c222f2a54c45586cc9655fec62f00ee72e8c7afd..54e4b0225225923610c101a3761c3956044400d0 100644
--- a/src/MNH/menu_diachro.f90
+++ b/src/MNH/menu_diachro.f90
@@ -74,9 +74,9 @@ CHARACTER(LEN=*) :: HFILEDIA, HLUOUTDIA
 !              ---------------
 
 !
-CHARACTER(LEN=16) :: YRECFM
+CHARACTER(LEN=LEN_HREC) :: YRECFM
 CHARACTER(LEN=20) :: YCOMMENT
-CHARACTER(LEN=16),DIMENSION(1500),SAVE    :: YGROUP
+CHARACTER(LEN=LEN_HREC),DIMENSION(1500),SAVE    :: YGROUP
 INTEGER   ::   ILENG, ILENCH, IGRID, J, JJ, IALREADY
 INTEGER   ::   IRESPDIA
 INTEGER,SAVE   ::   IGROUP=0
@@ -95,7 +95,7 @@ IF(HGROUP == 'END')THEN
     RETURN
   ENDIF
   IGRID=0
-  ILENG=16*IGROUP
+  ILENG=LEN_HREC*IGROUP
   ILENCH=LEN(YCOMMENT)
   YRECFM='MENU_BUDGET.DIM'
   CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ILENG,&
@@ -104,8 +104,8 @@ IF(HGROUP == 'END')THEN
   YRECFM='MENU_BUDGET'
   ALLOCATE(ITABCHAR(ILENG))
   DO JJ=1,IGROUP
-    DO J = 1,16
-      ITABCHAR(16*(JJ-1)+J) = ICHAR(YGROUP(JJ)(J:J))
+    DO J = 1,LEN_HREC
+      ITABCHAR(LEN_HREC*(JJ-1)+J) = ICHAR(YGROUP(JJ)(J:J))
     ENDDO
   ENDDO
   CALL FMWRIT(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, &
@@ -127,11 +127,11 @@ ELSE IF(HGROUP == 'READ')THEN
   YRECFM='MENU_BUDGET'
   CALL FMREAD(HFILEDIA,YRECFM,HLUOUTDIA,'--',ITABCHAR, &
   IGRID,ILENCH,YCOMMENT,IRESPDIA)
-  IGROUP=ILENG/16
+  IGROUP=ILENG/LEN_HREC
 ! print *,' ILENG ILENCH IGROUP ',ILENG,ILENCH,IGROUP
   DO JJ=1,IGROUP
-    DO J = 1,16
-      YGROUP(JJ)(J:J)=CHAR(ITABCHAR(16*(JJ-1)+J))
+    DO J = 1,LEN_HREC
+      YGROUP(JJ)(J:J)=CHAR(ITABCHAR(LEN_HREC*(JJ-1)+J))
     ENDDO
   ENDDO
   DO JJ=1,IGROUP
diff --git a/src/MNH/mnhread_zs_dummyn.f90 b/src/MNH/mnhread_zs_dummyn.f90
index 4f554c98bde4617dd4096e6adced0a5ffd9e2ff7..6d9e2db058c99f07cdd47476b9b04b232d1c4c8c 100644
--- a/src/MNH/mnhread_zs_dummyn.f90
+++ b/src/MNH/mnhread_zs_dummyn.f90
@@ -88,7 +88,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
-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           :: IIU            ! X array size
diff --git a/src/MNH/mnhwrite_zs_dummyn.f90 b/src/MNH/mnhwrite_zs_dummyn.f90
index 7d68b018b16a9524010a0c9aaf4053e75fd32684..a2ba3ff726d25024d0f7685f77749d7f5de36884 100644
--- a/src/MNH/mnhwrite_zs_dummyn.f90
+++ b/src/MNH/mnhwrite_zs_dummyn.f90
@@ -84,7 +84,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
                                     ! at the open of the file in LFI  routines 
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
-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
 !
 !
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index a132954f2bacc53d39a053c8014a6b0f442314cd..93658d2298a1b3aa19aee5df86a47c8d46599e02 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -74,7 +74,7 @@ CHARACTER(LEN=2), SAVE, DIMENSION(:,:),  & ! resulting string character of the
         ALLOCATABLE :: CBUACTION           ! transcription of the budget actions 
                                            ! (integer) read in  namelists or 
                                            ! set by default
-CHARACTER (LEN=16), SAVE, DIMENSION(:,:),& ! names of records on the FM file 
+CHARACTER (LEN=LEN_HREC), SAVE, DIMENSION(:,:),& ! names of records on the FM file 
                  ALLOCATABLE :: CBURECORD  ! for the budgets 
 !
 CHARACTER (LEN=99), SAVE, DIMENSION(:,:),& ! name of a process for a budget. It
diff --git a/src/MNH/mode_RBK90_Integrator.f90 b/src/MNH/mode_RBK90_Integrator.f90
index 3746e1712af2007c807dc77135d6e7bbda710f55..4e1c88a42b71894dec8f24ff778053a063d07f35 100644
--- a/src/MNH/mode_RBK90_Integrator.f90
+++ b/src/MNH/mode_RBK90_Integrator.f90
@@ -303,7 +303,7 @@ INTEGER, INTENT(IN) :: KMI      ! model number
    REAL :: ros_A(15), ros_C(15), ros_M(6), ros_E(6), &
                     ros_Alpha(6), ros_Gamma(6), ros_ELO
    LOGICAL :: ros_NewF(6)
-   CHARACTER(LEN=LEN_HREC) :: ros_Name
+   CHARACTER(LEN=16) :: ros_Name
 !~~~>  Local variables
    REAL :: Roundoff, FacMin, FacMax, FacRej, FacSafe
    REAL :: Hmin, Hmax, Hstart
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 8b07c2ce1b3fb29c37b4abbbfd3b8cde02b976a6..5dca40ac1ee1dcc1745f4308fc4e73460c0892c7 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -444,7 +444,7 @@ REAL*8,DIMENSION(2)         :: ZTIME,ZTIME1,ZTIME2,ZEND,ZTOT,ZALL,ZTOT_PT
 REAL*8,DIMENSION(2)         :: ZTIME_STEP,ZTIME_STEP_PTS
 CHARACTER                 :: YMI
 INTEGER                   :: IPOINTS
-CHARACTER(len=LEN_HREC)         :: YTCOUNT,YPOINTS
+CHARACTER(len=16)         :: YTCOUNT,YPOINTS
 
 REAL         :: ZSTAT_CSTORE,ZSTAT_CBOUND,ZSTAT_CGUESS,ZSTAT_CADV,ZSTAT_CSOURCES
 REAL         :: ZSTAT_CDIFF,ZSTAT_CRELAX,ZSTAT_CPARAM
diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90
index a646154c342a74005356035e1003026d756cab9b..b956876f4c88db4effa1968eeb94c2f476bc9f9e 100644
--- a/src/MNH/paspol.f90
+++ b/src/MNH/paspol.f90
@@ -146,7 +146,7 @@ REAL,  DIMENSION(:,:,:), ALLOCATABLE :: ZTEMPO, ZSVT ! Work array
 INTEGER           :: IGRID     ! IGRID : grid indicator
 INTEGER           :: ILENCH    ! ILENCH : length of comment string
 !
-CHARACTER(LEN=16) :: YRECFM    ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM    ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT  ! Comment string
 CHARACTER (LEN=2) :: YDIR      ! Type of the data field
 INTEGER           :: IRESP     ! IRESP  : return-code if a problem appears
diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90
index 9fedcde5c96b54351106c78a076f30c060f52807..a66ecfb7b1a052acdb70636b8b5a4eb15da5007e 100644
--- a/src/MNH/prandtl.f90
+++ b/src/MNH/prandtl.f90
@@ -277,7 +277,7 @@ INTEGER             :: ILENG        ! Length of the data field in LFIFM file
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 INTEGER::  ISV                      ! number of scalar variables       
 INTEGER::  JSV                      ! loop index for the scalar variables  
 
diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90
index 2f5a3e2050c6522ef2c3a5464a7c4fdf7167c025..be1891511fc97506fde591d5e2586d88965b3794 100644
--- a/src/MNH/prep_pgd.f90
+++ b/src/MNH/prep_pgd.f90
@@ -137,7 +137,7 @@ REAL, DIMENSION(:,:),ALLOCATABLE   :: ZWORK ! work array for lat and lon reshape
 REAL, DIMENSION(:,:),ALLOCATABLE   :: ZWORK_LAT ! work array for lat and lon reshape
 REAL, DIMENSION(:,:),ALLOCATABLE   :: ZWORK_LON ! work array for lat and lon reshape
 REAL, DIMENSION(:,:),ALLOCATABLE   :: ZZS ! work array for lat and lon reshape
-CHARACTER(LEN=16) :: YRECFM   ! name of record
+CHARACTER(LEN=LEN_HREC) :: YRECFM   ! name of record
 INTEGER           :: IGRID    ! grid location
 INTEGER           :: ILENCH   ! length of comment string
 CHARACTER(LEN=100):: YCOMMENT ! comment string
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index 9101bfd49d67b8f4a1dbed1f82b2f89c1c6e0f92..0acb5111fe9b943765043849556e8429f3c0ce90 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -609,7 +609,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2),SIZE(PDTHRAD,3)) &
      :: ZSTORE_3D, ZSTORE_3D2! 3D work array for storage
 REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2)) &
diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90
index 77ed5a59085503f2edd108d9734e8d564847f868..2c482fd43fc969cf22b6c2566d22a5123c174248 100644
--- a/src/MNH/rain_c2r2_khko.f90
+++ b/src/MNH/rain_c2r2_khko.f90
@@ -426,7 +426,7 @@ REAL, DIMENSION(:), ALLOCATABLE    :: ZRTMIN
 REAL, DIMENSION(:), ALLOCATABLE    :: ZCTMIN
 REAL :: ZTMP
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
 !
 !
diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90
index d2b1c005bd8c0f10bdcaa812bfc32a28b153ed71..0e20f19928d306f883cc026a99be481c9ad835b5 100644
--- a/src/MNH/rain_ice_elec.f90
+++ b/src/MNH/rain_ice_elec.f90
@@ -458,7 +458,7 @@ REAL, DIMENSION(SIZE(XRTMIN))     :: ZRTMIN
 INTEGER , DIMENSION(SIZE(GMICRO)) :: I1,I2,I3 ! Used to replace the COUNT
 INTEGER                           :: JL       ! and PACK intrinsics
 CHARACTER (LEN=100) :: YCOMMENT   ! Comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM     ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM     ! Name of the desired field in LFIFM file
 !
 LOGICAL, DIMENSION(:,:),ALLOCATABLE :: GELEC ! Logical of work for elec
 REAL, DIMENSION(:),   ALLOCATABLE :: ZRSMIN_ELEC  ! Limit value of ZRXS where charge is available
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 91d0ac3d3b7c88ecbc61f293ae21207247edd5c0..e55c8e12a06f71ac8e4e2ce38cd8ef05bab825fe 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -278,7 +278,7 @@ INTEGER  :: IDATE
 INTEGER  :: ITIMESTEP
 CHARACTER(LEN=10) :: CSTEPUNIT
 !chemistery field
-CHARACTER(LEN=LEN_HREC)                  :: YPRE_MOC="PRE_MOC1.nam"
+CHARACTER(LEN=16)                  :: YPRE_MOC="PRE_MOC1.nam"
 INTEGER, DIMENSION(:), ALLOCATABLE :: INUMGRIB, INUMLEV  ! grib
 INTEGER, DIMENSION(:), ALLOCATABLE :: INUMLEV1, INUMLEV2 !numbers
 INTEGER                            :: IMOC
@@ -287,7 +287,7 @@ INTEGER                            :: ICHANNEL
 INTEGER                            :: INDX
 INTEGER                            :: INACT
 CHARACTER(LEN=40)                  :: YINPLINE        ! input line
-CHARACTER(LEN=LEN_HREC)                  :: YFIELD
+CHARACTER(LEN=16)                  :: YFIELD
 CHARACTER, PARAMETER               :: YPTAB = CHAR(9) ! TAB character is ASCII : 9
 CHARACTER, PARAMETER               :: YPCOM = CHAR(44)! COMma character is ASCII : 44
 CHARACTER(LEN=40), DIMENSION(:), ALLOCATABLE :: YMNHNAME ! species names
diff --git a/src/MNH/read_dummy_gr_fieldn.f90 b/src/MNH/read_dummy_gr_fieldn.f90
index 0a733a3246bf5cbdeac78176427f664ad510576d..1cf4325674c583a354c24f7d57f646ff265c2eae 100644
--- a/src/MNH/read_dummy_gr_fieldn.f90
+++ b/src/MNH/read_dummy_gr_fieldn.f90
@@ -126,7 +126,7 @@ LOGICAL,                         INTENT(IN) :: OREAD_ALL       ! flag to read th
 !*       0.2   declarations of local variables
 !
 INTEGER             :: IGRID,ILENCH,IRESP         !   File 
-CHARACTER (LEN=16)  :: YRECFM                     ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM                     ! management
 CHARACTER (LEN=100) :: YCOMMENT                   ! variables
 CHARACTER (LEN=20 ) :: YSTRING20                  ! string
 CHARACTER (LEN=3  ) :: YSTRING03                  ! string
diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90
index f9d403154aacb69932395af19436a68781cb6069..2676b6c8ea3dc3958fcaf38d4ca0eae7994a35d8 100644
--- a/src/MNH/read_field.f90
+++ b/src/MNH/read_field.f90
@@ -377,7 +377,7 @@ REAL, DIMENSION(KIU,KJU,KKU) :: Z3D               ! 3D array used to read  data
                                                   ! in initial file 
 REAL, DIMENSION(KIU,KJU,KKU) :: ZWORK             ! to compute supersaturation 
 INTEGER             :: IGRID,ILENCH,IRESP         !   File 
-CHARACTER (LEN=16)  :: YRECFM                     ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM                     ! management
 CHARACTER (LEN=100) :: YCOMMENT                   ! variables 
 CHARACTER (LEN=2)   :: YDIR                       !
 INTEGER             :: ILUOUT                     ! Unit number for prints
diff --git a/src/MNH/read_grid_time_mesonh_case.f90 b/src/MNH/read_grid_time_mesonh_case.f90
index 268b5fdf8e3aad11c5f21807afe1b27257aedfd8..0919d6b04cecd2ad0d1c95a4cd723f86045bd4c3 100644
--- a/src/MNH/read_grid_time_mesonh_case.f90
+++ b/src/MNH/read_grid_time_mesonh_case.f90
@@ -128,7 +128,7 @@ INTEGER            :: ILENCH     ! length of comment string
 INTEGER            :: IMASDEV    ! Masdev version
 
 CHARACTER(LEN=100) :: YCOMMENT   ! comment string
-CHARACTER(LEN=16)  :: YRECFM     ! Name of the article to be read
+CHARACTER(LEN=LEN_HREC)  :: YRECFM     ! Name of the article to be read
 INTEGER            :: JL         ! loop controls
 INTEGER            :: ILMAX_LS
 !
diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90
index aff3b67d5b0573701cb641a6084654c157a40c39..d7e1e4ed5adf0a1f2e7cb3eb07207e5feb769715 100644
--- a/src/MNH/read_hgrid.f90
+++ b/src/MNH/read_hgrid.f90
@@ -110,7 +110,7 @@ CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
 !
 !*       0.2   declarations of local variables
 !
-CHARACTER(LEN=16)      :: YRECFM
+CHARACTER(LEN=LEN_HREC)      :: YRECFM
 INTEGER                :: IGRID,ILENCH,IRESP
 CHARACTER(LEN=100)     :: YCOMMENT
 INTEGER                :: IMASDEV
diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90
index 91e0c67119c5ac46b765e62d9f39ff67460c7ce8..57fdcb2b8d07c7c70319e5f1847fd6542e2b2aca 100644
--- a/src/MNH/read_hgridn.f90
+++ b/src/MNH/read_hgridn.f90
@@ -105,7 +105,7 @@ CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
 !*       0.2   declarations of local variables
 !
 INTEGER             :: ILUOUT
-CHARACTER (LEN=16)  :: YRECFM
+CHARACTER (LEN=LEN_HREC)  :: YRECFM
 INTEGER             :: ILENCH, IGRID, IRESP
 CHARACTER (LEN=100) :: YCOMMENT
 REAL                :: ZLAT0,ZLON0,ZRPK,ZBETA
diff --git a/src/MNH/read_precip_field.f90 b/src/MNH/read_precip_field.f90
index 51336a7f89d209c202b2afa3f2de222860df9231..e2a66e19493117e4041e86b6a1e99ac29d6c7ee3 100644
--- a/src/MNH/read_precip_field.f90
+++ b/src/MNH/read_precip_field.f90
@@ -141,7 +141,7 @@ REAL, DIMENSION(SIZE(PINPRR,1),SIZE(PINPRR,2)) :: Z2D ! 2D array to read  data
 REAL, DIMENSION(SIZE(PINPRR3D,1),SIZE(PINPRR3D,2),SIZE(PINPRR3D,3)) :: Z3D ! 3D array to read  data
                                                   ! in initial file 
 INTEGER             :: IGRID,ILENCH,IRESP         !   File 
-CHARACTER (LEN=16)  :: YRECFM                     ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM                     ! management
 CHARACTER (LEN=100) :: YCOMMENT                   ! variables   
 CHARACTER(LEN=2)    :: YDIR
 CHARACTER(LEN=4)    :: YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT                    
diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 74917206eab6371b9dfaa524657a3fa89630e5e2..1493067cd72225a8640326fe51505456e8107885 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -60,7 +60,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)  :: HREC     ! name of the article to be read
 REAL,               INTENT(OUT) :: PFIELD   ! the real scalar to be read
 INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
 CHARACTER(LEN=100), INTENT(OUT) :: HCOMMENT ! comment
@@ -195,7 +195,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),   INTENT(IN) :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),   INTENT(IN) :: HREC     ! name of the article to be read
 INTEGER,             INTENT(IN) :: KL       !  number of points
 REAL, DIMENSION(KL), INTENT(OUT):: PFIELD   ! array containing the data field
 INTEGER,             INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
@@ -217,7 +217,7 @@ REAL, DIMENSION(:),   ALLOCATABLE :: ZWORK1D! work array read in the file
 REAL                              :: ZW     ! work value
 
 INTEGER           :: IMASDEV
-CHARACTER(LEN=20) :: YREC
+CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
 !
 INTEGER           :: IIU, IJU, IIB, IJB, IIE, IJE ! dimensions of horizontal fields
@@ -458,7 +458,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),       INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),       INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                 INTENT(IN)  :: KL1      ! number of points
 INTEGER,                 INTENT(IN)  :: KL2      ! second dimension
 REAL, DIMENSION(KL1,KL2),INTENT(OUT) :: PFIELD   ! array containing the data field
@@ -587,7 +587,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),   INTENT(IN) :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),   INTENT(IN) :: HREC     ! name of the article to be read
 INTEGER,             INTENT(IN) :: KL1,KL2  !  number of points
 REAL, DIMENSION(KL1,KL2), INTENT(OUT):: PFIELD   ! array containing the data field
 LOGICAL,DIMENSION(JPCOVER),   INTENT(IN) ::OFLAG  ! mask for array filling
@@ -605,7 +605,7 @@ INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 
 INTEGER           :: IMASDEV
-CHARACTER(LEN=20) :: YREC
+CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YDIR
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
 !
@@ -755,7 +755,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),   INTENT(IN) :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),   INTENT(IN) :: HREC     ! name of the article to be read
 INTEGER,             INTENT(IN) :: KL1  !  number of points
 INTEGER,             INTENT(IN) :: KCOVER ! index of the vertical level, it should be a index such that LCOVER(KCOVER)=.TRUE.
 REAL, DIMENSION(KL1), INTENT(OUT):: PFIELD   ! array containing the data field
@@ -773,7 +773,7 @@ INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 
 INTEGER           :: IMASDEV
-CHARACTER(LEN=20) :: YREC
+CHARACTER(LEN=LEN_HREC) :: YREC
 CHARACTER(LEN=2)  :: YDIR
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
 !
@@ -915,7 +915,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,            INTENT(OUT) :: KFIELD   ! the integer to be read
 INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
 CHARACTER(LEN=100), INTENT(OUT) :: HCOMMENT ! comment
@@ -935,7 +935,7 @@ INTEGER           :: INFO_ll
 LOGICAL, DIMENSION(255) :: GCOVER
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCOVER
 INTEGER :: JCOVER
-CHARACTER(LEN=16) :: YRECFM
+CHARACTER(LEN=LEN_HREC) :: YRECFM
 !JUANZ
 INTEGER           :: NCOVER,ICOVER,IKL2
 REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZWORK3D
@@ -1087,7 +1087,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),      INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),      INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                INTENT(IN)  :: KL       ! number of points
 INTEGER, DIMENSION(KL), INTENT(OUT) :: KFIELD   ! the integer to be read
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
@@ -1189,7 +1189,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)  :: HREC      ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)  :: HREC      ! name of the article to be read
 CHARACTER(LEN=40),  INTENT(OUT) :: HFIELD    ! the integer to be read
 INTEGER,            INTENT(OUT) :: KRESP     ! KRESP  : return-code if a problem appears
 CHARACTER(LEN=100), INTENT(OUT) :: HCOMMENT  ! comment
@@ -1333,7 +1333,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),      INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),      INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                INTENT(IN)  :: KL       ! number of points
 LOGICAL, DIMENSION(KL), INTENT(OUT) :: OFIELD   ! array containing the data field
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
@@ -1439,7 +1439,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)  :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)  :: HREC     ! name of the article to be read
 LOGICAL,            INTENT(OUT) :: OFIELD   ! array containing the data field
 INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
 CHARACTER(LEN=100), INTENT(OUT) :: HCOMMENT ! comment
@@ -1534,7 +1534,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)    :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)    :: HREC     ! name of the article to be read
 INTEGER,            INTENT(OUT)   :: KYEAR    ! year
 INTEGER,            INTENT(OUT)   :: KMONTH   ! month
 INTEGER,            INTENT(OUT)   :: KDAY     ! day
@@ -1547,7 +1547,7 @@ CHARACTER(LEN=100), INTENT(OUT)   :: HCOMMENT ! comment
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 !
-CHARACTER(LEN=16)              :: YRECFM     ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC)              :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
 CHARACTER(LEN=2)               :: YFILETYPE2 ! MESONH file type
 INTEGER, DIMENSION(3)  :: ITDATE
@@ -1650,7 +1650,7 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-CHARACTER(LEN=16),  INTENT(IN)    :: HREC     ! name of the article to be read
+CHARACTER(LEN=LEN_HREC),  INTENT(IN)    :: HREC     ! name of the article to be read
 INTEGER,            INTENT(IN) :: KL1       ! number of points
 
 INTEGER, DIMENSION(KL1), INTENT(OUT)   :: KYEAR    ! year
@@ -1665,7 +1665,7 @@ CHARACTER(LEN=100), INTENT(OUT)   :: HCOMMENT ! comment
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 !
-CHARACTER(LEN=16)              :: YRECFM     ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC)              :: YRECFM     ! Name of the article to be written
 CHARACTER(LEN=40)              :: YFILETYPE40! MESONH file type
 CHARACTER(LEN=2)               :: YFILETYPE2 ! MESONH file type
 INTEGER, DIMENSION(3,KL1)  :: ITDATE
diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90
index 64af97f943f8f6e451ddd6de484b7b0b59bdddf2..e96bab6072ad186132c6ab4c36661005b8ec6c3f 100644
--- a/src/MNH/set_grid.f90
+++ b/src/MNH/set_grid.f90
@@ -330,7 +330,7 @@ REAL, DIMENSION(:), ALLOCATABLE   :: ZYHAT_ll    !   Position y in the conformal
 REAL                         :: ZXHATM,ZYHATM    ! coordinates of mass point
 REAL                         :: ZLATORI, ZLONORI ! lat and lon of left-bottom point
 INTEGER                :: IGRID,ILENCH,IRESP  !   File
-CHARACTER (LEN=16)     :: YRECFM              ! management
+CHARACTER (LEN=LEN_HREC)     :: YRECFM              ! management
 CHARACTER (LEN=100)    :: YCOMMENT            ! variables
 CHARACTER (LEN=2)      :: YDIR                !
 INTEGER, DIMENSION(3)  :: ITDATE           ! date array
diff --git a/src/MNH/set_ref.f90 b/src/MNH/set_ref.f90
index 479fa8bf6fa0db30e13120fca85645990c71863c..be247965de3c11ed51e85f5a8b2ab930cebd9a6b 100644
--- a/src/MNH/set_ref.f90
+++ b/src/MNH/set_ref.f90
@@ -213,7 +213,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRHODJ    ! rhod J
 !*       0.2   declarations of local variables
 !
 INTEGER             :: IGRID,ILENCH,IRESP        !   File 
-CHARACTER (LEN=16)  :: YRECFM                    ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM                    ! management
 CHARACTER (LEN=100) :: YCOMMENT                  ! variables  
 CHARACTER  (LEN=2)  :: YDIR 
 INTEGER             :: ILUOUT                    ! Unit number for prints
diff --git a/src/MNH/set_subdomain.f90 b/src/MNH/set_subdomain.f90
index 001d82105d5fbc6bb540a7161ce53fd2b54d0170..41b385180fc025ef702ce664547ea6951e21a3b9 100644
--- a/src/MNH/set_subdomain.f90
+++ b/src/MNH/set_subdomain.f90
@@ -137,7 +137,7 @@ REAL, DIMENSION(:),   ALLOCATABLE :: ZXHAT      ! = XXHAT(:)
 REAL, DIMENSION(:),   ALLOCATABLE :: ZYHAT      ! = XYHAT(:)
 !
 INTEGER             :: IGRID,ILENCH         !   File
-CHARACTER (LEN=16)  :: YRECFM               ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM               ! management
 CHARACTER (LEN=100) :: YCOMMENT             ! variables
 LOGICAL :: GFOUND     ! return code when searching namelist
 !
diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90
index a91a1d9722befa1e1af18c90a00d0707c8783ca8..e6fe763f002b9afe11222d9a0a14d1f6b463b5cd 100644
--- a/src/MNH/shallow_mf_pack.f90
+++ b/src/MNH/shallow_mf_pack.f90
@@ -259,7 +259,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !------------------------------------------------------------------------
 
 !!! 1. Initialisation
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index ae8476c6482bebf149c3cde79c48fe79d8fae4ad..45617fb5f36d7325c03d6371fd7ebc30f8104c9d 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -272,9 +272,9 @@ REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRT1
 LOGICAL :: GUSERV
 !
 INTEGER             :: IGRID,ILENCH   !   File
-CHARACTER (LEN=16)  :: YRECFM         ! management
-CHARACTER (LEN=16)  :: YRECFM_T        ! management
-CHARACTER (LEN=16)  :: YRECFM_M        ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM         ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM_T        ! management
+CHARACTER (LEN=LEN_HREC)  :: YRECFM_M        ! management
 CHARACTER (LEN=100) :: YCOMMENT       ! variables
 CHARACTER (LEN=2)   :: YDIR
 !
diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90
index b07ae8d7fdf9d27b522258638f5d7370863cee89..f8716dacef723fb6018514464ea9b26604a45146 100644
--- a/src/MNH/tke_eps_sources.f90
+++ b/src/MNH/tke_eps_sources.f90
@@ -268,7 +268,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange
 INTEGER                :: IINFO_ll       ! return code of parallel routine
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index ba6694e45cef05ea17171521807b57c215a7c2fc..a1ed85f4294d66de4685ab641d813713a777a5ad 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -538,7 +538,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL                :: ZL0          ! Max. Mixing Length in Blakadar formula
 REAL                :: ZALPHA       ! proportionnality constant between Dz/2 and 
 !                                   ! BL89 mixing length near the surface
diff --git a/src/MNH/turb_cloud_index.f90 b/src/MNH/turb_cloud_index.f90
index fe6d17008c2a8fb5643a3886e9055268d0c96914..03a1fb888cd9f60f4cd85dfe7ca7fd05bebbca00 100644
--- a/src/MNH/turb_cloud_index.f90
+++ b/src/MNH/turb_cloud_index.f90
@@ -145,7 +145,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90
index 216f2f5d535e0337dc00e49b00382629801e8a10..cacfdac669ce2b0a33eb544c0ffd2bb7c4951f0b 100644
--- a/src/MNH/turb_hor_dyn_corr.f90
+++ b/src/MNH/turb_hor_dyn_corr.f90
@@ -244,7 +244,7 @@ INTEGER             :: IKB,IKE
 INTEGER             :: IKU                                   
 INTEGER             :: JSV          ! scalar loop counter
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GX_U_M_PUM
 REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GY_V_M_PVM
diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90
index c60ad2b59d220960bcab0550dd30b0d9d01023db..e39d3eda9c3db214cb73c3721fb6ffede0efd18f 100644
--- a/src/MNH/turb_hor_sv_flux.f90
+++ b/src/MNH/turb_hor_sv_flux.f90
@@ -192,7 +192,7 @@ INTEGER             :: IKB,IKE
 INTEGER             :: JSV          ! loop counter
 INTEGER             :: ISV          ! number of scalar var.
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90
index 07f2117060ac1daefd95f5ef9dc1a795c04bca47..af8c0894ee587e4353b306a0b4268691385a65df 100644
--- a/src/MNH/turb_hor_thermo_corr.f90
+++ b/src/MNH/turb_hor_thermo_corr.f90
@@ -210,7 +210,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90
index c61b7e549a42bfc6816cfddf36176b38272a747d..a66b67944940c1683a6ca44b77076e8e76f8d5d7 100644
--- a/src/MNH/turb_hor_thermo_flux.f90
+++ b/src/MNH/turb_hor_thermo_flux.f90
@@ -226,7 +226,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90
index ead7858438727adf94a105695ed9ab948d845506..9fea6b9cb47d140f8201a5179b1f314ba7febbfa 100644
--- a/src/MNH/turb_hor_uv.f90
+++ b/src/MNH/turb_hor_uv.f90
@@ -219,7 +219,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain  
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GY_U_UV_PUM
 REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GX_V_UV_PVM
diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90
index ef5ec34bdb80b0f37cd47232f33486146dda6a48..57ce12d9cc13fec5784722de57b645ed70782369 100644
--- a/src/MNH/turb_hor_uw.f90
+++ b/src/MNH/turb_hor_uw.f90
@@ -198,7 +198,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! mass points of the domain  
 INTEGER             :: JSV          ! scalar loop counter
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GX_W_UW_PWM
 !
diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90
index 2918dfc39bddc765a585b100c04efa8d443b4791..c7da15c53074e6ee8dc07cfc88b80dd2a6a6fe44 100644
--- a/src/MNH/turb_hor_vw.f90
+++ b/src/MNH/turb_hor_vw.f90
@@ -195,7 +195,7 @@ INTEGER             :: IKB,IKE,IKU
                                     ! mass points of the domain  
 INTEGER             :: JSV          ! scalar loop counter
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GY_W_VW_PWM
 !
diff --git a/src/MNH/turb_ver.f90 b/src/MNH/turb_ver.f90
index e4fb0967228b679ede06d592197ccd281c7e36e8..9b8df98687467e3b1d16514af903422c805549bf 100644
--- a/src/MNH/turb_ver.f90
+++ b/src/MNH/turb_ver.f90
@@ -487,7 +487,7 @@ INTEGER             :: IRESP        ! Return code of FM routines
 INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
 INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 LOGICAL :: GUSERV    ! flag to use water vapor
 INTEGER :: IKB,IKE   ! index value for the Beginning
diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90
index 3224c540bd41dc77553aa98c4eca0c6780202884..92fcdd3fc8545c058d9efeedacfad0884779bd18 100644
--- a/src/MNH/turb_ver_dyn_flux.f90
+++ b/src/MNH/turb_ver_dyn_flux.f90
@@ -404,7 +404,7 @@ INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 INTEGER             :: JSV          ! scalar loop counter
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, &
                                     ZCOEFFLXV, ZUSLOPEM, ZVSLOPEM
                                     ! coefficients for the surface flux
diff --git a/src/MNH/turb_ver_sv_flux.f90 b/src/MNH/turb_ver_sv_flux.f90
index 35aef367a7328d33656d5d733539d57819e2a331..1675dee9446bbebb0d8f7fec7ce60a1def37814a 100644
--- a/src/MNH/turb_ver_sv_flux.f90
+++ b/src/MNH/turb_ver_sv_flux.f90
@@ -366,7 +366,7 @@ INTEGER             :: JSV          ! loop counters
 INTEGER             :: JK           ! loop
 INTEGER             :: ISV          ! number of scalar var.
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL :: ZTIME1, ZTIME2
 
diff --git a/src/MNH/turb_ver_thermo_corr.f90 b/src/MNH/turb_ver_thermo_corr.f90
index e3f63e18f7731c5d452166173725c46f3532e44d..74ee521c8b0af9ed0ece83192a0d153182d9c04b 100644
--- a/src/MNH/turb_ver_thermo_corr.f90
+++ b/src/MNH/turb_ver_thermo_corr.f90
@@ -441,7 +441,7 @@ INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
                                     ! mass points of the domain in the 3 direct.
 INTEGER             :: I1,I2        ! For ZCOEFF allocation
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(:,:,:),ALLOCATABLE  :: ZCOEFF
                                     ! coefficients for the uncentred gradient 
                                     ! computation near the ground
diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90
index 73c97baafcbea768520bf1e187c5e912883b9c64..b83254a7eabae964830018c4e9ab205865bdeb25 100644
--- a/src/MNH/turb_ver_thermo_flux.f90
+++ b/src/MNH/turb_ver_thermo_flux.f90
@@ -470,7 +470,7 @@ INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
 CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL :: ZTIME1, ZTIME2
 !
diff --git a/src/MNH/ver_thermo.f90 b/src/MNH/ver_thermo.f90
index 29fbd754d42f20aba2675b1348881ae5f94aa1f7..c18d156f7ef5cd73153115aa6a0ef19a1cad7ecf 100644
--- a/src/MNH/ver_thermo.f90
+++ b/src/MNH/ver_thermo.f90
@@ -226,7 +226,7 @@ REAL,DIMENSION(SIZE(PJ,1),SIZE(PJ,2),SIZE(PJ,3))   :: ZRHOD,ZSUMRT
 !
 CHARACTER(LEN=100) :: YCOMMENT
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
-CHARACTER(LEN=16)  :: YRECFM
+CHARACTER(LEN=LEN_HREC)  :: YRECFM
 INTEGER      :: IINFO_ll
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll => NULL()  ! list of fields to exchange
 !
diff --git a/src/MNH/write_balloonn.f90 b/src/MNH/write_balloonn.f90
index 37986ae619d86de80ec710ad030a825c874e3b38..b5ed03bf78847eb140ecc1fd7a5fa7ecd5f5be35 100644
--- a/src/MNH/write_balloonn.f90
+++ b/src/MNH/write_balloonn.f90
@@ -105,7 +105,7 @@ INTEGER            :: IRESP         ! IRESP  : return-code for fmwrit
 INTEGER            :: IGRID         ! IGRID : grid indicator
 CHARACTER (LEN=2)  :: YDIR          ! Type of the data field
 INTEGER            :: ILENCH        ! ILENCH : length of comment string
-CHARACTER(LEN=16)  :: YRECFM        ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC)  :: YRECFM        ! Name of the article to be written
 CHARACTER(LEN=100) :: YCOMMENT      ! Comment string
 !
 REAL               :: ZLAT          ! latitude of the balloon
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index a50b48fd982f789d36d3fc27dd54cfc87de2a27f..a606eb0be77e7d80bdc61e6232f9eb514dbb30ea 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -165,7 +165,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=20) :: YCOMMENT       ! Comment string
 INTEGER           :: JT,JPROC,JMASK
 !
diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90
index 0569d601fe624d93003b2f292fee51d5e59e31c8..51d3c5c946a2206d0c323cfd8b699f3a8b6647b3 100644
--- a/src/MNH/write_diachro.f90
+++ b/src/MNH/write_diachro.f90
@@ -113,7 +113,7 @@ REAL,DIMENSION(:,:,:),OPTIONAL  :: PTRAJZ
 !              ---------------
 
 !
-CHARACTER(LEN=16) :: YRECFM
+CHARACTER(LEN=LEN_HREC) :: YRECFM
 CHARACTER(LEN=LEN(HFILEDIA)+4) :: YFILEDIA
 CHARACTER(LEN=100) :: YCOMMENT
 CHARACTER(LEN=3)  :: YJ
diff --git a/src/MNH/write_dummy_gr_fieldn.f90 b/src/MNH/write_dummy_gr_fieldn.f90
index 5ba90ee5dd09a2798c4414cebb8118655f17b8d5..21c1f0d90b7fc1a73cfcc99d194b8be3c4a81e61 100644
--- a/src/MNH/write_dummy_gr_fieldn.f90
+++ b/src/MNH/write_dummy_gr_fieldn.f90
@@ -85,7 +85,7 @@ INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 INTEGER           :: JDUMMY         ! loop counter
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 CHARACTER(LEN=20 ):: YSTRING20      ! string
 CHARACTER(LEN=3  ):: YSTRING03      ! string
diff --git a/src/MNH/write_lbn.f90 b/src/MNH/write_lbn.f90
index d017f3d117b8f7e9e0c6547703c0ed1ce5845404..aa2f067547d9bfac73cc67f6d3017ef894c576c7 100644
--- a/src/MNH/write_lbn.f90
+++ b/src/MNH/write_lbn.f90
@@ -132,7 +132,7 @@ INTEGER            :: IRESP         ! IRESP  : return-code for fmwrit
 INTEGER            :: IGRID         ! IGRID : grid indicator
 CHARACTER (LEN=2)  :: YDIR          ! Type of the data field
 INTEGER            :: ILENCH        ! ILENCH : length of comment string 
-CHARACTER(LEN=16)  :: YRECFM        ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC)  :: YRECFM        ! Name of the article to be written
 CHARACTER(LEN=100) :: YCOMMENT      ! Comment string
 !
 INTEGER            :: IRR           ! Index for moist variables
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 2dee895ca966a2591f45edaca1cf545c14fd1a21..9cfabface0b3e82b2a04ba23edfa054343f123b0 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -252,7 +252,7 @@ INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
 CHARACTER(LEN=28) :: YFMFILE        ! Temporary variable to store FM-file name
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 !
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE  ! type of the new DIAG file ('DI')
diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90
index 8c5db78a99a052d30f4f72a76268f36fac0c5fee..bba0f817974a365aae08c622f2194a260ebf8057 100644
--- a/src/MNH/write_lfifm1_for_diag_supp.f90
+++ b/src/MNH/write_lfifm1_for_diag_supp.f90
@@ -172,7 +172,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 !
 INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
diff --git a/src/MNH/write_lfifmn_fordiachron.f90 b/src/MNH/write_lfifmn_fordiachron.f90
index 3f59602ab578aa216e4b8053675de5d3679a89f5..13b69e9eb615f8e218076f3fe9b7816f104e8ebc 100644
--- a/src/MNH/write_lfifmn_fordiachron.f90
+++ b/src/MNH/write_lfifmn_fordiachron.f90
@@ -122,7 +122,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100) :: YCOMMENT       ! Comment string
 !
 LOGICAL                :: GPACK
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index b982a8a35b2f5b37382b6e388b64a1a6787a6f1d..d67f4f0b9bbc79549298c04b2b0b99cc61f76ee7 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -279,7 +279,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 CHARACTER (LEN=2) :: YDIR           ! Type of the data field
 !
@@ -306,7 +306,7 @@ INTEGER :: IMI ! Current model index
 !
 INTEGER           :: ICH_NBR        ! to write number and names of scalar 
 INTEGER,DIMENSION(:),ALLOCATABLE :: ICH_NAMES !(chem+aero+dust) variables
-CHARACTER(LEN=16),DIMENSION(:),ALLOCATABLE :: YDSTNAMES,YCHNAMES, YSLTNAMES
+CHARACTER(LEN=LEN_HREC),DIMENSION(:),ALLOCATABLE :: YDSTNAMES,YCHNAMES, YSLTNAMES
 INTEGER           :: ILREC,ILENG    !in NSV.DIM and NSV.TITRE
 INTEGER           :: INFO_ll
 INTEGER :: IKRAD
diff --git a/src/MNH/write_phys_param.f90 b/src/MNH/write_phys_param.f90
index db8256b61cd0c77478fa59489526d1dfa2d544c0..1ce6ea982e876e38f63868bacd59941df7887934 100644
--- a/src/MNH/write_phys_param.f90
+++ b/src/MNH/write_phys_param.f90
@@ -172,7 +172,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
-CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
+CHARACTER(LEN=LEN_HREC) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 CHARACTER (LEN=2) :: YDIR           ! Type of the data field
 !
@@ -207,7 +207,7 @@ INTEGER :: KSPLT !
 !
 INTEGER           :: ICH_NBR        ! to write number and names of scalar 
 INTEGER,DIMENSION(:),ALLOCATABLE :: ICH_NAMES !(chem+aero+dust) variables
-CHARACTER(LEN=16),DIMENSION(:),ALLOCATABLE :: YDSTNAMES,YCHNAMES, YSLTNAMES
+CHARACTER(LEN=LEN_HREC),DIMENSION(:),ALLOCATABLE :: YDSTNAMES,YCHNAMES, YSLTNAMES
 INTEGER           :: ILREC,ILENG    !in NSV.DIM and NSV.TITRE
 INTEGER           :: INFO_ll
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/write_zsmt.f90 b/src/MNH/write_zsmt.f90
index c184d33c69d0a46953722111d1480742eefaed74..a4da9dd37fa561db288c36a6d46e12c1f3a1a718 100644
--- a/src/MNH/write_zsmt.f90
+++ b/src/MNH/write_zsmt.f90
@@ -77,7 +77,7 @@ CHARACTER(LEN=28),   INTENT(IN)  :: HFILE ! name of the input/output file
 !
 !
 INTEGER           :: IRESP    ! return code for I/O
-CHARACTER(LEN=16) :: YRECFM   ! name of record
+CHARACTER(LEN=LEN_HREC) :: YRECFM   ! name of record
 INTEGER           :: IGRID    ! grid location
 INTEGER           :: ILENCH   ! length of comment string
 CHARACTER(LEN=100):: YCOMMENT ! comment string
diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90
index ee07ef56a29f22e4d52ae35da62afbc4fef4c5ee..ca50c69a1fcfc6c4f18431414f96be9be6d0d937 100644
--- a/src/MNH/zoom_pgd.f90
+++ b/src/MNH/zoom_pgd.f90
@@ -95,7 +95,7 @@ INTEGER :: IINFO_ll
 INTEGER :: ININAR
 INTEGER :: IGRID
 INTEGER :: ILENCH
-CHARACTER (LEN=16) :: YRECFM   
+CHARACTER (LEN=LEN_HREC) :: YRECFM   
 CHARACTER(LEN=100) :: YCOMMENT
 CHARACTER(LEN=28)  :: YZOOMFILE             ! name of the output file
 CHARACTER(LEN=2)   :: YZOOMNBR
diff --git a/src/MNH/zsmt_pgd.f90 b/src/MNH/zsmt_pgd.f90
index da0fe85210b6f1944b0f813901b58ee319a717db..1550a904ba165e4615c4affb3b9985e86f76840b 100644
--- a/src/MNH/zsmt_pgd.f90
+++ b/src/MNH/zsmt_pgd.f90
@@ -90,7 +90,7 @@ INTEGER :: IIU        ! number of points in X direction
 INTEGER :: IJU        ! number of points in Y direction
 !
 INTEGER           :: IRESP    ! return code for I/O
-CHARACTER(LEN=16) :: YRECFM   ! name of record
+CHARACTER(LEN=LEN_HREC) :: YRECFM   ! name of record
 INTEGER           :: IGRID    ! grid location
 INTEGER           :: ILENCH   ! length of comment string
 CHARACTER(LEN=100):: YCOMMENT ! comment string
diff --git a/src/SURFEX/build_emisstabn.F90 b/src/SURFEX/build_emisstabn.F90
index b4c19af0093cf32413f63c2be7a52dce14413156..e964a7cf77884a30c44a2c3189226e6efcac88db 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 49d78215932c63110ccc6e4fad7403f91bfab5db..cb6bfb7f2f2021318b5e995ab74ff88b646c1703 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 576767089d8c12548f29786d2a11621566bf4c36..e9ead2aa00466f8f7a13397dda711591a82f18c4 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 95361b240a5a39046809da58b55c34ce99d5cd34..0f96c4c1e406966acc3a2c31e1f701c1216d8fb0 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 b4077f1e58e94d47713de4613c7f2d0e3d1f4b39..311fe54e8a5e881c17b89ba417346da6fb66f39d 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 d3a92baa5f9e42cb634c0ea52fda91423bbabca0..ddaf96dc44aeb440a47fcd28271ff763f87fa080 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 bf968b142f21b89af0d03a9b1ddf84157bc9a1d7..e844d00a78f5f0a30fc0a860856150e4f28104c1 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 4fdd753700246a40d6421d4b726e503f31d6645a..71dd5c6221f72a03126744adcb40f81b25de2c34 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 2b00c1dbf5cc784cba1dacdad41b0afca1038d16..4f5bbd0c05cb19efec2f9f98433d2432b7f83980 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 d20efe15c4664eb9114891ef46ecce961cc3c843..1ccf147fcf9b71a2ce7ca0adfc7f5b7e2d6112a1 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 12c51ed98518795a1e1859c54dd2f1b3886143e4..72920d7ebefdef9daf4302f991909d9f4ea02a76 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 4efed20c28ffe8444dad4c7e784965e643c4bae5..649ef1057e8938585d9d410d248076680d4a856d 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 f0ab22b287ab661aabc4a41336b0c3985c8c60f2..a32fab0e0a2e877df75a9e599f34b88008e21248 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
 !------------------------------------------------------------------------------