2014-02-26 73 views
0

我工作的一些科學代碼,主要是F77也有些F95。在某些地方,我需要在我的F95代碼中包含F77代碼。有沒有辦法讓這個代碼在我的代碼中使用特定的編譯器標誌或其他東西很好地播放?我正在使用gfortran,偶爾也會使用。我可以修改遺留代碼,但我需要以明智的方式來保持與其他F77代碼的向後兼容性,同時還可以向前兼容F95代碼。結合F77和F95 Fortran代碼

我得到這樣的錯誤:

cstruc:16.12: 
    Included at mod_op.f90:6: 

     REAL*8 
      1 
Error: Invalid character in name at (1) 
cstruc:17.6: 
    Included at mod_op.f90:6: 

    &  RH, RH1,  ! ln rho 
     1 
Error: Invalid character in name at (1) 
cstruc:18.6: 
    Included at mod_op.f90:6: 

    &  RHP, RHP1, ! d ln rho/d ln p 
     1 
Error: Invalid character in name at (1) 
cstruc:19.6: 
    Included at mod_op.f90:6: 

    &  RHT, RHT1, ! d ln rho/d ln T 
     1 
Error: Invalid character in name at (1) 

cstruc看起來是這樣的:

REAL*8 
&  RH, RH1,  ! ln rho 
&  RHP, RHP1, ! d ln rho/d ln p 
&  RHT, RHT1, ! d ln rho/d ln T 
&  PSI,   ! ln Lambda (for degenerate gas) 
&  RHPSI,  ! d ln rho/d PSI 
&  RHPSIP,  ! d2 ln rho/d PSI d ln P 
&  RHPSIT,  ! d2 ln rho/d PSI d ln T 
&  PL,   ! P at J1 
&  TONI   ! T at J1 

任何幫助深表感謝。謝謝!

+2

的問題不應該是F77 VS F95,但自由格式與固定格式。 –

回答

3

也有一些例外,Fortran 77的代碼是Fortran 95的代碼。我猜你的錯誤來自於你試圖將固定格式的源代碼(你的F77代碼在cstruc中)編碼爲一個自由格式的源代碼文件mod_op.f90。這不太可能結束。

大多數編譯器將承擔」 .F90" 結尾的文件是自由格式,所以如果你真的是利用固定形式,那麼你將需要一個編譯器標誌覆蓋的假設。

是可能的自由和固定格式的代碼合併成一個最終目標(每個單獨編譯),但一個好的建議,就如何解決你所看到的問題可以用更詳細只來了。

但是,如果您正在嘗試使用include來創建替換通用塊的模塊,那麼沒有理由不能使用固定格式的F95功能。只要有選擇地做。

+0

哦,有趣的..所以,如果我只是以固定的形式編寫代碼,但編譯爲Fortran 90/95,它應該沒問題..我試圖完全將我的代碼轉換爲F77,但後來我意識到我需要現代功能。我明天會試一試:)謝謝! – Durand

+0

這工作完美,謝謝! – Durand

4

我建議嘗試從http://fortranwiki.org/fortran/show/Continuation+lines

的「交集」的形式,它是合法的,免費和固定的源代碼。

+0

這是一個很好的觀點。加上將任何列-1「C」更改爲「!」這應該涵蓋大部分非瘋狂的形式差異。 – francescalus

+0

我遇到過這個,但是由於某種原因,它並沒有完全正常工作。但我會再試一次。謝謝! – Durand