From f943a483fbf410bb4e5e71ed599bd48f530c603f Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 22 Dec 2023 14:37:32 +0100
Subject: [PATCH] Philippe 22/12/2023: IO: allow more flexible filenames (CEXP
 and CSEG are a lot bigger and are trimmed) + use NFILENAMELGTMAX for all
 files

---
 src/LIB/SURCOUCHE/src/mode_io_field_write.f90 | 29 +++----
 .../SURCOUCHE/src/mode_io_manage_struct.f90   |  2 +-
 src/MNH/ch_read_chem.f90                      |  3 +-
 src/MNH/compare_dad.f90                       | 16 ++--
 src/MNH/compute_spectre.f90                   |  4 +-
 src/MNH/default_desfmn.f90                    |  2 +-
 src/MNH/diag.f90                              | 14 ++--
 src/MNH/flash_geom_elec.f90                   |  2 +-
 src/MNH/ini_modeln.f90                        | 38 ++++++----
 src/MNH/ini_segn.f90                          | 23 +++---
 src/MNH/ini_size_spawn.f90                    | 13 +---
 src/MNH/ini_sizen.f90                         | 23 +++---
 src/MNH/ini_spectren.f90                      | 11 +--
 src/MNH/init_ground_paramn.f90                | 10 ++-
 src/MNH/init_mnh.f90                          |  2 +-
 src/MNH/latlon_to_xy.f90                      |  8 +-
 src/MNH/mesonh.f90                            | 15 ++--
 src/MNH/mnh2lpdm_ech.f90                      |  2 +-
 src/MNH/mnh2lpdm_ini.f90                      |  4 +-
 src/MNH/mnhclose_aux_io_surf.f90              | 15 ++--
 src/MNH/mnhend_io_surfn.f90                   |  4 +-
 src/MNH/mnhopen_aux_io_surf.f90               | 20 ++---
 src/MNH/mnhopen_namelist.f90                  | 19 +++--
 src/MNH/modd_ch_mnhcn.f90                     | 14 ++--
 src/MNH/modd_ch_model0d.f90                   | 19 ++---
 src/MNH/modd_conf.f90                         |  8 +-
 src/MNH/modd_eol_shared_io.f90                | 12 +--
 src/MNH/modd_firen.f90                        |  6 +-
 src/MNH/modd_hurr_conf.f90                    | 14 ++--
 src/MNH/modd_io_surf_mnh.f90                  |  8 +-
 src/MNH/modd_lma_simulator.f90                |  5 +-
 src/MNH/modd_lunitn.f90                       | 22 ++----
 src/MNH/modd_mnh2lpdm.f90                     | 15 ++--
 src/MNH/modd_parameters.f90                   | 28 ++++++-
 src/MNH/modd_spawn.f90                        | 13 ++--
 src/MNH/modd_sto_file.f90                     | 14 ++--
 src/MNH/modn_ch_mnhcn.f90                     |  7 +-
 src/MNH/modn_firen.f90                        |  3 +-
 src/MNH/modn_lunitn.f90                       | 26 +++----
 src/MNH/open_file_mnh.f90                     | 31 ++++----
 src/MNH/open_nestpgd_files.f90                | 44 +++++------
 src/MNH/open_prc_files.f90                    | 76 ++++++++++---------
 src/MNH/prep_ideal_case.f90                   | 22 ++++--
 src/MNH/prep_nest_pgd.f90                     | 12 +--
 src/MNH/prep_pgd.f90                          | 21 ++---
 src/MNH/prep_real_case.f90                    | 16 ++--
 src/MNH/prep_surf_mnh.f90                     | 19 ++---
 src/MNH/prep_surfex.f90                       | 23 +++---
 src/MNH/read_all_data_grib_case.f90           | 37 ++++-----
 src/MNH/read_all_data_mesonh_case.f90         | 25 +++---
 src/MNH/read_asc_latpress.f90                 | 29 +++----
 src/MNH/read_ascp.f90                         | 25 +++---
 src/MNH/read_cams_data_netcdf_case.f90        | 35 ++++-----
 src/MNH/read_chem_data_cams_case.f90          | 41 +++++-----
 src/MNH/read_chem_data_mozart_case.f90        | 37 ++++-----
 src/MNH/read_chem_data_netcdf_case.f90        | 35 ++++-----
 src/MNH/read_exsegn.f90                       | 15 ++--
 src/MNH/read_exspa.f90                        | 70 ++++++++---------
 src/MNH/read_grid_time_mesonh_case.f90        | 22 +++---
 src/MNH/read_hgrid.f90                        | 25 +++---
 src/MNH/read_hgridn.f90                       | 23 +++---
 src/MNH/read_lima_data_netcdf_case.f90        | 37 ++++-----
 src/MNH/read_pre_idea_namn.f90                |  3 +-
 src/MNH/resolved_elecn.f90                    | 12 +--
 src/MNH/series_cloud_elec.f90                 |  3 +-
 src/MNH/set_advfrc.f90                        | 18 ++---
 src/MNH/set_relfrc.f90                        | 18 ++---
 src/MNH/set_subdomain.f90                     |  4 +-
 src/MNH/spawn_model2.f90                      | 34 +++++----
 src/MNH/spawn_surf.f90                        | 23 +++---
 src/MNH/spawning.f90                          |  4 +-
 src/MNH/spectre.f90                           |  9 ++-
 src/MNH/spectre_arome.f90                     |  2 +-
 src/MNH/write_lfifm1_for_diag.f90             | 19 +++--
 src/MNH/write_ts1d.f90                        |  8 +-
 src/MNH/xy_to_latlon.f90                      |  6 +-
 src/MNH/zoom_pgd.f90                          | 14 ++--
 77 files changed, 724 insertions(+), 666 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index 6eed332ee..af05775a2 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -30,7 +30,7 @@ MODULE MODE_IO_FIELD_WRITE
                                TYPECHAR, TYPEDATE, TYPEINT, TYPELOG, TYPEREAL
   USE MODD_IO,         ONLY: TFILEDATA, TOUTBAK
   USE MODD_MPIF
-  use modd_parameters, only: NMNHNAMELGTMAX
+  use modd_parameters, only: NFILENAMELGTMAX, NMNHNAMELGTMAX
   use modd_precision,  only: MNHINT_MPI, MNHREAL_MPI, MNHTIME
 
   use mode_field,        only: Find_field_id_from_mnhname
@@ -537,7 +537,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -621,6 +621,7 @@ end subroutine IO_Ndimlist_reduce
     !
   END SUBROUTINE IO_Field_write_byname_X1
 
+
   SUBROUTINE IO_Field_write_byfield_X1( TPFILE, TPFIELD, PFIELD, KRESP, koffset )
     USE MODD_IO,               ONLY: GSMONOPROC, ISP
     !
@@ -640,7 +641,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -770,7 +771,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -1027,7 +1028,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -1492,7 +1493,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -1704,7 +1705,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -1875,7 +1876,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -2078,7 +2079,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -2190,7 +2191,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -2369,7 +2370,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -2546,7 +2547,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -2844,7 +2845,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=2)                         :: YDIR     ! field form
     INTEGER                                  :: IERR
@@ -3293,7 +3294,7 @@ end subroutine IO_Ndimlist_reduce
     !
     !*      0.2   Declarations of local variables
     !
-    CHARACTER(LEN=28)                        :: YFILEM   ! FM-file name
+    CHARACTER(LEN=NFILENAMELGTMAX)           :: YFILEM   ! FM-file name
     CHARACTER(LEN=NMNHNAMELGTMAX)            :: YRECFM   ! name of the article to write
     CHARACTER(LEN=4)                         :: YLBTYPE  ! 'LBX','LBXU','LBY' or 'LBYV'
     INTEGER                                  :: IRIM     ! size of the LB area
diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
index adcb35682..8fcc8e304 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90
@@ -50,7 +50,7 @@ USE MODD_DYN,        ONLY : XSEGLEN
 USE MODD_DYN_n,      ONLY : DYN_MODEL
 use modd_field,      only: tfieldlist
 USE MODD_IO_SURF_MNH,ONLY : IO_SURF_MNH_MODEL
-USE MODD_NESTING,    ONLY : CDAD_NAME,NDAD
+USE MODD_NESTING,    ONLY : NDAD
 USE MODD_NSV,        ONLY: NSV
 USE MODD_OUT_n,      ONLY : OUT_MODEL
 USE MODD_VAR_ll,     ONLY : IP
diff --git a/src/MNH/ch_read_chem.f90 b/src/MNH/ch_read_chem.f90
index 29a166440..be8779075 100644
--- a/src/MNH/ch_read_chem.f90
+++ b/src/MNH/ch_read_chem.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -90,7 +90,6 @@ CHARACTER(LEN=*), INTENT(IN)      :: HFILE ! name of the file to be read from
 character(len=10) ::  yval1, yval2
 character(len=256) :: yioerrmsg
 CHARACTER(LEN=32) :: YVARNAME
-CHARACTER(LEN=80) :: YINPUT
 INTEGER :: ILU ! unit number for IO
 integer :: iresp
 INTEGER :: JI, JJ, IIN
diff --git a/src/MNH/compare_dad.f90 b/src/MNH/compare_dad.f90
index 983eb5188..37692798d 100644
--- a/src/MNH/compare_dad.f90
+++ b/src/MNH/compare_dad.f90
@@ -11,9 +11,11 @@ INTERFACE
 !
       SUBROUTINE COMPARE_DAD (HDADINIFILE,HDADSPAFILE,KRESP)
 !
-CHARACTER (LEN=*),      INTENT(IN)  :: HDADINIFILE   ! Name of true DAD FM file
-CHARACTER (LEN=*),      INTENT(IN)  :: HDADSPAFILE   ! Name of Replaced DAD FM file
-INTEGER,               INTENT(OUT)  :: KRESP !  logical switch 
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN)  :: HDADINIFILE   ! Name of true DAD FM file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN)  :: HDADSPAFILE   ! Name of Replaced DAD FM file
+INTEGER,                         INTENT(OUT) :: KRESP !  logical switch
 !
 END SUBROUTINE COMPARE_DAD 
 !
@@ -69,7 +71,7 @@ USE MODD_CONF
 use modd_field,            only: tfieldmetadata, tfieldlist
 USE MODD_IO,               ONLY: TFILEDATA
 USE MODD_LUNIT_n,          ONLY: TLUOUT
-USE MODD_PARAMETERS,       ONLY: JPHEXT, JPVEXT, NMNHNAMELGTMAX
+USE MODD_PARAMETERS,       ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX, NMNHNAMELGTMAX
 !
 use mode_field,            only: Find_field_id_from_mnhname
 USE MODE_IO_FILE,          only: IO_File_close, IO_File_open
@@ -82,9 +84,9 @@ IMPLICIT NONE
 !
 !*       0.1  Declarations of dummy arguments :
 !
-CHARACTER (LEN=*), INTENT(IN)  :: HDADINIFILE   ! Name of true DAD FM file
-CHARACTER (LEN=*), INTENT(IN)  :: HDADSPAFILE   ! Name of Replaced DAD FM file
-INTEGER,           INTENT(OUT) :: KRESP
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN)  :: HDADINIFILE   ! Name of true DAD FM file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN)  :: HDADSPAFILE   ! Name of Replaced DAD FM file
+INTEGER,                         INTENT(OUT) :: KRESP !  logical switch
 !
 !
 !*       0.2  Declarations of local variables :
diff --git a/src/MNH/compute_spectre.f90 b/src/MNH/compute_spectre.f90
index 9d5237cac..91a45b31a 100644
--- a/src/MNH/compute_spectre.f90
+++ b/src/MNH/compute_spectre.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -123,7 +123,7 @@ REAL, DIMENSION(:),     ALLOCATABLE :: ZANB       ! wavenumbers vector
 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZLGO       ! wavelengths and adimensionned wavenumbers vector
 REAL, DIMENSION(:,:),   ALLOCATABLE :: ZAP        ! normalized wavenumbers vector
 INTEGER                             :: JLOGIMIN   ! size of wavenumber format
-CHARACTER(LEN=80)                   :: YOUTFILE   ! outfile's name
+CHARACTER(LEN=NFILENAMELGTMAX)      :: YOUTFILE   ! outfile's name
 REAL                                :: ZDEL       ! needed for the initialization of 
 REAL                                :: ZANGLE     ! the arrays used by the FFT
 REAL, DIMENSION(:), ALLOCATABLE     :: ZTRIGSX    ! arrays of sin or cos values for the FFT along x
diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90
index 9ccf63878..091e1faa0 100644
--- a/src/MNH/default_desfmn.f90
+++ b/src/MNH/default_desfmn.f90
@@ -316,7 +316,7 @@ TYPE(TFILEDATA)    TFILENAM    ! Empty file to satisfy interface of PHYEX_init r
 !
 ! CINIFILE='INIFILE'
 CINIFILEPGD='' !Necessary to keep this line to prevent problems with spawning
-CCPLFILE(:)='    '
+CCPLFILE(:)=''
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index acbfb2365..c37f6136c 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -173,9 +173,9 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of local variables
 !
-CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file
-CHARACTER (LEN=28), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file
-CHARACTER (LEN=5)  :: YSUFFIX   ! character string for the OUTPUT FM-file number
+CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file
+CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILEPGD ! names of the INPUT FM-file
+CHARACTER (LEN=NDIAGSUFFIXLGTMAX)  :: YSUFFIX   ! character string for the OUTPUT FM-file number
 CHARACTER (LEN=4)  :: YRAD      ! initial flag to call to radiation schemes
 CHARACTER (LEN=4)  :: YDCONV    ! initial flag to call to deep convection schemes
 CHARACTER (LEN=4)  :: YTURB     ! initial flag to call to turbulence schemes
@@ -350,11 +350,11 @@ XSNRMIN=0
 LDIAG(:)=.FALSE.
 XDIAG(:)=XUNDEF
 !
-YINIFILE(:) = '                         '
-YINIFILEPGD(:) = '                         '
+YINIFILE(:) = ''
+YINIFILEPGD(:) = ''
 YSUFFIX='_DIAG'
 !
-CFILES(:) = '                         '
+CFILES(:) = ''
 NSTART_SUPP(:) = NUNDEF
 !
 LLIDAR=.FALSE.
@@ -435,7 +435,7 @@ ENDIF
 !
 INPRAR = 24 +2*(4+NRR+NSV)
 !
-CALL IO_File_add2list(TOUTDATAFILE,TRIM(CINIFILE)//YSUFFIX,'MNHDIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB)
+CALL IO_File_add2list(TOUTDATAFILE,TRIM(CINIFILE)//TRIM(YSUFFIX),'MNHDIAG','WRITE',KLFINPRAR=INPRAR,KLFITYPE=1,KLFIVERB=NVERB)
 !
 CALL SECOND_MNH2(ZTIME2)
 ZSTART=ZTIME2-ZTIME1
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index 0155cc832..35187a762 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -117,7 +117,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !               ------------
 !
 USE MODD_ARGSLIST_ll,      ONLY: LIST_ll
-USE MODD_CONF,             ONLY: CEXP, LCARTESIAN
+USE MODD_CONF,             ONLY: LCARTESIAN
 USE MODD_CST,              ONLY: XAVOGADRO, XMD
 USE MODD_DYN_n,            ONLY: XDXHATM, XDYHATM, NSTOP
 USE MODD_ELEC_DESCR
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 4277d47e8..6f2fa0cb9 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -505,7 +505,7 @@ INTEGER             :: JSV     ! Loop index
 INTEGER             :: IRESP   ! Return code of FM routines
 INTEGER             :: ILUOUT  ! Logical unit number of output-listing
 CHARACTER(LEN=6)    :: YNUM
-CHARACTER(LEN=28)   :: YNAME
+CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME
 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)
@@ -1890,9 +1890,18 @@ IF (KMI == 1) THEN
     CALL PRINT_MSG( NVERB_FATAL, 'IO', 'INI_MODEL_n', 'NFILE_NUM_MAX is too large' )
   END IF
 
-  DO IMI = 1 , NMODEL
-    WRITE(IO_SURF_MNH_MODEL(IMI)%COUTFILE,'(A,".",I1,".",A)') CEXP,IMI,TRIM(ADJUSTL(CSEG))
-    WRITE( YNAME, '(A,".",I1,".",A)' ) CEXP, IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM)
+  DO IMI = 1, NMODEL
+    IF ( NMODELNUMLGTMAX == 1 ) THEN
+      IF ( NMODEL > 9 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>9 and NMODELNUMLGTMAX=1' )
+      WRITE( IO_SURF_MNH_MODEL(IMI)%COUTFILE, '( A, ".", I1, ".", A) ' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG))
+      WRITE( YNAME,                           '( A, ".", I1, ".", A )' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM)
+    ELSE IF ( NMODELNUMLGTMAX == 2 ) THEN
+      IF ( NMODEL > 99 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>99 and NMODELNUMLGTMAX=2' )
+      WRITE( IO_SURF_MNH_MODEL(IMI)%COUTFILE, '( A, ".", I2, ".", A) ' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG))
+      WRITE( YNAME,                           '( A, ".", I2, ".", A )' ) TRIM(CEXP), IMI, TRIM(ADJUSTL(CSEG)) // '.' // TRIM(YNUM)
+    ELSE
+      CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODELNUMLGTMAX>2 not implemented' )
+    END IF
     CALL IO_File_add2list(LUNIT_MODEL(IMI)%TDIAFILE,YNAME,'MNHDIACHRONIC','WRITE', &
                           HDIRNAME=CIO_DIR,                                        &
                           KLFINPRAR=INT(50,KIND=LFIINT),KLFITYPE=1,KLFIVERB=NVERB, &
@@ -1902,14 +1911,15 @@ IF (KMI == 1) THEN
   TDIAFILE => LUNIT_MODEL(KMI)%TDIAFILE !Necessary because no call to GOTO_MODEL before needing it
   !
   IF (CPROGRAM=='MESONH') THEN
-    IF ( NDAD(KMI) == 1)  CDAD_NAME(KMI) = CEXP//'.1.'//CSEG
-    IF ( NDAD(KMI) == 2)  CDAD_NAME(KMI) = CEXP//'.2.'//CSEG
-    IF ( NDAD(KMI) == 3)  CDAD_NAME(KMI) = CEXP//'.3.'//CSEG
-    IF ( NDAD(KMI) == 4)  CDAD_NAME(KMI) = CEXP//'.4.'//CSEG
-    IF ( NDAD(KMI) == 5)  CDAD_NAME(KMI) = CEXP//'.5.'//CSEG
-    IF ( NDAD(KMI) == 6)  CDAD_NAME(KMI) = CEXP//'.6.'//CSEG
-    IF ( NDAD(KMI) == 7)  CDAD_NAME(KMI) = CEXP//'.7.'//CSEG
-    IF ( NDAD(KMI) == 8)  CDAD_NAME(KMI) = CEXP//'.8.'//CSEG
+    IF ( NMODELNUMLGTMAX == 1 ) THEN
+      IF ( NDAD(KMI) > 9 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>9 and NMODELNUMLGTMAX=1' )
+      WRITE( CDAD_NAME(KMI), '( A, ".", I1, ".", A) ' ) TRIM(CEXP), NDAD(KMI), TRIM(ADJUSTL(CSEG))
+    ELSE IF ( NMODELNUMLGTMAX == 2 ) THEN
+      IF ( NDAD(KMI) > 99 ) CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODEL>99 and NMODELNUMLGTMAX=2' )
+      WRITE( CDAD_NAME(KMI), '( A, ".", I2, ".", A) ' ) TRIM(CEXP), NDAD(KMI), TRIM(ADJUSTL(CSEG))
+    ELSE
+      CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_MODEL_n', 'NMODELNUMLGTMAX>2 not implemented' )
+    END IF
   END IF
 END IF
 !
@@ -2629,7 +2639,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG  ')) THEN
     CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)
     LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
     IF (IRESP/=0) THEN
-      WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
+      WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",TRIM(CINIFILEPGD)
       WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNITn"
     !callabortstop
       CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
@@ -2672,7 +2682,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='SPAWN ')) THEN
   CALL IO_File_open(TINIFILEPGD,KRESP=IRESP)
   LUNIT_MODEL(KMI)%TINIFILEPGD => TINIFILEPGD
   IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",CINIFILEPGD
+    WRITE(ILUOUT,FMT=*) "INI_MODEL_n ERROR TO OPEN THE FILE CINIFILEPGD=",TRIM(CINIFILEPGD)
     WRITE(ILUOUT,FMT=*) "CHECK YOUR NAMELIST NAM_LUNIT2_SPA"
     !callabortstop
     CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_MODEL_n','')
diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90
index 9d78f2b66..e086a5757 100644
--- a/src/MNH/ini_segn.f90
+++ b/src/MNH/ini_segn.f90
@@ -11,12 +11,13 @@ INTERFACE
 !
 SUBROUTINE INI_SEG_n(KMI,TPINIFILE,HINIFILEPGD,PTSTEP_ALL)
 !
-USE MODD_IO, ONLY : TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-INTEGER,                    INTENT(IN)    :: KMI          !Model index
-TYPE(TFILEDATA),   POINTER, INTENT(OUT)   :: TPINIFILE    !Initial file
-CHARACTER (LEN=28),         INTENT(OUT)   :: HINIFILEPGD
-REAL,DIMENSION(:),          INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
+INTEGER,                        INTENT(IN)    :: KMI          !Model index
+TYPE(TFILEDATA), POINTER,       INTENT(OUT)   :: TPINIFILE    !Initial file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT)   :: HINIFILEPGD
+REAL,DIMENSION(:),              INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
 !
 END SUBROUTINE INI_SEG_n
 !
@@ -202,15 +203,15 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-INTEGER,                    INTENT(IN)    :: KMI          !Model index
-TYPE(TFILEDATA),   POINTER, INTENT(OUT)   :: TPINIFILE    !Initial file
-CHARACTER (LEN=28),         INTENT(OUT)   :: HINIFILEPGD
-REAL,DIMENSION(:),          INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
+INTEGER,                        INTENT(IN)    :: KMI          !Model index
+TYPE(TFILEDATA), POINTER,       INTENT(OUT)   :: TPINIFILE    !Initial file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT)   :: HINIFILEPGD
+REAL,DIMENSION(:),              INTENT(INOUT) :: PTSTEP_ALL   ! Time STEP of ALL models
 !
 !*       0.1   declarations of local variables
 !
 LOGICAL            :: GFOUND              ! Return code when searching namelist
