我正在尝试使用 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,*) 时,write 语句执行我想要的操作,除了它是宽度分隔的。
我认为这个线程几乎回答了我的问题,但我很困惑:所以。现在我有一个用 awk 解决问题的 shell 脚本,但那个解决方案是......不优雅。我可以进行一些操作以使输出成为字符串,然后直接编写它,但如果可能的话,我宁愿避免使用该选项。
我在 Fortran 90 中执行此操作,但我想尝试使我的代码尽可能向后兼容。