Skip to content
Snippets Groups Projects
Commit 65dcf2e8 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 27/02/2019: IO: remove CLOSE_ll subroutine

parent c8f3e2eb
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST) ! (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 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: use recursive calls to open/close DES files
! P. Wautelet 27/02/2019: remove CLOSE_ll subroutine (from mode_io.f90)
!----------------------------------------------------------------- !-----------------------------------------------------------------
MODULE MODE_FM MODULE MODE_FM
...@@ -279,20 +280,20 @@ END SUBROUTINE FMOPEN_ll ...@@ -279,20 +280,20 @@ END SUBROUTINE FMOPEN_ll
recursive SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,HPROGRAM_ORIG) recursive SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,KRESP,HPROGRAM_ORIG)
! !
USE MODD_CONF, ONLY: CPROGRAM 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 use mode_io_file_lfi, only: io_close_file_lfi
#if defined(MNH_IOCDF4) #if defined(MNH_IOCDF4)
use mode_io_file_nc4, only: io_close_file_nc4 use mode_io_file_nc4, only: io_close_file_nc4
use mode_io_write_nc4, only: io_write_coordvar_nc4 use mode_io_write_nc4, only: io_write_coordvar_nc4
#endif #endif
USE MODE_IO_ll, ONLY: CLOSE_ll
USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
! !
TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! File structure TYPE(TFILEDATA), INTENT(INOUT) :: TPFILE ! File structure
INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! Return code INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! Return code
CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HPROGRAM_ORIG !To emulate a file coming from this program CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HPROGRAM_ORIG !To emulate a file coming from this program
! !
character(len=256) :: yioerrmsg
INTEGER :: IRESP, JI INTEGER :: IRESP, JI
TYPE(TFILEDATA),POINTER :: TZFILE_DES TYPE(TFILEDATA),POINTER :: TZFILE_DES
TYPE(TFILEDATA),POINTER :: TZFILE_IOZ TYPE(TFILEDATA),POINTER :: TZFILE_IOZ
...@@ -321,11 +322,22 @@ END IF ...@@ -321,11 +322,22 @@ END IF
! !
SELECT CASE(TPFILE%CTYPE) SELECT CASE(TPFILE%CTYPE)
CASE('CHEMINPUT','CHEMTAB','DES','GPS','METEO','NML','OUTPUTLISTING','SURFACE_DATA','TXT') 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 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 !Do not close (non-existing) '.des' file if OUTPUT
IF(TPFILE%CTYPE/='OUTPUT' .AND. CPROGRAM/='LFICDF') THEN IF(TPFILE%CTYPE/='OUTPUT' .AND. CPROGRAM/='LFICDF') THEN
CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//'.des',TZFILE_DES,IRESP) CALL IO_FILE_FIND_BYNAME(TRIM(TPFILE%CNAME)//'.des',TZFILE_DES,IRESP)
...@@ -372,6 +384,10 @@ SELECT CASE(TPFILE%CTYPE) ...@@ -372,6 +384,10 @@ SELECT CASE(TPFILE%CTYPE)
#endif #endif
END IF END IF
END DO SUBFILES 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 END SELECT
! !
TPFILE%LOPENED = .FALSE. TPFILE%LOPENED = .FALSE.
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST) ! (nsubfiles_ioz is now determined in IO_FILE_ADD2LIST)
! P. Wautelet 14/02/2019: move UPCASE function to tools.f90 ! 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 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 MODULE MODE_IO_ll
...@@ -44,7 +45,7 @@ MODULE MODE_IO_ll ...@@ -44,7 +45,7 @@ MODULE MODE_IO_ll
LOGICAL,SAVE :: GCONFIO = .FALSE. ! Turn TRUE when SET_CONFIO_ll is called. 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 PUBLIC SET_CONFIO_ll,GCONFIO
CONTAINS CONTAINS
...@@ -481,31 +482,4 @@ CONTAINS ...@@ -481,31 +482,4 @@ CONTAINS
END SUBROUTINE OPEN_ll 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 END MODULE MODE_IO_ll
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment