我正在尝试使用fortran编写一个逗号分隔文件以导入另一个商业软件包。问题是我的数据列数量未知。我的输出需要看起来像这样:具有未知列的格式声明
a_string,a_float,a_different_float,float_array_elem1,float_array_elem2,...,float_array_elemn
,这将导致一些看起来像这样的:
L1080,546876.23,4325678.21,300.2,150.125,...,0.125
L1090,563245.1,2356345.21,27.1245,...,0.00983
我有三个问题。其中,我宁愿将元素紧紧地分组(可变列宽),我不知道如何在格式语句中定义可变数量的数组元素,以及三个数组元素可以跨越很大的范围 - 可能是12个数量级。下面的代码在概念上我想要做什么,但是变量“n”和缺少列宽度定义抛出(当然)的错误:
WRITE(50,900) linenames(ii),loc(ii,1:2),recon(ii,1:n)
900 FORMAT(A,',',F,',',F,n(',',F))
(我应该注意到,N为固定在运行时)当我写WRITE(50,*)时,写语句做了我想要的,除了它是用宽度分隔的。
我觉得这个帖子几乎回答了我的问题,但我很困惑:SO。现在我有一个awk修复这个问题的shell脚本,但是这个解决方案是......不雅观的。我可以做一些操作来使输出成为一个字符串,然后直接写出来,但是我宁愿尽可能避免使用这个选项。
我在Fortran 90中这样做,但我想尽量保持我的代码尽可能向后兼容。
我还应该注意到,我想要紧列的原因是双重的:其一,这是对下一个程序的期望输入,以及两个大小。结果输出文件中可能有几百万行,并有许多列。空间有所作为!谢谢 – 2013-02-27 17:56:25