在无格式直接访问中打开文件时,在 recl 中应该使用什么?

问题描述

我试图完全理解如何在 Fortran 中处理二进制文件。具体来说,我正在阅读这个 https://atmos.washington.edu/~salathe/osx_unix/endian.html ,它涵盖了当要写入的记录是固定长度时如何写入二进制文件。考虑到系统的字节序是相同的(据我所知,在 2021 年就是这种情况)现在是 Little Endian)。

文章中说使用directunformatted打开文件

open (unit=1,file='out.r4',form='unformatted',access='direct',recl=m*n*sizeofreal)

如果我理解正确的话,recl 参数用于控制要写入的记录的大小。

我对如何在 Fortran 中使用 recl 有几个疑问:

  • 是以字节为单位的记录大小吗?
  • 它是否依赖于编译器?
  • 这是否取决于我们使用的 Fortran 标准?
  • 如果是,标准之间有什么区别?
  • recl 的含义取决于我们编写的是派生类型还是“常规”类型?

我的实验表明,在编写派生类型记录时使用派生类型的bytes大小就足够了;但我不知道这是否取决于我使用的特定编译器。

认情况下,我尝试使用 flang 和 Fortran 95(只是为了学习与 f2py 完全兼容的标准)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)