2012-04-03 2 views
5

아주 오래된 프로그램의 일부분을 수정하기를 원했고 포트란 신을 분노하게하기 위해 내가 한 일을 이해할 수 없습니다.구문 오류, 및 발견되었습니다. 그리고.

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

I가 수정 한 :

SP-공동 2 :

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 

나에게 오류를 제공

원래의 코드는 다음과 같은 라인을 가지고 MODIFIED.for (785) : 오류 # 5082 : 구문 오류, '.OR'이 (가) 발견되었습니다. 하나 기대 때 BLOCK BLOCKDATA 프로그램 모듈 형 COMPLEX 바이트 문자 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 
-------------------------------------------^ 
+4

을 거의 25 년이지만, 내가 정확히 기억한다면, 전체 조건식에 대해 한 쌍의 괄호가 필요합니다. – dasblinkenlight

답변

15

정말 많이 FORTRAN 모르지만, 당신이 조건부 괄호 한 쌍의이 누락처럼 나에게 보이는 : I가 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 
+0

AH, 나는 내가 방대한 바보 인 것을 알고 있었다. 그 일을 한 것처럼 보입니다. 고마워요. –

관련 문제