我只是想修改一个非常古老的程序的一小部分,我不能为我的生活弄清楚我做了什么来激怒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 BYTE CHARACTER DOUBLE DOUBLECOMPLEX ...
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
-------------------------------------------^
答案 0 :(得分: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