株式会社 科学技術研究所
ホーム > かぎけんブログ > 藤田明希 > Fortranでオブジェクト指向 > Fortranでオブジェクト指向(3)
Fortranでオブジェクト指向(3)
投稿日:2017/02/27
カテゴリ:Fortranでオブジェクト指向

本日取り上げるポイント

変数定義、implicit none, 型と属性の定義, INTENT属性



    implicit none
    CLASS(FACET), INTENT(INOUT) :: this
    integer i
    character(10), parameter :: header(3) = (/"1st point","2nd point","3rd point"/)

implicit none
FORTRAN77で多用されてきた
implicit real*8(a-h, o-z)
は今や禁止に近い非推奨です。
意図しない暗黙定義変数が使えてしまうため、
特に大規模なプログラムではエラーの原因となってきた
暗黙の型宣言は現在では使わず、すべてを明示的に
定義する implicit none を使用します。

型と属性を一行で定義する
CLASS(FACET), INTENT(INOUT) :: this
行ではCLASS構造体で読み込みと値を返すINTENT(INOUT)属性を
もつ変数thisを一行で定義しています。
このような場合は、変数名の前に:: (コロン二つ)を付けて区切ります。
型のみを定義する場合は
integer i
のように従来通り、型名をスペースで区切って変数名を記述します。

INTENT属性
INTENT(IN) の場合、引数は参照するのみ
INTENT(OUT) の場合、引数は値を返すのみ
INTENT(INOUT) の場合、引数を参照し、値を返す
属性を定義できます。この属性を使用すれば、参照のみするはずの
引数の値を変更したり、参照しないはずの値をプログラム内で参照する
などのミスをコンパイル段階で発見することが出来ます。
属性に反する記述をプログラム内部で行った場合、コンパイル時に
エラーになるので不注意から発生するバグを回避できます。

本日はこの辺で。