From ef87d0be86c9140abe4a571378ef535e1a38c09e Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 9 Oct 2017 16:58:22 +0200
Subject: [PATCH] Philippe 09/10/2017: IO: use PRINT_MSG with NVERB_FATAL to
 replace (some) "callabortstop"

---
 src/MNH/advection_metsv.f90       |   7 +-
 src/MNH/aircraft_balloon_evol.f90 |   5 +-
 src/MNH/c2r2_adjust.f90           |   6 +-
 src/MNH/eddyUV_fluxn.f90          |  32 ++----
 src/MNH/elec_trid.f90             |   9 +-
 src/MNH/elec_tridz.f90            |   9 +-
 src/MNH/ini_aircraft_balloon.f90  |  15 +--
 src/MNH/ini_budget.f90            |  11 +-
 src/MNH/ini_cpl.f90               |   8 +-
 src/MNH/ini_lb.f90                | 176 ++++++------------------------
 src/MNH/ini_modeln.f90            |   2 +-
 src/MNH/ini_posprofilern.f90      |   9 +-
 src/MNH/ini_prog_var.f90          |  56 +++-------
 src/MNH/ini_segn.f90              |  19 +---
 src/MNH/ini_spectren.f90          |   4 +-
 src/MNH/ini_surfstationn.f90      |  11 +-
 src/MNH/khko_notadjust.f90        |  11 +-
 src/MNH/ls_coupling.f90           |   8 +-
 src/MNH/mnhread_zs_dummyn.f90     |   3 +-
 src/MNH/phys_paramn.f90           |   2 +-
 src/MNH/pressure.f90              |  12 +-
 src/MNH/pressurez.f90             |   5 +-
 src/MNH/prognos.f90               |  24 ++--
 src/MNH/read_dummy_gr_fieldn.f90  |  34 ++----
 src/MNH/read_exsegn.f90           | 143 ++++++------------------
 src/MNH/trid.f90                  |   9 +-
 src/MNH/tridz.f90                 |   9 +-
 src/MNH/write_seriesn.f90         |  78 +++++--------
 28 files changed, 203 insertions(+), 514 deletions(-)

diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90
index 607b0940a..6d1e3cebb 100644
--- a/src/MNH/advection_metsv.f90
+++ b/src/MNH/advection_metsv.f90
@@ -148,11 +148,12 @@ USE MODD_BUDGET
 USE MODD_IO_ll,     ONLY: TFILEDATA
 USE MODD_TYPE_DATE, ONLY: DATE_TIME
 !
-USE MODE_ll
 USE MODE_FIELD, ONLY: TFIELDDATA, TYPEREAL
 USE MODE_FM
 USE MODE_FMWRIT
 USE MODE_IO_ll
+USE MODE_ll
+USE MODE_MSG
 !
 USE MODI_CONTRAV
 USE MODI_PPM_RHODJ
@@ -408,9 +409,7 @@ IF (( (ZCFLU_MAX>=3.) .AND. (.NOT.L1D) ) .OR. &
   WRITE(ILUOUT,*) ' +---------------------------------------------------+'
   WRITE(ILUOUT,*) ' |                   MODEL STOPS                     |'
   WRITE(ILUOUT,*) ' +---------------------------------------------------+'
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','ADVECTION_METSV','')
 END IF
 !
 !
diff --git a/src/MNH/aircraft_balloon_evol.f90 b/src/MNH/aircraft_balloon_evol.f90
index 27fb7547c..85d29d190 100644
--- a/src/MNH/aircraft_balloon_evol.f90
+++ b/src/MNH/aircraft_balloon_evol.f90
@@ -181,6 +181,7 @@ USE MODD_PARAM_LIMA, ONLY: XALPHAR_L=>XALPHAR,XNUR_L=>XNUR,XALPHAS_L=>XALPHAS,XN
 USE MODE_ll
 USE MODE_IO_ll
 USE MODE_GRIDPROJ
+USE MODE_MSG
 !
 USE MODI_WATER_SUM
 USE MODI_TEMPORAL_DIST
@@ -717,9 +718,7 @@ IF ( TPFLYER%FLY) THEN
           WRITE(ILUOUT,*) 'neither initial ALTITUDE or PRESsure is given'
           WRITE(ILUOUT,*) 'Check your INI_BALLOON routine'
 !callabortstop
-          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-          CALL ABORT
-          STOP
+          CALL PRINT_MSG(NVERB_FATAL,'GEN','AIRCRAFT_BALLOON_EVOL','')
         END IF
       END IF
 !
diff --git a/src/MNH/c2r2_adjust.f90 b/src/MNH/c2r2_adjust.f90
index 0cf366da5..d9f0f1bfb 100644
--- a/src/MNH/c2r2_adjust.f90
+++ b/src/MNH/c2r2_adjust.f90
@@ -168,7 +168,7 @@ USE MODI_BUDGET
 USE MODE_FIELD
 USE MODE_FM
 USE MODE_FMWRIT
-USE MODE_IO_ll
+USE MODE_MSG
 !
 IMPLICIT NONE
 !
@@ -259,9 +259,7 @@ IF (ANY(PRCS(:,:,:)+PRVS(:,:,:) < 0.) .AND. NVERB>5) THEN
   WRITE(ILUOUT,*) '  location of minimum:', MINLOC(PRCS(:,:,:)+PRVS(:,:,:))
   WRITE(ILUOUT,*) '  value of minimum   :', MINVAL(PRCS(:,:,:)+PRVS(:,:,:))
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','C2R2_ADJUST','')
 END IF
 !
 WHERE ( PRCS(:,:,:)+PRVS(:,:,:) < 0.)
diff --git a/src/MNH/eddyUV_fluxn.f90 b/src/MNH/eddyUV_fluxn.f90
index df001982b..5ee01d390 100644
--- a/src/MNH/eddyUV_fluxn.f90
+++ b/src/MNH/eddyUV_fluxn.f90
@@ -13,12 +13,10 @@
 !
 INTERFACE
 !
-      SUBROUTINE EDDYUV_FLUX_n (KMI,HLUOUT,KTCOUNT,PVM,PTHM,PRHODJ,PRHODREF,PPABSM,PRVS,PVU_FLUX_M)
+      SUBROUTINE EDDYUV_FLUX_n (KMI,KTCOUNT,PVM,PTHM,PRHODJ,PRHODREF,PPABSM,PRVS,PVU_FLUX_M)
 !
 !
 INTEGER,               INTENT(IN)    :: KMI   ! Model index
-CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
-                                                      ! model n
 INTEGER,                  INTENT(IN)    :: KTCOUNT  ! iteration count
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PVM
@@ -38,7 +36,7 @@ END INTERFACE
 END MODULE MODI_EDDYUV_FLUX_n
 
 !     #############################################################################################
-      SUBROUTINE EDDYUV_FLUX_n (KMI,HLUOUT,KTCOUNT,PVM,PTHM,PRHODJ,PRHODREF,PPABSM,PRVS,PVU_FLUX_M)
+      SUBROUTINE EDDYUV_FLUX_n (KMI,KTCOUNT,PVM,PTHM,PRHODJ,PRHODREF,PPABSM,PRVS,PVU_FLUX_M)
 !     #############################################################################################
 !!!
 !!
@@ -104,14 +102,12 @@ USE MODD_LUNIT_n
 USE MODI_TEMPORAL_DIST
 USE MODD_LATZ_EDFLX
 !
-USE MODE_IO_ll  ! For call abort
+USE MODE_MSG
 !
 IMPLICIT NONE
 !       0.01 Arguments declarations
 !
 INTEGER,                  INTENT(IN)    :: KMI   ! Model index
-CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
-                                                      ! model n
 INTEGER,                  INTENT(IN)    :: KTCOUNT  ! iteration count
 !
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ            ! dry density of
@@ -157,12 +153,12 @@ REAL                                 :: ZFHMW,ZPHI0
 REAL                                 :: JNEG
 REAL                                 :: JNEG2
 INTEGER                              :: JIDIFF
-INTEGER                              :: ILUOUT
 INTEGER                              :: JP
 INTEGER                              :: JNI ! Nb of point where neg Pv gradiebnt  depiected 
 INTEGER                              :: JNB ! nb of areas of pv gradioent neg
 INTEGER                              :: JPI  ! loop index
 INTEGER                              :: IRESP
+CHARACTER(LEN=100)                   :: YMSG
 !
 !-------------------------------------------------------------------------
 !
@@ -177,7 +173,6 @@ IKE=IKU-JPVEXT
 IIU = SIZE(XXHAT)
 IJU = SIZE(XYHAT)
 
-CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
 ! allocation of temporary array
 ! ---------------------------------------------------------
 ! 1D arrays X direction
@@ -329,17 +324,11 @@ DO JK=IKB,IKE
   !     Test  of JI_MIN_IMAX value
      IF ((JI_MAX(JP) > IIE) .OR. (JI_MAX(JP)<JI_MIN(JP)) & 
                            .OR. (JI_MAX(JP)<IIB)) THEN
-     WRITE(ILUOUT,*) "PB WITH JI_MAX, WONGG VALUE IN EDDYUV_FLUX"
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+       CALL PRINT_MSG(NVERB_FATAL,'GEN','EDDYUV_FLUX_n','wrong value of JI_MAX')
      END IF
 !
      IF ((JI_MIN(JP) > IIE) .OR. (JI_MIN(JP)<IIB)) THEN
-      WRITE(ILUOUT,*) "PB WITH JI_MIN, WORNG VALUE IN EDDYUV_FLUX"
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+       CALL PRINT_MSG(NVERB_FATAL,'GEN','EDDYUV_FLUX_n','wrong value of JI_MIN')
      END IF
 
      JIDIFF=JI_MAX(JP) - JI_MIN(JP)
@@ -380,12 +369,9 @@ DO JK=IKB,IKE
 
 !
  ! Control of ZKVU value
- IF (ZKVU(JI,IJB,JK) < 0.0 ) THEN 
-  WRITE(ILUOUT,FMT=*) "PB KUV<0"
-  WRITE(ILUOUT,FMT=*) JI,JK
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+ IF (ZKVU(JI,IJB,JK) < 0.0 ) THEN
+   WRITE(YMSG,*) 'ZKVU(',JI,',',IJB,',',JK,') < 0.0'
+   CALL PRINT_MSG(NVERB_FATAL,'GEN','EDDYUV_FLUX_n',YMSG)
  ENDIF           
 
  END DO ! end of loot JI
diff --git a/src/MNH/elec_trid.f90 b/src/MNH/elec_trid.f90
index 3a54b8f4e..380a38de3 100644
--- a/src/MNH/elec_trid.f90
+++ b/src/MNH/elec_trid.f90
@@ -190,6 +190,7 @@ USE MODD_PARAMETERS
 USE MODE_ll
 USE MODE_IO_ll
 USE MODE_FM
+USE MODE_MSG
 !
 !JUAN
 USE MODE_REPRO_SUM
@@ -622,9 +623,7 @@ IF (KIFAXX(10) /=  IIMAX_ll) THEN
       &'    OPERATOR REQUIRES THAT KIMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','ELEC_TRID','')
 END IF 
 !
 IF (HLBCX(1) /= 'CYCL') THEN
