接口概念

过程的接口确定过程引用的形式。 该接口包括:
  • 过程的特征
  • 过程的名称
  • 每个哑参数的名称和特征
  • 过程的通用标识(如果有)
过程的特征:
  • 将过程区分为子例程或函数
  • 将每个哑参数区分为数据对象、哑过程或替代返回说明符

    虚拟数据对象的特征是其声明的类型、类型参数(如果有)、形状 TS 29113 开始 (除非是假设等级) TS 29113 结束 、意图、是否可选、可分配、 多态、 指针、目标,或者是否具有 VALUECONTIGUOUS属性。 类型参数或数组边界确定对其他对象的任何依赖都是一个特征。 如果假设或延迟了形状、大小或字符长度,则这是一个特征。

    哑过程的特征是它的接口的显式性、它的过程特性(如果接口是显式的)以及它是否是可选的。

  • 如果过程是函数,它指定结果值的特征,具体而言:
    • 声明的类型
    • 任何类型参数
    • 排名
    • 结果值是否为指针
    • 结果值是否是过程指针
    • 结果值是否可分配。
    • 结果值是否为多态
    • Fortran 2008 开始结果值是否连续。 Fortran 2008 结束
    对于非指针、不可分配的数组结果,其形状是一个特征。 任何对类型参数或数组边界确定的其他对象的依赖都是一个特征。 如果假定了字符对象的长度,那么这是一个特征。 如果函数结果的类型参数被延迟,那么延迟的参数是一个特征。
  • 确定过程是 PURE 还是 ELEMENTAL
  • 确定该过程是否具有 BIND 属性。

如果过程在作用域限定单元中是可访问的,那么它具有在该作用域限定单元中显式或隐式的接口。 规则如下:

实体 接口
哑过程 如果接口块存在或可访问,或者如果显式接口由 PROCEDURE 声明语句指定,那么在作用域限定单元中显式。 在所有其他情况下都是隐式的。
外部子程序 如果接口块存在或可访问,或者如果 PROCEDURE 声明语句指定了显式接口,那么在作用域限定单元中不是它自己的显式接口。 在所有其他情况下都是隐式的。
带有结果子句的递归过程 在子程序的自身作用域限定单元中为显式。
模块过程 始终为隐式。
内部过程 始终为隐式。
通用过程 始终为隐式。
内部过程 始终为隐式。
语句函数 总是为隐式。

内部子程序不能出现在接口块或 PROCEDURE 声明语句中。

过程在作用域限定单元中不得有多个可访问的接口。

不能在接口块或 PROCEDURE 声明语句中指定语句函数的接口。