2013-10-21 59 views
1

我在運行時出現此錯誤:在分析的開始發生的Fortran錯誤I/O

forrtl: severe (10): Cannot overwrite existing file, unit 
27, file C:\Abaqus_JOBS\w.txt 

錯誤。 開始時,文件w.txt已創建,但最初爲空。然後1被寫入w.txt並且在我得到上述錯誤之後。

我的代碼是:

SUBROUTINE MAIN(....) 
C 
C UPDATE w counter 
C 
     flag = 0 
     OPEN(2700, action = "READWRITE", FILE = "C:/Abaqus_JOBS/w.txt", status = "UNKNOWN") 
C 
     READ(2700, *, iostat=stat) w 
     CALL del_file(2700, stat, flag) 
C 
     w = w + 1 
     IF (w.GT.nELEM) THEN 
     nInc = KINC !Update nInc: to check IF failure occurred 
     ELSE 
     nInc = 0 
     ENDIF 
C 
     OPEN(2700, FILE = "C:/Abaqus_JOBS/w.txt", 
    1 action = "READWRITE", status = "new") 
C If I change ´status = "new"´ to `status = "unknown"´ it works... 
     WRITE(2700,*) w 
     CLOSE(2700) 
C 
C computations 
C  
    RETURN 
    END 

    SUBROUTINE WMOD(....) 
C Subroutine WMOD is called at the end of subroutine MAIN 
C 
C UPDATE w 
    OPEN(27, FILE = "C:/Abaqus_JOBS/w.txt", 
1 action = "READWRITE", status = "UNKNOWN") 
    w1 = 0.D0 
    WRITE(27,*) w1 
    CLOSE(27) 

C  
    RETURN 
    END 

    SUBROUTINE del_file(uFile, stat, flag) 
C 
    IMPLICIT NONE 
    INTEGER uFile, stat, flag 

    IF (stat.NE.0 .OR. flag.EQ.1) THEN 
C If the unit is not open, stat will be non-zero 
    CLOSE(unit=uFile, status='delete', iostat=stat) 
    ELSE 
    CLOSE(unit=uFile, iostat=stat) 
    ENDIF 
C 
    END SUBROUTINE 

編號:Close multiple files

我的問題是,爲什麼我要改變status = "new"status = "unknown"MAIN,使這項工作?

經過一段時間我也得到了severe (9): permission to access file denied,所以對這些錯誤感到困惑。任何幫助表示讚賞 感謝

+1

?你爲什麼要從_empty_文件讀取? – ja72

+2

@ ja72:可能是爲了測試他在'Ref''d SO問題中從Alexander Vogt複製的'del_file'子例程。 –

+3

我認爲編譯時不會出現這種錯誤,它對我來說看起來像是運行時錯誤。 –

回答

3

你告訴它格式化代碼(在OPEN聲明FORM隱含的定義),但你想讀它通過使用READ(27)一個未格式化的文本。

這應該閱讀

OPEN(UNIT = 27, FILE = "C:/Abaqus_JOBS/w.txt", status = "UNKNOWN") 
READ(27, *, iostat=stat) w 
+0

不幸的是,它並沒有解決問題 – jpcgandre

+0

,錯誤聽起來像是與寫入相關聯。你確定你正在顯示所有相關的代碼嗎? – agentp

+0

我第二@喬治要求更多的代碼產生這個問題。 –