目的
PUBLIC 属性は、他のプログラム単位が使用関連付けを 介してモジュール・エンティティーにアクセスできることを指定します。
構文
>>-PUBLIC--+------------------------+-------------------------->< '-+----+--access_id_list-' '-::-' |
規則
PUBLIC 属性はモジュールの有効範囲にだけ指定できます。
1 つのモジュールに複数の PUBLIC ステートメントを 指定できますが、access_id_list を省略できるステートメントは 1 つだけです。 access_id_list を指定していない PUBLIC ステートメントでは、 モジュール内で潜在的にアクセス可能なエンティティーのデフォルトのアクセス可能度をパブリックに設定しています。 このようなステートメントを含むモジュールに access_id_list を 持たない PRIVATE ステートメントを指定することはできません。 access_id_list を持たない PRIVATE ステートメントを含まないモジュールの場合、デフォルトのアクセス可能度はパブリックです。 明示的にアクセス可能度を指定していないエンティティーには デフォルトにアクセス可能度があります。
パブリックな総称識別子を持つプロシージャーの場合、特定の識別子が プライベートであったとしても、総称識別子でそのプロシージャーにアクセスできます。 プライベートなアクセス可能度を持つプライベート仮引き数または関数結果が モジュール・プロシージャーに含まれる場合、そのモジュール・プロシージャーは プライベートなアクセス可能度を持つということを宣言しなければなりません。 また、パブリックなアクセス可能度を持つ総称識別子をそのモジュール・プロシージャーに含むことはできません。
+----------------------------------IBM 拡張----------------------------------+
パブリックというアクセス可能度を持つエンティティーは STATIC 属性 を持つことはできませんが、モジュール内のパブリック・エンティティーは モジュール内の IMPLICIT STATIC ステートメントによって影響されません。
+------------------------------End of IBM 拡張-------------------------------+
PUBLIC 属性と互換性のある属性 | ||||
---|---|---|---|---|
|
例
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
関連情報