diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 index 5cb549b922e80c48ed4739ed0a946c7085df3bb6..86805e939275378dfe80a3b2e550bcd45d6455c8 100644 --- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 @@ -70,7 +70,7 @@ INTEGER :: IRESP ALLOCATE(TZIOCDF, STAT=IRESP) IF (IRESP > 0) THEN - PRINT *, 'NEWIOCDF : memory allocation error...' + CALL PRINT_MSG(NVERB_FATAL,'IO','NEWIOCDF','memory allocation error') STOP END IF @@ -90,10 +90,12 @@ TYPE(IOCDF), POINTER :: PIOCDF INTEGER(KIND=IDCDF_KIND) :: IRESP +CALL PRINT_MSG(NVERB_DEBUG,'IO','CLEANIOCDF','called') + ! Close Netcdf File IRESP = NF90_CLOSE(PIOCDF%NCID) IF (IRESP /= NF90_NOERR) THEN - PRINT *, 'CLEANIOCDF, NF90_CLOSE error : ', NF90_STRERROR(IRESP) + CALL PRINT_MSG(NVERB_WARNING,'IO','CLEANIOCDF','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP))) END IF ! Clean DIMLIST and DIMSTR @@ -102,8 +104,6 @@ CALL CLEANLIST(PIOCDF%DIMSTR) ! Then free iocdf DEALLOCATE(PIOCDF) -PRINT *, 'CLEANIOCDF done.' - CONTAINS SUBROUTINE CLEANLIST(PLIST) @@ -120,27 +120,31 @@ END SUBROUTINE CLEANLIST END SUBROUTINE CLEANIOCDF -SUBROUTINE HANDLE_ERR(status,line,text,kresp) -INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: status -INTEGER, INTENT(IN) :: line -CHARACTER(LEN=*), INTENT(IN) :: text -INTEGER, OPTIONAL, INTENT(OUT) :: kresp - -! Don't stop the code when kresp is present -! and ensure kresp is a negative integer -IF (status /= NF90_NOERR) THEN - PRINT *, 'NETCDF ERROR in '//TRIM(text), line, NF90_STRERROR(status) - IF (PRESENT(kresp)) THEN - IF (status < 0) THEN - kresp = status - ELSE IF (status == 0) THEN - kresp = -1 - ELSE - kresp = -status - END IF - ELSE - STOP - END IF +SUBROUTINE HANDLE_ERR(STATUS,LINE,TEXT,KRESP) +INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: STATUS +INTEGER, INTENT(IN) :: LINE +CHARACTER(LEN=*), INTENT(IN) :: TEXT +INTEGER, OPTIONAL, INTENT(OUT) :: KRESP + +CHARACTER(LEN=6) :: YLINE + +WRITE(YLINE,*) LINE + +! Don't stop (by default) the code when KRESP is present +! and ensure KRESP is a negative integer +IF (STATUS /= NF90_NOERR) THEN + IF (PRESENT(KRESP)) THEN + IF (STATUS < 0) THEN + KRESP = STATUS + ELSE IF (STATUS == 0) THEN + KRESP = -1 + ELSE + KRESP = -STATUS + END IF + CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(TEXT),'NetCDF error at line '//TRIM(YLINE)//': '//TRIM(NF90_STRERROR(STATUS))) + ELSE + CALL PRINT_MSG(NVERB_FATAL,'IO',TRIM(TEXT),'NetCDF error at line '//TRIM(YLINE)//': '//TRIM(NF90_STRERROR(STATUS))) + END IF END IF END SUBROUTINE HANDLE_ERR @@ -268,11 +272,12 @@ TYPE(DIMCDF), POINTER :: TMP INTEGER :: COUNT CHARACTER(LEN=7) :: YSUFFIX CHARACTER(LEN=8) :: YDIMNAME +CHARACTER(LEN=20) :: YLEN INTEGER(KIND=IDCDF_KIND) :: STATUS IF (KLEN < 1) THEN - PRINT *, 'GETDIMCDF Error, KLEN=', KLEN - STOP + WRITE(YLEN,*) KLEN + CALL PRINT_MSG(NVERB_FATAL,'IO','GETDIMCDF','KLEN='//TRIM(YLEN)) END IF IF (PRESENT(HDIMNAME)) THEN @@ -315,11 +320,12 @@ INTEGER(KIND=IDCDF_KIND) :: GETSTRDIMID TYPE(DIMCDF), POINTER :: TMP CHARACTER(LEN=7) :: YSUFFIX CHARACTER(LEN=8) :: YDIMNAME +CHARACTER(LEN=20) :: YLEN INTEGER(KIND=IDCDF_KIND) :: STATUS IF (KLEN < 1) THEN - PRINT *, 'GETSTRDIMID Error, KLEN=', KLEN - STOP + WRITE(YLEN,*) KLEN + CALL PRINT_MSG(NVERB_FATAL,'IO','GETSTRDIMID','KLEN='//TRIM(YLEN)) END IF ! Search string dimension with KLEN length @@ -356,10 +362,7 @@ INTEGER(KIND=IDCDF_KIND),DIMENSION(:), INTENT(OUT) :: KVDIMS INTEGER :: II TYPE(DIMCDF), POINTER :: PTDIM -IF (SIZE(KSHAPE) < 1) THEN - PRINT *, 'FILLVDIMS Error, KSHAPE empty' - STOP -END IF +IF (SIZE(KSHAPE) < 1) CALL PRINT_MSG(NVERB_FATAL,'IO','FILLVDIMS','empty KSHAPE') DO II=1, SIZE(KSHAPE)