Вы не можете вызвать функцию, используя оператор call
, то есть только для подпрограмм.Вы просто используете имя функции
p=3**5 * exp(-3.0)/fact(5)
Аргумент exp
должен быть real
(например, -3.0
).
Вы должны либо поместить функцию в модуль (лучше) или сделать его внутренним (между contains
и end program
) или, по крайней мере, объявить его тип
integer :: fact
в вызывающей его программе.