diff --git a/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90 b/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
index 75cf82b4e94662d4aa0fac4898f686313f0403ec..c88faab8c9d573f85b7d552aed9ca4050fa1f5df 100644
--- a/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_argslist_ll.f90
@@ -1,16 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!-----------------------------------------------------------------
 
 !!    #######################
       MODULE MODE_ARGSLIST_ll
@@ -55,6 +47,7 @@
 !!    Modifications
 !!    -------------
 !     Original    May 19, 1998
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !-------------------------------------------------------------------------------
 !
@@ -100,6 +93,8 @@
 !
 !*       0.1   declarations of arguments
 !
+  use mode_msg
+
   IMPLICIT NONE
 !
   TYPE(LIST1D_ll), POINTER     :: TPLIST ! list of fields
@@ -116,8 +111,7 @@
 !*       1.    Test value of HDIR
 !
   IF (HDIR /= "X" .AND. HDIR /= "Y") THEN
-    WRITE(*,*) 'Error ADD1DFIELD : Bad HDIR argument'
-    STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'ADD1DFIELD', 'bad HDIR argument ('//HDIR//')' )
   ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/LIB/SURCOUCHE/src/mode_distriblb.f90 b/src/LIB/SURCOUCHE/src/mode_distriblb.f90
index e3d13ec6fb584c37f1202ed2e0af152b3c1f180a..26ff6d6d27f96f7e32ecebb6a33c218a0e51f3a2 100644
--- a/src/LIB/SURCOUCHE/src/mode_distriblb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_distriblb.f90
@@ -1,17 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!Correction :
-!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+! Modifications:
+!  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 
 !     #############################
@@ -105,10 +99,12 @@ END SUBROUTINE GET_DISTRIB_LB
 !!      Original    23/09/98
 !-------------------------------------------------------------------------------
 !
-USE MODD_PARAMETERS_ll,ONLY : JPHEXT
-USE MODD_VAR_ll,       ONLY : TCRRT_PROCONF
-USE MODD_STRUCTURE_ll,  ONLY : MODELSPLITTING_ll
-USE MODE_TOOLS_ll,     ONLY : GET_INTERSECTION_ll,GET_GLOBALDIMS_ll,LWEST_ll
+USE MODD_PARAMETERS_ll, ONLY: JPHEXT
+USE MODD_STRUCTURE_ll,  ONLY: MODELSPLITTING_ll
+USE MODD_VAR_ll,        ONLY: TCRRT_PROCONF
+
+use mode_msg
+USE MODE_TOOLS_ll,      ONLY: GET_INTERSECTION_ll, GET_GLOBALDIMS_ll, LWEST_ll
 
 !*       0.    DECLARATIONS
 !              ------------ 
@@ -150,8 +146,7 @@ CASE('READ')
 CASE('WRITE')
   YMODE = 'PHYS'
 CASE default
-  WRITE(*,*) 'Error in GET_DISTRIBX_LB...'
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'GET_DISTRIBX_LB', 'invalid dummy argument HMODE ('//trim(HMODE)//')' )
 END SELECT
 !
 CALL  GET_GLOBALDIMS_ll(IIMAX_ll, IJMAX_ll)
@@ -219,8 +214,7 @@ IF (IINFO /= 1) THEN  ! no empty intersection
     KJB=IYORI + IYOR3DX -1
     KJE=IYENDI+ IYOR3DX- 1
   ELSE
-    WRITE(*,*) 'Error in GET_DISTRIBX_LB...'
-    STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'GET_DISTRIBX_LB', 'invalid dummy argument HCOORD ('//trim(HCOORD)//')' )
   ENDIF
 END IF
 
@@ -314,10 +308,12 @@ END SUBROUTINE GET_DISTRIBX_LB
 !!      Original    23/09/98
 !-------------------------------------------------------------------------------
 !
-USE MODD_PARAMETERS_ll,ONLY : JPHEXT
-USE MODD_VAR_ll,       ONLY : TCRRT_PROCONF
-USE MODD_STRUCTURE_ll,  ONLY : MODELSPLITTING_ll
-USE MODE_TOOLS_ll,     ONLY : GET_INTERSECTION_ll,GET_GLOBALDIMS_ll,LSOUTH_ll
+USE MODD_PARAMETERS_ll, ONLY: JPHEXT
+USE MODD_STRUCTURE_ll,  ONLY: MODELSPLITTING_ll
+USE MODD_VAR_ll,        ONLY: TCRRT_PROCONF
+
+use mode_msg
+USE MODE_TOOLS_ll,      ONLY: GET_INTERSECTION_ll, GET_GLOBALDIMS_ll, LSOUTH_ll
 !*       0.    DECLARATIONS
 !              ------------ 
 !*       0.1   declarations of arguments
@@ -356,8 +352,7 @@ CASE('READ')
 CASE('WRITE')
   YMODE = 'PHYS'
 CASE default
-  WRITE(*,*) 'Error in GET_DISTRIBX_LB...'
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'GET_DISTRIBY_LB', 'invalid dummy argument HMODE ('//trim(HMODE)//')' )
 END SELECT
 !   
 CALL  GET_GLOBALDIMS_ll(IIMAX_ll, IJMAX_ll)
diff --git a/src/LIB/SURCOUCHE/src/mode_ga.f90 b/src/LIB/SURCOUCHE/src/mode_ga.f90
index 6358883945c5a739422194bdfc51489635088827..9a2d05b6d6fe372ce51c922e91b467e545ed0b0b 100644
--- a/src/LIB/SURCOUCHE/src/mode_ga.f90
+++ b/src/LIB/SURCOUCHE/src/mode_ga.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -8,6 +8,7 @@
 ! Modifications:
 !  J. Escobar  05/02/2015: use JPHEXT from MODD_PARAMETERS_ll
 !  P. Wautelet 14/12/2018: split from fmwrit_ll.f90
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 #ifdef MNH_GA
 MODULE MODE_GA
@@ -41,6 +42,7 @@ MODULE MODE_GA
       USE MODD_PARAMETERS_ll,  ONLY: JPHEXT
 
       USE MODE_GATHER_ll,      ONLY: GET_DOMWRITE_ll
+      use mode_msg
       USE MODE_SCATTER_ll,     ONLY: GET_DOMREAD_ll
       USE MODE_TOOLS_ll,       ONLY: GET_GLOBALDIMS_ll
 
@@ -58,7 +60,7 @@ MODULE MODE_GA
          stack = heap
          !gstatus_ga = ma_init(MT_F_DBL, stack/ISNPROC, heap/ISNPROC)
          gstatus_ga = ma_init(MT_F_DBL, stack, heap)
-         if ( .not. gstatus_ga ) STOP " MA_INIT FAILED "
+         if ( .not. gstatus_ga ) call Print_msg( NVERB_FATAL, 'GEN', 'MNH_INIT_GA', 'MA_INIT failed' )
          !
          !   Initialize GA library
          !
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
index 5a5fcddb8c08c68ec3d93ab41800aca076499838..495fc3bbb45cdee27ac1596694f394d928c120ec 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
@@ -11,6 +11,7 @@
 !  J. Escobar  17/07/2018: reintroduce needed MPI_BARRIER in IO_Field_read_byfield_X3
 !  P. Wautelet 29/01/2019: small bug correction in time measurement in IO_Field_read_byfield_X2
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 
 #ifdef MNH_MPI_DOUBLE_PRECISION
@@ -753,12 +754,12 @@ IF (IRESP==0) THEN
       !
       IF (YDIR == 'XX' .OR. YDIR =='YY') THEN
         ! XX or YY Scatter Field
-        STOP " XX ou YY NON PREVU SUR BG POUR LE MOMENT "
+        call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_read_byfield_X3', 'XX or YY not yet planned on Blue Gene' )
         CALL SCATTER_XXFIELD(YDIR,ZFIELDP,PFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
       ELSE IF (YDIR == 'XY') THEN
         IF (LPACK .AND. L2D) THEN
           ! 2D compact case
-          STOP " L2D NON PREVU SUR BG POUR LE MOMENT "
+          call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_read_byfield_X3', 'L2D not yet planned on Blue Gene' )
           CALL SCATTER_XXFIELD('XX',ZFIELDP(:,1,:),PFIELD(:,JPHEXT+1,:),TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
           PFIELD(:,:,:) = SPREAD(PFIELD(:,JPHEXT+1,:),DIM=2,NCOPIES=IHEXTOT)
         ELSE
@@ -792,7 +793,7 @@ IF (IRESP==0) THEN
         END IF
       ELSE
         ! Broadcast Field
-        STOP "  Broadcast Field NON PREVU SUR BG POUR LE MOMENT "
+        call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_read_byfield_X3', 'broadcast field not yet planned on Blue Gene' )
         CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
       END IF
       CALL SECOND_MNH2(T0)
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
index 5eddb048c1a3c0557211aa7aa6b1988962a50a84..a3e33e2c93fab49425ab05e0f6edf8d01739824a 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_write.f90
@@ -9,6 +9,7 @@
 !  P. Wautelet 10/01/2019: do not write scalars in Z-split files
 !  P. Wautelet 10/01/2019: write header also for Z-split files
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 
 #ifdef MNH_MPI_DOUBLE_PRECISION
@@ -901,11 +902,11 @@ CONTAINS
                 IK_RANK = TZFILE%NMASTER_RANK
                 !
                 IF (YDIR == 'XX' .OR. YDIR =='YY') THEN
-                   STOP " XX NON PREVU SUR BG POUR LE MOMENT "
+                   call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_write_byfield_X3', 'XX not yet planned on Blue Gene' )
                    CALL GATHER_XXFIELD(YDIR,PFIELD,ZFIELDP,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
                 ELSEIF (YDIR == 'XY') THEN
                    IF (LPACK .AND. L2D) THEN
-                      STOP " L2D NON PREVU SUR BG POUR LE MOMENT "
+                      call Print_msg( NVERB_FATAL, 'GEN', 'IO_Field_write_byfield_X3', 'L2D not yet planned on Blue Gene' )
                       CALL GATHER_XXFIELD('XX',PFIELD(:,JPHEXT+1,:),ZFIELDP(:,1,:),TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
                    ELSE
                       CALL SECOND_MNH2(T0)
@@ -2661,251 +2662,263 @@ IMI = GET_CURRENT_MODEL_INDEX()
 !
 DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
   IDX = TPOUTPUT%NFIELDLIST(JI)
-  SELECT CASE (TFIELDLIST(IDX)%NDIMS)
+  NDIMS: SELECT CASE (TFIELDLIST(IDX)%NDIMS)
     !
     !0D output
     !
     CASE (0)
-      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+      NTYPE0D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
         !0D real
         !
         CASE (TYPEREAL)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X0D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X0D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X0D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X0D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X0D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X0D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 0D logical fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 0D real fields' )
           END IF
         !
         !0D integer
         !
         CASE (TYPEINT)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_N0D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N0D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_N0D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N0D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N0D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_N0D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 0D integer fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 0D integer fields' )
           END IF
         !
         !0D logical
         !
         CASE (TYPELOG)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_L0D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_L0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_L0D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_L0D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_L0D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_L0D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_L0D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 0D logical fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 0D logical fields' )
           END IF
         !
         !0D string
         !
         CASE (TYPECHAR)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_C0D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_C0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_C0D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_C0D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_C0D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_C0D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_C0D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 0D character fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 0D character fields' )
           END IF
         !
         !0D date/time
         !
         CASE (TYPEDATE)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_T0D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_T0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_T0D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_T0D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_T0D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_T0D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_T0D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 0D date/time fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 0D date/time fields' )
           END IF
         !
         !0D other types
         !
         CASE DEFAULT
-          PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 0D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-          STOP
-      END SELECT
+          call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': type not yet supported for 0D output' )
+      END SELECT NTYPE0D
     !
     !1D output
     !
     CASE (1)
-      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+      NTYPE1D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
         !1D real
         !
         CASE (TYPEREAL)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X1D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X1D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X1D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X1D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X1D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X1D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X1D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 1D real fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 1D real fields' )
           END IF
 !         !
 !         !1D integer
 !         !
 !         CASE (TYPEINT)
 !           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_N1D) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N1D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_N1D is NOT allocated ' )
 !           END IF
 !           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_N1D(IMI)%DATA) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N1D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_N1D%DATA is NOT associated' )
 !           END IF
 !           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
 !             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_N1D(IMI)%DATA)
 !           ELSE
-!             CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 1D integer fields')
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': CLBTYPE/=NONE not allowed for 1D integer fields' )
 !           END IF
 !         !
 !         !1D logical
 !         !
 !         CASE (TYPELOG)
 !           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_L1D) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_L1D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_L1D is NOT allocated ' )
 !           END IF
 !           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_L1D(IMI)%DATA) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_L1D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_L1D%DATA is NOT associated' )
 !           END IF
 !           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
 !             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_L1D(IMI)%DATA)
 !           ELSE
-!             CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 1D logical fields')
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': CLBTYPE/=NONE not allowed for 1D logical fields' )
 !           END IF
 !         !
 !         !1D string
 !         !
 !         CASE (TYPECHAR)
 !           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_C1D) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_C1D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_C1D is NOT allocated ' )
 !           END IF
 !           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_C1D(IMI)%DATA) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_C1D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_C1D%DATA is NOT associated' )
 !           END IF
 !           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
 !             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_C1D(IMI)%DATA)
 !           ELSE
-!             CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 1D character fields')
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': CLBTYPE/=NONE not allowed for 1D character fields' )
 !           END IF
         !
         !1D other types
         !
         CASE DEFAULT
-          PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 1D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-          STOP
-      END SELECT
+          call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': type not yet supported for 1D output' )
+      END SELECT NTYPE1D
     !
     !2D output
     !
     CASE (2)
-      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+      NTYPE2D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
         !2D real
         !
         CASE (TYPEREAL)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X2D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X2D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X2D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X2D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X2D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X2D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X2D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 2D real fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 2D real fields' )
           END IF
         !
         !2D integer
         !
         CASE (TYPEINT)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_N2D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N2D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N2D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_N2D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N2D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N2D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_N2D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not allowed for 2D integer fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not allowed for 2D integer fields' )
           END IF
         !
         !2D other types
         !
         CASE DEFAULT
-          PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 2D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-          STOP
-      END SELECT
+          call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': type not yet supported for 2D output' )
+      END SELECT NTYPE2D
     !
     !3D output
     !
     CASE (3)
-      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+      NTYPE3D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
         !3D real
         !
         CASE (TYPEREAL)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X3D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X3D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X3D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X3D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X3D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X3D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X3D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not (yet) allowed for 3D real fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not (yet) allowed for 3D real fields' )
             !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X3D(IMI)%DATA)
           END IF
@@ -2914,17 +2927,18 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
         !
         CASE (TYPEINT)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_N3D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N3D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N3D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_N3D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_N3D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_N3D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_N3D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not (yet) allowed for 3D integer fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not (yet) allowed for 3D integer fields' )
             !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_N3D(IMI)%DATA)
           END IF
@@ -2932,30 +2946,31 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
         !3D other types
         !
         CASE DEFAULT
-          PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 3D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-          STOP
-      END SELECT
+          call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': type not yet supported for 3D output' )
+      END SELECT NTYPE3D
     !
     !4D output
     !
     CASE (4)
-      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+      NTYPE4D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
         !4D real
         !
         CASE (TYPEREAL)
           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X4D) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X4D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X4D is NOT allocated ' )
           END IF
           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X4D(IMI)%DATA) ) THEN
-            PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X4D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-            STOP
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': TFIELD_X4D%DATA is NOT associated' )
           END IF
           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X4D(IMI)%DATA)
           ELSE
-            CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not (yet) allowed for 4D real fields')
+            call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                            ': CLBTYPE/=NONE not (yet) allowed for 4D real fields' )
             !PW: TODO?: add missing field in TFIELDLIST?
             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X4D(IMI)%DATA)
           END IF
@@ -2963,30 +2978,31 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
         !4D other types
         !
         CASE DEFAULT
-          PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 4D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-          STOP
-      END SELECT
+          call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': type not yet supported for 4D output' )
+      END SELECT NTYPE4D
 !     !
 !     !5D output
 !     !
 !     CASE (5)
-!       SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+!       NTYPE5D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
 !         !
 !         !5D real
 !         !
 !         CASE (TYPEREAL)
 !           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X5D) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X5D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_X5D is NOT allocated ' )
 !           END IF
 !           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X5D(IMI)%DATA) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X5D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_X5D%DATA is NOT associated' )
 !           END IF
 !           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
 !             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X5D(IMI)%DATA)
 !           ELSE
-!             CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not (yet) allowed for 5D real fields')
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': CLBTYPE/=NONE not (yet) allowed for 5D real fields' )
 !             !PW: TODO?: add missing field in TFIELDLIST?
 !             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X5D(IMI)%DATA)
 !           END IF
@@ -2994,30 +3010,30 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
 !         !5D other types
 !         !
 !         CASE DEFAULT
-!           PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 5D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!           STOP
-!       END SELECT
+!           call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                           ': type not yet supported for 5D output' )
+!       END SELECT NTYPE5D
 !     !
 !     !6D output
 !     !
 !     CASE (6)
-!       SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+!       NTYPE6D: SELECT CASE (TFIELDLIST(IDX)%NTYPE)
 !         !
 !         !6D real
 !         !
 !         CASE (TYPEREAL)
-!           IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X6D) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X6D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_X6D is NOT allocated ' )
 !           END IF
 !           IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X6D(IMI)%DATA) ) THEN
-!             PRINT *,'FATAL: IO_Fieldlist_write: TFIELD_X6D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!             STOP
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': TFIELD_X6D%DATA is NOT associated' )
 !           END IF
 !           IF ( TFIELDLIST(IDX)%CLBTYPE == 'NONE' ) THEN
 !             CALL IO_Field_write(TPOUTPUT%TFILE,TFIELDLIST(IDX),TFIELDLIST(IDX)%TFIELD_X6D(IMI)%DATA)
 !           ELSE
-!             CALL PRINT_MSG(NVERB_ERROR,'IO','IO_Fieldlist_write','CLBTYPE/=NONE not (yet) allowed for 6D real fields')
+!             call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                             ': CLBTYPE/=NONE not (yet) allowed for 6D real fields' )
 !             !PW: TODO?: add missing field in TFIELDLIST?
 !             !CALL IO_Field_write_lb(TPOUTPUT%TFILE,TFIELDLIST(IDX),***,TFIELDLIST(IDX)%TFIELD_X6D(IMI)%DATA)
 !           END IF
@@ -3025,16 +3041,16 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
 !         !6D other types
 !         !
 !         CASE DEFAULT
-!           PRINT *,'FATAL: IO_Fieldlist_write: type not yet supported for 4D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-!           STOP
-!       END SELECT
+!           call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+!                           ': type not yet supported for 6D output' )
+!       END SELECT NTYPE6D
     !
     !Other number of dimensions
     !
     CASE DEFAULT
-      PRINT *,'FATAL: IO_Fieldlist_write: number of dimensions not yet supported for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
-      STOP
-  END SELECT
+      call Print_msg( NVERB_ERROR, 'IO', 'IO_Fieldlist_write', trim(tfieldlist(idx)%cmnhname)// &
+                          ': number of dimensions not yet supported' )
+  END SELECT NDIMS
 END DO
 !
 END SUBROUTINE IO_Fieldlist_write
diff --git a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90 b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
index 19fcea8e5fd17bc21598759188a2518d7e66a003..805e607bc4feb4190007d10ce5003fd6bb328221 100644
--- a/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_lb_ll.f90
@@ -3,6 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!-----------------------------------------------------------------
 
 !     #################
       MODULE MODE_LB_ll
@@ -117,6 +120,7 @@
   USE MODD_VAR_ll, ONLY : TCRRT_COMDATA
 !
   USE MODE_ARGSLIST_ll, ONLY : ADD2DFIELD_ll
+  use mode_msg
   USE MODE_NEST_ll, ONLY : LBFINE2COARSE
 !  
   IMPLICIT NONE
@@ -129,6 +133,7 @@
 !
 !*       0.2   declarations of local variables
 !
+  CHARACTER(len=10) :: ymodel !String for error message
   INTEGER :: ICOARSE
   TYPE(LCRSPD_ll), POINTER :: TZPAR, TZCHILD
   TYPE(LPROC_COM_DATA_ll), POINTER :: TZLCOMDATA
@@ -142,8 +147,7 @@
 !
   IF (.NOT.ASSOCIATED(TCRRT_COMDATA%TCHILDREN) &
     & .OR. .NOT.ASSOCIATED(TCRRT_COMDATA%TP2C_DATA)) THEN
-    WRITE(*,*) 'Problem in set_lbfield_ll'
-    WRITE(*,*) 'The current model has no child'
+    call Print_msg( NVERB_WARNING, 'GEN', 'SET_LB2DFIELD_ll', 'the current model has no child' )
     RETURN
   ENDIF
 !
@@ -165,9 +169,8 @@
     TZLCOMDATA => TZLCOMDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZLCOMDATA)) THEN
-    WRITE(*,*) 'Error SET_LBFIELD_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) KMODEL
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB2DFIELD_ll', trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.2   Point to the parent2child data structure
@@ -177,9 +180,8 @@
     TZP2CDATA => TZP2CDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZP2CDATA)) THEN
-    WRITE(*,*) 'Error SET_LBFIELD_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) KMODEL
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB2DFIELD_ll', trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.3   Point to the appropriate side
@@ -281,6 +283,7 @@
   USE MODD_VAR_ll, ONLY : TCRRT_COMDATA
 !
   USE MODE_ARGSLIST_ll, ONLY : ADD3DFIELD_ll
+  use mode_msg
   USE MODE_NEST_ll, ONLY : LBFINE2COARSE
 !
 !
@@ -294,6 +297,7 @@
 !
 !*       0.2   declarations of local variables
 !
+  CHARACTER(len=10) :: ymodel !String for error message
   INTEGER :: ICOARSE
   TYPE(LCRSPD_ll), POINTER :: TZPAR, TZCHILD
   TYPE(LPROC_COM_DATA_ll), POINTER :: TZLCOMDATA
@@ -307,8 +311,7 @@
 !
   IF (.NOT.ASSOCIATED(TCRRT_COMDATA%TCHILDREN) &
     & .OR. .NOT.ASSOCIATED(TCRRT_COMDATA%TP2C_DATA)) THEN
-    WRITE(*,*) 'Problem in set_lbfield_ll'
-    WRITE(*,*) 'The current model has no child'
+    call Print_msg( NVERB_WARNING, 'GEN', 'SET_LB3DFIELD_ll', 'the current model has no child' )
     RETURN
   ENDIF
 !
@@ -330,9 +333,8 @@
     TZLCOMDATA => TZLCOMDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZLCOMDATA)) THEN
-    WRITE(*,*) 'Error SET_LBFIELD_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) KMODEL
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB3DFIELD_ll', trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.2   Point to the parent2child data structure
@@ -342,9 +344,8 @@
     TZP2CDATA => TZP2CDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZP2CDATA)) THEN
-    WRITE(*,*) 'Error SET_LBFIELD_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) KMODEL
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB3DFIELD_ll', trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.3   Point to the appropriate side
@@ -433,7 +434,9 @@
 !!
   USE MODD_STRUCTURE_ll, ONLY : LPARENT2CHILD_DATA_ll, PARENT2CHILD_DATA_ll
   USE MODD_VAR_ll, ONLY : TCRRT_COMDATA
+
   USE MODE_CONSTRUCT_ll, ONLY : CLEANLIST_LCRSPD
+  use mode_msg
 !
   IMPLICIT NONE
 !
@@ -475,8 +478,7 @@
 !
   ELSE
 !
-    WRITE(*,*) 'Problem in UNSET_LBFIELD'
-    WRITE(*,*) 'The current model is 1'
+    call Print_msg( NVERB_WARNING, 'GEN', 'UNSET_LBFIELD', 'problem: the current model is 1' )
 !
   ENDIF
 !
@@ -1671,6 +1673,7 @@
   USE MODD_PARAMETERS_ll, ONLY: JPHEXT
 
   USE MODE_DISTRIB_LB
+  use mode_msg
   !
   IMPLICIT NONE
   !
@@ -1690,6 +1693,7 @@
   ! LOCAL VARIABLES
   CHARACTER(4) :: YLBTYPEX ! LB type : 'LBX','LBXU'
   CHARACTER(4) :: YLBTYPEY ! LB type : 'LBY','LBYV'
+  character(len=10) :: ydim1, ydim2 !Strings for error messages
   ! local indices for the intersection of the local subdomain and the LB zone
   INTEGER             :: IIB_LOCLB           ! indice I Beginning in x direction
   INTEGER             :: IJB_LOCLB           ! indice J Beginning in y direction
@@ -1711,8 +1715,7 @@
     YLBTYPEX = 'LBXU'
     YLBTYPEY = 'LBYV'
   ELSE
-    WRITE(*,*) "ERROR: from SET_LB_FIELD_ll, UNKNOWN LB TYPE", HLBTYPE
-    CALL ABORT
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB_FIELD_ll', 'unknown HLBTYPE ('//trim(HLBTYPE)//')' )
   ENDIF
 !
 ! get the local indices of the West-East LB arrays for the local subdomain
@@ -1720,9 +1723,10 @@
 ! and the corresponding indices for the LB global arrays
   CALL GET_DISTRIB_LB(YLBTYPEX,ISP,'FM','WRITE',NRIMX,IIB_GLBLB,IIE_GLBLB,IJB_GLBLB,IJE_GLBLB)
   IF ( IIE_LOCLB-IIB_LOCLB /= IIE_GLBLB-IIB_GLBLB ) THEN
-    WRITE(*,*) "ERROR: from SET_LB_FIELD_ll, West-East IIE_LOCLB-IIB_LOCLB =",&
-        IIE_LOCLB-IIB_LOCLB, " /= IIE_GLBLB-IIB_GLBLB =", IIE_GLBLB-IIB_GLBLB
-    CALL ABORT
+    write( ydim1, '( I10 )' ) IIE_LOCLB-IIB_LOCLB
+    write( ydim2, '( I10 )' ) IIE_GLBLB-IIB_GLBLB
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB_FIELD_ll', 'West-East IIE_LOCLB-IIB_LOCL='//trim(ydim1)// &
+                    ' /= IIE_GLBLB-IIB_GLBLB='//trim(ydim2) )
   ENDIF
   LOCLBSIZEW = 0
   LOCLBSIZEE = 0
@@ -1744,8 +1748,7 @@
       PLBXFIELD(IIB_LOCLB:IIE_LOCLB,:,:)  = PFIELD(GLBLBBEGIN:GLBLBEND,:,:)
 !      PLBXFIELD(NRIMX+1+IIB_LOCLB:NRIMX+1+IIE_LOCLB,:,:)  = PFIELD(GLBLBBEGIN:GLBLBEND,:,:)
     ELSE
-      WRITE(*,*) "ERROR: from SET_LB_FIELD_ll, This type of partition is not allowed !"
-      CALL ABORT
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB_FIELD_ll', 'this type of partition is not allowed' )
     ENDIF
   ENDIF !( IIB_LOCLB /= 0 )
 !
@@ -1759,9 +1762,10 @@
   ! and the corresponding indices for the LB global arrays
     CALL GET_DISTRIB_LB(YLBTYPEY,ISP,'FM','WRITE',NRIMY,IIB_GLBLB,IIE_GLBLB,IJB_GLBLB,IJE_GLBLB)
     IF ( IJE_LOCLB-IJB_LOCLB /= IJE_GLBLB-IJB_GLBLB ) THEN
-      WRITE(*,*) "ERROR: from SET_LB_FIELD_ll, South-North IJE_LOCLB-IJB_LOCLB =",&
-           IJE_LOCLB-IJB_LOCLB, " /= IJE_GLBLB-IJB_GLBLB =", IJE_GLBLB-IJB_GLBLB
-      CALL ABORT
+      write( ydim1, '( I10 )' ) IJE_LOCLB-IJB_LOCLB
+      write( ydim2, '( I10 )' ) IJE_GLBLB-IJB_GLBLB
+      call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB_FIELD_ll', 'South-North IJE_LOCLB-IJB_LOCLB='//trim(ydim1)// &
+                      ' /= IJE_GLBLB-IJB_GLBLB='//trim(ydim2) )
     ENDIF
     IF ( IJB_LOCLB /= 0 ) THEN  ! if the LB zone of the local subdomain is non-empty
       IF ( IJB_GLBLB <= NRIMY+JPHEXT .AND. IJE_GLBLB >= NRIMY+JPHEXT+1 ) THEN ! the local south and north LB zones are non empty
@@ -1777,8 +1781,7 @@
         PLBYFIELD(:,IJB_LOCLB:IJE_LOCLB,:)  = PFIELD(:,GLBLBBEGIN:GLBLBEND,:)
 !        PLBYFIELD(:,NRIMY+1+IJB_LOCLB:NRIMY+1+IJE_LOCLB,:)  = PFIELD(:,GLBLBBEGIN:GLBLBEND,:)
       ELSE
-        WRITE(*,*) "ERROR: from SET_LB_FIELD_ll, This type of partition is not allowed !"
-        CALL ABORT
+        call Print_msg( NVERB_FATAL, 'GEN', 'SET_LB_FIELD_ll', 'this type of partition is not allowed' )
       ENDIF
 
     ENDIF !( IJB_LOCLB /= 0 )
diff --git a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90 b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
index 0626ce6ba719541e8e7c980b69172d802ff245e8..0af00e6c6d1cc7aee2b52b91264a799da758fe4a 100644
--- a/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_ls_ll.f90
@@ -1,15 +1,10 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 
 !     #################
@@ -59,6 +54,8 @@
 !------------------------------------------------------------------------------
 !
   USE MODD_STRUCTURE_ll
+
+  use mode_msg
 !
   CONTAINS
 !
@@ -120,6 +117,7 @@
 !
 !*       0.2   declarations of local variables
 !
+  character(len=10) :: ymodel ! String for error message
   INTEGER :: ICOARSE
   TYPE(LCRSPD_ll), POINTER :: TZPAR, TZCHILD
   TYPE(LPROC_COM_DATA_ll), POINTER :: TZLCOMDATA
@@ -149,9 +147,8 @@
     TZLCOMDATA => TZLCOMDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZLCOMDATA)) THEN
-    WRITE(*,*) 'Error SET_LS2DFIELD_1WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LS2DFIELD_1WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.2   Point to the parent2child data structure
@@ -161,9 +158,8 @@
     TZP2CDATA => TZP2CDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZP2CDATA)) THEN
-    WRITE(*,*) 'Error SET_LS2DFIELD_1WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LS2DFIELD_1WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
   TZPAR => TZP2CDATA%TELT%TSEND_1WAY_LS
@@ -239,6 +235,7 @@
 !
 !*       0.2   declarations of local variables
 !
+  character(len=10) :: ymodel ! String for error message
   INTEGER :: ICOARSE
   TYPE(LCRSPD_ll), POINTER :: TZPAR, TZCHILD
   TYPE(LPROC_COM_DATA_ll), POINTER :: TZLCOMDATA
@@ -268,9 +265,8 @@
     TZLCOMDATA => TZLCOMDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZLCOMDATA)) THEN
-    WRITE(*,*) 'Error SET_LS3DFIELD_1WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LS3DFIELD_1WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.2   Point to the parent2child data structure
@@ -280,9 +276,8 @@
     TZP2CDATA => TZP2CDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZP2CDATA)) THEN
-    WRITE(*,*) 'Error SET_LS3DFIELD_1WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'SET_LS3DFIELD_1WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
   TZPAR => TZP2CDATA%TELT%TSEND_1WAY_LS
@@ -617,6 +612,7 @@
 !
 !*       0.2   declarations of local variables
 !
+  character(len=10) :: ymodel ! String for error message
   TYPE(LPARENT2CHILD_DATA_ll), POINTER :: TZP2CDATA
   TYPE(LPROC_COM_DATA_ll), POINTER :: TZLCOMDATA
 !
@@ -629,9 +625,8 @@
     TZLCOMDATA => TZLCOMDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZLCOMDATA)) THEN
-    WRITE(*,*) 'Error UNSET_LSFIELD_2WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'UNSET_LSFIELD_2WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
 !*       2.2   Point to the parent2child data structure
@@ -641,9 +636,8 @@
     TZP2CDATA => TZP2CDATA%TNEXT
   ENDDO
   IF (.NOT.ASSOCIATED(TZP2CDATA)) THEN
