我对打开文件中使用“ iostat”参数感到困惑。可以这么说,当打开命令成功时,“ iostat”的值为0。
open(unit=99, file='vel_zcor22.txt', status='old', iostat=ierr, err=100)
100 if(ierr .ne. 0) then
print*, 'open file error'
endif
print*, ierr
为什么不使用“ iostat”而不是“ ierr”来表示状态。据我对赋值运算符的理解,“ ierr”将其值传递给“ iostat”。那么“ ierr”在此过程中扮演什么角色?
答案 0 :(得分:2)
在open
语句中,iostat=ierr
使用iostat=
作为说明符。这不是分配,而是将ierr
的值传递给变量iostat
。
就像在子例程或函数引用中使用关键字(其中call sub(a=x)
将实际参数x
与虚拟参数a
关联时)一样,发生的事情更多:
使用变量
ierr
存储语句的结果状态。
因此,当“ iostat
的值为0”时,真正发生的是定义了变量ierr
。
您可以改用任何变量名来代替ierr
,通常通常使用iostat
:
open(..., iostat=iostat, ...)
同样,您看到的其他部分也不是分配。那就是:
open(unit=99, file='vel_zcor22.txt', status='old', iostat=ierr, err=100)
可能看起来像是作业,但仍在说:
在单元99上打开,状态为
'old'
的文件,如果有错误,则将控制权传递给标记为100
的语句。
它没有将变量unit
设置为99,依此类推。