-qsave

種類

語言元素控制項

用途

指定區域變數的預設儲存類別。

語法

讀取語法圖跳過視覺化語法圖 -q nosavesave=alldefaultinit
@PROCESS:

@PROCESS SAVE[({ALL | DEFAULTINIT})] | NOSAVE

預設值

此選項的預設值取決於所使用的呼叫指令:
  • 當使用 xlf 來編譯 .f、.F、 .f77或 .F77 檔案,預設值為 -qsave=all
  • 若為 f77fort77 呼叫指令,預設值為 -qsave=all
  • 對於所有其他呼叫指令,預設值為 -qnosave

參數

-qsave 子選項包括:

全部
預設儲存類別為 STATIC
預設
對於已指定預設起始設定的衍生類型變數,預設儲存類別為 STATIC ,否則為 AUTOMATIC

alldefaultinit 子選項互斥。

用法

-qnosave 選項會將預設儲存類別設為 AUTOMATIC。 此用法通常適用於多執行緒應用程式 以及使用 -qrecur 選項編譯的子程式。

您可以指定 -qsave 選項來複製 FORTRAN 77 程式的行為。 xlff77fort77 指令已 -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

相關資訊