FORTRAN 写()
在开始之前,我必须先声明一下,我是 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)
> 在我省略的 !-- 数据处理 --!
部分中。
我假设 (MDS(I,J),J=1,24)
会将 24 个整数值写入输出文件是否正确? 换句话说,从1循环到24?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,你是对的。 语法
(MDS(I,J), J=1,24)
是一个“隐含 DO-loop" 通常用于此类情况。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.