-qsave
类别
用途
指定局部变量的缺省存储类。
语法
@PROCESS:
@PROCESS SAVE[({ALL | DEFAULTINIT})] | NOSAVE 缺省值
此选项的缺省值取决于使用的调用命令:
- 当 xlf 用于编译 .f , .F , .f77或 .F77 文件,缺省值为 -qsave=all。
- 对于 f77 和 fort77 调用命令,缺省值为 -qsave=all。
- 对于所有其他调用命令,缺省值为 -qnosave。
参数
-qsave 子选项包括:
- all
- 缺省存储类为 STATIC。
- defaultinit
- 对于指定了缺省初始化的派生类型变量,缺省存储类为 STATIC ,否则为 AUTOMATIC 。
all 和 defaultinit 子选项互斥。
用途
-qnosave 选项将缺省存储类设置为 AUTOMATIC。 对于多线程应用程序,此用法通常是必需的 以及使用 -qrecur 选项编译的子程序。
您可以指定 -qsave 选项以复制 FORTRAN 77 程序的行为。 xlf, f77 和 fort77 命令已 -qsave 列示为 配置文件 中的缺省选项,以保留先前的行为。 缺省配置文件路径为 /opt/IBM/openxlf/17.1.1/etc/xlf.cfg.nn
示例
以下示例说明了 -qsave 选项对派生数据类型的影响:
PROGRAM P
CALL SUB
CALL SUB
END PROGRAM P
SUBROUTINE SUB
LOGICAL, SAVE :: FIRST_TIME = .TRUE.
STRUCTURE /S/
INTEGER I/17/
END STRUCTURE
RECORD /S/ LOCAL_STRUCT
INTEGER LOCAL_VAR
IF (FIRST_TIME) THEN
LOCAL_STRUCT.I = 13
LOCAL_VAR = 19
FIRST_TIME = .FALSE.
ELSE
! Prints " 13" if compiled with -qsave or -qsave=all
! Prints " 13" if compiled with -qsave=defaultinit
! Prints " 17" if compiled with -qnosave
PRINT *, LOCAL_STRUCT
! Prints " 19" if compiled with -qsave or -qsave=all
! Value of LOCAL_VAR is undefined otherwise
PRINT *, LOCAL_VAR
END IF
END SUBROUTINE SUB 