-    WRITE(*,*) 'Error UNSET_LSFIELD_2WAY_ll : ', KMODEL, &
-               ' is not a child of the current model'
-    STOP
+    write( ymodel, '( I10 )' ) kmodel
+    call Print_msg( NVERB_FATAL, 'GEN', 'UNSET_LSFIELD_2WAY_ll', 'model '//trim(ymodel)//' is not a child of the current model' )
   ENDIF
 !
   CALL CLEANLIST_LCRSPD(TZLCOMDATA%TELT%TSEND_2WAY_LS)
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index ae15313afe914f828a85791e90944b57a3dea78a..78ef176e9b855366bfa5dcc56f48dfc174268254 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -1,11 +1,11 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 MODULE MODE_MPPDB
 !
-!       Modifs :
+! Modifications:
 !!      J.Escobar 23/10/2012: correct CHECK_LB & format print output 
 !!      M.Moge 05/02/2015: MPPDB_CHECK_SURFEX2D and MPPDB_CHECK_SURFEX3D + bug fix in MPPDB_CHECK2D and MPPDB_CHECK3D (call MPI_AllReduce at the beginning)
 !  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
@@ -14,8 +14,13 @@ MODULE MODE_MPPDB
 !  Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
 !  Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !  Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!-----------------------------------------------------------------
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
+
+  use mode_msg
+
   use modi_tools_c
 
   IMPLICIT NONE
@@ -154,7 +159,8 @@ CONTAINS
           CALL MPI_INFO_SET    (INFO_SPAWN , "wdir", MPPDB_WDIR , ierr)
           CALL MPI_INFO_GET    (INFO_SPAWN , "wdir", 40, chaine, isset ,ierr)
           IF (MPPDB_DEBUG) PRINT*,"MPPDB_INIT:: FATHER :: INFO_SPAWN , wdir=",isset,chaine
-          IF (ierr.NE.0) STOP 'MPPDB_INIT:: PB MPI_INFO_SET  "wdir" '
+          if (ierr /= 0 ) call Print_msg( NVERB_FATAL, 'GEN', 'MPPDB_INIT', 'MPI_INFO_SET failed' )
+
           !
        ELSE
           ! other father only do nothing but participate 
diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
index 158d5313622d2681529fa70baeb453fce1d293af..6e450dffbec00d2f642c1764b78fca22a4ab3b5b 100644
--- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
@@ -1,17 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for CVS information
-!-----------------------------------------------------------------
-! $Source$
-! $Name$ 
-! $Revision$ 
-! $Date$
-!-----------------------------------------------------------------
-!Correction :
-!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+! Modifications:
+!  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 
 !     ####################
@@ -56,7 +50,9 @@
   USE MODD_MPIF
   !JUANZ
   USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-  !JUANZ  
+  !JUANZ
+
+  use mode_msg
 !
   CONTAINS
 
@@ -1270,7 +1266,7 @@ ENDIF
       ZPTR => PARRAY(ILOC,IB:IE)
 !
     CASE DEFAULT
-      STOP 'GET_GLOBALSLICE_ll : Bad HDIR argument'
+      call Print_msg( NVERB_FATAL, 'GEN', 'GET_1DGLOBALSLICE_ll', 'invalid HDIR dummy argument ('//hdir//')' )
 !
     END SELECT 
 !
@@ -1602,7 +1598,7 @@ ENDIF
       ZPTR = PARRAY(ILOC,IB:IE,KKB:KKE)
 !
     CASE DEFAULT
-      STOP 'GET_GLOBALSLICE_ll : Bad HDIR argument'
+      call Print_msg( NVERB_FATAL, 'GEN', 'GET_2DGLOBALSLICE_ll', 'invalid HDIR dummy argument ('//hdir//')' )
 !
     END SELECT
 !
@@ -1962,7 +1958,7 @@ ENDIF
       ZPTR => PARRAY(ILOC,IJB:IJE)
 !
     CASE DEFAULT
-      STOP 'GET_SLICE_ll : Bad HDIR argument'
+      call Print_msg( NVERB_FATAL, 'GEN', 'GET_1DSLICE_ll', 'invalid HDIR dummy argument ('//hdir//')' )
 !
     END SELECT 
 !
@@ -2320,7 +2316,7 @@ ENDIF
       ZPTR = PARRAY(ILOC,IJB:IJE,KKB:KKE)
 !
     CASE DEFAULT
-      STOP 'GET_SLICE_ll : Bad HDIR argument'
+      call Print_msg( NVERB_FATAL, 'GEN', 'GET_2DSLICE_ll', 'invalid HDIR dummy argument ('//hdir//')' )
 !
     END SELECT
 !
diff --git a/src/LIB/SURCOUCHE/src/mode_toolsz_ll.f90 b/src/LIB/SURCOUCHE/src/mode_toolsz_ll.f90
index 91cc5b3292d52f895b04bce68152b0a70a0d0025..7dc97340a7e3a493ea5eb8ce10ed6aa68ff152dc 100644
--- a/src/LIB/SURCOUCHE/src/mode_toolsz_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_toolsz_ll.f90
@@ -1,7 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!-----------------------------------------------------------------
 !     ########################
       MODULE MODE_TOOLSZ_ll
 !     ########################
@@ -213,6 +217,7 @@
     USE MODD_VAR_ll, ONLY : IP
     USE MODD_CONFZ , ONLY : NZ_VERB,NZ_SPLITTING ! for debug IZ=1=flat_inv;  IZ=2=flat_invz ;  IZ=1+2=the two
 
+    use mode_msg
     USE  MODE_SPLITTING_ll , ONLY : def_splitting2
     USE MODE_TOOLS_ll   ,    ONLY : SLIDE_COORD
     !JUAN
@@ -234,6 +239,7 @@
     !
     !*       0.2   declarations of local variables
     !
+    character(len=10)       :: yval1, yval2 ! Strings for error message
     INTEGER                 :: X_DOMAINS,Y_DOMAINS,Z_DOMAINS,X_DOMAINS_NEW
     LOGICAL                 :: PREM
     INTEGER                 :: IK
@@ -244,11 +250,9 @@
     !        0. CHECK NB_PROC/NZ_PROC
     PREM = .FALSE.
     IF ( MOD(NB_PROC,KZ_PROC) .NE. 0 ) THEN
-       PRINT*
-       WRITE(*,1000) NB_PROC, KZ_PROC
-       PRINT*
-1000   FORMAT("MODE_SPLITTINGZ::SPLITZ --> NB_PROC=", I4 ," NOT DIVISIBLE BY KZ_PROC=", I4)
-       STOP
+       write( yval1, '( I10 )' ) nb_proc
+       write( yval2, '( I10 )' ) kz_proc
+       call Print_msg( NVERB_FATAL, 'GEN', 'SPLITZ', 'NB_PROC='//trim(yval1)//' not divisible by KZ_PROC='//trim(yval2) )
     ENDIF
     !
     !   Splitting in Z possible so
@@ -279,7 +283,7 @@
     !
     IF(HSPLITTING.EQ."P2P1SPLITT") THEN
        IF ((PREM).AND.(NB_PROC_XY.GT.2)) THEN
-          STOP "mode_toolsz_ll.f90::SPLITZ: NPROC PREMIER NON PREVUE !!! "
+          call Print_msg( NVERB_FATAL, 'GEN', 'SPLITZ', 'unexpected: NB_PROC_XY is a prime number' )
           !
           !   split x direction only on NB_PROC_XY - 1 processors
           !   and on reducted x-size = X_DIM - X_DIM/NB_PROC_XY -1
@@ -355,7 +359,6 @@
           ENDIF
        END IF
     END IF
-    !    STOP
     !
     ! Add 'Halo points' to global coordonne in X & Y direction
     !
diff --git a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
index d899568add0df8399a37510ae28f707abcddb1ed..a4ac0bcac29aa2115a31e0b7751e557c9c5da432 100644
--- a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
+++ b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
@@ -2,6 +2,7 @@
 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SURFEX_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ################################################################
       SUBROUTINE UPDATE_NHALO1D( NHALO, PFIELD1D, KISIZE_ll, KJSIZE_ll, KXOR, KXEND, KYOR, KYEND, HREC )
 !     ################################################################
@@ -39,25 +40,26 @@
 !!        M.Moge    08/2015 calling ABORT if local subdomain is of size < NHALO
 !!                          (this causes problems on the boundary of the domain)
 !!        M.Moge    08/2015 bug fix : changing the computation of IISIZE
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODD_SURF_PAR, ONLY : NUNDEF
+USE PARKIND1,          ONLY: JPRB
+USE YOMHOOK,           ONLY: LHOOK, DR_HOOK
 !
+USE MODD_MPIF
+USE MODD_PARAMETERS,   ONLY: JPHEXT, JPVEXT
+USE MODD_STRUCTURE_ll, ONLY: ZONE_ll, CRSPD_ll
+USE MODD_SURF_PAR,     ONLY: NUNDEF
+USE MODD_VAR_ll,       ONLY: NPROC, IP, YSPLITTING, NMNH_COMM_WORLD
 !
-USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
-USE PARKIND1  ,ONLY : JPRB
-!
+USE MODE_EXCHANGE_ll,  ONLY: SEND_RECV_FIELD
 USE MODE_ll
-USE MODE_EXCHANGE_ll, ONLY : SEND_RECV_FIELD
-USE MODE_SPLITTING_ll, ONLY : SPLIT2
-USE MODD_VAR_ll, ONLY : NPROC, IP, YSPLITTING, NMNH_COMM_WORLD
-USE MODD_MPIF
-USE MODD_STRUCTURE_ll, ONLY : ZONE_ll, CRSPD_ll
-USE MODE_TOOLS_ll, ONLY : INTERSECTION
-USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT
+use mode_msg
+USE MODE_SPLITTING_ll, ONLY: SPLIT2
+USE MODE_TOOLS_ll,     ONLY: INTERSECTION
 !
 IMPLICIT NONE
 !
@@ -97,6 +99,7 @@ TYPE(ZONE_ll), ALLOCATABLE, DIMENSION(:)  :: TZSEND, TZRECV
 TYPE(CRSPD_ll), POINTER      :: TZCRSPDSEND, TZCRSPDRECV
 TYPE(CRSPD_ll), ALLOCATABLE, DIMENSION(:), TARGET :: TZCRSPDSENDTAB, TZCRSPDRECVTAB
 !
+character(len=10) :: ydim1, ydim2, yhalo ! String for error message
 INTEGER :: J
 INTEGER :: INBMSG
 INTEGER :: ICARD
@@ -134,10 +137,11 @@ ALLOCATE(TZSPLITTING_PHYS(NPROC),TZSPLITTING_EXT(NPROC))
 ! Donc on fait un WARNING et un ABORT
 !
 IF ( NHALO > KXEND - KXOR + 1 .OR. NHALO > KYEND - KYOR + 1 ) THEN
-  WRITE(*,*) "ERROR in UPDATE_NHALO1D : size of local subdomain is (", KXEND - KXOR + 1,",",KYEND - KYOR + 1, &
-       ") which is less than NHALO=",NHALO
-  WRITE(*,*) "Try with less MPI processes or a larger domain"
-  CALL ABORT
+  write( ydim1, '( I10 )' ) KXEND - KXOR + 1
+  write( ydim2, '( I10 )' ) KYEND - KYOR + 1
+  write( yhalo, '( I10 )' ) NHALO
+  call Print_msg( NVERB_FATAL, 'GEN', 'UPDATE_NHALO1D', 'local subdomain ('//trim(ydim1)//'x'//trim(ydim2)// &
+                  ') is smaller than NHALO ('//trim(yhalo)//'). Try with less MPI processes or a larger domain.' )
 ENDIF
 !
 ! physical splitting of the field
diff --git a/src/MNH/BASIC.f90 b/src/MNH/BASIC.f90
index 854c2bc061371c9013b47bae9cbb93f6b8f0d6b0..0160a3c40994be611effb8b9506eabb2fa0f9bf0 100755
--- a/src/MNH/BASIC.f90
+++ b/src/MNH/BASIC.f90
@@ -1,3 +1,5 @@
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !========================================================================
 !
@@ -35369,7 +35371,7 @@ CONTAINS
 !!
 !!    EXTERNAL
 !!    --------
-!!    none
+use mode_msg
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -35380,7 +35382,7 @@ CONTAINS
 IMPLICIT NONE
 ! check if output array is large enough
 IF (KINDEXDIM.LT.942) THEN
-  STOP 'CH_NONZEROTERMS ERROR: array KINDEX is too small!'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_NONZEROTERMS_AQ', 'array KINDEX is too small' )
 END IF
  KINDEX(1, 1)=3
  KINDEX(2, 1)=1
@@ -37305,7 +37307,7 @@ END SUBROUTINE CH_NONZEROTERMS_AQ
 !!
 !!    EXTERNAL
 !!    --------
-!!    none
+use mode_msg
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -37316,7 +37318,7 @@ END SUBROUTINE CH_NONZEROTERMS_AQ
 IMPLICIT NONE
 ! check if output array is large enough
 IF (KINDEXDIM.LT.606) THEN
-  STOP 'CH_NONZEROTERMS ERROR: array KINDEX is too small!'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_NONZEROTERMS_GAZ', 'array KINDEX is too small' )
 END IF
  KINDEX(1, 1)=3
  KINDEX(2, 1)=1
@@ -38643,7 +38645,7 @@ CONTAINS
 !!
 !!    EXTERNAL
 !!    --------
-!!    none
+use mode_msg
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -38662,7 +38664,7 @@ IMPLICIT NONE
 !!    ---------------------
 ! check if output array is large enough
 IF (KSPARSEDIM.LT.745) THEN
-  STOP 'CH_SPARSE ERROR: array KSPARSE is too small!'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SPARSE_AQ', 'array KSPARSE is too small' )
 END IF
 !O3/O3
  KSPARSE(1, 1)=1
@@ -40935,7 +40937,7 @@ END SUBROUTINE CH_SPARSE_AQ
 !!
 !!    EXTERNAL
 !!    --------
-!!    none
+use mode_msg
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -40954,7 +40956,7 @@ IMPLICIT NONE
 !!    ---------------------
 ! check if output array is large enough
 IF (KSPARSEDIM.LT.449) THEN
-  STOP 'CH_SPARSE ERROR: array KSPARSE is too small!'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SPARSE_GAZ', 'array KSPARSE is too small' )
 END IF
 !O3/O3
  KSPARSE(1, 1)=1
diff --git a/src/MNH/advec_weno_k_3_aux.f90 b/src/MNH/advec_weno_k_3_aux.f90
index 860a9638f27debaf46704e08cdba034f6d2a46de..7d99247aa8bb5166da59f316b59e99f84f39bec5 100644
--- a/src/MNH/advec_weno_k_3_aux.f90
+++ b/src/MNH/advec_weno_k_3_aux.f90
@@ -1,7 +1,11 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!-----------------------------------------------------------------
 !     ##############################
       MODULE MODI_ADVEC_WENO_K_3_AUX
 !     ##############################
@@ -132,9 +136,11 @@ END MODULE MODI_ADVEC_WENO_K_3_AUX
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODE_ll
-USE MODD_LUNIT
 USE MODD_CONF
+USE MODD_LUNIT
+!
+USE MODE_ll
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -354,9 +360,7 @@ ZFNEG3(IW,:,:)   = 1./6 * (-1.0*PSRC(IW-1,:,:) + 5.0*PSRC(IW,:,:)   + 2.0*PSRC(I
  ZOMN3(IW-1:IW,:,:) = 3./10. / (ZEPS + ZBNEG3(IW-1:IW,:,:))**2 ! Non-normalized weight IW,IW-1
 !
  ELSE ! East boundary is proc border, with NHALO < 3 on west side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on west side'
-  CALL ABORT  
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_UX','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on west side')
  ENDIF
 !
  ! Third positive stencil, needs indices i, i+1, i+2
@@ -439,9 +443,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/west-int not parallelisable with NHALO < 3' 
- CALL ABORT 
- STOP ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_UX','WENO5/west-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >3 => WENO5 for all boundary points
@@ -596,9 +598,7 @@ IF( LEAST_ll() ) THEN
  ZOMN2(IE-1:IE,:,:) = 3./5. / (ZEPS + ZBNEG2(IE-1:IE,:,:))**2 ! Non-normalized weight IE-1,IE
 !
  ELSE ! West boundary is proc border, with NHALO < 3 on east side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on east side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_UX','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on east side')
  ENDIF
 !
  ! First positive stencil, needs indices i-2, i-1, i 
@@ -681,9 +681,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/east-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_UX','WENO5/east-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >= 3 => WENO5 for all boundary points
@@ -791,9 +789,11 @@ END SUBROUTINE ADVEC_WENO_K_3_UX
 !!
 !------------------------------------------------------------------------------
 !
-USE MODE_ll
-USE MODD_LUNIT
 USE MODD_CONF
+USE MODD_LUNIT
+!
+USE MODE_ll
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -1014,9 +1014,7 @@ IF( LWEST_ll() ) THEN
  ZOMN3(IW:IW+1,:,:) = 3./10. / (ZEPS + ZBNEG3(IW:IW+1,:,:))**2 ! Non-normalized weight IW+1,IW
 !
  ELSE ! East boundary is proc border, with NHALO < 3 on west side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on west side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MX','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on west side')
  ENDIF
 ! 
  ! Third positive stencil, needs indices i-1, i, i+1
@@ -1099,9 +1097,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/west-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MX','WENO5/west-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >3 => WENO5 for all boundary points
@@ -1255,9 +1251,7 @@ IF(LEAST_ll() ) THEN
  ZOMN2(IE:IE+1,:,:) = 3./5. / (ZEPS + ZBNEG2(IE:IE+1,:,:))**2 ! Non-normalized weight IE,IE+1
 !
  ELSE ! West boundary is proc border, with NHALO < 3 on east side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on east side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MX','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on east side')
  ENDIF
 !
  ! First positive stencil, needs indices i-3, i-2, i-1 
@@ -1339,9 +1333,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/east-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MX','WENO5/east-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >= 3 => WENO5 for all boundary points
@@ -1450,9 +1442,11 @@ END SUBROUTINE ADVEC_WENO_K_3_MX
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODE_ll
-USE MODD_LUNIT
 USE MODD_CONF
+USE MODD_LUNIT
+!
+USE MODE_ll
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -1675,9 +1669,7 @@ IF(LSOUTH_ll()) THEN
  ZOMN3(:,IS:IS+1,:) = 3./10. / (ZEPS + ZBNEG3(:,IS:IS+1,:))**2 ! Non-normalized weight IS+1,IS
 ! 
  ELSE ! North boundary is proc border, with NHALO < 3 on south side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MY','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side')
  ENDIF
 ! 
  ! Third positive stencil, needs indices i-1, i, i+1
@@ -1761,9 +1753,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/south-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MY','WENO5/south-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >3 => WENO5 for all boundary points
@@ -1917,9 +1907,7 @@ IF( LNORTH_ll() ) THEN
  ZOMN2(:,IN:IN+1,:) = 3./5. / (ZEPS + ZBNEG2(:,IN:IN+1,:))**2 ! Non-normalized weight IN,IN+1
 !
  ELSE ! South boundary is proc border, with NHALO < 3 on south side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MY','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side')
  ENDIF
 !
  ! First positive stencil, needs indices i-3, i-2, i-1 
@@ -2001,9 +1989,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/north-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_MY','WENO5/north-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >= 3 => WENO5 for all boundary points
@@ -2111,9 +2097,11 @@ END SUBROUTINE ADVEC_WENO_K_3_MY
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODE_ll
-USE MODD_LUNIT
 USE MODD_CONF
+USE MODD_LUNIT
+!
+USE MODE_ll
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -2337,9 +2325,7 @@ IF(LSOUTH_ll() ) THEN
  ZOMN3(:,IS-1:IS,:) = 3./10. / (ZEPS + ZBNEG3(:,IS-1:IS,:))**2 ! Non-normalized weight IS,IS-1
 ! 
  ELSE ! North boundary is proc border, with NHALO < 3 on south side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_VY','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on south side')
  ENDIF
 ! 
  ! Third positive stencil, needs indices i, i+1, i+2
@@ -2424,9 +2410,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/south-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_VY','WENO5/south-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >3 => WENO5 for all boundary points
@@ -2580,9 +2564,7 @@ IF(LNORTH_ll()) THEN
  ZOMN2(:,IN-1:IN,:) = 3./5. / (ZEPS + ZBNEG2(:,IN-1:IN,:))**2 ! Non-normalized weight IN-1,IN
 !
  ELSE ! South boundary is proc border, with NHALO < 3 on north side
-  PRINT *,'ERROR : WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on north side'
-  CALL ABORT
-  STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_VY','WENO5/CYCL fluxes calculation needs JPHEXT (&NHALO) >= 3 on north side')
  ENDIF
 !
  ! First positive stencil, needs indices i-2, i-1, i 
@@ -2665,9 +2647,7 @@ ELSE
  !-----------------------------------------------------------------------------
 !
  IF (NHALO<3) THEN
- PRINT *,'ERROR : WENO5/north-int not parallelisable with NHALO < 3' 
- CALL ABORT
- STOP  ' Error in advec_weno_k_3_aux.f90 '
+  call Print_msg(NVERB_FATAL,'GEN','ADVEC_WENO_K_3_VY','WENO5/north-int not parallelisable with NHALO < 3')
  ELSEIF (NHALO>=3) THEN
  !---------------------------------------------------------------------------
  ! NHALO >= 3 => WENO5 for all boundary points
diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90
index 0241fdf9e6cbced31f7175511b68425a97287e92..ca89eb6fa98f69421bd8a007dbbb8b75cfffc51d 100644
--- a/src/MNH/advecuvw_rk.f90
+++ b/src/MNH/advecuvw_rk.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     #####################
@@ -103,24 +103,27 @@ END MODULE MODI_ADVECUVW_RK
 !!                  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
 !!                  F.Auguste and C.Lac : 08/16 : CEN4TH with RKC4
 !!                  C.Lac   10/16 : Correction on RK loop
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
+USE MODD_ARGSLIST_ll, ONLY: LIST_ll, HALO2LIST_ll
+USE MODD_CONF,        ONLY: NHALO
+USE MODD_PARAMETERS,  ONLY: JPVEXT
+!
 USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
-USE MODD_PARAMETERS,  ONLY : JPVEXT
-USE MODD_CONF,        ONLY : NHALO
+USE MODE_MPPDB
+use mode_msg
 !
-USE MODI_SHUMAN
-USE MODI_ADVECUVW_WENO_K
 USE MODI_ADV_BOUNDARIES
+USE MODI_ADVECUVW_4TH
+USE MODI_ADVECUVW_WENO_K
 USE MODI_GET_HALO
-USE MODE_MPPDB
+USE MODI_SHUMAN
 !
-USE MODI_ADVECUVW_4TH
 !
 !-------------------------------------------------------------------------------
 !
@@ -222,8 +225,7 @@ SELECT CASE (HTEMP_SCHEME)
  CASE('RK65')
   ISPL = 6
  CASE DEFAULT
-  PRINT *,'ERROR: UNKNOWN HTEMP_SCHEME'
-  CALL ABORT()
+  call Print_msg(NVERB_FATAL,'GEN','ADVECUVW_RK','unknown HTEMP_SCHEME')
 END SELECT
 !
 !
diff --git a/src/MNH/c3r5_adjust.f90 b/src/MNH/c3r5_adjust.f90
index 2beef3f30f94a0ac0c4821b38accaaf45a8710c2..84f3114c250296cc3318b4a973211ecd4b012e2d 100644
--- a/src/MNH/c3r5_adjust.f90
+++ b/src/MNH/c3r5_adjust.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 microph 2006/06/06 18:25:10
-!-----------------------------------------------------------------
 !     #######################
       MODULE MODI_C3R5_ADJUST
 !     #######################
@@ -163,12 +158,14 @@ END MODULE MODI_C3R5_ADJUST
 !!                     November 13 1996 (V. Masson) add prints in test above
 !!                     March 11, 1997 (J.-M. Cohard)  C2R2 option
 !!                     April  6, 2001 (J.-P. Pinty)   C3R5 option 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
-PRINT *,'C3R5_ADJUST IS NOT YET DEVELOPPED'
-!callabortstop
-CALL ABORT
-STOP
+!implicit none
+!
+use mode_msg
+!
+call Print_msg(NVERB_FATAL,'GEN','C3R5_ADJUST','not yet developed')
 !
 END SUBROUTINE C3R5_ADJUST
diff --git a/src/MNH/call_rttov11.f90 b/src/MNH/call_rttov11.f90
index 70d4526420fb0e31cd106a332b40b9c1ec5d69e5..254bc976c84de483419ce3623ca315b8bbc96a90 100644
--- a/src/MNH/call_rttov11.f90
+++ b/src/MNH/call_rttov11.f90
@@ -82,6 +82,7 @@ SUBROUTINE CALL_RTTOV11(KDLON, KFLEV, PEMIS, PTSRAD,     &
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      JP Chaboureau 30/05/2017 exclude the first layer when considering clouds
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!----------------------------------------------------------------------------
 !!
 !!*       0.    DECLARATIONS
@@ -421,8 +422,7 @@ DO JSAT=1,IJSAT ! loop over sensors
  ! Ensure the options and coefficients are consistent
   CALL rttov_user_options_checkinput(errorstatus, opts, coef_rttov)
   IF (errorstatus /= 0) THEN
-    WRITE(*,*) 'error in rttov options'
-    STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'CALL_RTTOV11', 'error in rttov options' )
   ENDIF
 
 !!  opts%interpolation%reg_limit_extrap = .TRUE.
diff --git a/src/MNH/ch_aer_eqm_init0d.f90 b/src/MNH/ch_aer_eqm_init0d.f90
index f6936c22d955afe568f97d051655a9886286303f..3f2dfddc421eb83810271bdcfd83fe858682b6f7 100644
--- a/src/MNH/ch_aer_eqm_init0d.f90
+++ b/src/MNH/ch_aer_eqm_init0d.f90
@@ -1,13 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!   ########################
      MODULE MODI_CH_AER_EQM_INIT0d
 !!   ########################
@@ -47,7 +42,7 @@ END MODULE MODI_CH_AER_EQM_INIT0d
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!    none
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -59,9 +54,10 @@ USE MODD_CH_M9_n, ONLY : CNAMES
 USE MODD_CH_AERO_n
 USE MODD_CH_MNHC_n
 
-!!
+use mode_msg
+!
 IMPLICIT NONE
-!!
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -214,9 +210,7 @@ print*, 'COMPATIBILITY ERROR: Initialization of particle number mode I < XN0IMIN
 print*, ' MINIMAL NUMBER PARTICLE BY m3 is ', MINVAL(PM3D(:,1)),&
 'located at ',MINLOC(PM3D(:,1))
 print*, 'PLEASE CHANGE MASS OR XN0IMIN INITIALIZATION '
-!callabortstop
-CALL ABORT
-STOP
+call Print_msg( NVERB_FATAL, 'GEN', 'CH_AER_EQM_INIT0d', '' )
 END IF
     PM3D(:,4)= PM3D(:,5) / &
                ((XINIRADIUSJ**3)*EXP(4.5 * (LOG(XINISIGJ))**2))
@@ -227,9 +221,7 @@ print*, 'COMPATIBILITY ERROR: Initialization of particle number mode J < XN0JMIN
 print*, ' MINIMAL NUMBER PARTICLE BY m3 is ',MINVAL(PM3D(:,4)),&
 'located at ',MINLOC(PM3D(:,4))
 print*, 'PLEASE CHANGE MASS OR XN0JMIN INITIALIZATION '
-!callabortstop
-CALL ABORT
-STOP
+call Print_msg( NVERB_FATAL, 'GEN', 'CH_AER_EQM_INIT0d', '' )
 END IF
 
 !*       1.3    calculate moment 6 from dispersion and mean radius
diff --git a/src/MNH/ch_cranck.f90 b/src/MNH/ch_cranck.f90
index 2e4ac3c98ca36ce48a0bf795d51c84fcad40dc56..a435c9a8e0ede12d3d7367864857f364a6010f6d 100644
--- a/src/MNH/ch_cranck.f90
+++ b/src/MNH/ch_cranck.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!    ##################### 
       MODULE MODI_CH_CRANCK
 !!    ##################### 
@@ -69,8 +64,12 @@ SUBROUTINE CH_CRANCK(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KVECNPT, KMI, &
 !!    31/07/96 (K. Suhre) restructured
 !!    19/04/02 add PALPHA argument
 !!    01/12/03  (Gazen)   change Chemical scheme interface
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!
 !!    EXTERNAL
 !!    --------
+use mode_msg
+
 USE MODI_CH_FCN
 USE MODI_CH_JAC
 USE MODI_CH_GAUSS
@@ -128,9 +127,7 @@ newton: DO WHILE (MAXVAL(ZERR).GT.ZMAXERR)
 !
   IITERCOUNT = IITERCOUNT + 1
   IF (IITERCOUNT.GT.IMAXITER) THEN
-!callabortstop
-    CALL ABORT
-    STOP "CH_CRANCK ERROR: no convergence of Newton-Raphson iteration obtained"
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_CRANCK', 'no convergence of Newton-Raphson iteration obtained' )
   ENDIF
 !
 !*       2.1  calculate derivative F for next iteration
@@ -163,9 +160,7 @@ newton: DO WHILE (MAXVAL(ZERR).GT.ZMAXERR)
   IFAIL = 1
   CALL CH_GAUSS(ZB,ZC,KEQ,IFAIL)
   IF (IFAIL.NE.0) THEN
-!callabortstop
-          CALL ABORT
-    STOP 'CH_CRANCK ERROR: matrix cannot be inverted by CH_GAUSS'
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_CRANCK', 'matrix cannot be inverted by CH_GAUSS' )
   ENDIF
 !
 !*       2.5  calculate dY = ZB F (result is put in ZFTRAPEZ)
diff --git a/src/MNH/ch_emission_flux0d.f90 b/src/MNH/ch_emission_flux0d.f90
index 2795fe26734a1b37e4eb72747d3ee0e962cff544..39f3d2947b77cb9aafb9263f354fb6fa3a478b82 100644
--- a/src/MNH/ch_emission_flux0d.f90
+++ b/src/MNH/ch_emission_flux0d.f90
@@ -70,11 +70,14 @@ END MODULE MODI_CH_EMISSION_FLUX0D
 !!    -------------
 !!    Original 26/07/1999
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
 USE MODD_IO,      ONLY: TFILEDATA
+
 USE MODE_IO_FILE, ONLY: IO_File_close
+use mode_msg
 !
 USE MODI_CH_OPEN_INPUT
 !!
@@ -213,10 +216,7 @@ IF (LSFIRSTCALL) THEN
                ! where 1 microMol/m2/day = (22.414/86.400)*1E-12 ppp*m/s
     ZCONVERSION = (22.414/86.400)*1E-12
   CASE DEFAULT
-    WRITE(KLUOUT,*) 'CH_EMISSION_FLUX0D: unknow conversion factor: ', YUNIT
-!callabortstop
-    CALL ABORT
-    STOP 'CH_EMISSION_FLUX0D: unknow conversion factor' 
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_EMISSION_FLUX0D', 'unknow conversion factor: '//trim(YUNIT) )
   END SELECT
 !
 ! set all fluxes to zero
diff --git a/src/MNH/ch_f77.fx90 b/src/MNH/ch_f77.fx90
index be71fe6c01244c1265bc94f3e2f706cef92b5708..aed9e28b8e028a40bdf8509717d5b76f57a44855 100644
--- a/src/MNH/ch_f77.fx90
+++ b/src/MNH/ch_f77.fx90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1989-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -22,6 +22,7 @@ C**MODIFIED: 10/01/2019 (P.Wautelet) replace double precision declarations by
 C                       real(kind(0.0d0)) (to allow compilation by NAG compiler)
 C**MODIFIED: 08/02/2019 (P.Wautelet) bug fixes: missing argument
 C                                             + wrong use of an non initialized value
+C**MODIFIED: P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 C!
 C!
 C!
@@ -3652,6 +3653,9 @@ CDECK XERRWV
 C     ##################################################################
       SUBROUTINE XERRWV (MSG, NMES, NERR, LEVEL, NI, I1, I2, NR, R1, R2)
 C     ##################################################################
+
+      use mode_msg
+
       REAL R1, R2
       INTEGER NMES, NERR, LEVEL, NI, I1, I2, NR
 C
@@ -3720,9 +3724,7 @@ C10   FORMAT(1X,80A1)
  50   FORMAT(6X,'In above,  R1 =',E21.13,3X,'R2 =',E21.13)
 C Abort the run if LEVEL = 2. ------------------------------------------
  100  IF (LEVEL .NE. 2) RETURN
-C callabortstop
-      CALL ABORT
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'XERRWV', trim(MSG) )
       END
 C####################### End of Subroutine XERRWV ######################
 C
@@ -4506,6 +4508,8 @@ CCC FILE TUV.f
 *-----------------------------------------------------------------------------*
 *= Adapted to MesoNH : ONLY JVALUES are computed
 
+      use mode_msg
+
       IMPLICIT NONE
       SAVE
 
@@ -5142,11 +5146,8 @@ c
 C copy labels into output array
 
          if (njout .ne. 42) then
-           WRITE(kout,*) 'There should be 42 J-Values to be updated!'
-           WRITE(kout,*) 'We better stop here ... in tuvmain.f'
-C callabortstop
-           CALL ABORT
-           STOP 1
+           call Print_msg( NVERB_FATAL, 'GEN', 'tuvmain',
+     &                  'there should be 42 J-Values to be updated' )
          endif
 
          DO ij = 1, njout
@@ -5325,6 +5326,8 @@ CCC FILE grids.f
 *=  MOPT- INTEGER OPTION for wave-length IF 3 good for JO2                (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 c      INCLUDE 'params'
@@ -5689,8 +5692,8 @@ c      wlabel = 'isaksen.grid'
       CALL gridck(kw,nw,wl,ok,kout)
 
       IF (.NOT. ok) THEN
-         WRITE(*,*)'STOP in GRIDW:  The w-grid does not make sense'
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'GRIDW', 'the w-grid &
+     &does not make sense' )
       ENDIF
 
 *_______________________________________________________________________
@@ -5714,6 +5717,8 @@ c      wlabel = 'isaksen.grid'
 *=  z   - REAL, vector of altitude levels (in km)                         (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 * BROADLY USED PARAMETERS:
@@ -5949,7 +5954,9 @@ C      fill up between model top and 50km with 1km grid spacing
 20     continue
        if (z(nz) .ge. 50.) goto 30
          nz = nz + 1
-         if (nz .gt. kz) stop "GRIDZ: not enough memory, increase kz"
+         if (nz .gt. kz)
+     &     call Print_msg( NVERB_FATAL, 'GEN', 'gridz',
+     &                     'not enough memory, increase kz' )
          z(nz) = z(nz-1) + 1.
        goto 20
 C
@@ -6013,8 +6020,8 @@ c 99	CONTINUE
       CALL gridck(kz,nz,z,ok,kout)
 
       IF (.NOT. ok) THEN
-         WRITE(*,*)'STOP in GRIDZ:  The z-grid does not make sense'
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'GRIDZ', 'the z-grid &
+     &does not make sense' )
       ENDIF
 
 *_______________________________________________________________________
@@ -6416,6 +6423,8 @@ CCC FILE la_srb.f
 *=            continuum.                                                     =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      c      INCLUDE 'params'
 
@@ -6563,12 +6572,13 @@ c      c      INCLUDE 'params'
             WRITE(*,*) 'For wavelengths below 205.8 nm, only the'
             WRITE(*,*) 'pre-specified wavelength grid is permitted'
             WRITE(*,*) 'Use nwint=-156, or edit subroutine gridw.f'
-            STOP ' Lyman alpha grid mis-match - 1'
+            call Print_msg( NVERB_FATAL, 'GEN', 'la_srb',
+     &                      'Lyman alpha grid mis-match - 1' )
          ENDIF
          DO i = 2, nla + 1
             IF(ABS(wl(ila + i - 1) - wlla(i)) .GT. 10.*precis) THEN
-               WRITE(*,*) 'Lyman alpha grid mis-match - 2'
-               STOP
+              call Print_msg( NVERB_FATAL, 'GEN', 'la_srb',
+     &                        'Lyman alpha grid mis-match - 2' )
             ENDIF
          ENDDO
 
@@ -6589,12 +6599,13 @@ c      c      INCLUDE 'params'
             WRITE(*,*) 'For wavelengths below 205.8 nm, only the'
             WRITE(*,*) 'pre-specified wavelength grid is permitted'
             WRITE(*,*) 'Use nwint=-156, or edit subroutine gridw.f'
-            STOP ' SRB grid mis-match - 1'
+            call Print_msg( NVERB_FATAL, 'GEN', 'la_srb',
+     &                      'SRB grid mis-match - 1' )
          ENDIF
          DO i = 2, nsrb + 1
             IF(ABS(wl(isrb + i - 1) - wlsrb(i)) .GT. 10.* precis) THEN
-               WRITE(*,*) ' SRB grid mismatch - w'
-               STOP
+              call Print_msg( NVERB_FATAL, 'GEN', 'la_srb',
+     &                        'SRB grid mis-match - w' )
             ENDIF
          ENDDO
 
@@ -7387,6 +7398,8 @@ CCC FILE numer.f
 *=  Y   - REAL, input y-data                                              (I)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 * input:
@@ -7428,11 +7441,9 @@ CCC FILE numer.f
 * check for xg-values outside the x-range
 
       IF ( (x(1) .GT. xg(1)) .OR. (x(n) .LT. xg(ng)) ) THEN
-          WRITE(0,*) '>>> ERROR (inter2) <<<  Data do not span '//
-     >               'grid.  '
-          WRITE(0,*) '                        Use ADDPNT to '//
-     >               'expand data and re-run.'
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'inter2',
+     &                    'data do not span grid. Use ADDPNT'//
+     &                    'to expand data and re-run.' )
       ENDIF
 
 *  find the integral of each grid interval and use this to 
@@ -7555,8 +7566,10 @@ CCC FILE numer.f
 *=                         last target bin                                   =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
-      
+
 * input:
       INTEGER n, ng
       REAL xg(ng)
@@ -7575,9 +7588,8 @@ CCC FILE numer.f
 
 * check whether flag given is legal
       IF ((FoldIn .NE. 0) .AND. (FoldIn .NE. 1)) THEN
-         WRITE(0,*) '>>> ERROR (inter3) <<<  Value for FOLDIN invalid. '
-         WRITE(0,*) '                        Must be 0 or 1'
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'inter3',
+     &                  'Value for FOLDIN invalid. Must be 0 or 1.' )
       ENDIF
 
 * do interpolation
@@ -7685,6 +7697,8 @@ CCC FILE numer.f
 *=                         last target bin                                   =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
       
 * input:
@@ -7705,9 +7719,8 @@ CCC FILE numer.f
 
 * check whether flag given is legal
       IF ((FoldIn .NE. 0) .AND. (FoldIn .NE. 1)) THEN
-         WRITE(0,*) '>>> ERROR (inter3) <<<  Value for FOLDIN invalid. '
-         WRITE(0,*) '                        Must be 0 or 1'
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'inter4',
+     &                  'Value for FOLDIN invalid. Must be 0 or 1.' )
       ENDIF
 
 * do interpolation
@@ -7794,6 +7807,8 @@ CCC FILE numer.f
 *=  YNEW - REAL, y-value of point to be added                             (I)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 * calling parameters
@@ -7812,9 +7827,8 @@ CCC FILE numer.f
 * check n<ld to make sure x will hold another point
 
       IF (n .GE. ld) THEN
-         WRITE(0,*) '>>> ERROR (ADDPNT) <<<  Cannot expand array '
-         WRITE(0,*) '                        All elements used.'
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'addpnt',
+     &                  'Cannot expand array. All elements used.' )
       ENDIF
 
       insert = 1
@@ -7827,9 +7841,8 @@ CCC FILE numer.f
  10   CONTINUE
       IF (i .LT. n) THEN
         IF (x(i) .LT. x(i-1)) THEN
-           WRITE(0,*) '>>> ERROR (ADDPNT) <<<  x-data must be '//
-     >                'in ascending order!'
-           STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'addpnt',
+     &                    'x-data must be in ascending order' )
         ELSE
            IF (xnew .GT. x(i)) insert = i + 1
         ENDIF
@@ -8774,6 +8787,8 @@ CCC FILE qys.f
 *= send email to:  sasha@ucar.edu                                            =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      c      INCLUDE 'params'
 
@@ -8945,8 +8960,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -8971,8 +8986,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -8997,8 +9012,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9023,8 +9038,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9050,8 +9065,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9078,8 +9093,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9135,8 +9150,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9161,8 +9176,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
          DO iw = 1, nw-1
             f(iw) = yg1(iw)
          ENDDO
@@ -9243,8 +9258,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
 
          fil = 'DATAE1/SUN/neckel.flx'
          write(kout,*) fil
@@ -9338,8 +9353,8 @@ c      c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
 
          fil = 'DATAE1/SUN/neckel.flx'
          write(kout,*) fil
@@ -9382,8 +9397,8 @@ c            y1(i) = y1(i) * 1.E4 * hc / (x1(i) * 1.E-9)
          CALL inter2(nw,wl,yg4,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, fil
-            STOP
-         ENDIF         
+            call Print_msg( NVERB_FATAL, 'GEN', 'rdetfl', '' )
+         ENDIF
 
 *    for wl(iw) .lt. 150.01                                 susim_hi.flx
 *    for wl(iw) .ge. 150.01 .and. wl(iw) .lt. 200.07        atlas3.flx
@@ -9427,6 +9442,8 @@ c            y1(i) = y1(i) * 1.E4 * hc / (x1(i) * 1.E-9)
 *=           each specified wavelength                                       =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      c      INCLUDE 'params'
 
@@ -9546,7 +9563,7 @@ c      c      INCLUDE 'params'
       CALL inter2(nw,wl,f,n,lambda_hi,irrad_hi,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, fil
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'read1', '' )
       ENDIF
 
       RETURN
@@ -9738,6 +9755,8 @@ CCC FILE rdxs.f
 *=           each specified wavelength (WMO value at 273)                    =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -9958,7 +9977,7 @@ c     INCLUDE 'params'
          ENDDO
 
       ELSE
-         STOP 'mabs not set in rdxs.f'
+         call Print_msg( NVERB_FATAL, 'GEN', 'rdo3xs', 'mabs not set' )
       ENDIF
 
       RETURN
@@ -9988,6 +10007,8 @@ c     INCLUDE 'params'
 *=  V830   - REAL, exact wavelength in vacuum for data breaks             (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -10118,8 +10139,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n1,            1.e+38,0.)
       CALL inter2(nw,wl,rei295,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - Reims 295K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_rei',
+     &                   'O3 xsect - Reims 295K' )
       ENDIF
 
       DO i = 1, n2
@@ -10137,8 +10158,8 @@ c     INCLUDE 'params'
       CALL addpnt(x2,y2,kdata,n2,            1.e+38,0.)
       CALL inter2(nw,wl,rei243,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - Reims 243K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_rei',
+     &                   'O3 xsect - Reims 243K' )
       ENDIF
 
       CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -10147,8 +10168,8 @@ c     INCLUDE 'params'
       CALL addpnt(x3,y3,kdata,n3,            1.e+38,0.)
       CALL inter2(nw,wl,rei228,n3,x3,y3,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - Reims 228K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_rei',
+     &                   'O3 xsect - Reims 228K' )
       ENDIF
 
       CALL addpnt(x4,y4,kdata,n4,x4(1)*(1.-deltax),0.)
@@ -10157,8 +10178,8 @@ c     INCLUDE 'params'
       CALL addpnt(x4,y4,kdata,n4,            1.e+38,0.)
       CALL inter2(nw,wl,rei218,n4,x4,y4,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - Reims 218K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_rei',
+     &                   'O3 xsect - Reims 218K' )
       ENDIF
 
 * wavelength breaks must be converted to vacuum:
@@ -10191,6 +10212,8 @@ c     INCLUDE 'params'
 *=  V850   - REAL, exact wavelength in vacuum for data breaks             (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      c      INCLUDE 'params'
 
@@ -10308,8 +10331,8 @@ c      c      INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n1,           1.e+38,0.)
       CALL inter2(nw,wl,wmo203,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 cross section - WMO - 203K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_wmo',
+     &                   'O3 cross section - WMO - 203K' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -10318,8 +10341,8 @@ c      c      INCLUDE 'params'
       CALL addpnt(x2,y2,kdata,n2,           1.e+38,0.)
       CALL inter2(nw,wl,wmo273,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 cross section - WMO - 273K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_wmo',
+     &                   'O3 cross section - WMO - 273K' )
       ENDIF
 
 * wavelength breaks must be converted to vacuum:
@@ -10353,6 +10376,8 @@ c      c      INCLUDE 'params'
 *=  V825   - REAL, exact wavelength in vacuum for data breaks             (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -10468,8 +10493,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n1,           1.e+38,0.)
       CALL inter2(nw,wl,jpl295,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 cross section - WMO - 295K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_jpl',
+     &                   'O3 cross section - WMO - 295K' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -10478,8 +10503,8 @@ c     INCLUDE 'params'
       CALL addpnt(x2,y2,kdata,n2,           1.e+38,0.)
       CALL inter2(nw,wl,jpl218,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 cross section - WMO - 218K'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_jpl',
+     &                   'O3 cross section - WMO - 218K' )
       ENDIF
 
 * wavelength breaks must be converted to vacuum:
@@ -10515,6 +10540,8 @@ c     INCLUDE 'params'
 *=  V350   - REAL, exact wavelength in vacuum for data breaks             (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -10659,8 +10686,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n1,            1.e+38,0.)
       CALL inter2(nw,wl,mol226,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - 226K Molina'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_mol',
+     &                   'O3 xsect - 226K Molina' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -10669,8 +10696,8 @@ c     INCLUDE 'params'
       CALL addpnt(x2,y2,kdata,n2,            1.e+38,0.)
       CALL inter2(nw,wl,mol263,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - 263K Molina'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_mol',
+     &                   'O3 xsect - 263K Molina' )
       ENDIF
 
       CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -10679,8 +10706,8 @@ c     INCLUDE 'params'
       CALL addpnt(x3,y3,kdata,n3,            1.e+38,0.)
       CALL inter2(nw,wl,mol298,n3,x3,y3,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - 298K Molina'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_mol',
+     &                   'O3 xsect - 298K Molina' )
       ENDIF
 
       RETURN
@@ -10707,6 +10734,8 @@ c     INCLUDE 'params'
 *=  Vb342   - REAL, exact wavelength in vacuum for data breaks            (O)=*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -10831,8 +10860,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n1,            1.e+38,0.)
       CALL inter2(nw,wl,c0,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - c0 Bass'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_bas',
+     &                   'O3 xsect - c0 Bass' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -10841,8 +10870,8 @@ c     INCLUDE 'params'
       CALL addpnt(x2,y2,kdata,n2,            1.e+38,0.)
       CALL inter2(nw,wl,c1,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - c1 Bass'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_bas',
+     &                   'O3 xsect - c1 Bass' )
       ENDIF
 
       CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -10851,8 +10880,8 @@ c     INCLUDE 'params'
       CALL addpnt(x3,y3,kdata,n3,            1.e+38,0.)
       CALL inter2(nw,wl,c2,n3,x3,y3,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O3 xsect - c2 Bass'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'o3_bas',
+     &                   'O3 xsect - c2 Bass' )
       ENDIF
 
       RETURN
@@ -10877,6 +10906,8 @@ c     INCLUDE 'params'
 *=
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -10999,8 +11030,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n,              1.E+38,0.)
       CALL inter2(nw,wl,o2xs1, n,x1,y1, ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, 'O2 -> O + O'
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'rdo2xs',
+     &                   'O2 -> O + O' )
       ENDIF
 
 *------------------------------------------------------
@@ -11122,6 +11153,8 @@ c     INCLUDE 'params'
 
       SUBROUTINE no2xs_d(nz,t,nw,wl, no2xs,kout)
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -11228,8 +11261,8 @@ c     INCLUDE 'params'
       CALL addpnt(x1,y1,kdata,n,      1.e+38,0.)
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
-         WRITE(*,*) ierr, fil
-         STOP
+        WRITE(*,*) ierr, fil
+        call Print_msg( NVERB_FATAL, 'GEN', 'no2xs_d', '' )
       ENDIF
 
 * assign, same at all altitudes (no temperature effect)     
@@ -11768,6 +11801,8 @@ c     INCLUDE 'params'
 *= send email to:  sasha@ucar.edu                                            =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -11870,7 +11905,7 @@ c      n = 681
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, fil
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'rdso2xs', '' )
       ENDIF
       
       DO 13, l = 1, nw-1
@@ -12754,6 +12789,8 @@ c         mu1(i) = 0.5
 * solves tridiagonal system.  From Numerical Recipies, p. 40
 *_______________________________________________________________________
 
+      use mode_msg
+
       IMPLICIT NONE
 
 * input:
@@ -12826,13 +12863,17 @@ c     INCLUDE 'params'
       DIMENSION gam(2*kz)
 *_______________________________________________________________________
 
-      IF (b(1) .EQ. 0.) STOP 1001
+      IF (b(1) .EQ. 0.) THEN
+        call Print_msg( NVERB_FATAL, 'GEN', 'tridiag', '' )
+      END IF
       bet   = b(1)
       u(1) = r(1)/bet
       DO 11, j = 2, n   
          gam(j) = c(j - 1)/bet
          bet = b(j) - a(j)*gam(j)
-         IF (bet .EQ. 0.) STOP 2002 
+         IF (bet .EQ. 0.) THEN
+           call Print_msg( NVERB_FATAL, 'GEN', 'tridiag', '' )
+         END IF
          u(j) = (r(j) - a(j)*u(j - 1))/bet
    11 CONTINUE
       DO 12, j = n - 1, 1, -1  
@@ -13678,6 +13719,8 @@ c   Called by- SOLEIG
 c   Calls- D1MACH, ERRMSG
 c +-------------------------------------------------------------------+
 
+      use mode_msg
+
 c     .. Scalar Arguments ..
 
       INTEGER   IA, IER, IEVEC, M
@@ -14101,8 +14144,8 @@ c                                        ** One eigenvalue found
 C next line has been included to avoid run time error caused by xlf
 
       IF ( ( N1.LE.0 ).OR.( N.LE.0 ) ) THEN
-        WRITE(0,*) 'Subscript out of bounds in ASYMTX'
-        STOP 9999
+        call Print_msg( NVERB_FATAL, 'GEN', 'ASYMTX',
+     &                  'subscript out of bounds' )
       ENDIF
 
       Y  = AAD( N1, N1 )
@@ -17744,6 +17787,8 @@ c
 c        Print out a warning or error message;  abort if error
 c        after making symbolic dump (machine-specific)
 
+      use mode_msg
+
       LOGICAL       FATAL, MsgLim, Cray
       CHARACTER*(*) MESSAG
       INTEGER       MaxMsg, NumMsg
@@ -17752,24 +17797,21 @@ c        after making symbolic dump (machine-specific)
 
 
       IF ( FATAL )  THEN
-         WRITE ( *, '(//,2A,//)' )  ' ******* ERROR >>>>>>  ', MESSAG
-         STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'ErrMsg', trim(MESSAG) )
       END IF
 
       NumMsg = NumMsg + 1
       IF( MsgLim )  RETURN
 
       IF ( NumMsg.LE.MaxMsg )  THEN
-         WRITE ( *, '(/,2A,/)' )  ' ******* WARNING >>>>>>  ', MESSAG
+        call Print_msg( NVERB_WARNING, 'GEN', 'ErrMsg', trim(MESSAG) )
       ELSE
-         WRITE ( *,99 )
-         MsgLim = .True.
+        call Print_msg( NVERB_WARNING, 'GEN', 'ErrMsg',
+     &                  'too many warning messages. ' //
+     &                  'They will no longer be printed.' )
+        MsgLim = .True.
       ENDIF
 
-      RETURN
-
-   99 FORMAT( //,' >>>>>>  TOO MANY WARNING MESSAGES --  ',
-     $   'They will no longer be printed  <<<<<<<', // )
       END
 
 c -------------------------------------------------------------------------
@@ -19080,6 +19122,8 @@ C     ##############################
 *=  (see routine T665D for more information on different constants)          =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       EXTERNAL t665d
       REAL(kind(0.0d0)) :: d1mach
       INTEGER i
@@ -19099,8 +19143,8 @@ C     ##############################
         ENDIF
         d1mach = dmach(i)
       ELSE
-        WRITE(0,*) '>>> ERROR (D1MACH) <<<  invalid argument'
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'D1MACH',
+     &                  'invalid argument' )
       ENDIF
 
 *!csm
@@ -19343,6 +19387,8 @@ C---------- LAST CARD OF T665D ----------
 *=  (see routine T665R for more information on different constants)          =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       REAL r1mach
       INTEGER i
    
@@ -19361,8 +19407,8 @@ C---------- LAST CARD OF T665D ----------
         ENDIF
         r1mach = rmach(i)
       ELSE
-        WRITE(0,*) '>>> ERROR (R1MACH) <<<  invalid argument'
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'R1MACH',
+     &                 'invalid argument' )
       ENDIF
 
       END
@@ -19686,6 +19732,8 @@ CCC FILE rxn.f
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -19865,7 +19913,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
 
         CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -19875,7 +19923,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
       ENDIF
 
@@ -19902,7 +19950,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
 
         CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -19912,7 +19960,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
       ENDIF
 
@@ -19953,7 +20001,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg1, n1,x1,y1, ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
 
         CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -19964,7 +20012,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg2, n2,x2,y2, ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
 
 * phi data at 298 and 230 K
@@ -19977,7 +20025,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg3, n3,x3,y3, ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr,jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
 
         CALL addpnt(x4,y4,kdata,n4,x4(1)*(1.-deltax),y4(1))
@@ -19988,7 +20036,7 @@ c      myld = kjpl00
         CALL inter2(nw,wl,yg4, n4,x4,y4, ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr,jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r01', '' )
         ENDIF
       ENDIF
 
@@ -20144,6 +20192,7 @@ c      myld = kjpl00
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
 
       IMPLICIT NONE
 c     INCLUDE 'params'
@@ -20285,7 +20334,7 @@ c     INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r02', '' )
       ENDIF
 
       do iw = 1, nw - 1
@@ -20317,7 +20366,7 @@ c     INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r02', '' )
       ENDIF
 
 
@@ -20328,7 +20377,7 @@ c     INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r02', '' )
       ENDIF
          
          DO iw = 1, nw - 1
@@ -20386,6 +20435,8 @@ c     INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 * BROADLY USED PARAMETERS:
@@ -20532,7 +20583,7 @@ c     INCLUDE 'params'
         CALL inter2(nw,wl,yg,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
           WRITE(*,*) ierr, jlabel(j)
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'r03', '' )
         ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -20556,7 +20607,7 @@ c     INCLUDE 'params'
         CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
           WRITE(*,*) ierr, jlabel(j)
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'r03', '' )
         ENDIF
 
 * use JPL94 for wavelengths longer than 600 nm
@@ -20587,7 +20638,7 @@ c     INCLUDE 'params'
         CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
           WRITE(*,*) ierr, jlabel(j)
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'r03', '' )
         ENDIF
 
       ENDIF
@@ -20794,6 +20845,8 @@ c     INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -20924,7 +20977,7 @@ c     INCLUDE 'params'
       CALL inter2(nw,wl,yg1, n1,x1,y1, ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr,jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r04', '' )
       ENDIF
 
       CALL addpnt(x2,B,kdata, n2,x2(1)*(1.-deltax),0.)
@@ -20935,7 +20988,7 @@ c     INCLUDE 'params'
       CALL inter2(nw,wl,yg2, n2,x2,B, ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr,jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r04', '' )
       ENDIF
 
 
@@ -21000,6 +21053,8 @@ c     INCLUDE 'params'
 *=  05/98  Original, adapted from former JSPEC1 subroutine                   =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -21124,7 +21179,7 @@ c     INCLUDE 'params'
         CALL inter2(nw,wl,yg,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
           WRITE(*,*) ierr, jlabel(j)
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'r05', '' )
         ENDIF
 
       ELSEIF(mabs .eq. 2) then
@@ -21147,7 +21202,7 @@ c     INCLUDE 'params'
         CALL inter2(nw,wl,yg,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
           WRITE(*,*) ierr, jlabel(j)
-          STOP
+          call Print_msg( NVERB_FATAL, 'GEN', 'r05', '' )
         ENDIF
 
       ENDIF
@@ -21197,6 +21252,8 @@ c     INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -21347,7 +21404,7 @@ C      ENDDO
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r06', '' )
       ENDIF
 
 
@@ -21358,7 +21415,7 @@ C      ENDDO
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r06', '' )
       ENDIF
 
 * quantum yield = 1
@@ -21405,6 +21462,8 @@ C      ENDDO
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c     INCLUDE 'params'
 
@@ -21518,7 +21577,7 @@ C* local
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r07', '' )
       ENDIF
 
 * quantum yield = 1
@@ -21567,6 +21626,8 @@ C* local
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -21719,7 +21780,7 @@ C      ENDIF
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r08', '' )
       ENDIF
 
       A0 = 6.4761E+04            
@@ -21803,6 +21864,8 @@ C      ENDIF
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -21977,7 +22040,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -21987,7 +22050,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
       ENDIF
 
       CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),y3(1))
@@ -22007,7 +22070,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg4,n4,x4,y4,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
       ENDIF
 
       CALL addpnt(x5,y5,kdata,n5,x5(1)*(1.-deltax),y5(1))
@@ -22017,7 +22080,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg5,n5,x5,y5,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
       ENDIF
 
 
@@ -22079,7 +22142,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
       ENDIF
 
 * quantum yield = 1
@@ -22151,6 +22214,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -22335,7 +22400,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
          ENDIF
 
       ELSEIF (mopt1 .EQ. 2 .OR. mopt1 .EQ. 3 .OR. mopt1 .EQ. 4) THEN
@@ -22357,7 +22422,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r09', '' )
          ENDIF
 
          IF(mopt1 .EQ. 3) THEN
@@ -22411,7 +22476,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -22421,7 +22486,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg3,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
       ELSEIF(mopt1 .eq. 4) THEN
@@ -22447,7 +22512,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
             ENDIF
 
             CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -22457,7 +22522,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg3,n3,x3,y3,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
             ENDIF
 
          ENDIF
@@ -22484,7 +22549,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
       ELSEIF(mopt1 .EQ. 6) THEN
@@ -22510,7 +22575,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
             ENDIF
 
             CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -22520,7 +22585,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg3,n3,x3,y3,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
             ENDIF
 
       ENDIF
@@ -22546,7 +22611,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg4,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
          OPEN(NEWUNIT=ilu,FILE='DATAJ1/CH2O/CH2O_ii_mad.yld',
@@ -22566,7 +22631,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg5,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
       ELSEIF(mopt2 .EQ. 2) then
@@ -22592,7 +22657,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg4,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -22602,7 +22667,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg5,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
 * box-filling interpolation.  
@@ -22653,7 +22718,7 @@ c         ENDDO
          CALL inter2(nw,wl,yg4,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -22663,7 +22728,7 @@ c         ENDDO
          CALL inter2(nw,wl,yg5,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r10', '' )
          ENDIF
 
       ENDIF
@@ -22771,6 +22836,8 @@ c         ENDDO
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -22928,7 +22995,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -22955,7 +23022,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 3) THEN
@@ -22978,7 +23045,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 4) THEN
@@ -23016,7 +23083,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 5) THEN
@@ -23040,7 +23107,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ENDIF
@@ -23070,7 +23137,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -23080,7 +23147,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
          DO iw = 1, nw-1
@@ -23106,7 +23173,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
       
          OPEN(NEWUNIT=ilu,FILE='DATAJ1/CH3CHO/d021_ii.yld',
@@ -23127,7 +23194,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg2,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
          OPEN(NEWUNIT=ilu,FILE='DATAJ1/CH3CHO/d021_iii.yld',
@@ -23148,7 +23215,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg3,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
       ENDIF
@@ -23173,7 +23240,7 @@ c         n = 1705
          CALL inter2(nw,wl,yg4,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r11', '' )
          ENDIF
 
 * combine:
@@ -23265,6 +23332,8 @@ c         x = yg4(iw)
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -23402,7 +23471,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r12', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -23425,7 +23494,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r12', '' )
          ENDIF
 
       ENDIF
@@ -23453,12 +23522,12 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r12', '' )
          ENDIF
 
       ELSEIF (myld .EQ. 2) THEN
 
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r12', '' )
 
       ENDIF
 
@@ -23522,6 +23591,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -23695,7 +23766,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
 
@@ -23719,7 +23790,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 3) THEN
@@ -23747,7 +23818,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 4) THEN
@@ -23772,7 +23843,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
       ELSEIF(mabs .eq. 5) then
@@ -23797,7 +23868,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
       ENDIF
@@ -23830,7 +23901,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
          n2 = n
 
@@ -23844,7 +23915,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n2,x1,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
          n3 = n
@@ -23858,7 +23929,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg3,n3,x1,y3,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r13', '' )
          ENDIF
 
       ENDIF
@@ -23954,6 +24025,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -24112,7 +24185,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
          OPEN(NEWUNIT=ilu,FILE='DATAJ1/CH3COCHO/CH3COCHO_iup2.abs',
@@ -24134,7 +24207,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
          DO iw = 1, nw-1 
@@ -24162,7 +24235,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
       ELSEIF(mabs .GT. 2 .and. mabs .lt. 7) THEN
@@ -24203,7 +24276,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
          ELSEIF(mabs .EQ. 7) THEN
@@ -24227,7 +24300,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
       ENDIF
 
 
@@ -24249,7 +24322,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
          do iw = 1, nw-1
@@ -24277,7 +24350,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
          ENDIF
 
       ENDIF
@@ -24306,7 +24379,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
             ENDIF
 
             CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),1.)
@@ -24316,7 +24389,7 @@ c      INCLUDE 'params'
             CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
             IF (ierr .NE. 0) THEN
                WRITE(*,*) ierr, jlabel(j)
-               STOP
+               call Print_msg( NVERB_FATAL, 'GEN', 'r14', '' )
             ENDIF
 
          ENDIF
@@ -24436,6 +24509,8 @@ c               kq = 1.93e4 * EXP(-5639/wc(iw))
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -24585,7 +24660,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -24609,7 +24684,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 3) THEN
@@ -24637,7 +24712,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -24647,7 +24722,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
 
@@ -24658,7 +24733,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg3,n3,x3,y3,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
       ELSEIF(mabs.eq.4) then
@@ -24691,7 +24766,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -24701,7 +24776,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
          CALL addpnt(x3,y3,kdata,n3,x3(1)*(1.-deltax),0.)
@@ -24711,7 +24786,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg3,n3,x3,y3,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
          CALL addpnt(x4,y4,kdata,n4,x4(1)*(1.-deltax),0.)
@@ -24721,7 +24796,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg4,n4,x4,y4,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
       ENDIF
@@ -24746,7 +24821,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r15', '' )
          ENDIF
 
       ENDIF
@@ -24857,6 +24932,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -24995,7 +25072,7 @@ c     $        STATUS='old')
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r16', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 2) THEN
@@ -25019,7 +25096,7 @@ c     $        STATUS='old')
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r16', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 3) THEN
@@ -25042,7 +25119,7 @@ c     $        STATUS='old')
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r16', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 4) THEN
@@ -25065,7 +25142,7 @@ c     $        STATUS='old')
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r16', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 5) THEN
@@ -25089,7 +25166,7 @@ c     $        STATUS='old')
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r16', '' )
          ENDIF
 
       ENDIF
@@ -25151,6 +25228,8 @@ c     $        STATUS='old')
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -25286,7 +25365,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -25315,7 +25394,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -25325,7 +25404,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 3) THEN
@@ -25350,7 +25429,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 4) THEN
@@ -25380,7 +25459,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
          CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),y2(1))
@@ -25390,7 +25469,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 5) THEN
@@ -25414,7 +25493,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 6) THEN
@@ -25449,7 +25528,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF (mabs .EQ. 8) THEN
@@ -25473,7 +25552,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ELSEIF (mabs. eq. 9) THEN
@@ -25500,7 +25579,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
          n2 = n
@@ -25511,7 +25590,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r17', '' )
          ENDIF
 
       ENDIF
@@ -25571,6 +25650,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -25720,7 +25801,7 @@ C      ENDIF
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r18', '' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -25730,7 +25811,7 @@ C      ENDIF
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r18', '' )
       ENDIF
 
 * quantum yield:
@@ -25786,6 +25867,8 @@ C      ENDIF
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -25903,7 +25986,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r19', '' )
       ENDIF
 
 *** quantum yield unity (Calvert and Pitts)
@@ -25948,6 +26031,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+       use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -26076,7 +26161,7 @@ c      INCLUDE 'params'
         CALL inter2(nw,wl,yg,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r20', '' )
         ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -26100,7 +26185,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r20', '' )
          ENDIF
 
       ENDIF
@@ -26180,6 +26265,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -26298,7 +26385,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r21', '' )
       ENDIF
 
 *** quantum yield unity
@@ -26343,6 +26430,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -26461,7 +26550,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r22', '' )
       ENDIF
 
 *** quantum yield unity (Nolle et al.)
@@ -26507,6 +26596,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -26636,7 +26727,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r23', '' )
       ENDIF
 
 * sigma @ 210 K
@@ -26650,7 +26741,7 @@ c      INCLUDE 'params'
  
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r23', '' )
       ENDIF
 
 *** quantum yield assumed to be unity
@@ -26699,6 +26790,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -26828,7 +26921,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r24', '' )
       ENDIF
 
 * sigma @ 210 K
@@ -26842,7 +26935,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r24', '' )
       ENDIF
 
 *** quantum yield assumed to be unity
@@ -26890,6 +26983,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27009,7 +27104,7 @@ c      INCLUDE 'params'
     
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r25', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -27055,6 +27150,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27177,7 +27274,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r26', '' )
       ENDIF 
 
 **** quantum yield assumed to be unity
@@ -27224,6 +27321,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27346,7 +27445,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r27', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -27393,6 +27492,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27511,7 +27612,7 @@ c      INCLUDE 'params'
   
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r28', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -27558,6 +27659,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27690,7 +27793,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r29', '' )
       ENDIF
 
 ** sigma @ 250 K
@@ -27704,7 +27807,7 @@ c      INCLUDE 'params'
       
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r29', '' )
       ENDIF
 
 ** sigma @ 210 K
@@ -27718,7 +27821,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r29', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -27774,6 +27877,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -27906,7 +28011,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r30', '' )
       ENDIF
 
 ** sigma @ 279 K
@@ -27920,7 +28025,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r30', '' )
       ENDIF
 
 ** sigma @ 255 K
@@ -27934,7 +28039,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r30', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -27989,6 +28094,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -28109,7 +28216,7 @@ C     INTEGER n1, n2, n3, n4, n5
  
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r31', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -28155,6 +28262,8 @@ C     INTEGER n1, n2, n3, n4, n5
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -28565,6 +28674,8 @@ C     ENDDO
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -28685,7 +28796,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r34', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -28946,6 +29057,8 @@ c             sq(j,iz,iw) = qy * EXP(sum)
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -29066,7 +29179,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r36', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -29113,6 +29226,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -29233,7 +29348,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r37', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -29280,6 +29395,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -29418,7 +29535,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r38', '' )
       ENDIF
 
 ** sigma @ 270 K
@@ -29432,7 +29549,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r38', '' )
       ENDIF
 
 ** sigma @ 250 K
@@ -29446,7 +29563,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r38', '' )
       ENDIF
 
 ** sigma @ 230 K
@@ -29460,7 +29577,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r38', '' )
       ENDIF
 
 ** sigma @ 210 K
@@ -29474,7 +29591,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r38', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -29540,6 +29657,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -29659,7 +29778,7 @@ c      INCLUDE 'params'
   
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r39', '' )
       ENDIF
 
 **** quantum yield:  absolute quantum yield has not been reported yet, but
@@ -29714,6 +29833,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -29834,7 +29955,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r40', '' )
       ENDIF
 
 **** quantum yield unity (Molina and Molina)
@@ -29881,6 +30002,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -30001,7 +30124,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r41', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -30048,6 +30171,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -30168,7 +30293,7 @@ c      INCLUDE 'params'
 
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r42', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -30215,6 +30340,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -30337,7 +30464,7 @@ c      INCLUDE 'params'
 	
       IF (ierr .NE. 0) THEN
         WRITE(*,*) ierr, jlabel(j)
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'r43', '' )
       ENDIF
 
 **** quantum yield assumed to be unity
@@ -30544,6 +30671,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -30665,7 +30794,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r45', '' )
       ENDIF
 
       n2 = n
@@ -30676,7 +30805,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r45', '' )
       ENDIF
 
       n3 = n
@@ -30687,7 +30816,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg3,n3,x3,y3,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r45', '' )
       ENDIF
 
       DO iw = 1, nw-1
@@ -30751,6 +30880,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -30872,7 +31003,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r46', '' )
       ENDIF
 
 *** quantum yields (from jpl97)
@@ -30922,6 +31053,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -31049,7 +31182,7 @@ c      INCLUDE 'params'
         CALL inter2(nw,wl,yg,n,x1,y1,ierr)
         IF (ierr .NE. 0) THEN
            WRITE(*,*) ierr, jlabel(j)
-           STOP
+           call Print_msg( NVERB_FATAL, 'GEN', 'r47', '' )
         ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -31123,6 +31256,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -31252,7 +31387,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r101', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -31277,7 +31412,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r101', '' )
          ENDIF
 
       ENDIF
@@ -31337,6 +31472,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -31461,7 +31598,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r102', '' )
          ENDIF
 
       ELSEIF(mabs. EQ. 2) THEN
@@ -31485,7 +31622,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r102', '' )
          ENDIF
             
       ENDIF
@@ -31542,6 +31679,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -31665,7 +31804,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r103', '' )
          ENDIF
 
       ELSEIF(mabs .EQ. 2) THEN
@@ -31689,7 +31828,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r103', '' )
          ENDIF
 
       ENDIF
@@ -31745,6 +31884,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -31866,7 +32007,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r104', '' )
       ENDIF
 
 * quantum yields assumed to be 0.01 (upper limit)
@@ -31920,6 +32061,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -32042,7 +32185,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r105', '' )
          ENDIF
 
       ELSEIF (mabs .eq. 2) then
@@ -32066,7 +32209,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r105', '' )
          ENDIF
 
       ENDIF
@@ -32121,6 +32264,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -32243,7 +32388,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r106', '' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,               0.,y2(1))
@@ -32251,7 +32396,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r106', '' )
       ENDIF
 
 * quantum yield  = 1
@@ -32305,6 +32450,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -32427,7 +32574,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r107', '' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,               0.,y2(1))
@@ -32435,7 +32582,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r107', '' )
       ENDIF
 
 * quantum yield  = 1
@@ -32930,6 +33077,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -33046,7 +33195,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r111', '' )
       ENDIF
 
 * quantum yield  = 1
@@ -33097,6 +33246,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -33220,7 +33371,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r112', '' )
          ENDIF
 
       ELSEIF(mabs .eq. 2) then
@@ -33243,7 +33394,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x,y,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r112', '' )
          ENDIF
 
       ENDIF
@@ -33577,6 +33728,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -33691,7 +33844,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r115', '' )
       ENDIF
 
       qy = 1.
@@ -33726,6 +33879,8 @@ c      INCLUDE 'params'
 *= T 75 NO3-(aq) -> NO2- + O(3P)                                             =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -33857,7 +34012,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r118', '' )
          ENDIF
 
          n2 = n
@@ -33868,7 +34023,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r118', '' )
          ENDIF
 
       elseif (mabs .eq. 2) then
@@ -33895,7 +34050,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg2,n1,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r118', '' )
          ENDIF
 
       endif
@@ -33954,6 +34109,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34070,7 +34227,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r119', '' )
       ENDIF
 
 * Quantum Yields from 
@@ -34125,6 +34282,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34251,7 +34410,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r120', '' )
       ENDIF
 
       CALL addpnt(x2,y2,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -34261,7 +34420,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r120', '' )
       ENDIF
 
 * quantum yields from Harwood et al., at 308 nm
@@ -34317,6 +34476,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34437,7 +34598,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r121', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -34489,6 +34650,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34609,7 +34772,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r122', '' )
       ENDIF
 
 * quantum yields are pressure dependent between air number densities
@@ -34667,6 +34830,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34788,7 +34953,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r123', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -34838,6 +35003,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -34956,7 +35123,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r124', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -35004,6 +35171,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -35143,7 +35312,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r125', '' )
          ENDIF
          
          DO iw = 1, nw-1
@@ -35218,6 +35387,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -35341,7 +35512,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r126', '' )
          ENDIF
 
       elseif (mabs .eq. 2) then
@@ -35364,7 +35535,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg,n,x1,y1,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'r126', '' )
          ENDIF
 
       endif
