PUBLIC

目的

PUBLIC 属性によって、モジュール・エンティティーが、参照結合を介して他のプログラム単位によってアクセスできることを指定します。

構文

構文図を読む構文図をスキップする
>>-PUBLIC--+------------------------+--------------------------><
           '-+----+--access_id_list-'   
             '-::-'                     

access_id
一般仕様、あるいは、変数、プロシージャー、派生型、定数、または名前リストのグループの名前です。

規則

PUBLIC 属性は、モジュールの有効範囲内にのみ指定できます。

モジュールには、複数の PUBLIC ステートメントを指定できますが、使用できるのは access_id_list を省略する 1 つのステートメントのみです。access_id_list を指定しない PUBLIC ステートメントは、モジュール内の潜在的にアクセス可能なすべてのエンティティーに対して、デフォルトのアクセス可能性をパブリックに設定します。モジュールにこのようなステートメントが含まれている場合、access_id_list を指定しない PRIVATE ステートメントを含めることはできません。モジュールに、access_id_list を指定しない PRIVATE ステートメントが含まれていない場合は、デフォルトのアクセス可能性はパブリックになります。アクセス可能性が明示的に指定されていないエンティティーは、デフォルトのアクセス可能性を持ちます。

パブリックである一般識別子を持つプロシージャーは、固有の識別子がプライベートだとしても、一般識別子によってアクセス可能です。 モジュール・プロシージャーに、型がプライベート・アクセス可能性を持つプライベート仮引数か、関数結果が含まれている場合、そのモジュール・プロシージャーは、プライベートなアクセス可能性を持つように宣言される必要があり、パブリックなアクセス可能性を持つ一般識別子を持たないようにする必要があります。

パブリックなアクセス可能性を持つエンティティーは、STATIC 属性を持つことができませんが、モジュール内のパブリック・エンティティーは、モジュール内の IMPLICIT STATIC ステートメントの影響を受けません。

表 1. PUBLIC 属性と互換性のある属性
ALLOCATABLE  1  EXTERNAL PROTECTED  1 
ASYNCHRONOUS INTRINSIC SAVE
CONTIGUOUS  2  PARAMETER TARGET
DIMENSION POINTER VOLATILE
注:
  •  1  Fortran 2003
  •  2  Fortran 2008

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

関連情報