我只是想修改一个非常旧的程序的一小部分,我一生都无法弄清楚我做了什么激怒了 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): error #5082: Syntax error, found '.OR.' when expecting one of: 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): error #6087: An array assignment statement is required in this context.
: .and. r.lt.2.92*rstep) xappad = xappad*fakm
-------------------------------------------^
最佳答案
我真的不太了解 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
关于fortran - 语法错误,发现 .and。和.或。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9994117/