@@ -656,9 +655,7 @@ IF (.NOT. L2D) THEN
       &'    OPERATOR REQUIRES THAT KJMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','ELEC_TRID','')
  END IF 
  !
  !       8.3 top boundary conditions
diff --git a/src/MNH/elec_tridz.f90 b/src/MNH/elec_tridz.f90
index 1fb058770..7cf604d13 100644
--- a/src/MNH/elec_tridz.f90
+++ b/src/MNH/elec_tridz.f90
@@ -199,6 +199,7 @@ USE MODD_PARAMETERS
 USE MODE_ll
 USE MODE_IO_ll
 USE MODE_FM
+USE MODE_MSG
 !++cb - Z_SPLITTING
 USE MODE_SPLITTINGZ_ll , ONLY : GET_DIM_EXTZ_ll,GET_ORZ_ll,LWESTZ_ll,LSOUTHZ_ll
 !
@@ -750,9 +751,7 @@ IF (KIFAXX(10) /=  IIMAX_ll) THEN
       &'    OPERATOR REQUIRES THAT KIMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','ELEC_TRIDZ','')
 END IF 
 !
 IF (HLBCX(1) /= 'CYCL') THEN
@@ -784,9 +783,7 @@ IF (.NOT. L2D) THEN
       &'    OPERATOR REQUIRES THAT KJMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','ELEC_TRIDZ','')
  END IF 
  !
  !       8.3 top boundary conditions
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index 06ef3f5a0..2fb8a7241 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -94,11 +94,12 @@ USE MODD_IO_ll, ONLY : TFILEDATA
 USE MODD_PARAM_n, ONLY : CCLOUD
 USE MODD_PARAMETERS
 !
-USE MODE_ll
 USE MODE_FIELD, ONLY : TFIELDDATA, TYPEREAL
 USE MODE_GRIDPROJ
 USE MODE_IO_ll
+USE MODE_ll
 USE MODE_MODELN_HANDLER
+USE MODE_MSG
 !
 USE MODI_INI_BALLOON
 USE MODI_INI_AIRCRAFT
