【发布时间】: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