从Mac OS到XP的Fortran输入文件

时间:2013-02-12 11:24:05

标签: fortran90

我最近得到了一些在Mac OS上成功运行的Fortran代码。此代码以及输入文件后来被发送给我以进行编译。我精确地使用了相同的代码和相同的输入文件,但出现了“超出数组边界”的错误。我在Windows XP上使用CVF 6.6。 我想知道以下事项:

  1. 这是编译器还是操作系统问题?
  2. 我应该安排Mac OS来编译吗?
  3. 在网上冲浪之后,我认为明智的做法是让我的数据“格式免费”。但是,当我的数据是一列中的时间序列和第二列中的电压时,我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:1)

错误消息array bounds exceeded总是(我认为)表明您的代码试图访问数组边界之外的数组元素,例如具有24个元素的数组中的元素25。这只能在运行时发生,并且编译器/运行时只会在编译时设置数组边界检查的编译器选项时才会发现它;您的编译器文档将告诉您这些选项是什么。

错误消息应附有更多信息,告诉您程序中错误发生的位置以及越界数组访问的索引。

鉴于您的源代码和输入数据相同,这是怎么发生的?由于您已经在两个不同的平台上编译了程序,因此您的编译不可能完全相同,因此完全可以在Mac上和Windows PC上关闭阵列边界检查。

尽管访问了越界数组元素,Fortran程序仍然可以成功执行。如果24中的数组元素25的存储器地址保持有意义的值并且地址在程序的空间内,则计算可能继续。它也可能没用,但你可以在找到它之前多年。

我建议您返回Mac,使用数组边界检查重新编译,然后再次运行,看看会发生什么。

读取文件的例程也可能在XP和Mac上找到不同数量的值;我怀疑这可能是由不同的行结束字符引起的,即使输入文件是否在结尾处有换行符也是如此。检查一下。

相关问题