+---------------------------------Fortran 95---------------------------------+

FORALL (構文)

目的

FORALL (構文) ステートメントは、 FORALL 構文の最初のステートメントです。

構文



>>-+----------------------------+--FORALL--+---------------+---><
   '-FORALL_construct_name-- : -'          '-forall_header-'
 
 

forall_header


>>-(--forall_triplet_spec_list--+---------------------+--)-----><
                                '-,--scalar_mask_expr-'
 
 

forall_triplet_spec


>>-index_name-- = --subscript-- : --subscript------------------->
 
>--+-------------+---------------------------------------------><
   '- : --stride-'
 
 

scalar_mask_expr
スカラー論理式です。

subscript、stride
両方ともスカラー整数式です。

規則

forall_header のマスク式で参照されるプロシージャーは すべて、(定義済みの操作または割り当てによって参照されるものを含む) 純粋で なければなりません。

index_name は、スカラー整数の変数でなければなりません。 index_name の有効範囲は、FORALL 構文の全体です。

forall_triplet_spec_list の中の subscript およ び stride には、forall_triplet_spec_list の中 の index_name への参照を含めることはできません。 forall_header の中の式の評価は、forall_header の中の 他の式の評価に影響を与えてはなりません。

forall_triplet_spec が次のとおりであるとします。

     index1 = s1:s2:s3

指標値の最大数は、次のようにして判別されます。

     max = INT((s2-s1+s3)/s3)

ストライド (上記の s3) が指定されない場合、 値 1 が想定されます。 いずれかの指標が max <= 0 の場合、forall_assignment は実行されません。 たとえば、次のようになります。

     index1 = 2:10:3    !  The index values are 2,5,8.
                        !  max = floor(((10-2)/3)+1) = 3.
 
     index2 = 6:2:-1    !  The index values are 6,5,4,3,2.
     index2 = 6:2       !  No index values.

マスク式が省略されると、.TRUE. の値が想定されます。

POSITIVE: FORALL (X=1:100,A(X)>0)
  I(X)=I(X)+J(X)
  J(X)=J(X)-I(X+1)
END FORALL POSITIVE

関連情報

+-----------------------------End of Fortran 95------------------------------+

IBM Copyright 2003