В следующей подпрограмме я хотел бы передать строковые переменные с именем str
. Если это 'poly'
, 'gaus'
, 'slat'
, то у него есть предопределенное действие (fval =
см. Код ниже ) Я бы хотел, чтобы пользователь указал функцию для использования и передал ее как строковую переменную.
То есть ...
Если str = '3*cos(i*t)'
, то я бы хотел, чтобы fval
было равно 3*cos(i*t)
. Как я могу заставить Fortran интерпретировать введенную строку как команду, которая будет выполняться Fortran?
subroutine f(fval, i, t, str)
implicit none
integer, parameter :: ikind = selected_int_kind(8)
integer, parameter :: dbl = selected_real_kind(15,307)
integer(kind = ikind) :: i
real(kind = dbl) :: fval, t
character str*100
if(str .eq. 'poly') then
fval = t**i
elseif(str .eq. 'slat') then
fval = exp(-i*t)
elseif(str .eq. 'gaus') then
fval = exp(-i*t*t)
else
fval = ???
endif
end subroutine