2016-04-29 132 views
0

我有一個FORTRAN函數來改變字符串的情況下函數返回改變其輸入

Function chcase (a) Result (b) 
Character (Len=:), Allocatable :: b 
Character (Len=*), Intent (In) :: a 

Create string s, upper case of string a 
... 
b = Trim (s) 

End Function chcase 

我希望能夠通過調用

s = chcase (s) 

改變使用相同字符串的話應該我更好地利用

Character (Len=*), Intent (InOut) :: a 

使用意向(在)我仍然得到正確的結果

回答

2

根據語言規範,對於語法s = chcase(s),功能參考chcase(s)的評估在將結果值分配給s之前完成。

要使用的適當的INTENT規格是在相關過程執行期間反映僞參數性質的規格。對於這種情況,如果chcase函數的遺漏內容是明智的,那麼這可能是INTENT(IN)

當賦值發生的時候,函數的啞參數的意圖規範是不相關的 - 函數已經完成執行,並且僞參數不再存在。 (Fortran 77在對字符變量的自賦值方面有限制,但這些與今天不相關 - Fortran 77也沒有INTENT規範或ALLOCATABLE函數結果。)