2015-01-12 92 views
0

我使用Intel Visual Fortran。我正在處理的問題有許多參數,我希望避免在每個例程開始時重複聲明和啓動它們。使用模塊在Fortran中初始化

有什麼辦法可以使用MODULES初始化這些參數嗎?
當然,答案是肯定的,但是一些內在函數在啓動語句中不被接受。
這是一個簡單的示例代碼,

MODULE mod 
     IMPLICIT NONE 
     REAL, PARAMETER :: x = SQRT (4) 
    END MODULE 

    PROGRAM prog 
     USE mod 
     IMPLICIT NONE 
     PRINT *, x 
    END PROGRAM 

一旦編譯,編譯器顯示我這個錯誤:

Error #6362: The data types of the argument(s) are invalid. 
[SQRT] Source1.f90 

雖然使用ABS ()後面沒有這個錯誤,但SIN ()確實。

回答

4

問題是sqrt(和sin)內在需要浮點參數。剛好碰巧有浮點數和abs的整數實現。

4替換爲4.它應該工作。

+0

上帝!多麼愚蠢的問題!對不起,感謝您的及時回覆。 – Shaqpad

+1

我認爲在這種情況下,你可以指責英特爾編譯器錯誤。它恰好在gfortran中更加明確:)。 –

+0

在生產代碼中,應該定義一個帶有KIND的REAL。 – Fortranner