私は引数として関数をとるFortran 90サブルーチンを持っています。その関数の修正バージョンを別のサブルーチンに渡したいと思います。私は「G」が唯一の通常の変数ではなく、機能を使用する必要がある場合にも、同様の何かをするために管理してきました別の関数からの動的関数の作成
subroutine foo(f, ...)
real :: pt(2), dir(2)
interface
function f(x) result(y)
real, intent(in) :: x(2)
real :: y
end function f
end interface
pt = ...
dir = ...
!! Somehow create g(x) = f(pt + x*dir)
call bar(g)
end subroutine foo
subroutine bar(g)
interface
function g(x) result(y)
real, intent(in) :: x
real :: y
end function g
end interface
!! Do stuff with g
end subroutine bar
:私は、プログラムがこのような何かを見てみたいです。その場合、私はグローバル変数を使用してグローバル関数を作成し、 'foo'のグローバル変数に割り当てました。しかし、私は 'f'をグローバルにしたり、グローバル関数に割り当てる方法を見つけることはできません。
これを行う方法はありますか?ソリューションは、あなたが望むようにハッキリにすることができます。
おかげで、それは、Fortran 90に働くだろうか?あなたが使用したキーワードの多くは、私には新しいものです。特に私は90年ではなく2003年の「手続き」への参照を見つけることができただけです。 –