目的
ステートメント関数は単一ステートメント内の関数を定義します。
構文
>>-name--(--+---------------------+--)-- = --scalar_expression->< '-dummy_argument_list-' |
規則
ステートメント関数は、その関数を定義している有効範囲単位に対してローカルです。 ステートメント関数をモジュールの有効範囲内で定義することはできません。
ステートメント関数から戻された値のデータ型は、name によって決まります。 name のデータ型がスカラー式のデータ型と 一致しない場合は、割り当てステートメントの規則に従って スカラー式の値が name の型に変換されます。
関数およびすべての仮引き数の名前はスカラー・データ・オブジェクトになるように、 明示的にあるいは暗黙的に指定しなければなりません。
スカラー式は定数、変数の参照、関数および関数のダミー・プロシージャーの 参照、および組み込み演算によって構成されます。 関数または関数のダミー・プロシージャーへの参照が式に含まれている場合、参照は明示インターフェースを使用することはできず、関数が明示インターフェースを使用したり変形可能な組み込み演算にすることはできません。結果はスカラーでなければなりません。 関数または関数のダミー・プロシージャーへの引き数が配列値の場合は、配列名を付ける必要があります。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、スカラー式は構造体コンストラクターを参照することもできます。
+------------------------------End of 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)
関連情報