From e8f31bffdaa9134b12bd39a7936c78803114ceaa Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 16 Nov 2017 14:12:41 +0100
Subject: [PATCH] Philippe 16/11/2017: IO: TPFILE is now a mandatory argument
 for OPEN_ll

---
 src/LIB/SURCOUCHE/src/mode_fm.f90 | 53 ++++++++++++++-----------------
 src/LIB/SURCOUCHE/src/mode_io.f90 | 24 +++++++-------
 2 files changed, 35 insertions(+), 42 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index bc93c55a7..452f26a95 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -176,67 +176,62 @@ IF (IRESP/=0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_FILE_OPEN_ll','file '//TRIM(TP
 SELECT CASE(TPFILE%CTYPE)
   !Chemistry input files
   CASE('CHEMINPUT')
-    CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                 POSITION='REWIND',STATUS='OLD',ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE)
+    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
+                 POSITION='REWIND',STATUS='OLD',ACTION=TPFILE%CMODE,MODE='GLOBAL')
 
 
   !Chemistry tabulation files
   CASE('CHEMTAB')
-    CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                 ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE)
+    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
+                 ACTION=TPFILE%CMODE,MODE='GLOBAL')
 
 
   !GPS files
   CASE('GPS')
-    CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='SPECIFIC',TPFILE=TPFILE)
+    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
+                ACTION=TPFILE%CMODE,MODE='SPECIFIC')
 
 
   !Meteo files
   CASE('METEO')
-   CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='UNFORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='GLOBAL',RECL=100000000,TPFILE=TPFILE)
+   CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='UNFORMATTED', &
+                ACTION=TPFILE%CMODE,MODE='GLOBAL',RECL=100000000)
 
 
   !Namelist files
   CASE('NML')
-    CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-        DELIM='QUOTE',MODE='GLOBAL',TPFILE=TPFILE)
+    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+        DELIM='QUOTE',MODE='GLOBAL')
 
 
   !OUTPUTLISTING files
   CASE('OUTPUTLISTING')
-    CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='GLOBAL',TPFILE=TPFILE)
+    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
+                ACTION=TPFILE%CMODE,MODE='GLOBAL')
 
 
   !SURFACE_DATA files
   CASE('SURFACE_DATA')
     IF (TPFILE%CFORM=='FORMATTED') THEN
-      CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                  FORM=TPFILE%CFORM,                                                   &
-                  MODE='GLOBAL',TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+                  FORM=TPFILE%CFORM,MODE='GLOBAL')
     ELSE IF (TPFILE%CACCESS=='DIRECT') THEN
-      CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                  FORM=TPFILE%CFORM,ACCESS=TPFILE%CACCESS,RECL=TPFILE%NRECL,           &
-                  MODE='GLOBAL',TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+                  FORM=TPFILE%CFORM,ACCESS=TPFILE%CACCESS,RECL=TPFILE%NRECL,MODE='GLOBAL')
     ELSE
-      CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                  FORM=TPFILE%CFORM,                                                   &
-                  MODE='GLOBAL',TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+                  FORM=TPFILE%CFORM,MODE='GLOBAL')
     END IF
 
 
   !Text files
   CASE('TXT')
     IF(TPFILE%NRECL>0) THEN
-      CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                   FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,                 &
-                   RECL=TPFILE%NRECL,MODE='GLOBAL',TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+                   FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,RECL=TPFILE%NRECL,MODE='GLOBAL')
     ELSE
-      CALL OPEN_ll(UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                   FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,                 &
-                   MODE='GLOBAL',TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
+                   FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,MODE='GLOBAL')
     END IF
 
 
