2009-07-14 5 views
5

Прежде чем я начну, я должен предисловие, заявив, что я новичок, когда дело касается Фортран. Я сохраняю унаследованный кусок кода с 1978 года. Цель состоит в том, чтобы читать некоторые данные из файла, обрабатывать значения, а затем выводить обработанные значения в другой текстовый файл.FORTRAN WRITE()

Учитывая следующий FORTRAN код:

 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) 

Мой вопрос в отношении к WRITE() заявления.

Я понимаю, что (2,80) относится к выходному файл потока открыт и указывающий на файл 'out' и ссылается цифрой 2. Я понимаю, что 80 ссылается на заявление формата, на который ссылается этикетке 80.

STUB используется для хранить значения, считанные из ввода файла 1. Эти значения являются тем, что обрабатывается, и сохраняются в MDS(I,J) в разделе !-- data processing --!, который я пропустил.

Правильно ли я полагаю, что (MDS(I,J),J=1,24) будет записывать 24 целочисленных значения в выходной файл? Другими словами, цикл от 1 до 24?

+0

@Fortranner При добавлении тегов вы должны очистить форматирование или другие проблемы в вопросе. –

ответ

10

Да, вы правы. Синтаксис (MDS(I,J), J=1,24) является «implied DO-loop» и обычно используется в таких ситуациях.

+0

Добро пожаловать. Я добавил ссылку на некоторую документацию по этому вопросу, если вам интересно. –

+0

Спасибо! Я просмотрел этот сайт, и это определенно помогло с этой модификацией! Очень признателен. – karlgrz