2013-08-23 31 views
8

Fortran'da, her seferinde WRITE yeni bir satır üretilir. Yürütülen bir programın çalışmasını kontrol etmek için, bir değişkenin geçerli değerini ekranda yazmak istiyorum, fakat her zaman aynı satırda (önceki değeri silip satırın başında başlayarak) yazmak istiyorum. Yani WRITE(*,*,ADVANCE='NO') (zaten yanlış) gibiFORTRAN'da aynı satırda yazma

1 CONTINUE 
     "update the value of a" 
     WRITE(*,*) a 
     BACKSPACE "screen" 
     GOTO 1 

Something gibi bir şey değil tamamen ne ben ihtiyaçtır, şudur: Bu çok uzun bir hattında birbiri ardına a birinin tüm değerleri yazardı.

+0

"BACKSPACE" öğesinin **, yaptığını düşündüğünüz şeyi yapmadığından emin olun. –

cevap

7

Ben <type>a için biçim belirteci olduğu

do l=1,lmax 
    ...update a... 
    write(*,'(1a1,<type>,$)') char(13), a 
enddo 

aşağıdaki gibi olduğunu istediğiniz şey için gösterilen bir hile (yani tamsayı için i0).

Anahtar, satır tanıtımı olan char(13) ve biçim tanımlayıcısında $'dur. $ için bir isim olup olmadığını gerçekten bilmiyorum, sadece ekranda görüntülenmek için çalıştığını biliyorum - dosyaya çıkış için her satırda bir a olsun.

+0

$ tanımlayıcısının standart dilde olmadığına dikkat edin. – IanH

+0

Standart olmadığımı farz ettim ama ifort 11+ ve gfortran 4.6 & 4.7 ile çalışıyorum. –

+0

advance = hayır, $ için 'standart' değiştirmedir. Ayrıca çözüm, terminal tipinize bağlıdır, eğer bu cevap işe yaramıyorsa ve hangi terminalde çalıştığınızı söyleyin, – agentp

İlgili konular