階層的地球流体スペクトルモデル集 SPMODEL << Prev | Index| Next >>

2. Fortran90 の配列機能

ここでは SPMODEL に使われている Fortran90 の言語機能のうち もっとも重要な配列演算機能について簡単に紹介する. ここで取りあげていない Fortran90 で強化された機能の より詳細で厳密な情報は, 適当な Fortran90 の文法書 (例えば[3])を参照して頂きたい.

2.1. 配列の演算

Fortran90 では FORTRAN77 に比べて配列処理機能が強化されている. その一つとして, 配列要素全てにおなじ計算を施したいときに 配列の添字を指定する必要がなくなったことがあげられる(要素毎演算). これに対して FORTRAN77 では配列の添字を必ず指定して計算させる必要があった. 以下, 簡単な例を示そう.

FORTRAN77 では

! FORTRAN 77 style

      REAL*8    A(10,10), B(10,10), C(10,10)
      INTEGER   I, J

      ...
      DO 1000 J=1,10
          DO 1000 I=1,10
          C(I,J) = A(I,J) + B(I,J)
 1000 CONTINUE

と書かねばならないところが, Fortran90 では

real(8) :: a(10,10), b(10,10), c(10,10)

...
c = a + b

と, 配列式 1 行ですんでしまう.

このような機能は算術組込み関数にも用いることができる. たとえば配列の各要素の exp を計算したものをさせたい場合には FORTRAN77 では

! FORTRAN 77 style

       DO 1000 J=1,10
       DO 1000 I=1,10
          B(I,J) = EXP(A(I,J))
  1000 CONTINUE

が, Fortran90 では

b = exp(a)

で済ませられる.

2.2. 配列を返すユーザ定義関数

先の組込み関数の例のように, 配列を返す関数をユーザが定義できることも Fortran90 で強化された機能である. FORTRAN77 では一つの数値を返す 関数しか定義できなかった.

さらに, そのユーザ定義関数の中側で,

という機能が利用できる. これらの機能を利用することで, FORTRAN77 ではサブルーチンとしてしか提供できなかった操作を Fortran90 では配列を返す関数として定義し直すことができる.


階層的地球流体スペクトルモデル集 SPMODEL << Prev | Index| Next >>