介面區塊

介面區塊可讓您指定外部及虛擬程序的明確介面。 您也可以使用介面區塊來定義一般 ID。 介面區塊中的介面主體包含現有外部程序或虛擬程序的明確特定介面。 您也可以使用程序陳述式來指定程序的介面。

讀取語法圖跳過視覺化語法圖INTERFACE_statement

讀取語法圖跳過視覺化語法圖FUNCTION_INTERFACE_BODYSUBROUTINE_interface_bodyPROCEDURE_statement

讀取語法圖跳過視覺化語法圖END_INTERFACE_statement
INTERFACE_statement
如需語法詳細資料,請參閱 INTERFACE
END_INTERFACE_statement
如需語法詳細資料,請參閱 END INTERFACE
PROCEDURE_statement
如需語法詳細資料,請參閱 PROCEDURE

FUNCTION_interface_body

讀取語法圖跳過視覺化語法圖FUNCTION_STATEMENT

讀取語法圖跳過視覺化語法圖specification_part

讀取語法圖跳過視覺化語法圖end_function_statement

SUBROUTINE_interface_body

讀取語法圖跳過視覺化語法圖SUBROUTINE_陳述式

讀取語法圖跳過視覺化語法圖specification_part

讀取語法圖跳過視覺化語法圖end_subroutine_statement
FUNCTION_STATEMENT、SUBROUTINE_statement
如需語法詳細資料,請參閱 函數子常式
specification_part
陳述式順序及執行順序中編號為 2 3 5 的陳述式群組中的陳述式順序。
end_function_statement、end_subroutine_statement
如需這兩個陳述式的語法詳細資料,請參閱 END
在介面主體中或使用程序宣告陳述式時,您可以指定程序或抽象介面的所有性質。 請參閱 介面概念。 性質必須與子程式定義中指定的性質一致,但下列情況除外:
  1. 虛擬引數名稱可能不同。
  2. 您不需要指出程序是純程序,即使定義它的子程式是純程序也一樣。
  3. 您可以將純實際引數與非純的虛擬程序相關聯。
  4. 當你將固有元素程式與虛擬程式相關聯時,該虛擬程式不必是元素程式。
介面主體的 specification_part 可以包含陳述式,這些陳述式可指定屬性或定義資料物件的值,這些資料物件不會決定程序的性質。 這類規格陳述式對介面沒有影響。 介面區塊不指定模組程序的性質,其性質定義在模組子程式定義中。

介面主體不能包含 ENTRY 陳述式、 DATA 陳述式、 FORMAT 陳述式、陳述式函數陳述式或可執行陳述式。 您可以使用項目名稱作為介面主體中的程序名稱,來指定項目介面。

除非您指定 IMPORT 陳述式,否則介面主體不會依主機關聯存取具名實體。 它會被視為具有具有預設隱含規則的主機。 如需隱含規則的討論,請參閱 判斷類型

介面區塊可以是抽象、通用或特定。 一般介面區塊必須在 INTERFACE 陳述式中指定一般規格,而抽象或特定介面區塊不得指定此類一般規格。 如需詳細資料,請參閱 INTERFACE

抽象或特定介面區塊內的介面主體可以包含子常式及函數的介面。

同屬名稱指定單一名稱來參照介面區塊中的所有程序。 每次有程序參照具有同屬名稱時,最多只會呼叫一個特定的程序。

僅當介面區塊具有通用規格且包含在可存取每一個程序名稱的範圍設定單元中時,才容許 PROCEDURE 陳述式。

PROCEDURE 陳述式中使用的程序名稱先前不得在任何具有相同同屬 ID 之可存取介面區塊的任何 MODULE PROCEDURE 陳述式中指定。

IBM 延伸開始 對於非Fortran 子程式的介面, FUNCTIONSUBROUTINE 陳述式中的虛擬引數清單可以明確指定傳遞方法。 如需詳細資料,請參閱 虛擬引數IBM 延伸結束

範例

MODULE M
 CONTAINS
 SUBROUTINE S1(IARG)
   IARG = 1
 END SUBROUTINE S1
 SUBROUTINE S2(RARG)
   RARG = 1.1
 END SUBROUTINE S2
 SUBROUTINE S3(LARG)
   LOGICAL LARG
   LARG = .TRUE.
 END SUBROUTINE S3
END
USE M
INTERFACE SS
  SUBROUTINE SS1(IARG,JARG)
  END SUBROUTINE
  MODULE PROCEDURE S1,S2,S3
END INTERFACE
CALL SS(II)              ! Calls subroutine S1 from M
CALL SS(I,J)             ! Calls subroutine SS1
END
SUBROUTINE SS1(IARG,JARG)
  IARG = 2
  JARG = 3
END SUBROUTINE

您一律可以透過程序的特定介面來參照程序。 如果程序有同屬介面,也可以透過同屬介面來參照程序。

在介面主體內,如果虛擬引數預期是虛擬程序,則它必須具有 EXTERNAL 屬性,或者必須具有虛擬引數的介面。