diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index d309cb9c157cfe295dcc8d6c038abe39abed3f7b..7740ed8aa007416ee15e215c7061d9ec88ce26f4 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -176,62 +176,51 @@ 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(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                 POSITION='REWIND',STATUS='OLD',ACTION=TPFILE%CMODE,MODE='GLOBAL')
+    CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',POSITION='REWIND',STATUS='OLD',MODE='GLOBAL')
 
 
   !Chemistry tabulation files
   CASE('CHEMTAB')
-    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                 ACTION=TPFILE%CMODE,MODE='GLOBAL')
+    CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',MODE='GLOBAL')
 
 
   !GPS files
   CASE('GPS')
-    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='SPECIFIC')
+    CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',MODE='SPECIFIC')
 
 
   !Meteo files
   CASE('METEO')
-   CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='UNFORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='GLOBAL',RECL=100000000)
+   CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='UNFORMATTED',MODE='GLOBAL',RECL=100000000)
 
 
   !Namelist files
   CASE('NML')
-    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-        DELIM='QUOTE',MODE='GLOBAL')
+    CALL OPEN_ll(TPFILE,IOSTAT=IRESP,DELIM='QUOTE',MODE='GLOBAL')
 
 
   !OUTPUTLISTING files
   CASE('OUTPUTLISTING')
-    CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,FORM='FORMATTED', &
-                ACTION=TPFILE%CMODE,MODE='GLOBAL')
+    CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',MODE='GLOBAL')
 
 
   !SURFACE_DATA files
   CASE('SURFACE_DATA')
     IF (TPFILE%CFORM=='FORMATTED') THEN
-      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                  FORM=TPFILE%CFORM,MODE='GLOBAL')
+      CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM=TPFILE%CFORM,MODE='GLOBAL')
     ELSE IF (TPFILE%CACCESS=='DIRECT') THEN
-      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')
+      CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM=TPFILE%CFORM,ACCESS=TPFILE%CACCESS,RECL=TPFILE%NRECL,MODE='GLOBAL')
     ELSE
-      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                  FORM=TPFILE%CFORM,MODE='GLOBAL')
+      CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM=TPFILE%CFORM,MODE='GLOBAL')
     END IF
 
 
   !Text files
   CASE('TXT')
     IF(TPFILE%NRECL>0) THEN
-      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')
+      CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,RECL=TPFILE%NRECL,MODE='GLOBAL')
     ELSE
-      CALL OPEN_ll(TPFILE,UNIT=TPFILE%NLU,FILE=TPFILE%CNAME,IOSTAT=IRESP,ACTION=TPFILE%CMODE, &
-                   FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,MODE='GLOBAL')
+      CALL OPEN_ll(TPFILE,IOSTAT=IRESP,FORM='FORMATTED',POSITION=HPOSITION,STATUS=HSTATUS,MODE='GLOBAL')
     END IF
 
 
