在Fortran

时间:2016-01-19 06:47:45

标签: csv fortran gfortran data-analysis fortran95

我正在使用外部程序来运行模拟,该模拟向我返回包含输出数据的csv文件。我需要将此文件中的数据读入我的fortran程序,该程序分析并优化输入条件以重新运行外部程序。

CSV文件有20列70行。每列包含特定参数的输出数据。既然那个程序不是由我编写的,我就无法控制输出值的精度。因此,在许多情况下,外部程序会截断小数点后的数字,它们为零。因此,在1号运行中,某个字段在小数点后有3位数,但在2号运行号中只有2位数。

我应该为此做些什么?我不能使用read命令,因为我需要提前指定我的程序必须读取的位数。

我基本上需要一种方法让我的程序识别逗号之间的数据,并读取逗号之间的值或不同的精度。

1 个答案:

答案 0 :(得分:1)

对于输入,如果输入字段不包含小数点,则仅使用格式说明符的小数部分。

在过去的几十年中(自穿孔卡消亡以来),用户通常期望不包含小数点的数值是整数值。因此,输入的,实数的格式规范应始终为小数部分.0

例如,在:

之后
CHARACTER(4) :: input
REAL :: a, b
input = '1   '
READ (input, "(F4.0)") a
READ (input, "(F4.1)") b

a的值为1.0,b的值为0.1。

(对于输入,使用哪个特定的实数据描述符(F,E,D或G)并不特别重要 - 无论输入的性质如何,它们都表现相同。)

因此,对于输入,您只需要担心的是正确的字段宽度。一旦你将一条记录读入一个字符串,这很容易通过使用INDEX内在函数来完成。