Синтактична грешка/Две основни програми Fortran

Опитвам се да компилирам тази програма за вземане на проби от Монте Карло, но се натъквам на няколко проблема:

1 – Грешка: Синтактична грешка в декларацията на данни в (1), отнасяща се до следващия ред, където (1) е поставен точно след и под думата „функция“.

real function f(x)

2 - Грешка: Две основни ПРОГРАМИ в (1) и (2), отнасящи се до тези два реда

program importance1

и

t=0.0

.

Следва примерният код. Има повече редове код в програмата, но не мисля, че има проблеми, така че току-що публикувах този първи сегмент.

program importance1
implicit none
real mean_value,t,ta,rr
real x,xtrials,s_square_old,s_square_new,std_dev,std_error,frac_stand_dev
integer k
real :: alpha=0.90
integer :: trials=50
xtrials=trials

real function f(x)
f=exp(x)
return
end

real function g(x)
g=(alpha/(exp(alpha)-1.))*exp(alpha*x)
return
end

t=0.0
s_square_old=0.0

person Alcaeos    schedule 27.10.2013    source източник


Отговори (1)


Не съм сигурен откъде взехте идеята да направите това, но изглежда, че дефинирате функции в средата на вашия код, което е грешното място. Във Fortran функциите отиват в отделен MODULE или в края на програмата под CONTAINS блок:

program importance1
  implicit none
  real :: mean_value,t,ta,rr
  real :: x,xtrials,s_square_old,s_square_new,std_dev,std_error,frac_stand_dev
  integer :: k
  real :: alpha=0.90
  integer :: trials=50
  xtrials=trials

  t=0.0
  s_square_old=0.0

contains

  real function f(x)
    real :: x
    f=exp(x)
  end function

  real function g(x)
    real :: x
    g=(alpha/(exp(alpha)-1.))*exp(alpha*x)
  end function

end program
person Kyle Kanos    schedule 27.10.2013
comment
Функциите и подпрограмите също могат да бъдат поставени над оператора program без contains. - person milancurcic; 27.10.2013
comment
Вярно е, нито е наистина необходим модул. Но използването на модул & съдържа ще помогне на компилатора да улови грешки при свързването. - person Kyle Kanos; 27.10.2013
comment
Да, определено няма извинение да не използвате модули в наши дни. - person milancurcic; 27.10.2013
comment
Това работи, благодаря ви много. Моят професор даде някакъв примерен код, но той не работи според очакванията, така че просто се забърквах с него. - person Alcaeos; 27.10.2013