运行这个小程序
program main
implicit none
integer(8) :: irecl
irecl= 4147483646_8
open(3,file='STORE.data',form='unformatted',access='direct',recl=irecl)
end
使用ifort 19.0.0.117编译不会给我带来任何问题,但是使用ifort 18.0.1可以给我一个forrtl: severe (118)
。我知道这是因为ifort具有最大记录长度(至少18版本有)。我找不到关于ifort 19的最大记录长度的任何信息。它消失了吗?或有多高?它似乎低于int * 8(9223372036854775807)的范围。
答案 0 :(得分:2)
比较版本18和19之间的英特尔文档,我发现记录长度值的限制已删除。 (关于格式记录,文档尚不完全清楚,但我认为它也适用于此。)实际上,您将只能直接访问适合带符号的64位的字节偏移量整数。请注意,默认情况下,您显示的OPEN中的RECL =单位为4字节单位(除非您启用了“ assume byterecl”选项(也由standard_semantics隐含))。
我从英特尔时代回想起一个错误,该错误是编译器和运行时库不同意它们对大于2 ** 32的RECL值的支持。那是固定的,也许是在版本19中。
我同意弗拉基米尔·F(Fladimir F)的观点,您最好直接问英特尔。您可能会在英特尔论坛上提问,尽管可能需要一些时间,但可能会得到熟悉的答复。