-CHARACTER (LEN=28) :: YINIFILE                    ! name of initial file
+CHARACTER (LEN=NFILENAMELGTMAX) :: YINIFILE       ! name of initial file
 CHARACTER (LEN=2)  :: YMI                         ! string for model index
 INTEGER            :: ILUOUT                      ! Logical unit number
                                                   ! associated with TLUOUT
@@ -461,7 +462,7 @@ CALL READ_EXSEG_n(KMI,TZFILE_DES,YCONF,GFLAT,GUSERV,GUSERC,                 &
 IF (CPROGRAM=='SPAWN ' .OR. CPROGRAM=='DIAG  ' .OR. CPROGRAM=='SPEC  '      &
      .OR. CPROGRAM=='REAL  ') THEN
   CINIFILE_n    = YINIFILE
-  CCPLFILE(:) = '                            '
+  CCPLFILE(:) = ''
   NMODEL=1
   LSTEADYLS=.TRUE.
 END IF
diff --git a/src/MNH/ini_size_spawn.f90 b/src/MNH/ini_size_spawn.f90
index 3695fe140..eecc496a5 100644
--- a/src/MNH/ini_size_spawn.f90
+++ b/src/MNH/ini_size_spawn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1999-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -121,20 +121,11 @@ INTEGER :: ILUOUT   ! Logical unit number for the output listing
 !
 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=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME
 CHARACTER (LEN=2)  :: YSTORAGE_TYPE
 INTEGER            :: IID, IMI
 !
-!$20140602
-INTEGER            :: IIU, IJU
 INTEGER            :: IINFO_ll    ! return code of // routines
-INTEGER            :: NIMAX, NJMAX
-CHARACTER(LEN=28), DIMENSION(JPMODELMAX) :: CPGD     ! name of input  pgd files
-LOGICAL, DIMENSION(JPMODELMAX) :: L1D_ALL  ! Flag for      1D conf. for each PGD
-LOGICAL, DIMENSION(JPMODELMAX) :: L2D_ALL  ! Flag for      2D conf. for each PGD
-LOGICAL, DIMENSION(JPMODELMAX) :: LPACK_ALL! Flag for packing conf. for each PGD
-INTEGER            :: IDIMX, IDIMY, IIB, IJB, IIE, IJE
-!$
 REAL :: ZLATOR, ZLONOR, ZXHATM, ZYHATM
 INTEGER :: IIMAX_ll,IJMAX_ll
 TYPE(TFIELDMETADATA)    :: TZFIELD
diff --git a/src/MNH/ini_sizen.f90 b/src/MNH/ini_sizen.f90
index 4e3425caf..11b319a27 100644
--- a/src/MNH/ini_sizen.f90
+++ b/src/MNH/ini_sizen.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -11,11 +11,12 @@ INTERFACE
 !
 SUBROUTINE INI_SIZE_n( KMI, TPINIFILE, HINIFILEPGD )
 !
-USE MODD_IO, ONLY : TFILEDATA
+USE MODD_IO,         ONLY : TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-INTEGER,            INTENT(IN)    :: KMI          !Model Index
-TYPE(TFILEDATA),    INTENT(IN)    :: TPINIFILE    !Initial file
-CHARACTER (LEN=*),  INTENT(IN)    :: HINIFILEPGD
+INTEGER,                        INTENT(IN)    :: KMI          !Model Index
+TYPE(TFILEDATA),                INTENT(IN)    :: TPINIFILE    !Initial file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HINIFILEPGD
 !
        END SUBROUTINE INI_SIZE_n
 !
@@ -108,10 +109,10 @@ USE MODD_DIM_n,         ONLY: NIMAX_ll, NJMAX_ll, NKMAX
 USE MODD_DYN,           ONLY: LCORIO
 USE MODD_IO,            ONLY: GSMONOPROC, TFILEDATA
 USE MODD_LBC_n,         ONLY: CLBCX, CLBCY
-USE MODD_LUNIT_n,       ONLY: CINIFILE, CINIFILEPGD, TLUOUT
+USE MODD_LUNIT_n,       ONLY: CINIFILEPGD, TLUOUT
 USE MODD_NESTING,       ONLY: CMY_NAME, CDAD_NAME, NDAD, NDXRATIO_ALL, NDYRATIO_ALL, &
                               NXOR_ALL, NYOR_ALL, NXEND_ALL,NYEND_ALL
-USE MODD_PARAMETERS,    ONLY: JPMODELMAX, JPHEXT,JPVEXT
+USE MODD_PARAMETERS,    ONLY: JPMODELMAX, JPHEXT, JPVEXT, NFILENAMELGTMAX
 USE MODD_REF,           ONLY: LCOUPLES
 !
 USE MODE_IO,            ONLY: IO_Pack_set
@@ -125,9 +126,9 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-INTEGER,            INTENT(IN)    :: KMI          !Model Index
-TYPE(TFILEDATA),    INTENT(IN)    :: TPINIFILE    !Initial file
-CHARACTER (LEN=*),  INTENT(IN)    :: HINIFILEPGD
+INTEGER,                        INTENT(IN)    :: KMI          !Model Index
+TYPE(TFILEDATA),                INTENT(IN)    :: TPINIFILE    !Initial file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HINIFILEPGD
 !
 !*       0.2   declarations of local variables
 !
@@ -168,7 +169,7 @@ IF ( KMI > 1 ) THEN
   IF ( LCOUPLES ) THEN
     IF ( KMI == 2 ) THEN
       CMY_NAME(NDAD(KMI)) = CDAD_NAME(KMI)
-      WRITE(UNIT=ILUOUT,FMT=*) 'NDAD',NDAD(KMI),'changed in '//TRIM(CMY_NAME(NDAD(KMI)))//TRIM(CDAD_NAME(KMI)),KMI
+      WRITE(UNIT=ILUOUT,FMT=*) 'NDAD', NDAD(KMI), ' changed in ' // TRIM(CMY_NAME(NDAD(KMI))) // TRIM(CDAD_NAME(KMI)), KMI
     END IF
   END IF
   IF ( TRIM(CDAD_NAME(KMI)) /= TRIM(CMY_NAME(NDAD(KMI))) ) THEN
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index b6e605ecc..d89539dda 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2015-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2015-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -73,7 +73,7 @@ USE MODD_GRID_n
 USE MODD_IO,            ONLY: TFILEDATA
 USE MODD_LBC_n,         only: CLBCX, CLBCY
 USE MODD_LSFIELD_n
-USE MODD_LUNIT_n,       ONLY: COUTFILE, TLUOUT
+USE MODD_LUNIT_n,       ONLY: TLUOUT
 USE MODD_MEAN_FIELD
 USE MODD_MEAN_FIELD_n
 USE MODD_METRICS_n
@@ -882,13 +882,6 @@ IF ( KMI > 1) THEN
        DPTR_XLBXTKEM,DPTR_XLBYTKEM,                                                             &
        DPTR_XLBXRM,DPTR_XLBYRM,DPTR_XLBXSVM,DPTR_XLBYSVM                                        )
 END IF
-!
-!
-!*       16.    BUILT THE GENERIC OUTPUT NAME
-!               ----------------------------
-!
-WRITE(COUTFILE,'(A,".",I1,".",A)') CEXP,KMI,TRIM(ADJUSTL(CSEG))
-
 !-------------------------------------------------------------------------------
 !
 !*       17.    INITIALIZE THE PARAMETERS FOR THE DYNAMICS
diff --git a/src/MNH/init_ground_paramn.f90 b/src/MNH/init_ground_paramn.f90
index 25f0c8cea..2125d9dcf 100644
--- a/src/MNH/init_ground_paramn.f90
+++ b/src/MNH/init_ground_paramn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -90,7 +90,7 @@ USE MODD_TYPE_DATE,  ONLY : DATE_TIME
 !
 USE MODD_TYPE_DATE_SURF, ONLY : DATE_SURF=>DATE
 !
-USE MODD_PARAMETERS, ONLY : XUNDEF, JPVEXT
+USE MODD_PARAMETERS, ONLY : NFILENAMELGTMAX, XUNDEF, JPVEXT
 !
 USE MODI_INIT_SURF_ATM_N
 !
@@ -147,6 +147,8 @@ INTEGER :: IID,IRESP
 TYPE (DATE_TIME), POINTER :: TZTCUR=>NULL()
 TYPE (DATE_TIME)          :: TZDATE
 !
+CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE
+CHARACTER(LEN=6)               :: YATMFILETYPE
 CHARACTER(LEN=6), DIMENSION(:), ALLOCATABLE :: YSV_SURF ! name of the scalar variables
                                                         ! sent to SURFEX
 TYPE(SURF_ATM_TURB_t) :: AT         ! atmospheric turbulence parameters
@@ -221,6 +223,8 @@ ELSE
     ALLOCATE(YSV_SURF(ISV))
     YSV_SURF(:)     = HSV(:)
 ENDIF
+YATMFILE = ''
+YATMFILETYPE = ''
 CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT,                          &
                      ILU,ISV,SIZE(PSW_BANDS),                           &
                      YSV_SURF,ZCO2,ZRHODREF,                            &
@@ -228,7 +232,7 @@ CALL INIT_SURF_ATM_n(YSURF_CUR,'MESONH',HINIT,                          &
                      ZEMIS,ZTSRAD,ZTSURF,                               &
                      TZTCUR%nyear, TZTCUR%nmonth,                       &
                      TZTCUR%nday, TZTCUR%xtime,                         &
-                     TDATE_END,AT,'                            ','      ', &
+                     TDATE_END,AT,YATMFILE,YATMFILETYPE,                &
                      'OK'                                               )
 !
 PDIR_ALB = XUNDEF
diff --git a/src/MNH/init_mnh.f90 b/src/MNH/init_mnh.f90
index ad6ea75eb..e230430d6 100644
--- a/src/MNH/init_mnh.f90
+++ b/src/MNH/init_mnh.f90
@@ -106,7 +106,7 @@ IMPLICIT NONE
 !*       0.1   Local variables
 !
 INTEGER :: JMI                                        !  Loop index
-CHARACTER(LEN=28),DIMENSION(JPMODELMAX)  :: YINIFILEPGD
+CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPMODELMAX) :: YINIFILEPGD
 INTEGER  :: ILUOUT0,IRESP                             ! Logical unit number for
                                                       ! output-listing common
                                                       ! to all models and return
diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90
index 6694937f5..a6eed5e59 100644
--- a/src/MNH/latlon_to_xy.f90
+++ b/src/MNH/latlon_to_xy.f90
@@ -95,10 +95,10 @@ IMPLICIT NONE
 !*    0.2    Declaration of variables
 !            ------------------------
 !
-CHARACTER(LEN=28) :: YINIFILE  ! name of input FM file
-CHARACTER(LEN=28) :: YNAME     ! true name of input FM file
-CHARACTER(LEN=28) :: YDAD      ! name of dad of input FM file
-CHARACTER(LEN=2)  :: YSTORAGE_TYPE
+CHARACTER(LEN=NFILENAMELGTMAX) :: YINIFILE  ! name of input FM file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME     ! true name of input FM file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD      ! name of dad of input FM file
+CHARACTER(LEN=2)               :: YSTORAGE_TYPE
 INTEGER :: INAM                ! Logical unit for namelist file
 INTEGER :: ILUOUT0             ! Logical unit for output file.
 INTEGER :: IRESP               ! Return-code if problem eraised.
diff --git a/src/MNH/mesonh.f90 b/src/MNH/mesonh.f90
index e7af3e588..d59b56a99 100644
--- a/src/MNH/mesonh.f90
+++ b/src/MNH/mesonh.f90
@@ -84,8 +84,9 @@
 !               ------------
 !
 #ifdef CPLOASIS
-  USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD, IP
-  USE MODD_SFX_OASIS, ONLY : LOASIS, LOASIS_GRID
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+USE MODD_SFX_OASIS, ONLY : LOASIS, LOASIS_GRID
+USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD, IP
 #endif
 !
 USE MODD_CONF,             only: CPROGRAM, NMODEL
@@ -113,9 +114,9 @@ USE MODE_MODELN_HANDLER
 !
 !
 #ifdef CPLOASIS
-  USE MODI_SFX_OASIS_INIT
-  USE MODI_MNH_OASIS_GRID
-  USE MODI_MNH_OASIS_DEFINE
+USE MODI_MNH_OASIS_DEFINE
+USE MODI_MNH_OASIS_GRID
+USE MODI_SFX_OASIS_INIT
 #endif
 !
 USE MODE_MPPDB
@@ -137,8 +138,8 @@ TYPE(DATE_TIME)          :: TZDTMODELN        ! Date/time of current model compu
 TYPE(TFILEPTR), DIMENSION(:), ALLOCATABLE :: TZBAKFILES ! Array of pointers to backup files
 !
 #ifdef CPLOASIS
-  CHARACTER(LEN=28)  :: CNAMELIST
-  LOGICAL            :: L_MASTER
+CHARACTER(LEN=NFILENAMELGTMAX) :: CNAMELIST
+LOGICAL                        :: L_MASTER
 #endif
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90
index a916c8922..46a16fa5e 100644
--- a/src/MNH/mnh2lpdm_ech.f90
+++ b/src/MNH/mnh2lpdm_ech.f90
@@ -52,7 +52,7 @@ TYPE(TFILEDATA),POINTER,INTENT(IN)    :: TPMETEOFILE
 !
 !*	0.3 Variables locales.
 !
-CHARACTER(LEN=100)   :: YFTURB                       ! Stockage champs de turbulence.
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFTURB             ! Stockage champs de turbulence.
 INTEGER              :: IFTURB
 INTEGER              :: IFMTO,IREP
 INTEGER              :: ICURAA,ICURMM,ICURJJ         ! Date  courante.
diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90
index 526bdd08a..fa1ee9187 100644
--- a/src/MNH/mnh2lpdm_ini.f90
+++ b/src/MNH/mnh2lpdm_ini.f90
@@ -66,8 +66,8 @@ TYPE(TFILEDATA),POINTER,INTENT(IN)    :: TPDATEFILE
 !
 !*	0.3 Variables locales.
 !
-CHARACTER(LEN=28)     :: YNAME,YDAD     ! Noms du FM et de son papa.
-CHARACTER(LEN=2)      :: YSTORAGE       ! Type de variable.
+CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME, YDAD ! Noms du FM et de son papa.
+CHARACTER(LEN=2)               :: YSTORAGE    ! Type de variable.
 !
 REAL                  :: ZECHEANCE1,ZECHEANCE2     ! dist temp date modele - date courante
 INTEGER               :: IHHMDL,IMNMDL,ISSMDL ! h - mn - s du model
diff --git a/src/MNH/mnhclose_aux_io_surf.f90 b/src/MNH/mnhclose_aux_io_surf.f90
index ba818000a..9a5ae99ca 100644
--- a/src/MNH/mnhclose_aux_io_surf.f90
+++ b/src/MNH/mnhclose_aux_io_surf.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,8 +9,10 @@
 INTERFACE
       SUBROUTINE MNHCLOSE_AUX_IO_SURF(HFILE,HFILETYPE)
 !
-CHARACTER(LEN=28), INTENT(IN), OPTIONAL :: HFILE    ! file to close
-CHARACTER(LEN=6),  INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN), OPTIONAL :: HFILE    ! file to close
+CHARACTER(LEN=6),               INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close
 
 !
 END SUBROUTINE MNHCLOSE_AUX_IO_SURF
@@ -57,6 +59,7 @@ END MODULE MODI_MNHCLOSE_AUX_IO_SURF
 !              ------------
 !
 USE MODD_IO_SURF_MNH, ONLY: TPINFILE, CACTION, NMASK_ALL, NMASK
+USE MODD_PARAMETERS,  ONLY: NFILENAMELGTMAX
 !
 USE MODE_IO_FILE,     only: IO_File_close
 USE MODE_ll
@@ -66,15 +69,13 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-CHARACTER(LEN=28), INTENT(IN), OPTIONAL :: HFILE    ! file to close
-CHARACTER(LEN=6),  INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN), OPTIONAL :: HFILE    ! file to close
+CHARACTER(LEN=6),               INTENT(IN), OPTIONAL :: HFILETYPE! type of file to close
 
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
 !
-INTEGER           :: IRESP          ! return-code if a problem appears
-!
 !-------------------------------------------------------------------------------
 !
 IF (CACTION=='OPEN  ') THEN
diff --git a/src/MNH/mnhend_io_surfn.f90 b/src/MNH/mnhend_io_surfn.f90
index 6a1d1c034..2836f7870 100644
--- a/src/MNH/mnhend_io_surfn.f90
+++ b/src/MNH/mnhend_io_surfn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -72,7 +72,7 @@ INTEGER           :: IRESP          ! return-code if a problem appears
 !
 CACTION='     '
 !
-COUTFILE = '                           '
+COUTFILE = ''
 TPINFILE => NULL()
 !
 DEALLOCATE(NMASK)
diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90
index 2d0888f45..a2da1c413 100644
--- a/src/MNH/mnhopen_aux_io_surf.f90
+++ b/src/MNH/mnhopen_aux_io_surf.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,9 +9,11 @@
 INTERFACE
       SUBROUTINE MNHOPEN_AUX_IO_SURF(HFILE,HFILETYPE,HMASK)
 !
-CHARACTER(LEN=28), INTENT(IN)  :: HFILE     ! file name
-CHARACTER(LEN=6),  INTENT(IN)  :: HFILETYPE ! main program
-CHARACTER(LEN=6),  INTENT(IN)  :: HMASK
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE     ! file name
+CHARACTER(LEN=6),               INTENT(IN) :: HFILETYPE ! main program
+CHARACTER(LEN=6),               INTENT(IN) :: HMASK
 !
 END SUBROUTINE MNHOPEN_AUX_IO_SURF
 !
@@ -69,7 +71,7 @@ USE MODD_IO_SURF_MNH,      ONLY: TOUT, TPINFILE, COUTFILE, NMASK_ALL, CMASK, NIU
                                  NMASK, NIU, NJU, NIB, NJB, NIE, NJE
 USE MODD_LUNIT,            ONLY: TPGDFILE, TLUOUT0, TOUTDATAFILE
 USE MODD_LUNIT_n,          ONLY: TLUOUT
-USE MODD_PARAMETERS,       ONLY: JPHEXT
+USE MODD_PARAMETERS,       ONLY: JPHEXT, NFILENAMELGTMAX
 !
 USE MODE_IO_FIELD_READ,    only: IO_Field_read
 USE MODE_IO_FILE,          ONLY: IO_File_open
@@ -85,9 +87,9 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-CHARACTER(LEN=28), INTENT(IN)  :: HFILE     ! file name
-CHARACTER(LEN=6),  INTENT(IN)  :: HFILETYPE ! main program
-CHARACTER(LEN=6),  INTENT(IN)  :: HMASK
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE     ! file name
+CHARACTER(LEN=6),               INTENT(IN) :: HFILETYPE ! main program
+CHARACTER(LEN=6),               INTENT(IN) :: HMASK
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
@@ -98,7 +100,7 @@ INTEGER           :: IIMAX          ! number of points in X direction
 INTEGER           :: IJMAX          ! number of points in Y direction
 !
 !
-CHARACTER(LEN=28) :: YFILE,YPGDFILE ! file names
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFILE, YPGDFILE ! file names
 INTEGER           :: ILU            ! 1D physical dimension of XCOVER
 INTEGER           :: ILUOUT
 REAL, DIMENSION(:),   ALLOCATABLE :: ZFULL  ! total cover
diff --git a/src/MNH/mnhopen_namelist.f90 b/src/MNH/mnhopen_namelist.f90
index 81716add4..d84590952 100644
--- a/src/MNH/mnhopen_namelist.f90
+++ b/src/MNH/mnhopen_namelist.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,9 +9,11 @@
 INTERFACE
       SUBROUTINE MNHOPEN_NAMELIST(HPROGRAM,KLUNAM,HFILE)
 !
-CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! main program
-INTEGER,           INTENT(OUT) :: KLUNAM   ! logical unit of namelist
-CHARACTER(LEN=28), INTENT(IN)  :: HFILE ! ASCII file to open
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+
+CHARACTER(LEN=6),               INTENT(IN)  :: HPROGRAM ! main program
+INTEGER,                        INTENT(OUT) :: KLUNAM   ! logical unit of namelist
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILE ! ASCII file to open
 !
 END SUBROUTINE MNHOPEN_NAMELIST
 !
@@ -56,6 +58,7 @@ END MODULE MODI_MNHOPEN_NAMELIST
 !
 USE MODD_CONF,             ONLY: CPROGRAM
 USE MODD_IO_NAM,           ONLY: TNAM
+USE MODD_PARAMETERS,       ONLY: NFILENAMELGTMAX
 !
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
@@ -67,9 +70,9 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! main program
-INTEGER,           INTENT(OUT) :: KLUNAM   ! logical unit of namelist
-CHARACTER(LEN=28), INTENT(IN)  :: HFILE ! ASCII file to open
+CHARACTER(LEN=6),               INTENT(IN)  :: HPROGRAM ! main program
+INTEGER,                        INTENT(OUT) :: KLUNAM   ! logical unit of namelist
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILE ! ASCII file to open
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
@@ -78,7 +81,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
                                     ! at the open of the file in LFI  routines 
 INTEGER           :: IMI            ! model index
 !
-CHARACTER(LEN=28) :: YNAM ! name of namelist
+CHARACTER(LEN=NFILENAMELGTMAX) :: YNAM ! name of namelist
 !-------------------------------------------------------------------------------
 !
 !* reading of namelist
diff --git a/src/MNH/modd_ch_mnhcn.f90 b/src/MNH/modd_ch_mnhcn.f90
index 457860e9d..6ee24c190 100644
--- a/src/MNH/modd_ch_mnhcn.f90
+++ b/src/MNH/modd_ch_mnhcn.f90
@@ -46,7 +46,7 @@
 !
 !*       0.   DECLARATIONS
 !        -----------------
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
+USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX
 IMPLICIT NONE
 
 TYPE CH_MNHC_t
