Return value from function with alternate entry

时间:2015-07-31 20:51:04

标签: fortran

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

1 个答案:

答案 0 :(得分:2)

引用Fortran 2008标准,Cl。 12.6.2.6 ENTRY语句

  

[...]

     

3如果ENTRY语句在函数子程序中,则另外一个   函数由该子程序定义。该函数的名称是   entry-name及其结果变量的名称是result-name或is   如果没有提供结果名称,则为entry-name。   [...]   如果结果的特征   在ENTRY语句中命名的函数与   在FUNCTION中命名的函数的结果的特征   声明,它们的结果变量标识相同的变量   他们的名字不一定相同。否则,他们就是存储   相关的,并且都应该是非指针的,不可分配的标量   是默认整数,默认实数,双精度实数,默认值   复杂的,或默认的逻辑。

我阅读突出显示的段落的方式是行

myfunc2 = myfunc
确实不需要

,因为MYFUNCMYFUNC2都是同一类型的标量整数。

由于函数语句和entry语句都没有指定result,因此函数名称变为 result-name 。这在Cl中指定。 12.6.2.2 功能子程序

  

[...]

     

4如果出现RESULT,则为该函数的结果变量的名称   是结果名称和所有出现的函数名称   其范围内的执行部分语句指的是函数本身。   如果未显示RESULT,则结果变量的名称为   function-name 以及所有出现的函数名称   其范围内的执行部分语句是对结果的引用   变量。 [...]