5

在开始之前,我必须先声明我是 FORTRAN 的新手。我正在维护 1978 年的一段遗留代码。其目的是从文件中读取一些数据值,处理这些值,然后将处理后的值输出到另一个文本文件。

给定以下 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?

4

1 回答 1

11

是的,你是对的。语法(MDS(I,J), J=1,24)是“隐含的 DO 循环”,通常用于这种情况。

于 2009-07-14T15:53:12.217 回答