Birkaç yıl önce FORTRAN kullandım ve eski bir FORTRAN programını (F77) sürdürmek için görevlendirildim. Aşağıdaki kod tanıdık değildi:Bir fortran örtülü döngüsünün netleştirilmesi
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS,
. (BUFFER(BIX), BIX=1, NUM_WORDS)
bazı on-line forumlar beni kafa karıştırıcı kısmı, devamı hattı, zımni döngü olduğunu ortaya koydu gözden. Programım bana burada sorun yarattığından beri, bunu geleneksel bir DO döngüsüne dönüştürmek istiyorum. Bunu dönüştürmek, bundan 5 yıl sonra bu şeyi soğuyan bir sonraki zavallı sloganı da destekleyebilir! Neyse, DO döngü eşdeğer benim en iyi tahmin
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS
DO BIX=1, NUM_WORDS
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) BUFFER(BIX)
ENDDO
olduğunu ama bir tek bu değişikliği yaptığınızda, çalışıyorlardı test durumları çalışmayı durdurdu. Hala burada olan şeyin iki farklı READ olduğunu hissettim (NUM_WORDS almak için ilk, ve veriler arasında geçiş yapmak için ikinci), bu yüzden daha az sert bir değişiklik yapmayı denedim, onu iki ifadeye dönüştürdüm ancak ima edilen döngüyü koruyorum:
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) (BUFFER(BIX), BIX=1, NUM_WORDS)
Ama sadece bu değişiklik aynı zamanda başarısız iyi test durumları neden olur. Değişikliklerimin her ikisinde de, NUM_WORDS değeri beklendiği gibi geliyordu, dolayısıyla döngü başarısız olduğu yerde görünüyor.
Orijinal örtülü döngü için eşdeğer DO döngüsü nedir? Yoksa yanlış yolda mıyım?
Teşekkürler
Cevabınız için teşekkürler, janneb. Dosya açık hakkındaki varsayımınız doğruydu; Biçimlendirilmemiş sıralı kullanıyorum. Ve cevabınızdan daha önemli olan sorunun READ olduğunu görüyorum ve bir kayıt okuduğunu fark ettim. – user3617977