From fcaca3cb24ddf80e40699d8d551b7ed9935c83ce Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 27 Nov 2017 10:39:24 +0100
Subject: [PATCH] Philippe 27/11/2017: IO: do not use FD_ll structures any more
 (remove in next commit)

---
 src/LIB/SURCOUCHE/src/mode_fm.f90    |  55 ++-----
 src/LIB/SURCOUCHE/src/mode_io.f90    | 233 +++++++++++----------------
 src/LIB/SURCOUCHE/src/mode_mppdb.f90 |   1 -
 src/MNH/get_nb_procio_read_mnh.f90   |  20 +--
 src/MNH/get_nb_procio_write_mnh.f90  |  27 ++--
 5 files changed, 131 insertions(+), 205 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index d3ee12e4c..54d85bbc7 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -52,37 +52,37 @@ IF ( IP .EQ. 1 ) PRINT *,'INIT L1D,L2D,LPACK = ',L1D,L2D,LPACK
 END SUBROUTINE SET_FMPACK_ll
 
 SUBROUTINE FMLOOK_ll(HFILEM,HFIPRI,KNUMBR,KRESP)
-USE MODD_IO_ll, ONLY : ISTDOUT
-USE MODE_FD_ll, ONLY : FD_ll,GETFD
+!
+USE MODD_IO_ll, ONLY : ISTDOUT,TFILEDATA
+USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
+!
 CHARACTER(LEN=*), INTENT(IN)  :: HFILEM
 CHARACTER(LEN=*), INTENT(IN)  :: HFIPRI
 INTEGER,          INTENT(OUT) :: KNUMBR
 INTEGER,          INTENT(OUT) :: KRESP
