显然,Fortran 编译器中允许的延续行数存在限制。我有一个临时的病态案例(用于快速测试目的),我需要在不打开文件或做任何诡计的情况下初始化一个巨大的数组,只需将数据作为文字输入。该数组非常大(360000 个条目)。
如何将编译器的限制设置为无限制,或者我可以使用什么替代策略来托管这个数组初始化?
显然,Fortran 编译器中允许的延续行数存在限制。我有一个临时的病态案例(用于快速测试目的),我需要在不打开文件或做任何诡计的情况下初始化一个巨大的数组,只需将数据作为文字输入。该数组非常大(360000 个条目)。
如何将编译器的限制设置为无限制,或者我可以使用什么替代策略来托管这个数组初始化?
您可以使用隐式循环分批分配它们DO
,直到编译器施加的延续限制:
REAL :: xarray(360000)
DATA (xarray(i) i=1,100) /1.0, 2.0, 3.0, 4.0, 5.0, 6.0, &
7.0, 8.0, &
...
98.0, 99.0, 100.0 /
DATA (xarray(i) i=101,200) /101.0, 102.0, 103.0, 104.0, 105.0, 106.0, &
107.0, 108.0, &
...
198.0, 199.0, 200.0 /
我在很多科学的 Fortran 代码中都看到了这一点。
我不知道无限续行的任何编译器设置,但我建议使用以下替代方法:
编写一些代码来使用文本文件中的数据创建源文件。按行或其他方式拆分分配,以帮助避免创建一个巨大的语句来一举初始化数组。请记住,生成代码的代码可能非常灵活。