【发布时间】:2014-07-11 23:17:09
【问题描述】:
在 Fortran 程序中,我需要将数组写入具有特定格式的文件中。 我非常适用于较小的数组(例如,下面示例中的 alen=10),但不适用于较大的数组:然后它将每行分成两部分,就好像超过了每行的最大字符数一样。
示例(与我程序中的结构非常相似):
PROGRAM output_probl
IMPLICIT NONE
INTEGER, PARAMETER :: alen=110
DOUBLE PRECISION, DIMENSION(alen)::a
INTEGER :: i,j
OPEN(20,file='output.dat')
30 format(I5,1x,110(e14.6e3,1x))
DO i=1,15
DO j=1,alen
a(j)=(i*j**2)*0.0123456789
ENDDO
write(20,30)i,(a(j),j=1,alen)
ENDDO
END PROGRAM output_probl
它可以正确编译和运行(使用 Compaq Visual Fortran)。只是输出文件有误。例如,如果我将每个数组项的字段宽度从 14 更改为 8,它会正常工作(这当然不是一个令人满意的解决方案)。 我考虑了一个不合适的默认最大记录长度,但找不到如何更改它(即使使用似乎不起作用的 RECL - 如果您认为应该,欢迎使用 RECL 的具体示例)。
这可能是基本的,但我已经坚持了一段时间...欢迎任何帮助,非常感谢!
【问题讨论】:
-
这应该可以正常工作。您确定无论您使用什么视图文件都不会自动换行吗?
-
其实是的,你是对的。我正在对输出文件进行后处理,尽管它在过去很长一段时间内都运行良好,但它并没有工作。实际上,与数组大小增加相关的变化(我认为导致输出错误)也与输出格式的问题(用 * 填充的字段)有关,因为只有一个极值。直到你的评论让我使用另一个输出正确显示的查看程序,我才发现它,这让我在别处寻找。 @Vladimir F,也谢谢你 - 你的信息也帮助我解决了 recl 的问题。
标签: fortran