階層的地球流体スペクトルモデル集 SPMODEL | << Prev | Index| Next >> |
ここでは SPMODEL に使われている Fortran90 の言語機能のうち もっとも重要な配列演算機能について簡単に紹介する. ここで取りあげていない Fortran90 で強化された機能の より詳細で厳密な情報は, 適当な Fortran90 の文法書 (例えば[3])を参照して頂きたい.
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)
で済ませられる.
先の組込み関数の例のように, 配列を返す関数をユーザが定義できることも Fortran90 で強化された機能である. FORTRAN77 では一つの数値を返す 関数しか定義できなかった.
さらに, そのユーザ定義関数の中側で,
という機能が利用できる. これらの機能を利用することで, FORTRAN77 ではサブルーチンとしてしか提供できなかった操作を Fortran90 では配列を返す関数として定義し直すことができる.
階層的地球流体スペクトルモデル集 SPMODEL | << Prev | Index| Next >> |