2017-07-15 153 views
-1

我需要在Fortran中创建一个文件,然后读取文件中的数据。Fortran execute_command_line不返回结果

call execute_command_line('pwd > workdir.dat') 

open(unit=10, file='workdir.dat', status='replace', IOSTAT=open_stat) 
    if (open_stat /= 0) stop "Reading workdir.dat file Error" 
    read(10,"(A)") workdir 
close(10) 

然而,当我尝试打开它,让我认真打开错误workdir.dat是空的。看起来系统只在程序结束时将workdir.dat的内容清除到文件中。我如何确保workdir.dat已准备好在open之前使用?

+0

是的,这可以解决问题---应该使用状态'old'。 –

+0

我正在投票结束这个问题,因为在评论中指出了错误,我们不希望它坐在未答复的列表上。 – agentp

回答

1

open声明包含条款status=replace,它实际上告诉运行系统放弃文件的内容并重新写入它们。为了准确,语言标准规定WRT的status符上open声明:

如果指定了replace和文件不存在,该文件被删除, 一个新的文件具有相同的名称创建的,并且状态更改为 OLD。

将子句更改为status=old这是此案例的正确规范。