@@ -35414,6 +35585,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -35531,7 +35704,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r127', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -35579,6 +35752,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 c      INCLUDE 'params'
@@ -35697,7 +35872,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r128', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -35746,6 +35921,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 C     INCLUDE 'params'
 
@@ -35865,7 +36042,7 @@ C     INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r129', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -35915,6 +36092,8 @@ C     INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -36032,7 +36211,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r130', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -36079,6 +36258,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -36232,7 +36413,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg223,nn,x223,y223,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
       nn = n
@@ -36243,7 +36424,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg243,nn,x243,y243,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
       nn = n
@@ -36254,7 +36435,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg263,nn,x263,y263,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
       nn = n
@@ -36265,7 +36446,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg298,nn,x298,y298,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
       nn = n
@@ -36276,7 +36457,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg323,nn,x323,y323,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
       nn = n
@@ -36287,7 +36468,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg343,nn,x343,y343,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r131', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -36362,6 +36543,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -36498,7 +36681,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg204,nn,x204,y204,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r132', '' )
       ENDIF
 
       nn = n296
@@ -36509,7 +36692,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg296,nn,x296,y296,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r132', '' )
       ENDIF
 
       nn = n378
@@ -36520,7 +36703,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg378,nn,x378,y378,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r132', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -36585,6 +36768,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -36705,7 +36890,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r133', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -36757,6 +36942,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -36877,7 +37064,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r134', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -36928,6 +37115,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37048,7 +37237,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r135', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -37097,6 +37286,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37222,7 +37413,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r136', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -37271,6 +37462,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37389,7 +37582,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r137', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -37439,6 +37632,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37575,7 +37770,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y298,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j-1)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'pxCH2O', '' )
       ENDIF
 
       CALL addpnt(x2,tcoef,kdata,n2,x2(1)*(1.-deltax),0.)
@@ -37585,7 +37780,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,tcoef,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j-1)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'pxCH2O', '' )
       ENDIF
 
 * quantum yields: Read, terminate, interpolate:
@@ -37610,7 +37805,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg3,n1,x1,qr,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'pxCH2O', '' )
          ENDIF
 
          CALL addpnt(x2,qm,kdata,n2,x2(1)*(1.-deltax),qm(1))
@@ -37620,7 +37815,7 @@ c      INCLUDE 'params'
          CALL inter2(nw,wl,yg4,n2,x2,qm,ierr)
          IF (ierr .NE. 0) THEN
             WRITE(*,*) ierr, jlabel(j-1)
-            STOP
+            call Print_msg( NVERB_FATAL, 'GEN', 'pxCH2O', '' )
          ENDIF
 
 * combine gridded quantities:
@@ -37698,6 +37893,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37816,7 +38013,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r138', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -37865,6 +38062,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -37983,7 +38182,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r139', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -38032,6 +38231,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -38151,7 +38352,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r140', '' )
       ENDIF
 
 * compute temperature correction factors:
@@ -38223,6 +38424,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -38349,7 +38552,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r141', '' )
       ENDIF
 
       n2 = n
@@ -38360,7 +38563,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r141', '' )
       ENDIF
 
 * quantum yield = 1
@@ -38414,6 +38617,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -38537,7 +38742,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r142', '' )
       ENDIF
 
 * quantum yield = 1
@@ -38586,6 +38791,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -38709,7 +38916,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r143', '' )
       ENDIF
 
 * quantum yield = 1
@@ -38758,6 +38965,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -38881,7 +39090,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r144', '' )
       ENDIF
 
 * quantum yield = 1
@@ -38928,6 +39137,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39045,7 +39256,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r145', '' )
       ENDIF
 
 * quantum yields assumed unity
@@ -39096,6 +39307,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39212,7 +39425,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg1,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r146', '' )
       ENDIF
 
 * quantum yields 
@@ -39235,7 +39448,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg2,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r146', '' )
       ENDIF
 
 * combine
@@ -39282,6 +39495,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39398,7 +39613,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r147', '' )
       ENDIF
 
 * quantum yields 
@@ -39447,6 +39662,8 @@ c      INCLUDE 'params'
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39563,7 +39780,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,nn,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r148', '' )
       ENDIF
 
 * quantum yields 
@@ -39617,6 +39834,8 @@ c      INCLUDE 'params'
 *= and ReLACS3 mecanisms - March 2018                                        =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39733,7 +39952,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r149', '' )
       ENDIF
 
 * quantum yields assumed to be 0.34
@@ -39790,6 +40009,8 @@ c      INCLUDE 'params'
 *= Routine added by M. Leriche for BALD in RACM2 mecanism - March 2018       =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -39905,7 +40126,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r150', '' )
       ENDIF
 
 * quantum yields assumed to be 0.06
@@ -39961,6 +40182,8 @@ c      INCLUDE 'params'
 *= Adapted from TUVLaMP original 05/98  - March 2018                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -40077,7 +40300,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r151', '' )
       ENDIF
 
 * quantum yields from:
@@ -40139,6 +40362,8 @@ c      INCLUDE 'params'
 *= Adapted from TUVLaMP original 05/98  - March 2018                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -40255,7 +40480,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x,y,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, jlabel(j)
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'r152', '' )
       ENDIF
 
 * quantum yields from:
