diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 112f1959d97bad7ba1297fd71b7165ae5e9414fc..d549bcc0e3694c3897ef6b96c7f1360f264bc705 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -10,7 +10,8 @@
 ! $Revision$ 
 ! $Date$
 !Correction :
-!  D.Gazen   : avril 2016 change error message 
+!  D.Gazen   : avril 2016 change error message
+!  P. Wautelet : may 2016: use NetCDF Fortran module
 !-----------------------------------------------------------------
 !-----------------------------------------------------------------
 
@@ -137,7 +138,7 @@ USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO
 USE MODD_CONFZ,ONLY  : NB_PROCIO_R,NB_PROCIO_W
 !JUANZ
 #if defined(MNH_IOCDF4)
-USE MODD_NETCDF
+USE MODD_NETCDF, ONLY:IDCDF_KIND
 USE MODE_NETCDF
 #endif
 CHARACTER(LEN=*),INTENT(IN) ::HFILEM  ! name of the file.
@@ -256,26 +257,26 @@ IF (ISP == TZFDLFI%OWNER) THEN
      IF (HACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
         !! Open NetCDF File for reading
         TZFDLFI%CDF => NEWIOCDF()
-        INCERR = NF_OPEN(ADJUSTL(TRIM(HFILEM))//".nc4", NF_NOWRITE, TZFDLFI%CDF%NCID)
-        IF (INCERR /= NF_NOERR) THEN
-           !PRINT *, 'FMOPEN_ll, NF_OPEN error : ', NF_STRERROR(INCERR)
-           PRINT *, 'Error in opening (FMOPEN_ll/NF_OPEN) ', TRIM(HFILEM)//'.nc4', ' : ', NF_STRERROR(IRESOU)
+        INCERR = NF90_OPEN(ADJUSTL(TRIM(HFILEM))//".nc4", NF90_NOWRITE, TZFDLFI%CDF%NCID)
+        IF (INCERR /= NF90_NOERR) THEN
+           !PRINT *, 'FMOPEN_ll, NF90_OPEN error : ', NF90_STRERROR(INCERR)
+           PRINT *, 'Error in opening (FMOPEN_ll/NF90_OPEN) ', TRIM(HFILEM)//'.nc4', ' : ', NF90_STRERROR(INCERR)
            STOP
         END IF
-        PRINT *, 'NF_OPEN: ', TRIM(HFILEM)//'.nc4'
+        PRINT *, 'NF90_OPEN: ', TRIM(HFILEM)//'.nc4'
      END IF
      
      IF (HACTION == 'WRITE') THEN
         ! HACTION == 'WRITE'
         TZFDLFI%CDF => NEWIOCDF()
-        INCERR = NF_CREATE(ADJUSTL(TRIM(HFILEM))//".nc4", &
-             &IOR(NF_CLOBBER,NF_NETCDF4), TZFDLFI%CDF%NCID)
-        IF (INCERR /= NF_NOERR) THEN
-           !PRINT *, 'FMOPEN_ll, NF_CREATE error : ', NF_STRERROR(INCERR)
-           PRINT *, 'Error in opening (FMOPEN_ll/NF_CREATE) ', TRIM(HFILEM)//'.nc4', ' : ', NF_STRERROR(IRESOU)
+        INCERR = NF90_CREATE(ADJUSTL(TRIM(HFILEM))//".nc4", &
+             &IOR(NF90_CLOBBER,NF90_NETCDF4), TZFDLFI%CDF%NCID)
+        IF (INCERR /= NF90_NOERR) THEN
+           !PRINT *, 'FMOPEN_ll, NF90_CREATE error : ', NF90_STRERROR(INCERR)
+           PRINT *, 'Error in opening (FMOPEN_ll/NF90_CREATE) ', TRIM(HFILEM)//'.nc4', ' : ', NF90_STRERROR(INCERR)
            STOP
         END IF
-        PRINT *, 'NF_CREATE: ', TRIM(HFILEM)//'.nc4'
+        PRINT *, 'NF90_CREATE: ', TRIM(HFILEM)//'.nc4'
      END IF
   END IF
 #endif
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 06e981263ae60c6c8d825a95ba5b89485c810ca9..b8da82a4da9a0579696d845aa61984fdf03bfb6e 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -19,8 +19,9 @@
 !     Juan 22/05/2008: bug mode SPECIFIC in OPEN_ll 
 !     Juan 05/11/2009: allow JPMAX_UNIT=48 open files 
 !     J.Escobar   18/10/10   bug with PGI compiler on ADJUSTL
-!     Philippe 04/02/2016: bug with DELIM='NONE' and GCC 5.2/5.3
+!     P. Wautelet 04/02/2016: bug with DELIM='NONE' and GCC 5.2/5.3
 !     D.Gazen   : avril 2016 change error message 
+!     P. Wautelet : may 2016: use NetCDF Fortran module
 !
 MODULE MODE_IO_ll
 
@@ -223,7 +224,7 @@ CONTAINS
        KMELEV,&
        OPARALLELIO)
 #if defined(MNH_IOCDF4)
-  USE MODD_NETCDF
+  USE MODD_NETCDF, ONLY:IDCDF_KIND
   USE MODE_NETCDF
 #endif
   USE MODD_IO_ll
@@ -662,29 +663,29 @@ CONTAINS
                    IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
                       ! Open NetCDF File for reading
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      IOSCDF = NF_OPEN(TRIM(FILE)//cfile//".nc4", NF_NOWRITE, TZFD_IOZ%CDF%NCID)
-                      IF (IOSCDF /= NF_NOERR) THEN
-   PRINT *, 'Error in opening (NF_OPEN) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF_STRERROR(IOS)
+                      IOSCDF = NF90_OPEN(TRIM(FILE)//cfile//".nc4", NF90_NOWRITE, TZFD_IOZ%CDF%NCID)
+                      IF (IOSCDF /= NF90_NOERR) THEN
+   PRINT *, 'Error in opening (NF90_OPEN) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF90_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
                       END IF
-                      PRINT *, 'NF_OPEN(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
+                      PRINT *, 'NF90_OPEN(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
                    END IF
                    
                    IF (YACTION == 'WRITE') THEN
                       ! YACTION == 'WRITE'
                       ! Create NetCDF File for writing
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      IOSCDF = NF_CREATE(TRIM(FILE)//cfile//".nc4", &
-                           &IOR(NF_CLOBBER,NF_NETCDF4), TZFD_IOZ%CDF%NCID)
-                      IF (IOSCDF /= NF_NOERR) THEN
-                         PRINT *, 'Error in opening (NF_CREATE) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF_STRERROR(IOS)
+                      IOSCDF = NF90_CREATE(TRIM(FILE)//cfile//".nc4", &
+                           &IOR(NF90_CLOBBER,NF90_NETCDF4), TZFD_IOZ%CDF%NCID)
+                      IF (IOSCDF /= NF90_NOERR) THEN
+                         PRINT *, 'Error in opening (NF90_CREATE) ', TRIM(FILE)//cfile//'.nc4', ' : ', NF90_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
                       END IF
-                      PRINT *, 'NF_CREATE(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
+                      PRINT *, 'NF90_CREATE(IO_ZSPLIT): ',TRIM(FILE)//cfile//'.nc4'
                    END IF
                 END IF
 #endif
diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 8a98a298dbb861027bec45c5cbee21b394bd26c3..3dd23621ff0038058ee87baf0ea8b2601c931e71 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -1,6 +1,16 @@
+!MNH_LIC Copyright 1994-2016 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.
+!-----------------------------------------------------------------
+!  Modifications:
+!    P. Wautelet : may 2016: use NetCDF Fortran module
+!-----------------------------------------------------------------
+!-----------------------------------------------------------------
 #if defined(MNH_IOCDF4)
 MODULE MODE_NETCDF
 USE MODD_NETCDF
+USE NETCDF
 
 IMPLICIT NONE 
 
@@ -20,8 +30,8 @@ INTERFACE NCREAD
         & NCREADC0
 END INTERFACE NCREAD
 
-! Public from netcdf.inc :
-!PUBLIC NF_OPEN,NF_CREATE,NF_NOWRITE,NF_CLOBBER,NF_NETCDF4,NF_NOERR,NF_STRERROR
+! Public from module netcdf
+PUBLIC NF90_OPEN,NF90_CREATE,NF90_NOWRITE,NF90_CLOBBER,NF90_NETCDF4,NF90_NOERR,NF90_STRERROR
 ! Public from this module :
 PUBLIC NEWIOCDF,CLEANIOCDF,NCWRIT,NCREAD
 
@@ -55,9 +65,9 @@ TYPE(IOCDF),  POINTER :: PIOCDF
 INTEGER(KIND=IDCDF_KIND) :: IRESP
 
 ! Close Netcdf File
-IRESP = NF_CLOSE(PIOCDF%NCID)
-IF (IRESP /= NF_NOERR) THEN
-   PRINT *, 'CLEANIOCDF, NF_CLOSE error : ', NF_STRERROR(IRESP)
+IRESP = NF90_CLOSE(PIOCDF%NCID)
+IF (IRESP /= NF90_NOERR) THEN
+   PRINT *, 'CLEANIOCDF, NF90_CLOSE error : ', NF90_STRERROR(IRESP)
 END IF
 
 ! Clean DIMLIST and DIMSTR
@@ -92,8 +102,8 @@ INTEGER, OPTIONAL, INTENT(OUT) :: kresp
 
 ! Don't stop the code when kresp is present
 ! and ensure kresp is a negative integer
-IF (status /= NF_NOERR) THEN
-   PRINT *, 'NETCDF ERROR in '//TRIM(text), line, NF_STRERROR(status)
+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
@@ -130,17 +140,14 @@ INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KVARID
 TYPE(FMHEADER), INTENT(IN) :: TPFMH
 
 INTEGER(KIND=IDCDF_KIND) :: STATUS
-INTEGER(KIND=IDCDF_KIND),PARAMETER :: IONE = 1
 
 ! GRID attribute definition
-STATUS = NF_PUT_ATT_INT(KNCID, KVARID, 'GRID', &
-     &NF_INT, IONE, INT(TPFMH%GRID,KIND=IDCDF_KIND))
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF_PUT_ATT_INT]')
+STATUS = NF90_PUT_ATT(KNCID, KVARID, 'GRID', TPFMH%GRID)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF90_PUT_ATT]')
 
 ! COMMENT attribute definition
-STATUS = NF_PUT_ATT_TEXT(KNCID, KVARID,'COMMENT', &
-     &INT(LEN_TRIM(TPFMH%COMMENT),KIND=IDCDF_KIND), TPFMH%COMMENT)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF_PUT_ATT_TEXT]')
+STATUS = NF90_PUT_ATT(KNCID, KVARID,'COMMENT', TRIM(TPFMH%COMMENT))
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF90_PUT_ATT]')
 
 END SUBROUTINE WRITATTR
 
