目的
PRIVATE 属性は、使用関連付けを介してもモジュール外ではモジュール・エンティティーにアクセスできないことを指定します。
構文
>>-PRIVATE--+------------------------+------------------------->< '-+----+--access_id_list-' '-::-' |
規則
PRIVATE 属性はモジュールの有効範囲にだけ指定できます。
1 つのモジュールに複数の PRIVATE ステートメントを指定できますが、access_id_list を省略できるステートメントは 1 つだけです。 access_id_list を指定していない PRIVATE ステートメントでは、モジュール内で潜在的にアクセス可能なエンティティーのデフォルトのアクセス可能度をプライベートに設定しています。このようなステートメントを含むモジュールに access_id_list を持たない PUBLIC ステートメントを指定することはできません。モジュールにこのようなステートメントを指定していない場合、デフォルトのアクセス可能度はパブリックです。明示的にアクセス可能度を指定していないエンティティーにはデフォルトにアクセス可能度があります。
パブリックな総称識別子を持つプロシージャーの場合、特定の識別子がプライベートであったとしても、総称識別子でそのプロシージャーにアクセスできます。プライベートなアクセス可能度を持つプライベート仮引き数または関数結果がモジュール・プロシージャーに含まれる場合、そのモジュール・プロシージャーはプライベートなアクセス可能度を持つということを宣言しなければなりません。また、パブリックなアクセス可能度を持つ総称識別子をそのモジュール・プロシージャーに含むことはできません。
派生型定義の中で PRIVATE ステートメントを指定した場合、派生型のすべてのコンポーネントがプライベートになります。
派生型がプライベートである構造体はプライベートでなければなりません。プライベートなオブジェクトまたはプライベート・コンポーネントを含む名前リスト・グループはプライベートでなければなりません。プライベートな派生型のコンポーネントを持つ派生型はプライベートでなければなりません。あるいはプライベート・コンポーネントを持たなければなりません。任意の引き数がプライベートな派生型である場合、サブプログラムはプライベートでなければなりません。結果変数がプライベートな派生型である場合、関数はプライベートでなければなりません。
PRIVATE 属性と互換性のある属性 | ||||
---|---|---|---|---|
|
MODULE MC PUBLIC ! Default accessibility declared as public INTERFACE GEN MODULE PROCEDURE SUB1, SUB2 END INTERFACE PRIVATE SUB1 ! SUB1 declared as private CONTAINS SUBROUTINE SUB1(I) INTEGER I I = I + 1 END SUBROUTINE SUB1 SUBROUTINE SUB2(I,J) I = I + J END SUBROUTINE END MODULE MC PROGRAM ABC USE MC K = 5 CALL GEN(K) ! SUB1 referenced because GEN has public ! accessibility and appropriate argument ! is passed CALL SUB2(K,4) PRINT *, K ! Value printed is 10 END PROGRAM
関連情報