目的
ステートメント関数は単一ステートメント内の関数を定義します。
構文
>>-name--(--+---------------------+--)-- = --scalar_expression->< '-dummy_argument_list-' |
規則
ステートメント関数は、その関数を定義している有効範囲単位に対してローカルです。ステートメント関数をモジュールの有効範囲内で定義することはできません。
ステートメント関数から戻された値のデータ型は、name によって決まります。 name のデータ型がスカラー式のデータ型と一致しない場合は、割り当てステートメントの規則に従ってスカラー式の値が name のタイプに変換されます。
関数およびすべての仮引き数の名前はスカラー・データ・オブジェクトになるように、明示的にあるいは暗黙的に指定しなければなりません。
スカラー式は定数、変数の参照、関数および関数の仮プロシージャーの参照、および組み込み演算によって構成されます。関数または関数の仮プロシージャーへの参照が式に含まれている場合、参照は明示インターフェースを使用することはできず、関数が明示インターフェースを使用したり変形可能な組み込み演算にすることはできません。結果はスカラーでなければなりません。関数または関数の仮プロシージャーが配列値の場合は、配列名を付ける必要があります。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、スカラー式は構造体コンポーネントを参照することもできます。
+--------------------------------IBM 拡張の終り-------------------------------+
スカラー式は、次のステートメント関数のいずれかを参照することができます。
式の中で参照されるエレメントを持つ名前付き定数と配列は、有効範囲単位内で前もって宣言するか、または使用関連付けかホスト関連付けを介してアクセス可能にしなければなりません。
式の中で参照される変数は次のうちのどちらかです。
式の中のエンティティーのタイプが暗黙のタイプ規則で決定されている場合、そのタイプと型付きパラメーターは、それに続くタイプ宣言ステートメント内のものと一致しなければなりません。
スカラー式の中で外部関数を参照することによって、ステートメント関数の仮引き数が未定義あるいは再定義になってはいけません。
ステートメント関数を内部サブプログラム内で定義し、そのステートメント関数とホストからアクセス可能なエンティティーの名前が同じ場合、ステートメント関数を定義する前にステートメント関数の名前を明示的に定義しておく必要があります。たとえば、タイプ宣言ステートメントを使用します。
文字タイプのステートメント関数、または文字タイプのステートメント関数の仮引き数の長さ指定は、定数の宣言式でなければなりません。
PARAMETER (PI = 3.14159) REAL AREA,CIRCUM,R,RADIUS AREA(R) = PI * (R**2) ! Define statement functions CIRCUM(R) = 2 * PI * R ! AREA and CIRCUM ! Reference the statement functions PRINT *,'The area is: ',AREA(RADIUS) PRINT *,'The circumference is: ',CIRCUM(RADIUS)
関連情報