@@ -98,7 +98,7 @@ TYPE CH_MNHC_t
   CHARACTER(LEN=10) :: CCH_SCHEME
                  ! name of chemical scheme
 !
-  CHARACTER(LEN=80) :: CCHEM_INPUT_FILE 
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE
                  ! name of general 
                  ! purpose ASCII input file (handeled by CH_OPEN_INPUT)
 !
@@ -125,7 +125,7 @@ TYPE CH_MNHC_t
 !* photolysis rates (TUV)
 !
   LOGICAL      :: LCH_TUV_ONLINE  ! switch online/lookup table
-  CHARACTER(LEN=80) :: CCH_TUV_LOOKUP  ! name of lookup table file
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP  ! name of lookup table file
   CHARACTER(LEN=4)  :: CCH_TUV_CLOUDS  ! method for calculating the
                                 ! impact of clouds on radiation
                                 ! "FOUQ" (model clouds, only 1-D)
@@ -151,7 +151,7 @@ TYPE CH_MNHC_t
 !
   REAL              :: XCH_TS1D_TSTEP         ! time between two call to write_ts1d
   CHARACTER(LEN=80) :: CCH_TS1D_COMMENT       ! comment for write_ts1d
-  CHARACTER(LEN=80) :: CCH_TS1D_FILENAME      ! filename for write_ts1d files
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CCH_TS1D_FILENAME ! filename for write_ts1d files
 !
 !* total production/loss for chemical species
 ! 
@@ -176,12 +176,12 @@ LOGICAL, POINTER :: LCH_RET_ICE=>NULL()
 REAL, POINTER :: XCH_PHINIT=>NULL()
 REAL, POINTER :: XRTMIN_AQ=>NULL()
 CHARACTER(LEN=10), POINTER :: CCH_SCHEME=>NULL()
-CHARACTER(LEN=80), POINTER :: CCHEM_INPUT_FILE=>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCHEM_INPUT_FILE=>NULL()
 CHARACTER(LEN=10), POINTER :: CCH_TDISCRETIZATION=>NULL()
 INTEGER, POINTER :: NCH_SUBSTEPS=>NULL()
 LOGICAL, POINTER :: LCH_CONV_LINOX=>NULL()
 LOGICAL, POINTER :: LCH_TUV_ONLINE=>NULL()
-CHARACTER(LEN=80), POINTER :: CCH_TUV_LOOKUP=>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCH_TUV_LOOKUP=>NULL()
 CHARACTER(LEN=4), POINTER :: CCH_TUV_CLOUDS=>NULL()
 REAL, POINTER :: XCH_TUV_ALBNEW=>NULL()
 REAL, POINTER :: XCH_TUV_DOBNEW=>NULL()
@@ -190,7 +190,7 @@ CHARACTER(LEN=3), POINTER :: CCH_VEC_METHOD=>NULL()
 INTEGER, POINTER :: NCH_VEC_LENGTH=>NULL()
 REAL, POINTER :: XCH_TS1D_TSTEP=>NULL()
 CHARACTER(LEN=80), POINTER :: CCH_TS1D_COMMENT=>NULL()
-CHARACTER(LEN=80), POINTER :: CCH_TS1D_FILENAME=>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CCH_TS1D_FILENAME=>NULL()
 CHARACTER(LEN=1024), POINTER :: CSPEC_PRODLOSS=>NULL()
 CHARACTER(LEN=1024), POINTER :: CSPEC_BUDGET=>NULL()
 
diff --git a/src/MNH/modd_ch_model0d.f90 b/src/MNH/modd_ch_model0d.f90
index 8eb553ae6..7f43b4d41 100644
--- a/src/MNH/modd_ch_model0d.f90
+++ b/src/MNH/modd_ch_model0d.f90
@@ -43,7 +43,8 @@
 !*       0.   DECLARATIONS
 !        -----------------
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 IMPLICIT NONE
 SAVE
@@ -63,15 +64,15 @@ REAL :: XTNEXTMETEO   ! time of next meteo update
 !
 !*       0.2  file names, formats and I/O channels
 !
-CHARACTER(len=128) :: CINITFILE  = "CHCONTROL1.nam" ! name of initial value file
-CHARACTER(len=128) :: CMETEOFILE = "CHCONTROL1.nam" ! meteo update file
+CHARACTER(len=NFILENAMELGTMAX) :: CINITFILE  = "CHCONTROL1.nam" ! name of initial value file
+CHARACTER(len=NFILENAMELGTMAX) :: CMETEOFILE = "CHCONTROL1.nam" ! meteo update file
 TYPE(TFILEDATA),POINTER :: TMETEOFILE => NULL() ! meteo update file
 !
-CHARACTER(len=128) :: COUTFILE    = "BOX.OUT"      ! name of final output file
-CHARACTER(len=128) :: CRESULTFILE = "BOX.RESULT"   ! regular output file
-CHARACTER(len=128) :: CDIAGFILE   = "BOX.DIAG"     ! diagnostics output file
+CHARACTER(len=NFILENAMELGTMAX) :: COUTFILE    = "BOX.OUT"      ! name of final output file
+CHARACTER(len=NFILENAMELGTMAX) :: CRESULTFILE = "BOX.RESULT"   ! regular output file
+CHARACTER(len=NFILENAMELGTMAX) :: CDIAGFILE   = "BOX.DIAG"     ! diagnostics output file
 !
-CHARACTER(len=80)  :: CRUNID        = "no runid specified" ! runid for output file
+CHARACTER(len=NFILENAMELGTMAX)  :: CRUNID        = "no runid specified" ! runid for output file
 CHARACTER(len=40)  :: CRESULTFORMAT = "(5E16.8)" ! Format for results
 CHARACTER(len=40)  :: CDIAGFORMAT   = "(5E16.8)" ! Format for diagnostics
 !
@@ -85,7 +86,7 @@ INTEGER :: NVERB     = 5  ! verbosity level: 0 (lowest) <= NVERB <= 10 (highest)
 !*       0.4  parameters for TUV
 !
 LOGICAL      :: LCH_TUV_ONLINE = .TRUE.        ! switch online/lookup table
-CHARACTER(len=80) :: CCH_TUV_LOOKUP = "PHOTO.TUV39" ! name of lookup table file
+CHARACTER(len=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP = "PHOTO.TUV39" ! name of lookup table file
 CHARACTER(len=4)  :: CCH_TUV_CLOUDS = "NONE"        ! method for calculating the
                                                     ! impact of clouds on radiation
                                                     ! "FOUQ" (model clouds, only 1-D)
@@ -101,5 +102,5 @@ REAL :: XCH_TUV_TUPDATE = 600. ! update frequency for TUV (in seconds)
 !
 LOGICAL :: LCH_SURFACE0D = .FALSE. ! switch to activate surface fluxes
 !
-CHARACTER(LEN=80) :: CCHEM_INPUT_FILE
+CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE
 END MODULE MODD_CH_MODEL0D
diff --git a/src/MNH/modd_conf.f90 b/src/MNH/modd_conf.f90
index ea493d3a3..07a3ebd50 100644
--- a/src/MNH/modd_conf.f90
+++ b/src/MNH/modd_conf.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
@@ -53,6 +53,8 @@
 !*       0.   DECLARATIONS
 !             ------------
 !
+USE MODD_PARAMETERS, ONLY: NEXPNAMELGTMAX, NSEGNAMELGTMAX
+!
 IMPLICIT NONE
 !
 CHARACTER (LEN=5),SAVE :: CCONF  ! Configuration of models
@@ -82,8 +84,8 @@ INTEGER,SAVE      :: NVERB       ! Level of informations on output-listing
                                  !  0 for minimum of prints
                                  ! 5 for intermediate level of prints
                                  ! 10 for maximum of prints
-CHARACTER (LEN=5),SAVE :: CEXP   !  Experiment name
-CHARACTER (LEN=5),SAVE :: CSEG   ! name of segment
+CHARACTER (LEN=NEXPNAMELGTMAX), SAVE :: CEXP   !  Experiment name
+CHARACTER (LEN=NSEGNAMELGTMAX), SAVE :: CSEG   ! name of segment
 LOGICAL,SAVE :: LFORCING         ! Logical for forcing sources
                                  ! .TRUE.  = add forcing sources
                                  ! .FALSE. = no forcing fields
diff --git a/src/MNH/modd_eol_shared_io.f90 b/src/MNH/modd_eol_shared_io.f90
index a80dd1fa8..ab3c6db63 100644
--- a/src/MNH/modd_eol_shared_io.f90
+++ b/src/MNH/modd_eol_shared_io.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2020-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2020-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -30,6 +30,8 @@
 !!
 !-----------------------------------------------------------------------------
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
 IMPLICIT NONE
 !
 !*       1.   INPUTS VAR
@@ -37,10 +39,10 @@ IMPLICIT NONE
 !
 ! --- Namelistis NAM_EOL_ADNR/NAM_EOL_ALM ---
 ! * .csv files
-CHARACTER(LEN=100) :: CFARM_CSVDATA     ! Farm file to read 
-CHARACTER(LEN=100) :: CTURBINE_CSVDATA  ! Turbine file to read  
-CHARACTER(LEN=100) :: CBLADE_CSVDATA    ! Blade file to read  
-CHARACTER(LEN=100) :: CAIRFOIL_CSVDATA  ! Airfoil file to read  
+CHARACTER(LEN=NFILENAMELGTMAX) :: CFARM_CSVDATA     ! Farm file to read
+CHARACTER(LEN=NFILENAMELGTMAX) :: CTURBINE_CSVDATA  ! Turbine file to read
+CHARACTER(LEN=NFILENAMELGTMAX) :: CBLADE_CSVDATA    ! Blade file to read
+CHARACTER(LEN=NFILENAMELGTMAX) :: CAIRFOIL_CSVDATA  ! Airfoil file to read
 ! * flags
 CHARACTER(LEN=3)   :: CINTERP           ! Interpolation method for wind speed
 LOGICAL            :: LTIPLOSSG         ! Flag to apply Glauert's tip loss correction
diff --git a/src/MNH/modd_firen.f90 b/src/MNH/modd_firen.f90
index 8ca8ff9b1..8d4e776e0 100644
--- a/src/MNH/modd_firen.f90
+++ b/src/MNH/modd_firen.f90
@@ -33,7 +33,7 @@
 !*       0.   DECLARATIONS
 !             ------------
 !
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
+USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX
 USE MODD_PRECISION,  ONLY: MNHTIME
 
 IMPLICIT NONE
@@ -89,7 +89,7 @@ TYPE TFIRE_t
 
   CHARACTER(LEN=7)  :: CFIRE_CPL_MODE       ! Coupling mode (default 2WAYCPL)
 
-  CHARACTER(LEN=28) :: CBMAPFILE            ! BMap file for FIR2ATM mode (default INIFILE)
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE)
   LOGICAL           :: LINTERPWIND          ! Flag for wind interpolation
   LOGICAL           :: LSGBAWEIGHT          ! Flag for use of weighted average method for SubGrid Burning Area computation
 
@@ -179,7 +179,7 @@ CHARACTER(LEN=11),                POINTER :: CPROPAG_MODEL      => NULL()
 CHARACTER(LEN=3),                 POINTER :: CHEAT_FLUX_MODEL   => NULL()
 CHARACTER(LEN=3),                 POINTER :: CLATENT_FLUX_MODEL => NULL()
 CHARACTER(LEN=7),                 POINTER :: CFIRE_CPL_MODE     => NULL()
-CHARACTER(LEN=28),                POINTER :: CBMAPFILE          => NULL()
+CHARACTER(LEN=NFILENAMELGTMAX),   POINTER :: CBMAPFILE          => NULL()
 LOGICAL,                          POINTER :: LINTERPWIND        => NULL()
 LOGICAL,                          POINTER :: LSGBAWEIGHT        => NULL()
 INTEGER,                          POINTER :: NFIRE_WENO_ORDER   => NULL()
diff --git a/src/MNH/modd_hurr_conf.f90 b/src/MNH/modd_hurr_conf.f90
index 8c4cafcdb..2466c3b1a 100644
--- a/src/MNH/modd_hurr_conf.f90
+++ b/src/MNH/modd_hurr_conf.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2001-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 !     #####################
       MODULE MODD_HURR_CONF
 !     #####################
@@ -50,6 +45,7 @@
 !
 !*       0.   DECLARATIONS
 !             ------------
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 IMPLICIT NONE
 !
@@ -85,6 +81,6 @@ REAL   ,SAVE       ::   XMAX        ! altitude where the tangentiel wind vanishe
 REAL   ,SAVE       ::   XANGCONV0   ! Convergence angle near the surface
 REAL   ,SAVE       ::   XANGCONV1000! Convergence angle at 1000m altitude
 REAL   ,SAVE       ::   XANGCONV2000! Convergence angle at 2000m altitude
-CHARACTER(LEN=28),SAVE :: CDADATMFILE  ! Name of the dad of HATMFILE 
-CHARACTER(LEN=28),SAVE :: CDADBOGFILE  ! Name of the dad of CINIFILE
+CHARACTER(LEN=NFILENAMELGTMAX),SAVE :: CDADATMFILE  ! Name of the dad of HATMFILE
+CHARACTER(LEN=NFILENAMELGTMAX),SAVE :: CDADBOGFILE  ! Name of the dad of CINIFILE
  END MODULE MODD_HURR_CONF
diff --git a/src/MNH/modd_io_surf_mnh.f90 b/src/MNH/modd_io_surf_mnh.f90
index 635f6b6ed..dbe471a5f 100644
--- a/src/MNH/modd_io_surf_mnh.f90
+++ b/src/MNH/modd_io_surf_mnh.f90
@@ -32,8 +32,8 @@
 !
 !*       0.   DECLARATIONS
 !
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX
 
 IMPLICIT NONE
 
@@ -41,7 +41,7 @@ INTEGER                              :: NHALO = 0
 
 TYPE IO_SURF_MNH_t
   TYPE(TFILEDATA),POINTER        :: TPINFILE => NULL() ! Input FM-file
-  CHARACTER(LEN=28)              :: COUTFILE    ! Name of the output FM-file
+  CHARACTER(LEN=NFILENAMELGTMAX) :: COUTFILE    ! Name of the output FM-file
   TYPE(TFILEDATA),POINTER        :: TOUT => NULL() ! Output_listing file
   CHARACTER(LEN=6)               :: CMASK
   INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL()     ! 1D mask to read only interesting surface
