2012-04-03 25 views
5

Çok eski bir programın küçük bir bölümünü değiştirmek istedim ve hayatımın Fortran tanrılarını kızdırmak için ne yaptığımı anlayamıyorum.Sözdizimi hatası bulundu. ve .or.

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

ben değiştirdiniz:

sp-ko-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 

bana hataları verir

orijinal kod aşağıdaki satırı vardır MODIFIED.for için (785): hata # 5082: Sözdizimi hatası, bulundu. .OR. birini bekliyor zaman: BLOK BLOCKDATA PROGRAMI MODÜL TİPİ KOMPLEKS byte karakter ÇİFT DOUBLECOMPLEX ...

 if (r.gt.0.58*rstep .and. r.lt.1.42*rstep) .or. (r.gt.2.08*rstep 
-------------------------------------------------------------------------^ 

sp-ko-2-MODIFIED.for (786): Hata # 6090: Bir dizi değerli Bu bağlamda işlenen gereklidir.

 : .and. r.lt.2.92*rstep) xappad = xappad*fakm 
------^ 

sp-ko-2-MODIFIED.for (786): hata # 6087: bir dizi atama ifadesi Bu bağlamda gereklidir.

 : .and. r.lt.2.92*rstep) xappad = xappad*fakm 
-------------------------------------------^ 
+4

Neredeyse 25 yıl, ancak doğru hatırlıyorsam, koşullu ifadenin tamamı etrafında bir çift paranteze ihtiyacınız var. – dasblinkenlight

cevap

15

Gerçekten çok FORTRAN bilmiyorum ama şartlı etrafında parantez çifti eksik olduğunu bana görünüyor: Ne için FORTRAN kodlu değil

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, büyük bir aptal olduğumu biliyordum. Bu yapmış görünüyor, teşekkürler. –