@@ -183,8 +190,8 @@ IF (.NOT. ASSOCIATED(TMP)) THEN
    ALLOCATE(TMP)
    TMP%NAME = YDIMNAME
    TMP%LEN = KLEN
-   STATUS = NF_DEF_DIM(PIOCDF%NCID, TMP%NAME, KLEN, TMP%ID)
-   IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'GETDIMCDF[NF_DEF_DIM]')
+   STATUS = NF90_DEF_DIM(PIOCDF%NCID, TMP%NAME, KLEN, TMP%ID)
+   IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'GETDIMCDF[NF90_DEF_DIM]')
    NULLIFY(TMP%NEXT)
    TMP%NEXT       => PIOCDF%DIMLIST
    PIOCDF%DIMLIST => TMP
@@ -223,8 +230,8 @@ IF (.NOT. ASSOCIATED(TMP)) THEN
    ALLOCATE(TMP)
    TMP%NAME = YDIMNAME
    TMP%LEN = KLEN
-   STATUS = NF_DEF_DIM(PIOCDF%NCID, TMP%NAME, KLEN, TMP%ID)
-   IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'GETSTRDIMID[NF_DEF_DIM]')
+   STATUS = NF90_DEF_DIM(PIOCDF%NCID, TMP%NAME, KLEN, TMP%ID)
+   IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'GETSTRDIMID[NF90_DEF_DIM]')
    NULLIFY(TMP%NEXT)
    TMP%NEXT      => PIOCDF%DIMSTR
    PIOCDF%DIMSTR => TMP
