函数引用

函数引用用作表达式中的主函数:
读取语法图跳过可视语法图data_ref分隔符 绑定名称1procedure_component_ref2功能名称(actual_argument_spec_list )
备注信息:
  • 1 Fortran 2003
  • 2 Fortran 2003
执行函数引用会导致以下事件顺序:
  1. 对作为表达式的实际参数进行求值。
  2. 实际参数与其对应的哑参数相关联。
  3. 控制对指定函数的传输。
  4. 执行函数。
  5. 函数结果变量的值(或状态或目标,对于指针函数)可用于引用表达式。

Fortran 2003 开始 如果函数引用中的 binding_name 是指向特定函数的,则所引用的函数是指向 data-ref 的动态类型中具有该名称的绑定标识的函数。

如果函数引用中的 binding_name 也属于通用过程,则在 data-ref 声明类型中具有该名称的通用绑定将用于选择特定绑定:
  1. 如果引用与该泛型绑定的特定绑定之一一致,则选择该特定绑定。
  2. 否则,如果引用与该通用绑定的某个特定绑定的元素引用一致,那么将选择该特定绑定。
该参考是指与所选特定装订具有相同名称的装订在 数据引用动态类型中确定的程序。 Fortran 2003 结束

函数引用的执行不得改变出现函数引用的语句中任何其他数据项的值。 在 逻辑 IF 语句WHERE 语句的逻辑表达式中调用函数引用可能会影响表达式值为 true 时执行的语句中的实体。

IBM 扩展开始 参数列表内置函数 %VAL%REF分别通过允许按值和按引用传递参数来帮助跨语言调用。 它们可以在非Fortran 过程引用中以及在接口主体中的子程序语句中指定。 (请参阅 %VAL 和 %REF (IBM 扩展)。) 参见函数声明和函数引用的递归示例。 IBM 扩展结束

在进入可分配函数时,结果变量的分配状态会变为未分配

在函数执行期间,函数结果变量可以被分配和释放任意次数。 但是,应该分配函数结果变量并且从函数退出时应具有一个定义的值。 不会在退出函数时立即对结果变量解除分配,而是在执行了出现函数引用的语句之后才会进行。