Fortran/FAQ
本文包含一些關於 Fortran 的常見問題解答 (FAQ) 及其答案。
答:Fortran 並沒有過時,而且在不久的將來也不會過時。Fortran 是一種通用程式語言,適用於許多應用程式。然而,它擅長數值計算和高效能計算。它速度快、可移植性好,並且可以無縫處理陣列。正因為如此,存在許多用於數值演算法的高質量 Fortran 庫,它在科學界廣泛使用(例如數值天氣預報)。該語言本身仍在維護,並定期更新現代功能;最新版本是 Fortran 2018。
答:Oracle Solaris Studio、GNU Fortran、G95 和 Silverfrost(僅限 Windows)是免費的 Fortran 95 編譯器,Absoft、IBM、Intel、Lahey、NAG、Pathscale 和 PGI 銷售 Fortran 編譯器。有關 Fortran 編譯器的比較資訊,請訪問 維基百科。
答:使用“內部寫入”建立檔名,例如
write (file_name,"('out_',i2.2,'.txt')") i
答:一種更簡潔的方法是
i=<file number>
WRITE(file_name, fmt = '(A4,I0,A4)')'out_',i,'.txt'
這樣格式就很清晰,你正在將正確的字串寫入變數。我假設你想要一個整數作為數字。“I”格式語句需要一個整數長度,或者在某些情況下為零。你可能在想 F,其中小數點表示要考慮的小數位數。
答:Gfortran 不接受此塊
write(file_name,'cp',(i5.5),'.out') ITN
open (67,file = file_name)
出現錯誤,檔案標籤必須是 CHARACTER 型別
其他人可以幫忙嗎?
答:請參見上面的答案。基本上,你寫入變數 file_name 的方式不正確。
WRITE(file_name,fmt='(A2,I0,A4)')'cp',ITN,'.out'
OPEN(UNIT=67, file=file_name, status='new')
假設 ITN 已宣告為整數並被賦予了值。
答:使用“內部讀取”或“內部寫入”。實際上,你使用一個字元變數作為檔名,並讀取或寫入 I/O 列表。你編寫類似以下的內容
read (character_variable, format) list of variables
將字串轉換為另一種型別,以及
write (character_variable, format) list of variables
從另一種型別轉換為字串,如下面的程式所示
program xconvert_integer_string
character(20) :: cnum
integer :: i
i = 445
write(cnum,'(i5)') i
write(*,'(a)') trim(cnum) ! should output " 445"
write(cnum,'(i5.5)') i
write(*,'(a)') trim(cnum) ! should output "00445"
i = 34
write(cnum,'(i0)') i
write(*,'(a)') trim(cnum) ! should output "34"
end program xconvert_integer_string
此答案基於 Paul van Delst 和 Dick Hendrickson 在 comp.lang.fortran 中的郵件。
答。Fortran 2008 標準提供 execute_command_line 內在過程來進行系統呼叫。以前的版本沒有標準方法來進行系統呼叫,但許多編譯器都有名為“system”或類似名稱的擴充套件。請查閱編譯器的文件。在 Fortran 2003 中,可以呼叫 C 程式碼,並且可以從 C 中呼叫作業系統。