【发布时间】:2014-11-19 03:49:03
【问题描述】:
在 Fortran 90 中有没有办法按名称获取文件单元,按单元编号获取文件名?我知道这会很昂贵,但是我有很多文件名,我希望在创建它们之后能够在子例程中重新访问它们。..
【问题讨论】:
-
因为答案两者兼而有之,我相信在问题中同时拥有两者是有用的。如果您不同意,您可以回滚编辑。
-
我觉得不错,谢谢!
在 Fortran 90 中有没有办法按名称获取文件单元,按单元编号获取文件名?我知道这会很昂贵,但是我有很多文件名,我希望在创建它们之后能够在子例程中重新访问它们。..
【问题讨论】:
为了获取文件信息,您必须使用INQUIRE 语句。
UNIT 和 FILE 都是 INQUIRE 语句的有效 input 选项,但我不确定它们是否可以用于输出(例如,gfortran 7.4.0 会抱怨INQUIRE statement at (1) cannot contain both FILE and UNIT specifiers)。
因此,要从单元号获取文件名信息,请使用NAME,例如:
inquire(unit=12, opened=openedq, NAME=name_of_file)
获取单元号信息,上例有效:
inquire(file='my_file', opened=openedq, NUMBER=file_unit)
【讨论】:
类似的命令
inquire(unit=12, opened=openedq, file=name_of_file)
将连接到单元 12 的文件的名称返回给字符变量name_of_file。如果没有文件连接到单元opened将返回false,否则返回true。该命令还接受各种其他可选参数。
要获取已附加文件的单元号,请使用前面的变体,如下所示
inquire(file='my_favourite_file.nuts', number=unknown_unit_number, opened=openedq)
参考您的编译器文档应该解释inquire 支持的所有变体。
【讨论】: