FORTRAN WRITE()

牧云@^-^@ 提交于 2020-01-02 04:37:07

问题


Before I begin, I must preface by stating that I am a novice when it comes to FORTRAN. I am maintaining a legacy piece of code from 1978. It's purpose is to read in some data values from a file, process the values, and then output the processed values to another text file.

Given the following FORTRAN code:

      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)

My question is in regards to the WRITE() statement.

I understand that (2,80) refers to the file output stream opened and pointing to the file 'out' and referenced by the numeral 2. I understand that 80 refers to the format statement referenced by label 80.

STUB is used to store the values read from file input 1. These values are what is processed, and saved into MDS(I,J) in the !-- data processing --! section that I have omitted.

Am I correct in assuming that (MDS(I,J),J=1,24) will write 24 integer values to the output file? In other words, looping from 1 to 24?


回答1:


Yes, you are correct. The syntax (MDS(I,J), J=1,24) is an "implied DO-loop" and is commonly used in situations like this.



来源:https://stackoverflow.com/questions/1126324/fortran-write

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!