隱含
用途
IMPLICIT 陳述式會變更或確認本端實體的預設隱含類型或預設儲存類別,或使用指定的 IMPLICIT NONE 格式,完全使隱含類型規則無效。
語法
- 宣告 _type_spec
- 指定資料類型。 請參閱 類型宣告。
- 範圍
- 是單一字母或字母範圍。 字母範圍的格式為 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 中的字母不能同時在範圍設定單元中指定 declaration_type_spec 和 UNDEFINED 。 STATIC 和 AUTOMATIC 都不能同時指定給相同的字母。 
如果您在範圍設定單元中指定表單 IMPLICIT NONE ,則必須使用類型宣告陳述式來指定該範圍設定單元本端名稱的資料類型。 您無法參照沒有明確定義資料類型的名稱; 這可讓您控制不小心參照的所有名稱。 當指定 IMPLICIT NONE 時,您無法在相同的範圍設定單元中指定任何其他 IMPLICIT 陳述式,但包含 STATIC 或 AUTOMATIC的陳述式除外。 您可以使用 -qundef 編譯器選項來編譯程式,以達到與 IMPLICIT NONE 陳述式出現在容許 IMPLICIT 陳述式的每一個範圍設定單元中的相同效果。
IMPLICIT UNDEFINED 會關閉指定字元或字元範圍的隱含資料鍵入預設值。 當您指定 IMPLICIT
UNDEFINED時,必須在範圍設定單元中宣告以指定字元開頭的所有符號名稱的資料類型。 對於沒有明確定義資料類型的範圍設定單元本端的每一個符號名稱,編譯器會發出診斷訊息。
IMPLICIT 陳述式不會變更本質函數的資料類型。
使用 -qsave/-qnosave 編譯器選項會修改儲存類別的預先定義使用慣例:
| -qsave 編譯器選項 | 建立預先定義的慣例 | 隱含靜態 (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 延伸)
- XL Fortran 編譯器參照 中的 -qundef 選項
- XL Fortran 編譯器參照 中的 -qsave 選項
