2012-02-15 204 views

回答

5

意圖(INOUT)如果實際參數是一個變量永遠是可行的(見Fortran intent(inout) versus omitting intent),但是給程序員和編譯器提供了沒有信息。也不需要一個意圖屬性,因此您可以逐步改進代碼。如果變量只出現在賦值語句的RHS中,那麼intent(in)是最好的。如果僅僅在LHS上,那麼意圖(out)。如果將變量用作一個或多個過程調用的參數,則會變得更加複雜,因爲那樣您必須跟蹤該過程中的用法。因此,如果您從最低級別的程序開始並按照您的方式工作,那麼最簡單。大多數編譯器會警告錯誤,例如分配給一個intent(in)參數。爲了讓編譯器檢查各個過程的一致性,每個被調用過程的接口都必須對調用者是顯式的。知道接口的最簡單方法是將程序放入一個或多個模塊中並「使用」該模塊。接口在同一模塊中的過程之間是顯式的。

3

艾倫·米勒寫了一個程序叫to_f90.f90,對於形成良好F77代碼會自動處理這一點。有一個在他的網站的鏡像:

http://jblevins.org/mirror/amiller/

具體的例行位於:

http://jblevins.org/mirror/amiller/to_f90.f90

+1

+1;不知道這個工具存在。這激勵我尋找其他人:還有Polyhedron Software的在線工具http://www.polyhedron.com/plusfortonline.php。 – 2012-02-15 16:39:36

1

如前所述,intent(inout)應該始終有效。

對於變量X的意圖(in)和意圖(out),我們建議在子例程中爲「X =」和「X =」進行搜索(CTRL + F或其他)。通過這種方式,您可以在執行此子程序期間檢查變量是否被修改。如果不是:intent(in)。這將永遠是真實的,但如果變量在子函數中被修改或者調用另一個例程。因此,首先要檢查您正在翻譯的子例程中是否調用了函數或例程。