IMPLICIT
用途
IMPLICIT 语句更改或确认本地实体的缺省隐式类型或缺省存储类,或者在指定了格式 IMPLICIT NONE 的情况下,使隐式类型规则完全失效。
语法
- declaration_type_spec
- 指定数据类型。 请参阅 类型声明 (Type Declaration)。
- 范围
- 是单个字母或字母范围。 字母范围的格式为 letter1-letter2,其中 letter1 是范围内的第一个字母,letter2(跟在 letter1 后面)是范围内的最后一个字母。 美元符号 ($) 和下划线 (_) 也在允许范围内。 下划线 (
_) 跟在美元符号 ($) 后面,美元符号后面是Z。 因此,Y-_与Y,Z,$,_相同。
规则
字母范围不能重叠;即,不能为给定的字母指定多个类型。
在给定的作用域限定单元中,如果未在 IMPLICIT 语句中指定字符,那么程序单元或接口主体中的实体的隐式类型为以字符 I-N开头的实体的缺省整数,否则为缺省实数。 内部或模块过程的缺省值与主机作用域限定单元使用的隐式类型相同。
对于以 range_list 指定的字符开头且未显式指定类型的任何数据实体名称,将提供由紧接之前的 declaration_type_spec 指定的类型。 请注意,如果派生类型可被主机作用域访问,则隐式类型推导可以是在本地作用域内不可访问的派生类型。
宿主作用域单元的隐式类型规则也适用于 BLOCK结构中。 
IMPLICIT 语句中指定的类型不能是 VECTOR 类型。
不能在 declaration_type_spec 中指定延迟长度类型参数。
对于任何数据类型,您指定为 STATIC 或 AUTOMATIC 的字符或字符范围也可以出现在 IMPLICIT 语句中。 range_list 中的字母不能在作用域限定单元中同时指定 声明式类型规范 和 UNDEFINED 。 对于同一字母,也不能同时指定 STATIC 和 AUTOMATIC 。 
如果在作用域限定单元中指定格式 IMPLICIT NONE ,那么必须使用类型声明语句为该作用域限定单元的本地名称指定数据类型。 不能引用没有明确定义的数据类型的名称;这使您可以控制所有无意中引用的名称。 指定 IMPLICIT NONE 时,不能在同一作用域限定单元中指定任何其他 IMPLICIT 语句,但包含 STATIC 或 AUTOMATIC的语句除外。 您可以使用 -qundef 编译器选项编译程序,以实现与在允许 IMPLICIT 语句的每个作用域限定单元中出现的 IMPLICIT NONE 语句相同的效果。
IMPLICIT UNDEFINED 关闭指定字符或字符范围的隐式数据输入缺省值。 指定 IMPLICIT
UNDEFINED时,必须声明作用域限定单元中以指定字符开头的所有符号名称的数据类型。 对于没有显式定义的数据类型的作用域限定单元本地的每个符号名称,编译器都会发出一条诊断消息。
IMPLICIT 语句不会更改内部函数的数据类型。
使用 -qsave/-qnosave 编译器选项可修改存储类的预定义约定:
| -qsave 编译器选项 | 进行预定义约定 | IMPLICIT STATIC( a - _ ) |
| -qnosave 编译器选项 | 进行预定义约定 | IMPLICIT AUTOMATIC( a - _ ) |
即使指定了 -qmixed 编译器选项,范围列表项也不区分大小写。 例如,在指定了 -qmixed 的情况下, IMPLICIT
INTEGER(A) 会影响以 A 开头的数据对象以及以 a开头的数据对象的隐式类型。
示例
IMPLICIT INTEGER (B), COMPLEX (D, K-M), REAL (R-Z,A)
! This IMPLICIT statement establishes the following
! implicit typing:
!
! A: real
! B: integer
! C: real
! D: complex
! E to H: real
! I, J: integer
! K, L, M: complex
! N: integer
! O to Z: real
! $: real
! _: real
相关信息
- 确定类型 ,用于讨论隐式规则
- 变量的存储类(IBM 扩展)
- IBM® Open XL Fortran 编译器参考 中的 -qundef 选项
- IBM Open XL Fortran Compiler Reference 中的 -qsave 选项