@@ -315,7 +322,6 @@ INTEGER(KIND=IDCDF_KIND) :: STATUS
 INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30) :: YVARNAME
 INTEGER(KIND=IDCDF_KIND) :: IVARID
-INTEGER(KIND=IDCDF_KIND),PARAMETER :: IZERO = 0
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -327,19 +333,19 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Define the scalar variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, IZERO, IZERO, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX0[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX0[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX0 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX0[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX0[NF90_PUT_VAR]',IRESP)
 
 KRESP = IRESP
 END SUBROUTINE NCWRITX0
@@ -369,22 +375,22 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX1[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX1[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX1 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX1[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX1[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX1
@@ -419,18 +425,18 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
    
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF90_DEF_VAR]')
    IF (LDEFLATEX2) THEN
       ! Compress the variable with deflate level 2
-      STATUS = NF_DEF_VAR_DEFLATE(INCID, IVARID, SHUFFLE, DEFLATE, DEFLATE_LEVEL)
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF_DEF_VAR_DEFLATE]')
+      STATUS = NF90_DEF_VAR_DEFLATE(INCID, IVARID, SHUFFLE, DEFLATE, DEFLATE_LEVEL)
+      IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF90_DEF_VAR_DEFLATE]')
    END IF
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -438,8 +444,8 @@ ELSE
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX2
@@ -469,22 +475,22 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX3 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_PUT_VAR_DOUBLE] '//TRIM(HVARNAME),IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF90_PUT_VAR] '//TRIM(HVARNAME),IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX3
@@ -514,22 +520,22 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX4[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX4[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX4 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX4[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX4[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX4
@@ -559,22 +565,22 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX5[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX5[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX5 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX5[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX5[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX5
@@ -604,22 +610,22 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
    
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX6[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_DOUBLE, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX6[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITX6 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_DOUBLE(INCID, IVARID, PFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX6[NF_PUT_VAR_DOUBLE]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, PFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX6[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITX6
@@ -639,7 +645,6 @@ INTEGER(KIND=IDCDF_KIND) :: STATUS
 INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30) :: YVARNAME
 INTEGER(KIND=IDCDF_KIND) :: IVARID
-INTEGER(KIND=IDCDF_KIND),PARAMETER :: IZERO = 0
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -651,28 +656,23 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Define the scalar variable 
 #ifndef MNH_INT8
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, IZERO, IZERO, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT, IVARID)
 #else
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, IZERO, IZERO, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT64, IVARID)
 #endif
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_DEF_VAR]')
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITN0 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_PUT_VAR_INT]',IRESP)
-#else
-STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_PUT_VAR_INT64]',IRESP)
-#endif
+STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF90_PUT_VAR]',IRESP)
 !
 ! Use IMAX, JMAX, KMAX to define DIMX, DIMY, DIMZ
 ! /!\ Can only work if IMAX, JMAX or KMAX are written before any array
@@ -717,30 +717,25 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
-! Define the variable 
+   ! Define the variable 
 #ifndef MNH_INT8
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT, IVDIMS, IVARID)
 #else
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT64, IVDIMS, IVARID)
 #endif
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_DEF_VAR] '//TRIM(YVARNAME))
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF90_DEF_VAR] '//TRIM(YVARNAME))
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITN1 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_PUT_VAR_INT]',IRESP)
-#else
-STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_PUT_VAR_INT64]',IRESP)
-#endif
+STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF90_PUT_VAR]',IRESP)
 
 KRESP = IRESP 
 END SUBROUTINE NCWRITN1
@@ -770,31 +765,26 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
 #ifndef MNH_INT8
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT, IVDIMS, IVARID)
 #else
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_INT64, IVDIMS, IVARID)
 #endif
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_DEF_VAR]')
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITN2 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_PUT_VAR_INT]',IRESP)
-#else
-STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_PUT_VAR_INT64]',IRESP)
-#endif
+STATUS = NF90_PUT_VAR(INCID, IVARID, KFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF90_PUT_VAR]',IRESP)
 
 KRESP = IRESP
 END SUBROUTINE NCWRITN2