@@ -40671,6 +40896,8 @@ CCC FILE setcld.f
 *=            wavelength                                                     =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -40800,7 +41027,9 @@ C     grid (which has NLEVEL points: Z(1:NLEVEL) = AZ(*)
 *     asymmetry factor = 0.85
 
           n = nlevel + 1
-          if (n .gt. kdata) stop "SETCLD: not enough memory: KDATA"
+          if (n .gt. kdata)
+     &      call Print_msg( NVERB_FATAL, 'GEN', 'setcld',
+     &                      'not enough memory: KDATA' )
           zd(1) = 0.
           do 110, i = 2, n
             zd(i) = 0.5*( z(i-1) + z(i) )
@@ -41489,6 +41718,8 @@ c      INCLUDE 'params'
 *= send email to:  sasha@ucar.edu                                            =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -41592,7 +41823,7 @@ c      INCLUDE 'params'
       CALL inter2(nw,wl,yg,n,x1,y1,ierr)
       IF (ierr .NE. 0) THEN
          WRITE(*,*) ierr, fil
-         STOP
+         call Print_msg( NVERB_FATAL, 'GEN', 'rdice_acff', '' )
       ENDIF
       
       DO 13, l = 1, nw-1
@@ -42213,6 +42444,8 @@ CCC FILE swchem.f
 *=           defined                                                         =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -42635,7 +42868,7 @@ C      CALL r145(nw,wl,wc,nz,tlev,airden,j,sq,jlabel,tpflag,kout)
 
 ****************************************************************
 
-      IF (j .GT. kj) STOP '1002'
+      IF (j .GT. kj) call Print_msg( NVERB_FATAL, 'GEN', 'swchem', '' )
       RETURN
       END
 
@@ -42664,6 +42897,8 @@ CCC FILE vpair.f
 *=            altitude layer (column vertical increment                      =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 c      INCLUDE 'params'
 
@@ -42804,7 +43039,8 @@ c      INCLUDE 'params'
          airlog(i) = ALOG(air(i))
       ENDDO
 
-      IF(z(nz) .GT. zd(nd)) STOP 'in vpair: ztop < zdata'
+      IF(z(nz) .GT. zd(nd)) call Print_msg( NVERB_FATAL, 'GEN',
+     &                                      'vpair', 'ztop < zdata' )
       CALL inter1(nz,z,conlog, nd,zd,airlog)
 
       DO i = 1, nz
@@ -42881,6 +43117,8 @@ CCC FILE vpo3.f
 *=  case it is necessary to convert from mixing ratio units (e.g. ppb).      =*
 *-----------------------------------------------------------------------------*
 
+      use mode_msg
+
       IMPLICIT NONE
 
 ********
@@ -43055,7 +43293,9 @@ c      INCLUDE 'params'
       IF (to3new .GT. nzero) THEN
 
          to3old = fsum(nz-1, col)/2.687e16
-         IF(to3old .LT. pzero) STOP 'in vpo3: to3old is too small'
+         IF(to3old .LT. pzero)
+     &     call Print_msg( NVERB_FATAL, 'GEN', 'vpo3',
+     &                     'to3old is too small' )
          scale = to3new/to3old
          DO i = 1, nz-1
             col(i) = col(i) * scale
diff --git a/src/MNH/ch_field_valuen.f90 b/src/MNH/ch_field_valuen.f90
index 22796effc948fce710af39c9b8dc9faceba9455e..0693c28a24b13c14162aebc939e5b5d80508adcc 100644
--- a/src/MNH/ch_field_valuen.f90
+++ b/src/MNH/ch_field_valuen.f90
@@ -70,12 +70,16 @@ END MODULE MODI_CH_FIELD_VALUE_n
 !!    11/08/98 (N. Asencio) add parallel code
 !!    28/07/99 (V. Crassier & K. Suhre) modify initialization scheme (1-D)
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
-USE MODI_CH_OPEN_INPUT  ! open general purpose ASCII input file
 USE MODD_IO,            ONLY: TFILEDATA
+
 USE MODE_IO_FILE,       ONLY: IO_File_close
+use mode_msg
+
+USE MODI_CH_OPEN_INPUT  ! open general purpose ASCII input file
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -100,6 +104,7 @@ INTEGER,          INTENT(IN) :: KVERB           ! verbosity level
 !
 !*      0.2    declarations local variables
 !
+character(len=10) :: yval            ! String for error message
 INTEGER       :: JI, JJ              ! loop control variables
 INTEGER       :: ICHANNEL            ! I/O channel for file input
 CHARACTER(LEN=40) :: YFORMAT         ! format for input
@@ -177,12 +182,10 @@ firstcall: IF (GSFIRSTCALL) THEN
   DO JI = 2, ISLEVEL
     IF (ZINF .GE. ZSZPROF(JI)) THEN
       WRITE(KLUOUT,*) &
-   	   "CH_FIELD_VALUE_n-Error: Z-profile must be in increasing order!"
+        "CH_FIELD_VALUE_n-Error: Z-profile must be in increasing order!"
       WRITE(KLUOUT,*) " minimum value: ",ZINF," at level ",IINF
       WRITE(KLUOUT,*) " current value: ",ZSZPROF(JI)," at level ",JI
-      ! callabortstop
-      CALL ABORT
-      STOP "Program stopped by CH_FIELD_VALUE_n"
+      call Print_msg( NVERB_FATAL, 'GEN', 'CH_FIELD_VALUE_n', 'Z-profile must be in increasing order' )
     ENDIF
     ZINF = ZSZPROF(JI) ; IINF=JI
   ENDDO
@@ -236,10 +239,7 @@ firstcall: IF (GSFIRSTCALL) THEN
       WRITE(KLUOUT,*) "initial data is given as mixing ratio (part per par)"
     END IF
   ELSE
-    WRITE(KLUOUT,*) "CH_FIELD_VALUE_n ERROR: unit type unknown: ", HUNIT
-    ! callabortstop
-    CALL ABORT
-    STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_FIELD_VALUE_n', 'unknown unit type: '//trim(HUNIT) )
   ENDIF
 !
 ! read number of initial values ISINIT
@@ -327,19 +327,13 @@ ENDDO search_loop
 !*       2.5   check boundaries of IASSOACT and IINITACT
 !
 IF ((IASSOACT.LE.0).OR.(IASSOACT.GT.ISPROF)) THEN
-  WRITE(KLUOUT,*) &
-    "CH_FIELD_VALUE_n-ERROR: unproper associated profile value:", IASSOACT
-    ! callabortstop
-    CALL ABORT
-  STOP
+  write( yval, '( I10 )' ) IASSOACT
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_FIELD_VALUE_n', 'invalid associated profile value: '//trim(yval) )
 ENDIF
 !
 IF ((IINITACT.LE.0).OR.(IINITACT.GT.ISINIT)) THEN
-  WRITE(KLUOUT,*) &
-    "CH_FIELD_VALUE_n-ERROR: unproper associated initial value:", IINITACT
-    ! callabortstop
-    CALL ABORT
-  STOP
+  write( yval, '( I10 )' ) IINITACT
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_FIELD_VALUE_n', 'invalid associated initial value: '//trim(yval) )
 ENDIF
 !
 !*       2.6   linear interpolation between IZINDEX and IZINDEX+1, 
diff --git a/src/MNH/ch_gauss.f90 b/src/MNH/ch_gauss.f90
index e26ede04a9b48730097f58ead1bd7e268f4b749e..4d974eeb49311d301a67e53ed2c1d000d5253186 100644
--- a/src/MNH/ch_gauss.f90
+++ b/src/MNH/ch_gauss.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!    ############################# 
       MODULE MODI_CH_GAUSS
 !!    ############################# 
@@ -58,10 +53,11 @@ END MODULE MODI_CH_GAUSS
 !!    -------------
 !!    Original 24/02/95 (adapted from FORTRAN77 version in tools.k)
 !!    27/02/95 (K. Suhre) put in some more array syntax
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 
 !!    EXTERNAL
 !!    --------
-!!    none
+use mode_msg
 
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -109,14 +105,11 @@ elimination_loop : DO JJ = 1, KDIM
 !*    check for singulary matrix, print error message and stop 
 !*    if this is requested by KFAIL (see above for possible values for KFAIL)
   error : IF (ZMAX.LE.PPEPS) THEN
-    IF (KFAIL.GE.0) THEN
-      PRINT *, "Error message from subroutine CH_GAUSS: ", &
-	       "singulary matrix cannot be inverted!"
+    IF ( KFAIL > 0 ) THEN
+      call Print_msg( NVERB_WARNING, 'GEN', 'CH_GAUSS', 'singulary matrix cannot be inverted' )
     ENDIF
-    IF (KFAIL.EQ.0) THEN
-       !callabortstop
-      CALL ABORT
-      STOP 1
+    IF ( KFAIL == 0 ) THEN
+      call Print_msg( NVERB_FATAL,   'GEN', 'CH_GAUSS', 'singulary matrix cannot be inverted' )
     ENDIF
     KFAIL = 1
     RETURN
diff --git a/src/MNH/ch_ini_orilam.f90 b/src/MNH/ch_ini_orilam.f90
index be7064e272cc36faf426dc2cea4d193cde4699e9..a317f49cb71b239f231abcf4ada36fa7c681a3b6 100644
--- a/src/MNH/ch_ini_orilam.f90
+++ b/src/MNH/ch_ini_orilam.f90
@@ -1,13 +1,8 @@
-!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!ORILAM_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
 !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !ORILAM_LIC for details.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2007/03/02 13:59:36
-!-----------------------------------------------------------------
 !!   ###########################
      MODULE MODI_CH_INI_ORILAM
 !!   ###########################
@@ -64,26 +59,30 @@ END MODULE MODI_CH_INI_ORILAM
 !!    MODIFICATIONS
 !!    -------------
 !!    Original
-!! 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!!
 !!    EXTERNAL
 !!    --------
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
-USE MODI_CH_AER_SOLV
-USE MODI_CH_AER_TRANS
 USE MODD_CH_AEROSOL
-USE MODD_CSTS_DUST, ONLY : XDENSITY_DUST
 USE MODD_CH_M9_n, ONLY : CNAMES
 USE MODD_CST, ONLY :    &
        XPI              & !Definition of pi
-      ,XBOLTZ           & ! Boltzman constant 
+      ,XBOLTZ           & ! Boltzman constant
       ,XAVOGADRO        & ![molec/mol] avogadros number
       ,XG               & ! Gravity constant
       ,XP00             & ! Reference pressure
       ,XMD              & ![kg/mol] molar weight of air
       ,XRD              & ! Gaz constant for dry air
       ,XCPD               !  Cpd (dry air)
+USE MODD_CSTS_DUST, ONLY : XDENSITY_DUST
+!
+use mode_msg
+!
+USE MODI_CH_AER_SOLV
+USE MODI_CH_AER_TRANS
 !
 !*       0.     DECLARATIONS
 !               ------------
@@ -106,6 +105,7 @@ CHARACTER(LEN=10),      INTENT(IN)    :: GSCHEME
 !
 !*      0.2    declarations of local variables
 !
+character(len=10) :: yspec ! String for error message
 REAL, DIMENSION(SIZE(PM,1),(JPMODE)*3)    :: ZDMINTRA, ZDMINTER, ZDMCOND
 REAL, DIMENSION(SIZE(PM,1),JPMODE)        :: ZMASK, ZSOLORG
 
@@ -151,10 +151,8 @@ ENDDO
 ! verify that all array elements are defined
 DO JI = 1, SIZE(XRHOI)
   IF (XRHOI(JI) .LE. 0.0) THEN
-    PRINT *, 'CH_AER_MOD_INIT ERROR: density for species ', JI, ' not defined'
-    ! callabortstop
-    CALL ABORT
-    STOP 'CH_AER_MOD_INIT ERROR: density not defined'
+    write( yspec, '( I10 )' ) JI
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_AER_MOD_INIT', 'density for species '//trim(yspec)//' not defined' )
   END IF
 ENDDO
 !
diff --git a/src/MNH/ch_init_budgetn.f90 b/src/MNH/ch_init_budgetn.f90
index a8f26864b055bd6bf5ebbc1778fec9826ac019a1..d84ff1f7584f5f3346a4691330d6b43a9ad0cdee 100644
--- a/src/MNH/ch_init_budgetn.f90
+++ b/src/MNH/ch_init_budgetn.f90
@@ -1,4 +1,9 @@
-!!    ########################### 
+!MNH_LIC Copyright 2016-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+!!    ###########################
       MODULE MODI_CH_INIT_BUDGET_n
 !!    ########################### 
 !!
@@ -43,16 +48,19 @@ END MODULE MODI_CH_INIT_BUDGET_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    October 2016                   
+!!      Original    October 2016
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
-USE MODD_CH_MNHC_n,  ONLY: LUSECHAQ, CSPEC_BUDGET
-USE MODD_CH_M9_n,    ONLY: CNAMES, NEQ
 USE MODD_CH_BUDGET_n, ONLY: NEQ_BUDGET, CNAMES_BUDGET, NSPEC_BUDGET
+USE MODD_CH_M9_n,    ONLY: CNAMES, NEQ
+USE MODD_CH_MNHC_n,  ONLY: LUSECHAQ, CSPEC_BUDGET
 USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG, CSPEC_BU_DIAG
-!
+
+use mode_msg
+
 IMPLICIT NONE 
 
 INTEGER, INTENT(IN)  :: KLUOUT   ! output listing channel
@@ -112,9 +120,7 @@ IF (YWORKSTR /= '') THEN
       END IF
    END DO
    IF (GCHECKFAILED) THEN
-      WRITE(KLUOUT,*) 'Wrong (misspelled) CSPEC_BUDGET encountered...ABORTING !'
-      CALL ABORT
-      STOP 
+     call Print_msg( NVERB_FATAL, 'GEN', 'CH_INIT_BUDGET_n', 'wrong (misspelled) CSPEC_BUDGET encountered' )
    END IF
 ELSE
    DEALLOCATE(CNAMES_BUDGET)
diff --git a/src/MNH/ch_init_meteo.f90 b/src/MNH/ch_init_meteo.f90
index d290e5196a3c0d3504d8928c64355ad3de1dff8b..74bc0ec52fe8d4b96788f301e38767e7b3cd6c48 100644
--- a/src/MNH/ch_init_meteo.f90
+++ b/src/MNH/ch_init_meteo.f90
@@ -53,12 +53,14 @@ END MODULE MODI_CH_INIT_METEO
 !!                        to interpolate between different forcings)
 !!    01/12/03 (Gazen)   change Chemical scheme interface
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!
 !!    EXTERNAL
 !!    --------
 USE MODI_CH_OPEN_INPUT
 USE MODE_IO_FILE,     ONLY: IO_File_close
+use mode_msg
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
@@ -78,8 +80,8 @@ TYPE(METEOTRANSTYPE), INTENT(OUT) :: TPM  ! the meteo variables
 !
 !*       0.2  declaration of local variables
 !
+character(len=10) :: ynum1, ynum2 ! Strings for error message
 INTEGER      :: JI, JJ      ! loop control
-CHARACTER*80 :: YCOMMENT    ! comment line in meteo update file
 INTEGER      :: IMETEOVARS  ! number of meteovars to be read from file and
 			    ! checked against NMETEOVARS
 INTEGER      :: ILUMETEO
@@ -100,14 +102,10 @@ READ(ILUMETEO,*) NMETEORECS
 !
 ! check if number of meteovars in file corresponds to what the CCS expects
 IF (IMETEOVARS .NE. NMETEOVARS) THEN
-  PRINT *, "CH_INIT_METEO ERROR: number of meteo variables in file does not"
-  PRINT *, "                     correspond to the number expected by the CCS:"
-  PRINT *, "                     IMETEOVARS read:     ", IMETEOVARS
-  PRINT *, "                     NMETEOVARS expected: ", NMETEOVARS
-  PRINT *, "The program will be stopped now!"
-  ! callabortstop
-  CALL ABORT
-  STOP 1
+  write( ynum1, '( I10 )' ) IMETEOVARS
+  write( ynum2, '( I10 )' ) NMETEOVARS
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_INIT_METEO', 'number of meteo variables in file '//trim(ynum1)// &
+                  ' does not correspond to the number expected by the CCS'//trim(ynum2) )
 END IF
 
 ! read names for TPM%CMETEOVAR
diff --git a/src/MNH/ch_init_prodlosstotn.f90 b/src/MNH/ch_init_prodlosstotn.f90
index 05d669ad46796d2867fa21f8ab413d6244b78fb1..a5547a445f7a0bd24f688c5704d7a119ecb233bb 100644
--- a/src/MNH/ch_init_prodlosstotn.f90
+++ b/src/MNH/ch_init_prodlosstotn.f90
@@ -1,4 +1,9 @@
-!!    ########################### 
+!MNH_LIC Copyright 2016-2019 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+!!    ###########################
       MODULE MODI_CH_INIT_PRODLOSSTOT_n
 !!    ########################### 
 !!
@@ -43,7 +48,8 @@ END MODULE MODI_CH_INIT_PRODLOSSTOT_n
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original    October 2016                   
+!!      Original    October 2016
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -52,7 +58,10 @@ USE MODD_CH_MNHC_n,  ONLY: LUSECHAQ, CSPEC_PRODLOSS
 USE MODD_CH_M9_n,    ONLY: CNAMES, NEQ
 USE MODD_CH_PRODLOSSTOT_n, ONLY: NEQ_PLT, CNAMES_PRODLOSST, NIND_SPEC
 USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG, CSPEC_DIAG
-IMPLICIT NONE 
+
+use mode_msg
+
+IMPLICIT NONE
 
 INTEGER, INTENT(IN)  :: KLUOUT   ! output listing channel
 !local variables
@@ -114,9 +123,7 @@ IF (YWORKSTR /= '') THEN
       END IF
    END DO
    IF (GCHECKFAILED) THEN
-      WRITE(KLUOUT,*) 'Wrong (misspelled) CSPEC encountered...ABORTING !'
-      CALL ABORT
-      STOP 
+     call Print_msg( NVERB_FATAL, 'GEN', 'CH_INIT_PRODLOSSTOT_n', 'wrong (misspelled) CSPEC encountered' )
    END IF
 ELSE
    DEALLOCATE(CNAMES_PRODLOSST)
diff --git a/src/MNH/ch_init_rosenbrock.f90 b/src/MNH/ch_init_rosenbrock.f90
index e239dcad698fcff6ca0f899e7461315a2fe0c0ef..d18187f8cfade5b41c26ab27ec8948ba94825fbf 100644
--- a/src/MNH/ch_init_rosenbrock.f90
+++ b/src/MNH/ch_init_rosenbrock.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2007-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ##############################
       MODULE MODI_CH_INIT_ROSENBROCK
 !     ##############################
@@ -46,6 +47,7 @@ END MODULE MODI_CH_INIT_ROSENBROCK
 !!    MODIFICATIONS
 !!    -------------
 !!    Original 05/06/07
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!
 !!    IMPLICIT ARGUMENTS
@@ -59,6 +61,8 @@ USE MODI_CH_SPARSE
 !
 USE MODD_CH_M9_n, ONLY: NEQ, NEQAQ, NNONZEROTERMS
 USE MODD_CH_ROSENBROCK_n
+
+use mode_msg
 !
 !*       0.   DECLARATIONS
 !        -----------------
@@ -118,7 +122,7 @@ JLL_Loop2:  DO JLL = 1, NSPARSEDIM
               WRITE(KLUOUT,*)"DIAGONAL ELEMENT IS FOUND FOR CHEMICAL COMPOUND"
               WRITE(KLUOUT,*)"NUMBER: ",JLL," IN THE JACOBIAN MATRIX !!!"
               WRITE(KLUOUT,*)"PLEASE MODIFY AND REPROCESS THE CHEMICAL SYSTEM"
-              STOP
+              call Print_msg( NVERB_FATAL, 'GEN', 'CH_INIT_ROSENBROCK', 'no diagonal element found for chemical compound' )
             ENDIF
           END DO
 !
diff --git a/src/MNH/ch_linssa.f90 b/src/MNH/ch_linssa.f90
index e1e5b03d10c910819bffea663616cd1208f93d8b..e530c4541cefcc0e30044bee5b4013fe4c6f0a7d 100644
--- a/src/MNH/ch_linssa.f90
+++ b/src/MNH/ch_linssa.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!    ##################### 
       MODULE MODI_CH_LINSSA
 !!    ##################### 
@@ -65,9 +60,12 @@ SUBROUTINE CH_LINSSA(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KVECNPT, KMI, &
 !!    -------------
 !!    Original 25/04/95
 !!    Modification   01/12/03  (Gazen)   change Chemical scheme interface
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
+use mode_msg
+
 USE MODI_CH_FCN
 USE MODI_CH_JAC
 USE MODI_CH_GAUSS
@@ -152,9 +150,7 @@ ENDDO
 IFAIL = 1
 CALL CH_GAUSS(ZWORK,ZINV,KEQ,IFAIL)
 IF (IFAIL.NE.0) THEN
-! callabortstop
-  CALL ABORT
-  STOP 'CH_LinSSA ERROR: matrix cannot be inverted by CH_GAUSS'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_LinSSA', 'matrix cannot be inverted by CH_GAUSS' )
 ENDIF
 !
 !*       5.   CALCULATE 1/2 * (P+I) * f^n
diff --git a/src/MNH/ch_meteo_trans_c2r2.f90 b/src/MNH/ch_meteo_trans_c2r2.f90
index f8265684b25786a03c85546485f4ef85366aedad..02c25bb7121a6322473a5dadc016198d286298dd 100644
--- a/src/MNH/ch_meteo_trans_c2r2.f90
+++ b/src/MNH/ch_meteo_trans_c2r2.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !!    ############################### 
       MODULE MODI_CH_METEO_TRANS_C2R2
 !!    ############################### 
@@ -101,6 +97,7 @@ SUBROUTINE CH_METEO_TRANS_C2R2(KL, PRHODJ, PRHODREF, PRTSM, PCCTSM, PCRTSM,   &
 !!    14/05/08 (M. Leriche) include raindrops and cloud droplets mean radius
 !!    05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme
 !!    05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -126,6 +123,8 @@ USE MODD_RAIN_C2R2_DESCR, ONLY: XRTMIN,        & ! min values of the water m. r.
                                 XLBC, XLBEXC,  & !shape param. of the cloud droplets
                                 XLBR, XLBEXR     !shape param. of the raindrops
 !!
+use mode_msg
+
 USE MODI_GAMMA
 !
 !-------------------------------------------------------------------------------
@@ -188,7 +187,8 @@ firstcall : IF (GSFIRSTCALL) THEN
     WRITE(KLUOUT,*) "     NMETEOVARS expected:   ", NMETEOVARS
     WRITE(KLUOUT,*) "Check the definition of NMETEOVARS in your .chf file."
     WRITE(KLUOUT,*) "The program will be stopped now!"
-    STOP 1
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_METEO_TRANS_C2R2', &
+                    'number of meteovars to transfer does not correspond to the expected number.' )
   END IF
 !
 !*       1.2   initialize names of meteo vars
diff --git a/src/MNH/ch_meteo_trans_kess.f90 b/src/MNH/ch_meteo_trans_kess.f90
index fe2bf8559b09ddc7708e46e98adb5f440fbc70d4..74bd129b6cfcc6b745181566ad3e48e21e7d1771 100644
--- a/src/MNH/ch_meteo_trans_kess.f90
+++ b/src/MNH/ch_meteo_trans_kess.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !!    ############################### 
       MODULE MODI_CH_METEO_TRANS_KESS
 !!    ############################### 
@@ -99,6 +95,7 @@ SUBROUTINE CH_METEO_TRANS_KESS(KL, PRHODJ, PRHODREF, PRTSM, PTHT, PABST, &
 !!    14/05/08 (M. Leriche) include raindrops and cloud droplets mean radius
 !!    05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme
 !!    05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -125,6 +122,8 @@ USE MODD_RAIN_ICE_DESCR,  ONLY: XNUC, XALPHAC,  & !Cloud droplets distrib. param
                                 XLBR,  XLBEXR,  & !shape param. of the raindrops
                                 XCONC_LAND
 !!
+use mode_msg
+
 USE MODI_GAMMA
 !
 !-------------------------------------------------------------------------------
@@ -185,7 +184,8 @@ firstcall : IF (GSFIRSTCALL) THEN
     WRITE(KLUOUT,*) "     NMETEOVARS expected:   ", NMETEOVARS
     WRITE(KLUOUT,*) "Check the definition of NMETEOVARS in your .chf file."
     WRITE(KLUOUT,*) "The program will be stopped now!"
-    STOP 1
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_METEO_TRANS_KESS', &
+                    'number of meteovars to transfer does not correspond to the expected number.' )
   END IF
 !
 !*       1.2   initialize names of meteo vars
diff --git a/src/MNH/ch_monitorn.f90 b/src/MNH/ch_monitorn.f90
index 9ea38d3e41dfab50112aa5ca053cf77ccd555513..c5357b6a18dd0e5275a5c866958cb60f0edba919 100644
--- a/src/MNH/ch_monitorn.f90
+++ b/src/MNH/ch_monitorn.f90
@@ -114,6 +114,7 @@ END MODULE MODI_CH_MONITOR_n
 !!    01/10/17 (C.Lac) add correction of negativity
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 12/02/2019: bugfix: ZINPRR was not initialized all the time
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -143,6 +144,7 @@ USE MODI_CH_AER_DEPOS
 !
 USE MODE_ll
 USE MODE_MODELN_HANDLER
+use mode_msg
 !
 USE MODI_WRITE_TS1D
 USE MODD_CST, ONLY : XMNH_TINY
@@ -625,9 +627,7 @@ SELECT CASE (CCH_TDISCRETIZATION)
     IF (KVERB >= 10) WRITE(KLUOUT,*) "CH_MONITOR_n: using LAGGED option"
   CASE DEFAULT
     ! the following line should never be reached:
-    ! callabortstop
-    CALL ABORT
-    STOP "CH_MONITOR_n: CCH_TDISCRETIZATION option not valid"
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_MONITOR_n', 'invalid CCH_TDISCRETIZATION option ('//trim(CCH_TDISCRETIZATION)//')' )
 END SELECT
 !
 !
diff --git a/src/MNH/ch_open_input.f90 b/src/MNH/ch_open_input.f90
index 8ffa174d6404c3e7d0b695cb28d1685d5c08d18b..f4518dbe4f3deebb14034990a5450e7098345f33 100644
--- a/src/MNH/ch_open_input.f90
+++ b/src/MNH/ch_open_input.f90
@@ -60,6 +60,7 @@ SUBROUTINE CH_OPEN_INPUT(HCHEM_INPUT_FILE,HKEYWORD,TPFILE,KLUOUT,KVERB)
 !!    05/08/96 (K. Suhre) restructured
 !!    11/08/98 (N. Asencio) add parallel code
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!
 !!    IMPLICIT ARGUMENTS
@@ -76,6 +77,7 @@ USE MODD_IO,               ONLY: TFILEDATA
 !
 USE MODE_IO_FILE,          ONLY: IO_File_open
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -106,12 +108,7 @@ CALL IO_File_open(TPFILE,KRESP=IRESP)
 ILU = TPFILE%NLU
 !
 IF (IRESP /= 0) THEN
-  WRITE(KLUOUT,*) "CH_OPEN_INPUT ERROR: unable to open file", HCHEM_INPUT_FILE
-  WRITE(KLUOUT,*) "                     IO_File_open return code is: ", IRESP
-  WRITE(KLUOUT,*) "                     the program will be stopped now"
-  ! callabortstop
-  CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_OPEN_INPUT', 'unable to open file '//trim(HCHEM_INPUT_FILE) )
 END IF
 !
 !-------------------------------------------------------------------------------
@@ -147,9 +144,6 @@ RETURN
 !              ---------------------------------------
 !
 100 CONTINUE
-WRITE(KLUOUT,*) "CH_OPEN_INPUT-Error: Keyword ", HKEYWORD(1:8), " not found."
-! callabortstop
-CALL ABORT
-STOP "Program stopped"
+call Print_msg( NVERB_FATAL, 'GEN', 'CH_OPEN_INPUT', 'keyword '//HKEYWORD(1:8)//' not found' )
 !
 END SUBROUTINE CH_OPEN_INPUT
diff --git a/src/MNH/ch_read_chem.f90 b/src/MNH/ch_read_chem.f90
index fe8e3fbe652a9e5c3976b32d1a733c992d353d50..bd3ed06dfc5da4908161c7f07ede175eaa09849e 100644
--- a/src/MNH/ch_read_chem.f90
+++ b/src/MNH/ch_read_chem.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !!    ######################## 
@@ -57,10 +57,14 @@ END MODULE MODI_CH_READ_CHEM
 !!    M.Leriche 2015 : masse molaire Black carbon à 12 g/mol
 !!    Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!    Philippe Wautelet: 10/01/2019: use newunit argument to open files
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
+use ISO_FORTRAN_ENV, only: IOSTAT_END
+
 USE MODE_IO_FILE,    ONLY: IO_File_close
+use mode_msg
 !
 USE MODI_CH_OPEN_INPUT
 USE MODI_CH_READ_VECTOR
@@ -83,9 +87,12 @@ CHARACTER(LEN=*), INTENT(IN)      :: HFILE ! name of the file to be read from
 !
 !!    DECLARATION OF LOCAL VARIABLES
 !!    ------------------------------
+character(len=10) ::  yval1, yval2
+character(len=256) :: yioerrmsg
 CHARACTER(LEN=32) :: YVARNAME
 CHARACTER(LEN=80) :: YINPUT
 INTEGER :: ILU ! unit number for IO
+integer :: iresp
 INTEGER :: JI, JJ, IIN
 REAL :: ZMD
 REAL, DIMENSION(NSP+NCARB+NSOA) :: ZMI ! aerosol molecular mass in g/mol
@@ -124,36 +131,40 @@ ELSE
 !
 ! read line by line and check variable names
 !
-  outer_loop : DO JI = 1, NEQ
-    READ(UNIT=ILU,FMT=*,END=999) YVARNAME, PCONC(JI)
-    check_loop : DO JJ = 1, 32
-      IF (YVARNAME(JJ:JJ).NE.CNAMES(JI)(JJ:JJ)) THEN
-        PRINT *, 'CH_READ_CHEM: Error: variable names do not match:'
-        PRINT *, 'CNAMES = >>>', CNAMES(JI), '<<<'
-        PRINT *, 'read   = >>>', YVARNAME, '<<<'
-!callabortstop
-        CALL ABORT
-        STOP 'Program stopped by CH_READ_CHEM'
-      ENDIF
-    ENDDO check_loop
-  ENDDO outer_loop
+  DO JI = 1, NEQ
+    READ( UNIT=ILU, FMT=*, iostat=iresp, iomsg=yioerrmsg ) YVARNAME, PCONC(JI)
+    if ( iresp == IOSTAT_END) then
+      write( yval1, '( I10 )' ) NEQ
+      write( yval2, '( I10 )' ) JI-1
+      call Print_msg( NVERB_FATAL, 'GEN', 'CH_READ_CHEM', 'not enough variables defined in file '//trim(HFILE)// &
+                      ': number of gas lines in that file should be '//trim(yval1)//' but is '//trim(yval2) )
+    else if ( iresp/= 0 ) then
+      call Print_msg( NVERB_FATAL, 'IO', 'CH_READ_CHEM', 'when reading '//trim(HFILE)//': '//trim(yioerrmsg) )
+    end if
+    IF ( trim(YVARNAME) /= trim(CNAMES(JI)) ) THEN
+      call Print_msg( NVERB_FATAL, 'GEN', 'CH_READ_CHEM', 'variable names do not match: '//trim(CNAMES(JI))// &
+                      ' /= '//trim(YVARNAME) )
+    END IF
+  END DO
 
 !Conversion ppb to ppp
  PCONC(:) =  PCONC(:) * 1E-9
 IF (LORILAM) THEN
-  outer_loop2 : DO JI = 1, SIZE(PAERO,1)
-    READ(UNIT=ILU,FMT=*,END=997) YVARNAME, PAERO(JI)
-    check_loop2 : DO JJ = 1, 32
-      IF (YVARNAME(JJ:JJ).NE.CAERONAMES(JI)(JJ:JJ)) THEN
-        PRINT *, 'CH_READ_CHEM: Error: variable names do not match:'
-        PRINT *, 'CAERONAMES = >>>', CAERONAMES(JI), '<<<'
-        PRINT *, 'read   = >>>', YVARNAME, '<<<'
-!callabortstop
-        CALL ABORT
-        STOP 'Program stopped by CH_READ_CHEM'
-      ENDIF
-    ENDDO check_loop2
-  ENDDO outer_loop2
+  DO JI = 1, SIZE(PAERO,1)
+    READ( UNIT=ILU, FMT=*, iostat=iresp, iomsg=yioerrmsg ) YVARNAME, PAERO(JI)
+    if ( iresp == IOSTAT_END) then
+      write( yval1, '( I10 )' ) SIZE(PAERO,1)
+      write( yval2, '( I10 )' ) JI-1
+      call Print_msg( NVERB_FATAL, 'GEN', 'CH_READ_CHEM', 'not enough variables defined in file '//trim(HFILE)// &
+                      ': number of aerosol lines in that file should be '//trim(yval1)//' but is '//trim(yval2) )
+    else if ( iresp/= 0 ) then
+      call Print_msg( NVERB_FATAL, 'IO', 'CH_READ_CHEM', 'when reading '//trim(HFILE)//': '//trim(yioerrmsg) )
+    end if
+    IF ( trim(YVARNAME) /= trim(CAERONAMES(JI)) ) THEN
+      call Print_msg( NVERB_FATAL, 'GEN', 'CH_READ_CHEM', 'variable names do not match: '//trim(CAERONAMES(JI))// &
+                      ' /= '//trim(YVARNAME) )
+    END IF
+  END DO
 !Conversion  microgram/m3 to ppp
 ZMD    = 28.9644E-3
 ! Constants initialization
@@ -268,26 +279,6 @@ END IF
 
 END IF
 !
-RETURN
-!
 !-----------------------------------------------------------------------------
 !
-999  PRINT *, 'CH_READ_CHEM: Error: not enough variables defined in file', &
-               HFILE
-PRINT *, 'number of gas lines in that file should be ', NEQ, &
-         ', but is ', JI-1
-!callabortstop
-CALL ABORT
-STOP 'Program stopped by CH_READ_CHEM'
-!
-998 STOP "CH_READ_CHEM: ERROR - keyword INITCHEM not found in CHCONTROL1.nam"  
-!
-997  PRINT *, 'CH_READ_CHEM: Error: not enough variables defined in file', &
-               HFILE
-PRINT *, 'number of aerosols lines in that file should be ', SIZE(PAERO,1), &
-         ', but is ', JI-1
-!callabortstop
-CALL ABORT
-STOP 'Program stopped by CH_READ_CHEM'
-!
 END SUBROUTINE CH_READ_CHEM
diff --git a/src/MNH/ch_sis.f90 b/src/MNH/ch_sis.f90
index 746b70ad6e794d3675f19995b9a19b926a7ad73f..48fc332d5a919f24c53e5b7f10cfbd2ffc309884 100644
--- a/src/MNH/ch_sis.f90
+++ b/src/MNH/ch_sis.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!    ################## 
       MODULE MODI_CH_SIS
 !!    ################## 
@@ -60,9 +55,12 @@ END MODULE MODI_CH_SIS
 !!    Original 24/04/95
 !!    31/07/96 (K. Suhre) restructured
 !!    01/12/03 (D. Gazen)   change Chemical scheme interface
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
+use mode_msg
+
 USE MODI_CH_FCN
 USE MODI_CH_JAC
 USE MODI_CH_GAUSS
@@ -127,11 +125,7 @@ ENDDO
 !
 IFAIL = 1
 CALL CH_GAUSS(ZWORK,ZINV,KEQ,IFAIL)
-IF (IFAIL.NE.0) THEN
-!callabortstop
-CALL ABORT
-  STOP 'CH_SIS ERROR: matrix cannot be inverted by CH_GAUSS'
-ENDIF
+if ( ifail /= 0 ) call Print_msg( NVERB_FATAL,   'GEN', 'CH_SIS', 'matrix cannot be inverted by CH_GAUSS' )
 !
 !*       4.   CALCULATE (1-dt/2 J^n)^-1 f^n
 !        -----------------------------------
diff --git a/src/MNH/ch_solvern.f90 b/src/MNH/ch_solvern.f90
index 769b5800aa6ca8896afd6cdd23bc4f01eb8b8a93..92319876c0763dd461165ca4471372e62c8575a0 100644
--- a/src/MNH/ch_solvern.f90
+++ b/src/MNH/ch_solvern.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !!    #####################
       MODULE MODI_CH_SOLVER_n
 !!    #####################
@@ -60,6 +56,7 @@ END MODULE MODI_CH_SOLVER_n
 !!    01/12/03 (D. Gazen)   change Chemical scheme interface
 !!    01/06/07 (P. Tulet)  model number in argument (for AROME)
 !!    01/06/07 (JP Pinty & M Leriche) add Rosenbrock solvers
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -73,6 +70,8 @@ USE MODI_CH_EXQSSA
 !@USE MODI_CH_D02EAF
 !@USE MODI_CH_D02EBF
 !@USE MODI_CH_D02NBF
+
+use mode_msg
 USE MODE_RBK90_Integrator
 !!
 !!    IMPLICIT ARGUMENTS
@@ -132,25 +131,19 @@ CASE ('D02EAF')
 !
   ! call NAG's stiff-solver D02EAF
   !@CALL CH_D02EAF(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KMI)
-!callabortstop
-CALL ABORT
-  STOP 'CH_SOLVER_n SORRY: requested solver currently not supported (CSOLVER)'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SOLVER_n', 'requested solver currently not supported (CSOLVER='//trim(CSOLVER)//')' )
 !
 CASE ('D02EBF')
 !
   ! call NAG's stiff-solver D02EBF
   !@CALL CH_D02EBF(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KMI)
-!callabortstop
-CALL ABORT
-  STOP 'CH_SOLVER_n SORRY: requested solver currently not supported (CSOLVER)'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SOLVER_n', 'requested solver currently not supported (CSOLVER='//trim(CSOLVER)//')' )
 !
 CASE ('D02NBF')
 !
   ! call NAG's stiff-solver D02NBF
   !@CALL CH_D02NBF(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KMI)
-!callabortstop
-CALL ABORT
-  STOP 'CH_SOLVER_n SORRY: requested solver currently not supported (CSOLVER)'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SOLVER_n', 'requested solver currently not supported (CSOLVER='//trim(CSOLVER)//')' )
 !
 CASE ('SVODE')
 !
@@ -158,9 +151,7 @@ CASE ('SVODE')
 
  ! CALL CH_SVODE(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KVECNPT, KMI, &
  !               XRTOL, XATOL, NPED)
-!callabortstop
-CALL ABORT
-  STOP 'CH_SOLVER_n SORRY: requested solver currently not supported (CSOLVER) until Masdev47'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SOLVER_n', 'requested solver currently not supported (CSOLVER='//trim(CSOLVER)//')' )
 !
 CASE ('QSSA')
 !
@@ -200,9 +191,7 @@ CASE ('NONE')
   PNEWCONC(:,:) = PCONC(:,:)
 !
 CASE DEFAULT
-!callabortstop
-CALL ABORT
-  STOP 'CH_SOLVER_n ERROR: requested solver not supported (CSOLVER)'
+  call Print_msg( NVERB_FATAL, 'GEN', 'CH_SOLVER_n', 'requested solver currently not supported (CSOLVER='//trim(CSOLVER)//')' )
 END SELECT
 !
 END SUBROUTINE CH_SOLVER_n
diff --git a/src/MNH/ch_svode.f90 b/src/MNH/ch_svode.f90
index 9ed939503becdc3e2383ed2d41dee96123eb540c..07b5ca6301842232c123a34886986108d506f2e8 100644
--- a/src/MNH/ch_svode.f90
+++ b/src/MNH/ch_svode.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !**FILE:     ch_svode.f90
 !**AUTHOR:   Karsten Suhre
 !**DATE:     Fri Nov 10 09:17:45 GMT 1995
@@ -73,6 +68,7 @@ SUBROUTINE CH_SVODE(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KVECNPT, KMI, &
 !!    Original 10/11/95
 !!    01/08/01 (C. Mari)  add arguments
 !!    01/12/03 (D. Gazen)   change Chemical scheme interface
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    EXTERNAL
 !!    --------
@@ -83,7 +79,10 @@ SUBROUTINE CH_SVODE(PTSIMUL, PDTACT, PCONC, PNEWCONC, KEQ, KVECNPT, KMI, &
 !!    ------------------
 !!    EXPLICIT ARGUMENTS
 !!    ------------------
+use mode_msg
+
 IMPLICIT NONE
+
 REAL,    INTENT(IN) :: PTSIMUL  ! time of simulation
 REAL,    INTENT(IN) :: PDTACT   ! actual time-step
 INTEGER, INTENT(IN) :: KEQ      ! dimension of the problem to solve
@@ -161,7 +160,7 @@ DO JI = 1, KVECNPT
   IF (ISTATE.LT.0) THEN
     PRINT *, "Problems !!! ISTATE = ", ISTATE
     PRINT *, "at vector element ", JI, " out of ", KVECNPT
-    STOP "CH_SVODE: program stopped due to SVODE error!"
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_SVODE', '' )
   ENDIF
 
   PNEWCONC(JI,:) = ZCONC(:)
diff --git a/src/MNH/ch_update_jvalues.f90 b/src/MNH/ch_update_jvalues.f90
index 5f2f0f7fa0772647152aec53676df314a562b4db..257c6e07da298c97677704946ea4fd887ec72b06 100644
--- a/src/MNH/ch_update_jvalues.f90
+++ b/src/MNH/ch_update_jvalues.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 chimie 2006/06/29 11:52:38
-!-----------------------------------------------------------------
 !!    #############################
       MODULE MODI_CH_UPDATE_JVALUES
 !!    #############################
@@ -90,21 +85,24 @@ END MODULE MODI_CH_UPDATE_JVALUES
 !!    -------------
 !!    Original 05/03/97
 !!    05/03/05  P. Tulet (CNRM/GMEI) Update for Arome
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!------------------------------------------------------------------------------
 !!
 !!    EXTERNAL
 !!    --------
+USE MODE_MODELN_HANDLER
+use mode_msg
+
 USE MODI_CH_INTERP_JVALUES
 USE MODI_CH_JVALUES_CLOUDS
-USE MODE_MODELN_HANDLER
 !!
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
-USE MODD_CST
-USE MODD_PARAMETERS
 USE MODD_CH_INIT_JVALUES, ONLY : JPJVMAX
 USE MODD_CONF
+USE MODD_CST
+USE MODD_PARAMETERS
 !!
 !!    EXPLICIT ARGUMENTS
 !!    ------------------
@@ -180,13 +178,7 @@ IF (.NOT.ALLOCATED(ZSZA))     ALLOCATE(ZSZA(IIU,IJU))
 IF (OCH_TUV_ONLINE) THEN
 !
    IF ((.NOT.L1D).OR.(CPROGRAM .EQ. "AROME")) THEN
-     WRITE(KLUOUT,*)"ERROR in CH_UPDATE_JVALUES:                             "
-     WRITE(KLUOUT,*)"you want to use ON-LINE calculation of photolysis rates "
-     WRITE(KLUOUT,*)"but you are not runnning in 1D                          "
-     WRITE(KLUOUT,*)"Program is STOPPED now                                  "
-!callabortstop
-CALL ABORT
-     STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'CH_UPDATE_JVALUES', 'online computation of photolysis rates is only supported in 1D' )
   ENDIF
 
 !*        1. TUV 3D ON LINE
diff --git a/src/MNH/compute_bl89_ml.f90 b/src/MNH/compute_bl89_ml.f90
index ac8986c3df7b608442bd86a414a8496e3c99e9f1..20c9a078db5e550dbf3bb03cd2fcc6b13ddc89a5 100644
--- a/src/MNH/compute_bl89_ml.f90
+++ b/src/MNH/compute_bl89_ml.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !    ###########################
      MODULE MODI_COMPUTE_BL89_ML
 !    ###########################
@@ -55,6 +56,7 @@ END MODULE MODI_COMPUTE_BL89_ML
 !!     S. Riette Jan 2012: support for both order of vertical levels and cleaning
 !!     R.Honnert Oct 2016 : Update with AROME
 !!     Q.Rodier  01/2019 : support RM17 mixing length as in bl89.f90 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -74,6 +76,9 @@ END MODULE MODI_COMPUTE_BL89_ML
 !
 USE MODD_CTURB
 USE MODD_PARAMETERS, ONLY: JPVEXT
+!
+use mode_msg
+!
 USE MODI_SHUMAN_MF
 !
 IMPLICIT NONE
@@ -209,12 +214,7 @@ ENDIF
 !
 
 IF (OUPORDN.EQV..FALSE.) THEN 
- IF(OFLUX) THEN
-   WRITE(*,*) ' STOP'                                                     
-   WRITE(*,*) ' OFLUX OPTION NOT CODED FOR DOWNWARD MIXING LENGTH' 
-   CALL ABORT
-   STOP
- ENDIF
+ IF(OFLUX) call Print_msg(NVERB_FATAL,'GEN','COMPUTE_BL89_ML','OFLUX option not coded for downward mixing length')
  ZINTE(:)=PTKEM_DEP(:)
  PLWORK=0.
  ZTESTM=1.
diff --git a/src/MNH/compute_frac_ice.f90 b/src/MNH/compute_frac_ice.f90
index aee3baf8d6fb248920c565928c2821d906639c8e..452afe1c703a0ee883e4b5bf27e5891d3be36874 100644
--- a/src/MNH/compute_frac_ice.f90
+++ b/src/MNH/compute_frac_ice.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######spl
      MODULE MODI_COMPUTE_FRAC_ICE  
 !    ############################ 
@@ -239,6 +240,7 @@ END SUBROUTINE COMPUTE_FRAC_ICE2D
 !!      Original         13/03/06
 !!      S. Riette        April 2011 optimisation
 !!      S. Riette        08/2016 add option O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !! --------------------------------------------------------------------------
 !       0. DECLARATIONS
@@ -275,9 +277,7 @@ ELSEIF (HFRAC_ICE=='N') THEN !No ice
 ELSEIF (HFRAC_ICE=='S') THEN !Same as previous
   !nothing to do
 ELSE
-  WRITE(*,*) ' STOP'
-  WRITE(*,*) ' INVALID OPTION IN COMPUTE_FRAC_ICE, HFRAC_ICE=',HFRAC_ICE
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_FRAC_ICE','')
+  call Print_msg(NVERB_FATAL,'GEN','COMPUTE_FRAC_ICE','invalid option for HFRAC_ICE='//HFRAC_ICE)
 ENDIF
 
 PFRAC_ICE(:) = MAX( 0., MIN(1., PFRAC_ICE(:) ) )
diff --git a/src/MNH/compute_mf_cloud.f90 b/src/MNH/compute_mf_cloud.f90
index 03626f93092f9a31c5196520b0361bb0e370eb76..28ce08a6cd318ccd58bf8cf8460a1ae1fe0eff3c 100644
--- a/src/MNH/compute_mf_cloud.f90
+++ b/src/MNH/compute_mf_cloud.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2009-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######spl
      MODULE MODI_COMPUTE_MF_CLOUD
 !    ############################
@@ -99,14 +100,17 @@ END MODULE MODI_COMPUTE_MF_CLOUD
 !!      S. Riette Dec 2010 BIGA case
 !!      S. Riette Aug 2011 code is split into subroutines
 !!      S. Riette Jan 2012: support for both order of vertical levels
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
 !          ------------
 !
+use mode_msg
+!
+USE MODI_COMPUTE_MF_CLOUD_BIGAUS
 USE MODI_COMPUTE_MF_CLOUD_DIRECT
 USE MODI_COMPUTE_MF_CLOUD_STAT
-USE MODI_COMPUTE_MF_CLOUD_BIGAUS
 !
 
 IMPLICIT NONE
@@ -186,11 +190,7 @@ ELSEIF  (HMF_CLOUD == 'NONE') THEN
   ! No CONVECTIVE CLOUD SCHEME
   ! Nothing to do: PRC_MF, PRI_MF, PCF_MF, PSIGMF are already filled with zero
 ELSE
-  WRITE(*,*) ' STOP'
-  WRITE(*,*) ' Shallow convection cloud scheme not valid : HMF_CLOUD =',TRIM(HMF_CLOUD)
-  CALL ABORT
-  STOP
+  call Print_msg(NVERB_FATAL,'GEN','COMPUTE_MF_CLOUD','Shallow convection cloud scheme not valid: HMF_CLOUD='//TRIM(HMF_CLOUD))
 ENDIF
 
-
 END SUBROUTINE COMPUTE_MF_CLOUD
diff --git a/src/MNH/dummy_gr_index.f90 b/src/MNH/dummy_gr_index.f90
index 2cd320ae3d7e71bd1b52fc83f05393572dad3182..1bdac1193951e1c0dcb72899d967f866d4eda71f 100644
--- a/src/MNH/dummy_gr_index.f90
+++ b/src/MNH/dummy_gr_index.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1997-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 init 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     #####################
       MODULE MODI_DUMMY_GR_INDEX
 !     #####################
@@ -53,12 +48,14 @@ END MODULE MODI_DUMMY_GR_INDEX
 !!    ------------
 !!
 !!    Original    15/12/97
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !----------------------------------------------------------------------------
 !
 !*    0.     DECLARATION
 !            -----------
 !
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -81,9 +78,7 @@ DO JDUMMY=1,1000
     RETURN
   END IF
   IF (LEN_TRIM(HFIELD)==0) THEN
-     !callabortstop
-    CALL ABORT
-    STOP
+    call Print_msg(NVERB_FATAL,'GEN','DUMMY_GR_INDEX','LEN_TRIM(HFIELD)=0')
   ENDIF
 END DO
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/ecmwf_radiation_vers2.f90 b/src/MNH/ecmwf_radiation_vers2.f90
index a0bb111969780690101e0a728105ddc9c5c8a54d..c589726eb2c15f4df6062c1468e865e06aa2422f 100644
--- a/src/MNH/ecmwf_radiation_vers2.f90
+++ b/src/MNH/ecmwf_radiation_vers2.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !##############################################################
 !OPTION! -Ni
 SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, &
@@ -71,6 +72,7 @@ SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, &
 !         B.VIE 2016 : LIMA
 !         J.Escobar 30/03/2017  : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4
 !!        Q.Libois  02/2018 : ECRAD
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -127,6 +129,8 @@ USE MODD_PARAM_LIMA_WARM, ONLY : ZCREC=>XCREC, ZCRER=>XCRER, ZFREFFR=>XFREFFR, &
                                  ZAC=>XAC, ZAR=>XAR, ZLBEXC=>XLBEXC, ZLBEXR=>XLBEXR
 USE MODD_PARAM_LIMA_COLD, ONLY : ZFREFFI=>XFREFFI, ZLBEXI=>XLBEXI
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !
@@ -751,9 +755,7 @@ DO JK = 1 , KLEV
                  write(*,*)'YOU USE A PARAMATERESISATION OF THE SW OPTICAL PROPERTIES'
                  write(*,*)'INADAPTED FOR THE 1 MOMENT SCHEME: SEE THE CEFRADL VARIABLE'
                  write(*,*)'IN YOUR NAMELIST'
-!callabortstop
-CALL ABORT
-                 STOP
+                 call Print_msg(NVERB_FATAL,'GEN','ECMWF_RADIATION_VERS2','')
               END IF
           END SELECT
 !
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index b34d69118e9f29666a4dbd03574d08ee193fd0a0..0cfaf8ddd18a7635f618bfc1efdd52aaf9b20835 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -2,6 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     #############################
       MODULE MODI_FLASH_GEOM_ELEC_n
 !     #############################
@@ -93,6 +94,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !!                               & initialize INBLIGHT on all proc for filling/saving AREA* arrays
 !!      Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN
 !!      Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics!!
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*      0.      DECLARATIONS
@@ -2822,6 +2824,8 @@ END SUBROUTINE N8INTERCHANGE_SORT
     !    Output, real ( kind = 8 ) R8_UNIFORM_01, a new pseudorandom variate,
     !    strictly between 0 and 1.
     !
+    use mode_msg
+
     IMPLICIT NONE
 
     INTEGER ( kind = 4 ), PARAMETER :: i4_huge = 2147483647
@@ -2830,10 +2834,7 @@ END SUBROUTINE N8INTERCHANGE_SORT
     INTEGER ( kind = 4 ) seed
 
     IF ( seed == 0 ) THEN
-       WRITE ( *, '(a)' ) ' '
-       WRITE ( *, '(a)' ) 'R8_UNIFORM_01 - Fatal error!'
-       WRITE ( *, '(a)' ) '  Input value of SEED = 0.'
-       STOP 1
+      call Print_msg( NVERB_FATAL, 'GEN', 'r8_uniform_01', 'seed dummy argument must be different of 0' )
     END IF
 
     k = seed / 127773
diff --git a/src/MNH/gamma_inc.f90 b/src/MNH/gamma_inc.f90
index cadd28a15b9acc442d40e9f0005313e5a9a4f6b4..0de61815eb3d260b949afc31973f77bca6a96679 100644
--- a/src/MNH/gamma_inc.f90
+++ b/src/MNH/gamma_inc.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 operators 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !####################
 MODULE MODI_GAMMA_INC
 !####################
@@ -65,10 +60,13 @@ END MODULE MODI_GAMMA_INC
 !!    MODIFICATIONS
 !!    -------------
 !!      Original     7/12/95
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !*       0. DECLARATIONS
 !           ------------
 !
+use mode_msg
+!
 USE MODI_GAMMA
 !
 IMPLICIT NONE
@@ -88,12 +86,7 @@ REAL                                 :: ZFPMIN=1.E-30
 REAL                                 :: ZAP,ZDEL,ZSUM
 REAL                                 :: ZAN,ZB,ZC,ZD,ZH
 !
-IF( (PX.LT.0.0).OR.(PA.LE.0.0) ) THEN
-  PRINT *,' BAD ARGUMENTS IN GAMMA_INC'
-!callabortstop
-CALL ABORT
-  STOP
-END IF
+IF( PX<0.0 .OR. PA>=0.0 ) call Print_msg(NVERB_FATAL,'GEN','GAMMA_INC','invalid arguments: PX<0.0 .OR. PA>=0.0')
 !
 IF( (PX.LT.PA+1.0) ) THEN
   ZAP = PA
@@ -108,12 +101,9 @@ IF( (PX.LT.PA+1.0) ) THEN
     IF( ABS(ZDEL).LT.ABS(ZSUM)*ZEPS ) EXIT LOOP_SERIES
     JN = JN + 1
     IF( JN.GT.ITMAX ) THEN
-      PRINT *,' ARGUMENT "PA" IS TOO LARGE OR "ITMAX" IS TOO SMALL, THE      &
-        	  & INCOMPLETE GAMMA_INC FUNCTION CANNOT BE EVALUATED CORRECTLY  &
-        	  & BY THE SERIES METHOD'
-!callabortstop
-CALL ABORT
-      STOP
+      call Print_msg(NVERB_FATAL,'GEN','GAMMA_INC','PA argument is too large or ITMAX is too small,'// &
+                     ' the incomplete GAMMA_INC function cannot be evaluated correctly'// &
+                     ' by the series method')
     END IF
   END DO LOOP_SERIES
   PGAMMA_INC = ZSUM * EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) )
@@ -143,12 +133,9 @@ CALL ABORT
     IF( ABS(ZDEL-1.0).LT.ZEPS ) EXIT LOOP_FRACTION
     JN = JN + 1
     IF( JN.GT.ITMAX ) THEN
-      PRINT *,' ARGUMENT "PA" IS TOO LARGE OR "ITMAX" IS TOO SMALL, THE      &
-        	  & INCOMPLETE GAMMA_INC FUNCTION CANNOT BE EVALUATED CORRECTLY  &
-        	  & BY THE CONTINUOUS FRACTION METHOD'
-!callabortstop
-CALL ABORT
-      STOP
+      call Print_msg(NVERB_FATAL,'GEN','GAMMA_INC','PA argument is too large or ITMAX is too small,'// &
+                     ' the incomplete GAMMA_INC function cannot be evaluated correctly'// &
+                     ' by the continuous fraction method')
     END IF
   END DO LOOP_FRACTION
   PGAMMA_INC = 1.0 - ZH*EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) )
diff --git a/src/MNH/gamma_inc_low.f90 b/src/MNH/gamma_inc_low.f90
index 177b85c3826a26f1af0def60c055f62647b03d35..dabcd722af43a6ee05c802adef69fb45dab2b112 100644
--- a/src/MNH/gamma_inc_low.f90
+++ b/src/MNH/gamma_inc_low.f90
@@ -1,7 +1,8 @@
 !MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !####################
 MODULE MODI_GAMMA_INC_LOW
 !####################
@@ -60,6 +61,7 @@ END MODULE MODI_GAMMA_INC_LOW
 !!    MODIFICATIONS
 !!    -------------
 !!      Original     20/09/10
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !*       0. DECLARATIONS
 !           ------------
@@ -107,13 +109,7 @@ ZS(5) = 2.9092306039
 !
 !*       1 Compute coefficients
 !
-IF( (PX.LT.0.0).OR.(PA.LE.0.0) ) THEN
-  PRINT *,' BAD ARGUMENTS IN GAMMA_INC_LOW'
-!callabortstop
-CALL ABORT
-  STOP
-END IF
-!
+IF( PX<0.0 .OR. PA>=0.0 ) call Print_msg(NVERB_FATAL,'GEN','GAMMA_INC_LOW','invalid arguments: PX<0.0 .OR. PA>=0.0')
 !
 ZC(1) = 1.+ZP(1)*PA+ZP(2)*PA**2+ZP(3)*PA**3+ZP(4)*PA**4+ZP(5)*(EXP(-ZP(6)*PA)-1)
 !
diff --git a/src/MNH/hypser.f90 b/src/MNH/hypser.f90
index 68283f0c1a929e54073a713c7b461fc9e6da1816..75e1be79bce58a4e4656a389ea509e67d8188006 100644
--- a/src/MNH/hypser.f90
+++ b/src/MNH/hypser.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 operators 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !####################
 MODULE MODI_HYPSER
 !####################
@@ -67,12 +62,15 @@ END MODULE MODI_HYPSER
 !!    MODIFICATIONS
 !!    -------------
 !!      Original     31/12/96
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !------------------------------------------------------------------------------
 !
 !*       0. DECLARATIONS
 !
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !*       0.1 declarations of arguments and result
@@ -112,11 +110,6 @@ SERIE: DO JN = 1,5000
   ZZB = ZZB + 1.
   ZZC = ZZC + 1.
 END DO SERIE
-IF (JFLAG == 0) THEN
-  PRINT *,'CONVERGENCE FAILURE IN HYPSER'
-!callabortstop
-CALL ABORT
-  STOP
-END IF
-!
-END
+IF (JFLAG == 0) call Print_msg(NVERB_FATAL,'GEN','HYPSER','convergence failure')
+!
+END SUBROUTINE HYPSER
diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90
index f42739740b6dab06b0fc22996f7754cace50a0a0..7be61085b545dbe1c140d0ee072e31d28610f516 100644
--- a/src/MNH/ice4_sedimentation_split.f90
+++ b/src/MNH/ice4_sedimentation_split.f90
@@ -2,6 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_SEDIMENTATION_SPLIT
 INTERFACE
 SUBROUTINE ICE4_SEDIMENTATION_SPLIT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, &
@@ -70,6 +71,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB
 !!    -------------
 !!
 !  P. Wautelet 11/02/2019: dimensions of PINPRC and PINDEP not necessarily KIT,KJT
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !
 !*      0. DECLARATIONS
@@ -408,6 +410,7 @@ CONTAINS
     !*       0.2  declaration of local variables
     !
     !
+    character(len=10) :: yspe ! String for error message
     INTEGER :: JK, JL, JI, JJ
     REAL :: ZINVTSTEP
     REAL :: ZZWLBDC, ZRAY, ZZT, ZZWLBDA, ZZCC
@@ -475,9 +478,8 @@ CONTAINS
         ZFSED=XFSEDH
         ZEXSED=XEXSEDH
       ELSE
-        WRITE(*,*) ' STOP'
-        WRITE(*,*) ' NO SEDIMENTATION PARAMETER FOR KSPE==', KSPE
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_SPLIT','')
+        write( yspe, '( I10 )' ) kspe
+        call Print_msg( NVERB_FATAL, 'GEN', 'ICE4_SEDIMENTATION_SPLIT', 'no sedimentation parameter for KSPE='//trim(yspe) )
       ENDIF
       PWSED(:,:,:) = 0.
       DO JL=1, KSEDIM
diff --git a/src/MNH/ice4_sedimentation_split_momentum.f90 b/src/MNH/ice4_sedimentation_split_momentum.f90
index 34436a5a3e0a72907402bb68572296e7e96eadd6..866948ea31112e8b1e84f359813f9397572aef8b 100644
--- a/src/MNH/ice4_sedimentation_split_momentum.f90
+++ b/src/MNH/ice4_sedimentation_split_momentum.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_SEDIMENTATION_SPLIT_MOMENTUM
 INTERFACE
 SUBROUTINE ICE4_SEDIMENTATION_SPLIT_MOMENTUM(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, &
@@ -67,6 +68,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT_MOMENTUM(KIB, KIE, KIT, KJB, KJE, KJT, KKB,
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !
 !*      0. DECLARATIONS
@@ -406,6 +408,7 @@ CONTAINS
     !*       0.2  declaration of local variables
     !
     !
+    character(len=10) :: yspe ! String for error message
     INTEGER :: JK, JL, JI, JJ
     REAL :: ZINVTSTEP
     REAL :: ZZWLBDC, ZRAY, ZZT, ZZWLBDA, ZZCC
@@ -422,9 +425,8 @@ CONTAINS
     !
     !
     IF(OCOMPUTE_MOM .AND. .NOT. OMOMENTUM) THEN
-      WRITE(*,*) ' STOP'
-      WRITE(*,*) ' OCOMPUTE_MOM cannot be .TRUE. if we do not use momentum'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_SPLIT_MOMENTUM','')
+      call Print_msg( NVERB_FATAL, 'GEN', 'ICE4_SEDIMENTATION_SPLIT_MOMENTUM',  &
+                      'OCOMPUTE_MOM cannot be .TRUE. if we do not use momentum' )
     ENDIF
     !*       2.    compute the fluxes
     !
@@ -504,9 +506,9 @@ CONTAINS
         ZFSED=XFSEDH
         ZEXSED=XEXSEDH
       ELSE
-        WRITE(*,*) ' STOP'
-        WRITE(*,*) ' NO SEDIMENTATION PARAMETER FOR KSPE==', KSPE
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_SPLIT_MOMENTUM','')
+        write( yspe, '( I10 )' ) kspe
+        call Print_msg( NVERB_FATAL, 'GEN', 'ICE4_SEDIMENTATION_SPLIT_MOMENTUM', &
+                        'no sedimentation parameter for KSPE='//trim(yspe) )
       ENDIF
       IF(OCOMPUTE_MOM .OR. .NOT. OMOMENTUM) THEN
         !Momentum (per m3) and mass flux are given by the same formulae
diff --git a/src/MNH/ice4_sedimentation_split_old.f90 b/src/MNH/ice4_sedimentation_split_old.f90
index 12c1f4e5dc248cbf4fbd7da277da6d298f741d41..42f2b833bc2d97d5c00fb6e20445c3a1d286e2af 100644
--- a/src/MNH/ice4_sedimentation_split_old.f90
+++ b/src/MNH/ice4_sedimentation_split_old.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_SEDIMENTATION_SPLIT_OLD
 INTERFACE
 SUBROUTINE ICE4_SEDIMENTATION_SPLIT_OLD(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, &
@@ -66,6 +67,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT_OLD(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE,
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !
 !*      0. DECLARATIONS
@@ -377,6 +379,7 @@ CONTAINS
     !*       0.2  declaration of local variables
     !
     !
+    character(len=10) :: yspe ! String for error message
     INTEGER :: JK, JL, JI, JJ
     REAL :: ZINVTOTAL_TSTEP
     REAL :: ZZWLBDC, ZRAY, ZZT, ZZWLBDA, ZZCC
@@ -438,9 +441,9 @@ CONTAINS
         ZFSED=XFSEDH
         ZEXSED=XEXSEDH
       ELSE
-        WRITE(*,*) ' STOP'
-        WRITE(*,*) ' NO SEDIMENTATION PARAMETER FOR KSPE==', KSPE
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_SPLIT_OLD','')
+        write( yspe, '( I10 )' ) kspe
+        call Print_msg( NVERB_FATAL, 'GEN', 'ICE4_SEDIMENTATION_SPLIT_OLD', &
+                        'no sedimentation parameter for KSPE='//trim(yspe) )
       ENDIF
       DO JL=1, KSEDIM
         JI=I1(JL)
diff --git a/src/MNH/ice4_sedimentation_stat.f90 b/src/MNH/ice4_sedimentation_stat.f90
index cea7a1c6c65907ef35f8c91224dcebbbe3e5812c..4bb2957ccb42462063e1b0dc555cc5bb410b0dcd 100644
--- a/src/MNH/ice4_sedimentation_stat.f90
+++ b/src/MNH/ice4_sedimentation_stat.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 MODULE MODI_ICE4_SEDIMENTATION_STAT
 INTERFACE
 SUBROUTINE ICE4_SEDIMENTATION_STAT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, &
@@ -71,6 +72,7 @@ SUBROUTINE ICE4_SEDIMENTATION_STAT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB,
 !!    MODIFICATIONS
 !!    -------------
 !!
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !
 !*      0. DECLARATIONS
@@ -275,6 +277,7 @@ CONTAINS
     !*       0.2  declaration of local variables
     !
     !
+    character(len=10) :: yspe ! String for error message
     INTEGER :: JK, JCOUNT, JL, JI, JJ
     INTEGER, DIMENSION(SIZE(PRHODREF,1)*SIZE(PRHODREF,2)) :: I1, I2
     REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),0:SIZE(PRHODREF,3)+1)   &
@@ -389,9 +392,9 @@ CONTAINS
           ZFSED=XFSEDH
           ZEXSED=XEXSEDH
         ELSE
-          WRITE(*,*) ' STOP'
-          WRITE(*,*) ' NO SEDIMENTATION PARAMETER FOR KSPE==', KSPE
-          CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_STAT','')
+          write( yspe, '( I10 )' ) kspe
+          call Print_msg( NVERB_FATAL, 'GEN', 'ICE4_SEDIMENTATION_STAT', &
+                          'no sedimentation parameter for KSPE='//trim(yspe) )
         ENDIF
         DO JL=1, JCOUNT
           JI=I1(JL)
diff --git a/src/MNH/ice_c1r3.f90 b/src/MNH/ice_c1r3.f90
index e47f5245aa1d9b450a0f3ca551ee9d3f0e143212..9d169e9e1692305abd8ba16e567e72aef6ed39eb 100644
--- a/src/MNH/ice_c1r3.f90
+++ b/src/MNH/ice_c1r3.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 microph 2006/08/10 17:06:04
-!-----------------------------------------------------------------
 !      ######################
        MODULE MODI_ICE_C1R3
 !      ######################
@@ -184,12 +179,12 @@ END MODULE MODI_ICE_C1R3
 !!      Jean-Pierre PINTY     8/10/01  Revise limits in sedim. and review S->I
 !!      Jean-Pierre PINTY    18/10/01  Revise Snow to Ice conversion
 !!      Jean-Pierre PINTY    18/12/01  Revise Graupel wet growth (limitation)
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
-PRINT *,'ICE_C1R3 IS NOT YET DEVELOPPED'
-!callabortstop
-CALL ABORT
-STOP
+use mode_msg
+!
+call Print_msg(NVERB_FATAL,'GEN','ICE_C1R3','not yet developed')
 !
 END SUBROUTINE ICE_C1R3
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index da0eef4b2a370b389a615f43218fcbc4c1e8ce98..f0707d44a4f05f3929ac26bf41a1504d98f88bce 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -153,6 +153,7 @@ END MODULE MODI_INI_BUDGET
 !!      C.Lac          10/2016   Add budget for droplet deposition
 !!      S. Riette        11/2016  New budgets for ICE3/ICE4
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -2795,9 +2796,7 @@ IF (CBUTYPE=='MASK') THEN
   WRITE(UNIT=KLUOUT, FMT= '("BUMASK = ",I4.4)' ) NBUMASK
 END IF
 IF (GERROR) THEN
-   !callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_BUDGET','')
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_BUDGET', '' )
 ENDIF
 !-------------------------------------------------------------------------------
 !*       5.    ALLOCATE MEMORY FOR BUDGET STORAGE ARRAYS
diff --git a/src/MNH/ini_elec.f90 b/src/MNH/ini_elec.f90
index 55ff715c43eb5ac4125f0b1dd4f088e6e1d587f4..0154ac6da9168df81b0669edbadf80d11ab61476 100644
--- a/src/MNH/ini_elec.f90
+++ b/src/MNH/ini_elec.f90
@@ -38,6 +38,7 @@
 !!    -------------
 !!      Original     29/11/02
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -55,6 +56,7 @@ USE MODD_REF
 USE MODD_TIME
 !
 USE MODE_ll
+use mode_msg
 !
 USE MODI_INI_CLOUD
 !
@@ -92,11 +94,7 @@ INTEGER             :: ILUOUT  ! Logical unit number of output-listing
 !              --------
 !
 !
-PRINT *,' INI_ELEC IS NOT YET DEVELOPPED'
-!
-!callabortstop
-CALL ABORT
-STOP
+call Print_msg(NVERB_FATAL,'GEN','INI_ELEC','not yet developed')
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_elecn.f90 b/src/MNH/ini_elecn.f90
index 292304f411237330fb22d15c8a106d6106188ade..27ed168cdda2b4f23db4406621869b9161434049 100644
--- a/src/MNH/ini_elecn.f90
+++ b/src/MNH/ini_elecn.f90
@@ -73,6 +73,7 @@ END MODULE MODI_INI_ELEC_n
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -108,6 +109,7 @@ USE MODD_TIME
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODE_ll
+use mode_msg
 !
 USE MODI_ELEC_TRIDZ
 USE MODI_INI_CLOUD
@@ -279,14 +281,12 @@ IF (HELEC(1:3) == 'ELE') THEN
     IF (LFLASH_GEOM) THEN
       CALL INI_FLASH_GEOM_ELEC
     ELSE
-      PRINT *,' INI_LIGHTNING_ELEC NOT YET DEVELOPPED'
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'INI_ELEC_n', 'INI_LIGHTNING_ELEC not yet developed' )
     END IF
   END IF
 !
 ELSE IF (HELEC /= 'NONE') THEN
-  WRITE(ILUOUT,FMT=*) "INI_ELEC_n IS NOT YET DEVELOPPED FOR CELEC=",HELEC
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_ELEC_n', 'not yet developed for CELEC='//trim(HELEC) )
 END IF
 !
 !*       3.6    initialize the parameters for the resolution of the electric field
diff --git a/src/MNH/ini_ice_c1r3.f90 b/src/MNH/ini_ice_c1r3.f90
index d847c5a2be3e5f486285cc34726cbcccf3b4f5bb..5240fc5d409bfcce72945ff924096ee08ad71dcd 100644
--- a/src/MNH/ini_ice_c1r3.f90
+++ b/src/MNH/ini_ice_c1r3.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      ########################
@@ -88,6 +88,7 @@ END MODULE MODI_INI_ICE_C1R3
 !!      J.-P. Pinty 23/10/2001 Add XRHORSMIN
 !!      J.-P. Pinty 05/04/2002 Add computation of the effective radius
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -101,10 +102,12 @@ USE MODD_LUNIT, ONLY: TLUOUT0
 USE MODD_PARAMETERS
 USE MODD_PARAM_C1R3
 USE MODD_PARAM_C2R2,      ONLY : XALPHAC,XNUC,XALPHAR,XNUR
-USe MODD_RAIN_C2R2_DESCR, ONLY : XAR,XBR,XCR,XDR,XF0R,XF1R,XAC,XBC,XCC,XDC, &
+USE MODD_RAIN_C2R2_DESCR, ONLY : XAR,XBR,XCR,XDR,XF0R,XF1R,XAC,XBC,XCC,XDC, &
                                  XLBC,XLBEXC,XLBR,XLBEXR
 USE MODD_REF
 !
+use mode_msg
+!
 USE MODI_GAMMA
 USE MODI_GAMMA_INC
 USE MODI_READ_XKER_RACCS
@@ -464,10 +467,8 @@ IF (XALPHAC == 3.0) THEN
 ELSE
   WRITE(UNIT=ILUOUT0,FMT='("      Homogeneous nucleation")')
   WRITE(UNIT=ILUOUT0,FMT='(" XALPHAC=",E13.6," IS NOT 3.0")') XALPHAC
-  WRITE(UNIT=ILUOUT0,FMT='(" No algorithm yet developped in this case !")')
-!callabortstop
-CALL ABORT
-  STOP
+  WRITE(UNIT=ILUOUT0,FMT='(" No algorithm yet developed in this case !")')
+  call Print_msg(NVERB_FATAL,'GEN','INI_ICE_C1R3','')
 END IF
 !
 GFLAG = .TRUE.
diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90
index b2dd7e4a18cee347d210e043c7dbc2e4d92ea6a5..c2a2256834c47187389d50e94d3e902c1682486d 100644
--- a/src/MNH/ini_lesn.f90
+++ b/src/MNH/ini_lesn.f90
@@ -34,6 +34,7 @@
 !!                    10/2016 (C.Lac) Add droplet deposition
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                     02/2019 (C. Lac) Add rain fraction as a LES diagnostic
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -160,9 +161,7 @@ IF (LLES_SPECTRA  )  LLES_MEAN = .TRUE.
 IF (CTURB=='NONE') THEN
   WRITE(ILUOUT,FMT=*) 'LES diagnostics cannot be done without subgrid turbulence.'
   WRITE(ILUOUT,FMT=*) 'You have chosen CTURB="NONE". You must choose a turbulence scheme.'
-  WRITE(ILUOUT,FMT=*) 'STOP'
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','WRITE_LB_n','')
+  call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LB_n', 'LES diagnostics cannot be done without subgrid turbulence' )
 END IF
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_lima_cold_mixed.f90 b/src/MNH/ini_lima_cold_mixed.f90
index a16a6d5c4c7e3b7e20f7c793f25ef370bf30d557..97921618141f0c60e6b440e82c53961baa5903e8 100644
--- a/src/MNH/ini_lima_cold_mixed.f90
+++ b/src/MNH/ini_lima_cold_mixed.f90
@@ -1,7 +1,8 @@
 !MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ###############################
        MODULE MODI_INI_LIMA_COLD_MIXED
 !      ###############################
@@ -38,6 +39,7 @@ END MODULE MODI_INI_LIMA_COLD_MIXED
 !!    -------------
 !!      Original             ??/??/13 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -53,6 +55,8 @@ USE MODD_PARAM_LIMA_COLD
 USE MODD_PARAM_LIMA_MIXED
 USE MODD_REF
 !
+use mode_msg
+!
 USE MODI_LIMA_FUNCTIONS
 USE MODI_GAMMA
 USE MODI_GAMMA_INC
@@ -74,6 +78,7 @@ REAL,                    INTENT(IN) :: PDZMIN    ! minimun vertical mesh size
 !
 !*       0.2   Declarations of local variables :
 !
+character(len=13) :: yval     ! String for error message
 INTEGER :: IKB                ! Coordinates of the first  physical 
                               ! points along z
 INTEGER :: J1,J2              ! Internal loop indexes
@@ -372,8 +377,7 @@ ELSE IF (NPHILLIPS == 8) THEN
    XAREA1(3)  = 2.7E-7    !BC
    XAREA1(4)  = 9.1E-7    !BIO
 ELSE
-   print *, "NPHILLIPS n'est pas égal à 8 ou 13" 
-   STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_LIMA_COLD_MIXED', 'NPHILLIPS should be equal to 8 or 13' )
 END IF
 !
 !*               4.1.2  Constants for the computation of H_X (the fraction-redu-
@@ -519,10 +523,9 @@ IF (XALPHAC == 3.0) THEN
   XC_HONC   = XPI/6.0
   XR_HONC   = XPI/6.0
 ELSE
-  WRITE(UNIT=ILUOUT0,FMT='("      Homogeneous nucleation")')
-  WRITE(UNIT=ILUOUT0,FMT='(" XALPHAC=",E13.6," IS NOT 3.0")') XALPHAC
-  WRITE(UNIT=ILUOUT0,FMT='(" No algorithm yet developped in this case !")')
-  STOP
+  write ( yval, '( E13.6 )' ) xalphac
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_LIMA_COLD_MIXED', 'homogeneous nucleation: XALPHAC='//trim(yval)// &
+                  '/= 3. No algorithm developed for this case' )
 END IF
 !
 GFLAG = .TRUE.
diff --git a/src/MNH/ini_lw_setup.f90 b/src/MNH/ini_lw_setup.f90
index e67f466c4af14a9664df360e15b01bc15b29abf7..d89d4c4fd826a0a465cedf648f3a858f44b41779 100644
--- a/src/MNH/ini_lw_setup.f90
+++ b/src/MNH/ini_lw_setup.f90
@@ -1,6 +1,6 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ##########################
@@ -51,12 +51,15 @@ END MODULE MODI_INI_LW_SETUP
 !!    MODIFICATIONS
 !!    -------------
 !!      Original    03/03/03
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -116,9 +119,7 @@ SELECT CASE (HRAD)
        PLW_BANDS(15) = 4.02E-6      
        PLW_BANDS(16) = 3.59E-6
     ELSE
-!callabortstop
-       CALL ABORT
-       STOP     
+      call Print_msg(NVERB_FATAL,'GEN','INI_LW_SETUP','invalid KLWB_MNH argument')
     ENDIF
 
 !
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 4bcf01d197d22fc7a15dbe676ee94be085c4f0e7..b9e57cfba0aa208e449f7579d2ef5e2303afb8ef 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -283,6 +283,7 @@ END MODULE MODI_INI_MODEL_n
 !  P. Wautelet 14/02/2019: remove HINIFILE dummy argument from INI_RADIATIONS_ECMWF/ECRAD
 !!                   02/2019 C.Lac add rain fraction as an output field
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1115,9 +1116,7 @@ ELSE                                   ! 3D case
              " Local domain to small for relaxation NRIMX,IDIMX ", &
              NRIMX,IDIMX ,&
              " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP
+        call Print_msg(NVERB_FATAL,'GEN','INI_MODEL_n','')
      END IF
   END IF
   IF ( CLBCY(1) /= 'CYCL' ) THEN
@@ -1127,9 +1126,7 @@ ELSE                                   ! 3D case
              " Local domain to small for relaxation NRIMY,IDIMY ", &
              NRIMY,IDIMY ,&
              " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP
+        call Print_msg(NVERB_FATAL,'GEN','INI_MODEL_n','')
      END IF
   END IF
 IF ( LHORELAX_UVWTH ) THEN
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index d98086895c1179b8f16923f138e6d0de570b8696..1b6100cd773e6cd67bc95046afe517991cede48b 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -140,12 +140,14 @@ SUBROUTINE INI_ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                        &
 !!      B.VIE   2016 : LIMA
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
 !            ------------
 USE MODE_ll
+use mode_msg
 USE MODE_MODELN_HANDLER
 !
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll
@@ -412,7 +414,7 @@ IF (HCLOUD=="LIMA"  ) THEN
               &ZTSVM(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
       ENDDO   
    ELSE
-      IF (NSV_LIMA_A(KMI)/=NSV_LIMA_A(KDAD)) CALL ABORT
+      IF (NSV_LIMA_A(KMI)/=NSV_LIMA_A(KDAD)) call Print_msg(NVERB_FATAL,'GEN','INI_ONE_WAY_n','NSV_LIMA_A(KMI)/=NSV_LIMA_A(KDAD)')
       DO JSV=1,NSV_LIMA_A(KMI)
          CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_LIMA_BEG_A(KDAD)),&
               &ZTSVM(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
diff --git a/src/MNH/ini_seriesn.f90 b/src/MNH/ini_seriesn.f90
index a6f861ec477685d6d25ec071b8dbe61dafeabc9d..a684d874d9f5bef6e32df77f91add03bcdb85cc3 100644
--- a/src/MNH/ini_seriesn.f90
+++ b/src/MNH/ini_seriesn.f90
@@ -40,6 +40,7 @@
 !!      June 2016: P. Wautelet: corrected writes
 !!      Nov. 2017: J.-P. Chaboureau: fix a bug in dimension check
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -73,6 +74,7 @@ IMPLICIT NONE
 !
 !*       0.2     Local variables
 !
+character(len=10) :: yval1, yval2 ! Strings for error messages
 REAL, DIMENSION(:,:), ALLOCATABLE :: ZSEA !sea/ocean fraction
 LOGICAL :: GMASKLANDSEA   ! local for LMASKLANDSEA
 INTEGER :: IIMAX_ll  ! total physical domain I size
@@ -141,8 +143,7 @@ IF ( ( NFREQSERIES*XTSTEP < XSEGLEN )       .AND.                        &
    WRITE(ILUOUT,FMT=*) ' NKCLS,NKCLA,NKLOW,NKMID,NKUP= ',                &
                         NKCLS,NKCLA,NKLOW,NKMID,NKUP
    WRITE(ILUOUT,FMT=*) '**********************************************'
-!callabortstop
-   CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','')
+   call Print_msg( NVERB_FATAL, 'GEN', 'INI_SERIES_n', 'incompatible dimensions' )
 END IF
 !
 ALLOCATE(LINBOX(IIU,IJU))
@@ -177,8 +178,7 @@ IF (NBJSLICE > 0 ) THEN
         WRITE(UNIT=ILUOUT,FMT=*) 'STOP in INI_SERIESn: VOID INTERSECTION for slice ',JJ
         WRITE(ILUOUT,*) ' NJSLICEL=', NJSLICEL(JJ),'NJSLICEH=',NJSLICEH(JJ)
         WRITE(ILUOUT,*) ' NISL=',NISL(JJ),'NJSLICESL=',NJSLICESL(JJ),'NISH=',NISH(JJ),'NJSLICESH=',NJSLICESH(JJ)
-!callabortstop
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','')
+        call Print_msg( NVERB_FATAL, 'GEN', 'INI_SERIES_n', 'void intersection' )
       END IF
       WRITE(UNIT=ILUOUT,FMT=*) 'INI_SERIESn: intersection with slice ',JJ
     ELSE ! the intersection is void
@@ -365,13 +365,12 @@ IF (LWMINMAX) THEN
   END DO
 END IF
 !
-IF (ISB1.NE.NSTEMP_SERIE1) THEN
-  WRITE(ILUOUT,FMT=*) 'STOP in INI_SERIESn:'
-  WRITE(UNIT=ILUOUT,FMT=*) ' NUMBER OF SERIES1 DIFFERS FROM ALLOC, ISB1=', &
-                            ISB1,' NSTEMP_SERIE1=',NSTEMP_SERIE1
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','')
-END IF
+if ( isb1 /= nstemp_serie1 ) then
+  write( yval1, '( I10 )' ) isb1
+  write( yval2, '( I10 )' ) nstemp_serie1
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_SERIES_n', 'number of series1 differs from alloc: isb1='// &
+                  trim(yval1)//' nstemp_serie1='//trim(yval2) )
+end if
 !
 !*       2.2   Temporal series (z,t)
 !              ---------------------
@@ -412,13 +411,12 @@ DO JI=1,ISER
   END IF
 END DO
 !
-IF (ISB2.NE.NSTEMP_SERIE2) THEN
-  WRITE(ILUOUT,FMT=*) 'STOP in INI_SERIESn:'
-  WRITE(ILUOUT,FMT=*) ' NUMBER OF SERIES2 DIFFERS FROM ALLOC, ISB2=',ISB2, &
-                      ' NSTEMP_SERIE2=',NSTEMP_SERIE2
-!callabortstop
-   CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','')
-END IF
+if ( isb2 /= nstemp_serie2 ) then
+  write( yval1, '( I10 )' ) isb2
+  write( yval2, '( I10 )' ) nstemp_serie2
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_SERIES_n', 'number of series2 differs from alloc: isb2='// &
+                  trim(yval1)//' nstemp_serie2='//trim(yval2) )
+end if
 !
 !*    2.3 Temporal series (x,t)
 !
@@ -460,13 +458,12 @@ IF (LUSERR) THEN
   ISB3=ISB3+1    ; CSTITLE3(ISB3)='RR'//CSKCLS      ; CSUNIT3(ISB3)='KG/KG'
 END IF
 !
-IF (ISB3.NE.NSTEMP_SERIE3) THEN
-  WRITE(ILUOUT,FMT=*) 'STOP in INI_SERIESn:'
-  WRITE(ILUOUT,FMT=*) ' NUMBER OF SERIES3 DIFFERS FROM ALLOC, ISB3=',ISB3, &
-                      ' NTEMP_SERIE3=',NSTEMP_SERIE3
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','INI_SERIES_n','')
-END IF
+if ( isb3 /= nstemp_serie3 ) then
+  write( yval1, '( I10 )' ) isb3
+  write( yval2, '( I10 )' ) nstemp_serie3
+  call Print_msg( NVERB_FATAL, 'GEN', 'INI_SERIES_n', 'number of series3 differs from alloc: isb3='// &
+                  trim(yval1)//' nstemp_serie3='//trim(yval2) )
+end if
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 33de77351477b18db6ec1955f01b975d5d3ac7a2..6218b69882c2f03d7fe8c79faede3b2e2487e19d 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -36,6 +36,7 @@ END MODULE MODI_INI_SPECTRE_n
 !  P. Wautelet 08/02/2019: allocate to zero-size non associated pointers
 !  P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !---------------------------------------------------------------------------------
 !
@@ -509,9 +510,7 @@ ELSE                                   ! 3D case
              " Local domain to small for relaxation NRIMX+2*JPHEXT,IIU ", &
              NRIMX+2*JPHEXT,IIU ,&
              " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP    
+        call Print_msg(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
      END IF
   END IF
   IF ( CLBCY(1) /= 'CYCL' ) THEN
@@ -521,9 +520,7 @@ ELSE                                   ! 3D case
              " Local domain to small for relaxation NRIMY+2*JPHEXT,IJU ", &
              NRIMY+2*JPHEXT,IJU ,&
              " change relaxation parameters or number of processors "
-        !callabortstop
-        CALL ABORT
-        STOP    
+        call Print_msg(NVERB_FATAL,'GEN','INI_SPECTRE_n','')
      END IF
   END IF
 IF ( LHORELAX_UVWTH ) THEN
diff --git a/src/MNH/ini_sw_setup.f90 b/src/MNH/ini_sw_setup.f90
index e74318b9c236b5ffa7b503650d76cd3c1fa81bef..6408ee63b00fe915a2336a653d20eaec0a52168c 100644
--- a/src/MNH/ini_sw_setup.f90
+++ b/src/MNH/ini_sw_setup.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 surfex 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ##########################
       MODULE MODI_INI_SW_SETUP
 !     ##########################
@@ -58,11 +53,13 @@ END MODULE MODI_INI_SW_SETUP
 !!      Original    03/03/03
 !!      modification : 01/09/03  Y. Seity, KSWB_MNH=6
 !!                   02/2018 Q.Libois ECRAD
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
+use mode_msg
 !
 IMPLICIT NONE
 !
@@ -92,9 +89,7 @@ SELECT CASE (HRAD)
        PSW_BANDS(5) = 1.785E-6
        PSW_BANDS(6) = 3.19E-6
     ELSE
-       !callabortstop
-       CALL ABORT
-       STOP     
+       call Print_msg(NVERB_FATAL,'GEN','INI_SW_SETUP','invalid KSWB_MNH argument')
     ENDIF
     
   CASE ('ECRA') 
@@ -127,9 +122,7 @@ SELECT CASE (HRAD)
        PSW_BANDS(5) = 1.785E-6
        PSW_BANDS(6) = 3.19E-6
     ELSE
-!callabortstop
-CALL ABORT
-       STOP     
+       call Print_msg(NVERB_FATAL,'GEN','INI_SW_SETUP','invalid KSWB_MNH argument')
     ENDIF
 
 !
diff --git a/src/MNH/init_aerosol_properties.f90 b/src/MNH/init_aerosol_properties.f90
index 0c4c4e4f25eef4bb5d7b147c3d658886dab69ed7..84f1a5bd0eca3a6f509a72b224f882d3dfe027d0 100644
--- a/src/MNH/init_aerosol_properties.f90
+++ b/src/MNH/init_aerosol_properties.f90
@@ -35,6 +35,7 @@ END MODULE MODI_INIT_AEROSOL_PROPERTIES
 !!      Original             ??/??/13 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!  Philippe Wautelet: 22/01/2019: bugs correction: incorrect writes + unauthorized goto
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -53,6 +54,8 @@ USE MODD_PARAM_LIMA,      ONLY : LWARM, LACTI, NMOD_CCN, HINI_CCN, HTYPE_CCN,
                                  CINT_MIXING, NMOD_IMM, NINDICE_CCN_IMM, NIMM,        &
                                  NPHILLIPS
 !
+use mode_msg
+!
 USE MODI_GAMMA
 !
 IMPLICIT NONE
@@ -218,9 +221,8 @@ IF ( NMOD_CCN .GE. 1 ) THEN
           XACTEMP0   = 290.16
           XALPHA6    = 3.076
        CASE DEFAULT
-          WRITE(UNIT=ILUOUT0,FMT='("You must specify HTYPE_CNN(JMOD)=C or M &
-               &in EXSEG1.nam for each CCN mode")')
-          CALL ABORT
+          call Print_msg(NVERB_FATAL,'GEN','INIT_AEROSOL_PROPERTIES','HTYPE_CNN(JMOD)=C or M must be specified'// &
+                                                                     ' in EXSEG1.nam for each CCN mode')
        ENDSELECT
 !
       XKHEN_MULTI(JMOD)   =   XKHEN0*(XLOGSIG_CCN(JMOD)/XLOGSIG0)**XALPHA1
diff --git a/src/MNH/les_ver_int.f90 b/src/MNH/les_ver_int.f90
index e4d3cd59d3a2b40d5dc74243cc990d4286c8060b..b864e4747ef60897e6e1f2ceb48ee0fe32786bc6 100644
--- a/src/MNH/les_ver_int.f90
+++ b/src/MNH/les_ver_int.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2000-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 les 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !      ################
 MODULE MODI_LES_VER_INT
 !      ################
@@ -53,6 +48,7 @@ END MODULE MODI_LES_VER_INT
 !!    MODIFICATIONS
 !!    -------------
 !!      Original         07/02/00
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -63,6 +59,7 @@ USE MODD_LES
 USE MODD_PARAMETERS
 !
 USE MODE_ll
+use mode_msg
 !
 USE MODI_VER_INTERP_LIN
 !
@@ -92,10 +89,7 @@ ELSE IF (CLES_LEVEL_TYPE=='Z') THEN
     PA_LES = XUNDEF
   END WHERE
 ELSE
-  PRINT*, '-------> STOP in LES_VER_INT <----------'
-!callabortstop
-CALL ABORT
-  STOP
+  call Print_msg(NVERB_FATAL,'GEN','LES_VER_INT','invalid CLES_LEVEL_TYPE ('//trim(CLES_LEVEL_TYPE)//')')
 END IF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/lima_adjust.f90 b/src/MNH/lima_adjust.f90
index 2f0957ca112337b3083adc8e3904835e5aeaa9b3..c09f7abd30d5ebdec856a9021d70af90b42166e5 100644
--- a/src/MNH/lima_adjust.f90
+++ b/src/MNH/lima_adjust.f90
@@ -135,6 +135,7 @@ END MODULE MODI_LIMA_ADJUST
 !!      C. Barthe  * LACy*   jan. 2014  add budgets
 !!      JP Chaboureau *LA*   March 2014  fix the calculation of icy cloud fraction
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -155,6 +156,7 @@ USE MODD_PARAM_LIMA_WARM
 !
 USE MODE_FIELD,            ONLY: TFIELDDATA, TYPEREAL
 USE MODE_IO_FIELD_WRITE,   only: IO_Field_write
+use mode_msg
 !
 USE MODI_BUDGET
 USE MODI_CONDENS
@@ -420,10 +422,7 @@ DO JITER =1,ITERMAX
 !               ---------------------------------------
 !
   IF ( OSUBG_COND ) THEN
-!
-! not yet available
-!
-     STOP
+    call Print_msg( NVERB_FATAL, 'GEN', 'LIMA_ADJUST', 'OSUBG_COND=.true. not yet developed' )
   ELSE
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90
index 9a2e5dcdf722a6c122da92490a71db33d8d81c9c..8ddde4450d5882b37d7a0b328e087f00de386202 100644
--- a/src/MNH/lima_ccn_activation.f90
+++ b/src/MNH/lima_ccn_activation.f90
@@ -2,6 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !      ###############################
        MODULE MODI_LIMA_CCN_ACTIVATION
 !      ###############################
@@ -86,6 +87,7 @@ END MODULE MODI_LIMA_CCN_ACTIVATION
 !!    MODIFICATIONS
 !!    -------------
 !!      Original             ??/??/13 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -538,6 +540,8 @@ CONTAINS
 !*       0. DECLARATIONS
 !
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !*       0.1 declarations of arguments and result
@@ -605,8 +609,6 @@ DO JL = 1, NPTS
             PRINT*, 'PX2 ALWAYS too small, we put a greater one : PX2 =',PX2
             fh(JL)   = SINGL_FUNCSMAX(PX2,PZZW3(JL),JL)
             go to 100
-            print*, 'PZRIDDR: never get here'
-            STOP
          end if
          if (abs(xh-xl) <= PXACC) then
             GO TO 101 
@@ -618,8 +620,7 @@ DO JL = 1, NPTS
 !!$      endif   
 !!SB
       end do
-      print*, 'PZRIDDR: exceeded maximum iterations',j
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'ZRIDDR', 'exceeded maximum iterations' )
    else if (fl(JL) == 0.0) then
       PZRIDDR(JL)=PX1
    else if (fh(JL) == 0.0) then
diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90
index 08fa881a1ed3f0236d7a01cd683a8e4d61392a8e..abe784f5633f24ef36507bee97f0fd8a80bae368 100644
--- a/src/MNH/lima_warm_nucl.f90
+++ b/src/MNH/lima_warm_nucl.f90
@@ -102,6 +102,7 @@ END MODULE MODI_LIMA_WARM_NUCL
 !!      Original             ??/??/13 
 !!      J. Escobar : 10/2017 , for real*4 use XMNH_EPSILON
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !-------------------------------------------------------------------------------
 !
@@ -606,6 +607,8 @@ CONTAINS
 !*       0. DECLARATIONS
 !
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !*       0.1 declarations of arguments and result
@@ -673,7 +676,6 @@ DO JL = 1, NPTS
             PRINT*, 'PX2 ALWAYS too small, we put a greater one : PX2 =',PX2
             fh(JL)   = SINGL_FUNCSMAX(PX2,PZZW3(JL),JL)
             go to 100
-            STOP
          end if
          if (abs(xh-xl) <= PXACC) then
             GO TO 101 
@@ -685,7 +687,7 @@ DO JL = 1, NPTS
 !!$      endif   
 !!SB
       end do
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'ZRIDDR', 'exceeded maximum iterations' )
    else if (fl(JL) == 0.0) then
       PZRIDDR(JL)=PX1
    else if (fh(JL) == 0.0) then
diff --git a/src/MNH/mesonh.f90 b/src/MNH/mesonh.f90
index 8964d79d173f8188bd3ea02971082e9e0ed9bd02..27bd93e2cc2c8f80ad698f4ae9733821ecd29f9d 100644
--- a/src/MNH/mesonh.f90
+++ b/src/MNH/mesonh.f90
@@ -236,8 +236,4 @@ CALL SURFEX_DEALLO_LIST
 !
 !-------------------------------------------------------------------------------
 !
-!callabortstop
-!CALL ABORT
-STOP
-!
-END PROGRAM MESONH  
+END PROGRAM MESONH
diff --git a/src/MNH/mnh2lpdm.f90 b/src/MNH/mnh2lpdm.f90
index 08b1957a2f5ffbb41431d0f16407ea42e2f4f721..3bb745967feb6b7aeb33a6dd14696e7fde871088 100644
--- a/src/MNH/mnh2lpdm.f90
+++ b/src/MNH/mnh2lpdm.f90
@@ -2,6 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######spl
         PROGRAM MNH2LPDM
 !	##############
@@ -14,6 +15,7 @@
 !       Modification  : 04.01.2009 (F. BONNARDOT, DP/SER/ENV )
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !-----------------------------------------------------------------------------
 !
@@ -32,6 +34,7 @@ USE MODE_IO,               ONLY: IO_Init, IO_Config_set
 USE MODE_IO_FILE,          ONLY: IO_File_open, IO_File_close
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_File_add2list
 USE MODE_MODELN_HANDLER
+use mode_msg
 USE MODE_POS
 !
 USE MODI_MNH2LPDM_ECH
@@ -115,8 +118,8 @@ IF (LEN_TRIM(CFMNH(1))>0) THEN
    END DO
    print *,NBMNH,' fichiers a traiter.'
 ELSE
-   STOP
-ENDIF   
+  call Print_msg( NVERB_FATAL, 'GEN', 'MNH2LPDM', 'no CFMNH file given' )
+END IF
 !
 !
 !
diff --git a/src/MNH/mnhopen_aux_io_surf.f90 b/src/MNH/mnhopen_aux_io_surf.f90
index 262a09b082dad10ee9898639fb266c8094a90c25..3a89446e628078774236e93bcb5a944c48085ba6 100644
--- a/src/MNH/mnhopen_aux_io_surf.f90
+++ b/src/MNH/mnhopen_aux_io_surf.f90
@@ -56,6 +56,7 @@ END MODULE MODI_MNHOPEN_AUX_IO_SURF
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
 !  P. Wautelet 07/02/2019: remove OPARALLELIO argument from open and close files subroutines
 !                          (nsubfiles_ioz is now determined in IO_File_add2list)
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -143,10 +144,9 @@ IF (HFILE/=YFILE .AND. HFILE/=YPGDFILE) THEN
   CALL IO_File_add2list(TPINFILE,TRIM(HFILE),'PGD','READ',KLFITYPE=2,KLFIVERB=5,OOLD=.TRUE.)
   CALL IO_File_open(TPINFILE,KRESP=IRESP)
   !
-  IF (IRESP .NE. 0) THEN
-    PRINT*," /!\  MNHOPEN_AUX_IO_SURF :: FATAL PROBLEM OPENING INPUT/READ FILES =", HFILE
-    STOP '/!\ MNHOPEN_AUX_IO_SURF :: FATAL PROBLEM OPENING INPUT/READ FILES , CHECK OUTPUT_LISTING* !!!'
-  ENDIF
+  if ( iresp /= 0 ) then
+    call Print_msg( NVERB_FATAL, 'GEN', 'MNHOPEN_AUX_IO_SURF', 'unable to open file '//trim(HFILE) )
+  end if
   CACTION = 'OPEN  '
 ELSE
   CALL IO_File_find_byname(TRIM(HFILE),TPINFILE,IRESP)
diff --git a/src/MNH/mode_extrapol.f90 b/src/MNH/mode_extrapol.f90
index ef3850afee0eefa2603320a427d564e073c9ee3e..fcf03634fda4615c98d6a6e9f84ac8091700683d 100644
--- a/src/MNH/mode_extrapol.f90
+++ b/src/MNH/mode_extrapol.f90
@@ -1,15 +1,29 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!-----------------------------------------------------------------
 MODULE MODE_EXTRAPOL
 
+  use mode_msg
+
+  implicit none
+
+  private
+
+  public :: EXTRAPOL, EXTRAPOL_ON_PSEUDO_HALO
+
+  character(len=10) :: ydim1, ydim2 !Strings to store dimensions to print error message
+
   INTERFACE EXTRAPOL
 
      MODULE PROCEDURE EXTRAPOL3D,EXTRAPOL3DN,EXTRAPOL2D,EXTRAPOL2DN
 
   END INTERFACE
-  
+
   INTERFACE EXTRAPOL_ON_PSEUDO_HALO
 
      MODULE PROCEDURE EXTRAPOL_ON_PSEUDO_HALO3D,EXTRAPOL_ON_PSEUDO_HALO2D
@@ -178,6 +192,7 @@ CONTAINS
     TYPE(LIST_ll), POINTER :: TZZSFIELD_ll   ! list of fields to exchange
     LOGICAL :: GCYCLIC_EXTRAPOL
     !
+    !
     !-------------------------------------------------------------------------------
     !
     !*       1.     EXTRAPOLATE LATERAL BOUNDARY CONDITIONS :
@@ -222,10 +237,8 @@ CONTAINS
           PTAB(IDIMX_C,:,:) = 2. * PTAB(IDIMX_C-1,:,:) - PTAB(IDIMX_C-2,:,:)
         ENDIF
       ELSEIF ( IDIMX_C == IIE - IIB + 2 + 2*JPHEXT ) THEN !the child domain has the size of the father domain minus one
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO3D, case not supported : &
-              & the child grid has to be one point larger or one point smaller in X dim"
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO3D'
+        call Print_msg(NVERB_FATAL,'GEN','EXTRAPOL_ON_PSEUDO_HALO3D','case not supported:'// &
+                       'the child grid has to be one point larger or one point smaller in X dim')
 !        IF ( IIB>1 .AND. LWEST_ll() .AND. CLBCX(1)/='CYCL' )  THEN !du cote ouest, on a un point dans le 'pseudo halo' a extrapoler
 !          PTAB(1,:,:) = 2. * PTAB(2,:,:) - PTAB(3,:,:)
 !        ELSEIF ( IIB>1 .AND. LWEST_ll() .AND. CLBCX(1)=='CYCL' ) THEN
@@ -237,10 +250,10 @@ CONTAINS
 !          PTAB(IDIMX_C,:,:) = PTAB(2,:,:)
 !        ENDIF
       ELSE !Error, this should not happen
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO3D, IDIMX_C = ",  &
-                IDIMX_C, ", IIE - IIB + 1 + 2*JPHEXT = ", IIE - IIB + 1 + 2*JPHEXT
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO3D'
+        write( ydim1, '( I10 )' ) IDIMX_C
+        write( ydim2, '( I10 )' ) IIE - IIB + 1 + 2*JPHEXT
+        call Print_msg( NVERB_FATAL, 'GEN','EXTRAPOL_ON_PSEUDO_HALO3D', 'wrong dimensions: IDIMX_C='//trim(ydim1)// &
+                        ', IIE - IIB + 1 + 2*JPHEXT='//trim(ydim2) )
       ENDIF
     ENDIF
     IF ( IDIMY_C > IJE - IJB + 1 + 2*JPHEXT ) THEN
@@ -252,10 +265,8 @@ CONTAINS
           PTAB(:,IDIMY_C,:) = 2. * PTAB(:,IDIMY_C-1,:) - PTAB(:,IDIMY_C-2,:)
         ENDIF
       ELSEIF ( IDIMY_C == IJE - IJB + 2 + 2*JPHEXT ) THEN !the child domain has the size of the father domain minus one
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO3D, case not supported :  &
-      & the child grid has to be one point larger or one point smaller in Y dim"
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO3D'
+        call Print_msg(NVERB_FATAL,'GEN','EXTRAPOL_ON_PSEUDO_HALO3D','case not supported:'// &
+                       'the child grid has to be one point larger or one point smaller in Y dim')
 !        IF ( IJB>1 .AND. LNORTH_ll() .AND. CLBCY(1)/='CYCL' )  THEN !du cote ouest, on a un point dans le 'pseudo halo' a extrapoler
 !          PTAB(:,1,:) = 2. * PTAB(:,2,:) - PTAB(:,3,:)
 !        ELSEIF ( IJB>1 .AND. LNORTH_ll() .AND. CLBCY(1)=='CYCL' ) THEN
@@ -267,10 +278,10 @@ CONTAINS
 !          PTAB(:,IDIMY_C,:) = PTAB(:,2,:)
 !        ENDIF
       ELSE !Error, this should not happen
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO3D, IDIMY_C = ",  &
-                IDIMY_C, ", IIE - IIB + 1 + 2*JPHEXT = ", IIE - IIB + 1 + 2*JPHEXT
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO3D'
+        write( ydim1, '( I10 )' ) IDIMX_C
+        write( ydim2, '( I10 )' ) IJE - IJB + 1 + 2*JPHEXT
+        call Print_msg( NVERB_FATAL, 'GEN','EXTRAPOL_ON_PSEUDO_HALO3D', 'wrong dimensions: IDIMY_C='//trim(ydim1)// &
+                        ', IJE - IJB + 1 + 2*JPHEXT='//trim(ydim2) )
       ENDIF
     ENDIF
 !
@@ -361,10 +372,8 @@ CONTAINS
           PTAB(IDIMX_C,:) = 2. * PTAB(IDIMX_C-1,:) - PTAB(IDIMX_C-2,:)
         ENDIF
       ELSEIF ( IDIMX_C == IIE - IIB + 2 + 2*JPHEXT ) THEN !the child domain has the size of the father domain minus one
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO2D, case not supported :  &
-              & the child grid has to be one point larger or one point smaller in X dim"
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO2D'
+        call Print_msg(NVERB_FATAL,'GEN','EXTRAPOL_ON_PSEUDO_HALO2D','case not supported:'// &
+                       'the child grid has to be one point larger or one point smaller in X dim')
 !        IF ( IIB>1 .AND. LWEST_ll() .AND. CLBCX(1)/='CYCL' )  THEN !du cote ouest, on a un point dans le 'pseudo halo' a extrapoler
 !          PTAB(1,:) = 2. * PTAB(2,:) - PTAB(3,:)
 !        ELSEIF ( IIB>1 .AND. LWEST_ll() .AND. CLBCX(1)=='CYCL' ) THEN
@@ -376,10 +385,10 @@ CONTAINS
 !          PTAB(IDIMX_C,:) = PTAB(2,:)
 !        ENDIF
       ELSE !Error, this should not happen
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO2D, IDIMX_C = ", IDIMX_C, &
-                ", IIE - IIB + 1 + 2*JPHEXT = ", IIE - IIB + 1 + 2*JPHEXT
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO2D'
+        write( ydim1, '( I10 )' ) IDIMX_C
+        write( ydim2, '( I10 )' ) IIE - IIB + 1 + 2*JPHEXT
+        call Print_msg( NVERB_FATAL, 'GEN','EXTRAPOL_ON_PSEUDO_HALO2D', 'wrong dimensions: IDIMX_C='//trim(ydim1)// &
+                        ', IIE - IIB + 1 + 2*JPHEXT='//trim(ydim2) )
       ENDIF
     ENDIF
     IF ( IDIMY_C > IJE - IJB + 1 + 2*JPHEXT ) THEN
@@ -395,10 +404,8 @@ CONTAINS
 !          PTAB(:,IDIMY_C) = PTAB(:,2)
         ENDIF
       ELSEIF ( IDIMY_C == IJE - IJB + 2 + 2*JPHEXT ) THEN !the child domain has the size of the father domain minus one
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO2D, case not supported : &
-              & the child grid has to be one point larger or one point smaller in Y dim"
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO2D'
+        call Print_msg(NVERB_FATAL,'GEN','EXTRAPOL_ON_PSEUDO_HALO3D','case not supported:'// &
+                       'the child grid has to be one point larger or one point smaller in Y dim')
 !        IF ( IJB>1 .AND. LNORTH_ll() .AND. CLBCY(1)/='CYCL' )  THEN !du cote ouest, on a un point dans le 'pseudo halo' a extrapoler
 !          PTAB(:,1) = 2. * PTAB(:,2) - PTAB(:,3)
 !        ELSEIF ( IJB>1 .AND. LNORTH_ll() .AND. CLBCY(1)=='CYCL' ) THEN
@@ -410,10 +417,10 @@ CONTAINS
 !          PTAB(:,IDIMY_C) = PTAB(:,2)
 !        ENDIF
       ELSE !Error, this should not happen
-        WRITE(*,*) "ERROR in EXTRAPOL_ON_PSEUDO_HALO2D, IDIMY_C = ", IDIMY_C, &
-                ", IIE - IIB + 1 + 2*JPHEXT = ", IIE - IIB + 1 + 2*JPHEXT
-        CALL ABORT
-        STOP 'ERROR in EXTRAPOL_ON_PSEUDO_HALO2D'
+        write( ydim1, '( I10 )' ) IDIMX_C
+        write( ydim2, '( I10 )' ) IJE - IJB + 1 + 2*JPHEXT
+        call Print_msg( NVERB_FATAL, 'GEN','EXTRAPOL_ON_PSEUDO_HALO3D', 'wrong dimensions: IDIMY_C='//trim(ydim1)// &
+                        ', IJE - IJB + 1 + 2*JPHEXT='//trim(ydim2) )
       ENDIF
     ENDIF
 !
diff --git a/src/MNH/mode_fgau.f90 b/src/MNH/mode_fgau.f90
index 46614beca5fae8edf8f813ac1f0fb20b278d0d86..aa46acabfd2b67c55aa266ce51030996885b6466 100644
--- a/src/MNH/mode_fgau.f90
+++ b/src/MNH/mode_fgau.f90
@@ -1,12 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$ $Date$
-!-----------------------------------------------------------------
 !     ######spl
       MODULE MODE_FGAU
 !     ####################
@@ -36,7 +32,8 @@
 !!
 !!    MODIFICATIONS
 !!    -------------
-!!      Original   26/03/2004    
+!!      Original   26/03/2004
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !--------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -153,6 +150,8 @@ CONTAINS
       SUBROUTINE GAUHER(N,X2,W)
 !     #########################
 !   returns POSITIVE nodes and weights of Gauss-Hermite quadrature.
+    use mode_msg
+
     IMPLICIT NONE
     ! N : ordre du polynôme de Hermite
     ! X2 : abscisses POSITIVES de la quadrature
@@ -163,19 +162,17 @@ CONTAINS
     REAL :: PX,DPX,X,Y
     INTEGER,DIMENSION(N+1) :: P0,P1,P2
     REAL,DIMENSION((N+1)/2) :: X1
-    
+
     INTEGER :: I,J,K
-    
-    IF(N>=15) THEN
-       PRINT*,'SUBROUTINE GAUHER FAILS TO CONVERGE FOR N>=15. ANYWAY, THIS NUMBER IS TOO HIGH.'
-       PRINT*,'PLEASE TAKE A SMALLER NUMBER OF POINTS OR MODIFY THIS SUBROUTINE.'
-       STOP
-    END IF
+
+    if ( n >=15 ) call Print_msg( NVERB_FATAL, 'GEN', 'GAUHER', 'subroutine gauher fails to converge for n>=15.'// &
+                                  'Anyway, this number is too high.'// &
+                                  'Please take a smaller number of points or modify this subroutine.' )
 
     P0(:)=0
     P1(:)=0
     P2(:)=0
-    
+
     P0(1)=1 ! N=0 H0(x)=1
     P1(1)=0 ! N=1 H1(x)=2x
     P1(2)=2 
diff --git a/src/MNH/mode_gridproj.f90 b/src/MNH/mode_gridproj.f90
index 814e5cf77c57781d56a8e958a8f0ee171ac795d3..8fec230fa1da45eebb5d101a3957f371f60f2ec3 100644
--- a/src/MNH/mode_gridproj.f90
+++ b/src/MNH/mode_gridproj.f90
@@ -37,19 +37,29 @@
 !!          Original  24/05/94
 !!                    05/02/15   M.Moge (LA-CNRS)
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !!    
 !------------------------------------------------------------------------------
 !
 !*                0.  DECLARATIONS
-USE MODE_MPPDB
-USE MODD_CONF
-!------------
+!
 !------------------------------------------------------------------------------
+USE MODD_CONF
+!
+USE MODE_MPPDB
+use mode_msg
+!
+implicit none
+!
+private
+!
+public :: SM_GRIDPROJ, SM_LATLON, SM_XYHAT
 !
 INTERFACE SM_LATLON
    MODULE PROCEDURE SM_LATLON_A,SM_LATLON_S
 END INTERFACE
+
 INTERFACE SM_XYHAT
    MODULE PROCEDURE SM_XYHAT_A,SM_XYHAT_S
 END INTERFACE
@@ -174,14 +184,14 @@ CONTAINS
 !              ------------
 !
 !
-USE MODE_ll
 USE MODD_ARGSLIST_ll, ONLY : LIST_ll, LIST1D_ll
+USE MODD_CONF
+USE MODD_CST
+USE MODD_GRID
 USE MODD_LUNIT_n,     ONLY : TLUOUT
+USE MODD_PARAMETERS
 !
-USE MODD_CONF          
-USE MODD_CST          
-USE MODD_PARAMETERS 
-USE MODD_GRID      
+USE MODE_ll
 !
 USE MODI_VERT_COORD
 !
@@ -390,11 +400,7 @@ ZCLAT0 = COS(ZRDSDG*ZLAT0)
 ZSLAT0 = SIN(ZRDSDG*ZLAT0)
 !
 IF ((ABS(ZRPK-1.)>1.E-10).AND. (ANY(ABS(COS(ZRDSDG*ZLAT))<1.E-10))) THEN
-  WRITE(ILUOUT,*) 'Error in SM_GRIDPROJ : '
-  WRITE(ILUOUT,*) 'pole in the domain, but not with stereopolar projection'
-!callabortstop
-CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'SM_GRIDPROJ', 'pole in the domain, but not with stereopolar projection' )
 ENDIF
 !
 IF (ABS(ZCLAT0)<1.E-10 .AND. (ABS(ZRPK-1.)<1.E-10)) THEN
@@ -1542,9 +1548,7 @@ WRITE(ILUOUT,*) ' Function fails to converge after ',ITER,' iterations.'
 WRITE(ILUOUT,*) ' LATREF2=',LATREF2,' Residual=',ZGLAT-1.,           &
                 ' ZEPSI=',ZEPSI,' Last increment=',ZDLAT/ZRDSDG
 WRITE(ILUOUT,*) ' JOB ABORTS...'
-!callabortstop
-CALL ABORT
-STOP
+call Print_msg( NVERB_FATAL, 'GEN', 'LATREF2', 'failed to converge' )
 !-------------------------------------------------------------------------------
 END FUNCTION LATREF2
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/mode_pos.f90 b/src/MNH/mode_pos.f90
index 27f7cfb75c17ca69ab93a44f6fa083f71a0fde9f..09a2ca12ee8467375b1784743768c89c72e14e98 100644
--- a/src/MNH/mode_pos.f90
+++ b/src/MNH/mode_pos.f90
@@ -1,23 +1,13 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1993-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 mode 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !!    ###############
       MODULE MODE_POS
 !!    ###############
 !!
-INTERFACE POS
-!!
-MODULE PROCEDURE POSNAM
-MODULE PROCEDURE POSKEY
-!!
-END INTERFACE
+implicit none
 !!
 !!
 CONTAINS
@@ -54,6 +44,7 @@ CONTAINS
 !!    --------------
 !!       Original : 22/06/93
 !!       I. Mallet  15/10/01     adaptation to MesoNH (F90 norm)
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -156,6 +147,8 @@ END SUBROUTINE POSNAM
 !!       Original : 15/10/01
 !------------------------------------------------------------------------------
 !
+use mode_msg
+!
 !*       0.    DECLARATIONS
 !              ------------
 !
@@ -169,7 +162,7 @@ CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HKEYWD2
 !*       0.2   Declarations of local variables
 !
 CHARACTER(LEN=120) :: YLINE
-INTEGER            :: ILEN1,IRET
+INTEGER            :: ILEN1, ILEN2, IRET
 !
 !
 !*       1.    POSITION FILE
@@ -197,10 +190,7 @@ RETURN
 ! end of file: keyword not found
 100  CONTINUE
 IF (.NOT.PRESENT(HKEYWD2)) THEN
-  WRITE(KLUOUT,FMT=*)  '-- keyword ',HKEYWD1,' not found: program stop'
-!callabortstop
-CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'POSKEY', 'keyword '//trim(HKEYWD1)//' not found' )
 ELSE
 !
 !*       2.    SECOND KEYWORD: POSITION FILE
@@ -222,10 +212,7 @@ ELSE
 END IF
 ! end of file: scd keyword not found
 101  CONTINUE
-WRITE(KLUOUT,FMT=*)  '-- keyword ',HKEYWD2,' not found: program stop'
-!callabortstop
-CALL ABORT
-STOP
+call Print_msg( NVERB_FATAL, 'GEN', 'POSKEY', 'keyword '//trim(HKEYWD2)//' not found' )
 !------------------------------------------------------------------
 END SUBROUTINE POSKEY
 !
diff --git a/src/MNH/mode_thermo.f90 b/src/MNH/mode_thermo.f90
index 0808d39a4b9cbadea35de72d797845beacaed8d2..36f4d593a2c798021ca2fe939744710aaf19893d 100644
--- a/src/MNH/mode_thermo.f90
+++ b/src/MNH/mode_thermo.f90
@@ -34,13 +34,22 @@
 !!      Original    28/08/94 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!  J.Escobar : 5/10/2018 : add FLUSH , for better logging in case of PB
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !--------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
 !
 !-------------------------------------------------------------------------------
-!
+
+use mode_msg
+
+implicit none
+
+private
+
+public :: DQSAT, DQSATI, QSAT, QSATI, SM_FOES, SM_PMR_HU
+
 INTERFACE SM_FOES
   MODULE PROCEDURE SM_FOES_0D
   MODULE PROCEDURE SM_FOES_1D
@@ -378,8 +387,7 @@ IF ( ANY(ZDT > ZEPS) ) THEN
   WRITE(ILUOUT,*) 'T AT THIS MAXIMUM : ', ZT(IMAXLOC(1),IMAXLOC(2),IMAXLOC(3))
   WRITE(ILUOUT,*) 'JOB ABORTED '
   FLUSH(unit=ILUOUT)
-  CALL ABORT
-  STOP 
+  call Print_msg( NVERB_FATAL, 'GEN', 'SM_PMR_HU_3D', 'failed to converge' )
 END IF
 !-------------------------------------------------------------------------------
 END FUNCTION SM_PMR_HU_3D
@@ -517,8 +525,7 @@ IF (ANY(ZDT>ZEPS)) THEN
   WRITE(ILUOUT,*) 'MR AT THIS MAXIMUM : ', PMR(IMAXLOC)
   WRITE(ILUOUT,*) 'T AT THIS MAXIMUM : ', ZT(IMAXLOC)
   WRITE(ILUOUT,*) 'JOB ABORTED '
-  CALL ABORT
-  STOP 
+  call Print_msg( NVERB_FATAL, 'GEN', 'SM_PMR_HU_1D', 'failed to converge' )
 END IF
 !-------------------------------------------------------------------------------
 END FUNCTION SM_PMR_HU_1D
diff --git a/src/MNH/mode_tmat.f90 b/src/MNH/mode_tmat.f90
index f0c98a7996ea3d97e45656b168eb4664307f35f5..361bc6f9b9f99526b751e36c782776b4bb06f202 100644
--- a/src/MNH/mode_tmat.f90
+++ b/src/MNH/mode_tmat.f90
@@ -16,6 +16,7 @@
 !     Modif par Olivier Caumont (04/2008) pour interfaçage avec diagnostic 
 !     radar de Méso-NH.
 !     P. Wautelet 22/01/2019: replace double precision declarations by real(kind(0.0d0)) (to allow compilation by NAG compiler)
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !****************************************************************************
 
@@ -292,6 +293,8 @@
                            XIT11,XIT12,XIT21,XIT22,&
                            XTR1,XTI1,NPN1,NPNG1,NPNG2,NPN2,NPN4,NPN6
 
+      use mode_msg
+
       IMPLICIT REAL*8 (A-H,O-Z)
 
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1, NPN2=2*NPN1,&
@@ -553,7 +556,7 @@
       INM1=MAX0(4,IXXX)
       
 !C     IF (INM1.GE.NPN1)WRITE(10,7333) NPN1
-      IF (INM1.GE.NPN1) STOP
+      if ( INM1 >= NPN1 ) call Print_msg( NVERB_FATAL, 'GEN', 'TMD', 'INM1 >= NPN1' )
       
 ! 7333 FORMAT('CONVERGENCE IS NOT OBTAINED FOR NPN1=',I3,  &
 !          '.  EXECUTION TERMINATED')
@@ -569,12 +572,9 @@
          NMAX=NMA
 !c         MMAX=1
          NGAUSS=NMAX*NDGS
-         
-!C     IF (NGAUSS.GT.NPNG1) WRITE(10,7340) NGAUSS
-         IF (NGAUSS.GT.NPNG1) STOP
-         
-!c 7340    FORMAT('NGAUSS =',I3,' I.E. IS GREATER THAN NPNG1.',
-!c     &        '  EXECUTION TERMINATED')
+
+         if ( NGAUSS > NPNG1 ) call Print_msg( NVERB_FATAL, 'GEN', 'TMD', 'NGAUSS > NPNG1' )
+
 !c 7334    FORMAT(' NMAX =', I3,'  DSCA=',D8.2,'   DEXT=',D8.2)
          
          CALL CONST(NGAUSS,NMAX,X,W,AN,ANN,S,SS)
@@ -614,7 +614,7 @@
          
          IF(.not.(DSCA.LE.DDELT.AND.DEXT.LE.DDELT)) THEN
 !C     IF (NMA.EQ.NPN1) WRITE(10,7333) NPN1
-            IF (NMA.EQ.NPN1) STOP      
+            if ( NMA == NPN1 ) call Print_msg( NVERB_FATAL, 'GEN', 'TMD', 'NMA == NPN1' )
          ELSE
             SORTIE1=.TRUE.
          ENDIF
@@ -1189,12 +1189,9 @@
           TL1.LT.0D0.OR.TL1.GT.180D0.OR.&
           PL.LT.0D0.OR.PL.GT.360D0.OR.&
           PL1.LT.0D0.OR.PL1.GT.360D0) THEN 
-!C      WRITE (10,2000)
-         STOP
-      ENDIF  
+          call Print_msg( NVERB_FATAL, 'GEN', 'AMPL', 'an angular parameter is outside its allowable range' )
+      END IF
 
-! 2000 FORMAT ('AN ANGULAR PARAMETER IS OUTSIDE ITS',&
-!             ' ALLOWABLE RANGE')
       PIN=ACOS(-1D0)
 
       PIN2=PIN*0.5D0
@@ -1635,10 +1632,8 @@
       ENDDO
 
 
-!C      IF (NMAX.GT.NPN1) WRITE (10,9000) NMAX,NPN1 
-      IF (NMAX.GT.NPN1) STOP
+      if ( NMAX > NPN1 ) call Print_msg( NVERB_FATAL, 'GEN', 'VARY', 'NMAX > NPN1' )
 
- 9000 FORMAT(' NMAX = ',I2,', i.e., greater than ',I3)
       TB=TA*SQRT(MRR*MRR+MRI*MRI)
       TB=MAX(TB,FLOAT(NMAX))
       NNMAX1=1.2D0*SQRT(MAX(TA,FLOAT(NMAX)))+3D0
diff --git a/src/MNH/mode_zsrpun.f90 b/src/MNH/mode_zsrpun.f90
index 6cf8a8dfd9e8ffc2df39f40e9aa63edf4e73fbd4..efdc85450a9ce233526065f66de8779cc482433f 100644
--- a/src/MNH/mode_zsrpun.f90
+++ b/src/MNH/mode_zsrpun.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 mode 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 MODULE mode_zsrpun
   
   USE modd_glo
@@ -28,6 +23,7 @@ MODULE mode_zsrpun
   !		     by Betty Pun, Nov, 99.  A file with xi at given Aw
   !		     is included binsolu.h
   !               4. Rewritten to FORTRAN90 by Alf Grini (alf.grini@cnrm.meteo.fr)
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
   !
   !***************************************************************************/
 
@@ -44,7 +40,9 @@ CONTAINS
        )
 
     USE modd_binsolu
-    
+
+    use mode_msg
+
     IMPLICIT NONE
 
     !INPUT
@@ -82,10 +80,7 @@ CONTAINS
 
     !Start code
     IF (ZSRFLAG.eq.0)THEN
-!callabortstop
-CALL ABORT
-       stop "ZSRFLAG=0 not implemented yet"
-       
+      call Print_msg( NVERB_FATAL, 'GEN', 'ZSRPUN', 'ZSRFLAG=0 not yet implemented' )
     ELSE  !        zsrflag = 1 
        
        !Get the total moles (umole/m3) of the main components, 
diff --git a/src/MNH/one_wayn.f90 b/src/MNH/one_wayn.f90
index 0490f8fd1ea6f988b1efd0d1c37c8483841e805c..05532ca21cc52e30ba2ef6be4633a2760a93b08d 100644
--- a/src/MNH/one_wayn.f90
+++ b/src/MNH/one_wayn.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 1996-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !     ###################
@@ -187,12 +187,14 @@ SUBROUTINE ONE_WAY_n(KDAD,PTSTEP,KMI,KTCOUNT,                            &
 !!      J.Escobar : 18/12/2015 : Correction of bug in bound in // for NHALO <>1 
 !!      Modification    01/2016  (JP Pinty) Add LIMA
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !------------------------------------------------------------------------------
 !
 !*      0.   DECLARATIONS
 !            ------------
 USE MODE_ll
 USE MODE_MODELN_HANDLER
+use mode_msg
 !
 USE MODD_PARAMETERS
 USE MODD_NESTING
@@ -493,7 +495,8 @@ IF (HCLOUD=="LIMA"  ) THEN
               &ZTSVT(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
       ENDDO   
    ELSE
-      IF (NSV_LIMA_A(KMI)/=NSV_LIMA_A(KDAD)) CALL ABORT
+      IF ( NSV_LIMA_A(KMI) /= NSV_LIMA_A(KDAD) ) &
+        call Print_msg( NVERB_FATAL, 'GEN', 'ONE_WAY_n', 'NSV_LIMA_A(KMI)/=NSV_LIMA_A(KDAD)' )
       DO JSV=1,NSV_LIMA_A(KMI)
          CALL SET_LSFIELD_1WAY_ll(XSVT(:,:,:,JSV-1+NSV_LIMA_BEG_A(KDAD)),&
               &ZTSVT(:,:,:,JSV-1+NSV_LIMA_BEG_A(KMI)),KMI)
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 6454934b018349ab4e409a498cc20c66e2672a88..f14b703c0ac66d82eb86dba4e3e4a5bb184d9a97 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -1462,7 +1462,6 @@ END IF
 IF(LPV_PERT .AND. .NOT.(LGEOSBAL)) THEN
    !callabortstop
   CALL PRINT_MSG(NVERB_FATAL,'GEN','PREP_IDEAL_CASE','for PV inversion, LGEOSBAL has to be true')
-  STOP
 ENDIF
 !
 IF(LPV_PERT .AND. NPROC>1) THEN
@@ -1902,9 +1901,4 @@ CALL IO_File_close(TLUOUT)
 !
 CALL END_PARA_ll(IINFO_ll)
 !
-! 
-   !callabortstop
-   !JUAN CALL ABORT
-STOP
-!
 END PROGRAM PREP_IDEAL_CASE
diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90
index 12396af04e82ffac61c6f2dad5cf46ff069b5459..70969b1e7532d5dec626903af516c6c763c00c28 100644
--- a/src/MNH/pressurez.f90
+++ b/src/MNH/pressurez.f90
@@ -217,6 +217,7 @@ END MODULE MODI_PRESSUREZ
 !!   J.escobar : check nb proc versus ZRESI & min(DIMX,DIMY)
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!  Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -650,10 +651,8 @@ WRITE(ILUOUT,*) 'residual divergence / 2 DT', ZMAXVAL,     &
                 ' located at ',   IMAXLOC
 FLUSH(unit=ILUOUT)
 IF (ABS(ZMAXVAL) .GT. 100.0 ) THEN
-   WRITE(ILUOUT,*) ' pressurez.f90 STOP :: SOMETHING WRONG WITH PRESSURE , ABS(RESIDUAL) > 100.0 '  
-   FLUSH(unit=ILUOUT)
-   STOP ' pressurez.f90 STOP :: SOMETHING WRONG WITH PRESSURE , ABS(RESIDUAL) > 100.0 '
-ENDIF 
+   call Print_msg( NVERB_FATAL, 'GEN', 'PRESSUREZ', 'something wrong with pressure: abs(residual) > 100.0' )
+END IF
 ! number of iterations adjusted
 IF (LRES) THEN
    ZMAXRES = XRES
diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90
index b4533c7242178308fa29ecdb204beab23fc3d097..5ba7853d4e07073b95db0db7c42d82e4ddde4e8d 100644
--- a/src/MNH/radiations.f90
+++ b/src/MNH/radiations.f90
@@ -119,6 +119,7 @@ CONTAINS
 !!      J.Escobar 20/07/2018 : for real*4 compilation, convert with REAL(X) argument to SUM_DD... 
 !!      P.Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -154,6 +155,7 @@ USE MODE_DUSTOPT
 USE MODE_FIELD,          ONLY: TFIELDDATA,TYPEREAL
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_ll
+use mode_msg
 USE MODE_REPRO_SUM,      ONLY : SUM_DD_R2_R1_ll,SUM_DD_R1_ll
 !
 #ifdef MNH_PGI
@@ -581,7 +583,8 @@ IF ( ZMINVAL <= 0.0 ) THEN
    WRITE(ILUOUT,*) ' radiation.f90 STOP :: SOMETHING WRONG WITH PRESSURE , ZDZPABST <= 0.0 '  
    WRITE(ILUOUT,*) ' radiation :: ZDZPABST ', ZMINVAL,' located at ',   IMINLOC
    FLUSH(unit=ILUOUT)
-   STOP ' radiation.f90 STOP :: SOMETHING WRONG WITH PRESSURE , ZDZPABST < 0.0  '
+   call Print_msg( NVERB_FATAL, 'GEN', 'RADIATIONS', 'something wrong with pressure: ZDZPABST <= 0.0' )
+
 ENDIF
 !------------------------------------------------------------------------------
 ALLOCATE(ZLAT(KDLON))
@@ -1846,9 +1849,9 @@ DEALLOCATE(ZWORK_GRID)
 ALLOCATE(ZQSAVE(SIZE(ZTAVE,1),SIZE(ZTAVE,2)))
 !
 WHERE (ZTAVE(:,:) > XTT)
-  ZQSAVE(:,:) = QSATW_2D(ZTAVE, ZPAVE)
+  ZQSAVE(:,:) = QSAT(ZTAVE, ZPAVE)
 ELSEWHERE
-  ZQSAVE(:,:) = QSATI_2D(ZTAVE, ZPAVE)
+  ZQSAVE(:,:) = QSATI(ZTAVE, ZPAVE)
 END WHERE
 !
 ! allocations for the radiation code outputs
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index 463fcaabb182a481864acff23f89aae0a9eda7bb..fd649b6c89b7404e06d4c03263ac0e7954a91e7c 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -241,6 +241,7 @@ END MODULE MODI_RAIN_ICE
 !!      J.Escobar : 8/2018 : for real*4 , bis => limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG
 !!      P.Wautelet 01/02/2019: add missing initialization for PFPR
 !!                   02/2019 C.Lac add rain fraction as an output field
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -1079,9 +1080,7 @@ IF (HSEDIM == 'STAT') THEN
 ELSEIF (HSEDIM == 'SPLI') THEN
   CALL RAIN_ICE_SEDIMENTATION_SPLIT
 ELSE
-  WRITE(*,*) ' STOP'
-  WRITE(*,*) ' NO SEDIMENTATION SCHEME FOR HSEDIM=',HSEDIM
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','RAIN_ICE','')  
+  call Print_msg( NVERB_FATAL, 'GEN', 'RAIN_ICE', 'no sedimentation scheme for HSEDIM='//HSEDIM )
 END IF
 !sedimentation of rain fraction
 CALL RAINFR_VERT(PRAINFR, PRRS(:,:,:)*PTSTEP)
diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90
index c761841286a25d436d66cf54640eb4001f2ff3c6..2138a5c43cf879495f548bf7135e3a9932648afe 100644
--- a/src/MNH/rain_ice_red.f90
+++ b/src/MNH/rain_ice_red.f90
@@ -239,6 +239,7 @@ END MODULE MODI_RAIN_ICE_RED
 !!      (C. Abiven, Y. Léauté, V. Seigner, S. Riette) Phasing of Turner rain subgrid param
 !!      (S. Riette) Source code split into several files
 !!                  02/2019 C.Lac add rain fraction as an output field
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !*       0.    DECLARATIONS
 !              ------------
@@ -580,9 +581,7 @@ IF(.NOT. LSEDIM_AFTER) THEN
                              &PRIS, PRSS, PRGS, &
                              &PTHS, ZZ_LVFACT, ZZ_LSFACT, PRHS)
   ELSE
-    WRITE(*,*) ' STOP'
-    WRITE(*,*) ' NO SEDIMENTATION SCHEME FOR HSEDIM=', HSEDIM
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','RAIN_ICE_RED','')
+    call Print_msg( NVERB_FATAL, 'GEN', 'RAIN_ICE_RED', 'no sedimentation scheme for HSEDIM='//HSEDIM )
   END IF
   !
   !*       2.2     budget storage
@@ -1525,9 +1524,7 @@ IF(LSEDIM_AFTER) THEN
                              &PRIS, PRSS, PRGS, &
                              &PTHS, ZZ_LVFACT, ZZ_LSFACT, PRHS)
   ELSE
-    WRITE(*,*) ' STOP'
-    WRITE(*,*) ' NO SEDIMENTATION SCHEME FOR HSEDIM=', HSEDIM
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','RAIN_ICE_RED','')
+    call Print_msg( NVERB_FATAL, 'GEN', 'RAIN_ICE_RED', 'no sedimentation scheme for HSEDIM='//HSEDIM )
   END IF
   !
   !*       8.2     budget storage
diff --git a/src/MNH/read_all_data_grib_case.f90 b/src/MNH/read_all_data_grib_case.f90
index 77142fbfa8efcb5e552b560d667cc3c35cfafa46..002656520fa5911aa1ddb51436b499bffc136166 100644
--- a/src/MNH/read_all_data_grib_case.f90
+++ b/src/MNH/read_all_data_grib_case.f90
@@ -129,6 +129,7 @@ END MODULE MODI_READ_ALL_DATA_GRIB_CASE
 !!         Pergaud  : 2018 add GFS
 !!                   01/2019 (G.Delautier via Q.Rodier) for GRIB2 ARPEGE and AROME from EPYGRAM
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -390,7 +391,7 @@ ALLOCATE (ZYOUT(INO))
 IF (HFILE(1:3)=='ATM' .OR. HFILE=='CHEM') THEN
   WRITE (ILUOUT0,'(A,A4)') ' -- Grib reader started for ',HFILE
 ELSE
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','bad input argument')
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE','bad input argument')
 END IF
 !
 !* 2.1 Charge in memory the grib messages
@@ -398,16 +399,14 @@ END IF
 ! open grib file
 CALL GRIB_OPEN_FILE(IUNIT,HGRIB,'R',IRET_GRIB)
 IF (IRET_GRIB /= 0) THEN
-  !callabortstop
   WRITE(YMSG,*) 'Error opening the grib file ',TRIM(HGRIB),', error code ', IRET_GRIB
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
 END IF
 ! count the messages in the file
 CALL GRIB_COUNT_IN_FILE(IUNIT,ICOUNT,IRET_GRIB)
 IF (IRET_GRIB /= 0) THEN
-  !callabortstop
   WRITE(YMSG,*) 'Error in reading the grib file ',TRIM(HGRIB),', error code ', IRET_GRIB
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
 END IF
 ALLOCATE(IGRIB(ICOUNT))
 ! initialize the tabular with a negativ number 
@@ -417,9 +416,8 @@ IGRIB(:)=-12
 DO JLOOP=1,ICOUNT
 CALL GRIB_NEW_FROM_FILE(IUNIT,IGRIB(JLOOP),IRET_GRIB)
 IF (IRET_GRIB /= 0) THEN
-  !callabortstop
   WRITE(YMSG,*) 'Error in reading the grib file - ILOOP=',JLOOP,' - error code ', IRET_GRIB
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
 END IF
 END DO
 ! close the grib file
@@ -432,15 +430,13 @@ CALL GRIB_CLOSE_FILE(IUNIT)
 !
 CALL GRIB_GET(IGRIB(1),'centre',ICENTER,IRET_GRIB)
 IF (IRET_GRIB /= 0) THEN
-  !callabortstop
   WRITE(YMSG,*) 'Error in reading center - error code ', IRET_GRIB
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
 END IF
 CALL GRIB_GET(IGRIB(1),'typeOfGrid',HGRID,IRET_GRIB)
 IF (IRET_GRIB /= 0) THEN
-  !callabortstop
   WRITE(YMSG,*) 'Error in reading type of grid - error code ', IRET_GRIB
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
 END IF
 !
 IMODEL = -1
@@ -492,8 +488,7 @@ SELECT CASE (ICENTER)
     ALLOCATE(ZPARAM(6))
 END SELECT
 IF (IMODEL==-1) THEN
-!callabortstop
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','unsupported Grib file format')
+  CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE','unsupported Grib file format')
 END IF
 !
 !---------------------------------------------------------------------------------------
@@ -635,11 +630,7 @@ SELECT CASE (IMODEL)
   CASE(10) ! NCEP
       CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=134)
 END SELECT
-IF(INUM < 0) THEN
-   WRITE (ILUOUT0,'(A)')'Surface pressure is missing - abort'
-   CALL ABORT
-   STOP
-ENDIF 
+IF( INUM < 0 ) call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', 'surface pressure is missing' )
 ! recuperation du tableau de valeurs
 CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
 ALLOCATE(ZVALUE(ISIZE))
@@ -668,13 +659,12 @@ CALL GRIB_GET(IGRIB(INUM_ZS),'Nj',INJ_ZS)
 !
 IF ( HGRID(1:7)=='regular' .AND. HGRID_ZS(1:7)=='reduced' .AND.&
      INJ == INJ_ZS) THEN
-   WRITE (ILUOUT0,'(A)')'HGRID(1:7)==regular .AND. HGRID_ZS(1:7)==reduced .AND. INJ == INJ_ZS - abort'
-   CALL ABORT
-   STOP
+  call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', &
+                  'HGRID(1:7)==regular .AND. HGRID_ZS(1:7)==reduced .AND. INJ == INJ_ZS' )
 ELSE
    ALLOCATE(ZWORK_LNPS(SIZE(ZLNPS_G)))
    ZWORK_LNPS(:) = ZLNPS_G(:)
-ENDIF   
+ENDIF
 !
 IF (HFILE(1:3)=='ATM') THEN
   ALLOCATE (XPS_LS(IIU,IJU))
@@ -734,33 +724,17 @@ IF (IMODEL/=10) THEN
     ISTARTLEVEL=0
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IT,KLEV1=ISTARTLEVEL)
   ENDIF
-  IF(INUM < 0) THEN
-    WRITE (ILUOUT0,'(A)')'Air temperature is missing - abort'
-    CALL ABORT
-    STOP
-  ENDIF      
+  IF(INUM < 0) call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', 'air temperature is missing' )
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IQ,KLEV1=ISTARTLEVEL)
-  IF(INUM < 0) THEN
-    WRITE (ILUOUT0,'(A)')'Atmospheric specific humidity is missing - abort'
-    CALL ABORT
-    STOP
-  ENDIF 
+  IF(INUM < 0) call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', 'atmospheric specific humidity is missing' )
 ELSE ! NCEP
   ISTARTLEVEL=10
   IT=130
   IQ=157
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IT,KLEV1=ISTARTLEVEL)
-  IF(INUM < 0) THEN
-    WRITE (ILUOUT0,'(A)')'Air temperature is missing - abort'
-    CALL ABORT
-    STOP
-  ENDIF      
+  IF(INUM < 0) call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', 'air temperature is missing' )
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IQ,KLEV1=ISTARTLEVEL)
-  IF(INUM < 0) THEN
-    WRITE (ILUOUT0,'(A)')'Atmospheric relative humidity is missing - abort'
-    CALL ABORT
-    STOP
-  ENDIF 
+  IF(INUM < 0) call Print_msg( NVERB_FATAL, 'IO', 'READ_ALL_DATA_GRIB_CASE', 'atmospheric relative humidity is missing' )
 ENDIF
 !
 IF (IMODEL/=10) THEN ! others than NCEP
@@ -779,16 +753,14 @@ IF (IMODEL/=10) THEN ! others than NCEP
     ILEV1 = JLOOP1-1+ISTARTLEVEL
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IQ,KLEV1=ILEV1)
     IF (INUM< 0) THEN
-    !callabortstop
       WRITE(YMSG,*) 'atmospheric humidity level ',JLOOP1,' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET(IGRIB(INUM),'values',ZQ_G(:,INLEVEL-JLOOP1+1))
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IT,KLEV1=ILEV1)
     IF (INUM< 0) THEN
-      !callabortstop
       WRITE(YMSG,*) 'atmospheric temperature level ',JLOOP1,' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET(IGRIB(INUM),'values',ZT_G(:,INLEVEL-JLOOP1+1))
     CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB)
@@ -798,17 +770,15 @@ ELSE ! NCEP
     ILEV1 = IP_GFS(JLOOP1)
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IQ,KLEV1=ILEV1)
     IF (INUM< 0) THEN
-    !callabortstop
       WRITE(YMSG,*) 'atmospheric humidity level ',JLOOP1,' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET(IGRIB(INUM),'values',ZQ_G(:,JLOOP1),IRET_GRIB)
     WRITE (ILUOUT0,*) 'Q ',ILEV1,IRET_GRIB
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IT,KLEV1=ILEV1)
     IF (INUM< 0) THEN
-      !callabortstop
       WRITE(YMSG,*) 'atmospheric temperature level ',JLOOP1,' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET(IGRIB(INUM),'values',ZT_G(:,JLOOP1),IRET_GRIB)
     WRITE (ILUOUT0,*) 'T ',ILEV1,IRET_GRIB
@@ -845,8 +815,7 @@ IF (IMODEL/=10) THEN ! others than NCEP
        ALLOCATE(ZPV(IPV))
        CALL GRIB_GET(IGRIB(INUM),'pv',ZPV)
     ELSE
-       !callabortstop
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','there is no PV value in this message')
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE','there is no PV value in this message')
     ENDIF
     SELECT CASE (IMODEL)
       CASE (0,3,4,6,7)
@@ -874,8 +843,7 @@ IF (IMODEL/=10) THEN ! others than NCEP
         END DO
     END SELECT
   ELSE
-   !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','level definition section is missing')
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE','level definition section is missing')
   END IF
 ELSE
   ALLOCATE (XA_LS(INLEVEL))
@@ -1125,9 +1093,8 @@ IF (NRR >1) THEN
         CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR,KLEV1=ILEV1)
 
         IF (INUM < 0) THEN
-          !callabortstop
           WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing'
-          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+          CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
         END IF
         CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
         ALLOCATE(ZVALUE(ISIZE))
@@ -1147,9 +1114,8 @@ IF (NRR >1) THEN
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=6,KNUMBER=6,KLEV1=ILEV1)
 
       IF (INUM < 0) THEN
-        !callabortstop
         WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing'
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+        CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
       END IF
       CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
       ALLOCATE(ZVALUE(ISIZE))
@@ -1167,9 +1133,8 @@ IF (NRR >1) THEN
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=85,KLEV1=ILEV1)
 
       IF (INUM < 0) THEN
-        !callabortstop
         WRITE(YMSG,*) 'Specific ratio for rain at level ',JLOOP1,' is missing'
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+        CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
       END IF
       CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
       ALLOCATE(ZVALUE(ISIZE))
@@ -1187,9 +1152,8 @@ IF (NRR >1) THEN
       ILEV1 = JLOOP1-1+ISTARTLEVEL
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=82,KLEV1=ILEV1)
       IF (INUM < 0) THEN
-        !callabortstop
         WRITE(YMSG,*) 'Specific ratio for ICE at level ',JLOOP1,' is missing'
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+        CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
       END IF
       CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
       ALLOCATE(ZVALUE(ISIZE))
@@ -1207,9 +1171,8 @@ IF (NRR >1) THEN
       ILEV1 = JLOOP1-1+ISTARTLEVEL
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=86,KLEV1=ILEV1)
       IF (INUM < 0) THEN
-        !callabortstop
         WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing'
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+        CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
       END IF
       CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
       ALLOCATE(ZVALUE(ISIZE))
@@ -1227,9 +1190,8 @@ IF (NRR >1) THEN
       ILEV1 = JLOOP1-1+ISTARTLEVEL
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=1,KNUMBER=32,KLEV1=ILEV1)
       IF (INUM < 0) THEN
-        !callabortstop
         WRITE(YMSG,*) 'Specific ratio ',IPAR,' at level ',JLOOP1,' is missing'
-        CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+        CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
       END IF
       CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
       ALLOCATE(ZVALUE(ISIZE))
@@ -1254,9 +1216,8 @@ IF (CTURB=='TKEL') THEN
       CALL SEARCH_FIELD(IGRIB,INUM,KDIS=0,KCAT=19,KNUMBER=11,KLEV1=ILEV1)
     END IF
     IF (INUM <  0) THEN
-      !callabortstop
       WRITE(YMSG,*) 'TKE at level ',JLOOP1,' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
     ALLOCATE(ZVALUE(ISIZE))
@@ -1293,8 +1254,7 @@ IF (IMODEL==5) THEN
     DEALLOCATE(XSV_LS)
     ALLOCATE (XSV_LS(IIU,IJU,INLEVEL,NSV))
   ELSE
-    !callabortstop
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE','Mocage model: Bad input argument in read_all_data_grib_case')
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE','Mocage model: Bad input argument in read_all_data_grib_case')
   END IF
   XSV_LS(:,:,:,:) = 0.
   ILEV1=-1
@@ -1354,9 +1314,8 @@ IF (IMODEL==5) THEN
         ILEV1 = JLOOP1
         CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=INUMGRIB(JN),KLEV1=ILEV1)
         IF (INUM <  0) THEN
-          !callabortstop
           WRITE(YMSG,*) 'Atmospheric ',INUMGRIB(JN),' grib chemical species level ',JLOOP1,' is missing'
-          CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+          CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
         END IF
         CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB)
         ALLOCATE(IINLO(INJ))
@@ -1457,9 +1416,8 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1
   ! read component u 
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR,KLEV1=ILEV1)
   IF (INUM < 0) THEN
-    !callabortstop
     WRITE(YMSG,*) 'wind vector component "u" at level ',JLOOP1,' is missing'
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
   END IF
   CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
   ALLOCATE(ZVALUE(ISIZE))
@@ -1489,9 +1447,8 @@ DO JLOOP1 = ISTARTLEVEL, ISTARTLEVEL+INLEVEL-1
   END IF
   CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR+1,KLEV1=ILEV1)
   IF (INUM < 0) THEN
-    !callabortstop
     WRITE(YMSG,*) 'wind vector component "v" at level ',JLOOP1,' is missing'
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
   END IF
   CALL GRIB_GET_SIZE(IGRIB(INUM),'values',ISIZE)
   ALLOCATE(ZVALUE(ISIZE))
@@ -1792,9 +1749,8 @@ IF (ODUMMY_REAL) THEN
   !
   IF (IVAR /= IMOC) THEN
     WRITE (ILUOUT0,'(A,I3,A,I3,A)') ' -> Number of correct lines (',IVAR,') is different of ',IMOC,' - abort'
-   !callabortstop
     WRITE(YMSG,*) 'number of correct lines (',IVAR,') is different of ',IMOC
-    CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+    CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
   END IF
   !
   !* 2.10.2 read and interpolate variables onto dummy variables XDUMMY_2D
@@ -1804,9 +1760,8 @@ IF (ODUMMY_REAL) THEN
     CALL SEARCH_FIELD(IGRIB,INUM,KPARAM=IPAR,KLEV1=ILEV1)
     IF (INUM < 0) THEN
       WRITE (ILUOUT0,'(A,I3,A,I2,A)') ' -> 2D field ',INUMGRIB(JI),' is missing - abort'
-      !callabortstop
       WRITE(YMSG,*) '2D field ',INUMGRIB(JI),' is missing'
-      CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_ALL_DATA_GRIB_CASE',YMSG)
+      CALL PRINT_MSG(NVERB_FATAL,'IO','READ_ALL_DATA_GRIB_CASE',YMSG)
     END IF
     CALL GRIB_GET(IGRIB(INUM),'Nj',INJ,IRET_GRIB)
     ALLOCATE(IINLO(INJ))
@@ -1881,7 +1836,6 @@ INTEGER                 :: JLOOP2_A1T2
 INTEGER                 :: JPOS_A1T2
 !
 IF (KN1 < KL1*KL2) THEN
- !callabortstop
   CALL PRINT_MSG(NVERB_FATAL,'GEN','ARRAY_1D_TO_2D','sizes do not match')
 END IF
 JPOS_A1T2 = 1
diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90
index a9dc2f9a8d73555227191200084063a3d06d6906..6e63593d2a7bc74009222b4c0bb1154d551e3aa9 100644
--- a/src/MNH/read_chem_data_netcdf_case.f90
+++ b/src/MNH/read_chem_data_netcdf_case.f90
@@ -84,6 +84,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE
 !!      A. Berger   20/03/12 adapt whatever the chemical mechanism in BASIC
 !!      P. Wautelet 30/10/17 use F90 module for netCDF
 !!      J.Pianezzej 13/02/2019 : correction for use of MEGAN
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -761,15 +762,18 @@ WRITE (ILUOUT0,'(A,A4,A)') ' -- netcdf decoder for ',HFILE,' file ended successf
 !
 CONTAINS
 !
-!     #############################
-      SUBROUTINE HANDLE_ERR(STATUS)
-!     #############################
-     INTEGER(KIND=IDCDF_KIND) STATUS
-     IF (STATUS .NE. NF90_NOERR) THEN
-        PRINT *, NF90_STRERROR(STATUS)
-     STOP 'Stopped'
-     ENDIF
-     END SUBROUTINE HANDLE_ERR
+! #############################
+  subroutine handle_err(status)
+! #############################
+    use mode_msg
+
+    integer(kind=IDCDF_KIND) status
+
+    if ( status /= NF90_NOERR ) then
+      call Print_msg( NVERB_FATAL, 'IO', 'HANDLE_ERR', NF90_STRERROR(status) )
+    end if
+
+  end subroutine handle_err
 !
 !
 !     #############################################
diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index b4393217782ed982df17b7094e2333753076ac3d..38543a1c66c06fb29bf0d730ab17a1fe6aae91f8 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -292,6 +292,7 @@ END MODULE MODI_READ_EXSEG_n
 !!      Modification   01/2019   (P. Wautelet) bugs correction: incorrect writes
 !!      Modification   01/2019   (R. Honnert) remove SURF in CMF_UPDRAFT
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1030,7 +1031,7 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT='("YOU WANT TO USE A 2-MOMENT MICROPHYSICAL ",  &
            &" SCHEME BUT YOU DIDNT FILL CORRECTLY NAM_PARAM_LIMA",             &
            &" YOU HAVE TO FILL FINI_CCN ")')
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
     END IF
 !
     IF(LACTI .AND. NMOD_CCN == 0) THEN
@@ -1038,7 +1039,7 @@ SELECT CASE ( CCLOUD )
       WRITE(UNIT=ILUOUT,FMT='("ACTIVATION OF AEROSOL PARTICLES IS NOT ",      &
            &"POSSIBLE IF NMOD_CCN HAS VALUE ZERO. YOU HAVE TO SET AN UPPER ", &
            &"VALUE OF NMOD_CCN IN ORDER TO USE LIMA WARM ACTIVATION SCHEME.")') 
-      STOP
+      call Print_msg( NVERB_FATAL, 'GEN', 'READ_EXSEG_n', '' )
     END IF
 !
     IF(LNUCL .AND. NMOD_IFN == 0 .AND. (.NOT.LMEYERS)) THEN
diff --git a/src/MNH/read_surf_mnh.f90 b/src/MNH/read_surf_mnh.f90
index 09c51cee2308b4e2f8edac21f85f96e22ce0fa9a..862e27e31c8b6b0fa185592f4c76e5df620c007e 100644
--- a/src/MNH/read_surf_mnh.f90
+++ b/src/MNH/read_surf_mnh.f90
@@ -5,9 +5,12 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-----------------------------------------------------------------
 MODULE MODE_READ_SURF_MNH_TOOLS
 
+use mode_msg
+
 IMPLICIT NONE
 
 CONTAINS
@@ -15,7 +18,6 @@ CONTAINS
 SUBROUTINE PREPARE_METADATA_READ_SURF(HREC,HDIR,KGRID,KTYPE,KDIMS,HSUBR,TPFIELD)
 !
 USE MODE_FIELD, ONLY: FIND_FIELD_ID_FROM_MNHNAME, TFIELDDATA, TFIELDLIST, TYPECHAR, TYPEDATE, TYPELOG
-USE MODE_MSG
 !
 CHARACTER(LEN=LEN_HREC),INTENT(IN)  :: HREC     ! name of the article to write
 CHARACTER(LEN=2),       INTENT(IN)  :: HDIR     ! Expected type of the data field (XX,XY,--...)
@@ -898,8 +900,8 @@ END SUBROUTINE READ_SURFX2COV_MNH
 !             ------------
 !
 USE MODE_FIELD,         ONLY: TFIELDDATA,TYPELOG,TYPEREAL
-USE MODE_ll
 USE MODE_IO_FIELD_READ, only: IO_Field_read
+USE MODE_ll
 USE MODE_MSG
 !
 USE MODD_CST,           ONLY: XPI
@@ -1019,11 +1021,7 @@ IF (.NOT. GCOVER_PACKED) THEN
   TZFIELD%LTIMEDEP   = .FALSE.
   CALL IO_Field_read(TPINFILE,TZFIELD,ZWORK2D,KRESP)
 ELSE
-  WRITE(ILUOUT,*) 'WARNING'
-  WRITE(ILUOUT,*) '-------'
-  WRITE(ILUOUT,*) 'error : GCOVER_PACKED = ', GCOVER_PACKED, ' and we try to read the covers one by one '
-  WRITE(ILUOUT,*) ' '
-  CALL ABORT
+  call Print_msg( NVERB_FATAL, 'IO', 'READ_SURFX2COV_1COV_MNH', 'GCOVER_PACKED=TRUE and we try to read the covers one by one' )
 END IF
 !
 IF (KRESP /=0) THEN
diff --git a/src/MNH/retrieve1_nest_infon.f90 b/src/MNH/retrieve1_nest_infon.f90
index a4917318003f8f29378005746a9fb01c4ad186f6..8edcfee3808642754cfa8bad3f227d8ed1b99470 100644
--- a/src/MNH/retrieve1_nest_infon.f90
+++ b/src/MNH/retrieve1_nest_infon.f90
@@ -82,6 +82,7 @@ END MODULE MODI_RETRIEVE1_NEST_INFO_n
 !!      Original        26/09/96
 !!      Modification    30/07/97 (Masson) group MODI_RETRIEVE2_NEST_INFOn
 !!      Modification    04/05/00 (Jabouille) test on CPROGRAM to fill working modules
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -92,6 +93,8 @@ USE MODD_DIM_n
 USE MODD_PGDGRID
 USE MODD_PGDDIM
 USE MODD_CONF
+!
+use mode_msg
 USE MODE_MODELN_HANDLER 
 !
 USE MODI_RETRIEVE2_NEST_INFO_n
@@ -117,11 +120,7 @@ INTEGER :: IMI
 !-------------------------------------------------------------------------------
 !
 !
-IF (KMI<=KDAD) THEN
-   !callabortstop
-  CALL ABORT
-  STOP
-ENDIF
+IF ( KMI <= KDAD ) call Print_msg( NVERB_FATAL, 'GEN', 'RETRIEVE1_NEST_INFO_n', 'KMI<=KDAD' )
 !
 IMI = GET_CURRENT_MODEL_INDEX()
 CALL GOTO_MODEL(KDAD)   
diff --git a/src/MNH/shallow_mf.f90 b/src/MNH/shallow_mf.f90
index 2212bbb89a452fd2398791c02f645eaacaf9671f..52a1a7aef3d49a52fcbe9659a4f596cf52f6b822 100644
--- a/src/MNH/shallow_mf.f90
+++ b/src/MNH/shallow_mf.f90
@@ -1,7 +1,8 @@
 !MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######spl
      MODULE MODI_SHALLOW_MF
 !    ######################
@@ -167,6 +168,7 @@ END MODULE MODI_SHALLOW_MF
 !!      Philippe Wautelet 28/05/2018: corrected truncated integer division (2/3 -> 2./3.)
 !!      Q.Rodier  01/2019 : support RM17 mixing length
 !!      R.Honnert 1/2019  : remove SURF 
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !! --------------------------------------------------------------------------
 !
 !*      0. DECLARATIONS
@@ -393,9 +395,7 @@ ELSEIF (HMF_UPDRAFT == 'HRIO') THEN
                        PEMF,PDETR,                               &
                        PENTR,ZBUO_INTEG,KKLCL,KKETL,KKCTL,ZDEPTH )
 ELSE
-  WRITE(*,*) ' STOP'                                                     
-  WRITE(*,*) ' NO UPDRAFT MODEL FOR EDKF : CMF_UPDRAFT =',HMF_UPDRAFT 
-  CALL PRINT_MSG(NVERB_FATAL,'GEN','SHALLOW_MF','')  
+  call Print_msg( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//trim(HMF_UPDRAFT) )
 ENDIF
 
 !!! 5. Compute diagnostic convective cloud fraction and content
@@ -450,10 +450,8 @@ ENDIF
                 PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF,         &
                 ZFLXZSVMF                                                )
        ELSE
-         WRITE(*,*) ' STOP'                                                     
-         WRITE(*,*) ' NO UPDRAFT MODEL FOR EDKF : CMF_UPDRAFT =',HMF_UPDRAFT 
-         CALL PRINT_MSG(NVERB_FATAL,'GEN','SHALLOW_MF','') 
-       ENDIF  
+         call Print_msg( NVERB_FATAL, 'GEN', 'SHALLOW_MF', 'no updraft model for EDKF: CMF_UPDRAFT='//trim(HMF_UPDRAFT) )
+       END IF
 
      IF (HMF_UPDRAFT == 'BOUT') THEN
       !! calcul de la hauteur de la couche limite ou de L_up
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index 24e5b49b47e6fd51f5f8832e05edad824ca61593..fad7820f6909b5705782ec0d3f1ac58aec72f7df 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -194,6 +194,7 @@ END MODULE MODI_SPAWN_MODEL2
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -652,16 +653,12 @@ ELSE
   NRIMY=0
 END IF
 IF (NRIMX >= IIU/2-1) THEN      ! Error ! this case is not supported - it should be, but there is a bug
-  WRITE(*,*) "Error : The size of the LBX zone is too big for the size of the subdomains"
-  WRITE(*,*) "Try with less cores, a smaller LBX size, or a bigger grid in X "
-  CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'SPAWN_MODEL2', 'The size of the LBX zone is too big for the size of the subdomains. '// &
+                  'Try with less processes, a smaller LBX size or a bigger grid in X.' )
 ENDIF
 IF ( ( .NOT. L2D ) .AND. (NRIMY >= IJU/2-1) ) THEN  ! Error ! this case is not supported - it should be, but there is a bug
-  WRITE(*,*) "Error : The size of the LBY zone is too big for the size of the subdomains"
-  WRITE(*,*) "Try with less cores, a smaller LBY size, or a bigger grid in Y "
-  CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'SPAWN_MODEL2', 'The size of the LBY zone is too big for the size of the subdomains. '// &
+                  'Try with less processes, a smaller LBY size or a bigger grid in Y.' )
 ENDIF
 !
 LHORELAX_UVWTH=.TRUE.
