Fortran77和Fortran90之间的fortran文件读/写语义是否不同?

时间:2015-09-24 12:16:09

标签: fortran

我继承了Fortran77程序的源代码和已编译的可执行文件。我不知道使用什么编译器来生成现有的可执行文件,但我使用的是GCC 4.9.2。除其他外,程序从/向二进制文件读取和写入记录。记录数也存储在文件的开头。

我的问题是我自己编译的可执行文件错误地读取了文件中的记录数,因此在尝试读取最后一条记录时会抛出错误。二进制数据文件是使用现有的可执行文件(我继承的那个)生成的,令人惊讶的是,当我使用现有的可执行文件从数据文件中读取时,它按预期工作。

我的问题是,Fortran READ / WRITE语句是否具有不同的语义(例如文件布局),具体取决于平台,fortran版本或编译器类型/版本?

对于它的价值,读写代码是

    WRITE(INLIB,REC=1)NPROD,(ELMNTS(K),K=1,ITE),(ATOMWT(KK),KK=1,
 +  ITE),IOUT,INFILE,ITERM,IBM,LINEPR

    READ(INLIB,REC=1)NPROD,(ELMNTS(K),K=1,ITE),(ATOMWT(KK),KK=1,ITE)
 +  ,IOUT,INFILE,ITERM,IBM,LINEPR

NPROD是文件中的记录数。当我在READ语句之后设置一个断点时,我可以看到NPROD大约是300,000,当我知道只有大约2,000条记录时。

这是打开文件的代码:

    OPEN(UNIT=INLIB,FILE='PRODUCT.BIN',ACCESS='DIRECT',RECL=1188,
 +  STATUS='OLD')

关于endianess,我认为我当前的平台与二进制数据文件兼容,因为如果我在十六进制编辑器中打开它,我可以看到一些在程序上下文中有意义的清晰的ASCII文本。

0 个答案:

没有答案