-qsave
種類
用途
指定區域變數的預設儲存類別。
語法
@PROCESS:
@PROCESS SAVE[({ALL | DEFAULTINIT})] | NOSAVE 預設值
此選項的預設值取決於所使用的呼叫指令:
- 當使用 xlf 來編譯 .f、.F、 .f77或 .F77 檔案,預設值為 -qsave=all。
- 若為 f77 及 fort77 呼叫指令,預設值為 -qsave=all。
- 對於所有其他呼叫指令,預設值為 -qnosave。
參數
-qsave 子選項包括:
- 全部
- 預設儲存類別為 STATIC。
- 預設
- 對於已指定預設起始設定的衍生類型變數,預設儲存類別為 STATIC ,否則為 AUTOMATIC 。
all 和 defaultinit 子選項互斥。
用法
-qnosave 選項會將預設儲存類別設為 AUTOMATIC。 此用法通常適用於多執行緒應用程式 以及使用 -qrecur 選項編譯的子程式。
您可以指定 -qsave 選項來複製 FORTRAN 77 程式的行為。 xlf、 f77 及 fort77 指令已 -qsave 列為 配置檔 中的預設選項,以保留先前的行為。 預設配置檔路徑為 /opt/IBM/xlf/16.1.0/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 