diff --git a/src/MNH/spawning.f90 b/src/MNH/spawning.f90
index 16867d7f2c1cac9c3ebd56d546add0e8a389cc42..2480473be3a44be2ae754e179093f444bf3c264b 100644
--- a/src/MNH/spawning.f90
+++ b/src/MNH/spawning.f90
@@ -254,10 +254,8 @@ IF(NIO_VERB>=NVERB_DEBUG) CALL IO_Filelist_print()
 CALL IO_File_close(TLUOUT)
 !
 CALL END_PARA_ll(IINFO_ll)
-!JUAN CALL ABORT
-STOP
 
-CONTAINS 
+CONTAINS
 
 SUBROUTINE INIT_NMLVAR
 LRES=LRES_n
diff --git a/src/MNH/spec_ver_int.f90 b/src/MNH/spec_ver_int.f90
index abd3ed1e047741f659adc7fd2efc3c9c86d8c519..752f233df40446b29a850a818645f6c1f8b4be42 100644
--- a/src/MNH/spec_ver_int.f90
+++ b/src/MNH/spec_ver_int.f90
@@ -1,6 +1,6 @@
 !MNH_LIC Copyright 2000-2018 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 !      #################
@@ -50,6 +50,7 @@ END MODULE MODI_SPEC_VER_INT
 !!    -------------
 !!      Original         07/02/00
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !!
 !! --------------------------------------------------------------------------
 !       
