diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 21ddfeba6708d033295a94378d08843ffff32332..5415ffdef6aca66d11ba6871b59171d2dc8b991a 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 22/02/2019: set HCOMMENT for all subroutines (dummy argument with intent OUT)
 !-----------------------------------------------------------------
 MODULE MODE_READ_SURF_MNH_TOOLS
 
@@ -157,7 +158,7 @@ IMPLICIT NONE
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to be read
 REAL,                   INTENT(OUT) :: PFIELD   ! the real scalar to be read
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !
 !*      0.2   Declarations of local variables
 !
@@ -175,6 +176,7 @@ TYPE(TFIELDDATA)  :: TZFIELD
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 ILUOUT = TOUT%NLU
+HCOMMENT=''
 !
 IF (HREC=='LONORI' .OR. HREC=='LATORI') THEN
   IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<=5)) THEN
@@ -231,6 +233,7 @@ IF ( HREC=='LAT0' .OR. HREC=='LON0' .OR. HREC=='RPK' .OR. HREC=='BETA'  &
 ELSE
   CALL PREPARE_METADATA_READ_SURF(HREC,'--',0,TYPEREAL,0,'READ_SURFX0_MNH',TZFIELD)
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,PFIELD,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
 END IF
 
 IF (KRESP /=0) THEN
@@ -313,7 +316,7 @@ CHARACTER(LEN=LEN_HREC),INTENT(IN) :: HREC     ! name of the article to be read
 INTEGER,                INTENT(IN) :: KL       !  number of points
 REAL, DIMENSION(KL),    INTENT(OUT):: PFIELD   ! array containing the data field
 INTEGER,                INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT):: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT):: HCOMMENT ! comment
 CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
 !                                           ! 'H' for HOR : with hor. dim.; and  distributed.
 !                                           ! 'A' for ALL : with hor. dim.; and not distributed.
@@ -345,6 +348,7 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFX1_MNH',TRIM(TPINFILE%CNAME)//': readi
 !
 KRESP = 0
 ILUOUT = TOUT%NLU
+HCOMMENT = ' '
 !
 IF (HDIR=='A'.OR.HDIR=='E') THEN
   IIU = NIU_ALL
@@ -381,7 +385,6 @@ ELSE IF (HREC=='LON') THEN
 ELSE IF (HREC=='MESH_SIZE') THEN
 
   PFIELD(:) = 0.
-  HCOMMENT = ' '
 
 ELSE IF (HREC=='XX') THEN
 !! reading of a 1D field along X in the file
@@ -396,6 +399,7 @@ ELSE IF (HREC=='XX') THEN
     TZFIELD%CDIR       = '--'
   END IF
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK1D,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
   DO JJ = 1,IJU
     ZWORK(IIB:IIE,JJ) = 0.5 * ZWORK1D(IIB:IIE) + 0.5 * ZWORK1D(IIB+1:IIE+1)
   END DO
@@ -415,6 +419,7 @@ ELSE IF (HREC=='DX') THEN
     TZFIELD%CDIR       = '--'
   END IF
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK1D,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
   DO JJ = 1,IJU
     ZWORK(IIB:IIE,JJ) = - ZWORK1D(IIB:IIE) + ZWORK1D(IIB+1:IIE+1)
   END DO
@@ -434,6 +439,7 @@ ELSE IF (HREC=='YY') THEN
     TZFIELD%CDIR       = '--'
   END IF
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK1D,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
   DO JI = 1,IIU
     ZWORK(JI,IJB:IJE) = 0.5 * ZWORK1D(IJB:IJE) + 0.5 * ZWORK1D(IJB+1:IJE+1)
   END DO
@@ -453,6 +459,7 @@ ELSE IF (HREC=='DY') THEN
     TZFIELD%CDIR       = '--'
   END IF
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK1D,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
   DO JI = 1,IIU
     ZWORK(JI,IJB:IJE) = - ZWORK1D(IJB:IJE) + ZWORK1D(IJB+1:IJE+1)
   END DO
@@ -502,6 +509,7 @@ ELSE
     CALL PREPARE_METADATA_READ_SURF(YREC,'--',4,TYPEREAL,1,'READ_SURFX1_MNH',TZFIELD)
     CALL IO_READ_FIELD(TPINFILE,TZFIELD,PFIELD,KRESP)
   END IF
+  HCOMMENT = TZFIELD%CCOMMENT
 !
   IF (KRESP /=0) THEN
     WRITE(ILUOUT,*) 'WARNING'
@@ -598,7 +606,7 @@ INTEGER,                 INTENT(IN)  :: KL1      ! number of points
 INTEGER,                 INTENT(IN)  :: KL2      ! second dimension
 REAL, DIMENSION(KL1,KL2),INTENT(OUT) :: PFIELD   ! array containing the data field
 INTEGER,                 INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),      INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),        INTENT(OUT) :: HCOMMENT ! comment
 CHARACTER(LEN=1),        INTENT(IN)  :: HDIR     ! type of field :
 !                                                ! 'H' for HOR : with hor. dim.; and  distributed.
 !                                                ! 'A' for ALL : with hor. dim.; and not distributed.