@@ -245,8 +240,8 @@ SELECT CASE(TPFILE%CTYPE)
     IF(TPFILE%CTYPE/='OUTPUT') THEN
       CALL IO_FILE_ADD2LIST(TZFILE_DES,TRIM(TPFILE%CNAME)//'.des','DES',TPFILE%CMODE,OOLD=.TRUE.) !OOLD=T because the file may already be in the list
       CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','OPEN_ll for '//TRIM(TPFILE%CNAME)//'.des')
-      CALL OPEN_ll(UNIT=TZFILE_DES%NLU,FILE=TRIM(TPFILE%CNAME)//'.des',FORM='FORMATTED',ACTION=TPFILE%CMODE,DELIM&
-        & ='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO,TPFILE=TPFILE)
+      CALL OPEN_ll(TPFILE,UNIT=TZFILE_DES%NLU,FILE=TRIM(TPFILE%CNAME)//'.des',FORM='FORMATTED',ACTION=TPFILE%CMODE, &
+                   DELIM='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO)
       TZFILE_DES%LOPENED       = .TRUE.
       TZFILE_DES%NOPEN_CURRENT = TZFILE_DES%NOPEN_CURRENT + 1
       TZFILE_DES%NOPEN         = TZFILE_DES%NOPEN + 1
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 50829cae7..154e33760 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -203,7 +203,9 @@ CONTAINS
 
   END SUBROUTINE INITIO_ll
 
-  SUBROUTINE OPEN_ll(UNIT,    &
+  SUBROUTINE OPEN_ll(&
+       TPFILE,  &
+       UNIT,    &
        FILE,    &
        MODE,    &
        LFIPAR,  &
@@ -220,8 +222,7 @@ CONTAINS
        PAD,      &
        KNB_PROCIO,& 
        KMELEV,&
-       OPARALLELIO,&
-       TPFILE)
+       OPARALLELIO)
 #if defined(MNH_IOCDF4)
   USE MODD_NETCDF, ONLY:IDCDF_KIND
   USE MODE_NETCDF
@@ -229,6 +230,7 @@ CONTAINS
   USE MODD_IO_ll
   USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_ADD2LIST, IO_FILE_FIND_BYNAME
 
+    TYPE(TFILEDATA), INTENT(INOUT)         :: TPFILE
     INTEGER,         INTENT(OUT)           :: UNIT  !! Different from fortran OPEN
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: FILE
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: MODE
@@ -249,7 +251,6 @@ CONTAINS
     INTEGER(KIND=LFI_INT), INTENT(IN),  OPTIONAL :: KMELEV    
     LOGICAL,         INTENT(IN),  OPTIONAL :: OPARALLELIO
     !JUANZ
-    TYPE(TFILEDATA), INTENT(INOUT), OPTIONAL :: TPFILE
     !
     ! local var
     !
@@ -653,8 +654,6 @@ CONTAINS
           TZFD%FLU = -1
        END IF
        IF (TZFD%NB_PROCIO .GT. 1 ) THEN
-          IF (.NOT.PRESENT(TPFILE)) CALL PRINT_MSG(NVERB_WARNING,'IO','OPEN_ll','TPFILE not provided for IO_ZSPLIT case for file '&
-                                                   //TRIM(FILE))
           DO ifile=0,TZFD%NB_PROCIO-1
              irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO)
              write(cfile ,'(".Z",i3.3)') ifile+1
@@ -668,13 +667,11 @@ CONTAINS
              TZFD_IOZ%FLU       = -1
              TZFD_IOZ%PARAM     =>LFIPAR
 
-             IF (PRESENT(TPFILE)) THEN
-               CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.)
+             CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//TRIM(CFILE),TZSPLITFILE,IRESP,OOLD=.FALSE.)
 
-               IF (IRESP/=0) THEN !File not yet in filelist => add it (nothing to do if already in list)
-                 CALL IO_FILE_ADD2LIST(TZSPLITFILE,TRIM(TPFILE%CNAME)//TRIM(CFILE),TPFILE%CTYPE,TPFILE%CMODE, &
-                                       KLFINPRAR=TPFILE%NLFINPRAR,KLFITYPE=TPFILE%NLFITYPE,KLFIVERB=TPFILE%NLFIVERB)
-               END IF
+             IF (IRESP/=0) THEN !File not yet in filelist => add it (nothing to do if already in list)
+               CALL IO_FILE_ADD2LIST(TZSPLITFILE,TRIM(TPFILE%CNAME)//TRIM(CFILE),TPFILE%CTYPE,TPFILE%CMODE, &
+                                     KLFINPRAR=TPFILE%NLFINPRAR,KLFITYPE=TPFILE%NLFITYPE,KLFIVERB=TPFILE%NLFIVERB)
              END IF
 
              IF ( irank_procio .EQ. ISP ) THEN
@@ -743,7 +740,7 @@ CONTAINS
                    !KNINAR = ININAR8
                 END IF
 
-                IF (PRESENT(TPFILE)) CALL UPDATE_METADATA(TZSPLITFILE)
+                CALL UPDATE_METADATA(TZSPLITFILE)
 
              ENDIF
           ENDDO
@@ -751,6 +748,7 @@ CONTAINS
 
 
     END SELECT
+print *,'PW: TPFILE%CNAME=',TPFILE%CNAME,'master,multimasters=',TPFILE%LMASTER,TPFILE%LMULTIMASTERS
 
 !PW: not done here because TZFDLFI%CDF not yet set
 !    CALL UPDATE_METADATA(TPFILE)
-- 
GitLab