INTENT

用途

INTENT 属性指定要使用的哑参数。

语法

读取语法图跳过可视语法图INTENT( INOUTINOUT )::dummy_arg_name_list
dummy_arg_name
是哑参数的名称,不能是哑过程

规则

如果指定非指针不可分配的哑参数,那么 INTENT 属性将具有以下特征:
  • INTENT(IN) 指定在执行子程序期间不得重新定义或取消定义哑参数。
  • INTENT(OUT) 指定必须先定义哑参数,然后才能在子程序中引用该参数。 在调用子程序时,此类哑参数可能会变为未定义。
  • INTENT(INOUT) 指定哑参数可以接收数据并将数据返回到调用子程序。
如果指定指针虚参数,那么 INTENT 属性将具有以下特征:
  • INTENT(IN) 指定在执行过程期间,不能更改指针虚参数的关联状态,除非已取消分配指针的目标。 如果已取消分配指针的目标,则指针哑参数的关联状态变为未定义。

    不能将 INTENT(IN) 指针虚参数用作指针赋值语句中的指针对象。 不能分配,取消分配或使 INTENT(IN) 指针虚参数无效

    如果关联的哑元自变量是具有 INTENT(OUT)INTENT(INOUT) 属性的指针,那么不能将 INTENT(IN) 指针哑元自变量指定为过程的实际自变量。

  • INTENT(OUT) 指定在执行过程时,未定义指针虚参数的关联状态
  • INTENT(INOUT) 指定哑参数可以接收数据并将数据返回到调用子程序。
如果指定可分配的哑参数,那么 INTENT 属性将具有以下特征:
  • INTENT(IN) 指定在执行过程期间,无法更改哑参数的分配状态,并且不得重新定义或取消定义哑参数。
  • INTENT(OUT) 指定在执行过程时,如果分配了相关联的实际参数,那么将取消分配该参数。
  • INTENT(INOUT) 指定哑参数可以接收数据并将数据返回到调用子程序。

如果具有 INTENT(OUT) 的哑参数是具有缺省初始化的派生类型,那么哑参数不能是假定大小的数组。

如果没有为指针或可分配的哑参数指定 INTENT 属性,那么其使用受关联实际参数的限制。

必须可定义与意图为 OUTINOUT 的哑元自变量关联的实际自变量。 因此,不能将意图为 IN的虚自变量或作为常量,常量的子对象或表达式的实际自变量作为实际自变量传递至期望意图为 OUTINOUT的自变量的子程序。

作为具有向量下标的数组部分的实际自变量不能与定义或重新定义的哑元数组 (即,意图为 OUTINOUT) 相关联。

表 1. 与 POINTER 属性兼容的属性
ALLOCATABLE 1 连续 2 TARGET
ASYNCHRONOUS OPTIONAL 1
DIMENSION POINTER VOLATILE
注意:
  • 1 Fortran 2003
  • 2 Fortran 2008

不得为意图为 OUTINOUT 的哑参数指定 VALUE 属性

%VAL 内置函数 (用于语言间调用) 只能用于与意向为 IN的虚自变量对应的实际自变量,或者未指定任何意向。 此约束不适用于 %REF 内置函数。

示例

      PROGRAM MAIN
        DATA R,S /12.34,56.78/
        CALL SUB(R+S,R,S)
      END PROGRAM

      SUBROUTINE SUB (A,B,C)
        INTENT(IN) A
        INTENT(OUT) B
        INTENT(INOUT) C
        C=C+A+ABS(A)            ! Valid references to A and C
                                ! Valid redefinition of C
        B=C**2                  ! Valid redefinition of B
      END SUBROUTINE

相关信息