@@ -831,21 +821,21 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf string dimensions id 
    IVDIMS(1) = GETSTRDIMID(PZCDF, INT(LEN(YSTR),KIND=IDCDF_KIND))
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC0[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_CHAR, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC0[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITC0 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_TEXT(INCID, IVARID, YSTR)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC0[NF_PUT_VAR_TEXT]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, YSTR)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC0[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITC0
@@ -868,7 +858,6 @@ INTEGER(KIND=IDCDF_KIND), DIMENSION(1) :: ITMP
 INTEGER               :: IRESP
 INTEGER(KIND=IDCDF_KIND) :: ILEN
 INTEGER(KIND=IDCDF_KIND) :: ISIZE
-INTEGER(KIND=IDCDF_KIND),PARAMETER :: IONE=1
 
 IRESP = 0
 ILEN  = LEN(HFIELD)
@@ -882,23 +871,23 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! The variable should not already exist but who knows ?
-STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
+STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
    ! Get the netcdf dimensions ID 
    IVDIMS(1) = GETSTRDIMID(PZCDF,ILEN)
    CALL FILLVDIMS(PZCDF, (/ISIZE/), HDIR, ITMP)
    IVDIMS(2) = ITMP(1)
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF_DEF_VAR]')
+   STATUS = NF90_DEF_VAR(INCID, YVARNAME, NF90_CHAR, IVDIMS, IVARID)
+   IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF90_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITC1 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VARA_TEXT(INCID, IVARID, (/IONE,IONE/),(/ILEN,ISIZE/), HFIELD)
-IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF_PUT_VARA_TEXT]',IRESP)
+STATUS = NF90_PUT_VAR(INCID, IVARID, HFIELD)
+IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF90_PUT_VAR]',IRESP)
  
 KRESP = IRESP
 END SUBROUTINE NCWRITC1