@@ -240,8 +229,7 @@ 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(TZFILE_DES,UNIT=TZFILE_DES%NLU,FILE=TRIM(TPFILE%CNAME)//'.des',FORM='FORMATTED',ACTION=TZFILE_DES%CMODE, &
-                   DELIM='QUOTE',IOSTAT=IRESP,RECL=1024*8,OPARALLELIO=OPARALLELIO)
+      CALL OPEN_ll(TZFILE_DES,FORM='FORMATTED',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
@@ -355,7 +343,7 @@ LOGICAL,         INTENT(IN),  OPTIONAL :: OPARALLELIO
 !   Local variables
 !
 INTEGER                 :: IFTYPE  ! type of FM-file
-INTEGER                 :: IROWF,IRESP,INUMBR,IFMFNL
+INTEGER                 :: IROWF,IRESP,IFMFNL
 CHARACTER(LEN=7)        :: YACTION ! Action upon the file ('READ' or 'WRITE')
 CHARACTER(LEN=28)       :: YFILEM  ! name of the file
 CHARACTER(LEN=JPFINL)   :: YFNDES,YFNLFI
@@ -429,18 +417,14 @@ YFNLFI=ADJUSTL(TRIM(YFILEM)//'.lfi')
 ALLOCATE(TZPARA)
 TZPARA%FITYP = TPFILE%NLFITYPE
 
-!!$CALL OPEN_ll(UNIT=INUMBR,FILE=YFNLFI,STATUS="UNKNOWN",MODE&
-!!$     & ='DISTRIBUTED', LFIPAR=TZPARA, ACTION=YACTION, IOSTAT=IRESP)
-
  SELECT CASE (YACTION)
  CASE('READ')
     INB_PROCIO = NB_PROCIO_R
  CASE('WRITE')
     INB_PROCIO = NB_PROCIO_W
  END SELECT
-CALL OPEN_ll(UNIT=INUMBR,FILE=YFILEM,STATUS="UNKNOWN",MODE&
-     & ='IO_ZSPLIT', LFIPAR=TZPARA, ACTION=YACTION, IOSTAT=IRESP,KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO,&
-     TPFILE=TPFILE)
+CALL OPEN_ll(TPFILE,STATUS="UNKNOWN",MODE='IO_ZSPLIT',LFIPAR=TZPARA,IOSTAT=IRESP, &
+             KNB_PROCIO=INB_PROCIO,KMELEV=IMELEV,OPARALLELIO=GPARALLELIO)
 
 IF (IRESP /= 0) GOTO 1000
 
@@ -489,7 +473,7 @@ IF (ISP == TZFDLFI%OWNER) THEN
      GNAMFI = .TRUE.
      GFATER = .TRUE.
      !
-     INUMBR8 = INUMBR
+     INUMBR8 = TPFILE%NLU
      GNAMFI8 = GNAMFI
      GFATER8 = GFATER
      GSTATS8 = GSTATS
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 154e337602b72990a17eee944237f13fa171de32..1a87a52f1c2da368af4e5d7d4e94951408930754 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -205,8 +205,6 @@ CONTAINS
 
   SUBROUTINE OPEN_ll(&
        TPFILE,  &
-       UNIT,    &
-       FILE,    &
        MODE,    &
        LFIPAR,  &
        COMM,    &
@@ -217,7 +215,6 @@ CONTAINS
        RECL,    &
        BLANK,   &
        POSITION,&
-       ACTION,  &
        DELIM,    &
        PAD,      &
        KNB_PROCIO,& 
@@ -231,8 +228,6 @@ CONTAINS
   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
     TYPE(LFIPARAM),  POINTER,     OPTIONAL :: LFIPAR
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: STATUS
@@ -242,7 +237,6 @@ CONTAINS
     INTEGER,         INTENT(IN),  OPTIONAL :: RECL
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: BLANK
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: POSITION
-    CHARACTER(len=*),INTENT(IN)            :: ACTION
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: DELIM
     CHARACTER(len=*),INTENT(IN),  OPTIONAL :: PAD
     INTEGER,         INTENT(IN),  OPTIONAL :: COMM
@@ -292,11 +286,7 @@ CONTAINS
     LOGICAL               :: GPARALLELIO
     TYPE(TFILEDATA),POINTER :: TZSPLITFILE
 
-    IF ( PRESENT(FILE) ) THEN
-      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','opening '//TRIM(FILE)//' for '//TRIM(ACTION))
-    ELSE
-      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','called for '//TRIM(ACTION)//' (filename not provided)')
-    ENDIF
+    CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','opening '//TRIM(TPFILE%CNAME)//' for '//TRIM(TPFILE%CMODE))
     !
     IF ( PRESENT(OPARALLELIO) ) THEN
       GPARALLELIO = OPARALLELIO
@@ -328,25 +318,25 @@ CONTAINS
        YMODE = 'GLOBAL'         ! Default Mode
     END IF
 
-    YACTION = ACTION
+    YACTION = TPFILE%CMODE
     YACTION = UPCASE(TRIM(ADJUSTL(YACTION)))
     IF (YACTION /= "READ" .AND. YACTION /= "WRITE") THEN
        IOSTAT = 99
-       UNIT = -1
+       TPFILE%NLU = -1
        WRITE(ISTDERR,*) 'Erreur OPEN_ll : ACTION=',YACTION,' non supportee'
        RETURN
     END IF
 
     IF (.NOT. ANY(YMODE == (/'GLOBAL     ','SPECIFIC   ','DISTRIBUTED' , 'IO_ZSPLIT  '/))) THEN
        IOSTAT = 99
-       UNIT = -1
+       TPFILE%NLU = -1
        WRITE(ISTDERR,*) 'OPEN_ll error : MODE UNKNOWN'
        RETURN
     END IF
 
     !JUAN SX5 : probleme function retournant un pointer
-    !IF (.NOT. ASSOCIATED(GETFD(FILE))) THEN
-    TZJUAN=>GETFD(FILE)
+    !IF (.NOT. ASSOCIATED(GETFD(TPFILE%CNAME))) THEN
+    TZJUAN=>GETFD(TPFILE%CNAME)
     IF (.NOT. ASSOCIATED(TZJUAN)) THEN 
        !JUAN SX5 : probleme function retournant un pointer
        !! File is not already opened : GOOD
@@ -355,8 +345,8 @@ CONTAINS
     ELSE 
        !! Error : File already opened
        IOSTAT = 99
-       UNIT = -1
-       WRITE(ISTDERR,*) 'OPEN_ll error : File', FILE, 'already opened'
+       TPFILE%NLU = -1
+       WRITE(ISTDERR,*) 'OPEN_ll error : File', TPFILE%CNAME, 'already opened'
        RETURN
     END IF
 
@@ -364,13 +354,13 @@ CONTAINS
 !!$         & ICOMM, IERR)
 !!$    IF (IGLOBALERR /= NOERROR) THEN 
 !!$       IOSTAT = GLOBALERR
-!!$       UNIT = -1
+!!$       TPFILE%NLU = -1
 !!$       RETURN 
 !!$    END IF
 
 
 
-    TZFD%NAME = FILE
+    TZFD%NAME = TPFILE%CNAME
     TZFD%MODE = YMODE
     NULLIFY(TZFD%PARAM)
 
@@ -459,7 +449,7 @@ CONTAINS
                   ACTION=YACTION)
           ELSE
              IF (YFORM=="FORMATTED") THEN
-               IF (ACTION=='READ') THEN
+               IF (YACTION=='READ') THEN
                 OPEN(UNIT=TZFD%FLU,       &
                      FILE=TRIM(TZFD%NAME),&
                      STATUS=YSTATUS,       &
@@ -566,7 +556,7 @@ CONTAINS
                RECL=YRECL,           &
                ACTION=YACTION)
        ELSE
-        IF (ACTION=='READ') THEN
+        IF (YACTION=='READ') THEN
           OPEN(UNIT=TZFD%FLU,                      &
                FILE=TRIM(TZFD%NAME)//SUFFIX(".P"), &
                STATUS=YSTATUS,                         &
@@ -630,7 +620,7 @@ CONTAINS
     CASE('IO_ZSPLIT')
 
        TZFD%OWNER = ISIOP
-       TZFD%NAME  = TRIM(FILE)//".lfi"
+       TZFD%NAME  = TRIM(TPFILE%CNAME)//".lfi"
        IF (PRESENT(KNB_PROCIO)) THEN
           TZFD%NB_PROCIO = KNB_PROCIO
        ELSE
@@ -657,7 +647,7 @@ CONTAINS
           DO ifile=0,TZFD%NB_PROCIO-1
              irank_procio = 1 + io_rank(ifile,ISNPROC,TZFD%NB_PROCIO)
              write(cfile ,'(".Z",i3.3)') ifile+1
-             YFILE_IOZ           = TRIM(FILE)//cfile//".lfi"
+             YFILE_IOZ           = TRIM(TPFILE%CNAME)//cfile//".lfi"
              TZFD_IOZ           =>NEWFD()
              TZFD_IOZ%NAME      = YFILE_IOZ
              TZFD_IOZ%MODE      = 'IO_ZSPLIT'
@@ -680,10 +670,10 @@ CONTAINS
                    IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
                       ! Open NetCDF File for reading
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_OPEN(IO_ZSPLIT) for '//TRIM(FILE)//cfile//'.nc')
-                      IOSCDF = NF90_OPEN(TRIM(FILE)//cfile//".nc", NF90_NOWRITE, TZFD_IOZ%CDF%NCID)
+                      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_OPEN(IO_ZSPLIT) for '//TRIM(TPFILE%CNAME)//cfile//'.nc')
+                      IOSCDF = NF90_OPEN(TRIM(TPFILE%CNAME)//cfile//".nc", NF90_NOWRITE, TZFD_IOZ%CDF%NCID)
                       IF (IOSCDF /= NF90_NOERR) THEN
-   PRINT *, 'Error in opening (NF90_OPEN) ', TRIM(FILE)//cfile//'.nc', ' : ', NF90_STRERROR(IOSCDF)
+   PRINT *, 'Error in opening (NF90_OPEN) ', TRIM(TPFILE%CNAME)//cfile//'.nc', ' : ', NF90_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
@@ -694,11 +684,11 @@ CONTAINS
                       ! YACTION == 'WRITE'
                       ! Create NetCDF File for writing
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_CREATE(IO_ZSPLIT) for '//TRIM(FILE)//cfile//'.nc')
-                      IOSCDF = NF90_CREATE(TRIM(FILE)//cfile//".nc", &
+                      CALL PRINT_MSG(NVERB_DEBUG,'IO','OPEN_ll','NF90_CREATE(IO_ZSPLIT) for '//TRIM(TPFILE%CNAME)//cfile//'.nc')
+                      IOSCDF = NF90_CREATE(TRIM(TPFILE%CNAME)//cfile//".nc", &
                            &IOR(NF90_CLOBBER,NF90_NETCDF4), TZFD_IOZ%CDF%NCID)
                       IF (IOSCDF /= NF90_NOERR) THEN
-                         PRINT *, 'Error in opening (NF90_CREATE) ', TRIM(FILE)//cfile//'.nc', ' : ', NF90_STRERROR(IOSCDF)
+                         PRINT *, 'Error in opening (NF90_CREATE) ', TRIM(TPFILE%CNAME)//cfile//'.nc', ' : ', NF90_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
@@ -778,7 +768,7 @@ print *,'PW: TPFILE%CNAME=',TPFILE%CNAME,'master,multimasters=',TPFILE%LMASTER,T
 !!$    END IF
 
     IOSTAT = IOS
-    UNIT = TZFD%FLU
+    TPFILE%NLU = TZFD%FLU
 
   CONTAINS
     FUNCTION SUFFIX(HEXT)