无格式的直接访问文件可移植性

时间:2016-10-24 15:06:49

标签: linux file fortran

我有一个Fortran代码,用于编写未格式化的直接访问文件。问题是当我切换到不同的平台时,文件的大小和内容会发生变化:

  • 第一个平台是Windows(使用英特尔编译器的程序的32位版本 - 2009年左右版本)

  • 第二个平台是Linux(64位版本的程序,带有gfortran编译器v4.9.0)。

不幸的是,无法从Windows中读取Linux中生成的文件。 LINUX中的文件小5-6倍。但是,写入的记录总数似乎相同。我用十六进制编辑器打开了两个文件,主要区别在于文件的Windows版本中存在很多零。 有没有办法在LINUX中生成完全相同的文件?

如果有帮助,您可以在此处找到这两个文件:https://www.dropbox.com/sh/erjlf5sps40in0e/AAC4XEi-p4nnTNzhyai_ZCZVa?dl=0

我使用以下命令打开文件:OPEN(IAST,FILE=ASTFILR,ACCESS='DIRECT',FORM='UNFORMATTED',RECL=80)

我用命令写: WRITE(IAST,REC=IRC) (SNGL(PHI(I)-REF), I=IBR,IER)

我使用命令阅读:READ(IAST,REC=IRC,ERR=999) (PHIS(I), I=1,ISTEP) 其中PHISREAL*4数组

1 个答案:

答案 0 :(得分:1)

问题在于,默认情况下,英特尔Fortran指定RECL =以字为单位,而GFortran使用字节。您可以使用英特尔Fortran编译器选项使其使用字节单位。在Linux上,该选项是

-assume byterecl

对于Windows我不确定语法是什么,可能像

/assume:byterecl
相关问题