@@ -65,7 +65,7 @@ TYPE(IO_SURF_MNH_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: IO_SURF_MNH_MODEL
 !!!!!!!!!!!!!!!!!!!! LOCAL VARIABLE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
 TYPE(TFILEDATA)       ,POINTER :: TPINFILE => NULL()  ! Input FM-file
-CHARACTER(LEN=28)     ,POINTER :: COUTFILE =>NULL()   ! Name of the output FM-file
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: COUTFILE =>NULL()   ! Name of the output FM-file
 TYPE(TFILEDATA)       ,POINTER :: TOUT => NULL()      ! Output_listing file
 CHARACTER(LEN=6)      ,POINTER :: CMASK =>NULL()
 INTEGER, DIMENSION(:), POINTER :: NMASK=>NULL()     ! 1D mask to read only interesting surface
diff --git a/src/MNH/modd_lma_simulator.f90 b/src/MNH/modd_lma_simulator.f90
index 2946c6df9..1fbca6376 100644
--- a/src/MNH/modd_lma_simulator.f90
+++ b/src/MNH/modd_lma_simulator.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -35,6 +35,7 @@
 !*       0.   DECLARATIONS
 !             ------------
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 USE MODD_TYPE_DATE
 !
 IMPLICIT NONE
@@ -47,7 +48,7 @@ LOGICAL, SAVE                          :: LLMA=.FALSE.! Flag to record LMA-like
                                                       ! simulation
 REAL, SAVE                             :: XDTLMA ! Time length of a LMA record
 TYPE (DATE_TIME), SAVE                 :: TDTLMA ! Date and Time of LMA file
-CHARACTER (LEN=31), SAVE               :: CLMA_FILE   ! File name
+CHARACTER (LEN=NFILENAMELGTMAX), SAVE  :: CLMA_FILE   ! File name
 !
 !* storage monitoring
 !
diff --git a/src/MNH/modd_lunitn.f90 b/src/MNH/modd_lunitn.f90
index 4ac4a5c31..f6e786804 100644
--- a/src/MNH/modd_lunitn.f90
+++ b/src/MNH/modd_lunitn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -43,24 +43,20 @@
 !
 !
 USE MODD_IO,         ONLY: TFILEDATA, TPTR2FILE
-USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPCPLFILEMAX 
+USE MODD_PARAMETERS, ONLY: JPMODELMAX, JPCPLFILEMAX, NFILENAMELGTMAX
 
 IMPLICIT NONE
 
 TYPE LUNIT_t
 ! 
-  CHARACTER(LEN=28) :: CINIFILE = 'INIFILE'    ! Name of the input FM-file
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE = 'INIFILE'    ! Name of the input FM-file
   TYPE(TFILEDATA),POINTER :: TINIFILE => NULL() ! input FM-file
-  CHARACTER(LEN=28) :: CINIFILEPGD = '' ! Name of the PGD associated to input FM-file
+  CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD = '' ! Name of the PGD associated to input FM-file
   TYPE(TFILEDATA),POINTER :: TINIFILEPGD => NULL() ! PGD associated to input FM-file
-  CHARACTER(LEN=24) :: COUTFILE = ''    ! Generic name of the output FM-files
   TYPE(TFILEDATA),POINTER :: TDIAFILE => NULL() ! diachronic output file
   TYPE(TFILEDATA),POINTER :: TLUOUT => NULL() ! output_listing file
-!JUAN
-  CHARACTER(LEN=28),DIMENSION(:),POINTER :: CCPLFILE =>NULL() ! Names of the
-                                                           ! coupling FM-files
+  CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE =>NULL() ! Names of the coupling FM-files
   TYPE(TPTR2FILE),DIMENSION(:),POINTER :: TCPLFILE => NULL() ! Coupling files
-!JUAN
 !
 END TYPE LUNIT_t
 
@@ -68,14 +64,13 @@ TYPE(LUNIT_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: LUNIT_MODEL
 LOGICAL      , DIMENSION(JPMODELMAX),         SAVE :: LUNIT_FIRST_CALL = .TRUE.
 CHARACTER(LEN=4),SAVE :: CMASK_SURFEX='PREP'
 !
-CHARACTER(LEN=28), POINTER :: CINIFILE=>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILE=>NULL()
 TYPE(TFILEDATA),   POINTER :: TINIFILE => NULL()
-CHARACTER(LEN=28), POINTER :: CINIFILEPGD =>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILEPGD =>NULL()
 TYPE(TFILEDATA),   POINTER :: TINIFILEPGD => NULL()
-CHARACTER(LEN=24), POINTER :: COUTFILE=>NULL()
 TYPE(TFILEDATA),   POINTER :: TDIAFILE=>NULL()
 TYPE(TFILEDATA),   POINTER :: TLUOUT=>NULL()
-CHARACTER(LEN=28),DIMENSION(:), POINTER :: CCPLFILE=>NULL()
+CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE=>NULL()
 TYPE(TPTR2FILE),  DIMENSION(:), POINTER :: TCPLFILE=>NULL()
 
 CONTAINS
@@ -103,7 +98,6 @@ CINIFILE=>LUNIT_MODEL(KTO)%CINIFILE
 TINIFILE=>LUNIT_MODEL(KTO)%TINIFILE
 CINIFILEPGD=>LUNIT_MODEL(KTO)%CINIFILEPGD
 TINIFILEPGD=>LUNIT_MODEL(KTO)%TINIFILEPGD
-COUTFILE=>LUNIT_MODEL(KTO)%COUTFILE
 TDIAFILE=>LUNIT_MODEL(KTO)%TDIAFILE
 TLUOUT=>LUNIT_MODEL(KTO)%TLUOUT
 CCPLFILE=>LUNIT_MODEL(KTO)%CCPLFILE
diff --git a/src/MNH/modd_mnh2lpdm.f90 b/src/MNH/modd_mnh2lpdm.f90
index b8c053397..f09af209e 100644
--- a/src/MNH/modd_mnh2lpdm.f90
+++ b/src/MNH/modd_mnh2lpdm.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2002-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -17,14 +17,19 @@
 !*	FICHIERS ET NAMELISTS.
 !	----------------------
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+IMPLICIT NONE
+!
 INTEGER,PARAMETER :: JPMNHMAX = 30   ! Nombre max de  fichiers FM.
+!
 INTEGER,SAVE      :: NBMNH           ! Nombre reel de fichiers FM.
 INTEGER,SAVE      :: IGRILLE         ! numero de la grille Meso-nh
 !
-CHARACTER(LEN=50), SAVE, DIMENSION(JPMNHMAX) :: CFMTO  ! Nom des fichiers METEO.
-CHARACTER(LEN=50), SAVE                      :: CFGRI  ! Nom du fichier GRILLE.
-CHARACTER(LEN=50), SAVE                      :: CFDAT  ! Nom du fichier DATE.
-CHARACTER(LEN=28), SAVE, DIMENSION(JPMNHMAX) :: CFMNH  ! Noms des FM.
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE, DIMENSION(JPMNHMAX) :: CFMTO  ! Nom des fichiers METEO.
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE                      :: CFGRI  ! Nom du fichier GRILLE.
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE                      :: CFDAT  ! Nom du fichier DATE.
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE, DIMENSION(JPMNHMAX) :: CFMNH  ! Noms des FM.
 !
 CHARACTER(len=10), SAVE :: CTURBPARAM="ISOTROPE"   ! ISOTROPE ou HANNA
 !
diff --git a/src/MNH/modd_parameters.f90 b/src/MNH/modd_parameters.f90
index 390c17fe4..0e378863e 100644
--- a/src/MNH/modd_parameters.f90
+++ b/src/MNH/modd_parameters.f90
@@ -76,8 +76,9 @@ INTEGER, PARAMETER :: NNEGUNDEF = -999  ! default value for undefined or unused
 !                                       ! field (negative value guaranteed)
 INTEGER, PARAMETER :: JPDUMMY  = 20   ! Size of dummy array
 !
+
 INTEGER, PARAMETER :: JPOUTVARMAX = 192 ! Maximum allowed number of variables in an output file
-!
+
 INTEGER, PARAMETER :: NBUNAMELGTMAX   = 32  ! Maximum length of a budget name
 INTEGER, PARAMETER :: NCOMMENTLGTMAX  = 100 ! Maximum length of a comment
 INTEGER, PARAMETER :: NMNHNAMELGTMAX  = 32  ! Maximum length of a MNH variable name
@@ -87,8 +88,31 @@ INTEGER, PARAMETER :: NUNITLGTMAX     = 40  ! Maximum length of the canonical un
 
 INTEGER, PARAMETER :: NSENSORNAMELGTMAX = 10 ! Maximum length for the name of a sensor (aircraft, balloon, station, profiler...)
 
+! Filename: maximum length
+! Structure:
+! CEXP.m.CSEG(.OUT).nnn(nnn)(diagsuffix)(.Zzzz).extension
+!
+! CEXP: experiment name
+! m:    model number
+! CESG: segment name
+! .OUT: if filetype is MNHOUTPUT
+! nnn(nnn): index of the output/backup (3 to 6 digits)
+! diagsuffix: suffix added for files created with DIAG from backup files (never for output files)
+! Zzzz: level number for Z-split files (3 digits)
+! extension: suffix of the filename (nc, des...)
+INTEGER, PARAMETER :: NEXPNAMELGTMAX    = 32 ! should be at least 5
+INTEGER, PARAMETER :: NMODELNUMLGTMAX   = 1  ! should be at least 1
+INTEGER, PARAMETER :: NSEGNAMELGTMAX    = 32 ! should be at least 5
+INTEGER, PARAMETER :: NFILENUMLGTMAX    = 6  ! should be at least 3
+INTEGER, PARAMETER :: NDIAGSUFFIXLGTMAX = 5  ! should be at least 5
+INTEGER, PARAMETER :: NZSPLITNUMLGTMAX  = 3  ! should be at least 3
+INTEGER, PARAMETER :: NEXTNAMELGTMAX    = 3  ! should be at least 3
+! NFILENAMELGTMAX: maximum length name for a file. Remark: used for any file (even if not with the previous structure)
+! Length should be at least 50 to respect constraints on all filenames
+INTEGER, PARAMETER :: NFILENAMELGTMAX   = NEXPNAMELGTMAX + 1 + NMODELNUMLGTMAX + 1 + NSEGNAMELGTMAX        &
+                                          + 1 + NFILENUMLGTMAX + 2 + NZSPLITNUMLGTMAX + 1 + NEXTNAMELGTMAX &
+                                          + MAX (4,NDIAGSUFFIXLGTMAX ) ! 4 is for .OUT
 INTEGER, PARAMETER :: NDIRNAMELGTMAX = 512 ! Maximum length of a directory name
-INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name (must be at least NFILENAMELGTMAXLFI)
 INTEGER, PARAMETER :: NFILENAMELGTMAXLFI = 28 ! Maximum length of a file name in LFI file (this is necessary
                                               ! to keep backward compatibility), MUST BE 28
 !
diff --git a/src/MNH/modd_spawn.f90 b/src/MNH/modd_spawn.f90
index 6efedc643..2fa01ed4e 100644
--- a/src/MNH/modd_spawn.f90
+++ b/src/MNH/modd_spawn.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1999-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     #################
@@ -39,6 +39,7 @@
 !*       0.   DECLARATIONS
 !             ------------
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 USE MODD_TYPE_DATE
 !
 IMPLICIT NONE
@@ -50,17 +51,15 @@ INTEGER,SAVE   :: NXSIZE,NYSIZE     ! number of model 1 grid points in x and y-d
 INTEGER,SAVE   :: NXOR, NYOR        ! horizontal position (i,j) of the
 INTEGER,SAVE   :: NXEND,NYEND       ! ORigin and END of model 2 relative to model 1 
 !
-CHARACTER (LEN=28) :: CDOMAIN       ! input fm-file for grid definition
+CHARACTER (LEN=NFILENAMELGTMAX) :: CDOMAIN ! input fm-file for grid definition
 !
 LOGICAL            :: LBAL_ONLY     ! logical switch for spawning 1 with
                                     ! balance calculation only and
                                     ! no modification of the model definition
                                     ! v.s its DAD except the DAD name
 !
-CHARACTER (LEN=28) :: CDADINIFILE ! DAD fm-file for initial file
-                                    ! if LBAL_ONLY=T
-CHARACTER (LEN=28) :: CDADSPAFILE ! DAD fm-file for spawning file
-                                    ! if LBAL_ONLY=T
+CHARACTER (LEN=NFILENAMELGTMAX) :: CDADINIFILE ! DAD fm-file for initial file  if LBAL_ONLY=T
+CHARACTER (LEN=NFILENAMELGTMAX) :: CDADSPAFILE ! DAD fm-file for spawning file if LBAL_ONLY=T
 !
 ! Pointers to the data of the mesh #1
 REAL,DIMENSION(:),    SAVE,POINTER :: XXHAT1  => NULL()
diff --git a/src/MNH/modd_sto_file.f90 b/src/MNH/modd_sto_file.f90
index 50ffb8cfe..0278b8e0e 100644
--- a/src/MNH/modd_sto_file.f90
+++ b/src/MNH/modd_sto_file.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 ! Modifications:
@@ -9,8 +9,12 @@
 !     ######spl
 MODULE MODD_STO_FILE
 !################
-CHARACTER (LEN=28), SAVE :: CFILES(100)       ! names of the files to be treated
-INTEGER           , SAVE :: NSTART_SUPP(100)  ! supplementary starts 
-                                              ! for the lagrangian trajectories 
+
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+
+SAVE
+
+CHARACTER(LEN=NFILENAMELGTMAX) :: CFILES(100)       ! names of the files to be treated
+INTEGER                        :: NSTART_SUPP(100) ! supplementary starts for the lagrangian trajectories
 !
 END MODULE MODD_STO_FILE
diff --git a/src/MNH/modn_ch_mnhcn.f90 b/src/MNH/modn_ch_mnhcn.f90
index e695fa536..c16105315 100644
--- a/src/MNH/modn_ch_mnhcn.f90
+++ b/src/MNH/modn_ch_mnhcn.f90
@@ -60,6 +60,7 @@ USE MODD_CH_MNHC_n, ONLY: &
          CCH_TS1D_FILENAME_n => CCH_TS1D_FILENAME, &
          CSPEC_PRODLOSS_n => CSPEC_PRODLOSS,  & 
          CSPEC_BUDGET_n => CSPEC_BUDGET
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 IMPLICIT NONE
 !
@@ -73,11 +74,11 @@ LOGICAL  :: LCH_PH
 lOGICAL  :: LCH_RET_ICE
 REAL  :: XCH_PHINIT
 REAL  :: XRTMIN_AQ
-CHARACTER(LEN=80)   :: CCHEM_INPUT_FILE
+CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE
 CHARACTER(LEN=10)   :: CCH_TDISCRETIZATION
 INTEGER  :: NCH_SUBSTEPS
 LOGICAL  :: LCH_TUV_ONLINE
-CHARACTER(len=80)   :: CCH_TUV_LOOKUP
+CHARACTER(len=NFILENAMELGTMAX) :: CCH_TUV_LOOKUP
 CHARACTER(len=4)    :: CCH_TUV_CLOUDS
 REAL  :: XCH_TUV_ALBNEW
 REAL  :: XCH_TUV_DOBNEW
@@ -86,7 +87,7 @@ CHARACTER(len=3)    :: CCH_VEC_METHOD
 INTEGER  :: NCH_VEC_LENGTH
 REAL  :: XCH_TS1D_TSTEP
 CHARACTER(len=80)   :: CCH_TS1D_COMMENT
-CHARACTER(len=80)   :: CCH_TS1D_FILENAME
+CHARACTER(len=NFILENAMELGTMAX) :: CCH_TS1D_FILENAME
 CHARACTER(LEN=1024) :: CSPEC_PRODLOSS
 CHARACTER(LEN=1024) :: CSPEC_BUDGET
 !
diff --git a/src/MNH/modn_firen.f90 b/src/MNH/modn_firen.f90
index 6b7ffe0a0..37d6e04e9 100644
--- a/src/MNH/modn_firen.f90
+++ b/src/MNH/modn_firen.f90
@@ -64,6 +64,7 @@ USE MODD_FIRE_n, ONLY:                        &
   XWLIMUTMAX_n         => XWLIMUTMAX,         &
   NWINDSLOPECPLMODE_n  => NWINDSLOPECPLMODE,  &
   NNBSMOKETRACER_n     => NNBSMOKETRACER
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 
 IMPLICIT NONE
 
@@ -72,7 +73,7 @@ CHARACTER(LEN=11) :: CPROPAG_MODEL        ! Fire propagation model (default SANT
 CHARACTER(LEN=3)  :: CHEAT_FLUX_MODEL     ! Sensible heat flux injection model (default CST)
 CHARACTER(LEN=3)  :: CLATENT_FLUX_MODEL   ! latent heat flux injection model (default CST)
 CHARACTER(LEN=7)  :: CFIRE_CPL_MODE       ! Coupling mode (default 2WAYCPL)
-CHARACTER(LEN=28) :: CBMAPFILE            ! BMap file for FIR2ATM mode (default INIFILE)
+CHARACTER(LEN=NFILENAMELGTMAX) :: CBMAPFILE ! BMap file for FIR2ATM mode (default INIFILE)
 LOGICAL           :: LINTERPWIND          ! Flag for wind interpolation
 LOGICAL           :: LSGBAWEIGHT          ! Flag for use of weighted average method for SubGrid Burning Area computation
 INTEGER           :: NFIRE_WENO_ORDER     ! Weno order (1,3,5)
diff --git a/src/MNH/modn_lunitn.f90 b/src/MNH/modn_lunitn.f90
index cb95d4c67..019714869 100644
--- a/src/MNH/modn_lunitn.f90
+++ b/src/MNH/modn_lunitn.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 modn 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ###################
       MODULE MODN_LUNIT_n
 !     ###################
@@ -43,17 +38,18 @@
 !*       0.   DECLARATIONS
 !             ------------
 !
-USE MODD_PARAMETERS, ONLY : JPCPLFILEMAX
-USE MODD_LUNIT_n, ONLY: &
-         CINIFILE_n => CINIFILE, &
-         CINIFILEPGD_n => CINIFILEPGD, &
-         CCPLFILE_n => CCPLFILE
+USE MODD_PARAMETERS, ONLY: JPCPLFILEMAX, NFILENAMELGTMAX
+USE MODD_LUNIT_n,    ONLY: CINIFILE_n    => CINIFILE,    &
+                           CINIFILEPGD_n => CINIFILEPGD, &
+                           CCPLFILE_n    => CCPLFILE
 !
 IMPLICIT NONE
 !
-CHARACTER(LEN=28),SAVE  :: CINIFILE
-CHARACTER(LEN=28),SAVE  :: CINIFILEPGD
-CHARACTER(LEN=28),SAVE,DIMENSION(JPCPLFILEMAX)  :: CCPLFILE
+SAVE
+!
+CHARACTER(LEN=NFILENAMELGTMAX)                          :: CINIFILE
+CHARACTER(LEN=NFILENAMELGTMAX)                          :: CINIFILEPGD
+CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPCPLFILEMAX) :: CCPLFILE
 !
 NAMELIST/NAM_LUNITn/CINIFILE,CINIFILEPGD,CCPLFILE
 !
diff --git a/src/MNH/open_file_mnh.f90 b/src/MNH/open_file_mnh.f90
index 4a0539ec7..93343bb4a 100644
--- a/src/MNH/open_file_mnh.f90
+++ b/src/MNH/open_file_mnh.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,12 +9,14 @@
 INTERFACE
       SUBROUTINE OPEN_FILE_MNH(KUNIT,HFILE,HFORM,HACTION,HACCESS,KRECL)
 !
-INTEGER,           INTENT(OUT):: KUNIT    ! logical unit
-CHARACTER(LEN=28), INTENT(IN) :: HFILE    ! file to open
-CHARACTER(LEN=11), INTENT(IN) :: HFORM    ! type of file
-CHARACTER(LEN=9),  INTENT(IN) :: HACTION  ! action
-CHARACTER(LEN=6),  INTENT(IN) :: HACCESS  ! access type
-INTEGER,           INTENT(IN) :: KRECL    ! record length
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+INTEGER,                        INTENT(OUT):: KUNIT    ! logical unit
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE    ! file to open
+CHARACTER(LEN=11),              INTENT(IN) :: HFORM    ! type of file
+CHARACTER(LEN=9),               INTENT(IN) :: HACTION  ! action
+CHARACTER(LEN=6),               INTENT(IN) :: HACCESS  ! access type
+INTEGER,                        INTENT(IN) :: KRECL    ! record length
 !
 END SUBROUTINE OPEN_FILE_MNH
 !
@@ -58,6 +60,7 @@ END MODULE MODI_OPEN_FILE_MNH
 !              ------------
 !
 USE MODD_IO_NAM,           ONLY: TFILE
+USE MODD_PARAMETERS,       ONLY: NFILENAMELGTMAX
 !
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
@@ -68,18 +71,16 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-INTEGER,           INTENT(OUT):: KUNIT    ! logical unit
-CHARACTER(LEN=28), INTENT(IN) :: HFILE    ! file to open
-CHARACTER(LEN=11), INTENT(IN) :: HFORM    ! type of file
-CHARACTER(LEN=9),  INTENT(IN) :: HACTION  ! action
-CHARACTER(LEN=6),  INTENT(IN) :: HACCESS  ! access type
-INTEGER,           INTENT(IN) :: KRECL    ! record length
+INTEGER,                        INTENT(OUT):: KUNIT    ! logical unit
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HFILE    ! file to open
+CHARACTER(LEN=11),              INTENT(IN) :: HFORM    ! type of file
+CHARACTER(LEN=9),               INTENT(IN) :: HACTION  ! action
+CHARACTER(LEN=6),               INTENT(IN) :: HACCESS  ! access type
+INTEGER,                        INTENT(IN) :: KRECL    ! record length
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
 !
-INTEGER :: IRESP
-!
 !-------------------------------------------------------------------------------
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_FILE_MNH','called for '//TRIM(HFILE))
diff --git a/src/MNH/open_nestpgd_files.f90 b/src/MNH/open_nestpgd_files.f90
index 555d5cbc1..07692c010 100644
--- a/src/MNH/open_nestpgd_files.f90
+++ b/src/MNH/open_nestpgd_files.f90
@@ -109,17 +109,15 @@ INTEGER :: IRESP      ! return-code if problems eraised
 INTEGER :: ILUOUT0    ! logical unit for listing file
 LOGICAL :: GFOUND     ! Return code when searching namelist
 !
-CHARACTER(LEN=28) :: HPRE_NEST_PGD ! name of namelist file
-INTEGER           :: IPRE_NEST_PGD ! logical unit of namelist file
-!
-CHARACTER(LEN=28),DIMENSION(JPMODELMAX) :: YPGD ! name of the pgd file for each model
-CHARACTER(LEN=28) :: YLUOUT    ! name of output listing file for each model
-CHARACTER(LEN=2)  :: YNEST     ! to define the output pgd file names
-CHARACTER(LEN=28) :: YPGD1, YPGD2, YPGD3, YPGD4, &
-                     YPGD5, YPGD6, YPGD7, YPGD8
-!                    ! name of all pgd files
-!                    ! in the namelist
-CHARACTER(LEN=100) :: YMSG
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPRE_NEST_PGD ! name of namelist file
+INTEGER                        :: IPRE_NEST_PGD ! logical unit of namelist file
+!
+CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(JPMODELMAX) :: YPGD ! name of the pgd file for each model
+CHARACTER(LEN=NFILENAMELGTMAX) :: YLUOUT    ! name of output listing file for each model
+CHARACTER(LEN=2)               :: YNEST     ! to define the output pgd file names
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD1, YPGD2, YPGD3, YPGD4, &
+                                  YPGD5, YPGD6, YPGD7, YPGD8
+                                  ! name of all pgd files in the namelist
 INTEGER           :: IDAD    ! father of one model
 INTEGER           :: JPGD    ! loop counter
 LOGICAL           :: GADD    !
@@ -149,7 +147,7 @@ TZPRE_NEST_PGD => NULL()
 !*       1.    SET DEFAULT NAMES
 !              -----------------
 !
-HPRE_NEST_PGD='PRE_NEST_PGD1.nam'
+YPRE_NEST_PGD='PRE_NEST_PGD1.nam'
 !
 !-------------------------------------------------------------------------------
 !
@@ -168,7 +166,7 @@ ILUOUT0=TLUOUT0%NLU
 !*       3.    OPENNING OF PRE_NEST_PGD1.nam
 !              -----------------------------
 !
-CALL IO_File_add2list(TZPRE_NEST_PGD,TRIM(HPRE_NEST_PGD),'NML','READ')
+CALL IO_File_add2list(TZPRE_NEST_PGD,TRIM(YPRE_NEST_PGD),'NML','READ')
 CALL IO_File_open(TZPRE_NEST_PGD)
 IPRE_NEST_PGD = TZPRE_NEST_PGD%NLU
 !reading of NAM_CONFZ
@@ -189,14 +187,14 @@ END IF
 !*       4.    READING OF THE OTHER FILE NAMES
 !              -------------------------------
 !
-YPGD1='                            '
-YPGD2='                            '
-YPGD3='                            '
-YPGD4='                            '
-YPGD5='                            '
-YPGD6='                            '
-YPGD7='                            '
-YPGD8='                            '
+YPGD1=''
+YPGD2=''
+YPGD3=''
+YPGD4=''
+YPGD5=''
+YPGD6=''
+YPGD7=''
+YPGD8=''
 NDAD(:)=0
 GADD=.TRUE.
 !
@@ -257,8 +255,8 @@ DO JPGD=1,JPMODELMAX
   !
   IF ( (IDAD<1 .OR. IDAD>JPMODELMAX) .AND. (JPGD>1) ) THEN
 !callabortstop
-      WRITE(YMSG,*) 'No father indicated for model ',JPGD,' in namelist NAM_PGD',JPGD
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_NESTPGD_FILES',YMSG)
+      WRITE( CMNHMSG(1), * ) 'No father indicated for model ', JPGD, ' in namelist NAM_PGD', JPGD
+      CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'OPEN_NESTPGD_FILES' )
   END IF
   !
   IF (GADD) THEN
diff --git a/src/MNH/open_prc_files.f90 b/src/MNH/open_prc_files.f90
index 056eb30ae..d388a6088 100644
--- a/src/MNH/open_prc_files.f90
+++ b/src/MNH/open_prc_files.f90
@@ -14,20 +14,22 @@ INTERFACE
                                                 HPGDFILE,TPPGDFILE,      &
                                                 HCAMSFILE,HCAMSFILETYPE)
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(OUT) :: HATMFILE     ! name of the input atmospheric file
-CHARACTER(LEN=6),  INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file
-CHARACTER(LEN=28), INTENT(OUT) :: HCHEMFILE    ! name of the input chemical file
-CHARACTER(LEN=6),  INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file
-CHARACTER(LEN=28), INTENT(OUT) :: HSURFFILE    ! name of the input surface file
-CHARACTER(LEN=6),  INTENT(OUT) :: HSURFFILETYPE! type of the input surface file
-CHARACTER(LEN=28), INTENT(OUT) :: HPGDFILE     ! name of the physiographic data file
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file
-CHARACTER(LEN=28), INTENT(OUT) :: HCAMSFILE    ! name of the input CAMS file
-CHARACTER(LEN=6),  INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HATMFILE     ! name of the input atmospheric file
+CHARACTER(LEN=6),               INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPATMFILE ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCHEMFILE    ! name of the input chemical file
+CHARACTER(LEN=6),               INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSURFFILE    ! name of the input surface file
+CHARACTER(LEN=6),               INTENT(OUT) :: HSURFFILETYPE! type of the input surface file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HPGDFILE     ! name of the physiographic data file
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPPGDFILE ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCAMSFILE    ! name of the input CAMS file
+CHARACTER(LEN=6),               INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file
+!
 END SUBROUTINE OPEN_PRC_FILES
 END INTERFACE
 END MODULE MODI_OPEN_PRC_FILES
@@ -112,6 +114,7 @@ USE MODD_CONF_n
 USE MODD_IO,               ONLY: TFILE_OUTPUTLISTING, TFILEDATA
 USE MODD_LUNIT
 USE MODD_LUNIT_n, CINIFILE_n=>CINIFILE , CINIFILEPGD_n=>CINIFILEPGD
+USE MODD_PARAMETERS,       ONLY: NFILENAMELGTMAX
 !
 !
 USE MODE_IO,               only: IO_Config_set
@@ -130,18 +133,18 @@ IMPLICIT NONE
 !*       0.1   Declaration of arguments
 !              ------------------------
 !
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(OUT) :: HATMFILE     ! name of the input atmospheric file
-CHARACTER(LEN=6),  INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPATMFILE ! physiographic data file
-CHARACTER(LEN=28), INTENT(OUT) :: HCHEMFILE    ! name of the input chemical file
-CHARACTER(LEN=6),  INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file
-CHARACTER(LEN=28), INTENT(OUT) :: HSURFFILE    ! name of the input surface file
-CHARACTER(LEN=6),  INTENT(OUT) :: HSURFFILETYPE! type of the input surface file
-CHARACTER(LEN=28), INTENT(OUT) :: HPGDFILE     ! name of the physiographic data file
-TYPE(TFILEDATA),POINTER, INTENT(OUT) :: TPPGDFILE ! physiographic data file
-CHARACTER(LEN=28), INTENT(OUT) :: HCAMSFILE    ! name of the input CAMS file
-CHARACTER(LEN=6),  INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPPRE_REAL1FILE ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HATMFILE     ! name of the input atmospheric file
+CHARACTER(LEN=6),               INTENT(OUT) :: HATMFILETYPE ! type of the input atmospheric file
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPATMFILE ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCHEMFILE    ! name of the input chemical file
+CHARACTER(LEN=6),               INTENT(OUT) :: HCHEMFILETYPE! type of the input chemical file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSURFFILE    ! name of the input surface file
+CHARACTER(LEN=6),               INTENT(OUT) :: HSURFFILETYPE! type of the input surface file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HPGDFILE     ! name of the physiographic data file
+TYPE(TFILEDATA), POINTER,       INTENT(OUT) :: TPPGDFILE ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HCAMSFILE    ! name of the input CAMS file
+CHARACTER(LEN=6),               INTENT(OUT) :: HCAMSFILETYPE! type of the input CAMS file
 !
 !*       0.2   Declaration of local variables
 !              ------------------------------
