Fortran中的“不能在(1)处分配给命名常量”

时间:2018-07-06 18:54:26

标签: if-statement fortran

这就是我要运行的内容:

if (z.le.zstart) then
   if (y.ge.((6.95*wg_y2)/5)).and.(y.le.((12.55*wg_y2)/5)) then
      indexmedia=nd
   end if
end if

对于上下文,

zstart是常数y的任意行。

wg_y2 = 5e-6

由于某种原因,它不喜欢(y.ge.((6.95*wg_y2)/5))位,因为(1)放在该位的末尾。

我怀疑它不喜欢if语句中不是整数的任何东西,但是我将6.95更改为7,将12.55更改为13,但它仍然不喜欢它。也许它最终需要解析为整数?

我需要这些参数才能结束

6.95

是否有解决方法?

1 个答案:

答案 0 :(得分:2)

在编译代码时(不好,因为我没有声明变量!但是这不是问题,所以我放弃了以使其变小):

program tst
if (z.le.zstart) then
   if (y.ge.((6.95*wg_y2)/5)).and.(y.le.((12.55*wg_y2)/5)) then
      indexmedia=nd
   end if
end if
end

一个错误:

aa.f90:3:29:

    if (y.ge.((6.95*wg_y2)/5)).and.(y.le.((12.55*wg_y2)/5)) then
                             1
Error: Cannot assign to a named constant at (1)
aa.f90:6:3:

 end if
   1
Error: Expecting END PROGRAM statement at (1)

这是由于该行中缺少一对圆括号:

if (y.ge.((6.95*wg_y2)/5)).and.(y.le.((12.55*wg_y2)/5)) then

应阅读

if ((y.ge.((6.95*wg_y2)/5)).and.(y.le.((12.55*wg_y2)/5))) then