ESMF_UtilIOUnitFlush Subroutine

public subroutine ESMF_UtilIOUnitFlush(unit, keywordEnforcer, rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
integer, intent(out), optional :: rc

Called by

proc~~esmf_utiliounitflush~~CalledByGraph proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_alarmprint ESMF_AlarmPrint proc~esmf_alarmprint->proc~esmf_utiliounitflush proc~esmf_arraybundleprint ESMF_ArrayBundlePrint proc~esmf_arraybundleprint->proc~esmf_utiliounitflush proc~esmf_arrayprint ESMF_ArrayPrint proc~esmf_arrayprint->proc~esmf_utiliounitflush proc~esmf_baseprint ESMF_BasePrint proc~esmf_baseprint->proc~esmf_utiliounitflush proc~esmf_calendarprint ESMF_CalendarPrint proc~esmf_calendarprint->proc~esmf_utiliounitflush proc~esmf_clockprint ESMF_ClockPrint proc~esmf_clockprint->proc~esmf_utiliounitflush proc~esmf_containerprint ESMF_ContainerPrint proc~esmf_containerprint->proc~esmf_utiliounitflush proc~esmf_delayoutprint ESMF_DELayoutPrint proc~esmf_delayoutprint->proc~esmf_utiliounitflush proc~esmf_distgridprint ESMF_DistGridPrint proc~esmf_distgridprint->proc~esmf_utiliounitflush proc~esmf_gridprint ESMF_GridPrint proc~esmf_gridprint->proc~esmf_utiliounitflush proc~esmf_logflush ESMF_LogFlush proc~esmf_logflush->proc~esmf_utiliounitflush proc~esmf_logopen ESMF_LogOpen proc~esmf_logopen->proc~esmf_utiliounitflush proc~esmf_logopendefault ESMF_LogOpenDefault proc~esmf_logopendefault->proc~esmf_utiliounitflush proc~esmf_logopenfile ESMF_LogOpenFile proc~esmf_logopenfile->proc~esmf_utiliounitflush proc~esmf_logset ESMF_LogSet proc~esmf_logset->proc~esmf_utiliounitflush proc~esmf_logwrite ESMF_LogWrite proc~esmf_logwrite->proc~esmf_utiliounitflush proc~esmf_pointlistprint ESMF_PointListPrint proc~esmf_pointlistprint->proc~esmf_utiliounitflush proc~esmf_pointlistwritevtk ESMF_PointListWriteVTK proc~esmf_pointlistwritevtk->proc~esmf_utiliounitflush proc~esmf_reconcilecompareneeds ESMF_ReconcileCompareNeeds proc~esmf_reconcilecompareneeds->proc~esmf_utiliounitflush proc~esmf_reconcileexchgidinfo ESMF_ReconcileExchgIDInfo proc~esmf_reconcileexchgidinfo->proc~esmf_utiliounitflush proc~esmf_reconcileexchgneeds ESMF_ReconcileExchgNeeds proc~esmf_reconcileexchgneeds->proc~esmf_utiliounitflush proc~esmf_routehandleprint ESMF_RouteHandlePrint proc~esmf_routehandleprint->proc~esmf_utiliounitflush proc~esmf_stateitemprint ESMF_StateItemPrint proc~esmf_stateitemprint->proc~esmf_utiliounitflush proc~esmf_timeintervalprint ESMF_TimeIntervalPrint proc~esmf_timeintervalprint->proc~esmf_utiliounitflush proc~esmf_timeprint ESMF_TimePrint proc~esmf_timeprint->proc~esmf_utiliounitflush proc~esmf_vmidprint_s ESMF_VMIdPrint_s proc~esmf_vmidprint_s->proc~esmf_utiliounitflush proc~esmf_vmidprint_v ESMF_VMIdPrint_v proc~esmf_vmidprint_v->proc~esmf_utiliounitflush proc~esmf_vmprint ESMF_VMPrint proc~esmf_vmprint->proc~esmf_utiliounitflush proc~f_esmf_utilversionprint f_esmf_utilversionprint proc~f_esmf_utilversionprint->proc~esmf_utiliounitflush program~esmf_pointlistutest ESMF_PointListUTest program~esmf_pointlistutest->proc~esmf_utiliounitflush program~esmf_utilutest ESMF_UtilUTest program~esmf_utilutest->proc~esmf_utiliounitflush

Source Code

  subroutine ESMF_UtilIOUnitFlush(unit, keywordEnforcer, rc)
!
! !PARAMETERS:
    integer, intent(in)            :: unit
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
    integer, intent(out), optional :: rc
!
! !STATUS:
! \begin{itemize}
! \item\apiStatusCompatibleVersion{5.2.0r}
! \end{itemize}
!
! !DESCRIPTION:
!   Call the system-dependent routine to force output on a specific
!   Fortran unit number.
!
!     The arguments are:
!     \begin{description}
!     \item[unit]
!       A Fortran I/O unit number.  If the unit is not connected to a file,
!       no flushing occurs.
!     \item[{[rc]}]
!       Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
!     \end{description}
!EOP
    integer :: localrc
    integer :: localstat
    logical :: connected


    inquire (unit=unit, opened=connected)
    if (.not. connected) then
      if (present (rc)) then
        rc = ESMF_SUCCESS
      end if
      return
    end if


!   By default, use the F2003 FLUSH statement.  For older compilers,
!   use a macro defined in the configuration-specific ESMF_Conf.inc
!   include file.  This is needed because the name of the flush routine
!   and exact number of its arguements vary between implementations.

#if !defined (ESMF_IOFlushMacro)

    flush (unit, iostat=localstat)

    ! Convert Fortran iostat to ESMF rc

    localrc = merge (ESMF_SUCCESS, ESMF_FAILURE, localstat == 0)

#else
!   Preset localrc in advance, since some library versions of FLUSH do
!   not support a status argument for detecting errors.

    localstat = 0

ESMF_IOFlushMacro(unit, localstat)

    ! Convert status return to ESMF rc

    localrc = merge (ESMF_SUCCESS, ESMF_FAILURE, localstat == 0)

#endif

    if (present(rc)) then
      rc = localrc
    end if

  end subroutine ESMF_UtilIOUnitFlush