语法错误,找到.and.和.or.

5 fortran

我只是想修改一个非常古老的程序的一小部分,我不能为我的生活弄清楚我做了什么来激怒For​​tran众神.

原始代码包含以下行:

  if (r.gt.rstep) xappad = xappad*fakm
Run Code Online (Sandbox Code Playgroud)

我修改为:

  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
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

sp-co-2-MODIFIED.for(785):错误#5082:语法错误,找到'.OR.' 期待以下之一:BLOCK BLOCKDATA PROGRAM MODULE TYPE COMPLEX BYTE CHARACTER DOUBLE DOUBLECOMPLEX ...

      if (r.gt.0.58*rstep .and. r.lt.1.42*rstep) .or. (r.gt.2.08*rstep 
-------------------------------------------------------------------------^
Run Code Online (Sandbox Code Playgroud)

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

     : .and. r.lt.2.92*rstep) xappad = xappad*fakm
------^
Run Code Online (Sandbox Code Playgroud)

sp-co-2-MODIFIED.for(786):错误#6087:在此上下文中需要数组赋值语句.

     : .and. r.lt.2.92*rstep) xappad = xappad*fakm
-------------------------------------------^
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 15

我真的不太了解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
Run Code Online (Sandbox Code Playgroud)