iounitmod.f90

来自「CCSM Research Tools: Community Atmospher」· F90 代码 · 共 111 行

F90
111
字号
#include <misc.h>#include <preproc.h>module ioUnitMod  use precision  implicit none  logical :: lsmiou(99)  !I/O file unit numbers (1 to 99): true if active!=======================================================================contains!=======================================================================  integer function getavu()!----------------------------------------------------------------------- ! ! Purpose: ! get next available Fortran unit number!! Method: ! Get next available Fortran unit number itst. Set lsmiou(itst), in ! lsmio common block, true. If coupled to CAM, use CAM function navu! to get available unit number, in which case lsmiou is not needed.! ! Author: Gordon Bonan! !-----------------------------------------------------------------------! $Id: ioUnitMod.F90,v 1.7.2.1 2001/11/07 18:16:12 mvertens Exp $!-----------------------------------------------------------------------#if (defined COUP_CAM)    use units     !CAM units module#endif! ------------------------ local variables ------------------------    integer itst  !Fortran unit number! -----------------------------------------------------------------#if (defined COUP_CAM)    getavu = getunit()    RETURN#else    do itst = 1, 99       if (.not.lsmiou(itst)) then          getavu = itst          lsmiou(itst) = .true.          RETURN       end if    end do    write (6,*) 'GETAVU error: ran out of Fortran unit numbers'    call endrun#endif  end function getavu!=======================================================================  subroutine relavu (iunit)!----------------------------------------------------------------------- ! ! Purpose: ! close and release Fortran unit no longer in use!! Method: ! Close and release Fortran unit number iunit. Set lsmiou(iunit) to ! false. If coupled to cam, use cam function relunit to close/release ! unit number.! ! Author: Gordon Bonan! !-----------------------------------------------------------------------#if (defined COUP_CAM)    use units     !CAM units module#endif! ------------------------ arguments ------------------------------    integer, intent(in) :: iunit    !Fortran unit number! -----------------------------------------------------------------#if (defined COUP_CAM)    close(iunit)    call freeunit(iunit)#else    if (.not.lsmiou(iunit)) then       write (6,*) 'RELAVU eror: unit ',iunit,' is not flagged as in use'       call endrun    end if    if (iunit<1 .or. iunit>99) then       write (6,*) 'RELAVU error: attempt to return out of range unit'       call endrun    end if    close(iunit)    lsmiou(iunit) = .false.#endif    return  end subroutine relavu!=======================================================================end module ioUnitMod

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?