getting free unit number in fortran

后端 未结 2 778
我在风中等你
我在风中等你 2020-12-10 04:12

I need to develop a library that opens a file and parses the stuff. The unit number, due to fortran IO style, must be decided by me, but I can\'t know what other units are

相关标签:
2条回答
  • 2020-12-10 04:20

    In fortran 2008, there's a newunit clause to open that you can use

       integer :: myunit
    
       ..
       open(newunit=myunit,file='file.dat')
       ...
       close(myunit)
    

    but that's new enough that not all compilers support it yet. If yours doesn't yet, you can mock one up yourself; there's a good example on the fortran wiki.

    0 讨论(0)
  • 2020-12-10 04:30

    You can use INQUIRE to find a unit number that is not in use:

          integer*4 function get_file_unit (lu_max)
    !
    !   get_file_unit returns a unit number that is not in use
          integer*4 lu_max,  lu, m, iostat
          logical   opened
    !
          m = lu_max  ;  if (m < 1) m = 97
          do lu = m,1,-1
             inquire (unit=lu, opened=opened, iostat=iostat)
             if (iostat.ne.0) cycle
             if (.not.opened) exit
          end do
    !
          get_file_unit = lu
          return
          end function get_file_unit
    
    0 讨论(0)
提交回复
热议问题