diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
index 66f9e704e57869bad0e879cac7076adb270904d9..9c855784e6025d7ba1e51a478e92926f6567bc1f 100644
--- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
@@ -294,6 +294,18 @@ CONTAINS
   END SUBROUTINE IO_FILE_WRITE_CHECK
 
 
+  SUBROUTINE IO_WRITE_SELECT_FORMAT(TPFILE,OLFI,ONC4)
+    TYPE(TFILEDATA), INTENT(IN)  :: TPFILE ! File structure
+    LOGICAL,         INTENT(OUT) :: OLFI   ! Write in LFI format?
+    LOGICAL,         INTENT(OUT) :: ONC4   ! Write in netCDF format?
+
+    OLFI = .FALSE.
+    ONC4 = .FALSE.
+    IF (TPFILE%CFORMAT=='LFI'     .OR. TPFILE%CFORMAT=='LFICDF4') OLFI = .TRUE.
+    IF (TPFILE%CFORMAT=='NETCDF4' .OR. TPFILE%CFORMAT=='LFICDF4') ONC4 = .TRUE.
+  END SUBROUTINE IO_WRITE_SELECT_FORMAT
+
+
   SUBROUTINE IO_WRITE_HEADER(TPFILE,HDAD_NAME)
     !
     USE MODD_CONF
@@ -369,7 +381,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X0(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll, ONLY: GSMONOPROC,ISP
     !
     USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
     !
@@ -392,6 +404,7 @@ CONTAINS
     !
     INTEGER                                  :: IK_FILE
     TYPE(TFILEDATA),POINTER                  :: TZFILE
+    LOGICAL                                  :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
     !
@@ -408,14 +421,16 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X0',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
        ELSE ! multiprocesses execution
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -425,8 +440,8 @@ CONTAINS
           DO IK_FILE=1,TPFILE%NSUBFILES_IOZ
              TZFILE => TPFILE%TFILES_IOZ(IK_FILE)%TFILE
              IF ( ISP == TZFILE%NMASTER_RANK )  THEN
-                IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,PFIELD,IRESP)
-                IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,PFIELD,IRESP)
+                IF (GLFI) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,PFIELD,IRESP)
+                IF (GNC4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,PFIELD,IRESP)
              END IF
           END DO
        ENDIF
