Fortran 从具有备用项的函数返回值

Fortran 从具有备用项的函数返回值,fortran,Fortran,当函数具有备用条目时,是否需要为条目名称设置返回值,或者如果未设置备用名称,主名称是否始终有效?比如说, INTEGER FUNCTION MYFUNC( ARG ) INTEGER ARG INTEGER MYFUNC2 C ... do something here... GOTO 100 ENTRY MYFUNC2( ARG ) C ... do something else her

当函数具有备用条目时,是否需要为条目名称设置返回值,或者如果未设置备用名称,主名称是否始终有效?比如说,

      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
整数函数MYFUNC(ARG)
整数参数
整数MYFUNC2
C在这里做点什么。。。
转到100
条目MYFUNC2(ARG)
C在这里做点别的
100继续
MYFUNC=
C是否需要下一行,是否可以省略?
myfunc2=myfunc
返回
结束

引用Fortran 2008标准第12.6.2.6条入口声明:

[……]

3如果ENTRY语句位于函数子程序中,则附加 函数由该子程序定义。函数的名称为 条目名称及其结果变量的名称为result name或is 如果未提供结果名称,则输入名称。 [...] 如果 ENTRY语句中命名的函数与 函数中命名的函数的结果的特征 语句中,它们的结果变量标识相同的变量,但 它们的名称不必相同。否则,它们就是存储器 关联的和应全部为非指针式、不可分配的标量 是默认整数、默认实数、双精度实数、默认值 复杂,或默认逻辑

我读这段突出显示的文章的方式是

myfunc2 = myfunc
确实不需要,因为
MYFUNC
MYFUNC2
都是相同类型的标量整数


由于function语句和entry语句均未指定任何
result
,因此函数名将变为结果名。这在第12.6.2.2条功能子程序中有规定

[……]

4如果出现结果,则函数的结果变量的名称 是结果名和函数名在中的所有引用 其作用域中的执行部分语句引用函数本身。 如果结果未出现,则结果变量的名称为 函数名以及函数名在 其作用域中的执行部分语句是对结果的引用 变量[……]


这个答案中唯一缺少的是:“不要使用
entry
语句”。