キーワード:ユーザー定義手続が純粋手続の制約された形式であることを宣言します。要素別処理手続は Fortran 95 の機能です。
要素別処理手続を宣言するには,FUNCTION または SUBROUTINE 文で ELEMENTAL キーワードを使用します。
ELEMENTAL 手続の呼び出し側から,明示的にインタフェースが見えていなくてはなりません。
要素別処理手続に配列を渡すことができます。配列は 1 度に 1 要素として動作します。
関数の場合,その結果はスカラでなくてはなりません。関数が POINTER 属性を持っていてはなりません。
仮引数には以下の制約があります。
スカラでなくてはなりません。
POINTER 属性を持つことはできません。
仮引数 (またはその部分オブジェクト) は,BIT_SIZE,LEN,KIND 組込み関数,または数値問合せ関数への引数である場合を除いて,宣言式中に置くことはできません。
* であってはなりません。
仮手続であってはなりません。
実引数がすべてスカラである場合,結果もスカラとなります。実引数が配列値である場合,結果の要素値 (存在する場合) は,関数またはサブルーチンが,個々の配列実引数の対応する要素に任意の順序で別々に適用されたかのように計算されます。
要素別処理手続は純粋手続なので,純粋手続に適用される規則は,すべて要素別処理手続にも適用されます。
関連情報
FUNCTION,SUBROUTINE,省略可能引数,手続が明示的インタフェースを必要とするかどうかの判定
例
次の例を考えます。
MIN (A, 0, B) ! A と B は (S, T) 形式の配列
この場合,MIN 組込み関数への要素別引用は,以下の値を要素として持つ配列式となります。
MIN (A(I,J), 0, B(I,J)), I = 1, 2, ..., S, J = 1, 2, ..., T