@@ -442,8 +457,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X1(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -469,7 +482,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X1(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll, ONLY: GSMONOPROC,ISP
     !
     USE MODE_ALLOCBUFFER_ll
     USE MODE_GATHER_ll
@@ -494,6 +507,7 @@ CONTAINS
     INTEGER                                  :: ISIZEMAX
     REAL,DIMENSION(:),POINTER                :: ZFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     !
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
@@ -511,10 +525,12 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X1',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
        ELSE ! multiprocesses execution
 #ifndef MNH_INT8
           CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
@@ -539,8 +555,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -558,8 +574,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X2(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -585,7 +599,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X2(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -615,6 +629,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     REAL,DIMENSION(:,:),POINTER              :: ZFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     !
     REAL*8,DIMENSION(2) :: T0,T1,T2
     REAL*8,DIMENSION(2) :: T11,T22
@@ -641,21 +656,23 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X2',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           !    IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN 
           IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==IHEXTOT .AND. SIZE(PFIELD,2)==IHEXTOT) THEN 
              ZFIELDP=>PFIELD(JPHEXT+1:JPHEXT+1,JPHEXT+1:JPHEXT+1)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==IHEXTOT) THEN
              ZFIELDP=>PFIELD(:,JPHEXT+1:JPHEXT+1)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSE ! multiprocesses execution
           CALL SECOND_MNH2(T0)
@@ -714,8 +731,8 @@ CONTAINS
           TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + T1 - T0
           !
           IF (ISP == TPFILE%NMASTER_RANK) THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
 #ifdef MNH_GA
          call ga_sync
@@ -740,8 +757,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X3(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -767,7 +782,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X3(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,            ONLY : GSMONOPROC,ISNPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll,    ONLY : JPHEXT
     USE MODD_TIMEZ,            ONLY : TIMEZ
     !
@@ -799,6 +814,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     REAL,DIMENSION(:,:,:),POINTER            :: ZFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     INTEGER                                  :: JK,JKK
     REAL,DIMENSION(:,:),POINTER              :: ZSLICE_ll,ZSLICE
     INTEGER                                  :: IK_FILE,IK_RANK,INB_PROC_REAL,JK_MAX
@@ -844,21 +860,23 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X3',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC .AND. TPFILE%NSUBFILES_IOZ==0 ) THEN ! sequential execution
           !    IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN 
           IF (LPACK .AND. L1D .AND. SIZE(PFIELD,1)==IHEXTOT .AND. SIZE(PFIELD,2)==IHEXTOT) THEN 
              ZFIELDP=>PFIELD(JPHEXT+1:JPHEXT+1,JPHEXT+1:JPHEXT+1,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==IHEXTOT) THEN
              ZFIELDP=>PFIELD(:,JPHEXT+1:JPHEXT+1,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSEIF ( TPFILE%NSUBFILES_IOZ==0 .OR. YDIR=='--' ) THEN  ! multiprocesses execution & 1 proc IO
 #ifndef MNH_INT8
@@ -891,8 +909,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -957,8 +975,8 @@ CONTAINS
                CALL SECOND_MNH2(T1)
                TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0
                !
-               IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
-               IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+               IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+               IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
                CALL SECOND_MNH2(T2)
                TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1
             END IF
@@ -1057,8 +1075,8 @@ CONTAINS
                    END DO
                    CALL SECOND_MNH2(T1)
                    TIMEZ%T_WRIT3D_RECV=TIMEZ%T_WRIT3D_RECV + T1 - T0
-                   IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
-                   IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+                   IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
+                   IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZSLICE_ll,IRESP,KVERTLEVEL=JKK,KZFILE=IK_FILE+1)
                    CALL SECOND_MNH2(T2)
                    TIMEZ%T_WRIT3D_WRIT=TIMEZ%T_WRIT3D_WRIT + T2 - T1
                 END IF
@@ -1094,8 +1112,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X4(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1121,7 +1137,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X4(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -1149,6 +1165,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     REAL,DIMENSION(:,:,:,:),POINTER          :: ZFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     INTEGER                                  :: IHEXTOT
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
@@ -1168,6 +1185,8 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X4',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           !    IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN 
@@ -1176,11 +1195,11 @@ CONTAINS
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==IHEXTOT) THEN
              ZFIELDP=>PFIELD(:,JPHEXT+1:JPHEXT+1,:,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSE
 #ifndef MNH_INT8
@@ -1212,8 +1231,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1231,8 +1250,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X5(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1258,7 +1275,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X5(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -1286,6 +1303,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     REAL,DIMENSION(:,:,:,:,:),POINTER        :: ZFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     INTEGER                                  :: IHEXTOT
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
@@ -1305,6 +1323,8 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X5',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           !    IF (LPACK .AND. L1D .AND. YDIR=='XY') THEN 
@@ -1313,11 +1333,11 @@ CONTAINS
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(PFIELD,2)==IHEXTOT) THEN
              ZFIELDP=>PFIELD(:,JPHEXT+1:JPHEXT+1,:,:,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSE
 #ifndef MNH_INT8
@@ -1350,8 +1370,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1369,8 +1389,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_X6(TPFILE,HNAME,PFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1395,7 +1413,7 @@ CONTAINS
   END SUBROUTINE IO_WRITE_FIELD_BYNAME_X6
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_X6(TPFILE,TPFIELD,PFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC, ISP
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -1422,6 +1440,7 @@ CONTAINS
     INTEGER                                  :: ISIZEMAX
     INTEGER                                  :: IRESP
     REAL,DIMENSION(:,:,:,:,:,:),POINTER      :: ZFIELDP
+    LOGICAL                                  :: GLFI, GNC4
     LOGICAL                                  :: GALLOC
     INTEGER                                  :: IHEXTOT
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
@@ -1442,10 +1461,12 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_X6',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
        ELSE
 #ifndef MNH_INT8
           CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
@@ -1472,8 +1493,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1491,8 +1512,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_N0(TPFILE,HNAME,KFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1518,7 +1537,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_N0(TPFILE,TPFIELD,KFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC, ISP
     !*      0.    DECLARATIONS
     !             ------------
     !
@@ -1536,6 +1555,7 @@ CONTAINS
     INTEGER                      :: IRESP
     INTEGER                      :: IK_FILE
     TYPE(TFILEDATA),POINTER      :: TZFILE
+    LOGICAL                      :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE :: YMSG
     CHARACTER(LEN=6)             :: YRESP
     !
@@ -1548,14 +1568,16 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_N0',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
        ELSE 
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1565,8 +1587,8 @@ CONTAINS
           DO IK_FILE=1,TPFILE%NSUBFILES_IOZ
              TZFILE => TPFILE%TFILES_IOZ(IK_FILE)%TFILE
              IF ( ISP == TZFILE%NMASTER_RANK )  THEN
-                IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,KFIELD,IRESP)
-                IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,KFIELD,IRESP)
+                IF (GLFI) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,KFIELD,IRESP)
+                IF (GNC4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,KFIELD,IRESP)
              END IF
           END DO
        ENDIF
@@ -1582,8 +1604,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_N1(TPFILE,HNAME,KFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1610,7 +1630,7 @@ CONTAINS
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_N1(TPFILE,TPFIELD,KFIELD,KRESP)
     !
-    USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,TFILEDATA
+    USE MODD_IO_ll, ONLY : ISP,GSMONOPROC
     !
     USE MODE_ALLOCBUFFER_ll
     USE MODE_GATHER_ll
@@ -1634,6 +1654,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     INTEGER,DIMENSION(:),POINTER             :: IFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
     !
@@ -1650,10 +1671,12 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_N1',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
        ELSE ! multiprocesses execution
 #ifndef MNH_INT8
           CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
@@ -1678,8 +1701,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1698,8 +1721,6 @@ CONTAINS
 
   
   SUBROUTINE IO_WRITE_FIELD_BYNAME_N2(TPFILE,HNAME,KFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1725,7 +1746,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_N2(TPFILE,TPFIELD,KFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -1752,6 +1773,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     INTEGER,DIMENSION(:,:),POINTER           :: IFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     !
     REAL*8,DIMENSION(2) :: T0,T1,T2
     REAL*8,DIMENSION(2) :: T11,T22
@@ -1776,20 +1798,22 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_N2',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==IHEXTOT .AND. SIZE(KFIELD,2)==IHEXTOT) THEN 
              IFIELDP=>KFIELD(JPHEXT+1:JPHEXT+1,JPHEXT+1:JPHEXT+1)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==IHEXTOT) THEN
              IFIELDP=>KFIELD(:,JPHEXT+1:JPHEXT+1)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
        ELSE ! multiprocesses execution
 #ifndef MNH_INT8
@@ -1825,8 +1849,8 @@ CONTAINS
           TIMEZ%T_WRIT2D_GATH=TIMEZ%T_WRIT2D_GATH + T1 - T0
           !
           IF (ISP == TPFILE%NMASTER_RANK) THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           END IF
           CALL SECOND_MNH2(T2)
           TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + T2 - T1
@@ -1849,8 +1873,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_N3(TPFILE,HNAME,KFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -1875,7 +1897,7 @@ CONTAINS
   END SUBROUTINE IO_WRITE_FIELD_BYNAME_N3
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_N3(TPFILE,TPFIELD,KFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_TIMEZ,         ONLY : TIMEZ
     !
@@ -1902,6 +1924,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     INTEGER,DIMENSION(:,:,:),POINTER         :: IFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     !
     REAL*8,DIMENSION(2) :: T11,T22
     INTEGER                                  :: IHEXTOT
@@ -1925,20 +1948,22 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_N3',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           IF (LPACK .AND. L1D .AND. SIZE(KFIELD,1)==IHEXTOT .AND. SIZE(KFIELD,2)==IHEXTOT) THEN 
              IFIELDP=>KFIELD(JPHEXT+1:JPHEXT+1,JPHEXT+1:JPHEXT+1,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
              !    ELSE IF (LPACK .AND. L2D .AND. YDIR=='XY') THEN
           ELSEIF (LPACK .AND. L2D .AND. SIZE(KFIELD,2)==IHEXTOT) THEN
              IFIELDP=>KFIELD(:,JPHEXT+1:JPHEXT+1,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
        ELSE ! multiprocesses execution
 #ifndef MNH_INT8
@@ -1971,8 +1996,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK) THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -1993,8 +2018,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_L0(TPFILE,HNAME,OFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2019,7 +2042,7 @@ CONTAINS
   END SUBROUTINE IO_WRITE_FIELD_BYNAME_L0
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_L0(TPFILE,TPFIELD,OFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,            ONLY : GSMONOPROC, ISP
     !
     USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
     !*      0.    DECLARATIONS
@@ -2038,6 +2061,7 @@ CONTAINS
     INTEGER                      :: IERR
     INTEGER                      :: IRESP
     INTEGER                      :: IK_FILE
+    LOGICAL                      :: GLFI, GNC4
     TYPE(TFILEDATA),POINTER      :: TZFILE
     CHARACTER(LEN=:),ALLOCATABLE :: YMSG
     CHARACTER(LEN=6)             :: YRESP
@@ -2051,14 +2075,16 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_L0',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
        ELSE
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2068,8 +2094,8 @@ CONTAINS
           DO IK_FILE=1,TPFILE%NSUBFILES_IOZ
              TZFILE => TPFILE%TFILES_IOZ(IK_FILE)%TFILE
              IF ( ISP == TZFILE%NMASTER_RANK )  THEN
-                IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,OFIELD,IRESP)
-                IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,OFIELD,IRESP)
+                IF (GLFI) CALL IO_WRITE_FIELD_LFI(TZFILE,TPFIELD,OFIELD,IRESP)
+                IF (GNC4) CALL IO_WRITE_FIELD_NC4(TZFILE,TPFIELD,OFIELD,IRESP)
              END IF
           END DO
        ENDIF
@@ -2085,8 +2111,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_L1(TPFILE,HNAME,OFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2113,7 +2137,7 @@ CONTAINS
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_L1(TPFILE,TPFIELD,OFIELD,KRESP)
     !
-    USE MODD_IO_ll, ONLY : ISP,GSMONOPROC,LIOCDF4,LLFIOUT,TFILEDATA
+    USE MODD_IO_ll, ONLY : ISP,GSMONOPROC
     !
     USE MODE_ALLOCBUFFER_ll
     USE MODE_GATHER_ll
@@ -2137,6 +2161,7 @@ CONTAINS
     INTEGER                                  :: IRESP
     LOGICAL,DIMENSION(:),POINTER             :: GFIELDP
     LOGICAL                                  :: GALLOC
+    LOGICAL                                  :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE             :: YMSG
     CHARACTER(LEN=6)                         :: YRESP
     !
@@ -2153,10 +2178,12 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_L1',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
        ELSE ! multiprocesses execution
 #ifndef MNH_INT8
           CALL MPI_ALLREDUCE(SIZE(OFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
@@ -2181,8 +2208,8 @@ CONTAINS
           END IF
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,GFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,GFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,GFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,GFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2201,8 +2228,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_C0(TPFILE,HNAME,HFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2228,7 +2253,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_C0(TPFILE,TPFIELD,HFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC, ISP
     !
     !*      0.    DECLARATIONS
     !             ------------
@@ -2245,6 +2270,7 @@ CONTAINS
     !
     INTEGER                      :: IERR
     INTEGER                      :: IRESP
+    LOGICAL                      :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE :: YMSG
     CHARACTER(LEN=6)             :: YRESP
     !
@@ -2254,7 +2280,9 @@ CONTAINS
     !
     CALL FIELD_METADATA_CHECK(TPFIELD,TYPECHAR,0,'IO_WRITE_FIELD_BYFIELD_C0')
     !
-    IF (LEN(HFIELD)==0 .AND. LLFIOUT) THEN
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
+    IF (LEN(HFIELD)==0 .AND. GLFI) THEN
       CALL PRINT_MSG(NVERB_ERROR,'IO','IO_WRITE_FIELD_BYFIELD_C0',&
                      'zero-size string not allowed if LFI output for '//TRIM(TPFIELD%CMNHNAME))
     END IF
@@ -2263,12 +2291,12 @@ CONTAINS
     !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,HFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,HFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
        ELSE 
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,HFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,HFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2285,8 +2313,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_C1(TPFILE,HNAME,HFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2312,7 +2338,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_C1(TPFILE,TPFIELD,HFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC, ISP
     !
     !*      0.    DECLARATIONS
     !             ------------
@@ -2333,6 +2359,7 @@ CONTAINS
     INTEGER                          :: ILE, IP
     INTEGER,DIMENSION(:),ALLOCATABLE :: IFIELD
     INTEGER                          :: ILENG
+    LOGICAL                          :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE     :: YMSG
     CHARACTER(LEN=6)                 :: YRESP
     !
@@ -2342,7 +2369,9 @@ CONTAINS
     !
     IRESP = 0
     !
-    IF(LLFIOUT) THEN
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
+    IF(GLFI) THEN
       ILE=LEN(HFIELD)
       IP=SIZE(HFIELD)
       ILENG=ILE*IP
@@ -2367,12 +2396,12 @@ CONTAINS
     !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
        ELSE 
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,IFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2390,8 +2419,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_T0(TPFILE,HNAME,TFIELD,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2417,7 +2444,7 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_T0(TPFILE,TPFIELD,TFIELD,KRESP)
-    USE MODD_IO_ll
+    USE MODD_IO_ll, ONLY : GSMONOPROC, ISP
     USE MODD_TYPE_DATE
     !
     !*      0.    DECLARATIONS
@@ -2435,6 +2462,7 @@ CONTAINS
     !
     INTEGER                      :: IERR
     INTEGER                      :: IRESP
+    LOGICAL                      :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE :: YMSG
     CHARACTER(LEN=6)             :: YRESP
     !
@@ -2446,14 +2474,16 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_T0',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TFIELD,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TFIELD,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TFIELD,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TFIELD,IRESP)
        ELSE 
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TFIELD,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TFIELD,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TFIELD,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TFIELD,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
@@ -2470,8 +2500,6 @@ CONTAINS
 
 
   SUBROUTINE IO_WRITE_FIELD_BYNAME_LB(TPFILE,HNAME,KL3D,PLB,KRESP)
-    !
-    USE MODD_IO_ll, ONLY : TFILEDATA
     !
     !*      0.1   Declarations of arguments
     !
@@ -2499,7 +2527,7 @@ CONTAINS
 
   SUBROUTINE IO_WRITE_FIELD_BYFIELD_LB(TPFILE,TPFIELD,KL3D,PLB,KRESP)
     !
-    USE MODD_IO_ll
+    USE MODD_IO_ll,         ONLY : GSMONOPROC,ISNPROC,ISP,L1D,L2D,LPACK
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODD_VAR_ll,        ONLY : MNH_STATUSES_IGNORE
     !
@@ -2531,6 +2559,7 @@ CONTAINS
     INTEGER, DIMENSION(MPI_STATUS_SIZE)      :: STATUS
     INTEGER,ALLOCATABLE,DIMENSION(:)         :: REQ_TAB
     INTEGER                                  :: NB_REQ,IKU
+    LOGICAL                                  :: GLFI, GNC4
     TYPE TX_3DP
        REAL,DIMENSION(:,:,:), POINTER    :: X
     END TYPE TX_3DP
@@ -2564,15 +2593,17 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BYFIELD_LB',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN  ! sequential execution
           IF (LPACK .AND. L2D) THEN
              TX3DP=>PLB(:,JPHEXT+1:JPHEXT+1,:)
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TX3DP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TX3DP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TX3DP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TX3DP,IRESP)
           ELSE
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PLB,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PLB,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PLB,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PLB,IRESP)
           END IF
        ELSE
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
@@ -2600,8 +2631,8 @@ CONTAINS
              ELSE
                 TX3DP=>Z3D
              END IF
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TX3DP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TX3DP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,TX3DP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TX3DP,IRESP)
           ELSE
              NB_REQ=0
              ALLOCATE(REQ_TAB(1))
@@ -2643,7 +2674,7 @@ CONTAINS
 
   SUBROUTINE IO_WRITE_FIELD_BOX_BYFIELD_X5(TPFILE,TPFIELD,HBUDGET,PFIELD,KXOBOX,KXEBOX,KYOBOX,KYEBOX,KRESP)
     !
-    USE MODD_IO_ll
+    USE MODD_IO_ll, ONLY : GSMONOPROC, ISP
     !
     USE MODE_GATHER_ll
     !
@@ -2666,6 +2697,7 @@ CONTAINS
     INTEGER                             :: IRESP
     REAL,DIMENSION(:,:,:,:,:),POINTER   :: ZFIELDP
     LOGICAL                             :: GALLOC
+    LOGICAL                             :: GLFI, GNC4
     CHARACTER(LEN=:),ALLOCATABLE        :: YMSG
     CHARACTER(LEN=6)                    :: YRESP
     !
@@ -2676,6 +2708,8 @@ CONTAINS
     !
     CALL IO_FILE_WRITE_CHECK(TPFILE,'IO_WRITE_FIELD_BOX_BYFIELD_X5',IRESP)
     !
+    CALL IO_WRITE_SELECT_FORMAT(TPFILE,GLFI,GNC4)
+    !
     IF (IRESP==0) THEN
        IF (GSMONOPROC) THEN ! sequential execution
           IF (HBUDGET /= 'BUDGET') THEN
@@ -2685,8 +2719,8 @@ CONTAINS
              ! take the field as a budget
              ZFIELDP=>PFIELD
           END IF
-          IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-          IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+          IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+          IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
        ELSE ! multiprocesses execution
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
              ! Allocate the box
@@ -2702,8 +2736,8 @@ CONTAINS
                & KXOBOX,KXEBOX,KYOBOX,KYEBOX,HBUDGET)
           !
           IF (ISP == TPFILE%NMASTER_RANK)  THEN
-             IF (LLFIOUT) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
-             IF (LIOCDF4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,ZFIELDP,IRESP)
+             IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
           CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 627734e13556e570e158bf9854b62c34d54c3c8e..46c9aee02bba3f7d815734e8132e46da564be8f0 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -54,7 +54,7 @@ END SUBROUTINE SET_FMPACK_ll
 SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS,HPROGRAM_ORIG)
 !
 USE MODD_CONF,  ONLY: CPROGRAM, NMNHVERSION
-USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA
+USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT
 USE MODE_FMREAD
 USE MODE_IO_ll, ONLY : OPEN_ll
@@ -226,7 +226,7 @@ IF (PRESENT(KRESP)) KRESP = IRESP
 END SUBROUTINE IO_FILE_OPEN_ll
 
 SUBROUTINE FMOPEN_ll(TPFILE,KRESP,OPARALLELIO,HPROGRAM_ORIG)
-USE MODD_IO_ll, ONLY : ISTDOUT,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA
+USE MODD_IO_ll, ONLY : ISTDOUT,TFILEDATA
 USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO
 !JUANZ
 USE MODD_CONFZ,ONLY  : NB_PROCIO_R,NB_PROCIO_W
@@ -326,8 +326,8 @@ IF (TPFILE%LMASTER) THEN
   END IF
 
 #if defined(MNH_IOCDF4)
-  IF (LIOCDF4) THEN
-     IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
+  IF (TPFILE%CFORMAT=='NETCDF4' .OR. TPFILE%CFORMAT=='LFICDF4') THEN
+     IF (YACTION == 'READ') THEN
         !! Open NetCDF File for reading
         TPFILE%TNCDIMS => NEWIOCDF()
         CALL PRINT_MSG(NVERB_DEBUG,'IO','FMOPEN_ll','NF90_OPEN for '//TRIM(YFILEM)//'.nc')
@@ -354,8 +354,7 @@ IF (TPFILE%LMASTER) THEN
   END IF
 #endif
   
-  IF (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) &
-       &            .OR. (YACTION=='READ'  .AND. LLFIREAD)) THEN
+  IF (TPFILE%CFORMAT=='LFI' .OR. TPFILE%CFORMAT=='LFICDF4') THEN
      ! LFI Case
      IRESOU = 0
      GNAMFI = .TRUE.
@@ -393,7 +392,7 @@ IF (TPFILE%LMASTER) THEN
 END IF
 #if defined(MNH_IOCDF4)
 !Write coordinates variables in NetCDF file
-IF (LIOCDF4 .AND.YACTION == 'WRITE') THEN
+IF (YACTION == 'WRITE' .AND. TPFILE%CFORMAT=='NETCDF4' .OR. TPFILE%CFORMAT=='LFICDF4') THEN
   CALL IO_WRITE_COORDVAR_NC4(TPFILE,HPROGRAM_ORIG=HPROGRAM_ORIG)
 END IF
 #endif
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 6444bde79c85084ca158edcc7e02a641390200bd..577c57abf07fbacec5344f74740e697b648e0ffc 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -610,8 +610,7 @@ CONTAINS
        END IF
 
 #if defined(MNH_IOCDF4)
-       IF (TPFILE%LMASTER .AND. (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT) &
-            &                    .OR. (YACTION=='READ'  .AND. LLFIREAD))) THEN
+       IF (TPFILE%LMASTER .AND. (TPFILE%CFORMAT=='LFI' .OR. TPFILE%CFORMAT=='LFICDF4') ) THEN
 #else
        IF (TPFILE%LMASTER) THEN
 #endif
@@ -650,8 +649,8 @@ CONTAINS
 
              IF ( TZSPLITFILE%LMASTER ) THEN
 #if defined(MNH_IOCDF4)                   
-                IF (LIOCDF4) THEN
-                   IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
+                IF (TZSPLITFILE%CFORMAT=='NETCDF4' .OR. TZSPLITFILE%CFORMAT=='LFICDF4') THEN
+                   IF (YACTION == 'READ') THEN
                       ! Open NetCDF File for reading
                       TZSPLITFILE%TNCDIMS => NEWIOCDF()
                       CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_OPEN(IO_ZSPLIT) for '//TRIM(TPFILE%CNAME)//CFILE//'.nc')
@@ -686,8 +685,7 @@ CONTAINS
                    END IF
                 END IF
 #endif
-                IF (.NOT. LIOCDF4 .OR. (YACTION=='WRITE' .AND. LLFIOUT)&
-                     &            .OR. (YACTION=='READ'  .AND. LLFIREAD)) THEN
+                IF (TZSPLITFILE%CFORMAT=='LFI' .OR. TZSPLITFILE%CFORMAT=='LFICDF4') THEN
                    ! LFI case
                    ! Open LFI File for reading
                    !this proc must write on this file open it ...    
@@ -722,7 +720,7 @@ CONTAINS
              !
 #if defined(MNH_IOCDF4)
              !Write coordinates variables in NetCDF file
-             IF (LIOCDF4 .AND.YACTION == 'WRITE') THEN
+             IF (YACTION == 'WRITE' .AND. TZSPLITFILE%CFORMAT=='NETCDF4' .OR. TZSPLITFILE%CFORMAT=='LFICDF4') THEN
                CALL IO_WRITE_COORDVAR_NC4(TZSPLITFILE,HPROGRAM_ORIG=HPROGRAM_ORIG)
              END IF
 #endif
diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90
index 6b3793448337ea7fa33efe37b045823012e9f551..73128f79268516230ac8fb25a4e254815d14d7bf 100644
--- a/src/MNH/diag.f90
+++ b/src/MNH/diag.f90
@@ -103,7 +103,7 @@ USE MODD_FIELD_n
 USE MODD_GR_FIELD_n
 USE MODD_GRID,             ONLY: XLONORI,XLATORI
 USE MODD_GRID_n
-USE MODD_IO_ll,            ONLY: LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILEDATA,TFILE_SURFEX
+USE MODD_IO_ll,            ONLY: NIO_VERB,NVERB_DEBUG,TFILEDATA,TFILE_SURFEX
 USE MODD_LBC_n
 USE MODD_LES
 USE MODD_LES_BUDGET
diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90
index 0a896fe3cd477132771dd11450fb937265ac243c..df8192de199e767f017fa76f4c94c5bafab3b7c9 100644
--- a/src/MNH/ini_modeln.f90
+++ b/src/MNH/ini_modeln.f90
@@ -420,7 +420,7 @@ USE MODD_ADVFRC_n
 USE MODD_RELFRC_n
 USE MODD_2D_FRC
 USE MODD_IO_SURF_MNH, ONLY : IO_SURF_MNH_MODEL
-USE MODD_IO_ll,       ONLY : LIOCDF4,LLFIOUT,TFILEDATA,TFILE_FIRST,TFILE_LAST
+USE MODD_IO_ll,       ONLY : TFILEDATA,TFILE_FIRST,TFILE_LAST
 !
 USE MODD_CH_PRODLOSSTOT_n
 USE MODI_CH_INIT_PRODLOSSTOT_n
diff --git a/src/MNH/ini_segn.f90 b/src/MNH/ini_segn.f90
index 160de109468a884df4118a30bb8177e08973fff6..2395cf621fe9462401de02728f9279d6c8275608 100644
--- a/src/MNH/ini_segn.f90
+++ b/src/MNH/ini_segn.f90
@@ -174,7 +174,7 @@ USE MODD_CONF
 USE MODD_CONF_n,           ONLY: CSTORAGE_TYPE
 USE MODN_CONFZ
 USE MODD_DYN
-USE MODD_IO_ll,            ONLY: ISP,LIOCDF4,LLFIREAD,NVERB_FATAL,NVERB_WARNING,TFILE_OUTPUTLISTING,TFILEDATA
+USE MODD_IO_ll,            ONLY: NVERB_FATAL,NVERB_WARNING,TFILE_OUTPUTLISTING,TFILEDATA
 USE MODD_LUNIT
 USE MODD_LUNIT_n,          ONLY: CINIFILE_n=> CINIFILE, TINIFILE_n => TINIFILE, CINIFILEPGD_n=> CINIFILEPGD, TLUOUT, LUNIT_MODEL
 USE MODD_PARAM_n,          ONLY: CSURF
diff --git a/src/MNH/ini_spectren.f90 b/src/MNH/ini_spectren.f90
index 384f43ed65612064af202f8d310078611e33b0dd..ba1dab2cd533874a239b2d3dbb06faad192c7d4c 100644
--- a/src/MNH/ini_spectren.f90
+++ b/src/MNH/ini_spectren.f90
@@ -73,7 +73,7 @@ USE MODD_FRC_n
 USE MODD_GET_n
 USE MODD_GRID,          ONLY: XLONORI,XLATORI
 USE MODD_GRID_n
-USE MODD_IO_ll,         ONLY: LIOCDF4,LLFIOUT,TFILEDATA
+USE MODD_IO_ll,         ONLY: TFILEDATA
 USE MODD_LBC_n
 USE MODD_LSFIELD_n
 USE MODD_LUNIT_n,       ONLY: COUTFILE, TLUOUT
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index bba05aba176e58a97380f63ca610d090e35ff19d..b5abff18fd8396eb0fc5d3ecce3e7067c16bd0c8 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -285,7 +285,7 @@ USE MODD_GET_n
 USE MODD_GRID,           ONLY: XLONORI,XLATORI
 USE MODD_GRID_n
 USE MODD_ICE_C1R3_DESCR, ONLY: XRTMIN_C1R3=>XRTMIN
-USE MODD_IO_ll,          ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX,TFILE_DUMMY
+USE MODD_IO_ll,          ONLY: TFILEDATA,TFILE_SURFEX,TFILE_DUMMY
 USE MODD_LBC_n
 USE MODD_LES
 USE MODD_LES_BUDGET
diff --git a/src/MNH/open_nestpgd_files.f90 b/src/MNH/open_nestpgd_files.f90
index 2ec5d200f222fff01afc8b006cdec11888498216..e8d5a26a920fbc7f009bda72fbff5c853156b52a 100644
--- a/src/MNH/open_nestpgd_files.f90
+++ b/src/MNH/open_nestpgd_files.f90
@@ -80,7 +80,7 @@ USE MODD_LUNIT_n
 USE MODD_CONF
 USE MODD_NESTING
 USE MODD_PARAMETERS
-USE MODD_IO_ll, ONLY : LIOCDF4,LLFIOUT,TFILE_OUTPUTLISTING,TFILEDATA,TPTR2FILE
+USE MODD_IO_ll, ONLY : TFILE_OUTPUTLISTING,TFILEDATA,TPTR2FILE
 !
 USE MODE_IO_ll
 USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_ADD2LIST
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index af371c97c2aa6933b454da6afbffe05b62d25ad1..8c5af24c9c354c87d74a116ec77dc1e6e3edd505 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -426,7 +426,7 @@ USE MODE_FMWRIT
 USE MODI_WRITE_HGRID
 USE MODD_MPIF
 USE MODD_VAR_ll
-USE MODD_IO_ll, ONLY: LIOCDF4,LLFIOUT,TFILEDATA,TFILE_SURFEX
+USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_SURFEX
 !
 USE MODE_MPPDB
 !
diff --git a/src/MNH/prep_pgd.f90 b/src/MNH/prep_pgd.f90
index f8bf8dc78fc478b75cbf399ae6f7ec85d5f25cfe..d9bc738fdfd8792c7f354aea7642440950bcc01d 100644
--- a/src/MNH/prep_pgd.f90
+++ b/src/MNH/prep_pgd.f90
@@ -81,7 +81,7 @@ USE MODD_CONF_n,ONLY : CSTORAGE_TYPE
 USE MODD_LUNIT,  ONLY : CLUOUT0,TLUOUT0
 USE MODD_LUNIT_n,ONLY : LUNIT_MODEL
 USE MODD_PARAMETERS, ONLY : XUNDEF
-USE MODD_IO_ll,   ONLY : GSMONOPROC,LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILEDATA,TFILE_OUTPUTLISTING,TFILE_SURFEX
+USE MODD_IO_ll,   ONLY : NIO_VERB,NVERB_DEBUG,TFILEDATA,TFILE_OUTPUTLISTING,TFILE_SURFEX
 USE MODD_IO_SURF_MNH, ONLY : NHALO
 USE MODD_SPAWN, ONLY : NDXRATIO,NDYRATIO,NXSIZE,NYSIZE,NXOR,NYOR
 !
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index 0cc39c4408b4c967b3da5a274a8dd6a6eb0fffce..302396cca08da6e89bf178c41a648228fdecc7b4 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -401,7 +401,7 @@ USE MODD_GR_FIELD_n
 USE MODD_GRID
 USE MODD_GRID_n
 USE MODD_HURR_CONF
-USE MODD_IO_ll,            ONLY: GSMONOPROC,TFILEDATA,LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILE_SURFEX
+USE MODD_IO_ll,            ONLY: TFILEDATA,NIO_VERB,NVERB_DEBUG,TFILE_SURFEX
 USE MODD_LBC_n
 USE MODD_LSFIELD_n
 USE MODD_LUNIT,            ONLY: CLUOUT0,TPGDFILE,TLUOUT0,TOUTDATAFILE
diff --git a/src/MNH/prep_surfex.f90 b/src/MNH/prep_surfex.f90
index f3200a838d3d7d8412c323d014e86eaa4eb32c60..9e98c8a6630b37acd91e2f26f894bb29bcf41fca 100644
--- a/src/MNH/prep_surfex.f90
+++ b/src/MNH/prep_surfex.f90
@@ -38,7 +38,7 @@
 USE MODD_CONF,        ONLY : CPROGRAM,NMASDEV,NBUGFIX,CBIBUSER,&
                              L1D, L2D, LPACK
 USE MODD_CONF_n,      ONLY : CSTORAGE_TYPE
-USE MODD_IO_ll,       ONLY : TFILEDATA, LIOCDF4, LLFIOUT, NIO_VERB, NVERB_DEBUG, TFILE_SURFEX
+USE MODD_IO_ll,       ONLY : TFILEDATA, NIO_VERB, NVERB_DEBUG, TFILE_SURFEX
 USE MODD_LUNIT,       ONLY : CLUOUT0, TPGDFILE, TLUOUT0
 USE MODD_LUNIT_n,     ONLY : CINIFILE, TINIFILE
 USE MODD_MNH_SURFEX_n
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index c598b4fd25b9b159ede18e277723afa97c6fb250..ba56be923a2fe744dca60ea16c2b259d146184a2 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -227,7 +227,7 @@ USE MODD_CH_MNHC_n
 USE MODD_PASPOL_n
 !$20140515
 USE MODD_VAR_ll, ONLY : NPROC
-USE MODD_IO_ll, ONLY: TFILEDATA,LIOCDF4,LLFIOUT,TFILE_SURFEX
+USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_SURFEX
 !
 USE MODE_GRIDCART         ! Executive modules
 USE MODE_GRIDPROJ
diff --git a/src/MNH/zoom_pgd.f90 b/src/MNH/zoom_pgd.f90
index 4c9498550b7d72c1c96f8d5c863ef8eefa9096a6..58b5344ff2713199207d7e22bea2e0b210830619 100644
--- a/src/MNH/zoom_pgd.f90
+++ b/src/MNH/zoom_pgd.f90
@@ -52,7 +52,7 @@
 !
 USE MODD_CONF,   ONLY : CPROGRAM, NMASDEV, NBUGFIX, CBIBUSER, &
                         L1D, L2D, LPACK
-USE MODD_IO_ll,  ONLY:  LIOCDF4,LLFIOUT,NIO_VERB,NVERB_DEBUG,TFILE_OUTPUTLISTING,TFILEDATA
+USE MODD_IO_ll,  ONLY:  NIO_VERB,NVERB_DEBUG,TFILE_OUTPUTLISTING,TFILEDATA
 USE MODD_LUNIT,  ONLY : CLUOUT0, TPGDFILE, TLUOUT0, TOUTDATAFILE
 USE MODD_PARAMETERS, ONLY : XUNDEF, NUNDEF, JPVEXT, JPHEXT, JPMODELMAX
 USE MODD_PARAM_n,     ONLY : CSURF