@@ -151,9 +154,8 @@ INTEGER :: IPRE_REAL1 ! logical unit for file PRE_REAL1
 INTEGER :: ILUOUT0    ! logical unit for listing file
 LOGICAL :: GFOUND     ! Return code when searching namelist
 INTEGER :: ILEN
-CHARACTER(LEN=28) :: YFILE
 !
-CHARACTER(LEN=28) :: CINIFILE ! re-declaration of this model variable for namelist
+CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE ! re-declaration of this model variable for namelist
 !
 !*       0.3   Declaration of namelists
 !              ------------------------
@@ -166,13 +168,13 @@ NAMELIST/NAM_FILE_NAMES/ HATMFILE,HATMFILETYPE,HCHEMFILE,HCHEMFILETYPE, &
 !*       1.    SET DEFAULT NAMES
 !              -----------------
 !
-HATMFILE='                            '
+HATMFILE=''
 HATMFILETYPE='MESONH'
-HCHEMFILE='                            '
+HCHEMFILE=''
 HCHEMFILETYPE='MESONH'
-HSURFFILE='                            '
+HSURFFILE=''
 HSURFFILETYPE='MESONH'
-HCAMSFILE='                            '
+HCAMSFILE=''
 HCAMSFILETYPE='NETCDF'
 !
 !-------------------------------------------------------------------------------
@@ -220,7 +222,7 @@ CALL POSNAM( TPPRE_REAL1FILE, 'NAM_FILE_NAMES', GFOUND )
 IF (GFOUND) READ(UNIT=IPRE_REAL1,NML=NAM_FILE_NAMES)
 CINIFILE_n = CINIFILE
 !
-WRITE(ILUOUT0,*) 'HATMFILE= ', HATMFILE
+WRITE(ILUOUT0,*) 'HATMFILE= ', TRIM(HATMFILE)
 !
 IF (HCHEMFILE==HATMFILE) HCHEMFILE=''
 IF (LEN_TRIM(HCHEMFILE)>0 .AND. HATMFILETYPE/='GRIBEX') THEN
@@ -228,15 +230,15 @@ IF (LEN_TRIM(HCHEMFILE)>0 .AND. HATMFILETYPE/='GRIBEX') THEN
   CALL PRINT_MSG(NVERB_FATAL,'GEN','OPEN_PRC_FILES',&
                  'Additional CHEMical file is only possible when ATMospheric file is of GRIBEX type')
 END IF
-WRITE(ILUOUT0,*) 'HCHEMFILE=', HCHEMFILE
+WRITE(ILUOUT0,*) 'HCHEMFILE=', TRIM(HCHEMFILE)
 !
-WRITE(ILUOUT0,*) 'HCAMSFILE=', HCAMSFILE
+WRITE(ILUOUT0,*) 'HCAMSFILE=', TRIM(HCAMSFILE)
 !
 IF ( LEN_TRIM( HSURFFILE ) == 0 ) THEN
   HSURFFILE     = HATMFILE
   HSURFFILETYPE = HATMFILETYPE
 END IF
-WRITE(ILUOUT0,*) 'HSURFFILE=', HSURFFILE
+WRITE(ILUOUT0,*) 'HSURFFILE=', TRIM(HSURFFILE)
 !
 CINIFILEPGD_n = HPGDFILE
 IF (LEN_TRIM(HPGDFILE)==0) THEN
@@ -262,7 +264,7 @@ ELSE
   END IF
 END IF
 !
-WRITE(ILUOUT0,*) 'HPGDFILE= ', HPGDFILE
+WRITE(ILUOUT0,*) 'HPGDFILE= ', TRIM(HPGDFILE)
 !-------------------------------------------------------------------------------
 !
 !*       6.    INPUT ATMOSPHERIC FILE
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 25eac5bc1..4198be8d1 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -536,7 +536,7 @@ REAL,DIMENSION(:,:,:),ALLOCATABLE   :: XCORIOZ ! Coriolis parameter (this
 !              file is used :
 !
 INTEGER             :: JSV                      ! loop index on scalar var.
-CHARACTER(LEN=28)   :: CPGD_FILE=' '            ! Physio-Graphic Data file name
+CHARACTER(LEN=NFILENAMELGTMAX) :: CPGD_FILE=''  ! Physio-Graphic Data file name
 LOGICAL  :: LREAD_ZS = .TRUE.,                & ! switch to use orography 
                                                 ! coming from the PGD file
             LREAD_GROUND_PARAM = .TRUE.         ! switch to use soil parameters
@@ -545,7 +545,9 @@ LOGICAL  :: LREAD_ZS = .TRUE.,                & ! switch to use orography
 
 INTEGER           :: NSLEVE   =12         ! number of iteration for smooth orography
 REAL              :: XSMOOTH_ZS = XUNDEF  ! optional uniform smooth orography for SLEVE coordinate
-CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME   ! general information
+CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE
+CHARACTER(LEN=6)               :: YATMFILETYPE
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME, YPGD_DAD_NAME   ! general information
 CHARACTER(LEN=2)  :: YPGD_TYPE
 !
 INTEGER           :: IINFO_ll                   ! return code of // routines
@@ -736,17 +738,17 @@ IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN
 
   IF ( CPGD_FILE /= CINIFILEPGD) THEN
      WRITE(NLUOUT,FMT=*) ' WARNING : in PRE_IDEA1.nam, in NAM_LUNITn you&
-          & have CINIFILEPGD= ',CINIFILEPGD
+          & have CINIFILEPGD= ',TRIM(CINIFILEPGD)
      WRITE(NLUOUT,FMT=*) ' whereas in NAM_REAL_PGD you have CPGD_FILE = '&
-          ,CPGD_FILE
+          ,TRIM(CPGD_FILE)
      WRITE(NLUOUT,FMT=*) ' '
-     WRITE(NLUOUT,FMT=*) ' CINIFILEPGD HAS BEEN SET TO  ',CPGD_FILE        
+     WRITE(NLUOUT,FMT=*) ' CINIFILEPGD HAS BEEN SET TO  ',TRIM(CPGD_FILE)
      CINIFILEPGD=CPGD_FILE
   END IF
   IF ( IJPHEXT .NE. JPHEXT ) THEN
      WRITE(NLUOUT,FMT=*) ' PREP_IDEAL_CASE : JPHEXT in PRE_IDEA1.nam/NAM_CONF_PRE ( or default value )&
         & JPHEXT=',JPHEXT
-     WRITE(NLUOUT,FMT=*) ' different from PGD files=', CINIFILEPGD,' value JPHEXT=',IJPHEXT
+     WRITE(NLUOUT,FMT=*) ' different from PGD files=', TRIM(CINIFILEPGD),' value JPHEXT=',IJPHEXT
      WRITE(NLUOUT,FMT=*) '-> JOB ABORTED'
      CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','')
      !WRITE(NLUOUT,FMT=*) ' JPHEXT HAS BEEN SET TO ', IJPHEXT
@@ -1824,8 +1826,10 @@ IF (CSURF =='EXTE') THEN
     TPGDFILE => TINIFILEPGD
   ELSE
   ! ... or read from file.
+    YATMFILE = ''
+    YATMFILETYPE = ''
     CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD',               &
-                            '                            ', '      ', &
+                            YATMFILE, YATMFILETYPE,                   &
                             TDTCUR%nyear, TDTCUR%nmonth,              &
                             TDTCUR%nday, TDTCUR%xtime                 )
 !
@@ -1861,7 +1865,9 @@ IF (CSURF =='EXTE') THEN
   !* writing of all surface fields
   TOUTDATAFILE => TINIFILE
   TFILE_SURFEX => TINIFILE
-  CALL PREP_SURF_MNH('                            ','      ')
+  YATMFILE = ''
+  YATMFILETYPE = ''
+  CALL PREP_SURF_MNH( YATMFILE, YATMFILETYPE )
   NULLIFY(TFILE_SURFEX)
 ELSE
   CSURF = "NONE"
diff --git a/src/MNH/prep_nest_pgd.f90 b/src/MNH/prep_nest_pgd.f90
index 3a60cde0d..7f57b0c9e 100644
--- a/src/MNH/prep_nest_pgd.f90
+++ b/src/MNH/prep_nest_pgd.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -148,7 +148,9 @@ INTEGER, DIMENSION(JPMODELMAX) :: NYSIZE   ! in x and y-directions
 INTEGER                        :: ILUOUT0
 INTEGER                        :: IINFO_ll ! return code of // routines
 INTEGER                        :: JPGD     ! loop control
-CHARACTER(LEN=28)              :: YMY_NAME,YDAD_NAME
+CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE
+CHARACTER(LEN=6)               :: YATMFILETYPE
+CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME
 CHARACTER(LEN=2)               :: YSTORAGE_TYPE
 LOGICAL, DIMENSION(JPMODELMAX) :: L1D_ALL  ! Flag for      1D conf. for each PGD
 LOGICAL, DIMENSION(JPMODELMAX) :: L2D_ALL  ! Flag for      2D conf. for each PGD
@@ -309,9 +311,9 @@ DO JPGD=1,NMODEL
     TPGDFILE => TZFILEPGD(JPGD)%TZFILE
     CALL GOTO_MODEL(JPGD)
     CALL GOTO_SURFEX(JPGD)
-    CALL INIT_PGD_SURF_ATM(YSURF_CUR,'MESONH','PGD',                         &
-         '                            ','      ',&
-         NUNDEF,NUNDEF,NUNDEF,XUNDEF             )
+    YATMFILE = ''
+    YATMFILETYPE = ''
+    CALL INIT_PGD_SURF_ATM( YSURF_CUR, 'MESONH', 'PGD', YATMFILE, YATMFILETYPE, NUNDEF, NUNDEF, NUNDEF, XUNDEF )
   END IF
 END DO
 !
diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90
index 172959a98..d4fcc6dcb 100644
--- a/src/MNH/prep_pgd.f90
+++ b/src/MNH/prep_pgd.f90
@@ -88,7 +88,7 @@ USE MODD_CONF,   ONLY : CPROGRAM, L1D, L2D, LPACK, LCARTESIAN
 USE MODD_CONF_n,ONLY : CSTORAGE_TYPE
 USE MODD_LUNIT,  ONLY : TLUOUT0
 USE MODD_LUNIT_n,ONLY : LUNIT_MODEL
-USE MODD_PARAMETERS, ONLY : XUNDEF
+USE MODD_PARAMETERS,       ONLY: NFILENAMELGTMAX, XUNDEF
 USE MODD_IO,               only: TFILEDATA, TFILE_OUTPUTLISTING, TFILE_SURFEX
 use modd_precision,   only: LFIINT
 USE MODD_IO_SURF_MNH, ONLY : NHALO
@@ -137,9 +137,9 @@ INTEGER :: IRESP    ! return code for I/O
 INTEGER :: ILUOUT0
 INTEGER :: ILUNAM
 LOGICAL :: GFOUND
-CHARACTER(LEN=28) :: YDAD     =' '        ! name of dad of input FM file
-CHARACTER(LEN=28) :: CPGDFILE ='PGDFILE'  ! name of the output file
-CHARACTER(LEN=100) :: YMSG
+CHARACTER(LEN=NFILENAMELGTMAX) :: CPGDFILE = 'PGDFILE'  ! name of the output file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFILE
+CHARACTER(LEN=6)               :: YFILETYPE
 INTEGER           :: NZSFILTER=1          ! number of iteration for filter for fine   orography
 INTEGER           :: NLOCZSFILTER=3       ! number of iteration for filter of local fine orography
 LOGICAL           :: LHSLOP=.FALSE.       ! filtering of local slopes higher than XHSLOP   
@@ -185,9 +185,8 @@ CALL IO_File_add2list(TZNMLFILE,'PRE_PGD1.nam','NML','READ')
 CALL IO_File_open(TZNMLFILE,KRESP=IRESP)
 ILUNAM = TZNMLFILE%NLU
 IF (IRESP.NE.0 ) THEN
-  WRITE(YMSG,*) 'file PRE_PGD1.nam not found, IRESP=', IRESP
- !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_PGD',YMSG)
+  WRITE( CMNHMSG(1), * ) 'file PRE_PGD1.nam not found, IRESP=', IRESP
+  CALL PRINT_MSG( NVERB_FATAL, 'IO', 'PREP_PGD' )
 ENDIF
 !JUAN
 
@@ -235,8 +234,10 @@ CALL INI_CST
 !*            Initializes the grid
 !             --------------------
 ! 
-CALL PGD_GRID_SURF_ATM(YSURF_CUR%UG, YSURF_CUR%U,YSURF_CUR%GCP,'MESONH',&
-                       '                            ','      ',.FALSE.,HDIR='-')
+YFILE = ''
+YFILETYPE = ''
+CALL PGD_GRID_SURF_ATM( YSURF_CUR%UG, YSURF_CUR%U, YSURF_CUR%GCP, 'MESONH', &
+                        YFILE, YFILETYPE, .FALSE., HDIR='-' )
 !
 CALL EXTEND_GRID_ON_HALO('MESONH',YSURF_CUR%UG, YSURF_CUR%U,&
         YSURF_CUR%UG%G%NGRID_PAR, YSURF_CUR%UG%G%XGRID_PAR)
@@ -245,7 +246,7 @@ CALL EXTEND_GRID_ON_HALO('MESONH',YSURF_CUR%UG, YSURF_CUR%U,&
 !*            Initializes all physiographic fields
 !             ------------------------------------
 !
-CALL PGD_SURF_ATM(YSURF_CUR,'MESONH','                            ','      ',.FALSE.)
+CALL PGD_SURF_ATM( YSURF_CUR, 'MESONH', YFILE, YFILETYPE, .FALSE. )
 !
 !
 !*    3.      Writes the physiographic fields
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 064d1c6be..8e1a7322e 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -508,22 +508,22 @@ IMPLICIT NONE
 !*       0.1   Declaration of local variables
 !              ------------------------------
 !
-CHARACTER(LEN=28)              :: YATMFILE    ! name of the Atmospheric file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE    ! name of the Atmospheric file
 CHARACTER(LEN=6)               :: YATMFILETYPE! type of the Atmospheric file
-CHARACTER(LEN=28)              :: YCHEMFILE    ! name of the Chemical file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YCHEMFILE    ! name of the Chemical file
 CHARACTER(LEN=6)               :: YCHEMFILETYPE! type of the Chemical file
 !UP*PT
-!CHARACTER(LEN=28)              :: YCAMSFILE    ! name of the input CAMS file
+!CHARACTER(LEN=NFILENAMELGTMAX) :: YCAMSFILE    ! name of the input CAMS file
 !CHARACTER(LEN=6)               :: YCAMSFILETYPE! type of the input CAMS file
-CHARACTER(LEN=28)              :: YLIMAFILE    ! name of the input MACC file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YLIMAFILE    ! name of the input MACC file
 CHARACTER(LEN=6)               :: YLIMAFILETYPE! type of the input MACC file
 !UP*PT
-CHARACTER(LEN=28)              :: YSURFFILE    ! name of the Surface file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YSURFFILE    ! name of the Surface file
 CHARACTER(LEN=6)               :: YSURFFILETYPE! type of the Surface file
-CHARACTER(LEN=28)              :: YPGDFILE    ! name of the physiographic data
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE    ! name of the physiographic data
 !                                             ! file
 !
-CHARACTER(LEN=28)              :: YDAD_NAME   ! true name of the atmospheric file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD_NAME   ! true name of the atmospheric file
 !
 !* other variables
 !
@@ -1404,7 +1404,7 @@ IF (LEN_TRIM(YDAD_NAME)>0) THEN
   WRITE(ILUOUT0,*) ' '
   WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
   WRITE(ILUOUT0,*) '|  Nesting allowed                                           |'
-  WRITE(ILUOUT0,*) '|  DAD_NAME="',YDAD_NAME,'"                   |'
+  WRITE(ILUOUT0,*) '|  DAD_NAME="',TRIM(YDAD_NAME),'"                   |'
   WRITE(ILUOUT0,*) ' ------------------------------------------------------------'
   WRITE(ILUOUT0,*) ' '
 ELSE
diff --git a/src/MNH/prep_surf_mnh.f90 b/src/MNH/prep_surf_mnh.f90
index 3a58a6b2f..7618a6310 100644
--- a/src/MNH/prep_surf_mnh.f90
+++ b/src/MNH/prep_surf_mnh.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
@@ -9,9 +9,11 @@
 INTERFACE
       SUBROUTINE PREP_SURF_MNH(HATMFILE,HATMFILETYPE,OINIFILEOPEN)
 !
-CHARACTER(LEN=28),INTENT(IN) :: HATMFILE    ! name of the Atmospheric file
-CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
-LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not)
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HATMFILE     ! name of the Atmospheric file
+CHARACTER(LEN=6),               INTENT(IN) :: HATMFILETYPE ! type of the Atmospheric file
+LOGICAL,          OPTIONAL,     INTENT(IN) :: OINIFILEOPEN ! Open the INI file here (or not)
 !
 END SUBROUTINE PREP_SURF_MNH
 !
@@ -51,6 +53,7 @@ USE MODD_IO_SURF_MNH, ONLY : COUTFILE
 USE MODD_LUNIT,       ONLY : TLUOUT0, TOUTDATAFILE
 USE MODD_LUNIT_n,     ONLY : CINIFILE, TINIFILE
 USE MODD_MNH_SURFEX_n
+USE MODD_PARAMETERS,  ONLY : NFILENAMELGTMAX
 USE MODD_TIME_n,      ONLY : TDTCUR
 !
 USE MODE_IO_FILE,     ONLY: IO_File_open
@@ -66,17 +69,15 @@ IMPLICIT NONE
 !*       0.1   Declarations of arguments
 !              -------------------------
 !
-CHARACTER(LEN=28),INTENT(IN) :: HATMFILE    ! name of the Atmospheric file
-CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! type of the Atmospheric file
-LOGICAL, OPTIONAL,INTENT(IN) :: OINIFILEOPEN! Open the INI file here (or not)
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HATMFILE     ! name of the Atmospheric file
+CHARACTER(LEN=6),               INTENT(IN) :: HATMFILETYPE ! type of the Atmospheric file
+LOGICAL,          OPTIONAL,     INTENT(IN) :: OINIFILEOPEN ! Open the INI file here (or not)
 !
 !*       0.2   Declarations of local variables
 !              -------------------------------
 !
 TYPE (PREP_CTL) :: YLCTL
 !
-CHARACTER(LEN=28)  :: YPGDFILE  ='                            '  ! name of the pgd file
-CHARACTER(LEN=6)   :: YPGDFILETYPE ='      '                     ! type of the pgd file
 INTEGER            :: ILUOUT0  ! logical unit for listing file
 CHARACTER(LEN=6)   :: YATMFILETYPE    ! type of the Atmospheric file
 !------------------------------------------------------------------
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index 749c59844..922d5d3da 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2004-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -40,7 +40,7 @@ USE MODD_IO,          ONLY : TFILEDATA, TFILE_SURFEX
 USE MODD_LUNIT,       ONLY : TPGDFILE, TLUOUT0
 USE MODD_LUNIT_n,     ONLY : CINIFILE, TINIFILE
 USE MODD_MNH_SURFEX_n
-USE MODD_PARAMETERS,  ONLY : JPMODELMAX,JPHEXT,JPVEXT, NUNDEF, XUNDEF
+USE MODD_PARAMETERS,  ONLY : JPMODELMAX,JPHEXT,JPVEXT, NFILENAMELGTMAX, NUNDEF, XUNDEF
 USE MODD_TIME_n,      ONLY : TDTCUR
 !
 use mode_field,            only: Ini_field_list, Ini_field_scalars
@@ -66,16 +66,15 @@ IMPLICIT NONE
 !*       0.1   Declaration of local variables
 !              ------------------------------
 !
-CHARACTER(LEN=28)     :: YATMFILE        ! name of the Atmospheric file
-CHARACTER(LEN=6)      :: YATMFILETYPE    ! type of the Atmospheric file
-CHARACTER(LEN=28)     :: YCHEMFILE       ! name of the Chemical file (not used)
-CHARACTER(LEN=6)      :: YCHEMFILETYPE   ! type of the Chemical file (not used)
-CHARACTER(LEN=28)     :: YCAMSFILE       ! name of the input CAMS file
-CHARACTER(LEN=6)      :: YCAMSFILETYPE   ! type of the input CAMS file
-CHARACTER(LEN=28)     :: YSURFFILE       ! name of the Surface file (not used)
-CHARACTER(LEN=6)      :: YSURFFILETYPE   ! type of the Surface file (not used)
-CHARACTER(LEN=28)     :: YPGDFILE        ! name of the physiographic data
-!                                        ! file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YATMFILE        ! name of the Atmospheric file
+CHARACTER(LEN=6)               :: YATMFILETYPE    ! type of the Atmospheric file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YCHEMFILE       ! name of the Chemical file (not used)
+CHARACTER(LEN=6)               :: YCHEMFILETYPE   ! type of the Chemical file (not used)
+CHARACTER(LEN=NFILENAMELGTMAX) :: YCAMSFILE       ! name of the input CAMS file
+CHARACTER(LEN=6)               :: YCAMSFILETYPE   ! type of the input CAMS file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YSURFFILE       ! name of the Surface file (not used)
+CHARACTER(LEN=6)               :: YSURFFILETYPE   ! type of the Surface file (not used)
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE        ! name of the physiographic data file
 !
 !* file management variables and counters
 !
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index af2db5f9e..288544b8c 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1998-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -10,15 +10,16 @@ INTERFACE
 SUBROUTINE READ_ALL_DATA_GRIB_CASE(HFILE,TPPRE_REAL1,HGRIB,TPPGDFILE,    &
                     PTIME_HORI,KVERB,ODUMMY_REAL                         ) 
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-CHARACTER(LEN=4),  INTENT(IN)    :: HFILE       ! which file ('ATM0','ATM1' or 'CHEM')
-TYPE(TFILEDATA),POINTER,INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(IN)    :: HGRIB       ! name of the GRIB file
-TYPE(TFILEDATA),   INTENT(IN)    :: TPPGDFILE   ! physiographic data file
-INTEGER,           INTENT(IN)    :: KVERB       ! verbosity level
-LOGICAL,           INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
-REAL,              INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+CHARACTER(LEN=4),               INTENT(IN)    :: HFILE       ! which file ('ATM0','ATM1' or 'CHEM')
+TYPE(TFILEDATA), POINTER,       INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HGRIB       ! name of the GRIB file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
 !
 END SUBROUTINE READ_ALL_DATA_GRIB_CASE
 !
