PRIVATE

目的

PRIVATE 属性は、使用関連付けを 介してもモジュール外ではモジュール・エンティティーにアクセスできないことを指定します。

構文



>>-PRIVATE--+------------------------+-------------------------><
            '-+----+--access_id_list-'
              '-::-'
 
 

access_id
総称仕様、または変数、プロシージャー、派生型、 定数、名前リスト・グループの名前です。

規則

PRIVATE 属性はモジュールの有効範囲にだけ指定できます。

1 つのモジュールに複数の PRIVATE ステートメントを 指定できますが、access_id_list を省略できるステートメントは 1 つだけです。 access_id_list を指定していない PRIVATE ステートメントでは、 モジュール内で潜在的にアクセス可能なエンティティーのデフォルトのアクセス可能度をプライベートに設定しています。 このようなステートメントを含むモジュールに access_id_list を 持たない PUBLIC ステートメントを指定することはできません。 モジュールにこのようなステートメントを 指定していない場合、デフォルトのアクセス可能度はパブリックです。 明示的にアクセス可能度を指定していないエンティティーには デフォルトにアクセス可能度があります。

パブリックな総称識別子を持つプロシージャーの場合、特定の識別子が プライベートであったとしても、総称識別子でそのプロシージャーにアクセスできます。 プライベートなアクセス可能度を持つプライベート仮引き数または関数結果が モジュール・プロシージャーに含まれる場合、そのモジュール・プロシージャーは プライベートなアクセス可能度を持つということを宣言しなければなりません。 また、パブリックなアクセス可能度を持つ総称識別子をそのモジュール・プロシージャーに含むことはできません。 派生型のアクセス可能度はそのコンポーネントのアクセス可能度には影響を与えず、また、コンポーネントのアクセス可能度の 影響を受けることもありません。

プライベートなオブジェクトまたはプライベート・コンポーネントを含む名前リスト・グループはプライベートでなければなりません。 任意の引き数がプライベートな派生型で ある場合、サブプログラムはプライベートでなければなりません。 結果変数がプライベートな派生型である場合、関数はプライベートでなければなりません。

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

関連情報

IBM Copyright 2003