@ MSB ответ хорош, если для вас приемлема инициализация во время выполнения.Если вы действительно хотите использовать Fortran parameter
, установленный во время компиляции, вы можете сделать это следующим образом:
program main
implicit none
real, parameter :: a = 1.0
real :: res
res = func()
write(*,*) res
contains
function func()
real, parameter :: b = a + 1.0
real :: func
func = b
end function func
end program main
Я подозреваю, что некоторая путаница связана с различиями в языке.Часто «параметр» используется для обозначения аргумента функции, но в Фортране он никогда не используется таким образом.Вместо этого это означает что-то похожее на const
в C / C ++.Итак, из вашего вопроса мне не ясно, действительно ли вы хотите Fortran parameter
или нет.
В моем примере выше параметр a
известен внутри func
через hostассоциация , которая является языком Fortran для вложенных областей.Вы также можете сделать это с модулями, через используйте ассоциацию , но это немного более подробно:
module mypars
implicit none
real, parameter :: a = 1.0
end module mypars
module myfuncs
implicit none
contains
function func()
use mypars, only: a
real, parameter :: b = a + 1.0
real :: func
func = b
end function func
end module myfuncs
program main
use myfuncs, only: func
implicit none
real :: res
res = func()
print *, res
end program main