2016-02-20 75 views
1

我第一次在gfortran中編譯一箇舊的.for文件(Fortran 77),並且獲得了以前從未見過的錯誤(使用另一個我無法訪問的編譯器)。誤差如下:使用gfortran在Fortran中格式化字符串錯誤

smog5.for:159:32:

98 format (1x,f4.1,5x,14(1x,pe9.3)) 

1錯誤:P描述符需要在格式串的領先比例因子在(1) smog5.for:161:35:

96 format (/'Emissions:',10(1x,pe9.3)) 

1錯誤:P描述符需要在格式串的領先比例因子在(1) smog5.for:141:20:

 write (1,98) etime,(c(i),i=1,10),o,oh,rk(1),rk(6) 

1錯誤:FORMAT標籤98在(1)沒有定義 smog5.for:153:21:

 write (1,96) (E(i),i=1,10) 

1錯誤:FORMAT標籤96在(1)沒有定義

的麻煩代碼(一個更大的計劃之內)位似乎是:

goto 10 

98 format (1x,f4.1,5x,14(1x,pe9.3)) 
97 format (/'end day',i2/) 
96 format (/'Emissions:',10(1x,pe9.3)) 

    end 


    subroutine hybrid(n,c,rk,tin,tout,E,dep,vent,etime,o,oh,m,o2) 

有人可以幫助我弄清楚什麼是錯這裏的語法?或者這是否會用另一個編譯器解決?不幸的是,我不能訪問以前的編譯器,因爲它在前學校的安全服務器上。我已將該程序翻譯爲.f90,但得到相同的P描述符錯誤。

回答

2

P格式說明符需要前面的數字,例如1pe9.3P說明符在輸入和輸出上表現不同。輸出很方便,但輸入很奇怪 - 請參考文檔。

有關未定義格式標籤的錯誤消息是格式字符串(P描述符)錯誤的後果,應在解決該問題時解決。

+0

根據一個編譯器的文檔,非標準P本身相當於0P。 (在這個例子中,它看起來與沒有p一樣,...) – agentp

+0

,也就是說。 '0p'重置之前的p。在這種情況下沒有,所以它什麼都不做。 – agentp

+0

M.S.B,你搖滾!我以前使用的fortran編譯器假設(如agentp建議的那樣),未指定的P將等於0P。但gfortran顯然不是!我添加了1個整數作爲1pe9.3並正確編譯。非常感謝! – Scott