我需要开发一个可以打开文件并解析内容的库。单元号,由于fortran IO风格,必须由我决定,但我不知道客户端代码中还有哪些单元是开放的。有没有像这样的标准功能give_me_any_unit_number_that_is_free()
?
问问题
6538 次
2 回答
31
在 fortran 2008 中,有一个可以打开的 newunit 子句
integer :: myunit
..
open(newunit=myunit,file='file.dat')
...
close(myunit)
但这已经足够新了,并不是所有的编译器都支持它。如果你还没有,你可以自己模拟一个;fortran wiki上有一个很好的例子。
于 2011-10-24T13:13:09.783 回答
10
您可以使用 INQUIRE 查找未使用的单元号:
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
于 2011-11-30T06:20:32.607 回答