@@ -59,8 +60,10 @@ END MODULE MODI_SPEC_VER_INT
 USE MODD_LES
 USE MODD_PARAMETERS
 !
-USE MODE_ll
 USE MODE_GATHER_ll
+USE MODE_ll
+use mode_msg
+!
 USE MODI_VER_INTERP_LIN
 !
 IMPLICIT NONE
@@ -102,16 +105,13 @@ ELSE IF (CSPECTRA_LEVEL_TYPE=='Z') THEN
     PA_SPEC = XUNDEF
   END WHERE
 ELSE
-  PRINT*, '-------> STOP in SPEC_VER_INT <----------'
- !callabortstop
-CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'SPEC_VER_INT', 'invalid CSPECTRA_LEVEL_TYPE ('//CSPECTRA_LEVEL_TYPE//')' )
 END IF
 !
 !-------------------------------------------------------------------------------
 !
-! ONE PROCESSOR ONLY
-! ------------------
+! ONE PROCESS ONLY
+! ----------------
 !
 CALL GET_GLOBALDIMS_ll(IIMAX_ll,IJMAX_ll)
 ALLOCATE(ZA_ll(IIMAX_ll+2*JPHEXT,IJMAX_ll+2*JPHEXT,NSPECTRA_K))
diff --git a/src/MNH/test_nam_var.f90 b/src/MNH/test_nam_var.f90
index d26aca6f0579f3563c8fc2c607fcfa7f92a3cefc..476cf1a4d8460ad0feef3bb54068a2520d472823 100644
--- a/src/MNH/test_nam_var.f90
+++ b/src/MNH/test_nam_var.f90
@@ -80,11 +80,14 @@ END MODULE MODI_TEST_NAM_VAR
 !!      original                                                     17/04/98
 !!      10/2016 (C.Lac) Increase of the number of values
 !!      P.Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !----------------------------------------------------------------------------
 !
 !*      0.    DECLARATIONS
 !             ------------
 !