@@ -590,9 +591,7 @@ IF (TPFLYER%LAT==XUNDEF .OR.TPFLYER%LON==XUNDEF) THEN
   WRITE(ILUOUT,*) 'TPBALLOON%LON=',TPFLYER%LON
   WRITE(ILUOUT,*) 'Check your INI_BALLOON routine'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_AIRCRAFT_BALLOON','')
 END IF
 !
 CALL SM_XYHAT(PLATOR,PLONOR,       &
@@ -634,9 +633,7 @@ IF ( ANY(TPFLYER%SEGLAT(:)==XUNDEF) .OR. ANY(TPFLYER%SEGLON(:)==XUNDEF) ) THEN
   WRITE(ILUOUT,*) 'TPAIRCRAFT%SEGLON=',TPFLYER%SEGLON
   WRITE(ILUOUT,*) 'Check your INI_AIRCRAFT routine'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_AIRCRAFT_BALLOON','')
 END IF
 !
 ALLOCATE(TPFLYER%SEGX(TPFLYER%SEG+1))
@@ -654,9 +651,7 @@ IF ( ANY(TPFLYER%SEGTIME(:)==XUNDEF) ) THEN
   WRITE(ILUOUT,*) 'TPAIRCRAFT%SEGTIME=',TPFLYER%SEGTIME
   WRITE(ILUOUT,*) 'Check your INI_AIRCRAFT routine'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_AIRCRAFT_BALLOON','')
 END IF
 !
 !
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index 1643b0cc3..647b79fc9 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -12,7 +12,7 @@
       MODULE MODI_INI_BUDGET
 !     ###################### 
 INTERFACE
-      SUBROUTINE INI_BUDGET(KLUOUT, HLUOUT,PTSTEP,KSV,KRR,            &
+      SUBROUTINE INI_BUDGET(KLUOUT,PTSTEP,KSV,KRR,                    &
       ONUMDIFU,ONUMDIFTH,ONUMDIFSV,                                   &
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
@@ -20,7 +20,6 @@ INTERFACE
       HRAD,HDCONV,HSCONV,HTURB,HTURBDIM,HCLOUD                        )
 !
 INTEGER,         INTENT(IN) :: KLUOUT   ! Logical unit number for prints
-CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing
 REAL, INTENT(IN) :: PTSTEP              ! time step
 INTEGER, INTENT(IN) :: KSV              ! number of scalar variables
 INTEGER, INTENT(IN) :: KRR              ! number of moist variables
@@ -72,7 +71,7 @@ END MODULE MODI_INI_BUDGET
 !
 !
 !     #################################################################
-      SUBROUTINE INI_BUDGET(KLUOUT, HLUOUT,PTSTEP,KSV,KRR,            &
+      SUBROUTINE INI_BUDGET(KLUOUT,PTSTEP,KSV,KRR,                    &
       ONUMDIFU,ONUMDIFTH,ONUMDIFSV,                                   &
       OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR,             &
       OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & 
@@ -180,6 +179,7 @@ USE MODD_PARAM_LIMA, ONLY : OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI,   &
 !
 USE MODE_ll
 USE MODE_IO_ll
+USE MODE_MSG
 !
 IMPLICIT NONE
 !
@@ -187,7 +187,6 @@ IMPLICIT NONE
 !
 !
 INTEGER,         INTENT(IN) :: KLUOUT   ! Logical unit number for prints
-CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name of output listing
 REAL, INTENT(IN) :: PTSTEP              ! time step
 INTEGER, INTENT(IN) :: KSV              ! number of scalar variables
 INTEGER, INTENT(IN) :: KRR              ! number of moist variables
@@ -2585,9 +2584,7 @@ IF (CBUTYPE=='MASK') THEN
 END IF
 IF (GERROR) THEN
    !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_BUDGET','')
 ENDIF
 !-------------------------------------------------------------------------------
 !*       5.    ALLOCATE MEMORY FOR BUDGET STORAGE ARRAYS
diff --git a/src/MNH/ini_cpl.f90 b/src/MNH/ini_cpl.f90
index 610310756..adf7e31b1 100644
--- a/src/MNH/ini_cpl.f90
+++ b/src/MNH/ini_cpl.f90
@@ -438,9 +438,7 @@ IF (ICPLEND==NCPL_NBR .AND. NCPL_TIMES(NCPL_NBR,1) < KSTOP) THEN
   CALL SM_PRINT_TIME(TDTCUR,HLUOUT,YTITLE)
   WRITE(ILUOUT,*) 'XSEGLEN = ', XSEGLEN 
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')
 END IF
 ! save the right number of useful coupling files
 NCPL_NBR = ICPLEND - NCPL_CUR + 1
@@ -475,9 +473,7 @@ IF ( (IIMAX/=KIMAX_ll) .OR. (IJMAX/=KJMAX_ll)                      &
   WRITE(ILUOUT,*) 'AND IN THE COUPLING FILE :',TCPLFILE(NCPL_CUR)%TZFILE%CNAME
   WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_CPL','')
 END IF
 !
 !*      3.2   Initialize  the large scale sources
diff --git a/src/MNH/ini_lb.f90 b/src/MNH/ini_lb.f90
index 018de6791..54f92d9a8 100644
--- a/src/MNH/ini_lb.f90
+++ b/src/MNH/ini_lb.f90
@@ -150,7 +150,7 @@ USE MODD_PARAM_n
 USE MODE_FIELD,           ONLY: TFIELDDATA,TYPELOG,TYPEREAL
 USE MODE_FM
 USE MODE_FMREAD
-USE MODE_IO_ll,           ONLY: CLOSE_ll
+USE MODE_MSG
 !
 USE MODD_RAIN_C2R2_DESCR, ONLY: C2R2NAMES
 USE MODD_ICE_C1R3_DESCR,  ONLY: C1R3NAMES
@@ -327,11 +327,8 @@ CASE('READ')
       PLBXTKEM(:,:,:) = PLBXTKEMM(:,:,:)    
       PLBYTKEM(:,:,:) = PLBYTKEMM(:,:,:)
     ELSE
-      WRITE ( ILUOUT,*) 'PB TO INITIALIZE LBXTKES AND LBYTKES  '
 !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize LBXTKES and LBYTKES')
     ENDIF
   ELSE
     CALL IO_READ_FIELD(TPINIFILE,'HORELAX_TKE',GHORELAX_TKE)
@@ -435,11 +432,8 @@ IF(KSIZELBXR_ll  > 0 ) THEN
               PLBXRM(:,:,:,IRR)=PLBXRMM(:,:,:,IRR)
               WRITE(ILUOUT,*) 'PLBXRS  will be initialized to 0 for LBXR'//YC(JRR)//'M'
             ELSE
-              WRITE(ILUOUT,*) 'Pb to initialize PLBXRM for LBXR'//YC(JRR)//'M'
               !callabortstop
-              CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-              CALL ABORT
-              STOP
+              CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize PLBXRM for LBXR'//YC(JRR)//'M')
             ENDIF
         ELSE
           TZFIELD%CMNHNAME   = 'LBXR'//YC(JRR)//'M'
@@ -456,11 +450,8 @@ IF(KSIZELBXR_ll  > 0 ) THEN
               PLBYRM(:,:,:,IRR)=PLBYRMM(:,:,:,IRR)
               WRITE(ILUOUT,*) 'PLBYRS  will be initialized to 0 for LBYR'//YC(JRR)//'M'
             ELSE
-              WRITE(ILUOUT,*) 'Pb to initialize PLBYRM for LBYR'//YC(JRR)//'M'
               !callabortstop
-              CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-              CALL ABORT
-              STOP
+              CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize PLBYRM for LBYR'//YC(JRR)//'M')
             ENDIF
          ELSE
            TZFIELD%CMNHNAME   = 'LBYR'//YC(JRR)//'M'
@@ -530,11 +521,8 @@ IF (NSV_USER>0) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'PLXYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialze PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -552,11 +540,8 @@ IF (NSV_USER>0) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialze PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -591,11 +576,8 @@ IF (NSV_C2R2END>=NSV_C2R2BEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'C2R2 PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize C2R2 PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize C2R2 PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -613,11 +595,8 @@ IF (NSV_C2R2END>=NSV_C2R2BEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'C2R2 PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize C2R2 PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize C2R2 PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -652,11 +631,8 @@ IF (NSV_C1R3END>=NSV_C1R3BEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'C1R3 PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize C1R3 PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize C1R3 PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -674,11 +650,8 @@ IF (NSV_C1R3END>=NSV_C1R3BEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'C1R3 PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize C1R3 PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize C1R3 PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -717,11 +690,8 @@ IF (CCLOUD=='LIMA' ) THEN
                   PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                   WRITE(ILUOUT,*) 'CCN PLBXSVM   will be initialized to 0'
                 ELSE
-                  WRITE(ILUOUT,*) 'Pb to initialize CCN PLBXSVM '
 !callabortstop
-                  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                  CALL ABORT
-                  STOP
+                  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBXSVM')
                 ENDIF
               END IF
             END IF
@@ -739,11 +709,8 @@ IF (CCLOUD=='LIMA' ) THEN
                   PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                   WRITE(ILUOUT,*) 'CCN PLBYSVM   will be initialized to 0'
                 ELSE
-                  WRITE(ILUOUT,*) 'Pb to initialize CCN PLBYSVM '
 !callabortstop
-                  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                  CALL ABORT
-                  STOP
+                  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize CCN PLBYSVM')
                 ENDIF
               END IF
             END IF
@@ -779,11 +746,8 @@ IF (CCLOUD=='LIMA' ) THEN
                   PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                   WRITE(ILUOUT,*) 'IFN PLBXSVM   will be initialized to 0'
                 ELSE
-                  WRITE(ILUOUT,*) 'Pb to initialize IFN'
 !callabortstop
-                  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                  CALL ABORT
-                  STOP
+                  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN')
                 ENDIF
               END IF
             END IF
@@ -801,11 +765,8 @@ IF (CCLOUD=='LIMA' ) THEN
                   PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                   WRITE(ILUOUT,*) 'IFN PLBYSVM   will be initialized to 0'
                 ELSE
-                  WRITE(ILUOUT,*) 'Pb to initialize IFN'
 !callabortstop
-                  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                  CALL ABORT
-                  STOP
+                  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize IFN')
                 ENDIF
               END IF
             END IF
@@ -841,11 +802,8 @@ IF (NSV_ELECEND>=NSV_ELECBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'ELEC PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize ELEC PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize ELEC PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -862,11 +820,8 @@ IF (NSV_ELECEND>=NSV_ELECBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'ELEC PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize ELEC PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize ELEC PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -901,11 +856,8 @@ IF (NSV_CHGSEND>=NSV_CHGSBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Chemical PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize gas phase Chemical PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize gas phase chemical PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -923,11 +875,8 @@ IF (NSV_CHGSEND>=NSV_CHGSBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Chemical PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize gas phase Chemical PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize gas phase chemical PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -962,11 +911,8 @@ IF (NSV_CHACEND>=NSV_CHACBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Chemical PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize aqueous phase chemical PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aqueous phase chemical PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -984,11 +930,8 @@ IF (NSV_CHACEND>=NSV_CHACBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Chemical PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize aqueous phase chemical PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aqueous phase chemical PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1023,11 +966,8 @@ IF (NSV_CHICEND>=NSV_CHICBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Ice phase chemical PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize ice phase chemical PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize ice phase chemical PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1045,11 +985,8 @@ IF (NSV_CHICEND>=NSV_CHICBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Ice phase chemical PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Ice phase chemical PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize ice phase chemical PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1084,11 +1021,8 @@ IF (NSV_AEREND>=NSV_AERBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Aerosol PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Aerosol PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aerosol PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1106,11 +1040,8 @@ IF (NSV_AEREND>=NSV_AERBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Aerosol PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Aerosol PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aerosol PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1145,11 +1076,8 @@ IF (NSV_AERDEPEND>=NSV_AERDEPBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Aerosol PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Aerosol PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aerosol PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1167,11 +1095,8 @@ IF (NSV_AERDEPEND>=NSV_AERDEPBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Aerosol PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Aerosol PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize aerosol PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1206,11 +1131,8 @@ IF (NSV_DSTEND>=NSV_DSTBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Dust PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize dust PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize dust PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1228,11 +1150,8 @@ IF (NSV_DSTEND>=NSV_DSTBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Dust PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize dust PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize dust PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1267,11 +1186,8 @@ IF (NSV_DSTDEPEND>=NSV_DSTDEPBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Dust Desposition PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize dust PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize dust PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1291,9 +1207,7 @@ IF (NSV_DSTDEPEND>=NSV_DSTDEPBEG) THEN
               ELSE
                 WRITE(ILUOUT,*) 'Pb to initialize dust PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize dust PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1328,11 +1242,8 @@ IF (NSV_SLTEND>=NSV_SLTBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Sea Salt PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize sea salt PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize sea salt PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1350,11 +1261,8 @@ IF (NSV_SLTEND>=NSV_SLTBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Sea Salt PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize sea salt PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize sea salt PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1557,11 +1465,8 @@ IF (NSV_LNOXEND>=NSV_LNOXBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Linox PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Linox PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize linox PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1579,11 +1484,8 @@ IF (NSV_LNOXEND>=NSV_LNOXBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'Linox PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize Linox PLBYSVM '
 !calla bortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize linox PLBYSVM')
               ENDIF
             END IF
           END IF
@@ -1618,11 +1520,8 @@ IF (NSV_LGEND>=NSV_LGBEG) THEN
                 PLBXSVM(:,:,:,JSV)=PLBXSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'lagrangian PLBXSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize lagrangian PLBXSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize lagrangian PLBXSVM')
               ENDIF
             END IF
           END IF
@@ -1640,11 +1539,8 @@ IF (NSV_LGEND>=NSV_LGBEG) THEN
                 PLBYSVM(:,:,:,JSV)=PLBYSVMM(:,:,:,JSV)
                 WRITE(ILUOUT,*) 'lagrangian PLBYSVM   will be initialized to 0'
               ELSE
-                WRITE(ILUOUT,*) 'Pb to initialize lagrangian PLBYSVM '
 !callabortstop
-                CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-                CALL ABORT
-                STOP
+                CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_LB','problem to initialize lagrangian PLBYSVM')
               ENDIF
             END IF
           END IF
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 1ba26445a..831cd6bea 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -1493,7 +1493,7 @@ ENDIF
 !              ---------------------------
 !
 IF ( CBUTYPE /= "NONE" .AND. NBUMOD == KMI ) THEN
-  CALL INI_BUDGET(ILUOUT, HLUOUT,XTSTEP,NSV,NRR,                              &
+  CALL INI_BUDGET(ILUOUT,XTSTEP,NSV,NRR,                                      &
              LNUMDIFU,LNUMDIFTH,LNUMDIFSV,                                    &
              LHORELAX_UVWTH,LHORELAX_RV, LHORELAX_RC,LHORELAX_RR,             &
              LHORELAX_RI,LHORELAX_RS,LHORELAX_RG, LHORELAX_RH,LHORELAX_TKE,   &
diff --git a/src/MNH/ini_posprofilern.f90 b/src/MNH/ini_posprofilern.f90
index 0608f5764..e641527c7 100644
--- a/src/MNH/ini_posprofilern.f90
+++ b/src/MNH/ini_posprofilern.f90
@@ -88,9 +88,10 @@ USE MODD_CONF
 USE MODD_GRID
 USE MODD_RADIATIONS_n, ONLY: NAER
 !
-USE MODE_ll
-USE MODE_IO_ll
 USE MODE_GRIDPROJ
+USE MODE_IO_ll
+USE MODE_ll
+USE MODE_MSG
 !
 USE MODI_INI_PROFILER_N
 !
@@ -271,9 +272,7 @@ IF ( ANY(TPROFILER%LAT(:)==XUNDEF) .OR. ANY(TPROFILER%LON(:)==XUNDEF) ) THEN
   WRITE(ILUOUT,*) 'either LATitude or LONgitude segment'
   WRITE(ILUOUT,*) 'definiton is not complete.'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_INTERP_PROFILER_n','')
 END IF
 !
 TPROFILER%STEP  = MAX ( PTSTEP, TPROFILER%STEP )
diff --git a/src/MNH/ini_prog_var.f90 b/src/MNH/ini_prog_var.f90
index 572032f2a..778cf9472 100644
--- a/src/MNH/ini_prog_var.f90
+++ b/src/MNH/ini_prog_var.f90
@@ -103,6 +103,7 @@ END MODULE MODI_INI_PROG_VAR
 !
 USE MODD_CONF  ! declaration modules
 USE MODD_CONF_n
+USE MODD_DIM_n
 USE MODD_DYN_n
 USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_TURB_n
@@ -125,13 +126,13 @@ USE MODI_PGDFILTER
 USE MODI_CH_INIT_SCHEME_n
 USE MODI_CH_AER_INIT_SOA
 !
-USE MODE_POS
 USE MODE_FIELD,            ONLY : TFIELDDATA,TYPEREAL
 USE MODE_FM
+USE MODE_FMREAD
 USE MODE_IO_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST
-USE MODE_FMREAD
-USE MODD_DIM_n
+USE MODE_MSG
+USE MODE_POS
 !
 IMPLICIT NONE
 !
@@ -233,44 +234,29 @@ IF(PRESENT(HCHEMFILE)) THEN
   !
   CALL IO_READ_FIELD(TZCHEMFILE,'IMAX',IIMAX,IRESP)
   IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000)
-    WRITE(ILUOUT,*) 'IMAX',' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
    !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR','IMAX not found in the CHEM file '//TRIM(HCHEMFILE))
   END IF !IRESP
   !
   CALL IO_READ_FIELD(TZCHEMFILE,'JMAX',IJMAX,IRESP)
   IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000)
-    WRITE(ILUOUT,*) 'JMAX','NOT FOUND IN THE CHEM FILE ',HCHEMFILE
 !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR','JMAX not found in the CHEM file '//TRIM(HCHEMFILE))
   END IF !IRESP
   !
   CALL IO_READ_FIELD(TZCHEMFILE,'KMAX',IKMAX,IRESP)
   IF (IRESP/=0) THEN
-    WRITE(ILUOUT,FMT=9000)
-    WRITE(ILUOUT,*) 'KMAX','NOT FOUND IN THE CHEM FILE ',HCHEMFILE
 !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR','KMAX not found in the CHEM file '//TRIM(HCHEMFILE))
   END IF !IRESP
   IF ( (IIMAX/=(IIU_ll-2*JPHEXT)) .OR. (IJMAX/=(IJU_ll-2*JPHEXT))      &
                                   .OR. (IKMAX/=(IKU-2*JPVEXT)) ) THEN
-    WRITE(ILUOUT,FMT=9000)
     WRITE(ILUOUT,*) 'THE GRIDS ARE DIFFERENT IN THE OUTPUT FILE :'
     WRITE(ILUOUT,*) IIU_ll-2*JPHEXT,'*',IJU_ll-2*JPHEXT,'*',IKU-2*JPVEXT
     WRITE(ILUOUT,*) 'AND IN THE CHEM FILE :',HCHEMFILE
     WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX
     !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR','')
   END IF ! IIMAX
   IF (.NOT.LDUST) THEN
   ! Read scalars in chem file
@@ -325,11 +311,7 @@ IF(PRESENT(HCHEMFILE)) THEN
         WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
         CALL IO_READ_FIELD(TZCHEMFILE,TZFIELD,XSVT(:,:,:,JSV),IRESP)
         IF (IRESP/=0) THEN
-          WRITE(ILUOUT,FMT=9000)
-          WRITE(ILUOUT,*) TRIM(TZFIELD%CMNHNAME),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-          CALL ABORT
-          STOP
+          CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR',TRIM(TZFIELD%CMNHNAME)//' not found in the CHEM file '//TRIM(HCHEMFILE))
         END IF !IRESP
       END DO !JMOD
     ELSE  ! IMOMENTS diff 1
@@ -344,9 +326,8 @@ IF(PRESENT(HCHEMFILE)) THEN
           WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
           CALL IO_READ_FIELD(TZCHEMFILE,TZFIELD,XSVT(:,:,:,JSV),IRESP)
           IF (IRESP/=0) THEN
-            WRITE(ILUOUT,FMT=9000)
-            WRITE(ILUOUT,*) TRIM(TZFIELD%CMNHNAME),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-            STOP
+            CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR',TRIM(TZFIELD%CMNHNAME)//&
+                                             ' not found in the CHEM file '//TRIM(HCHEMFILE))
           END IF !IRESP
         END DO ! JMOM
       END DO !JMOD
@@ -379,11 +360,7 @@ IF(PRESENT(HCHEMFILE)) THEN
         WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
         CALL IO_READ_FIELD(TZCHEMFILE,TZFIELD,XSVT(:,:,:,JSV),IRESP)
         IF (IRESP/=0) THEN
-          WRITE(ILUOUT,FMT=9000)
-          WRITE(ILUOUT,*) TRIM(TZFIELD%CMNHNAME),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-          CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-          CALL ABORT
-          STOP
+          CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR',TRIM(TZFIELD%CMNHNAME)//' not found in the CHEM file '//TRIM(HCHEMFILE))
         END IF !IRESP
       END DO !JMOD
     ELSE  ! IMOMENTS
@@ -398,9 +375,7 @@ IF(PRESENT(HCHEMFILE)) THEN
           WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
           CALL IO_READ_FIELD(TZCHEMFILE,TZFIELD,XSVT(:,:,:,JSV),IRESP)
           IF (IRESP/=0) THEN
-            WRITE(ILUOUT,FMT=9000)
-            WRITE(ILUOUT,*) TRIM(TZFIELD%CMNHNAME),' NOT FOUND IN THE CHEM FILE ',HCHEMFILE
-            STOP
+            CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_PROG_VAR',TRIM(TZFIELD%CMNHNAME)//' not found in the CHEM file '//TRIM(HCHEMFILE))
           END IF !IRESP
         END DO ! JMOM
       END DO !JMOD
@@ -421,8 +396,7 @@ IF(PRESENT(HCHEMFILE)) THEN
       WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
       CALL IO_READ_FIELD(TZCHEMFILE,TZFIELD,XSVT(:,:,:,JSV),IRESP)
       IF (IRESP/=0) THEN
-        WRITE(ILUOUT,FMT=9000)
-        WRITE(ILUOUT,*) TRIM(TZFIELD%CMNHNAME),'NOT FOUND IN THE CHEM FILE ',HCHEMFILE
+        CALL PRINT_MSG(NVERB_WARNING,'GEN','INI_PROG_VAR',TRIM(TZFIELD%CMNHNAME)//' not found in the CHEM file '//TRIM(HCHEMFILE))
 !callabortstop
 !CALL ABORT
 !      STOP
@@ -494,7 +468,5 @@ NSIZELBXSV_ll =SIZE(XLBXSVM,1)
 NSIZELBYSV_ll =SIZE(XLBYSVM,2)
 !
 !-------------------------------------------------------------------------------
-9000  FORMAT(/,'FATAL ERROR IN INI_PROG_VAR : ',/, &
-             '--------------------------------------' )
 !
 END SUBROUTINE INI_PROG_VAR
diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90
index ec0e858ad..7ce7b8a22 100644
--- a/src/MNH/ini_segn.f90
+++ b/src/MNH/ini_segn.f90
@@ -306,12 +306,8 @@ ELSE IF (CPROGRAM=='DIAG  ') THEN
 !              -------------------
 !
 ELSE
-  WRITE(UNIT=ILUOUT,FMT=*) 'INI_SEG_n should not be called for CPROGRAM=',CPROGRAM
-  WRITE(UNIT=ILUOUT,FMT=*) '-> STOP'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','should not be called for CPROGRAM='//TRIM(CPROGRAM))
 ENDIF
 !
 !-------------------------------------------------------------------------------
@@ -332,11 +328,8 @@ IF (GFOUND) THEN
   READ(UNIT=ILUSEG,NML=NAM_LUNITn)
   CALL UPDATE_NAM_LUNITn
   IF (LEN_TRIM(CINIFILEPGD)==0 .AND. CSURF=='EXTE') THEN
-    WRITE(ILUOUT,*) 'Error in namelist NAM_LUNITn : you need to specify CINIFILEPGD'
     !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','error in namelist NAM_LUNITn: you need to specify CINIFILEPGD')
   ENDIF
 END IF
 
@@ -426,9 +419,7 @@ IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='SPAWN ') THEN
       WRITE(ILUOUT,*) 'You can not use it as initial file, only as coupling file'
       WRITE(ILUOUT,*) 'Run PREP_REAL_CASE with LCOUPLING=.FALSE.'
       !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','')
     ENDIF
   ENDIF
 END IF
@@ -438,9 +429,7 @@ END IF
   IF (IRESP /= 0) THEN
     WRITE(ILUOUT,FMT=9002) 'STORAGE_TYPE',IRESP
 !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SEG_n','')
   END IF
 IF (KMI == 1) THEN 
 ! Read the geometry kind 
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 34c6e4f93..2e3fe3424 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -238,9 +238,7 @@ IF (XALZBOT>=XZHAT(IKU) .AND. LVE_RELAX) THEN
   WRITE(ILUOUT,FMT=*) "                  but bottom of layer XALZBOT(",XALZBOT,")"
   WRITE(ILUOUT,FMT=*) "                  is upper than model top    (",XZHAT(IKU),")"
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
 END IF
 IF (LVE_RELAX) THEN
  IF (XALZBOT>=XZHAT(IKU-4) ) THEN
diff --git a/src/MNH/ini_surfstationn.f90 b/src/MNH/ini_surfstationn.f90
index eba99ef5f..ae8952c81 100644
--- a/src/MNH/ini_surfstationn.f90
+++ b/src/MNH/ini_surfstationn.f90
@@ -87,9 +87,10 @@ USE MODD_DYN_n
 USE MODD_CONF
 USE MODD_GRID
 !
-USE MODE_ll
-USE MODE_IO_ll
 USE MODE_GRIDPROJ
+USE MODE_IO_ll
+USE MODE_ll
+USE MODE_MSG
 !
 USE MODI_INI_STATION_N
 !
@@ -262,11 +263,9 @@ IF ( ANY(TSTATION%LAT(:)==XUNDEF) .OR. ANY(TSTATION%LON(:)==XUNDEF) ) THEN
   WRITE(ILUOUT,*) 'Error in station position '
   WRITE(ILUOUT,*) 'either LATitude or LONgitude segment'
   WRITE(ILUOUT,*) 'or I and J segment'
-  WRITE(ILUOUT,*) 'definiton is not complete.'
+  WRITE(ILUOUT,*) 'definition is not complete.'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SURFSTATION_n','')
 END IF
 !
 TSTATION%STEP  = MAX ( PTSTEP, TSTATION%STEP )
diff --git a/src/MNH/khko_notadjust.f90 b/src/MNH/khko_notadjust.f90
index 1f7fcfa24..9d0e422ef 100644
--- a/src/MNH/khko_notadjust.f90
+++ b/src/MNH/khko_notadjust.f90
@@ -115,6 +115,7 @@ USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL
 USE MODE_FM
 USE MODE_FMWRIT
 USE MODE_IO_ll
+USE MODE_MSG
 !
 USE MODI_BUDGET
 USE MODI_PROGNOS
@@ -225,9 +226,7 @@ IF (ANY(PRCS(:,:,:)+PRVS(:,:,:) < 0.) .AND. NVERB>5) THEN
   WRITE(ILUOUT,*) '  location of minimum:', MINLOC(PRCS(:,:,:)+PRVS(:,:,:))
   WRITE(ILUOUT,*) '  value of minimum   :', MINVAL(PRCS(:,:,:)+PRVS(:,:,:))
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','KHKO_NOTADJUST','')
 END IF
 !
 ZACT(:,:,:)   = PCCS(:,:,:)
@@ -304,7 +303,7 @@ IF( INUCT >= 1 ) THEN
   ENDDO
   !
   !Evaporation/Condensation/activation
-  CALL PROGNOS(HLUOUT,PTSTEP,ZZDZ,ZZLV,ZZCPH,ZPRES,ZRHOD,  &
+  CALL PROGNOS(PTSTEP,ZZDZ,ZZLV,ZZCPH,ZPRES,ZRHOD,  &
                 ZRR,ZTT,ZRV,ZRC,ZS0,ZCCN,ZCCL)
   !
 !1D array to 3D array
@@ -361,9 +360,7 @@ IF (ANY(PRCS(:,:,:)+PRVS(:,:,:) < 0.) .AND. NVERB>5) THEN
   WRITE(*,*) 'KHKO_NOTADJUST:  negative values of total water (reset to zero)'
   WRITE(*,*) '  location of minimum:', MINLOC(PRCS(:,:,:)+PRVS(:,:,:))
   WRITE(*,*) '  value of minimum   :', MINVAL(PRCS(:,:,:)+PRVS(:,:,:))
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','KHKO_NOTADJUST','')
 END IF
 !
 !number of activated aerosols
diff --git a/src/MNH/ls_coupling.f90 b/src/MNH/ls_coupling.f90
index 2f69dec70..833ab5a44 100644
--- a/src/MNH/ls_coupling.f90
+++ b/src/MNH/ls_coupling.f90
@@ -181,7 +181,6 @@ END MODULE MODI_LS_COUPLING
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
-USE MODE_FM
 !            ------------
 USE MODD_PARAMETERS
 USE MODD_CTURB
@@ -193,8 +192,11 @@ USE MODD_PASPOL
 #endif
 USE MODD_CH_MNHC_n
 !
+USE MODE_FM
 USE MODE_FMREAD
 USE MODE_IO_ll
+USE MODE_MSG
+!
 USE MODI_INI_LS
 USE MODI_INI_LB
 !
@@ -294,9 +296,7 @@ IF ( (IIMAX/=KIMAX_ll) .OR. (IJMAX/=KJMAX_ll)                    &
   WRITE(ILUOUT,*) 'AND IN THE COUPLING FILE :',TCPLFILE(NCPL_CUR)%TZFILE%CNAME
   WRITE(ILUOUT,*) IIMAX,'*',IJMAX,'*',IKMAX
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','LS_COUPLING','')
 END IF
 !
 !*      1.2  Read  new scalar Large Scale fields and update sources
diff --git a/src/MNH/mnhread_zs_dummyn.f90 b/src/MNH/mnhread_zs_dummyn.f90
index cd9e6339a..a22453d05 100644
--- a/src/MNH/mnhread_zs_dummyn.f90
+++ b/src/MNH/mnhread_zs_dummyn.f90
@@ -65,7 +65,6 @@ USE MODD_GRID_n,     ONLY : XZS
 USE MODD_GR_FIELD_n, ONLY : XSSO_STDEV, XSSO_ANISOTROPY, XSSO_DIRECTION, XSSO_SLOPE, &
                             XAVG_ZS, XSIL_ZS, XMIN_ZS, XMAX_ZS
 USE MODD_IO_ll,      ONLY : TFILEDATA
-USE MODD_LUNIT_n,    ONLY : CLUOUT
 USE MODD_PARAM_n,    ONLY : CSURF
 !
 USE MODI_READ_DUMMY_GR_FIELD_n
@@ -146,7 +145,7 @@ CALL IO_READ_FIELD(TPINIFILE,'SSO_STDEV',XSSO_STDEV(:,:))
 !*      3.     Dummy fields
 !              ------------
 !
-CALL READ_DUMMY_GR_FIELD_n(TPINIFILE,CLUOUT,1,IIU,1,IJU,.TRUE.)
+CALL READ_DUMMY_GR_FIELD_n(TPINIFILE,1,IIU,1,IJU,.TRUE.)
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index 1b573403b..f8816f40c 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -1196,7 +1196,7 @@ IF (IMI==1) THEN  ! On calcule les flus turb. comme preconise par PP
    IF ( LTH_FLX ) CALL EDDY_FLUX_n(IMI,KTCOUNT,XVT,XTHT,XRHODJ,XRTHS,XVTH_FLUX_M,XWTH_FLUX_M)
    !
    ! Momentum eddy fluxes
-   IF ( LUV_FLX ) CALL EDDYUV_FLUX_n(IMI,CLUOUT,KTCOUNT,XVT,XTHT,XRHODJ,XRHODREF,XPABSM,XRVS,XVU_FLUX_M)
+   IF ( LUV_FLX ) CALL EDDYUV_FLUX_n(IMI,KTCOUNT,XVT,XTHT,XRHODJ,XRHODREF,XPABSM,XRVS,XVU_FLUX_M)
 
 ELSE
    ! TEST pour maille infèrieure à 20km ? 
diff --git a/src/MNH/pressure.f90 b/src/MNH/pressure.f90
index c6a6cb443..4357eb147 100644
--- a/src/MNH/pressure.f90
+++ b/src/MNH/pressure.f90
@@ -13,7 +13,7 @@ MODULE MODI_PRESSURE
 !
 INTERFACE
 !
-      SUBROUTINE PRESSURE(OCLOSE_OUT,HFMFILE,HLUOUT,                       &
+      SUBROUTINE PRESSURE(HLUOUT,                                          &
       HLBCX,HLBCY,HPRESOPT,KITR,OITRADJ,KTCOUNT,PRELAX,KMI,                &
       PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOM,               &
       PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,PPABSM,                    &
@@ -23,10 +23,6 @@ INTERFACE
 !
 IMPLICIT NONE
 !
-LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
-                                                      ! file opening
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
 CHARACTER (LEN=*), DIMENSION(:), INTENT(IN) :: HLBCX    ! x-direction LBC type
@@ -108,7 +104,7 @@ END INTERFACE
 !
 END MODULE MODI_PRESSURE
 !     ######################################################################
-      SUBROUTINE PRESSURE(OCLOSE_OUT,HFMFILE,HLUOUT,                       &
+      SUBROUTINE PRESSURE(HLUOUT,                                          &
       HLBCX,HLBCY,HPRESOPT,KITR,OITRADJ,KTCOUNT,PRELAX,KMI,                &
       PRHODJ,PDXX,PDYY,PDZZ,PDZX,PDZY,PDXHATM,PDYHATM,PRHOM,               &
       PAF,PBF,PCF,PTRIGSX,PTRIGSY,KIFAXX,KIFAXY,PPABSM,                    &
@@ -237,10 +233,6 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
-LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
-                                                      ! file opening
-CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
-                                                      ! FM-file
 CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
                                                       ! model n
   CHARACTER (LEN=*), DIMENSION(:), INTENT(IN) :: HLBCX    ! x-direction LBC type
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index bc0de8e2c..e714f89d1 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -247,6 +247,7 @@ USE MODI_BUDGET
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODE_ll
 USE MODE_FM
+USE MODE_MSG
 !JUANZ
 USE MODI_SUM_ll , ONLY : GMAXLOC_ll
 USE MODD_DYN_n  , ONLY : LRES, XRES
@@ -392,9 +393,7 @@ IF ( ( MIN(IIMAX_ll,IJMAX_ll) < NPROC  ) .AND. ( HPRESOPT /= 'ZRESI' ) ) THEN
    WRITE(UNIT=ILUOUT,FMT=*) 'ERROR IN PRESSUREZ:: YOU WANT TO USE TO MANY PROCESSOR WITHOUT CPRESOPT="ZRESI" '
    WRITE(UNIT=ILUOUT,FMT=*) 'MIN(IIMAX_ll,IJMAX_ll)=',MIN(IIMAX_ll,IJMAX_ll),' < NPROC =', NPROC
    WRITE(UNIT=ILUOUT,FMT=*) 'YOU HAVE TO SET CPRESOPT="ZRESI => JOB ABORTED '
-   CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-   CALL ABORT
-   STOP
+   CALL PRINT_MSG(NVERB_FATAL,'GEN','PRESSUREZ','')
 ENDIF
 CALL GET_PHYSICAL_ll(IIB,IJB,IIE,IJE)
 CALL GET_DIM_EXT_ll('B',IIU,IJU)
diff --git a/src/MNH/prognos.f90 b/src/MNH/prognos.f90
index baa284470..8ed96911c 100644
--- a/src/MNH/prognos.f90
+++ b/src/MNH/prognos.f90
@@ -8,10 +8,8 @@
 !
 INTERFACE
 !
-SUBROUTINE PROGNOS(HLUOUT,PDT,PDZ,PLV,PCPH,PPRES,PRHOD,PRR,PTT,PRV,PRC,PS0,PCN,PCL)
+SUBROUTINE PROGNOS(PDT,PDZ,PLV,PCPH,PPRES,PRHOD,PRR,PTT,PRV,PRC,PS0,PCN,PCL)
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
-                                                    ! model n
 REAL,                     INTENT(IN)    :: PDT
 REAL, DIMENSION(:),       INTENT(IN)    :: PPRES
 REAL, DIMENSION(:),       INTENT(IN)    :: PDZ
@@ -33,7 +31,7 @@ END INTERFACE
 END MODULE MODI_PROGNOS
 !
 !     ###################################################################################
-      SUBROUTINE PROGNOS(HLUOUT,PDT,PDZ,PLV,PCPH,PPRES,PRHOD,PRR,PTT,PRV,PRC,PS0,PCN,PCL)
+      SUBROUTINE PROGNOS(PDT,PDZ,PLV,PCPH,PPRES,PRHOD,PRR,PTT,PRV,PRC,PS0,PCN,PCL)
 !     ###################################################################################
 !
 !!****  * -  compute pseudo-prognostic of supersaturation according to Thouron
@@ -65,10 +63,13 @@ END MODULE MODI_PROGNOS
 !*       0.    DECLARATIONS
 !
 USE MODD_CST
-USE MODD_RAIN_C2R2_KHKO_PARAM
 USE MODD_PARAM_C2R2
-USE MODI_GAMMA
+USE MODD_RAIN_C2R2_KHKO_PARAM
+!
 USE MODE_IO_ll
+USE MODE_MSG
+!
+USE MODI_GAMMA
 !
 IMPLICIT NONE
 !
@@ -76,8 +77,6 @@ IMPLICIT NONE
 !
 !
 !
-CHARACTER(LEN=*),         INTENT(IN)    :: HLUOUT   ! Output-listing name for
-                                                    ! model n
 REAL,                     INTENT(IN)    :: PDT
 REAL, DIMENSION(:),       INTENT(IN)    :: PPRES
 REAL, DIMENSION(:),       INTENT(IN)    :: PDZ
@@ -109,7 +108,8 @@ REAL, DIMENSION(SIZE(PRHOD,1))   :: ZFLAG_ACT   !Flag for activation
 !
 INTEGER                          :: IRESP      ! Return code of FM routines
 INTEGER                          :: ILUOUT     ! Logical unit of output listing
-
+CHARACTER(LEN=100)               :: YMSG
+!
 !minimum radius of cloud droplet
 AER_RAD=1.0E-6
 !
@@ -195,10 +195,8 @@ ZRVSAT2(:)=(XMV / XMD)*ZZW1(:)/(PPRES(:)-ZZW1(:))
 ZTT2_TEMP(:)=PPRES(:)*((((XMV / XMD)/ZRVSAT2(:))+1.0)**(-1D0))
 !ZTT2<--T' de es(T')
 IF (MINVAL(ZTT2_TEMP).LT.0.0) THEN
-  PRINT*,'ZTT2_TEMP',MINVAL(ZTT2_TEMP),MINLOC(ZTT2_TEMP)
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  WRITE(YMSG,*) 'ZTT2_TEMP',MINVAL(ZTT2_TEMP),MINLOC(ZTT2_TEMP)
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','PROGNOS',YMSG)
 ENDIF
 !
 ZTT2_TEMP(:)=LOG(ZZW1(:)/610.8)
diff --git a/src/MNH/read_dummy_gr_fieldn.f90 b/src/MNH/read_dummy_gr_fieldn.f90
index 2a65668c5..b10f715d3 100644
--- a/src/MNH/read_dummy_gr_fieldn.f90
+++ b/src/MNH/read_dummy_gr_fieldn.f90
@@ -14,16 +14,13 @@ MODULE MODI_READ_DUMMY_GR_FIELD_n
 !
 INTERFACE
 !
-      SUBROUTINE READ_DUMMY_GR_FIELD_n(TPINIFILE,HLUOUT,                    &
-                                       KIINF,KISUP,KJINF,KJSUP,             &
-                                       OREAD_ALL                            )
+      SUBROUTINE READ_DUMMY_GR_FIELD_n(TPINIFILE,KIINF,KISUP,KJINF,KJSUP,OREAD_ALL)
 !
 USE MODD_IO_ll, ONLY : TFILEDATA
 !
 !*       0.1   declarations of arguments
 !
 TYPE(TFILEDATA),  INTENT(IN)  :: TPINIFILE    ! Initial file
-CHARACTER(LEN=*), INTENT(IN)  :: HLUOUT       ! Name for output-listing of nested models
 INTEGER,          INTENT(IN)  :: KIINF,KISUP  ! Lower and upper Dimensions in x direction for working window
 INTEGER,          INTENT(IN)  :: KJINF,KJSUP  ! Lower and upper dimensions in y direction for working window
 LOGICAL,          INTENT(IN)  :: OREAD_ALL    ! Flag to read the entire 2D fields in the file.
@@ -40,11 +37,9 @@ END MODULE MODI_READ_DUMMY_GR_FIELD_n
 !
 !
 !
-!     #######################################################################
-      SUBROUTINE READ_DUMMY_GR_FIELD_n(TPINIFILE,HLUOUT,                    &
-                                       KIINF,KISUP,KJINF,KJSUP,             &
-                                       OREAD_ALL                            )
-!     #######################################################################
+!     #############################################################################
+      SUBROUTINE READ_DUMMY_GR_FIELD_n(TPINIFILE,KIINF,KISUP,KJINF,KJSUP,OREAD_ALL)
+!     #############################################################################
 !
 !!****  *READ_DUMMY_GR_FIELD_n* - routine to read dummy surface fields
 !!
@@ -83,21 +78,19 @@ END MODULE MODI_READ_DUMMY_GR_FIELD_n
 !*       0.    DECLARATIONS
 !
 USE MODD_DUMMY_GR_FIELD_n
-USE MODE_FIELD, ONLY : TFIELDDATA,TYPEINT,TYPEREAL
+USE MODE_FIELD,      ONLY : TFIELDDATA,TYPEINT,TYPEREAL
 USE MODD_GRID_n
-USE MODD_IO_ll, ONLY : TFILEDATA
-USE MODD_PARAMETERS
+USE MODD_IO_ll,      ONLY : TFILEDATA
+USE MODD_PARAMETERS, ONLY : JPHEXT, NMNHNAMELGTMAX
 !
 USE MODE_FMREAD
-USE MODE_FM
-USE MODE_IO_ll
+USE MODE_MSG
 !
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
 !
 TYPE(TFILEDATA),  INTENT(IN)  :: TPINIFILE    ! Initial file
-CHARACTER(LEN=*), INTENT(IN)  :: HLUOUT       ! Name for output-listing of nested models
 INTEGER,          INTENT(IN)  :: KIINF,KISUP  ! Lower and upper Dimensions in x direction for working window
 INTEGER,          INTENT(IN)  :: KJINF,KJSUP  ! Lower and upper dimensions in y direction for working window
 LOGICAL,          INTENT(IN)  :: OREAD_ALL    ! Flag to read the entire 2D fields in the file.
@@ -108,7 +101,6 @@ INTEGER             :: IRESP       ! File management
 CHARACTER (LEN=NMNHNAMELGTMAX) :: YRECFM ! variables
 CHARACTER (LEN=20 ) :: YSTRING20   ! string
 CHARACTER (LEN=3  ) :: YSTRING03   ! string
-INTEGER             :: ILUOUT      ! Unit number for prints
 INTEGER             :: JDUMMY      ! Loop index for cover data
 !
 INTEGER             :: IMASDEV ! masdev used for creation of input FM file
@@ -124,8 +116,6 @@ TYPE(TFIELDDATA)                  :: TZFIELD
 !
 !-------------------------------------------------------------------------------
 !
-CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-!
 !*       1..   TEST MASDEV VERSION OF INPUT FILE
 !              ---------------------------------
 !
@@ -185,9 +175,7 @@ IF (IMASDEV>=40) THEN
   !
   IF (IRESP/=0) THEN
     !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_DUMMY_GR_FIELD_n','problem when reading DUMMY_GR_NBR')
   ENDIF
 ELSE
   NDUMMY_GR_NBR = 0
@@ -217,9 +205,7 @@ DO JDUMMY=1,NDUMMY_GR_NBR
   !
   IF (IRESP/=0) THEN
     !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_DUMMY_GR_FIELD_n','problem when reading '//TRIM(TZFIELD%CMNHNAME))
   ENDIF
   XDUMMY_GR_FIELDS(:,:,JDUMMY) = ZWORK(IIINF:IISUP,IJINF:IJSUP)
   !
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index fdea69147..9f2ed142f 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -800,9 +800,7 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT=*) 'SET CSUBG_AUCV TO "CLFR" or "NONE"  OR CCLOUD TO "ICE3"'
 !
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF
 !
   CASE ( 'ICE3' )
@@ -872,9 +870,7 @@ SELECT CASE ( CCLOUD )
          &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_C2R2", &
          &" YOU HAVE TO FILL HPARAM_CCN and HINI_CCN ")')
  !callabortstop
-        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-        CALL ABORT
-        STOP
+        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF
     IF (HCLOUD == 'NONE') THEN
       CGETCLOUD = 'SKIP'
@@ -891,9 +887,7 @@ SELECT CASE ( CCLOUD )
         &" SCHEME BUT YOU WERE USING THE ICE3 SCHEME PREVIOUSLY.",/,          &
         &" AS THIS IS A LITTLE BIT STUPID IT IS NOT AUTHORIZED !!!")')
  !callabortstop
-        CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-        CALL ABORT
-        STOP
+        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
       END IF
     ELSE
       CGETCLOUD = 'READ' ! This is automatically done
@@ -949,9 +943,7 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE.'
       WRITE(UNIT=ILUOUT,FMT=*) 'SET LSUBG_COND TO FALSE OR CCLOUD TO "REVE", "KESS"' 
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF
 !
     IF ( CEFRADL /= 'C2R2') THEN
@@ -1034,9 +1026,7 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LSUBG_COND '
       WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "REVE", "KESS" '
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF 
 !
     IF ( XALPHAC /= 3.0 .OR. XNUC /= 2.0) THEN
@@ -1057,27 +1047,21 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LUSECHEM '
       WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF 
     IF (LDUST )  THEN
       WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND DUSTS '
       WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LDUST '
       WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF   
   IF (LSALT )  THEN
       WRITE(UNIT=ILUOUT,FMT=*) 'YOU WANT TO USE BOTH LIMA MICROPHYS. SCHEME AND SEA SALTS '
       WRITE(UNIT=ILUOUT,FMT=*) 'THIS IS NOT YET AVAILABLE. SET LSALT '
       WRITE(UNIT=ILUOUT,FMT=*) 'TO FALSE OR CCLOUD TO "ICE3" '
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF 
 !
 END SELECT
@@ -1114,9 +1098,7 @@ IF (LUSECHAQ.AND.(.NOT.LUSECHEM))  THEN
   WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHEM TO TRUE IF YOU WANT REALLY USE CHEMISTRY' 
   WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHAQ TO FALSE IF YOU DO NOT WANT USE IT' 
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 IF (LUSECHAQ.AND.(.NOT.LUSERC).AND.CPROGRAM=='MESONH')  THEN
   WRITE(UNIT=ILUOUT,FMT=9003) KMI
@@ -1163,9 +1145,7 @@ IF (LUSECHIC.AND.(.NOT.LUSECHAQ))  THEN
   WRITE(UNIT=ILUOUT,FMT=*) 'SET LUSECHAQ TO TRUE IF YOU WANT REALLY USE CLOUD CHEMISTRY'
   WRITE(UNIT=ILUOUT,FMT=*) 'OR SET LUSECHIC TO FALSE IF YOU DO NOT WANT USE IT'
 !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 IF ((LUSECHIC).AND.(LCH_RET_ICE)) THEN
   WRITE(UNIT=ILUOUT,FMT=9003) KMI
@@ -1423,9 +1403,7 @@ IF(NMODEL_CLOUD==KMI .AND. CTURBLEN_CLOUD/='NONE') THEN
                  &   "LENGTH COMPUTATION: XCEI_MIN=",E9.3,", XCEI_MAX=",E9.3)')&
                  XCEI_MIN,XCEI_MAX
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 END IF
 !
@@ -1644,9 +1622,7 @@ IF (LDUST) THEN
     WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF DUST IS ONLY CODED FOR THE",/,&
          & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF  
 
    IF (ODEPOS_DST(KMI) ) THEN
@@ -1665,9 +1641,7 @@ IF (LDUST) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT='("DUST MODES MUST BE BETWEEN 1 and 3 ")') 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF     
   IF(.NOT.ALLOCATED(CDUSTNAMES)) THEN
     IMOMENTS = (NSV_DSTEND - NSV_DSTBEG +1 )/NMODE_DST
@@ -1729,9 +1703,7 @@ IF (LSALT) THEN
     WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF SEA SALT AEROSOLS IS ONLY CODED FOR THE",/,&
          & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF  
 
    IF (ODEPOS_SLT(KMI) ) THEN
@@ -1749,9 +1721,7 @@ IF (LSALT) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT='("SALT MODES MUST BE BETWEEN 1 and 3 ")') 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF     
   IF(.NOT.ALLOCATED(CSALTNAMES)) THEN
     IMOMENTS = (NSV_SLTEND - NSV_SLTBEG +1 )/NMODE_SLT
@@ -1812,9 +1782,7 @@ IF (LORILAM) THEN
     WRITE(UNIT=ILUOUT,FMT='("ERROR: WET DEPOSITION OF ORILAM AEROSOLS IS ONLY CODED FOR THE",/,&
          & "MICROPHYSICAL SCHEME as ICE3, ICE4, KESS, KHKO and C2R2")') 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF  
 
    IF (ODEPOS_AER(KMI) ) THEN
@@ -1929,18 +1897,14 @@ IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
     WRITE(UNIT=ILUOUT,FMT=*) 'the SMSH parametrisation of LW optical properties for cloud ice'
     WRITE(UNIT=ILUOUT,FMT=*) '(COPILW) can not be used with RRTM radiation scheme'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   ENDIF
   IF(CLW == 'MORC' .AND. COPWLW == 'LILI') THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT=*) 'the LILI parametrisation of LW optical properties for cloud water'
     WRITE(UNIT=ILUOUT,FMT=*) '(COPWLW) can not be used with MORC radiation scheme'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   ENDIF
   IF( .NOT. LSUBG_COND) THEN
     WRITE(UNIT=ILUOUT,FMT=9000) KMI
@@ -1967,9 +1931,7 @@ IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
     WRITE(UNIT=ILUOUT,FMT=*) 'XDTRAD_CLONLY = XDTRAD and LCLEAR_SKY = FALSE'
 !
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
   IF( XDTRAD_CLONLY > XDTRAD ) THEN
@@ -1978,9 +1940,7 @@ IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
     &" XDTRAD SHOULD BE LARGER THAN XDTRAD_CLONLY                      ")')
 !
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
   IF(( XDTRAD < XTSTEP ).OR. ( XDTRAD_CLONLY < XTSTEP )) THEN
@@ -1989,9 +1949,7 @@ IF( CRAD == 'ECMW' .AND. CPROGRAM=='MESONH' ) THEN
     &" IS MORE FREQUENT THAN THE TIME STEP SO ADJUST XDTRAD OR XDTRAD_CLONLY ")')
 !
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 END IF
 !
@@ -2017,9 +1975,7 @@ IF ( (CDCONV /= 'KAFR') .AND. &
     &"CONVECTIVE TRANSPORT OF TRACERS BUT  IT CAN ONLY",&
     &"BE USED FOR THE KAIN FRITSCH SCHEME ")')
  !callabortstop
-   CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-   CALL ABORT
-   STOP
+   CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 !
 SELECT CASE ( CDCONV )
@@ -2090,9 +2046,7 @@ SELECT CASE ( CSCONV )
       &"IT IS NOT POSSIBLE")')
 !
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
     END IF
 END SELECT
 !
@@ -2124,18 +2078,14 @@ IF (KMI == 1) THEN
     WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 1D MODEL VERSION WITH NON-CYCL",&
                 & "CLBCX OR CLBCY VALUES")')
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
   IF (L2D.AND.(CLBCY(1)/='CYCL'.AND.CLBCY(2)/='CYCL')) THEN
     WRITE(UNIT=ILUOUT,FMT=9003) KMI
     WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2D MODEL VERSION WITH NON-CYCL",&
                 & " CLBCY VALUES")')
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
   !
  IF ( (.NOT. LCARTESIAN) .AND. ( LCORIO) .AND. (.NOT. LGEOST_UV_FRC) ) THEN
@@ -2170,9 +2120,7 @@ IF ( HEQNSYS /= CEQNSYS ) THEN
   WRITE(ILUOUT,FMT=*) 'FOR THE RUN YOU PLAN TO USE ',CEQNSYS
   WRITE(ILUOUT,FMT=*) 'THIS CAN LEAD TO A NUMERICAL EXPLOSION IN THE FIRST TIME STEPS'
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 !
 !        3.9  Numerical schemes
@@ -2183,9 +2131,7 @@ IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. &
    WRITE(UNIT=ILUOUT,FMT='("CEN4TH SCHEME HAS TO BE USED WITH ",&
     &"CTEMP_SCHEME = LEFR of RKC4 ONLY")')   
  !callabortstop
-   CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-   CALL ABORT
-   STOP
+   CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 !
 IF ( (CUVW_ADV_SCHEME == 'WENO_K') .AND. LNUMDIFU ) THEN
@@ -2242,9 +2188,7 @@ IF ( LFORCING ) THEN
     WRITE(ILUOUT,FMT=*) 'TOGETHER WITH A GEOSTROPHIC FORCING'
     WRITE(ILUOUT,FMT=*) 'CHECK SWITCHES:  LRELAX_UV_FRC, LGEOST_UV_FRC'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
   IF ( CRELAX_HEIGHT_TYPE.NE."FIXE" .AND. CRELAX_HEIGHT_TYPE.NE."THGR" ) THEN
@@ -2252,9 +2196,7 @@ IF ( LFORCING ) THEN
     WRITE(ILUOUT,FMT=*) 'CRELAX_HEIGHT_TYPE MUST BE EITHER "FIXE" OR "THGR"'
     WRITE(ILUOUT,FMT=*) 'BUT IT IS "', CRELAX_HEIGHT_TYPE, '"'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
   IF ( .NOT.LCORIO .AND. LGEOST_UV_FRC ) THEN
@@ -2262,17 +2204,13 @@ IF ( LFORCING ) THEN
     WRITE(ILUOUT,FMT=*) 'YOU CANNOT HAVE A GEOSTROPHIC FORCING WITHOUT'
     WRITE(ILUOUT,FMT=*) 'ACTIVATING LCORIOLIS OPTION'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
   IF ( LPGROUND_FRC ) THEN
     WRITE(ILUOUT,FMT=*) 'SURFACE PRESSURE FORCING NOT YET IMPLEMENTED'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 !
 END IF
@@ -2283,9 +2221,7 @@ IF (LTRANS .AND. .NOT. LFLAT ) THEN
     WRITE(ILUOUT,FMT=*) 'BUT NOT IN THE FLAT TERRAIN CASE:'
     WRITE(ILUOUT,FMT=*) 'THIS IS NOT ALLOWED ACTUALLY'
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP 1
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 !
 !*       4.4  Check the coherence between the LUSERn and LHORELAX
@@ -2530,9 +2466,7 @@ IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP   .OR.  &
   WRITE(ILUOUT,FMT=*) "NRIMY=",NRIMY
   WRITE(ILUOUT,FMT=*) "L2D=",L2D
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 ! 
 IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
@@ -2555,9 +2489,7 @@ IF ((LHORELAX_UVWTH  .OR. LHORELAX_SVPP  .OR.   &
   WRITE(ILUOUT,FMT=*) 'FOR A NESTED MODEL BUT THE COUPLING IS ALREADY DONE' 
   WRITE(ILUOUT,FMT=*) 'BY THE GRID NESTING. CHANGE LHORELAX TO FALSE'
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 ! 
 IF (KMI==1) THEN
@@ -2760,9 +2692,7 @@ IF ( CPRESOPT == 'ZRESI' .AND. CSPLIT /= 'BSPLITTING' ) THEN
   WRITE(UNIT=ILUOUT,FMT='("Paralleliez in Z solver CPRESOPT=ZRESI need also CSPLIT=BSPLITTING ")')
   WRITE(ILUOUT,FMT=*) ' ERROR you have to set also CSPLIT=BSPLITTING '
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
 END IF
 !
 IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN
@@ -2778,8 +2708,7 @@ IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN
     WRITE(ILUOUT,FMT=*) '###############'
     WRITE(ILUOUT,FMT=*) 
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n','')
   END IF
 ELSE
   CINIFILEPGD = ''
diff --git a/src/MNH/trid.f90 b/src/MNH/trid.f90
index d64ef5c73..19578b710 100644
--- a/src/MNH/trid.f90
+++ b/src/MNH/trid.f90
@@ -177,6 +177,7 @@ USE MODD_PARAMETERS
 USE MODE_ll
 USE MODE_IO_ll
 USE MODE_FM
+USE MODE_MSG
 !
 !JUAN
 USE MODE_REPRO_SUM
@@ -593,9 +594,7 @@ IF (KIFAXX(10) /=  IIMAX_ll) THEN
       &'    OPERATOR REQUIRES THAT KIMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','TRID','')
 END IF 
 !
 IF (HLBCX(1) /= 'CYCL') THEN
@@ -627,9 +626,7 @@ IF (.NOT. L2D) THEN
       &'    OPERATOR REQUIRES THAT KJMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','TRID','')
  END IF 
  !
  !
diff --git a/src/MNH/tridz.f90 b/src/MNH/tridz.f90
index 192770486..9815bef4b 100644
--- a/src/MNH/tridz.f90
+++ b/src/MNH/tridz.f90
@@ -185,6 +185,7 @@ USE MODD_PARAMETERS
 USE MODE_ll
 USE MODE_IO_ll
 USE MODE_FM
+USE MODE_MSG
 !JUAN P1/P2 SPLITTING
 USE MODE_SPLITTINGZ_ll , ONLY : GET_DIM_EXTZ_ll,GET_ORZ_ll,LWESTZ_ll,LSOUTHZ_ll
 !JUAN
@@ -714,9 +715,7 @@ IF (KIFAXX(10) /=  IIMAX_ll) THEN
       &'    OPERATOR REQUIRES THAT KIMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','TRIDZ','')
 END IF 
 !
 IF (HLBCX(1) /= 'CYCL') THEN
@@ -748,9 +747,7 @@ IF (.NOT. L2D) THEN
       &'    OPERATOR REQUIRES THAT KJMAX MUST BE FACTORIZABLE'         ,/,&
       & '         AS A PRODUCT OF POWERS OF 2, 3 AND 5.')")
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','TRIDZ','')
  END IF 
  !
  !
diff --git a/src/MNH/write_seriesn.f90 b/src/MNH/write_seriesn.f90
index 8730b9316..0ae22bb9c 100644
--- a/src/MNH/write_seriesn.f90
+++ b/src/MNH/write_seriesn.f90
@@ -71,15 +71,17 @@ END MODULE MODI_WRITE_SERIES_n
 !*    0. Declaration
 !     --------------
 ! 
+USE MODD_IO_ll, ONLY: NGEN_VERB,TFILEDATA
+USE MODD_PARAMETERS
 USE MODD_SERIES
 USE MODD_SERIES_n
-USE MODD_CONF, ONLY: NVERB
-USE MODD_PARAMETERS
-USE MODD_IO_ll, ONLY: TFILEDATA
-USE MODI_WRITE_DIACHRO
-USE MODI_GATHER_ll
-USE MODE_ll
+!
 USE MODE_IO_ll
+USE MODE_ll
+USE MODE_MSG
+!
+USE MODI_GATHER_ll
+USE MODI_WRITE_DIACHRO
 !
 IMPLICIT NONE
 !
@@ -108,19 +110,18 @@ REAL, DIMENSION(:,:), ALLOCATABLE         :: ZVAR2D,ZWORK2D
 REAL, DIMENSION(:,:,:), ALLOCATABLE       :: ZVAR3D,ZVAR3D_ll
 REAL, DIMENSION(:,:,:,:,:,:), ALLOCATABLE :: ZSERIES3_ll
 INTEGER :: IKMAX
-INTEGER  :: ILUOUT ! Logical unit number for output-listing
 INTEGER  :: IRESP   ! Return code of FM-routines
 INTEGER  :: INFO_ll   ! Return code of FM-routines
 INTEGER :: ISER,INAV
 REAL :: ZSIZEHB
 LOGICAL :: GICP,GJCP,GKCP ! compression flags along the 3 directions
+CHARACTER(LEN=100) :: YMSG
 !----------------------------------------------------------------------------
 !
 !*    1.     INITIALIZATION
 !            --------------
 !
-CALL FMLOOK_ll(HLUOUT,HLUOUT,ILUOUT,IRESP)
-IF (NVERB>=5) WRITE(ILUOUT,*) 'WRITE_SERIESn: beginning'
+IF (NGEN_VERB>=NVERB_DEBUG) CALL PRINT_MSG(NVERB_DEBUG,'GEN','WRITE_SERIES_n','beginning')
 !
 CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) 
 IKMAX=SIZE(XSSERIES2,3)
@@ -134,11 +135,9 @@ IIB_ll = 1 + JPHEXT
 IIE_ll = IIMAX_ll + JPHEXT
 !
 IF (LDOSERIES .AND. (NSNBSTEPT.NE. NSCOUNTD)) THEN
-  WRITE(ILUOUT,*) 'WRITE_SERIESn: NSNBSTEPT .NE. NSCOUNTD ',NSNBSTEPT,NSCOUNTD
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  WRITE(YMSG,*) 'WRITE_SERIESn: NSNBSTEPT .NE. NSCOUNTD ',NSNBSTEPT,NSCOUNTD
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
 END IF
 !
 ISER=1
@@ -159,11 +158,8 @@ ELSE
 END IF
 CALL REDUCESUM_ll(ZVAR2D,IINFO_ll)
 IF (IINFO_ll /=0 ) THEN
-  WRITE(ILUOUT,FMT='("WRITE_SERIES: PB in REDUCESUM FOR SERIES1")')
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n','problem in REDUCESUM for SERIES1')
 END IF
 !
 ISIZEHB=(NIBOXH-NIBOXL+1)*(NJBOXH-NJBOXL+1)
@@ -174,11 +170,9 @@ IF (LMASKLANDSEA) THEN
   ZSIZEHB=ISIZEHB
   CALL REDUCESUM_ll(ZSIZEHB,IINFO_ll)
   IF (IINFO_ll /=0 ) THEN
-    WRITE(ILUOUT,*) 'WRITE_SERIES: PB in REDUCESUM for SERIES1 SIZEHB-LAND',ISIZEHB
+    WRITE(YMSG,*) 'problem in REDUCESUM for SERIES1 SIZEHB-LAND',ISIZEHB
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
   END IF
   XSSERIES1(1,1,1,1:NSNBSTEPT,1,INAV+1:2*INAV)=ZVAR2D(:,INAV+1:2*INAV)/MAX(ZSIZEHB,1.)
   !
@@ -186,11 +180,9 @@ IF (LMASKLANDSEA) THEN
   ZSIZEHB=ISIZEHB
   CALL REDUCESUM_ll(ZSIZEHB,IINFO_ll)
   IF (IINFO_ll /=0 ) THEN
-    WRITE(ILUOUT,*) 'WRITE_SERIES: PB in REDUCESUM for SERIES1 SIZEHB-SEA',ISIZEHB
+    WRITE(YMSG,*) 'problem in REDUCESUM for SERIES1 SIZEHB-SEA',ISIZEHB
  !call abortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
   END IF
   XSSERIES1(1,1,1,1:NSNBSTEPT,1,2*INAV+1:NAVER1)=ZVAR2D(:,2*INAV+1:NAVER1)/MAX(ZSIZEHB,1.)
 END IF
@@ -217,11 +209,9 @@ IF (LWMINMAX) THEN
     END IF
     CALL GATHERALL_FIELD_ll('XY',ZVAR3D,ZVAR3D_ll,IINFO_ll)
     IF (IINFO_ll /=0 ) THEN
-      WRITE(ILUOUT,FMT='("WRITE_SERIES:PB FOR SERIES1(max)-GATHER")')
+      WRITE(YMSG,*) 'problem for SERIES1(max)-GATHER',ISIZEHB
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
     END IF
     DO JT=1,NSNBSTEPT
       XSSERIES1(1,1,1,JT,1,ISB1)=MAXVAL(ZVAR3D_ll(:,:,JT))
@@ -237,11 +227,8 @@ IF (LWMINMAX) THEN
     END IF
     CALL GATHERALL_FIELD_ll('XY',ZVAR3D,ZVAR3D_ll,IINFO_ll)
     IF (IINFO_ll /=0 ) THEN
-      WRITE(ILUOUT,FMT='("WRITE_SERIES:PB FOR SERIES1(min)-GATHER")')
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n','problem for SERIES1(min)-GATHER')
     END IF
     DO JT=1,NSNBSTEPT
       XSSERIES1(1,1,1,JT,1,ISB1)=MINVAL(ZVAR3D_ll(:,:,JT))
@@ -276,11 +263,8 @@ ELSE
 END IF
 CALL REDUCESUM_ll(ZVAR3D,IINFO_ll)
 IF (IINFO_ll /=0 ) THEN
-  WRITE(UNIT=ILUOUT,FMT='("WRITE_SERIES:PB FOR SERIES2-SUM")')
  !callabortstop
-  CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-  CALL ABORT
-  STOP
+  CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n','problem for SERIES2-SUM')
 END IF
 !
 ISIZEHB=(NIBOXH-NIBOXL+1)*(NJBOXH-NJBOXL+1)
@@ -291,22 +275,18 @@ IF (LMASKLANDSEA) THEN
   ZSIZEHB=ISIZEHB
   CALL REDUCESUM_ll(ZSIZEHB,IINFO_ll)
   IF (IINFO_ll /=0 ) THEN
-    WRITE(ILUOUT,*) 'WRITE_SERIES: PB in REDUCESUM for SERIES2 SIZEHB-LAND',ISIZEHB
+    WRITE(YMSG,*) 'problem in REDUCESUM for SERIES2 SIZEHB-LAND',ISIZEHB
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
   END IF
   XSSERIES2(1,1,1:IKMAX,1:NSNBSTEPT,1,INAV+1:2*INAV)=ZVAR3D(:,:,INAV+1:2*INAV)/MAX(ZSIZEHB,1.)
   ISIZEHB=COUNT(LINBOXS(:,:))
   ZSIZEHB=ISIZEHB
   CALL REDUCESUM_ll(ZSIZEHB,IINFO_ll)
   IF (IINFO_ll /=0 ) THEN
-    WRITE(ILUOUT,*) 'WRITE_SERIES: PB in REDUCESUM for SERIES2 SIZEHB-SEA',ISIZEHB
+    WRITE(YMSG,*) 'problem in REDUCESUM for SERIES2 SIZEHB-SEA',ISIZEHB
  !callabortstop
-    CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-    CALL ABORT
-    STOP
+    CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
   ENDIF
   XSSERIES2(1,1,1:IKMAX,1:NSNBSTEPT,1,2*INAV+1:NSTEMP_SERIE2)=ZVAR3D(:,:,2*INAV+1:NSTEMP_SERIE2)/MAX(ZSIZEHB,1.)
 END IF
@@ -352,11 +332,9 @@ DO JS=1,NBJSLICE
     END IF
     CALL SUM_DIM1_ll(ZVAR3D,ZWORK2D,INFO_ll)
     IF (IINFO_ll /=0 ) THEN
-      WRITE(ILUOUT,FMT='("WRITE_SERIES:PB FOR SERIES3-JS,JJ:",I3,I3)') JS,JJ
+      WRITE(YMSG,FMT='("problem for SERIES3-JS,JJ:",I3,I3)') JS,JJ
  !callabortstop
-      CALL CLOSE_ll(HLUOUT,IOSTAT=IRESP)
-      CALL ABORT
-      STOP
+      CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_SERIES_n',YMSG)
     END IF
     DO JT=1,NSNBSTEPT
       DO JI=IIB_ll,IIE_ll
@@ -383,6 +361,6 @@ DO JS=1,NBJSLICE
 END DO
 DEALLOCATE(ZVAR3D,ZWORK2D,ZSERIES3_ll)
 !
-IF (NVERB>=5) WRITE(ILUOUT,*) 'WRITE_SERIESn: end'
+IF (NGEN_VERB>=NVERB_DEBUG) CALL PRINT_MSG(NVERB_DEBUG,'GEN','WRITE_SERIES_n','end')
 !----------------------------------------------------------------------------
 END SUBROUTINE WRITE_SERIES_n
-- 
GitLab