使用 gfortran 读取大型二进制文件/OPEN 语句的 RECL= 大小

Reading large binary files with gfortran / size of RECL= of the OPEN statement

当 RECL < 2,147,483,647 时,以下代码部分可以正常工作:

mult = imax*jmax*kmax*sizeofdouble
PRINT *,mult
OPEN (UNIT=2000, FILE=binaryFile, FORM='unformatted',access='direct',recl=mult)
READ (2000,rec=1) fromBinary
CLOSE (2000)

对于更大的值,即使 mult 打印正确(它 一个 64 位整数),我得到错误 Fortran runtime error: RECL parameter is non-positive in OPEN statement。显然,这是由于错误 #44292.

除了使用其他编译器之外,您是否看到一种重写上述代码的方法,这样我就不需要为 RECL 使用大值?

不能保证,但很可能您的文件也可以通过流访问读取。尤其是 gfortran。

OPEN (UNIT=2000, FILE=binaryFile, FORM='unformatted',access='stream')
READ (2000) fromBinary
CLOSE (2000)

它将根据数组的大小读取尽可能多的字节fromBinary

优点是没有处理器依赖性,流文件对所有编译器都是一样的。与所有未格式化的文件一样,仍然应该注意字节顺序。