爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3525|回复: 3

[经验总结] 关于gfortran不支持binary的问题

[复制链接]

新浪微博达人勋

发表于 2022-4-25 22:39:32 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
之前使用gfortran处理数据,用GrADS画图,发现gfortran不支持binary,有点郁闷


自己摸索了一下,写了一个小例子:
program ex
    implicit none
    real::a=10.23,b
    !gfortran不支持binary,这边写入.grd需要指定access='stream'
    open(unit=1,file='svp.grd',access='stream')
    !切记写入的时候不可指定格式,也不可以写write(1,*)
    write(1) a
    close(1)
   
    !读取文件输出看看
    open(unit=2,file='svp.grd',access='stream')
    !注意二进制文件无格式,所以读取的时候直接read(2),不可以写read(2,*)
    read(2) b
    print*,b
    close(2)
end program ex


希望能给大家一些小帮助



——————来自南信大的泥巴


评分

参与人数 1金钱 +10 贡献 +4 收起 理由
lqouc + 10 + 4 赞一个!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-4-26 22:26:13 | 显示全部楼层
并不同意@银狐 的观点,不知是否做过调查就说楼主分享的知识陈旧,不与时俱进。
这里说一下本人了解的情况,与C不同,早期Fortran 90不支持stream(流式)读写,这是后期引入的新语法(Fortran 2003标准),正是这一特性的引入,使得Fortran具备了和C语言一样的流式读写能力,相较已有的sequential 和 direct-access  方式更为灵活和节省碰盘空间。

而“binary"这一语法并不是Fortran标准中的语句,这是正是康柏和intel等商业Foratran编译器早期为了扩展Fortran 90 本身不完善的流式读写能力而开发的。试想如果流式读写功能没用或者陈旧,商业公司干麻费时费力去额外开发这种能力呢。

所以我反而认为楼分享的东西很有心且“与时俱进”,再回头看看我们气象高校中的Fortran课程,天天死守着Fortran 90语法,不传授新的语法规范(2003 2008 2018等)。

相关信息可参考下面的网站
https://fortranwiki.org/fortran/show/Stream+Input+Output
https://community.intel.com/t5/I ... -binary/m-p/1108571
https://stackoverflow.com/questi ... fortran-form-binary

评分

参与人数 1金钱 +6 贡献 +2 收起 理由
lqouc + 6 + 2

查看全部评分

密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-4-26 18:31:58 | 显示全部楼层
本帖最后由 老泥巴 于 2022-4-26 18:34 编辑
银狐 发表于 2022-4-26 17:01
你是程序没学到家,二进制文件现在gfortran标准是form=‘unformatted’,binary是当年旧编译器里 ...

我自己试过,使用form=‘unformatted’需要指定recl;但是用access=’stream‘的话,不需要指定recl。而且这个access=‘stream’它是一种读写方式,而不是文件本身的格式。它并不把二进制文件视为一个一个记录,而是视为一个整体,所以不需要指定recl。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2022-4-26 17:01:19 | 显示全部楼层
你是程序没学到家,二进制文件现在gfortran标准是form=‘unformatted’,binary是当年旧编译器里的,你把gfortran降版本到很低就支持了,要与时俱进,学新的东西。
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表