-
-TYPE(FD_ll), POINTER :: TZFD, TZFIPRI
-
-TZFD=>GETFD(HFILEM)
-IF (ASSOCIATED(TZFD)) THEN
-  KNUMBR = TZFD%FLU
+!
+INTEGER :: IRESP
+TYPE(TFILEDATA),POINTER :: TZFILE
+!
+CALL PRINT_MSG(NVERB_DEBUG,'IO','FMLOOK_ll','called for '//TRIM(HFILEM))
+!
+TZFILE => NULL()
+CALL IO_FILE_FIND_BYNAME(TRIM(HFILEM),TZFILE,IRESP)
+!
+IF (IRESP==0) THEN
+  KNUMBR = TZFILE%NLU
   KRESP  = NOERROR
 ELSE 
   IF (HFILEM == HFIPRI) THEN
     KNUMBR = ISTDOUT
     KRESP  = NOERROR
   ELSE
-    TZFIPRI=>GETFD(HFIPRI)
-    IF (ASSOCIATED(TZFIPRI)) THEN
-      WRITE(TZFIPRI%FLU,*) 'Error FMLOOK_ll : file '&
-           & ,TRIM(HFILEM),' not found'
-    ELSE 
-      WRITE(ISTDOUT,*) 'Error FMLOOK_ll : file ',TRIM(HFILEM)&
-           & ,' not found'
-    END IF
+    CALL PRINT_MSG(NVERB_ERROR,'IO','FMLOOK_ll','file '//TRIM(HFILEM)//' not found')
     KRESP   = IOERROR
     KNUMBR  = -1
   END IF
 END IF
-
+!
 END SUBROUTINE FMLOOK_ll
 
 SUBROUTINE IO_FILE_OPEN_ll(TPFILE,KRESP,OPARALLELIO,HPOSITION,HSTATUS)
@@ -105,7 +105,6 @@ INTEGER :: IRESP,IRESP2
 INTEGER :: IMASDEV,IBUGFIX
 INTEGER,DIMENSION(3)    :: IMNHVERSION
 CHARACTER(LEN=12)       :: YMNHVERSION_FILE,YMNHVERSION_CURR
-TYPE(FD_ll), POINTER    :: TZFDLFI
 TYPE(TFIELDDATA)        :: TZFIELD
 TYPE(TFILEDATA),POINTER :: TZFILE_DES
 TYPE(TFILEDATA),POINTER :: TZFILE_DUMMY
@@ -193,26 +192,6 @@ SELECT CASE(TPFILE%CTYPE)
     !
     CALL FMOPEN_ll(TPFILE,IRESP,OPARALLELIO=OPARALLELIO)
     !
-    TZFDLFI=>GETFD(ADJUSTL(TRIM(TPFILE%CNAME)//'.lfi'))
-    IF (TRIM(TPFILE%CMODE) == 'READ' .AND. TPFILE%LMASTER) THEN
-      IF (LIOCDF4 .AND. .NOT.LLFIREAD) THEN
-        IF (TPFILE%NNCID<0) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','invalid NNCID for '//TRIM(TPFILE%CNAME))
-      ELSE
-        TPFILE%NLFIFLU = TZFDLFI%FLU
-        IF (TPFILE%NLFIFLU<0) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','invalid NLFIFLU for '//TRIM(TPFILE%CNAME))
-      ENDIF
-    ELSE IF (TRIM(TPFILE%CMODE) == 'WRITE' .AND. TPFILE%LMASTER) THEN
-      IF (LIOCDF4) THEN
-        IF (TPFILE%NNCID<0) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','invalid NNCID for '//TRIM(TPFILE%CNAME))
-      END IF
-      IF (.NOT.LIOCDF4 .OR. LLFIOUT) THEN
-        TPFILE%NLFIFLU = TZFDLFI%FLU
-        IF (TPFILE%NLFIFLU<0) CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','invalid NLFIFLU for '//TRIM(TPFILE%CNAME))
-      END IF
-    ELSE IF (TRIM(TPFILE%CMODE) /= 'READ' .AND. TRIM(TPFILE%CMODE) /= 'WRITE') THEN
-      CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','unknown opening mode ('//TRIM(TPFILE%CMODE)//') for '//TRIM(TPFILE%CNAME))
-    END IF
-    !
     !Compare MNHVERSION of file with current version
     IF (TRIM(TPFILE%CMODE) == 'READ') THEN
       IMNHVERSION(:) = 0
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index c2bb99072..4ee081183 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -250,7 +250,7 @@ CONTAINS
     TYPE(FD_ll), POINTER                  :: TZFD_IOZ  
     CHARACTER(len=128)                    :: YFILE_IOZ
     INTEGER(KIND=LFI_INT)                 :: IRESOU,IMELEV,INPRAR
-    INTEGER(KIND=LFI_INT)                 :: INUMBR8,ININAR8
+    INTEGER(KIND=LFI_INT)                 :: ININAR8
     LOGICAL(KIND=LFI_INT)                 :: GNAMFI8,GFATER8,GSTATS8 
     !JUANZ
 
@@ -425,79 +425,79 @@ CONTAINS
        IF (TPFILE%LMASTER) THEN
           !! I/O processor case
 
-          TZFD%FLU = IONEWFLU()
+          TPFILE%NLU = IONEWFLU()
 #ifdef MNH_VPP
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME),&
-               STATUS=STATUS,       &
-               ACCESS=ACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=FORM,           &
-               RECL=IRECSIZE,       &
-               BLANK=BLANK,         &
-               POSITION=POSITION,   &
-               ACTION=YACTION,      &
-               DELIM=DELIM,         &
+          OPEN(UNIT=TPFILE%NLU,        &
+               FILE=TRIM(TPFILE%CNAME),&
+               STATUS=STATUS,          &
+               ACCESS=ACCESS,          &
+               IOSTAT=IOS,             &
+               FORM=FORM,              &
+               RECL=IRECSIZE,          &
+               BLANK=BLANK,            &
+               POSITION=POSITION,      &
+               ACTION=YACTION,         &
+               DELIM=DELIM,            &
                PAD=PAD)
 
 #else
 #if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
           !JUAN : 31/03/2000 modif pour acces direct
           IF (YACCESS=='DIRECT') THEN
-             OPEN(UNIT=TZFD%FLU,       &
-                  FILE=TRIM(TZFD%NAME),&
-                  STATUS=YSTATUS,       &
-                  ACCESS=YACCESS,       &
-                  IOSTAT=IOS,          &
-                  FORM=YFORM,           &
-                  RECL=YRECL,           &
+             OPEN(UNIT=TPFILE%NLU,        &
+                  FILE=TRIM(TPFILE%CNAME),&
+                  STATUS=YSTATUS,         &
+                  ACCESS=YACCESS,         &
+                  IOSTAT=IOS,             &
+                  FORM=YFORM,             &
+                  RECL=YRECL,             &
                   ACTION=YACTION)
           ELSE
              IF (YFORM=="FORMATTED") THEN
                IF (YACTION=='READ') THEN
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     BLANK=YBLANK,         &
-                     POSITION=YPOSITION,   &
-                     ACTION=YACTION,      &
-                     !DELIM=YDELIM,         & !Philippe: commented because bug with GCC 5.X
+                OPEN(UNIT=TPFILE%NLU,        &
+                     FILE=TRIM(TPFILE%CNAME),&
+                     STATUS=YSTATUS,         &
+                     ACCESS=YACCESS,         &
+                     IOSTAT=IOS,             &
+                     FORM=YFORM,             &
+                     RECL=YRECL,             &
+                     BLANK=YBLANK,           &
+                     POSITION=YPOSITION,     &
+                     ACTION=YACTION,         &
+                     !DELIM=YDELIM,          & !Philippe: commented because bug with GCC 5.X
                      PAD=YPAD)
                ELSE
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     BLANK=YBLANK,         &
-                     POSITION=YPOSITION,   &
-                     ACTION=YACTION,      &
-                     DELIM=YDELIM,         &
+                OPEN(UNIT=TPFILE%NLU,        &
+                     FILE=TRIM(TPFILE%CNAME),&
+                     STATUS=YSTATUS,         &
+                     ACCESS=YACCESS,         &
+                     IOSTAT=IOS,             &
+                     FORM=YFORM,             &
+                     RECL=YRECL,             &
+                     BLANK=YBLANK,           &
+                     POSITION=YPOSITION,     &
+                     ACTION=YACTION,         &
+                     DELIM=YDELIM,           &
                      PAD=YPAD)
                ENDIF
              ELSE
-                OPEN(UNIT=TZFD%FLU,       &
-                     FILE=TRIM(TZFD%NAME),&
-                     STATUS=YSTATUS,       &
-                     ACCESS=YACCESS,       &
-                     IOSTAT=IOS,          &
-                     FORM=YFORM,           &
-                     RECL=YRECL,           &
-                     POSITION=YPOSITION,   &
+                OPEN(UNIT=TPFILE%NLU,        &
+                     FILE=TRIM(TPFILE%CNAME),&
+                     STATUS=YSTATUS,         &
+                     ACCESS=YACCESS,         &
+                     IOSTAT=IOS,             &
+                     FORM=YFORM,             &
+                     RECL=YRECL,             &
+                     POSITION=YPOSITION,     &
                      ACTION=YACTION)
              ENDIF
           ENDIF
 
 
           !print*,' OPEN_ll'
-          !print*,' OPEN(UNIT=',TZFD%FLU       
-          !print*,' FILE=',TRIM(TZFD%NAME)
+          !print*,' OPEN(UNIT=',TPFILE%NLU
+          !print*,' FILE=',TRIM(TPFILE%CNAME)
           !print*,' STATUS=',YSTATUS       
           !print*,' ACCESS=',YACCESS
           !print*,' IOSTAT=',IOS
@@ -509,17 +509,17 @@ CONTAINS
           !print*,' DELIM=',YDELIM
           !print*,' PAD=',YPAD
 #else
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME),&
-               STATUS=STATUS,       &
-               ACCESS=ACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=FORM,           &
-               RECL=RECL,           &
-               BLANK=BLANK,         &
-               POSITION=POSITION,   &
-               ACTION=YACTION,      &
-               DELIM=DELIM,         &
+          OPEN(UNIT=TPFILE%NLU,        &
+               FILE=TRIM(TPFILE%CNAME),&
+               STATUS=STATUS,          &
+               ACCESS=ACCESS,          &
+               IOSTAT=IOS,             &
+               FORM=FORM,              &
+               RECL=RECL,              &
+               BLANK=BLANK,            &
+               POSITION=POSITION,      &
+               ACTION=YACTION,         &
+               DELIM=DELIM,            &
                PAD=PAD)
 #endif
 
@@ -528,21 +528,21 @@ CONTAINS
        ELSE 
           !! NON I/O processors case
           IOS = 0
-          TZFD%FLU = JPFNULL
+          TPFILE%NLU = JPFNULL
        END IF
 
-      TPFILE%NLU = TZFD%FLU
+      TZFD%FLU = TPFILE%NLU
 
     CASE('SPECIFIC')
-       TZFD%FLU = IONEWFLU()
+       TPFILE%NLU = IONEWFLU()
        TPFILE%NMASTER_RANK  = -1
        TPFILE%LMASTER       = .TRUE. !Every process use the file
        TPFILE%LMULTIMASTERS = .TRUE.
        TPFILE%NSUBFILES_IOZ = 0
 
 #ifdef MNH_VPP
-       OPEN(UNIT=TZFD%FLU,                      &
-            FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
+       OPEN(UNIT=TPFILE%NLU,                       &
+            FILE=TRIM(TPFILE%CNAME)//SUFFIX(".P"), &
             STATUS=STATUS,                         &
             ACCESS=ACCESS,                         &
             IOSTAT=IOS,                            &
@@ -557,18 +557,18 @@ CONTAINS
 #else
 #if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
        IF (ACCESS=='DIRECT') THEN
-          OPEN(UNIT=TZFD%FLU,       &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
-               STATUS=YSTATUS,       &
-               ACCESS=YACCESS,       &
-               IOSTAT=IOS,          &
-               FORM=YFORM,           &
-               RECL=YRECL,           &
+          OPEN(UNIT=TPFILE%NLU,                       &
+               FILE=TRIM(TPFILE%CNAME)//SUFFIX(".P"), &
+               STATUS=YSTATUS,                        &
+               ACCESS=YACCESS,                        &
+               IOSTAT=IOS,                            &
+               FORM=YFORM,                            &
+               RECL=YRECL,                            &
                ACTION=YACTION)
        ELSE
         IF (YACTION=='READ') THEN
-          OPEN(UNIT=TZFD%FLU,                      &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
+          OPEN(UNIT=TPFILE%NLU,                        &
+               FILE=TRIM(TPFILE%CNAME)//SUFFIX(".P"),  &
                STATUS=YSTATUS,                         &
                ACCESS=YACCESS,                         &
                IOSTAT=IOS,                             &
@@ -580,8 +580,8 @@ CONTAINS
                !DELIM=YDELIM,         & !Philippe: commented because bug with GCC 5.X
                PAD=YPAD)
          ELSE
-          OPEN(UNIT=TZFD%FLU,                      &
-               FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
+          OPEN(UNIT=TPFILE%NLU,                        &
+               FILE=TRIM(TPFILE%CNAME)//SUFFIX(".P"),  &
                STATUS=YSTATUS,                         &
                ACCESS=YACCESS,                         &
                IOSTAT=IOS,                             &
@@ -595,8 +595,8 @@ CONTAINS
          ENDIF
        ENDIF
 #else
-       OPEN(UNIT=TZFD%FLU,                      &
-            FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
+       OPEN(UNIT=TPFILE%NLU,                       &
+            FILE=TRIM(TPFILE%CNAME)//SUFFIX(".P"), &
             STATUS=STATUS,                         &
             ACCESS=ACCESS,                         &
             IOSTAT=IOS,                            &
@@ -611,7 +611,7 @@ CONTAINS
 
 #endif
 
-       TPFILE%NLU = TZFD%FLU
+       TZFD%FLU = TPFILE%NLU
 
 
     CASE('DISTRIBUTED')
@@ -621,14 +621,14 @@ CONTAINS
        TPFILE%NSUBFILES_IOZ = 0
 
        IF (TPFILE%LMASTER) THEN
-          TZFD%FLU = IONEWFLU()
+          TPFILE%NLU = IONEWFLU()
        ELSE 
           !! NON I/O processors case
           IOS = 0
-          TZFD%FLU = -1
+          TPFILE%NLU = -1
        END IF
 
-       TPFILE%NLU = TZFD%FLU
+       TZFD%FLU = TPFILE%NLU
 
 
     CASE('IO_ZSPLIT')
@@ -649,14 +649,14 @@ CONTAINS
 #else
        IF (TPFILE%LMASTER) THEN
 #endif
-             TZFD%FLU = IONEWFLU()
+             TPFILE%NLFIFLU = IONEWFLU()
        ELSE 
           !! NON I/O processors OR NetCDF read case 
           IOS = 0
-          TZFD%FLU = -1
+          TPFILE%NLFIFLU = -1
        END IF
 
-       TPFILE%NLFIFLU = TZFD%FLU
+       TZFD%FLU = TPFILE%NLFIFLU
 
        IF (TPFILE%NSUBFILES_IOZ > 0) THEN
           IF (.NOT.ALLOCATED(TPFILE%TFILES_IOZ)) THEN
@@ -725,8 +725,8 @@ CONTAINS
                    ! LFI case
                    ! Open LFI File for reading
                    !this proc must write on this file open it ...    
-                   TZFD_IOZ%FLU       = IONEWFLU()
-                   TZSPLITFILE%NLFIFLU = TZFD_IOZ%FLU
+                   TZSPLITFILE%NLFIFLU = IONEWFLU()
+                   TZFD_IOZ%FLU = TZSPLITFILE%NLFIFLU
                    !! LFI-File case
                    IRESOU = 0
                    GNAMFI8 = .TRUE.
@@ -741,9 +741,8 @@ CONTAINS
                    !
                    ! JUAN open lfi file temporary modif
                    !
-                   INUMBR8 = TZFD_IOZ%FLU
                    CALL LFIOUV(IRESOU,     &
-                        INUMBR8,           &
+                        TZSPLITFILE%NLFIFLU, &
                         GNAMFI8,           &
                         TZSPLITFILE%CNAME, &
                         "UNKNOWN",         &
@@ -756,7 +755,9 @@ CONTAINS
                 END IF
              ENDIF
              !
-             CALL UPDATE_METADATA(TZSPLITFILE) !Done outside of the IF == ISP
+             TZSPLITFILE%LOPENED = .TRUE.
+             TZSPLITFILE%NOPEN         = TZSPLITFILE%NOPEN         + 1
+             TZSPLITFILE%NOPEN_CURRENT = TZSPLITFILE%NOPEN_CURRENT + 1
              !
           ENDDO
        END IF
@@ -764,8 +765,6 @@ CONTAINS
 
     END SELECT
 
-!    CALL UPDATE_METADATA(TPFILE)
-
     TPFILE%NMPICOMM = ICOMM
 
     IOSTAT = IOS
@@ -780,50 +779,6 @@ CONTAINS
 
     END FUNCTION SUFFIX
 
-    SUBROUTINE UPDATE_METADATA(TPFILEMD)
-      TYPE(TFILEDATA), INTENT(INOUT), OPTIONAL :: TPFILEMD
-
-      TYPE(FD_ll), POINTER  :: TZFDLFI
-
-      IF(.NOT.PRESENT(TPFILEMD)) RETURN
-
-      TPFILEMD%LOPENED = .TRUE.
-      TPFILEMD%NOPEN         = TPFILEMD%NOPEN         + 1
-      TPFILEMD%NOPEN_CURRENT = TPFILEMD%NOPEN_CURRENT + 1
-
-      NULLIFY(TZFDLFI)
-
-      TZFDLFI=>GETFD(ADJUSTL(TRIM(TPFILEMD%CNAME)//'.lfi'))
-
-      IF(.NOT.ASSOCIATED(TZFDLFI)) &
-        CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','TZFDLFI not found for '&
-                                               //TRIM(TPFILEMD%CNAME))
-
-      IF (TRIM(TPFILEMD%CMODE) == 'READ' .AND. TPFILEMD%LMASTER) THEN
-        IF (LIOCDF4 .AND. .NOT.LLFIREAD) THEN
-          IF (TPFILEMD%NNCID<0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','invalid NNCID for '&
-                                               //TRIM(TPFILEMD%CNAME))
-        ELSE
-          TPFILEMD%NLFIFLU = TZFDLFI%FLU
-          IF (TPFILEMD%NLFIFLU<0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','invalid NLFIFLU for '&
-                                                //TRIM(TPFILEMD%CNAME))
-        ENDIF
-      ELSE IF (TRIM(TPFILEMD%CMODE) == 'WRITE' .AND. TPFILEMD%LMASTER) THEN
-        IF (LIOCDF4) THEN
-          IF (TPFILEMD%NNCID<0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','invalid NNCID for '&
-                                               //TRIM(TPFILEMD%CNAME))
-        END IF
-        IF (.NOT.LIOCDF4 .OR. LLFIOUT) THEN
-          TPFILEMD%NLFIFLU = TZFDLFI%FLU
-          IF (TPFILEMD%NLFIFLU<0) CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','invalid NLFIFLU for '&
-                                                 //TRIM(TPFILEMD%CNAME))
-        END IF
-      ELSE IF (TRIM(TPFILEMD%CMODE) /= 'READ' .AND. TRIM(TPFILEMD%CMODE) /= 'WRITE') THEN
-        CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_ll::UPDATE_METADATA','unknown opening mode ('//TRIM(TPFILEMD%CMODE)//') for '&
-                                                          //TRIM(TPFILEMD%CNAME))
-      END IF
-
-    END SUBROUTINE UPDATE_METADATA
   END SUBROUTINE OPEN_ll
 
   SUBROUTINE CLOSE_ll(TPFILE,IOSTAT,STATUS,OPARALLELIO)
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index 49c816ccd..1e27d47b0 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -684,7 +684,6 @@ CONTAINS
 
           TX3DP=>Z3D
 
-          !CALL FM_WRIT_ll(TZFD%FLU,HRECFM,.TRUE.,SIZE(TX3DP),TX3DP,TZFMH,IRESP)
        ELSE
           ! Other processors
           CALL GET_DISTRIB_LB(HLBTYPE,ISP,'LOC','WRITE',KRIM,IIB,IIE,IJB,IJE)
diff --git a/src/MNH/get_nb_procio_read_mnh.f90 b/src/MNH/get_nb_procio_read_mnh.f90
index 37ee6e815..717dde4b8 100644
--- a/src/MNH/get_nb_procio_read_mnh.f90
+++ b/src/MNH/get_nb_procio_read_mnh.f90
@@ -36,10 +36,10 @@
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODE_FD_ll,        ONLY : GETFD,JPFINL,FD_ll
-USE MODE_FM,           ONLY : FMLOOK_ll
 USE MODD_IO_SURF_MNH,  ONLY : COUT, TPINFILE
 !
+USE MODE_FM,           ONLY : FMLOOK_ll
+!
 IMPLICIT NONE
 !
 !*      0.    DECLARATIONS
@@ -47,26 +47,20 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-!CHARACTER(LEN=*), INTENT(IN)  :: HFILEM  ! FM-file name
-INTEGER,          INTENT(OUT) :: KNB_PROCIO    ! number of processes used for IO
-INTEGER,          INTENT(OUT) :: KRESP   ! return-code 
+INTEGER, INTENT(OUT) :: KNB_PROCIO ! number of processes used for IO
+INTEGER, INTENT(OUT) :: KRESP      ! return-code
 !
 !*      0.2   Declarations of local variables
 !
 !----------------------------------------------------------------
-CHARACTER(LEN=JPFINL)        :: YFNLFI
-TYPE(FD_ll), POINTER         :: TZFD
-INTEGER                      :: IRESP
-INTEGER                      :: ILUPRI
+INTEGER :: IRESP
+INTEGER :: ILUPRI
 !
 !*      1. get the number of processes used for IO
 !
 IRESP = 0
-YFNLFI=TRIM(ADJUSTL(TPINFILE%CNAME))//'.lfi'
 !
-TZFD=>GETFD(YFNLFI)
-IF (ASSOCIATED(TZFD)) THEN
-!!$  KNB_PROCIO = TZFD%nb_procio
+IF (ASSOCIATED(TPINFILE)) THEN
   KNB_PROCIO = 2
 ELSE
   IRESP = -61
diff --git a/src/MNH/get_nb_procio_write_mnh.f90 b/src/MNH/get_nb_procio_write_mnh.f90
index e1c41f7b4..4d76a142c 100644
--- a/src/MNH/get_nb_procio_write_mnh.f90
+++ b/src/MNH/get_nb_procio_write_mnh.f90
@@ -36,9 +36,11 @@
 !!
 !-------------------------------------------------------------------------------
 !
-USE MODE_FD_ll,        ONLY : GETFD,JPFINL,FD_ll
-USE MODE_FM,           ONLY : FMLOOK_ll
-USE MODD_IO_SURF_MNH,  ONLY : COUT, COUTFILE
+USE MODD_IO_ll,            ONLY : TFILEDATA
+USE MODD_IO_SURF_MNH,      ONLY : COUT, COUTFILE
+!
+USE MODE_FM,               ONLY : FMLOOK_ll
+USE MODE_IO_MANAGE_STRUCT, ONLY : IO_FILE_FIND_BYNAME
 !
 IMPLICIT NONE
 !
@@ -47,26 +49,23 @@ IMPLICIT NONE
 !
 !*      0.1   Declarations of arguments
 !
-!CHARACTER(LEN=*), INTENT(IN)  :: HFILEM  ! FM-file name
-INTEGER,          INTENT(OUT) :: KNB_PROCIO    ! number of processes used for IO
-INTEGER,          INTENT(OUT) :: KRESP   ! return-code 
+INTEGER, INTENT(OUT) :: KNB_PROCIO ! number of processes used for IO
+INTEGER, INTENT(OUT) :: KRESP      ! return-code
 !
 !*      0.2   Declarations of local variables
 !
 !----------------------------------------------------------------
-CHARACTER(LEN=JPFINL)        :: YFNLFI
-TYPE(FD_ll), POINTER         :: TZFD
-INTEGER                      :: IRESP
-INTEGER                      :: ILUPRI
+INTEGER                 :: IRESP
+INTEGER                 :: ILUPRI
+TYPE(TFILEDATA),POINTER :: TZFILE
 !
 !*      1. get the number of processes used for IO
 !
 IRESP = 0
-YFNLFI=TRIM(ADJUSTL(COUTFILE))//'.lfi'
 !
-TZFD=>GETFD(YFNLFI)
-IF (ASSOCIATED(TZFD)) THEN
-!!$  KNB_PROCIO = TZFD%nb_procio
+TZFILE => NULL()
+CALL IO_FILE_FIND_BYNAME(TRIM(COUTFILE),TZFILE,IRESP)
+IF (IRESP==0) THEN
   KNB_PROCIO = 2
 ELSE
   IRESP = -61
-- 
GitLab