2009-10-07 12 views
8

Bir Fortran 90 programında, döngüdeki her yineleme için sayısal değerleri çıktı dosyasına dönüştüren bir döngü çalıştırıyorum. Sorun, çıktının dosyaya kaydedilmemesi, ancak her adımda kaydedilmesidir. Her adımı temizlemek için nasıl alabilirim?Her bir gfortran Fortran 90 programıyla yazdıktan sonra çıktıyı dosyaya nasıl akıtıyorum?

örnek kod: önceden

open(unit=1,file='output') 

do i = 1, 1000 
write(1,*) i 
end do 

close(unit=1) 

teşekkürler.

cevap

6

Başka bir şekilde, eğer gfortran bunu uygularsa, standart dışı alt akış sifonunu çağırmaktır. Bütün derleyiciler bunu uygulamıyor.

+4

'bir alt rutin olarak FLUSH' (çağrı floş (' gibi) ') standart olmayan, ancak' FLUSH' açıklamada 2003 Fortran geçerlidir: 'FLUSH (10)' –

+0

GNU web sitesinden, şöyle der: FLUSH intrinsic ve Fortran 2003 FLUSH ifadesi aynı etkiye sahiptir: çalışma zamanı kitaplığının I/O arabelleğini temizler, böylece veriler diğer işlemlere görünür hale gelir. Bu, verilerin diske bağlı olduğunu garanti etmez. –

12

Çıkışı çözülmemiş hale getirmeniz gerekir. GFORTRAN_UNBUFFERED_ALL ortam değişkenini 'y', 'Y' veya 1. olarak ayarlamayı deneyin.

+0

ben bash bu yapardın: GFORTRAN_UNBUFFERED_ALL = 'y' ihracat $ GFORTRAN_UNBUFFERED_ALL ? Sadece merak ettiniz mi? – banDedo

+0

Evet, ihracat hattında '$' ye ihtiyacınız olmasa da. Bu, mevcut kabuktan çıkana kadar çalışır. Bu davranışı kalıcı olarak istiyorsanız, bu satırları '.bashrc' dosyanıza eklemek isteyebilirsiniz. –

+0

Aşağıdaki reçete denedim ve yazdığınız: GFORTRAN_UNBUFFERED_ALL = 'y' ihracat GFORTRAN_UNBUFFERED_ALL $ GFORTRAN_UNBUFFERED_ALL Yankı doğru değer baskılı yankı. Bunu 'y', 'Y' ve 1 ile denedim. Sorunu çözmedim. Yine de öneri için teşekkür ederim. – banDedo

0

Yıkama yapmam gerektiğinde, dosyayı kapatıp yeniden açarım. Bu beceriksiz ve yavaş, ama tüm derleyiciler ile çalışacak fortran 90'da daha iyi bir yol bilmiyorum. aşağıdaki gibi

İlgili konular