2009-07-14 21 views
5

Başlamadan önce, FORTRAN'a gelince acemi olduğumu belirterek önsözüm gerekir. 1978'den kalma eski bir kod parçasını sürdürüyorum. Bunun amacı, bir dosyadaki bazı veri değerlerini okumak, değerleri işlemek ve daha sonra işlenen değerleri başka bir metin dosyasına göndermek.FORTRAN WRITE()

Verilen aşağıdaki FORTRAN kod:

 INTEGER NM,STUBS,I,J,K 
     PARAMETER (NM=67,STUBS=43) 
     INTEGER*4 MDS(STUBS,NM) 

     CALL OPEN$A(A$RDWR,'/home/test/data.txt', MAXPATHLEN,1) 
     CALL OPEN$A(A$WRIT,'out',11,2) 

     DO 90 I=1,2 
      READ(1,82) STUB  
      !-- data processing --!  
      WRITE(2,80) STUB,(MDS(I,J),J=1,24) 
90 CONTINUE 

80 FORMAT(/1X,A24,25I5) 
82 FORMAT(1X,A24,25F5,1) 

Sorum WRITE() açıklamaya sorudur.

Ben (2,80) dosya çıkış akımına ben 80 için kullanılan etiket 80.

STUB tarafından başvurulan biçim ifadesine atıfta anlıyoruz rakamı 2 ile açılmış ve dosya 'out' işaret ve başvurulan atıfta anlıyoruz Dosya girişi 1'den okunan değerleri saklar. Bu değerler işlenmekte ve atlattığım !-- data processing --! bölümünde MDS(I,J)'a kaydedilir.

(MDS(I,J),J=1,24)'un çıktı dosyasına 24 tamsayı değeri yazacağını farz ediyorum. Başka bir deyişle, 1'den 24'e kadar döngü mi?

+0

@Fortranner Etiketleri eklerken, soru formunda veya diğer sorunları da temizlemelisiniz. –

cevap

10

Evet, siz haklısınız. Sözdizimi (MDS(I,J), J=1,24) bir "implied DO-loop" dir ve bu gibi durumlarda yaygın olarak kullanılır.

+0

Rica ederim. Eğer ilgilenirsen, bununla ilgili bir dokümantasyona bir link ekledim. –

+0

Teşekkürler! Bu siteyi inceledim ve kesinlikle bu değişiklik için bir yardımcı oldu! Çok takdir edildi. – karlgrz

İlgili konular