1. HOME
  2. ブログ
  3. Fortranでオブジェクト指向
  4. Fortranでオブジェクト指向(3)

ブログ

Fortranでオブジェクト指向

Fortranでオブジェクト指向(3)

本日取り上げるポイント

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

本日はこの辺で。

関連記事