From 98ec2f8b62a1ed6398c2393dca155afecf89eaca Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 24 Nov 2017 15:08:30 +0100
Subject: [PATCH] Philippe 24/11/2017: IO: removed MODE field of FD_ll

---
 src/LIB/SURCOUCHE/src/mode_fd.f90 |  1 -
 src/LIB/SURCOUCHE/src/mode_fm.f90 |  1 -
 src/LIB/SURCOUCHE/src/mode_io.f90 | 70 ++++++++++++++++---------------
 3 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_fd.f90 b/src/LIB/SURCOUCHE/src/mode_fd.f90
index 4ec000680..364377986 100644
--- a/src/LIB/SURCOUCHE/src/mode_fd.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fd.f90
@@ -24,7 +24,6 @@ INTEGER, PARAMETER :: JPFINL = 32 ! File name length
 TYPE FD_ll
   CHARACTER(LEN=JPFINL)    :: NAME  ! File name 
   INTEGER                  :: FLU   ! Fortran logical unit
-  CHARACTER(LEN=15)        :: MODE  ! Flag mode acces ('distrib','global','specific')   
   TYPE(FD_ll),     POINTER :: NEXT
 END TYPE FD_ll
 
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index e811f4d4d..b6e197368 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -73,7 +73,6 @@ IF (GSMONOPROC) THEN ! sequential execution
     !! Add a new FD element
     TZFD=>NEWFD()
     TZFD%NAME = HFILEM
-    TZFD%MODE = 'GLOBAL'
     TZFD%FLU   = IONEWFLU()
     !
     KNUMBR = TZFD%FLU
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 22d6e657e..c2bb99072 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -357,7 +357,6 @@ CONTAINS
 
 
     TZFD%NAME = TPFILE%CNAME
-    TZFD%MODE = YMODE
 
 #if defined(MNH_SX5) || defined(MNH_SP4) || defined(NAGf95) || defined(MNH_LINUX)
     !JUAN
@@ -671,7 +670,6 @@ CONTAINS
              YFILE_IOZ           = TRIM(TPFILE%CNAME)//CFILE//".lfi"
              TZFD_IOZ           =>NEWFD()
              TZFD_IOZ%NAME      = YFILE_IOZ
-             TZFD_IOZ%MODE      = 'IO_ZSPLIT'
              TZFD_IOZ%FLU       = -1
 
              CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.)
@@ -841,7 +839,7 @@ CONTAINS
 
     TYPE(FD_ll), POINTER :: TZFD
 
-    INTEGER :: IERR, IGLOBALERR, IRESP
+    INTEGER :: IERR, IGLOBALERR, IGLOBALERR2, IRESP, IRESP2
 
     CHARACTER(LEN=100)                    :: STATUSL
     INTEGER                               :: IFILE
@@ -875,46 +873,50 @@ CONTAINS
        RETURN
     END IF
 
-    IRESP      = 0
-    IGLOBALERR = 0
+    IRESP       = 0
+    IRESP2      = 0
+    IGLOBALERR  = 0
+    IGLOBALERR2 = 0
     IF (PRESENT(STATUS))  THEN
        STATUSL = STATUS
     ELSE
        STATUSL = "KEEP"
     ENDIF
 
-    SELECT CASE(TZFD%MODE)
-    CASE('GLOBAL','SPECIFIC')
-       IF (TPFILE%LMASTER) THEN
-          CLOSE(UNIT=TPFILE%NLU, IOSTAT=IRESP,STATUS=STATUSL)
-          CALL IOFREEFLU(TPFILE%NLU)
-       END IF
-       CALL MPI_ALLREDUCE(IRESP,IGLOBALERR,1,MPI_INTEGER,MPI_BOR,TPFILE%NMPICOMM,IERR)
-    CASE('DISTRIBUTED')
-       ! nothing to close with FM-Files
-
-    CASE('IO_ZSPLIT')
-       !
-       ! close LFI file in the different PROC
-       !
-       IF( GPARALLELIO ) THEN
-          DO IFILE=1,TPFILE%NSUBFILES_IOZ
-             TZFILE => TPFILE%TFILES_IOZ(IFILE)%TFILE
-             IF (TPFILE%LMASTER) THEN
-                IF (TZFILE%NLFIFLU > 0) THEN !if LFI
-                   CALL LFIFER(IRESP8,TZFILE%NLFIFLU,YSTATU)
-                   CALL IOFREEFLU(INT(TPFILE%NLFIFLU))
-                   IRESP = IRESP8
-                END IF
-                IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS)
-             END IF
-          END DO
-       END IF
-    END SELECT
+    IF (TPFILE%LMASTER) THEN
+      IF (TPFILE%NLU>0 .AND. TPFILE%NLU/=JPFNULL) THEN
+        CLOSE(UNIT=TPFILE%NLU, IOSTAT=IRESP,STATUS=STATUSL)
+        CALL IOFREEFLU(TPFILE%NLU)
+      END IF
+    END IF
+    !
+    IF( GPARALLELIO ) THEN
+      DO IFILE=1,TPFILE%NSUBFILES_IOZ
+        TZFILE => TPFILE%TFILES_IOZ(IFILE)%TFILE
+        IF (TPFILE%LMASTER) THEN
+          IF (TZFILE%NLFIFLU > 0) THEN !if LFI
+            CALL LFIFER(IRESP8,TZFILE%NLFIFLU,YSTATU)
+            CALL IOFREEFLU(INT(TPFILE%NLFIFLU))
+            IRESP2 = IRESP8
+          END IF
+          IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS)
+        END IF
+      END DO
+      !
+      CALL MPI_ALLREDUCE(IRESP2,IGLOBALERR2,1,MPI_INTEGER,MPI_BOR,TPFILE%NMPICOMM,IERR)
+    END IF
+    !
+    CALL MPI_ALLREDUCE(IRESP, IGLOBALERR, 1,MPI_INTEGER,MPI_BOR,TPFILE%NMPICOMM,IERR)
 
     CALL DELFD(TZFD)
 
-    IF (PRESENT(IOSTAT)) IOSTAT = IGLOBALERR
+    IF (PRESENT(IOSTAT)) THEN
+      IF (IGLOBALERR/=0) THEN
+        IOSTAT = IGLOBALERR
+      ELSE
+        IOSTAT = IGLOBALERR2
+      END IF
+    END IF
 
   END SUBROUTINE CLOSE_ll
 
-- 
GitLab