@@ -919,14 +908,14 @@ INTEGER(KIND=IDCDF_KIND) :: STATUS
 INTEGER(KIND=IDCDF_KIND) :: ICOMLEN
       
 ! Read variables attributes (GRID and COMMENT)
-STATUS = NF_GET_ATT_INT(KNCID, KVARID, 'GRID', TPFMH%GRID)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'READATTR[NF_GET_ATT_INT] '//TRIM(HVAR))
-STATUS = NF_INQ_ATTLEN(KNCID, KVARID, 'COMMENT', ICOMLEN)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'READATTR[NF_INQ_ATTLEN] '//TRIM(HVAR))
+STATUS = NF90_GET_ATT(KNCID, KVARID, 'GRID', TPFMH%GRID)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'READATTR[NF90_GET_ATT_INT] '//TRIM(HVAR))
+STATUS = NF90_INQUIRE_ATTRIBUTE(KNCID, KVARID, 'COMMENT', LEN=ICOMLEN)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'READATTR[NF90_INQUIRE_ATTRIBUTE] '//TRIM(HVAR))
 IF (ICOMLEN <= JPXKRK) THEN
    TPFMH%COMLEN = ICOMLEN
-   STATUS = NF_GET_ATT_TEXT(KNCID, KVARID, 'COMMENT', TPFMH%COMMENT)
-   IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'READATTR[NF_GET_ATT_TEXT] '//TRIM(HVAR))
+   STATUS = NF90_GET_ATT(KNCID, KVARID, 'COMMENT', TPFMH%COMMENT)
+   IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'READATTR[NF90_GET_ATT] '//TRIM(HVAR))
 ELSE
    PRINT *, 'READATTR : '//TRIM(HVAR)//' COMMENT attribute ignored because too long.'
    TPFMH%COMLEN = 0
