関連情報
ナビゲーション:Fortran 2003入門   前へ   上へ   次へ

4.3 PROTECTED属性

PROTECTED 属性は PROTECTED 文もしくは型宣言文内の PROTECTED キーワードにより指定可能です。 PROTECTED属性はモジュール変数がモジュール外から変更されることのないように保護します。

4.3.1 構文

PROTECTED文の構文は以下の通りです:

PROTECTED [ :: ] name [ , name ] ...

PROTECTED属性はモジュール内の変数についてのみ指定可能です。

4.3.2 セマンティクス

PROTECTED属性を持った変数はその変数が定義されるモジュール内でのみ変更可能です。 該当モジュール外においては、INTENT(IN) 仮引数の場合と同様、 変数定義の文脈中(例えば代入文の左辺など)では使用することができません。

これによりモジュール作成者は一部の変数を外部に公開しながらも、その値の変更を許さないといった運用が可能になります。

4.3.3 用例

MODULE temperature_module
  REAL,PROTECTED :: temperature_c = 0, temperature_f = 32
CONTAINS
  SUBROUTINE set_temperature_c(new_value_c)
    REAL,INTENT(IN) :: new_value_c
    temperature_c = new_value_c
    temperature_f = temperature_c*(9.0/5.0) + 32
  END SUBROUTINE
  SUBROUTINE set_temperature_f(new_value_f)
    REAL,INTENT(IN) :: new_value_f
    temperature_f = new_value_f
    temperature_c = (temperature_f - 32)*(5.0/9.0)
  END SUBROUTINE
END
PROTECTED属性はtemperature_moduleの利用者にtemperature(温度)を 摂氏もしくは華氏で読みだすことを許しますが、変数の変更は提供されているサブルー チンを介してのみ可能です。これによって摂氏と華氏の値の整合性が保証されています。

Results matter. Trust NAG.
Privacy Policy | Trademarks