@@ -191,13 +192,13 @@ IMPLICIT NONE
 !* 0.1. Declaration of arguments
 !       ------------------------
 !
-CHARACTER(LEN=4),  INTENT(IN)    :: HFILE       ! which file ('ATM0','ATM1' or 'CHEM')
-TYPE(TFILEDATA),POINTER,INTENT(INOUT) :: TPPRE_REAL1! PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(IN)    :: HGRIB       ! name of the GRIB file
-TYPE(TFILEDATA),   INTENT(IN)    :: TPPGDFILE   ! physiographic data file
-INTEGER,           INTENT(IN)    :: KVERB       ! verbosity level
-LOGICAL,           INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
-REAL,              INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+CHARACTER(LEN=4),               INTENT(IN)    :: HFILE       ! which file ('ATM0','ATM1' or 'CHEM')
+TYPE(TFILEDATA), POINTER,       INTENT(INOUT) :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HGRIB       ! name of the GRIB file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -216,8 +217,8 @@ INTEGER                            :: JLOOP1,JLOOP2 !  |
 INTEGER                            :: JLOOP3,JLOOP4 !  |
 INTEGER                            :: JLOOP         !  |
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
diff --git a/src/MNH/read_all_data_mesonh_case.f90 b/src/MNH/read_all_data_mesonh_case.f90
index 2a1e021c2..f9c741227 100644
--- a/src/MNH/read_all_data_mesonh_case.f90
+++ b/src/MNH/read_all_data_mesonh_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -10,12 +10,13 @@ INTERFACE
       SUBROUTINE READ_ALL_DATA_MESONH_CASE(TZPRE_REAL1,HFMFILE,TPPGDFILE, &
                               HDAD_NAME                                   )
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-TYPE(TFILEDATA),POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(IN)    :: HFMFILE    ! name of the Mesonh input file
-TYPE(TFILEDATA),   INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-CHARACTER(LEN=*),  INTENT(INOUT) :: HDAD_NAME  ! true name of the Mesonh input file
+TYPE(TFILEDATA),  POINTER,      INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFMFILE ! name of the Mesonh input file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE  ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(INOUT) :: HDAD_NAME  ! true name of the Mesonh input file
 !
 END SUBROUTINE READ_ALL_DATA_MESONH_CASE
 !
@@ -158,10 +159,10 @@ IMPLICIT NONE
 !*       0.1   Declaration of arguments
 !              ------------------------
 !
-TYPE(TFILEDATA),POINTER, INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file
-CHARACTER(LEN=28), INTENT(IN)    :: HFMFILE    ! name of the Mesonh input file
-TYPE(TFILEDATA),   INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-CHARACTER(LEN=*),  INTENT(INOUT) :: HDAD_NAME  ! true name of the Mesonh input file
+TYPE(TFILEDATA),  POINTER,      INTENT(INOUT) :: TZPRE_REAL1 !PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFMFILE ! name of the Mesonh input file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE  ! physiographic data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(INOUT) :: HDAD_NAME  ! true name of the Mesonh input file
 !
 !
 !*       0.2   Declaration of local variables
@@ -181,8 +182,8 @@ INTEGER :: IYOR_LS    ! J shift between PGD file and LS atmospheric file
 INTEGER :: IRESP      ! return-code if problems occured
 INTEGER :: ILUOUT0    ! logical unit for file TLUOUT0
 !
-CHARACTER(LEN=28) :: YPGD_NAME, YPGD_DAD_NAME
-CHARACTER(LEN=28) :: YOUTFILE
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGD_NAME, YPGD_DAD_NAME
+CHARACTER(LEN=NFILENAMELGTMAX) :: YOUTFILE
 CHARACTER(LEN=2)  :: YPGD_TYPE
 !
 !* temporary namelist configuration variables
diff --git a/src/MNH/read_asc_latpress.f90 b/src/MNH/read_asc_latpress.f90
index af67b3397..568f381af 100644
--- a/src/MNH/read_asc_latpress.f90
+++ b/src/MNH/read_asc_latpress.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -11,12 +11,14 @@ INTERFACE
                                    PRVFRC)
       
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
-INTEGER , INTENT(IN)      :: KLEV
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PLAT
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PLEV
-REAL , DIMENSION(:,:) , INTENT(OUT)      :: PTHFRC
-REAL , DIMENSION(:,:) , INTENT(OUT)      :: PRVFRC
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILENAME     ! Name of the field file.
+INTEGER,                        INTENT(IN)  :: KLEV
+REAL,    DIMENSION(:),          INTENT(OUT) :: PLAT
+REAL,    DIMENSION(:),          INTENT(OUT) :: PLEV
+REAL,    DIMENSION(:,:),        INTENT(OUT) :: PTHFRC
+REAL,    DIMENSION(:,:),        INTENT(OUT) :: PRVFRC
 !
 !
 END SUBROUTINE READ_ASC_LATPRESS
@@ -51,6 +53,7 @@ END MODULE MODI_READ_ASC_LATPRESS
 !*    0.     DECLARATION
 !            -----------
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 use mode_tools_ll,        only: GET_INDICE_ll
 !
@@ -59,12 +62,12 @@ IMPLICIT NONE
 !*    0.1    Declaration of arguments
 !            ------------------------
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
-INTEGER , INTENT(IN)      :: KLEV
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PLAT
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PLEV
-REAL , DIMENSION(:,:) , INTENT(OUT)      :: PTHFRC
-REAL , DIMENSION(:,:) , INTENT(OUT)      :: PRVFRC
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILENAME     ! Name of the field file.
+INTEGER,                        INTENT(IN)  :: KLEV
+REAL,    DIMENSION(:),          INTENT(OUT) :: PLAT
+REAL,    DIMENSION(:),          INTENT(OUT) :: PLEV
+REAL,    DIMENSION(:,:),        INTENT(OUT) :: PTHFRC
+REAL,    DIMENSION(:,:),        INTENT(OUT) :: PRVFRC
 !
 !*    0.2    Declaration of local variables
 !            ------------------------------
diff --git a/src/MNH/read_ascp.f90 b/src/MNH/read_ascp.f90
index e5490ed54..a7dc454db 100644
--- a/src/MNH/read_ascp.f90
+++ b/src/MNH/read_ascp.f90
@@ -1,8 +1,8 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
-
+!-----------------------------------------------------------------
 !     ########################
       MODULE MODI_READ_ASCP
 !     ########################
@@ -10,10 +10,12 @@ INTERFACE
       SUBROUTINE READ_ASCP(HFILENAME,KLEV,PTHDF,PRVF)
       
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
-INTEGER , INTENT(IN)      :: KLEV
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PTHDF
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PRVF
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILENAME     ! Name of the field file.
+INTEGER,                        INTENT(IN)  :: KLEV
+REAL,    DIMENSION(:),          INTENT(OUT) :: PTHDF
+REAL,    DIMENSION(:),          INTENT(OUT) :: PRVF
 !
 !
 END SUBROUTINE READ_ASCP
@@ -48,18 +50,17 @@ END MODULE MODI_READ_ASCP
 !            -----------
 !
 !
-
-
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 IMPLICIT NONE
 !
 !*    0.1    Declaration of arguments
 !            ------------------------
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
-INTEGER , INTENT(IN)      :: KLEV
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PTHDF
-REAL , DIMENSION(:)   , INTENT(OUT)      :: PRVF
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFILENAME     ! Name of the field file.
+INTEGER,                        INTENT(IN)  :: KLEV
+REAL,    DIMENSION(:),          INTENT(OUT) :: PTHDF
+REAL,    DIMENSION(:),          INTENT(OUT) :: PRVF
 !
 !
 !*    0.2    Declaration of local variables
diff --git a/src/MNH/read_cams_data_netcdf_case.f90 b/src/MNH/read_cams_data_netcdf_case.f90
index ec6421713..188a72bb5 100644
--- a/src/MNH/read_cams_data_netcdf_case.f90
+++ b/src/MNH/read_cams_data_netcdf_case.f90
@@ -10,14 +10,15 @@ INTERFACE
 SUBROUTINE READ_CAMS_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, &
                                       PTIME_HORI,KVERB,ODUMMY_REAL ) 
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 END SUBROUTINE READ_CAMS_DATA_NETCDF_CASE
 !
 END INTERFACE
@@ -137,12 +138,12 @@ IMPLICIT NONE
 !* 0.1. Declaration of arguments
 !       ------------------------
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -151,8 +152,8 @@ INTEGER                            :: ILUOUT0       ! Unit used for output msg.
 INTEGER                            :: JJ            ! Dummy counters
 INTEGER                            :: JLOOP1
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
@@ -558,7 +559,7 @@ DEALLOCATE (zmmr_sulfaer)
 !
 DEALLOCATE (ZWORK)
 !
-WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully'
+WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully'
 WRITE (ILUOUT0,'(A,A4,A)') 'CAMS mixing ratios are interpolated horizontally'
 !
 !
diff --git a/src/MNH/read_chem_data_cams_case.f90 b/src/MNH/read_chem_data_cams_case.f90
index 3a1c62dff..8c94fd54d 100644
--- a/src/MNH/read_chem_data_cams_case.f90
+++ b/src/MNH/read_chem_data_cams_case.f90
@@ -10,15 +10,16 @@ INTERFACE
 SUBROUTINE READ_CHEM_DATA_CAMS_CASE(TPPRE_REAL1,HFILE,TPPGDFILE,PTIME_HORI, &
                                     KVERB,ODUMMY_REAL,OUSECHEM              )
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
-LOGICAL,            INTENT(IN)    :: OUSECHEM   ! flag to initialize chemistry
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE      ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE  ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB      ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+LOGICAL,                        INTENT(IN)    :: OUSECHEM   ! flag to initialize chemistry
 END SUBROUTINE READ_CHEM_DATA_CAMS_CASE
 !
 END INTERFACE
@@ -148,13 +149,13 @@ IMPLICIT NONE
 !*       0.1. Declaration of arguments
 !             ------------------------
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
-LOGICAL,            INTENT(IN)    :: OUSECHEM   ! flag to initialize chemistry
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE      ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE  ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB      ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+LOGICAL,                        INTENT(IN)    :: OUSECHEM   ! flag to initialize chemistry
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -166,8 +167,8 @@ INTEGER                            :: JLOOP1        !
 INTEGER                            :: JN            ! conter of dust/SS modes
 INTEGER                            :: JNCHEM, JNAER ! conters of chemical species in BASIC
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
@@ -587,7 +588,7 @@ XSV_LS(:,:,:,:) = 0.
 !*       2.5 read chem. variables and convert them into MNH variables
 !
 IF (OUSECHEM) THEN
-  WRITE (ILUOUT0,'(A,A4,A)') ' | Reading CAMS species (ppp) from ',HFILE,'file'
+  WRITE (ILUOUT0,'(A,A4,A)') ' | Reading CAMS species (ppp) from ',TRIM(HFILE),'file'
 !
 ! read CAMS species from the file CAM1.nam
 !
@@ -1061,7 +1062,7 @@ IF (ALLOCATED(mmr_seasalt1)) DEALLOCATE(mmr_seasalt1)
 IF (ALLOCATED(mmr_seasalt2)) DEALLOCATE(mmr_seasalt2)
 IF (ALLOCATED(mmr_seasalt3)) DEALLOCATE(mmr_seasalt3)
 !
-WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully'
+WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully'
 !
 
 CONTAINS
diff --git a/src/MNH/read_chem_data_mozart_case.f90 b/src/MNH/read_chem_data_mozart_case.f90
index 2dfdb0e70..c949b8993 100644
--- a/src/MNH/read_chem_data_mozart_case.f90
+++ b/src/MNH/read_chem_data_mozart_case.f90
@@ -10,14 +10,15 @@ INTERFACE
 SUBROUTINE READ_CHEM_DATA_MOZART_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, &
                                       PTIME_HORI,KVERB,ODUMMY_REAL ) 
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 END SUBROUTINE READ_CHEM_DATA_MOZART_CASE
 !
 END INTERFACE
@@ -137,12 +138,12 @@ IMPLICIT NONE
 !* 0.1. Declaration of arguments
 !       ------------------------
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the MOZART file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -153,8 +154,8 @@ INTEGER                            :: JI,JJ,JK      ! Dummy counters
 INTEGER                            :: JLOOP1        !  |
 INTEGER                            :: JNCHEM, JNAER ! conters of chemical species in BASIC
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
@@ -445,7 +446,7 @@ enddo
     ALLOCATE (XSV_LS(IIU,IJU,levlen,NSV))
    XSV_LS(:,:,:,:) = 0.
 !
-  WRITE (ILUOUT0,'(A,A4,A)') ' | Reading MOZART species (ppp) from ',HFILE,' file'
+  WRITE (ILUOUT0,'(A,A4,A)') ' | Reading MOZART species (ppp) from ',TRIM(HFILE),' file'
 
 where (ZLONOUT(:) < 0.) ZLONOUT(:) = ZLONOUT(:) + 360.
 !
@@ -764,7 +765,7 @@ DEALLOCATE (vartemp3dbis)
 DEALLOCATE (vartemp3dter)
 DEALLOCATE (vartemp3dquater)
 !
-WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully'
+WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully'
 !
 !
 CONTAINS
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index f55fe1f28..d85350a3f 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2012-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2012-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -10,14 +10,15 @@ INTERFACE
 SUBROUTINE READ_CHEM_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, &
                                       PTIME_HORI,KVERB,ODUMMY_REAL ) 
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 END SUBROUTINE READ_CHEM_DATA_NETCDF_CASE
 !
 END INTERFACE
@@ -136,12 +137,12 @@ IMPLICIT NONE
 !* 0.1. Declaration of arguments
 !       ------------------------
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -152,8 +153,8 @@ INTEGER                            :: JI,JJ,JK      ! Dummy counters
 INTEGER                            :: JLOOP1        !  |
 INTEGER                            :: JNCHEM, JNAER ! conters of chemical species in BASIC
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index 8cc0cc0c4..95a1c0e42 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -23,7 +23,8 @@ INTERFACE
                    HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC,              &
                    HEQNSYS,PTSTEP_ALL,HINIFILEPGD                                  )
 !
-USE MODD_IO,   ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 INTEGER,            INTENT(IN) :: KMI    ! Model index
 TYPE(TFILEDATA),    INTENT(IN) :: TPEXSEGFILE ! EXSEG file
@@ -72,7 +73,7 @@ CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
 REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file
 !
 END SUBROUTINE READ_EXSEG_n
 !
@@ -472,7 +473,7 @@ CHARACTER (LEN=4),  INTENT(IN) :: HCLOUD ! Kind of microphysical scheme
 CHARACTER (LEN=4),  INTENT(IN) :: HELEC  ! Kind of electrical scheme
 CHARACTER (LEN=*),  INTENT(IN) :: HEQNSYS! type of equations' system
 REAL,DIMENSION(:),  INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models
-CHARACTER (LEN=*),  INTENT(IN) :: HINIFILEPGD ! name of PGD file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file
 !
 !*       0.2   declarations of local variables
 !
@@ -493,7 +494,7 @@ ILUSEG = TPEXSEGFILE%NLU
 ILUOUT = TLUOUT%NLU
 !
 CALL INIT_NAM_LUNITN
-CCPLFILE(:)="                            "
+CCPLFILE(:)=''
 CALL INIT_NAM_CONFN
 CALL INIT_NAM_DYNN
 CALL INIT_NAM_ADVN
@@ -2464,7 +2465,7 @@ IF (KMI == 1) THEN
         DO JI=JCI,JPCPLFILEMAX-1
           CCPLFILE(JI)=CCPLFILE(JI+1)
         END DO
-        CCPLFILE(JPCPLFILEMAX)='    '
+        CCPLFILE(JPCPLFILEMAX)=''
       END IF
     END IF
   END DO
@@ -3059,8 +3060,8 @@ END IF
 IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN
   IF ( CINIFILEPGD/=HINIFILEPGD ) THEN 
     WRITE(UNIT=ILUOUT,FMT=9001) KMI
-    WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',CINIFILEPGD
-    WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',HINIFILEPGD
+    WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',TRIM(CINIFILEPGD)
+    WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',TRIM(HINIFILEPGD)
     WRITE(ILUOUT,FMT=*) ' Please check your Namelist '
     WRITE(ILUOUT,FMT=*) ' For example, you may have specified the un-nested PGD file instead of the nested PGD file '
     WRITE(ILUOUT,FMT=*) 
diff --git a/src/MNH/read_exspa.f90 b/src/MNH/read_exspa.f90
index dd261a9bc..2c5617b3d 100644
--- a/src/MNH/read_exspa.f90
+++ b/src/MNH/read_exspa.f90
@@ -13,11 +13,13 @@ INTERFACE
                             KXOR,KYOR,KXSIZE,KYSIZE,KDXRATIO,KDYRATIO,&
                             OBAL_ONLY,HDOMAIN,HSPAFILE,HSPANBR,       &
                             HDADINIFILE,HDADSPAFILE,HSONFILE)
+
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
 !*       0.1    Dummy arguments
 !
-CHARACTER (LEN=28), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file
-CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD
 INTEGER,            INTENT(OUT) :: KXOR     !  horizontal position (i,j) of the ORigin
 INTEGER,            INTENT(OUT) :: KYOR     ! of the model 2 domain, relative to model 1
 INTEGER,            INTENT(OUT) :: KDXRATIO !  x and y-direction resolution RATIO
@@ -25,19 +27,15 @@ INTEGER,            INTENT(OUT) :: KDYRATIO !      between model 2 and model 1
 INTEGER,            INTENT(OUT) :: KXSIZE   ! number of model 1 grid points in x and y-directions
 INTEGER,            INTENT(OUT) :: KYSIZE   ! in the model 2 physical domain
 !
-CHARACTER (LEN=28), INTENT(OUT) :: HDOMAIN  ! input fm-file for grid definition
-CHARACTER (LEN=28), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file
-CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR  ! NumBeR associated to the SPAwned file
-CHARACTER (LEN=28), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file
-CHARACTER (LEN=28), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file
-                                               ! of the model 1 only for
-                                               ! spawning 1 with GBAL_ONLY
-CHARACTER (LEN=28), INTENT(OUT) :: HDADSPAFILE  ! name of the dad file of the
-                                                ! model 2 only for spawning 1
-                                                  ! with GBAL_ONLY
-LOGICAL,            INTENT(OUT) :: OBAL_ONLY      ! compute anelastique balance
-                                                  ! without change in the file
-                                                  ! definition
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDOMAIN  ! input fm-file for grid definition
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file
+CHARACTER (LEN= 2),              INTENT(OUT) :: HSPANBR  ! NumBeR associated to the SPAwned file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADINIFILE  ! name of the initial dad file of the model 1 only for
+                                                             ! spawning 1 with GBAL_ONLY
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADSPAFILE  ! name of the dad file of the model 2 only for spawning 1
+                                                             ! with GBAL_ONLY
+LOGICAL,                         INTENT(OUT) :: OBAL_ONLY    ! compute anelastic balance without change in the file definition
 !
 END SUBROUTINE READ_EXSPA
 !
@@ -118,8 +116,8 @@ IMPLICIT NONE
 !
 !*       0.1    Dummy arguments
 !
-CHARACTER (LEN=28), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file
-CHARACTER (LEN=28), INTENT(OUT) :: HINIFILEPGD
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILE ! Name of the model 1 FM file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HINIFILEPGD
 INTEGER,            INTENT(OUT) :: KXOR     !  horizontal position (i,j) of the ORigin
 INTEGER,            INTENT(OUT) :: KYOR     ! of the model 2 domain, relative to model 1
 INTEGER,            INTENT(OUT) :: KDXRATIO !  x and y-direction resolution RATIO
@@ -127,19 +125,15 @@ INTEGER,            INTENT(OUT) :: KDYRATIO !      between model 2 and model 1
 INTEGER,            INTENT(OUT) :: KXSIZE   ! number of model 1 grid points in x and y-directions
 INTEGER,            INTENT(OUT) :: KYSIZE   ! in the model 2 physical domain
 !
-CHARACTER (LEN=28), INTENT(OUT) :: HDOMAIN  ! input fm-file for grid definition
-CHARACTER (LEN=28), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file
-CHARACTER (LEN= 2), INTENT(OUT) :: HSPANBR  ! NumBeR associated to the SPAwned file
-CHARACTER (LEN=28), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file
-CHARACTER (LEN=28), INTENT(OUT) :: HDADINIFILE ! name of the initial dad file
-                                               ! of the model 1 only for
-                                               ! spawning 1 with GBAL_ONLY
-CHARACTER (LEN=28), INTENT(OUT) :: HDADSPAFILE  ! name of the dad file of the
-                                                ! model 2 only for spawning 1
-                                                  ! with GBAL_ONLY
-LOGICAL,            INTENT(OUT) :: OBAL_ONLY      ! compute anelastique balance
-                                                  ! without change in the file
-                                                  ! definition
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDOMAIN  ! input fm-file for grid definition
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSPAFILE ! possible name of the output FM-file
+CHARACTER (LEN= 2),              INTENT(OUT) :: HSPANBR  ! NumBeR associated to the SPAwned file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HSONFILE ! Name of the SON 1 file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADINIFILE  ! name of the initial dad file of the model 1 only for
+                                                             ! spawning 1 with GBAL_ONLY
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDADSPAFILE  ! name of the dad file of the model 2 only for spawning 1
+                                                             ! with GBAL_ONLY
+LOGICAL,                         INTENT(OUT) :: OBAL_ONLY    ! compute anelastic balance without change in the file definition
 !
 !
 !*       0.2    Local variables
