语法错误/两个主程序Fortran

时间:2013-10-27 00:04:49

标签: fortran mingw

我正在尝试为蒙特卡洛重要性抽样编译这个程序,但我遇到了几个问题:

1 - 错误:(1)中数据声明中的语法错误,参考以下行,其中(1)位于“function”之后和之下。

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

1 个答案:

答案 0 :(得分: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