INTEGER

用途

INTEGER 類型宣告陳述式會指定整數類型之物件及函數的長度及屬性。 起始值可以指派給物件。

語法

讀取語法圖跳過視覺化語法圖INTEGERkind_selector ::,attr_spec_list:: entity_decl_list

其中:

屬性規格
是下列任何一項:
ALLOCATABLE 1 INTRINSIC PUBLIC
ASYNCHRONOUS OPTIONAL SAVE
AUTOMATIC 2 PARAMETER STATIC 2
BIND 1 POINTER TARGET
DIMENSION (array_spec) PRIVATE VALUE 1
EXTERNAL PROTECTED 1 VOLATILE
INTENT (intent_spec)    
附註:
  • 1 Fortran 2003
  • 2 IBM 延伸
kind_selector
讀取語法圖跳過視覺化語法圖(KIND = int_constant_expr) * int_literal_constant1
附註:
  • 1 IBM 延伸
 
指定整數實體的長度: 1、2、4 或 8。 int_literal_constant 無法指定類型類型參數。
屬性規格
如需特定屬性相關規則的詳細資訊,請參閱同名的陳述式。
intent_spec
INOUTINOUT
::
是雙冒號分隔字元。 當您指定屬性 = constant_expr=> NULL()時,請使用雙冒號分隔字元。
陣列規格
是維度範圍的清單
entity_decl
讀取語法圖跳過視覺化語法圖a  * 1Len2(array_spec)(array_spec) * 3Len4 /initial_value_list/5 = constant_expr => NULL()
附註:
  • 1 IBM 延伸
  • 2 IBM 延伸
  • 3 IBM 延伸
  • 4 IBM 延伸
  • 5 IBM 延伸
 
A
是物件名稱或函數名稱。 無法針對具有隱含介面的函數名稱指定 array_spec
len
會置換 kind_selector中指定的長度,且無法指定類型類型參數。 實體長度必須是整數文字常數,代表其中一個允許的長度規格。
起始值
為緊接在前的名稱 指定的實體提供起始值
constant_expr
為緊接在前的名稱所指定的實體提供常數表示式
=> NULL()
提供指標物件的起始值

規則

在衍生類型定義的環境定義內:
  • 如果 => 出現在元件起始設定中,則 POINTER 屬性必須出現在 attr_spec_list中。
  • 如果 = 出現在元件起始設定中,則 POINTER 屬性無法出現在元件 attr_spec_list中。
  • 編譯器會在類型定義的範圍設定單元內評估 constant_expr

如果針對變數出現 => ,則物件必須具有 POINTER 屬性。

如果針對變數出現 constant_expr ,則物件不能具有 POINTER 屬性。

類型宣告陳述式中的實體受針對實體指定之任何屬性的規則所限制,如對應屬性陳述式中所詳述。

類型宣告陳述式會置換有效的隱含類型規則。 您可以使用類型宣告陳述式來確認本質函數的類型。 在類型宣告陳述式中出現一般或特定本質函數名稱不會導致名稱遺失其本質內容。

如果物件是虛擬引數、可配置物件、指標、函數結果、空白一般物件、整數指標、外部名稱、本質名稱或自動物件,則無法在類型宣告陳述式中起始設定物件。 如果物件具有 AUTOMATIC 屬性,也無法起始設定該物件。 如果物件出現在區塊資料程式單元 IBM 延伸開始 中的具名共用區塊,或出現在模組 或子模組中的具名共用區塊,則可以起始設定該物件。 IBM 延伸結束

您可以使用 => NULL()來起始設定指標。

如果 array_spec 的規格表示式出現在介面主體或子程式的規格部分中,則該規格表示式可以是非常數表示式。 任何宣告的物件若使用此非常數表示式,且不是虛擬引數,則稱為 自動物件

在給定的類型宣告陳述式中不能重複屬性,也不能在範圍設定單元中明確地多次為實體提供相同的屬性。

如果陳述式包含 PARAMETER 屬性,則必須指定 constant_expr 。 如果您宣告的實體是變數,且已指定 constant_exprNULL() ,則一開始會定義該變數。

如果您宣告的實體是衍生類型元件,且已指定 constant_exprNULL() ,則衍生類型具有預設起始設定。

會根據本質指派的規則,以 constant_expr所決定的值來定義。 如果實體是陣列,則必須在類型宣告陳述式中或在相同範圍設定單元的前一個規格陳述式中指定其形狀。 變數或變數子物件無法起始設定多次。 如果 是變數,則 constant_exprNULL() 的存在意味著 是已儲存的物件,除了具名共用區塊中的物件之外。 物件的起始設定可能會影響物件的基本儲存類別。

entity_decl 中指定的 array_spec 優先於 DIMENSION 屬性中的 array_spec

沒有 ALLOCATABLE POINTER 屬性的陣列函數結果必須具有明確形狀陣列規格。

如果宣告的實體是函數,則除非它是本質函數,否則它不得具有可存取的明確介面。

如果類型宣告陳述式中出現先前定義為常數名稱的 TF,則它不再是縮寫邏輯常數,而是已命名常數的名稱。

範例

MODULE INT
  INTEGER, DIMENSION(3) :: A,B,C
  INTEGER :: X=234,Y=678
END MODULE INT

相關資訊