When a function has an alternate entry, is it necessary to set the return value for the entry name, or will the primary name always work if the alternate name is not set? For example,
INTEGER FUNCTION MYFUNC( ARG )
INTEGER ARG
INTEGER MYFUNC2
C ... do something here...
GOTO 100
ENTRY MYFUNC2( ARG )
C ... do something else here
100 CONTINUE
MYFUNC = <some value>
C .. is the next line needed, of can it be omitted?
myfunc2 = myfunc
RETURN
END
答案 0 :(得分:2)
引用Fortran 2008标准,Cl。 12.6.2.6 ENTRY语句:
[...]
3如果ENTRY语句在函数子程序中,则另外一个 函数由该子程序定义。该函数的名称是 entry-name及其结果变量的名称是result-name或is 如果没有提供结果名称,则为entry-name。 [...] 如果结果的特征 在ENTRY语句中命名的函数与 在FUNCTION中命名的函数的结果的特征 声明,它们的结果变量标识相同的变量 他们的名字不一定相同。否则,他们就是存储 相关的,并且都应该是非指针的,不可分配的标量 是默认整数,默认实数,双精度实数,默认值 复杂的,或默认的逻辑。
我阅读突出显示的段落的方式是行
myfunc2 = myfunc
确实不需要,因为MYFUNC
和MYFUNC2
都是同一类型的标量整数。
由于函数语句和entry语句都没有指定result
,因此函数名称变为 result-name 。这在Cl中指定。 12.6.2.2 功能子程序
[...]
4如果出现RESULT,则为该函数的结果变量的名称 是结果名称和所有出现的函数名称 其范围内的执行部分语句指的是函数本身。 如果未显示RESULT,则结果变量的名称为 function-name 以及所有出现的函数名称 其范围内的执行部分语句是对结果的引用 变量。 [...]