@@ -641,6 +649,8 @@ ELSE
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,PFIELD,KRESP)
 END IF
 !
+HCOMMENT = TZFIELD%CCOMMENT
+!
 IF (KRESP /=0) THEN
     WRITE(ILUOUT,*) 'WARNING'
     WRITE(ILUOUT,*) '-------'
@@ -736,7 +746,7 @@ INTEGER,                   INTENT(IN) :: KL1,KL2  !  number of points
 REAL, DIMENSION(KL1,KL2),  INTENT(OUT):: PFIELD   ! array containing the data field
 LOGICAL,DIMENSION(JPCOVER),INTENT(IN) :: OFLAG    ! mask for array filling
 INTEGER,                   INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),        INTENT(OUT):: HCOMMENT ! comment
+CHARACTER(LEN=*),          INTENT(OUT):: HCOMMENT ! comment
 CHARACTER(LEN=1),          INTENT(IN) :: HDIR     ! type of field :
 !                                           ! 'H' for HOR : with hor. dim.; and  distributed.
 !                                           ! 'A' for ALL : with hor. dim.; and not distributed.
@@ -844,6 +854,8 @@ ELSE
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,ZWORK3D(:,:,:),KRESP)
 END IF
 !
+HCOMMENT = TZFIELD%CCOMMENT
+!
 IF (KRESP /=0) THEN
   WRITE(ILUOUT,*) 'WARNING'
   WRITE(ILUOUT,*) '-------'
@@ -930,7 +942,7 @@ INTEGER,                INTENT(IN) :: KL1      !  number of points
 INTEGER,                INTENT(IN) :: KCOVER   ! index of the vertical level, it should be a index such that LCOVER(KCOVER)=.TRUE.
 REAL, DIMENSION(KL1),   INTENT(OUT):: PFIELD   ! array containing the data field
 INTEGER,                INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT):: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT):: HCOMMENT ! comment
 CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
 !                                           ! 'H' for HOR : with hor. dim.; and  distributed.
 !                                           ! 'A' for ALL : with hor. dim.; and not distributed.
@@ -1035,6 +1047,8 @@ ELSE
   CALL ABORT
 END IF
 !
+HCOMMENT = TZFIELD%CCOMMENT
+!
 IF (KRESP /=0) THEN
   WRITE(ILUOUT,*) 'WARNING'
   WRITE(ILUOUT,*) '-------'
@@ -1112,7 +1126,7 @@ IMPLICIT NONE
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                INTENT(OUT) :: KFIELD   ! the integer to be read
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !
 !*      0.2   Declarations of local variables
 !
@@ -1126,6 +1140,7 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFN0_MNH',TRIM(TPINFILE%CNAME)//': readi
 !
 KRESP=0
 ILUOUT = TOUT%NLU
+HCOMMENT=''
 !
 IF (HREC=='DIM_FULL' .AND. ( CPROGRAM=='IDEAL ' .OR.  &
                                   CPROGRAM=='SPAWN ' .OR. CPROGRAM=='ZOOMPG' ))THEN
@@ -1135,6 +1150,7 @@ IF (HREC=='DIM_FULL' .AND. ( CPROGRAM=='IDEAL ' .OR.  &
 ELSE
    CALL PREPARE_METADATA_READ_SURF(HREC,'--',0,TYPEINT,0,'READ_SURFN0_MNH',TZFIELD)
    CALL IO_READ_FIELD(TPINFILE,TZFIELD,KFIELD,KRESP)
+   HCOMMENT = TZFIELD%CCOMMENT
 
     IF (KRESP /=0) THEN
       WRITE(ILUOUT,*) 'WARNING'
@@ -1208,7 +1224,7 @@ CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                INTENT(IN)  :: KL       ! number of points
 INTEGER, DIMENSION(KL), INTENT(OUT) :: KFIELD   ! the integer to be read
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !                                               ! 'H' : field with
 !                                               !       horizontal spatial dim.
@@ -1249,9 +1265,11 @@ ELSE IF (HDIR=='H') THEN
     CALL PACK_2D_1D(NMASK,IWORK(NIB:NIE,NJB:NJE),KFIELD)
  END IF
 !
-DEALLOCATE(IWORK)
-
+ DEALLOCATE(IWORK)
 ENDIF
+
+HCOMMENT = TZFIELD%CCOMMENT
+
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFN1_MNH
 !
@@ -1315,7 +1333,7 @@ IMPLICIT NONE
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC      ! name of the article to be read
 CHARACTER(LEN=40),      INTENT(OUT) :: HFIELD    ! the integer to be read
 INTEGER,                INTENT(OUT) :: KRESP     ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT  ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT  ! comment
 !
 !*      0.2   Declarations of local variables
 !
@@ -1338,6 +1356,7 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFC0_MNH',TRIM(TPINFILE%CNAME)//': readi
 !
 KRESP = 0
 ILUOUT = TOUT%NLU
+HCOMMENT = ''
 !
 IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<6)) THEN
   SELECT CASE(TRIM(HREC))