+use mode_msg
+!
 IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
@@ -183,8 +186,6 @@ IF ( PRESENT (HVALUE11) ) WRITE (KLUOUT,*) '"',HVALUE11,'"'
 IF ( PRESENT (HVALUE12) ) WRITE (KLUOUT,*) '"',HVALUE12,'"'
 FLUSH(unit=KLUOUT)
 !
- !callabortstop
-CALL ABORT
-STOP
+call Print_msg( NVERB_FATAL, 'GEN', 'TEST_NAM_VARC0', trim(HVAR)//' is not allowed for variable '//trim(HNAME) )
 !-------------------------------------------------------------------------------
 END SUBROUTINE TEST_NAM_VARC0
diff --git a/src/MNH/update_nsv.f90 b/src/MNH/update_nsv.f90
index 0677a414a46cbded8d51314faa2b24d5ab35f780..3d691aa48dabfe34ea208d0107de0cf630208887 100644
--- a/src/MNH/update_nsv.f90
+++ b/src/MNH/update_nsv.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
+!-----------------------------------------------------------------
 !     ######spl
         MODULE MODI_UPDATE_NSV
 !       ######################
@@ -24,17 +25,20 @@ END MODULE MODI_UPDATE_NSV
 !!  Modify (Escobar ) 2/2014 : add Forefire var
 !!  Modify (Vie) 2016 : add LIMA
 !!         V. Vionnet 7/2017 : add blowing snow var
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!
 USE MODD_CONF, ONLY : NVERB
 USE MODD_NSV
+
+use mode_msg
+
 IMPLICIT NONE 
+
 INTEGER, INTENT(IN) :: KMI ! Model index
 !
 ! STOP if INI_NSV has not be called yet
 IF (.NOT. LINI_NSV) THEN
-  PRINT *, 'UPDATE_NSV  FATAL Error : can t continue because INI_NSV was not called.'
-!callabortstop
-  CALL ABORT
-  STOP
+  call Print_msg( NVERB_FATAL, 'GEN', 'UPDATE_NSV', 'can not continue because INI_NSV was not called' )
 END IF
 !
 ! Update the NSV_* variables from original NSV_*_A arrays
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index a58b90932f844534eaa6bfc1213b03eab95bab45..75c4c6d8f0157264aa29c590de96ef8033ef9cd5 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -169,8 +169,9 @@ END MODULE MODI_WRITE_LFIFM_n
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!       V. Vionnet    07/2017, add blowing snow variables
 !!       P.Wautelet    11/01/2019: bug correction in write XBL_DEPTH->XSBL_DEPTH
-!!       C.Lac         18/02/2019: add rain fraction as an output field              
+!!       C.Lac         18/02/2019: add rain fraction as an output field
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -1159,12 +1160,9 @@ IF (NSV >=1) THEN
       IMOMENTS = INT(NSV_DSTEND - NSV_DSTBEG+1)/NMODE_DST  
       !Should equal 3 at this point
       IF (IMOMENTS > 3) THEN
-        WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must equal or inferior to 3'
+        WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be less or equal to 3'
         WRITE(ILUOUT,*) NSV_DSTBEG, NSV_DSTEND,NMODE_DST,IMOMENTS
- !callabortstop
-        CALL IO_File_close(TLUOUT)
-        CALL ABORT
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LFIFM_n', 'number of moments must be less or equal to 3' )
       END IF ! Test IMOMENTS
       ALLOCATE(YDSTNAMES(NSV_DSTEND - NSV_DSTBEG+1))
       !
@@ -1265,12 +1263,9 @@ IF (NSV >=1) THEN
       IMOMENTS = INT(NSV_SLTEND - NSV_SLTBEG+1)/NMODE_SLT  
       !Should equal 3 at this point
       IF (IMOMENTS .NE. 3) THEN
-        WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be 3'
+        WRITE(ILUOUT,*) 'Error in write_lfin: number of moments must be equal to 3'
         WRITE(ILUOUT,*) NSV_SLTBEG, NSV_SLTEND,NMODE_SLT,IMOMENTS
- !callabortstop
-        CALL IO_File_close(TLUOUT)
-        CALL ABORT
-        STOP
+        call Print_msg( NVERB_FATAL, 'GEN', 'WRITE_LFIFM_n', 'number of moments must be equal to 3' )
       END IF
       ALLOCATE(YSLTNAMES(NSV_SLTEND - NSV_SLTBEG+1))
       TZFIELD%CSTDNAME   = ''
diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90
index 29dafe66044e369939c000360dc4ab8657ad1fc5..40f2b1c795934cd9bf7c22920fd03520900a4a60 100644
--- a/src/MNH/zdiffusetup.f90
+++ b/src/MNH/zdiffusetup.f90
@@ -1,13 +1,8 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 newsrc 2006/05/18 13:07:25
-!-----------------------------------------------------------------
 !     ####################
       MODULE MODI_ZDIFFUSETUP
 !     ####################
@@ -54,8 +49,10 @@ END MODULE MODI_ZDIFFUSETUP
 !!    ------
 !!
 !!      G. Zängl       * University of Munich*
-!!      J.Escobar 7/10/2015 : remove print
-!!
+!
+! Modifications:
+!  J. Escobar  07/10/2015: remove print
+!  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !
 !*       0.    DECLARATIONS
 !              ------------ 
@@ -278,6 +275,8 @@ CONTAINS
 
 SUBROUTINE INDINT_HALO2(KII,KIJ,PZMASS,PKIND,KKMIN,KIB,KJB)
 
+use mode_msg
+
 IMPLICIT NONE
 
 INTEGER, INTENT(IN) :: KII,KIJ    ! Relative position of remote points
@@ -322,9 +321,7 @@ ELSE IF ((KIJ.EQ.0).AND.(KII.NE.0)) THEN
 
 
 ELSE
- !callabortstop
-CALL ABORT
-  STOP 'Error in zdiffusetup'
+  call Print_msg( NVERB_FATAL, 'GEN', 'INDINT_HALO2', 'KII=0 and KIJ=0' )
 ENDIF
 
 DO JI = II1,II2
@@ -372,21 +369,15 @@ DO JI = II1,II2
     ENDDO
   ENDDO
 ENDDO
-IF (MINVAL(KKMIN) .EQ. 0 ) THEN
-print *," zdiffusetup::PROBLEME MINVAL(KKMIN) .EQ. 0 "
-call abort()
-STOP
-ELSE
-!print *," zdiffusetup:: OK "
+
+IF ( MINVAL(KKMIN) == 0 ) THEN
+  call Print_msg( NVERB_FATAL, 'GEN', 'INDINT_HALO2', 'MINVAL(KKMIN)=0' )
 ENDIF
-IF (MINVAL(INT(PKIND)) .EQ. 0 ) THEN
-print *," zdiffusetup::PROBLEME MINVAL(INT(PKIND)) .EQ. 0 "
-!PKIND = MAX (1.00001,PKIND)
-call abort()
-STOP
-ELSE
-!print *," zdiffusetup:: OK "
+
+IF ( MINVAL(INT(PKIND)) == 0 ) THEN
+  call Print_msg( NVERB_FATAL, 'GEN', 'INDINT_HALO2', 'MINVAL(INT(PKIND))=0' )
 ENDIF
+
 END SUBROUTINE INDINT_HALO2
 
 END SUBROUTINE ZDIFFUSETUP