PUBLIC 属性によって、モジュール・エンティティーが、参照結合を介して他のプログラム単位によってアクセスできることを指定します。
PUBLIC 属性は、モジュールの有効範囲内にのみ指定できます。
モジュールには、複数の PUBLIC ステートメントを指定できますが、使用できるのは access_id_list を省略する 1 つのステートメントのみです。access_id_list を指定しない PUBLIC ステートメントは、モジュール内の潜在的にアクセス可能なすべてのエンティティーに対して、デフォルトのアクセス可能性をパブリックに設定します。モジュールにこのようなステートメントが含まれている場合、access_id_list を指定しない PRIVATE ステートメントを含めることはできません。モジュールに、access_id_list を指定しない PRIVATE ステートメントが含まれていない場合は、デフォルトのアクセス可能性はパブリックになります。アクセス可能性が明示的に指定されていないエンティティーは、デフォルトのアクセス可能性を持ちます。
パブリックである一般識別子を持つプロシージャーは、固有の識別子がプライベートだとしても、一般識別子によってアクセス可能です。 モジュール・プロシージャーに、型がプライベート・アクセス可能性を持つプライベート仮引数か、関数結果が含まれている場合、そのモジュール・プロシージャーは、プライベートなアクセス可能性を持つように宣言される必要があり、パブリックなアクセス可能性を持つ一般識別子を持たないようにする必要があります。
パブリックなアクセス可能性を持つエンティティーは、STATIC 属性を持つことができませんが、モジュール内のパブリック・エンティティーは、モジュール内の IMPLICIT STATIC ステートメントの影響を受けません。
ALLOCATABLE 1 | EXTERNAL | PROTECTED 1 |
ASYNCHRONOUS | INTRINSIC | SAVE |
CONTIGUOUS 2 | PARAMETER | TARGET |
DIMENSION | POINTER | VOLATILE |
注:
|
MODULE MC
PRIVATE ! Default accessibility declared as private
PUBLIC GEN ! GEN declared as public
INTERFACE GEN
MODULE PROCEDURE SUB1
END INTERFACE
CONTAINS
SUBROUTINE SUB1(I)
INTEGER I
I = I + 1
END SUBROUTINE SUB1
END MODULE MC
PROGRAM ABC
USE MC
K = 5
CALL GEN(K) ! SUB1 referenced because GEN has public
! accessibility and appropriate argument
! is passed
PRINT *, K ! Value printed is 6
END PROGRAM