@@ -1400,6 +1419,7 @@ ELSE IF ( HREC=='GRID_TYPE'.AND. ( &
 ELSE
   CALL PREPARE_METADATA_READ_SURF(HREC,'--',0,TYPECHAR,0,'READ_SURFC0_MNH',TZFIELD)
   CALL IO_READ_FIELD(TPINFILE,TZFIELD,HFIELD,KRESP)
+  HCOMMENT = TZFIELD%CCOMMENT
   !
   IF (KRESP /=0) THEN
         CALL PRINT_MSG(NVERB_FATAL,'IO','READ_SURFC0_MNH',TRIM(TPINFILE%CNAME)//': error when reading article '//TRIM(HREC)// &
@@ -1472,7 +1492,7 @@ CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to be read
 INTEGER,                INTENT(IN)  :: KL       ! number of points
 LOGICAL, DIMENSION(KL), INTENT(OUT) :: OFIELD   ! array containing the data field
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 CHARACTER(LEN=1),       INTENT(IN)  :: HDIR     ! type of field :
 !                                               ! 'H' : field with
 !                                               !       horizontal spatial dim.
@@ -1524,6 +1544,9 @@ ELSE IF (HDIR=='H') THEN
 !
   DEALLOCATE(GWORK)
 END IF
+
+HCOMMENT = TZFIELD%CCOMMENT
+
 !-------------------------------------------------------------------------------
 END SUBROUTINE READ_SURFL1_MNH
 !
@@ -1583,7 +1606,7 @@ IMPLICIT NONE
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to be read
 LOGICAL,                INTENT(OUT) :: OFIELD   ! array containing the data field
 INTEGER,                INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT) :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT) :: HCOMMENT ! comment
 !
 !*      0.2   Declarations of local variables
 !
@@ -1684,7 +1707,7 @@ INTEGER,                INTENT(OUT)   :: KMONTH   ! month
 INTEGER,                INTENT(OUT)   :: KDAY     ! day
 REAL,                   INTENT(OUT)   :: PTIME    ! time
 INTEGER,                INTENT(OUT)   :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),     INTENT(OUT)   :: HCOMMENT ! comment
+CHARACTER(LEN=*),       INTENT(OUT)   :: HCOMMENT ! comment
 
 !*      0.2   Declarations of local variables
 !
@@ -1703,6 +1726,7 @@ TYPE(DATE_TIME)        :: TZDATETIME
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT0_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 ILUOUT = TOUT%NLU
+HCOMMENT = ''
 !
 IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<6)) THEN
   CALL IO_READ_FIELD(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
@@ -1809,7 +1833,7 @@ INTEGER, DIMENSION(KL1), INTENT(OUT)   :: KMONTH   ! month
 INTEGER, DIMENSION(KL1), INTENT(OUT)   :: KDAY     ! day
 REAL,    DIMENSION(KL1), INTENT(OUT)   :: PTIME    ! time
 INTEGER,                 INTENT(OUT)   :: KRESP    ! KRESP  : return-code if a problem appears
-CHARACTER(LEN=100),      INTENT(OUT)   :: HCOMMENT ! comment
+CHARACTER(LEN=*),        INTENT(OUT)   :: HCOMMENT ! comment
 
 !*      0.2   Declarations of local variables
 !
@@ -1827,6 +1851,7 @@ TYPE(TFIELDDATA)       :: TZFIELD
 CALL PRINT_MSG(NVERB_DEBUG,'IO','READ_SURFT1_MNH',TRIM(TPINFILE%CNAME)//': reading '//TRIM(HREC))
 !
 ILUOUT = TOUT%NLU
+HCOMMENT = ''
 !
 IF (TPINFILE%NMNHVERSION(1)<4 .OR. (TPINFILE%NMNHVERSION(1)==4 .AND. TPINFILE%NMNHVERSION(2)<6)) THEN
   CALL IO_READ_FIELD(TPINFILE,'STORAGE_TYPE',YFILETYPE2)
@@ -1859,7 +1884,7 @@ TZFIELD%CSTDNAME   = ''
 TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
 TZFIELD%CUNITS     = ''
 TZFIELD%CDIR       = '--'
-TZFIELD%CCOMMENT   = TRIM(HCOMMENT)
+TZFIELD%CCOMMENT   = ''
 TZFIELD%NGRID      = 0
 TZFIELD%NTYPE      = TYPEINT
 TZFIELD%NDIMS      = 2
@@ -1884,7 +1909,7 @@ TZFIELD%CSTDNAME   = ''
 TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
 TZFIELD%CUNITS     = ''
 TZFIELD%CDIR       = '--'
-TZFIELD%CCOMMENT   = TRIM(HCOMMENT)
+TZFIELD%CCOMMENT   = ''
 TZFIELD%NGRID      = 0
 TZFIELD%NTYPE      = TYPEREAL
 TZFIELD%NDIMS      = 1