Fortran Inquire给出了UNDEFINED和UNKNOWN

时间:2016-05-05 20:11:31

标签: fortran

我使用编辑器创建了一个文本文件并在其中添加了一些信息

当打电话询问如下时,我正在接收UNDEFINED和UNKNOWN

Inquire (file=nm, exist=fe, form=fm, access=ac)
Inquire (file=nm, sequential=seq, direct=drc)
Inquire (file=nm, formatted=fmt, unformatted=uft)

输出

fm, ac: UNDEFINED UNDEFINED
seq: UNKNOWN
drc: UNKNOWN
fmt: UNKNOWN
uft: UNKNOWN

1 个答案:

答案 0 :(得分:1)

有吸引力的是认为所谓的按文件查询告诉我们我们可以对文件做些什么。实际上,使用file=语句中的inquire说明符可以查询不存在或连接的文件(例如,通过open语句)。您似乎发现存在测试不会令人不安。

但是,我们从此类调查中获得的信息是有限的。是的,如果通过像

这样的文件查询会很好
inquire(file="some_file", direct=isdirect, formatted=isformatted, ...)

告诉我们是否可以建立与具有未格式化记录的文件的直接访问连接,但我们处于"处理器相关的领域"。

首先,问题中的简单问题是:form=access=说明符。您看到undefined,这正是当前未连接文件时所期望的结果。您可以在Fortran 2008 9.2.10.3中看到access=

  

如果没有连接,则为其分配值UNDEFINED。

,同样在9.2.10.12 form=。即使通过文件查询,这两个说明符也会告诉我们 connection 而不是文件。也就是说,不是可能我们对文件做了什么,而是 我们对文件做了什么。

具有unknown的其他人受

等陈述的约束
  

如果处理器无法确定SEQUENTIAL是否为UNKNOWN   包含在文件

的允许访问方法集中

(对于sequential=)。知道是否允许访问模式,例如

  

例如,处理器可能只允许顺序访问磁带上的文件。因此,这套   允许的访问方法取决于文件和处理器。