2016-04-29 57 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函数结果。)