@@ -158,15 +152,15 @@ INTEGER :: IDYRATIO            !      between model 2 and model 1
 INTEGER :: IXSIZE,IYSIZE       ! number of model 1 grid points in x and y-directions
                                ! in the model 2 physical domain
 LOGICAL :: GBAL_ONLY           !  compute only anelastique balance
-CHARACTER(LEN=28) :: YDOMAIN     ! input fm-file for grid definition
-CHARACTER(LEN=28) :: YSPAFILE    ! possible name of the output FM-file
-CHARACTER(LEN= 2) :: YSPANBR     ! NumBeR associated to the SPAwned file
-CHARACTER(LEN=28) :: YDADINIFILE ! Name of dad model for model 1
-CHARACTER(LEN=28) :: YDADSPAFILE ! Name of dad model for model 2
-CHARACTER(LEN=28) :: CINIFILE    ! re-declaration because of namelist
-CHARACTER(LEN=28) :: CINIFILEPGD ! re-declaration because of namelist
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDOMAIN     ! input fm-file for grid definition
+CHARACTER(LEN=NFILENAMELGTMAX) :: YSPAFILE    ! possible name of the output FM-file
+CHARACTER(LEN= 2)              :: YSPANBR     ! NumBeR associated to the SPAwned file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDADINIFILE ! Name of dad model for model 1
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDADSPAFILE ! Name of dad model for model 2
+CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE    ! re-declaration because of namelist
+CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD ! re-declaration because of namelist
 
-CHARACTER (LEN=28) :: YSONFILE = ' '  ! Name of SON input file
+CHARACTER (LEN=NFILENAMELGTMAX) :: YSONFILE = ''  ! Name of SON input file
 TYPE(TFILEDATA),POINTER :: TZNMLFILE  ! Namelist file
 !
 !*       0.3    Namelist declarations
diff --git a/src/MNH/read_grid_time_mesonh_case.f90 b/src/MNH/read_grid_time_mesonh_case.f90
index c6446d4ee..51b1d1c98 100644
--- a/src/MNH/read_grid_time_mesonh_case.f90
+++ b/src/MNH/read_grid_time_mesonh_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,10 +9,12 @@ MODULE MODI_READ_GRID_TIME_MESONH_CASE
 INTERFACE
       SUBROUTINE READ_GRID_TIME_MESONH_CASE(HFMFILE,KXOR_LS,KYOR_LS,HDAD_NAME)
 !
-CHARACTER(LEN=*),  INTENT(IN) :: HFMFILE  ! name of the input Mesonh file
-INTEGER          , INTENT(OUT):: KXOR_LS  ! I and J shifts between PGD file
-INTEGER          , INTENT(OUT):: KYOR_LS  !   and LS atmospheric file
-CHARACTER(LEN=*),  INTENT(OUT):: HDAD_NAME! dad name of the FM file
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFMFILE   ! name of the input Mesonh file
+INTEGER,                        INTENT(OUT) :: KXOR_LS   ! I and J shifts between PGD file
+INTEGER,                        INTENT(OUT) :: KYOR_LS   !   and LS atmospheric file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! dad name of the FM file
 !!
 END SUBROUTINE READ_GRID_TIME_MESONH_CASE
 END INTERFACE
@@ -108,10 +110,10 @@ IMPLICIT NONE
 !
 !*       0.1   Declaration of arguments
 !              ------------------------
-CHARACTER(LEN=*),  INTENT(IN) :: HFMFILE  ! name of the input Mesonh file
-INTEGER          , INTENT(OUT):: KXOR_LS  ! I and J shifts between PGD file
-INTEGER          , INTENT(OUT):: KYOR_LS  !   and LS atmospheric file
-CHARACTER(LEN=*),  INTENT(OUT):: HDAD_NAME! dad name of the FM file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)  :: HFMFILE   ! name of the input Mesonh file
+INTEGER,                        INTENT(OUT) :: KXOR_LS   ! I and J shifts between PGD file
+INTEGER,                        INTENT(OUT) :: KYOR_LS   !   and LS atmospheric file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME ! dad name of the FM file
 !
 !*       0.2   Declaration of local variables
 !              ------------------------------
@@ -129,7 +131,7 @@ REAL         :: ZLON0_LS   ! reference longitude
 REAL         :: ZRPK_LS    ! parameter for projection 
 REAL         :: ZBETA_LS   ! angle of rotation of the domain
 !
-CHARACTER(LEN=28) :: YMY_NAME, YDAD_NAME
+CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME
 CHARACTER(LEN=2)  :: YTYPE
 !
 !        0.2.2 local variables linking PGD and atm.MESONH files
diff --git a/src/MNH/read_hgrid.f90 b/src/MNH/read_hgrid.f90
index 30a92650b..00e0d4635 100644
--- a/src/MNH/read_hgrid.f90
+++ b/src/MNH/read_hgrid.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -9,13 +9,14 @@
 INTERFACE
       SUBROUTINE READ_HGRID(KMI,TPFMFILE,HMY_NAME,HDAD_NAME,HSTORAGE_TYPE)
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-INTEGER,           INTENT(IN)  :: KMI          ! model index
-TYPE(TFILEDATA),   INTENT(IN)  :: TPFMFILE     ! file n
-CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
-CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME    ! Name of father
-CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
+INTEGER,                        INTENT(IN)  :: KMI          ! model index
+TYPE(TFILEDATA),                INTENT(IN)  :: TPFMFILE     ! file n
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME    ! Name of father
+CHARACTER(LEN=2),               INTENT(OUT) :: HSTORAGE_TYPE
 !
 END SUBROUTINE READ_HGRID
 END INTERFACE
@@ -103,11 +104,11 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-INTEGER,           INTENT(IN)  :: KMI          ! model index
-TYPE(TFILEDATA),   INTENT(IN)  :: TPFMFILE     ! file n
-CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
-CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME    ! Name of father
-CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
+INTEGER,                        INTENT(IN)  :: KMI          ! model index
+TYPE(TFILEDATA),                INTENT(IN)  :: TPFMFILE     ! file n
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME    ! Name of father
+CHARACTER(LEN=2),               INTENT(OUT) :: HSTORAGE_TYPE
 !
 !
 !*       0.2   declarations of local variables
diff --git a/src/MNH/read_hgridn.f90 b/src/MNH/read_hgridn.f90
index 1ac466b48..10253dccb 100644
--- a/src/MNH/read_hgridn.f90
+++ b/src/MNH/read_hgridn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1996-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -10,12 +10,13 @@
 INTERFACE
       SUBROUTINE READ_HGRID_n(TPFMFILE,HMY_NAME,HDAD_NAME,HSTORAGE_TYPE)
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-TYPE(TFILEDATA),   INTENT(IN)  :: TPFMFILE     ! file n
-CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
-CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME    ! Name of father
-CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
+TYPE(TFILEDATA),                INTENT(IN)  :: TPFMFILE     ! file n
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME    ! Name of father
+CHARACTER(LEN=2),               INTENT(OUT) :: HSTORAGE_TYPE
 !
 END SUBROUTINE READ_HGRID_n
 !
@@ -85,7 +86,7 @@ USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,            ONLY: TFILEDATA
 USE MODD_LUNIT_n
-USE MODD_PARAMETERS,    ONLY: JPHEXT, JPVEXT, JPMODELMAX
+USE MODD_PARAMETERS,    ONLY: JPHEXT, JPVEXT, JPMODELMAX, NFILENAMELGTMAX
 !
 use mode_field,         only: Find_field_id_from_mnhname
 USE MODE_GRIDPROJ
@@ -100,10 +101,10 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-TYPE(TFILEDATA),   INTENT(IN)  :: TPFMFILE     ! file n
-CHARACTER(LEN=28), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
-CHARACTER(LEN=28), INTENT(OUT) :: HDAD_NAME    ! Name of father
-CHARACTER(LEN=2) , INTENT(OUT) :: HSTORAGE_TYPE
+TYPE(TFILEDATA),                INTENT(IN)  :: TPFMFILE     ! file n
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HMY_NAME     ! True Name of FM-file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(OUT) :: HDAD_NAME    ! Name of father
+CHARACTER(LEN=2),               INTENT(OUT) :: HSTORAGE_TYPE
 !
 !*       0.2   declarations of local variables
 !
diff --git a/src/MNH/read_lima_data_netcdf_case.f90 b/src/MNH/read_lima_data_netcdf_case.f90
index 35fd628b8..b5c5e0da8 100644
--- a/src/MNH/read_lima_data_netcdf_case.f90
+++ b/src/MNH/read_lima_data_netcdf_case.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2012-2021 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2012-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -10,14 +10,15 @@ INTERFACE
 SUBROUTINE READ_LIMA_DATA_NETCDF_CASE(TPPRE_REAL1,HFILE,TPPGDFILE, &
                                       PTIME_HORI,KVERB,ODUMMY_REAL ) 
 !
-USE MODD_IO, ONLY: TFILEDATA
-!
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 END SUBROUTINE READ_LIMA_DATA_NETCDF_CASE
 !
 END INTERFACE
@@ -137,12 +138,12 @@ IMPLICIT NONE
 !* 0.1. Declaration of arguments
 !       ------------------------
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPPRE_REAL1 ! PRE_REAL1 file
-CHARACTER(LEN=28),  INTENT(IN)    :: HFILE      ! name of the NETCDF file
-TYPE(TFILEDATA),    INTENT(IN)    :: TPPGDFILE  ! physiographic data file
-REAL,               INTENT(INOUT) :: PTIME_HORI ! time spent in hor. interpolations
-INTEGER,            INTENT(IN)    :: KVERB      ! verbosity level
-LOGICAL,            INTENT(IN)    :: ODUMMY_REAL! flag to interpolate dummy fields
+TYPE(TFILEDATA), POINTER,       INTENT(IN)    :: TPPRE_REAL1 ! PRE_REAL1 file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN)    :: HFILE       ! name of the NETCDF file
+TYPE(TFILEDATA),                INTENT(IN)    :: TPPGDFILE   ! physiographic data file
+REAL,                           INTENT(INOUT) :: PTIME_HORI  ! time spent in hor. interpolations
+INTEGER,                        INTENT(IN)    :: KVERB       ! verbosity level
+LOGICAL,                        INTENT(IN)    :: ODUMMY_REAL ! flag to interpolate dummy fields
 !
 !* 0.2 Declaration of local variables
 !      ------------------------------
@@ -151,8 +152,8 @@ INTEGER                            :: ILUOUT0       ! Unit used for output msg.
 INTEGER                            :: JJ            ! Dummy counters
 INTEGER                            :: JLOOP1
 ! Variables used by the PGD reader
-CHARACTER(LEN=28)                  :: YPGD_NAME     ! not used - dummy argument
-CHARACTER(LEN=28)                  :: YPGD_DAD_NAME ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_NAME     ! not used - dummy argument
+CHARACTER(LEN=NFILENAMELGTMAX)     :: YPGD_DAD_NAME ! not used - dummy argument
 CHARACTER(LEN=2)                   :: YPGD_TYPE     ! not used - dummy argument
 ! PGD Grib definition variables
 INTEGER                            :: INO           ! Number of points of the grid
@@ -563,7 +564,7 @@ DEALLOCATE (zmmr_sulfaer)
 !
 DEALLOCATE (ZWORK)
 !
-WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successfully'
+WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',TRIM(HFILE),' file ended successfully'
 WRITE (ILUOUT0,'(A,A4,A)') 'CAMS mixing ratios are interpolated horizontally'
 !
 !
diff --git a/src/MNH/read_pre_idea_namn.f90 b/src/MNH/read_pre_idea_namn.f90
index 3a63a6b67..b80718cde 100644
--- a/src/MNH/read_pre_idea_namn.f90
+++ b/src/MNH/read_pre_idea_namn.f90
@@ -30,6 +30,7 @@ USE MODD_DYN_n,      ONLY: CPRESOPT_n=>CPRESOPT,NITR_n=>NITR,XRELAX_n=>XRELAX, &
 USE MODD_IO,         ONLY: TFILEDATA
 USE MODD_LBC_n,      ONLY: CLBCX_n=>CLBCX,CLBCY_n=>CLBCY
 USE MODD_PARAM_n,    ONLY: CSURF_n=>CSURF
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 
 USE MODE_POS
 
@@ -51,7 +52,7 @@ REAL                   :: XRELAX
 CHARACTER(LEN=4), DIMENSION(2) :: CLBCX,CLBCY
 CHARACTER(LEN=5)       :: CSURF
 LOGICAL                :: LCH_INIT_FIELD
-CHARACTER(LEN=80)      :: CCHEM_INPUT_FILE
+CHARACTER(LEN=NFILENAMELGTMAX) :: CCHEM_INPUT_FILE
 
 INTEGER                :: ILUPRE
 !
diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90
index 1874d5e7e..5855cd906 100644
--- a/src/MNH/resolved_elecn.f90
+++ b/src/MNH/resolved_elecn.f90
@@ -151,7 +151,7 @@ USE MODE_ll
 USE MODD_CONF,        ONLY : CEXP, CSEG
 USE MODD_CST
 USE MODD_IO,          ONLY : TFILEDATA, TFILE_DUMMY
-USE MODD_PARAMETERS,  ONLY : JPVEXT
+USE MODD_PARAMETERS,  ONLY : JPVEXT, NFILENAMELGTMAX
 USE MODD_PARAM_LIMA,  ONLY : NMOM_C, NMOM_R, NMOM_I, NMOM_S, NMOM_G, NMOM_H
 USE MODD_ELEC_DESCR
 USE MODD_ELEC_n
@@ -232,7 +232,7 @@ LOGICAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)):: GATTACH  ! mask for
 !
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll   ! list of fields to exchange
 
-CHARACTER (LEN=32) :: YASCFILE
+CHARACTER (LEN=NFILENAMELGTMAX) :: YASCFILE
 !
 CHARACTER (LEN=18) :: YNAME
 LOGICAL            :: GLMA_FILE
@@ -324,7 +324,7 @@ END IF
 !
 IF (KTCOUNT == 1 .AND. IPROC == 0) THEN
   IF (LFLASH_GEOM) THEN
-    YASCFILE = CEXP//"_"//CSEG//"_fgeom_diag.asc"
+    YASCFILE = TRIM(CEXP) // "_" // TRIM(CSEG) // "_fgeom_diag.asc"
     TZFILE_FGEOM_DIAG => NULL()
     CALL IO_File_add2list(TZFILE_FGEOM_DIAG,YASCFILE,'TXT','WRITE')
     CALL IO_File_open(TZFILE_FGEOM_DIAG,HPOSITION='APPEND',HSTATUS='UNKNOWN')
@@ -349,7 +349,7 @@ IF (KTCOUNT == 1 .AND. IPROC == 0) THEN
     FLUSH(UNIT=ILU)
 !
     IF (LSAVE_COORD) THEN
-      YASCFILE = CEXP//"_fgeom_coord.asc"
+      YASCFILE = TRIM(CEXP) // "_fgeom_coord.asc"
       TZFILE_FGEOM_COORD => NULL()
       CALL IO_File_add2list(TZFILE_FGEOM_COORD,YASCFILE,'TXT','WRITE')
       CALL IO_File_open(TZFILE_FGEOM_COORD,HPOSITION='APPEND',HSTATUS='UNKNOWN')
@@ -368,7 +368,7 @@ IF (KTCOUNT == 1 .AND. IPROC == 0) THEN
   END IF
 !
   IF (LSERIES_ELEC) THEN
-    YASCFILE = CEXP//"_series_cloud_elec.asc"
+    YASCFILE = TRIM(CEXP) // "_series_cloud_elec.asc"
     TZFILE_SERIES_CLOUD_ELEC => NULL()
     CALL IO_File_add2list(TZFILE_SERIES_CLOUD_ELEC,YASCFILE,'TXT','WRITE')
     CALL IO_File_open(TZFILE_SERIES_CLOUD_ELEC,HPOSITION='APPEND',HSTATUS='UNKNOWN')
@@ -428,7 +428,7 @@ IF (LFLASH_GEOM .AND. LLMA) THEN
             INT(TDTLMA%xtime/3600.),INT(REAL(MOD(INT(TDTLMA%xtime),3600))/60.),  &
                                       MOD(INT(TDTLMA%xtime),60), '_', INT(XDTLMA)
     TDTLMA%xtime = MOD(TDTLMA%xtime + XDTLMA,86400.)
-    CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat"
+    CLMA_FILE = TRIM(CEXP) // "_SIMLMA_" // YNAME // ".dat"
 !
     IF ( IPROC .EQ. 0 ) THEN
       TZFILE_LMA => NULL()
diff --git a/src/MNH/series_cloud_elec.f90 b/src/MNH/series_cloud_elec.f90
index 1eb1e4e48..e92875be3 100644
--- a/src/MNH/series_cloud_elec.f90
+++ b/src/MNH/series_cloud_elec.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2010-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2010-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -90,7 +90,6 @@ END MODULE MODI_SERIES_CLOUD_ELEC
 ! 0. DECLARATIONS
 ! ------------
 !
-USE MODD_CONF,            ONLY: CEXP
 USE MODD_CST
 USE MODD_DYN_n,           ONLY: XDXHATM, XDYHATM
 USE MODD_ELEC_DESCR
diff --git a/src/MNH/set_advfrc.f90 b/src/MNH/set_advfrc.f90
index eac8ea7b8..b2d3a3891 100644
--- a/src/MNH/set_advfrc.f90
+++ b/src/MNH/set_advfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -87,7 +87,7 @@ USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,         ONLY: TFILEDATA
 USE MODD_LUNIT_n,    ONLY: TLUOUT
-USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT
+USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX
 USE MODD_REF
 ! 
 USE MODE_DATETIME
@@ -122,8 +122,8 @@ REAL    :: ZDZ1SDH, ZDZ2SDH, ZDZSDH
 INTEGER :: JKLEV
 !
 REAL    :: ZZGROUNDF    ! height and Pressure at ground
-CHARACTER(LEN=48)   :: CFNAM_MEANVAR_ADV
-CHARACTER(LEN=48) :: CFNAM_ADV
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_MEANVAR_ADV
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_ADV
 !
 REAL, DIMENSION(:), ALLOCATABLE::     ZHEIGHTMF,ZHEIGHTF,ZTHVUF
 REAL, DIMENSION(:), ALLOCATABLE::     ZTHDF,ZRVF,ZPRESS_ADV,ZTHVF
@@ -211,8 +211,8 @@ DO JKT = 1,NADVFRC
                    TDTADVFRC(JKT)%nday,   &
                    TDTADVFRC(JKT)%xtime
 !                   ; Read filenames
-    READ(ILUPRE,*)  CFNAM_MEANVAR_ADV  
-    READ(ILUPRE,*)  CFNAM_ADV
+    READ(ILUPRE,*)  YFNAM_MEANVAR_ADV
+    READ(ILUPRE,*)  YFNAM_ADV
     !
 !
 print*,"  ! 3.2  READ AND INTERPOLATE FORCING"
@@ -222,13 +222,13 @@ print*,"  ! 3.2  READ AND INTERPOLATE FORCING"
   print*,"YADV=",YADV
   IF (YADV=='ZADV2D') THEN
           print*,"call READ_ASC_LATPRESS"
