【问题标题】:Syntax error, found .and. and .or.语法错误,发现.and。和。或。
【发布时间】:2012-04-03 13:19:15
【问题描述】:

我只是想修改一个非常老的程序的一小部分,但我一辈子都想不通我做了什么来激怒 Fortran 之神。

原代码有以下一行:

  if (r.gt.rstep) xappad = xappad*fakm

我已经修改为:

  if (r.gt.0.58*rstep .and. r.lt.1.42*rstep) .or. (r.gt.2.08*rstep 
 : .and. r.lt.2.92*rstep) xappad = xappad*fakm

这给了我错误:

sp-co-2-MODIFIED.for(785):错误 #5082:语法错误,找到“.OR.” 当期待以下之一时: BLOCK BLOCKDATA PROGRAM MODULE TYPE COMPLEX 字节字符双双复数 ...

      if (r.gt.0.58*rstep .and. r.lt.1.42*rstep) .or. (r.gt.2.08*rstep 
-------------------------------------------------------------------------^

sp-co-2-MODIFIED.for(786):错误 #6090:此上下文中需要数组值操作数。

     : .and. r.lt.2.92*rstep) xappad = xappad*fakm
------^

sp-co-2-MODIFIED.for(786): 错误 #6087: 数组赋值语句 在这种情况下是必需的。

     : .and. r.lt.2.92*rstep) xappad = xappad*fakm
-------------------------------------------^

【问题讨论】:

  • 我已经有将近 25 年没有用 FORTRAN 编码了,但如果我没记错的话,你需要在整个条件表达式周围加上一对括号。

标签: fortran


【解决方案1】:

我真的不太了解 FORTRAN,但在我看来,您在条件句周围缺少一对括号:

if ((r.gt.0.58*rstep .and. r.lt.1.42*rstep) .or. (r.gt.2.08*rstep .and. r.lt.2.92*rstep)) xappad = xappad*fakm

【讨论】:

  • 啊,我知道我是个大白痴。好像已经搞定了,谢谢。
猜你喜欢
  • 2019-04-21
  • 2021-12-10
  • 2021-04-20
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多