2017-07-15 72 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這是此案例的正確規範。