From b00a2e5d3402393aa9bbc2a7f220b8d98c71ca47 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Wed, 10 Apr 2019 12:59:05 +0200
Subject: [PATCH] Philippe 10/04/2019: LFI2CDF: use IO_Err_handle_nc4 to handle
 netCDF errors

---
 LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 | 37 ++++++++++--------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 34c2d8332..5bdb80c88 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -5,6 +5,7 @@
 !-----------------------------------------------------------------
 ! Modifications:
 !  P. Wautelet 07/02/2019: force TYPE to a known value for IO_FILE_ADD2LIST
+!  P. Wautelet 10/04/2019: use IO_Err_handle_nc4 to handle netCDF errors
 !-----------------------------------------------------------------
 MODULE mode_util
   USE MODD_IO,         ONLY: TFILE_ELT
@@ -14,6 +15,7 @@ MODULE mode_util
   USE MODE_FIELD
   USE MODE_IO_FIELD_READ
   USE MODE_IO_FIELD_WRITE
+  use mode_io_tools_nc4,   only: IO_Err_handle_nc4
 
   USE mode_options
 
@@ -232,10 +234,11 @@ CONTAINS
                   tpreclist(tpreclist(ji)%tgt)%LSPLIT = .true.
                 END IF
               ELSE
-                CALL HANDLE_ERR(status,__LINE__)
+                if ( status /= NF90_NOERR ) &
+                  call IO_Err_handle_nc4( status, 'parse_infiles', 'NF90_INQ_VARID', trim(yrecfm)//'0001' )
               END IF
             ELSE IF (status /= NF90_NOERR) THEN
-              CALL HANDLE_ERR(status,__LINE__)
+              call IO_Err_handle_nc4( status, 'parse_infiles', 'NF90_INQ_VARID', trim(yrecfm) )
             ELSE
               kcdf_id2 = kcdf_id
             ENDIF
@@ -332,7 +335,8 @@ END DO
          DO ji=1,nbvar_infile
            var_id = ji
            status = NF90_INQUIRE_VARIABLE(kcdf_id,var_id, name = tpreclist(ji)%name)
-           IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
+           if ( status /= NF90_NOERR ) &
+             call IO_Err_handle_nc4( status, 'parse_infiles', 'NF90_INQUIRE_VARIABLE', tpreclist(ji)%name )
            tpreclist(ji)%found  = .TRUE.
            CALL IO_Metadata_get_nc4(kcdf_id,var_id,tpreclist(ji))
          END DO
@@ -611,15 +615,6 @@ END DO
     END IF !nbvar_calc>0
 
   END SUBROUTINE parse_infiles
-  
-  SUBROUTINE HANDLE_ERR(status,line)
-    INTEGER :: status,line
-
-    IF (status /= NF90_NOERR) THEN
-       PRINT *, 'line ',line,': ',NF90_STRERROR(status)
-           STOP
-    END IF
-  END SUBROUTINE HANDLE_ERR
 
   SUBROUTINE def_ncdf(infiles,outfiles,KNFILES_OUT)
     USE MODD_CONF,   ONLY: NMNHVERSION
@@ -657,7 +652,7 @@ END DO
       DO ji = 1,KNFILES_OUT
         kcdf_id = outfiles(ji)%TFILE%NNCID
         status = NF90_PUT_ATT(kcdf_id,NF90_GLOBAL,'history',YHISTORY)
-        IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
+        if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'def_ncdf', 'NF90_PUT_ATT', 'history' )
       END DO
     END IF
 
@@ -670,7 +665,7 @@ END DO
       !
       WRITE(YMNHVERSION,"( I0,'.',I0,'.',I0 )" ) NMNHVERSION(1),NMNHVERSION(2),NMNHVERSION(3)
       status = NF90_PUT_ATT(kcdf_id,NF90_GLOBAL,'lfi2cdf_version',TRIM(YMNHVERSION))
-      IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
+      if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'def_ncdf', 'NF90_PUT_ATT', 'lfi2cdf_version' )
     END DO
 
   END SUBROUTINE def_ncdf
@@ -1073,7 +1068,7 @@ END DO
          END IF
 
          status = NF90_SET_FILL(outfiles(idx)%TFILE%NNCID,NF90_NOFILL,omode)
-         IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
+         if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_FILES', 'NF90_SET_FILL', '' )
        END IF ! .NOT.osplit
     ELSE
        !
@@ -1162,7 +1157,7 @@ END DO
       END IF
 
       status = NF90_SET_FILL(outfiles(ji)%TFILE%NNCID,NF90_NOFILL,omode)
-      IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
+      if ( status /= NF90_NOERR ) call IO_Err_handle_nc4( status, 'OPEN_SPLIT_NCFILES_OUT', 'NF90_SET_FILL', '' )
     END DO
 
   END SUBROUTINE OPEN_SPLIT_NCFILES_OUT
@@ -1189,9 +1184,9 @@ END DO
     USE MODD_DIM_n,      ONLY: NKMAX
     USE MODD_PARAMETERS, ONLY: JPVEXT
 
-    INTEGER,        INTENT(IN)    :: KFILE_ID
-    INTEGER,        INTENT(IN)    :: KVAR_ID
-    TYPE(workfield),INTENT(INOUT) :: TPREC
+    INTEGER(KIND=IDCDF_KIND), INTENT(IN)    :: KFILE_ID
+    INTEGER(KIND=IDCDF_KIND), INTENT(IN)    :: KVAR_ID
+    TYPE(workfield),          INTENT(INOUT) :: TPREC
 
     INTEGER                                  :: ILENG
     INTEGER                                  :: JDIM
@@ -1202,7 +1197,7 @@ END DO
 
     ISTATUS = NF90_INQUIRE_VARIABLE(KFILE_ID,KVAR_ID,NDIMS = TPREC%NDIMS_FILE, &
                                     XTYPE = TPREC%NTYPE_FILE, DIMIDS = IDIMS_ID)
-    IF (ISTATUS /= NF90_NOERR) CALL HANDLE_ERR(ISTATUS,__LINE__)
+    if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_VARIABLE', '' )
 
     IF (.NOT.TPREC%LSPLIT) THEN
       ALLOCATE(TPREC%NDIMSIZES_FILE(TPREC%NDIMS_FILE))
@@ -1222,7 +1217,7 @@ END DO
         ISTATUS = NF90_INQUIRE_DIMENSION(KFILE_ID,IDIMS_ID(JDIM),                    &
                                                    len =  TPREC%NDIMSIZES_FILE(JDIM), &
                                                    name = TPREC%CDIMNAMES_FILE(JDIM)  )
-        IF (ISTATUS /= NF90_NOERR) CALL HANDLE_ERR(ISTATUS,__LINE__)
+        if ( istatus /= NF90_NOERR ) call IO_Err_handle_nc4( istatus, 'IO_Metadata_get_nc4', 'NF90_INQUIRE_DIMENSION', '' )
         ILENG = ILENG*TPREC%NDIMSIZES_FILE(JDIM)
       END DO
 
-- 
GitLab