From 65dcf2e843b9a8dd9b2f6e0bf71c594bbd26435d Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 27 Feb 2019 17:15:48 +0100 Subject: [PATCH] Philippe 27/02/2019: IO: remove CLOSE_ll subroutine --- src/LIB/SURCOUCHE/src/mode_fm.f90 | 26 +++++++++++++++++++++----- src/LIB/SURCOUCHE/src/mode_io.f90 | 30 ++---------------------------- 2 files changed, 23 insertions(+), 33 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 2292f92d1..4b54121aa 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -21,6 +21,7 @@ ! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST) ! P. Wautelet 19/02/2019: simplification/restructuration/cleaning of open/close subroutines (TBCto be continued) ! P. Wautelet 27/02/2019: use recursive calls to open/close DES files +! P. Wautelet 27/02/2019: remove CLOSE_ll subroutine (from mode_io.f90) !----------------------------------------------------------------- MODULE MODE_FM @@ -279,20 +280,20 @@ END SUBROUTINE FMOPEN_ll recursive SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,HPROGRAM_ORIG) ! USE MODD_CONF, ONLY: CPROGRAM -USE MODD_IO_ll, ONLY: TFILEDATA +USE MODD_IO_ll, ONLY: NNULLUNIT, TFILEDATA use mode_io_file_lfi, only: io_close_file_lfi #if defined(MNH_IOCDF4) use mode_io_file_nc4, only: io_close_file_nc4 use mode_io_write_nc4, only: io_write_coordvar_nc4 #endif -USE MODE_IO_ll, ONLY: CLOSE_ll USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME ! TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! File structure INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! Return code CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HPROGRAM_ORIG !To emulate a file coming from this program ! +character(len=256) :: yioerrmsg INTEGER :: IRESP, JI TYPE(TFILEDATA),POINTER :: TZFILE_DES TYPE(TFILEDATA),POINTER :: TZFILE_IOZ @@ -321,11 +322,22 @@ END IF ! SELECT CASE(TPFILE%CTYPE) CASE('CHEMINPUT','CHEMTAB','DES','GPS','METEO','NML','OUTPUTLISTING','SURFACE_DATA','TXT') - CALL CLOSE_ll(TPFILE,IRESP) - ! + IF (TPFILE%LMASTER) THEN + IF (TPFILE%NLU/=-1 .AND. TPFILE%NLU/=NNULLUNIT) THEN + CLOSE(UNIT=TPFILE%NLU, STATUS='KEEP', IOSTAT=IRESP, IOMSG=yioerrmsg) + END IF + END IF + + !Warning and not error or fatal if close fails to allow continuation of execution + IF (IRESP/=0) CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_CLOSE_ll','Problem when closing ' & + //TRIM(TPFILE%CNAME)//': '//TRIM(YIOERRMSG)) + TPFILE%NLU = -1 - CASE DEFAULT + + !MesoNH files + !Remark: 'MNH' is more general than MNHBACKUP and could be in fact a MNHBACKUP file + CASE ('MNH', 'MNHBACKUP', 'MNHDIACHRONIC', 'MNHDIAG', 'MNHOUTPUT', 'PGD') !Do not close (non-existing) '.des' file if OUTPUT IF(TPFILE%CTYPE/='OUTPUT' .AND. CPROGRAM/='LFICDF') THEN CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//'.des',TZFILE_DES,IRESP) @@ -372,6 +384,10 @@ SELECT CASE(TPFILE%CTYPE) #endif END IF END DO SUBFILES + + + CASE DEFAULT + call print_msg(NVERB_FATAL,'IO','IO_FILE_CLOSE_ll','invalid type '//trim(tpfile%ctype)//' for file '//trim(tpfile%cname)) END SELECT ! TPFILE%LOPENED = .FALSE. diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 385f8ec01..85b9c1078 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -29,6 +29,7 @@ ! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST) ! P. Wautelet 14/02/2019: move UPCASE function to tools.f90 ! P. Wautelet 19/02/2019: simplification/restructuration/cleaning of open/close subroutines (TBCto be continued) +! P. Wautelet 27/02/2019: remove CLOSE_ll subroutine ! !----------------------------------------------------------------- MODULE MODE_IO_ll @@ -44,7 +45,7 @@ MODULE MODE_IO_ll LOGICAL,SAVE :: GCONFIO = .FALSE. ! Turn TRUE when SET_CONFIO_ll is called. - PUBLIC INITIO_ll,OPEN_ll,CLOSE_ll + PUBLIC INITIO_ll,OPEN_ll PUBLIC SET_CONFIO_ll,GCONFIO CONTAINS @@ -481,31 +482,4 @@ CONTAINS END SUBROUTINE OPEN_ll - - SUBROUTINE CLOSE_ll(TPFILE,KRESP) - USE MODD_IO_ll - - TYPE(TFILEDATA), INTENT(IN) :: TPFILE - INTEGER, INTENT(OUT) :: KRESP - - character(len=256) :: yioerrmsg - INTEGER :: IRESP - - CALL PRINT_MSG(NVERB_DEBUG,'IO','CLOSE_ll','closing '//TRIM(TPFILE%CNAME)) - - IRESP = 0 - - IF (TPFILE%LMASTER) THEN - IF (TPFILE%NLU/=-1 .AND. TPFILE%NLU/=NNULLUNIT) THEN - CLOSE(UNIT=TPFILE%NLU, STATUS='KEEP', IOSTAT=IRESP, IOMSG=yioerrmsg) - END IF - END IF - - !Warning and not error or fatal if close fails to allow continuation of execution - IF (IRESP/=0) CALL PRINT_MSG(NVERB_WARNING,'IO','CLOSE_ll','Problem when closing '//TRIM(TPFILE%CNAME)//': '//TRIM(YIOERRMSG)) - - KRESP = IRESP - - END SUBROUTINE CLOSE_ll - END MODULE MODE_IO_ll -- GitLab