@@ -956,21 +945,19 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX0[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX0[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX0[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX0[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX0[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == 0 .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == 0 .AND. ITYPE == NF90_DOUBLE) THEN
    ! Read variable
-   STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-   IF (STATUS /= NF_NOERR) THEN
-      CALL HANDLE_ERR(status,__LINE__,'NCREADX0[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+   STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+   IF (STATUS /= NF90_NOERR) THEN
+      CALL HANDLE_ERR(status,__LINE__,'NCREADX0[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
       GOTO 1000
    END IF
    ! Read variables attributes (GRID and COMMENT)
@@ -1012,32 +999,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX1[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX1[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX1[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX1[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1083,32 +1066,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX2[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX2[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX2[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX2[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1154,32 +1133,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX3[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX3[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX3[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX3[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1225,32 +1200,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX4[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX4[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX4[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX4[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1296,32 +1267,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX5[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX5[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX5[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX5[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1367,32 +1334,28 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX6[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX6[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADX6[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF_DOUBLE) THEN
+IF (IDIMS == SIZE(SHAPE(PFIELD)) .AND. ITYPE == NF90_DOUBLE) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(PFIELD)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_DOUBLE(KNCID, IVARID, PFIELD)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, PFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADX6[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1434,29 +1397,23 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN0[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN0[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN0[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
 #ifndef MNH_INT8
-IF (IDIMS == 0 .AND. ITYPE == NF_INT) THEN
+IF (IDIMS == 0 .AND. ITYPE == NF90_INT) THEN
 #else
-IF (IDIMS == 0 .AND. ITYPE == NF_INT64) THEN
+IF (IDIMS == 0 .AND. ITYPE == NF90_INT64) THEN
 #endif
-! Read variable
-#ifndef MNH_INT8
-   STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
-#else
-   STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
-#endif
-   IF (STATUS /= NF_NOERR) THEN
-      CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
+   ! Read variable
+   STATUS = NF90_GET_VAR(KNCID, IVARID, KFIELD)
+   IF (STATUS /= NF90_NOERR) THEN
+      CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
       GOTO 1000
    END IF
    ! Read variables attributes (GRID and COMMENT)
@@ -1498,40 +1455,32 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN1[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN1[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN1[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
 #ifndef MNH_INT8
-IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF90_INT) THEN
 #else
-IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF90_INT64) THEN
 #endif
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
-#ifndef MNH_INT8
-      STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
-#else
-      STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
-#endif
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, KFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1577,40 +1526,32 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN2[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN2[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN2[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
 #ifndef MNH_INT8
-IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF90_INT) THEN
 #else
-IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF90_INT64) THEN
 #endif
-! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
+   ! Check size of variable before reading
    IVARSIZE = 1
    DO II=1,IDIMS
-      STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(II),IDIMLEN)
-      IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+      STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(II), LEN=IDIMLEN)
+      IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
       IVARSIZE = IVARSIZE*IDIMLEN
    END DO
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
-#ifndef MNH_INT8
-      STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
-#else
-      STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
-#endif
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, KFIELD)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       ! Read variables attributes (GRID and COMMENT)
@@ -1657,28 +1598,24 @@ YVARNAME = str_replace(HVARNAME, '%', '__')
 YVARNAME = str_replace(YVARNAME, '.', '--')
 
 ! Get variable ID, NDIMS and TYPE
-STATUS = NF_INQ_VARID(KNCID, YVARNAME, IVARID)
-IF (STATUS /= NF_NOERR) THEN
-   CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF_INQ_VARID] '//TRIM(YVARNAME),IRESP)
+STATUS = NF90_INQ_VARID(KNCID, YVARNAME, IVARID)
+IF (STATUS /= NF90_NOERR) THEN
+   CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF90_INQ_VARID] '//TRIM(YVARNAME),IRESP)
    GOTO 1000
 END IF
-STATUS = NF_INQ_VARNDIMS(KNCID, IVARID, IDIMS)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADC0[NF_INQ_VARNDIMS] '//TRIM(YVARNAME))
-STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
-IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADC0[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
+STATUS = NF90_INQUIRE_VARIABLE(KNCID, IVARID, XTYPE=ITYPE, NDIMS=IDIMS, DIMIDS=IVDIMS)
+IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADC0[NF90_INQUIRE_VARIABLE] '//TRIM(YVARNAME))
 
-IF (IDIMS == 1 .AND. ITYPE == NF_CHAR) THEN
+IF (IDIMS == 1 .AND. ITYPE == NF90_CHAR) THEN
    ! Check size of variable before reading
-   STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
-   IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
-   STATUS = NF_INQ_DIMLEN(KNCID,IVDIMS(1),IDIMLEN)
-   IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF_INQ_DIMLEN] '//TRIM(YVARNAME))
+   STATUS = NF90_INQUIRE_DIMENSION(KNCID, IVDIMS(1), LEN=IDIMLEN)
+   IF (STATUS /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF90_INQUIRE_DIMENSION] '//TRIM(YVARNAME))
    
    IF (IDIMLEN <= LEN(YSTR)) THEN
       ! Read variable
-      STATUS = NF_GET_VAR_TEXT(KNCID, IVARID, YSTR)
-      IF (STATUS /= NF_NOERR) THEN
-         CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF_GET_VAR_TEXT] '//TRIM(YVARNAME),IRESP)
+      STATUS = NF90_GET_VAR(KNCID, IVARID, YSTR)
+      IF (STATUS /= NF90_NOERR) THEN
+         CALL HANDLE_ERR(status,__LINE__,'NCREADC0[NF90_GET_VAR] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
       END IF
       IF (LEN_TRIM(YSTR) > LEN(HFIELD)) PRINT *, 'NCDREADC0 : '//TRIM(YVARNAME)//' truncated !!'
diff --git a/src/Makefile b/src/Makefile
index d2d234d361a5036d0dc55ade64dfe3f6635a2af5..4cac9720e7bcfb06f54ab195ff0fed1c71d4196d 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -345,7 +345,7 @@ $(CDF_INC) :
 	cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=no \
 	FC="$(FC)" FCFLAGS="$(HDF_OPT)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean
 	cd ${DIR_CDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-cxx --enable-f90 --disable-dap \
-        FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
+	FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
 
 cleanmaster : cleancdf
 cleancdf :