-    CALL READ_ASC_LATPRESS(CFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZHEIGHTF(:),ZTHFRC(:,:,JKT), & 
+    CALL READ_ASC_LATPRESS(YFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZHEIGHTF(:),ZTHFRC(:,:,JKT), &
                          ZRVFRC(:,:,JKT))
                          print*,"apres READ_ASC_LATPRESS"
   ELSE IF (YADV=='PADV2D') THEN
-    CALL READ_ASCP(CFNAM_MEANVAR_ADV,NPRESSLEV_ADV,ZTHDF,ZRVF)
+    CALL READ_ASCP(YFNAM_MEANVAR_ADV,NPRESSLEV_ADV,ZTHDF,ZRVF)
   !! 3.2.1  Case ADV forcing on pressure levels
-    CALL READ_ASC_LATPRESS(CFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZPRESS_ADV,ZTHFRC(:,:,JKT), & 
+    CALL READ_ASC_LATPRESS(YFNAM_ADV,NPRESSLEV_ADV,ZLAT_FRC,ZPRESS_ADV,ZTHFRC(:,:,JKT), &
                          ZRVFRC(:,:,JKT))
  !
    ZTHVF(:) = ZTHDF(:) * (1.+ZRVSRD*ZRVF(:))/(1.+ZRVF(:))
diff --git a/src/MNH/set_relfrc.f90 b/src/MNH/set_relfrc.f90
index 857e92ede..8c25690dd 100644
--- a/src/MNH/set_relfrc.f90
+++ b/src/MNH/set_relfrc.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 2013-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2023 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -86,7 +86,7 @@ USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_IO,         ONLY: TFILEDATA
 USE MODD_LUNIT_n
-USE MODD_PARAMETERS, ONLY: JPHEXT
+USE MODD_PARAMETERS, ONLY: JPHEXT, NFILENAMELGTMAX
 USE MODD_REF
 USE MODD_RELFRC_n
 ! 
@@ -122,8 +122,8 @@ REAL    :: ZDZ1SDH, ZDZ2SDH, ZDZSDH
 INTEGER :: JKLEV
 !
 REAL    :: ZZGROUNDF    ! height and Pressure at ground
-CHARACTER(LEN=48)   :: CFNAM_MEANVAR_REL
-CHARACTER(LEN=28) :: CFNAM_REL
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_MEANVAR_REL
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFNAM_REL
 !
 REAL, DIMENSION(:), ALLOCATABLE::     ZHEIGHTMFR,ZHEIGHTFR,ZTHVUFR,ZTHVUF
 REAL, DIMENSION(:), ALLOCATABLE::     ZPRESS_REL
@@ -218,8 +218,8 @@ DO JKT = 1,NRELFRC
                    TDTRELFRC(JKT)%nday,   &
                    TDTRELFRC(JKT)%xtime
 !                   ; Read filenames
-    READ(ILUPRE,*)  CFNAM_MEANVAR_REL  
-    READ(ILUPRE,*)  CFNAM_REL
+    READ(ILUPRE,*)  YFNAM_MEANVAR_REL
+    READ(ILUPRE,*)  YFNAM_REL
     !
 !
 
@@ -232,8 +232,8 @@ DO JKT = 1,NRELFRC
 
 
   IF (YREL=='PREL2D') THEN
-   CALL READ_ASCP(CFNAM_MEANVAR_REL,NPRESSLEV_REL,ZTHDFR,ZRVFR)
-   CALL READ_ASC_LATPRESS(CFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZPRESS_REL,ZTHREL(:,:,JKT), & 
+   CALL READ_ASCP(YFNAM_MEANVAR_REL,NPRESSLEV_REL,ZTHDFR,ZRVFR)
+   CALL READ_ASC_LATPRESS(YFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZPRESS_REL,ZTHREL(:,:,JKT), &
                          ZRVREL(:,:,JKT))
  !
    ZTHVFR(:) = ZTHDFR(:) * (1.+ZRVSRD*ZRVFR(:))/(1.+ZRVFR(:))
@@ -250,7 +250,7 @@ DO JKT = 1,NRELFRC
    !
   !
   ELSE IF (YREL=='ZREL2D') THEN
-   CALL READ_ASC_LATPRESS(CFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZHEIGHTFR(:),ZTHREL(:,:,JKT), & 
+   CALL READ_ASC_LATPRESS(YFNAM_REL,NPRESSLEV_REL,ZLAT_FRC,ZHEIGHTFR(:),ZTHREL(:,:,JKT), &
                          ZRVREL(:,:,JKT))
 
   END IF
diff --git a/src/MNH/set_subdomain.f90 b/src/MNH/set_subdomain.f90
index 60105c54d..6eb29a07a 100644
--- a/src/MNH/set_subdomain.f90
+++ b/src/MNH/set_subdomain.f90
@@ -117,7 +117,7 @@ INTEGER,           INTENT(OUT):: KDYRATIO  ! DYRATIO compared to Dad file, if an
 !*       0.2   Declaration of local variables
 !              ------------------------------
 !
-CHARACTER(LEN=28) :: YDADFILE ! name of atmospheric file father (if any)
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDADFILE ! name of atmospheric file father (if any)
 INTEGER :: ILUNAM     ! logical unit for namelist file HNAMELIST
 INTEGER :: ILUOUT0    ! logical unit for listing file
 INTEGER :: IRESP      ! return-code if problems araised
@@ -220,7 +220,7 @@ WRITE(ILUOUT0,*) 'given or computed NYOR  = ',NYOR
 !              ---------------------------------------------
 !
 CALL IO_Field_read(TPATMFILE,'DAD_NAME',YDADFILE,IRESP)
-IF ( IRESP /= 0  ) YDADFILE='                          '
+IF ( IRESP /= 0  ) YDADFILE=''
 !
 IF (LEN_TRIM(YDADFILE)/=0) THEN
   CALL IO_Field_read(TPATMFILE,'DXRATIO',KDXRATIO,IRESP)
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index c9c9c5774..39c8b4b70 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -13,19 +13,21 @@ INTERFACE
                                HCHEM_INPUT_FILE,HSPAFILE,HSPANBR,  &
                                HSONFILE,HINIFILE,HINIFILEPGD,OSPAWN_SURF       )
 !
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
+!
 INTEGER,               INTENT(IN)  :: KRR         ! Number of moist variables
 INTEGER,               INTENT(IN)  :: KSV_USER    ! Number of Users Scalar Variables
 CHARACTER (LEN=4),     INTENT(IN)  :: HTURB       ! Kind of turbulence parameterization
 CHARACTER (LEN=4),     INTENT(IN)  :: HSURF       ! Kind of surface parameterization
 CHARACTER (LEN=4),     INTENT(IN)  :: HCLOUD      ! Kind of cloud parameterization
                                                   ! model 2 physical domain
-CHARACTER (LEN=*),     INTENT(IN) :: HSPAFILE     ! possible name of the output FM-file
-CHARACTER (LEN=*),     INTENT(IN) :: HSPANBR      ! NumBeR associated to the SPAwned file
-CHARACTER (LEN=*),     INTENT(IN) :: HSONFILE     ! name of the input FM-file SON
-CHARACTER (LEN=80),    INTENT(IN) :: HCHEM_INPUT_FILE
-CHARACTER (LEN=*),     INTENT(IN) :: HINIFILE     ! Input file
-CHARACTER (LEN=*),     INTENT(IN) :: HINIFILEPGD  ! Input pgd file
-LOGICAL,               INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSPAFILE     ! possible name of the output FM-file
+CHARACTER (LEN=*),               INTENT(IN) :: HSPANBR      ! NumBeR associated to the SPAwned file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSONFILE     ! name of the input FM-file SON
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HCHEM_INPUT_FILE
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE     ! Input file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD  ! Input pgd file
+LOGICAL,                         INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
 !
 END SUBROUTINE SPAWN_MODEL2
 !
@@ -313,13 +315,13 @@ INTEGER,               INTENT(IN)  :: KSV_USER    ! Number of Users Scalar Varia
 CHARACTER (LEN=4),     INTENT(IN)  :: HTURB       ! Kind of turbulence parameterization
 CHARACTER (LEN=4),     INTENT(IN)  :: HSURF       ! Kind of surface parameterization
 CHARACTER (LEN=4),     INTENT(IN)  :: HCLOUD      ! Kind of cloud parameterization
-CHARACTER (LEN=*),     INTENT(IN) :: HSPAFILE     ! possible name of the output FM-file
-CHARACTER (LEN=*),     INTENT(IN) :: HSPANBR      ! NumBeR associated to the SPAwned file
-CHARACTER (LEN=*),     INTENT(IN) :: HSONFILE     ! name of the input FM-file SON
-CHARACTER (LEN=80),    INTENT(IN) :: HCHEM_INPUT_FILE
-CHARACTER (LEN=*),     INTENT(IN) :: HINIFILE     ! Input file
-CHARACTER (LEN=*),     INTENT(IN) :: HINIFILEPGD  ! Input pgd file
-LOGICAL,               INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSPAFILE     ! possible name of the output FM-file
+CHARACTER (LEN=*),               INTENT(IN) :: HSPANBR      ! NumBeR associated to the SPAwned file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HSONFILE     ! name of the input FM-file SON
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HCHEM_INPUT_FILE
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE     ! Input file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD  ! Input pgd file
+LOGICAL,                         INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
 !
 !*       0.1.3  Declarations of local variables :
 !
@@ -380,7 +382,7 @@ INTEGER             :: IJE1           ! indice J End       in y direction
 ! Logical for no common domain between the 2 sons or no input son
 LOGICAL             :: GNOSON = .TRUE.
 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK3D ! working array
-CHARACTER(LEN=28)   :: YDAD_SON
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD_SON
 !$
 INTEGER             :: IINFO_ll
 TYPE(LIST_ll), POINTER :: TZFIELDS_ll=>NULL()   ! list of fields to exchange
@@ -640,7 +642,7 @@ END IF
 !*       3.5   model 2 configuration in MODD_NESTING to be written
 !*                on the FM-file to allow nesting or coupling 
 !
-CCPLFILE(:) = '    ' 
+CCPLFILE(:) = ''
 LSTEADYLS=.TRUE.
 !
 NDXRATIO_ALL(:) = 0
diff --git a/src/MNH/spawn_surf.f90 b/src/MNH/spawn_surf.f90
index c0d05321c..96db05fed 100644
--- a/src/MNH/spawn_surf.f90
+++ b/src/MNH/spawn_surf.f90
@@ -11,13 +11,13 @@ INTERFACE
 !
       SUBROUTINE SPAWN_SURF (HINIFILE, HINIFILEPGD, TPOUTDATAFILE, OSPAWN_SURF)
 !
-USE MODD_IO, ONLY: TFILEDATA
-
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-CHARACTER (LEN=*),      INTENT(IN) :: HINIFILE     ! Input file
-CHARACTER (LEN=*),      INTENT(IN) :: HINIFILEPGD
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPOUTDATAFILE
-LOGICAL,                INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE     ! Input file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD
+TYPE(TFILEDATA), POINTER,        INTENT(IN) :: TPOUTDATAFILE
+LOGICAL,                         INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
 !
 END SUBROUTINE SPAWN_SURF
 !
@@ -79,7 +79,8 @@ USE MODD_IO,           ONLY : TFILEDATA
 USE MODD_IO_SURF_MNH,  ONLY : COUTFILE
 USE MODD_LUNIT,        ONLY : TPGDFILE, TOUTDATAFILE
 USE MODD_MNH_SURFEX_n
-USE MODD_NESTING,      ONLY : CMY_NAME, CDAD_NAME
+USE MODD_NESTING,      ONLY : CMY_NAME
+USE MODD_PARAMETERS,   ONLY : NFILENAMELGTMAX
 USE MODD_PARAM_n,      ONLY : CSURF
 USE MODD_TIME_n,       ONLY : TDTCUR
 !
@@ -102,10 +103,10 @@ IMPLICIT NONE
 !
 !*       0.1.2  Declarations of dummy arguments :
 !
-CHARACTER (LEN=*),      INTENT(IN) :: HINIFILE     ! Input file
-CHARACTER (LEN=*),      INTENT(IN) :: HINIFILEPGD
-TYPE(TFILEDATA),POINTER,INTENT(IN) :: TPOUTDATAFILE
-LOGICAL,                INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILE     ! Input file
+CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD
+TYPE(TFILEDATA), POINTER,        INTENT(IN) :: TPOUTDATAFILE
+LOGICAL,                         INTENT(IN) :: OSPAWN_SURF  ! flag to spawn surface fields
 !
 !*       0.1.3  Declarations of local variables :
 !
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index d073818d1..cb65a0c98 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -142,8 +142,8 @@ IMPLICIT NONE
 !*       0.3    Local variables
 !
 !
-CHARACTER (LEN=28) :: YSONFILE = ' '  ! possible name of SON input FM-file
-CHARACTER (LEN=28) :: YSPAFILE = ' '  ! possible name of the output FM-file
+CHARACTER (LEN=NFILENAMELGTMAX) :: YSONFILE = ''  ! possible name of SON input FM-file
+CHARACTER (LEN=NFILENAMELGTMAX) :: YSPAFILE = ''  ! possible name of the output FM-file
 CHARACTER (LEN= 2) :: YSPANBR = '00'  ! NumBeR associated to the SPAwned file
 INTEGER            :: IINFO_ll        ! return code of // routines
 INTEGER :: IRESP                      ! Return codes in FM routines
diff --git a/src/MNH/spectre.f90 b/src/MNH/spectre.f90
index a6801f1de..9b21c596d 100644
--- a/src/MNH/spectre.f90
+++ b/src/MNH/spectre.f90
@@ -30,6 +30,7 @@ USE MODD_IO,               only: TFILEDATA
 USE MODD_LUNIT_n
 USE MODD_TIME_n
 USE MODD_DIM_ll
+USE MODD_PARAMETERS,       ONLY: NFILENAMELGTMAX
 USE MODD_SPECTRE
 !
 USE MODI_SPECTRE_MESONH
@@ -52,8 +53,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of local variables
 !
-CHARACTER (LEN=28), DIMENSION(1) :: YINIFILE      ! names of the INPUT FM-file
-CHARACTER (LEN=50)               :: YOUTFILE      ! names of the OUTPUT FM-file
+CHARACTER (LEN=NFILENAMELGTMAX), DIMENSION(1) :: YINIFILE ! names of the INPUT FM-file
+CHARACTER (LEN=NFILENAMELGTMAX)               :: YOUTFILE ! names of the OUTPUT FM-file
 INTEGER                          :: IRESP         ! return code in FM routines
 INTEGER                          :: ILUOUT0       ! Logical unit number for the output listing
 INTEGER                          :: ILUNAM        ! Logical unit numbers for the namelist file
@@ -87,7 +88,7 @@ CPROGRAM='SPEC  '
 CALL IO_Init()
 !
 ! initialization 
-YINIFILE(:)   = '                         '
+YINIFILE(:)   = ''
 CTYPEFILE     = 'MESONH'
 LSPECTRE_U    = .FALSE.
 LSPECTRE_V    = .FALSE.
@@ -101,7 +102,7 @@ LSPECTRE_LSTH = .FALSE.
 LSPECTRE_LSRV = .FALSE.
 LSMOOTH       = .FALSE.
 LZOOM         = .FALSE.
-YOUTFILE      = '                         '
+YOUTFILE      = ''
 LSTAT         = .FALSE.
 NI=750
 NJ=720
diff --git a/src/MNH/spectre_arome.f90 b/src/MNH/spectre_arome.f90
index c51947280..39928aaaa 100644
--- a/src/MNH/spectre_arome.f90
+++ b/src/MNH/spectre_arome.f90
@@ -46,7 +46,7 @@ REAL,INTENT(IN) :: PDELTAX,PDELTAY
 CHARACTER(LEN=5) :: YFIELDSP
 REAL,DIMENSION(:,:,:),ALLOCATABLE:: ZWORK         ! work array
 REAL,DIMENSION(:,:,:),ALLOCATABLE:: ZWORK1         ! work array
-CHARACTER (LEN=32)                :: YFILE         ! file to open
+CHARACTER (LEN=NFILENAMELGTMAX)  :: YFILE         ! file to open
 REAL :: ZLATB, ZLONB
 INTEGER :: ILU
 INTEGER :: JJJ,III,JERR
diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90
index 96a3954b2..abea790b2 100644
--- a/src/MNH/write_lfifm1_for_diag.f90
+++ b/src/MNH/write_lfifm1_for_diag.f90
@@ -9,11 +9,11 @@ MODULE MODI_WRITE_LFIFM1_FOR_DIAG
 INTERFACE
       SUBROUTINE WRITE_LFIFM1_FOR_DIAG(TPFILE,HDADFILE)
 !
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_IO,         ONLY: TFILEDATA
+USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
 !
-TYPE(TFILEDATA),   INTENT(IN) :: TPFILE       ! outpput data file
-CHARACTER(LEN=28), INTENT(IN) :: HDADFILE     ! corresponding FM-file name of 
-                                              ! its DAD model
+TYPE(TFILEDATA),                INTENT(IN) :: TPFILE   ! outpput data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADFILE ! corresponding FM-file name of its DAD model
 !
 END SUBROUTINE WRITE_LFIFM1_FOR_DIAG
 END INTERFACE
@@ -187,7 +187,7 @@ USE MODD_METRICS_n,         ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ
 USE MODD_MPIF
 USE MODD_NESTING,           ONLY: NDXRATIO_ALL, NDYRATIO_ALL, NXOR_ALL, NYOR_ALL
 USE MODD_NSV
-USE MODD_PARAMETERS,        ONLY: JPHEXT, JPVEXT, XUNDEF
+USE MODD_PARAMETERS,        ONLY: JPHEXT, JPVEXT, NFILENAMELGTMAX, XUNDEF
 USE MODD_PARAM_LIMA_COLD,   ONLY: CLIMA_COLD_CONC
 USE MODD_PARAM_LIMA,        ONLY: NMOD_CCN, NMOD_IFN, NMOD_IMM, NINDICE_CCN_IMM, &
                                   LSCAV, LLIMA_DIAG, NMOM_S, NMOM_G, NMOM_H
@@ -243,16 +243,15 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of arguments
 !
-TYPE(TFILEDATA),   INTENT(IN) :: TPFILE       ! outpput data file
-CHARACTER(LEN=28), INTENT(IN) :: HDADFILE     ! corresponding FM-file name of 
-                                              ! its DAD model
+TYPE(TFILEDATA),                INTENT(IN) :: TPFILE   ! outpput data file
+CHARACTER(LEN=NFILENAMELGTMAX), INTENT(IN) :: HDADFILE ! corresponding FM-file name of its DAD model
 !
 !*       0.2   Declarations of local variables
 !
 INTEGER           :: IRESP          ! return-code for the file routines 
 !
-CHARACTER(LEN=3)  :: YFRC           ! to mark the time of the forcing
-CHARACTER(LEN=31) :: YFGRI          ! file name for GPS stations
+CHARACTER(LEN=3)               :: YFRC           ! to mark the time of the forcing
+CHARACTER(LEN=NFILENAMELGTMAX) :: YFGRI ! file name for GPS stations
 !
 INTEGER           :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds
 ! 
diff --git a/src/MNH/write_ts1d.f90 b/src/MNH/write_ts1d.f90
index 4ffad8b5f..f077da063 100644
--- a/src/MNH/write_ts1d.f90
+++ b/src/MNH/write_ts1d.f90
@@ -117,7 +117,7 @@ USE MODD_PARAM_n,         ONLY: CRAD         ! Kind of radiation parameterizatio
 USE MODD_RADIATIONS_n,    ONLY: XDTHRAD ! radiative heating/cooling rate
 USE MODD_CH_JVALUES_n,    ONLY: XJVALUES   ! Jvalues and 
 USE MODD_CH_INIT_JVALUES, ONLY:JPJVMAX ! their number
-USE MODD_PARAMETERS,      ONLY: XUNDEF
+USE MODD_PARAMETERS,      ONLY: NFILENAMELGTMAX, XUNDEF
 USE MODD_DIAG_FLAG,       ONLY: LCHEMDIAG, XCHEMLAT, XCHEMLON
 
 IMPLICIT NONE
@@ -130,8 +130,8 @@ IMPLICIT NONE
 REAL  :: ZTIME
 LOGICAL, SAVE     :: GSFIRSTCALL = .TRUE.
 INTEGER, SAVE     :: ISIO1D                 ! IO-channel 
-CHARACTER(LEN=80), SAVE :: YSIO1DDEF        ! name of def-file
-CHARACTER(LEN=80), SAVE :: YSIO1DDAT        ! name of dat-file
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: YSIO1DDEF ! name of def-file
+CHARACTER(LEN=NFILENAMELGTMAX), SAVE :: YSIO1DDAT ! name of dat-file
 CHARACTER(LEN=40) :: YFORM = "(E15.8)"      ! data output format
 INTEGER, SAVE     :: ISCOUNT = 0            ! timestep counter
 INTEGER           :: JK, JL, JN             ! loop counter
@@ -212,7 +212,7 @@ DO JN=1,NBPROF
     END IF
 
     CCH_TS1D_FILENAME = ADJUSTR(YCLATLON) // ":" // YCYEAR // YCMONTH // YCDAY // "-" // YCTIME
-    CCH_TS1D_COMMENT = "Fichier issu de " // CINIFILE
+    CCH_TS1D_COMMENT = "Fichier issu de " // TRIM(CINIFILE)
     YSIO1DDEF = "def." // ADJUSTL(CCH_TS1D_FILENAME)
     YSIO1DDAT = "dat." // ADJUSTL(CCH_TS1D_FILENAME)
 
diff --git a/src/MNH/xy_to_latlon.f90 b/src/MNH/xy_to_latlon.f90
index d544a9607..82a431d88 100644
--- a/src/MNH/xy_to_latlon.f90
+++ b/src/MNH/xy_to_latlon.f90
@@ -91,9 +91,9 @@ IMPLICIT NONE
 !*    0.2    Declaration of variables
 !            ------------------------
 !
-CHARACTER(LEN=28) :: YINIFILE  ! name of input FM file
-CHARACTER(LEN=28) :: YNAME     ! true name of input FM file
-CHARACTER(LEN=28) :: YDAD      ! name of dad of input FM file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YINIFILE  ! name of input FM file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YNAME     ! true name of input FM file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YDAD      ! name of dad of input FM file
 CHARACTER(LEN=2)  :: YSTORAGE_TYPE
 INTEGER :: INAM                ! Logical unit for namelist file
 INTEGER :: ILUOUT0             ! Logical unit for output file.
diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90
index efd60bdd8..bc1dca1d2 100644
--- a/src/MNH/zoom_pgd.f90
+++ b/src/MNH/zoom_pgd.f90
@@ -51,7 +51,7 @@
 USE MODD_CONF,   ONLY : CPROGRAM, L1D, L2D, LPACK
 USE MODD_IO,               only:  TFILE_OUTPUTLISTING, TFILEDATA
 USE MODD_LUNIT,  ONLY : TLUOUT0, TOUTDATAFILE
-USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX
+USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX, NFILENAMELGTMAX
 USE MODD_PARAM_n,     ONLY : CSURF
 USE MODD_DIM_n,       ONLY : NIMAX, NJMAX
 USE MODD_CONF_n,   ONLY : CSTORAGE_TYPE
@@ -94,12 +94,12 @@ INTEGER :: IRESP    ! return code for I/O
 INTEGER :: ILUOUT0
 INTEGER :: ILUNAM
 INTEGER :: IINFO_ll
-CHARACTER(LEN=28)  :: CPGDFILE              ! name of the PGD file
-CHARACTER(LEN=28)  :: YZOOMFILE             ! name of the output file
-CHARACTER(LEN=2)   :: YZOOMNBR
-CHARACTER(LEN=28)  :: YMY_NAME,YDAD_NAME
-CHARACTER(LEN=28)  :: YPGDFILE
-CHARACTER(LEN=2)   :: YSTORAGE_TYPE
+CHARACTER(LEN=NFILENAMELGTMAX) :: CPGDFILE              ! name of the PGD file
+CHARACTER(LEN=NFILENAMELGTMAX) :: YZOOMFILE             ! name of the output file
+CHARACTER(LEN=2)               :: YZOOMNBR
+CHARACTER(LEN=NFILENAMELGTMAX) :: YMY_NAME, YDAD_NAME
+CHARACTER(LEN=NFILENAMELGTMAX) :: YPGDFILE
+CHARACTER(LEN=2)               :: YSTORAGE_TYPE
 LOGICAL :: GFOUND
 INTEGER            :: IXOR_DAD,IYOR_DAD  ! compared to Dad file, if any
 INTEGER            :: IXOR,IYOR          ! given or computed
-- 
GitLab