2009-10-07 14 views
8

मैं एक फोरट्रान 90 प्रोग्राम में लूप चला रहा हूं जो लूप के प्रत्येक पुनरावृत्ति के लिए आउटपुट फ़ाइल में संख्यात्मक मानों को आउटपुट करता है। समस्या यह है कि आउटपुट फ़ाइल में सहेजा नहीं जाता है लेकिन हर कई कदम। मैं इसे प्रत्येक चरण में फ्लश करने के लिए कैसे प्राप्त करूं?मैं एक gfortran फोरट्रान 90 कार्यक्रम के साथ प्रत्येक लेखन के बाद फ़ाइल करने के लिए आउटपुट फ्लश कैसे करूँ?

उदाहरण कोड:

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

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

close(unit=1) 

अग्रिम धन्यवाद।

उत्तर

6

दूसरी तरफ, अगर gfortran इसे लागू करता है, तो गैर मानक सबराउटिन फ्लश को कॉल करना है। सभी कंपाइलर इसे लागू नहीं करते हैं।

+4

'एक सबरूटीन के रूप में FLUSH' (' कॉल फ्लश (के रूप में) ') गैरमानक है, लेकिन' FLUSH' बयान वैध फोरट्रान 2003: 'फ्लश (10)' –

+0

जीएनयू वेबसाइट से, यह कहते हैं: FLUSH आंतरिक और फोरट्रान 2003 FLUSH कथन का समान प्रभाव होता है: वे रनटाइम लाइब्रेरी के I/O बफर को फ्लश करते हैं ताकि डेटा अन्य प्रक्रियाओं के लिए दृश्यमान हो। यह गारंटी नहीं देता है कि डेटा डिस्क पर प्रतिबद्ध है। –

12

आपको आउटपुट को अप्रयुक्त करने की आवश्यकता है। GFORTRAN_UNBUFFERED_ALL पर्यावरण चर को 'y', 'y' या 1.

+0

मैं पार्टी से ऐसा कर सकते हैं इस प्रकार है: GFORTRAN_UNBUFFERED_ALL = 'y' निर्यात $ GFORTRAN_UNBUFFERED_ALL ? बस उत्सुक? – banDedo

+0

हां, हालांकि आपको निर्यात लाइन में '$' की आवश्यकता नहीं है। यह तब तक काम करेगा जब तक आप वर्तमान खोल से बाहर नहीं निकलते। यदि आप इस व्यवहार को स्थायी रूप से चाहते हैं तो आप उन पंक्तियों को अपनी '.bashrc' फ़ाइल में जोड़ना चाहेंगे। –

+0

मैं निम्नलिखित पर्चे की कोशिश की है और मैं टाइप किया है: GFORTRAN_UNBUFFERED_ALL = 'y' निर्यात GFORTRAN_UNBUFFERED_ALL गूंज $ GFORTRAN_UNBUFFERED_ALL इको उचित मूल्य मुद्रित। मैंने इसे 'वाई', 'वाई', और 1 के साथ आजमाया है। समस्या का हल करने में से कोई भी नहीं। सुझाव के लिए धन्यवाद, यद्यपि। – banDedo

0

जब मुझे फ्लश करने की आवश्यकता होती है, तो मैं बस फ़ाइल बंद कर देता हूं और फिर से खोलता हूं। यह बेकार और धीमा है, लेकिन मुझे फोर्टन 90 में बेहतर तरीके से पता नहीं है जो सभी कंपाइलरों के साथ काम करेगा।