XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

+----------------------------------IBM 拡張----------------------------------+

PROTECTED

目的

PROTECTED 属性によって、モジュール・エンティティーの変更をより大きく制御できます。モジュール・プロシージャーが、保護モジュール・エンティティーまたはそのサブオブジェクトを変更できるのは、同じモジュールがプロシージャーとエンティティーの両方に定義されている場合のみです。

構文

PROTECTED 属性は、モジュールの仕様部分にしか指定できません。



>>-PROTECTED--+----+--entity_declaration_list------------------><
              '-::-'
 
 

entity
共通ブロックにない名前付き変数

規則

EQUIVALENCE ステートメントによって宣言されたオブジェクトが PROTECTED 属性を持つように指定した場合、その EQUIVALENCE ステートメントで指定されたオブジェクトはすべて PROTECTED 属性を持たなければなりません。

使用関連付けを介してアクセスされる、PROTECTED 属性を持つ非ポインター・オブジェクトは定義できません。

PROTECTED 属性を整数ポインターに指定してはなりません。

使用関連付けを介してアクセスされる、PROTECTED 属性を持つポインター・オブジェクトを以下で指定してはなりません

PROTECTED 属性と互換性のある属性





次の例で、ageval の両方の値は、これらが宣言されているサブルーチンによってのみ変更できます。

      module mod1
          integer, protected :: val
          integer :: age
          protected :: age
          contains
              subroutine set_val(arg)
                  integer arg
                   val = arg
              end subroutine
               subroutine set_age(arg)
                  integer arg
                   age  = arg
              end subroutine
      end module
      program dt_init01
          use mod1
          implicit none
          integer :: value, his_age
          call set_val(88)
          call set_age(38)
          value = val
          his_age = age
          print *, value, his_age
      end program

関連情報

モジュール

PRIVATE

PUBLIC

+--------------------------------IBM 拡張の終り-------------------------------+


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]