Fortran Coder

查看: 16171|回复: 2

[求助] RECL问题

[复制链接]

21

帖子

6

主题

0

精华

入门

F 币
83 元
贡献
50 点
发表于 2014-3-17 03:03:28 | 显示全部楼层 |阅读模式
现在想要通过改变RECL来改变每次读入数据的大小,从而方便检索,但是发现改变了RECL的值以后,读入数据和预期不一样啊
下面的代码首先以RECL=4*4向文件中写入数据1到16,然后以RECL=2*4从文件中读入数据,为什么读入的数据偶数行都为0,用RECL=4*4读入,发现数据并没有被修改~求指点啊~
[Fortran] 纯文本查看 复制代码
 PROGRAM MAIN      INTEGER II,JJ,KK,LL,MM
      OPEN(UNIT=15,FILE='dty.bin', ACCESS='DIRECT',
     =STATUS='REPLACE',FORM='UNFORMATTED',RECL=4*4)
      DO 100 II=1,4
          WRITE(15,REC=II) (JJ,JJ=1+(II-1)*4,II*4)
100   CONTINUE
      CLOSE(15)
      PRINT*,'The original'
      OPEN(UNIT=15,FILE='dty.bin',ACCESS='DIRECT',
     =STATUS='OLD',FORM='UNFORMATTED',RECL=4*4)
      DO 200 II=1,4
          READ(15,REC=II) JJ,KK,LL,MM
          WRITE(*,*) JJ,KK,LL,MM
200   CONTINUE
      CLOSE(15)
      PRINT*,'New'
      OPEN(UNIT=15,FILE='dty.bin',ACCESS='DIRECT',
     =STATUS='OLD',FORM='UNFORMATTED',RECL=2*4)
      DO 300 II=1,8
          READ(15,REC=II) JJ,KK
          WRITE(*,*) JJ,KK
300   CONTINUE
      CLOSE(15)
      PRINT*,'The original'
      OPEN(UNIT=15,FILE='dty.bin',ACCESS='DIRECT',
     =STATUS='OLD',FORM='UNFORMATTED',RECL=4*4)
      DO 400 II=1,4
          READ(15,REC=II) JJ,KK,LL,MM
          WRITE(*,*) JJ,KK,LL,MM
400   CONTINUE
      CLOSE(15)
      END
      

709

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
596 元
贡献
305 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

发表于 2014-3-17 07:50:34 | 显示全部楼层
你可参考本站文章:http://www.fcode.cn/guide-4-1.html 第5个问题。

RECL 可能有两种含义,一是每个记录的字节,二是每个记录的数据量。

通常32位编译器,字节 = 数据量 * 4

你的编译器可能是这两种含义之中的某一个,这需要你翻阅编译器说明书,或者自己测试一下。(某些编译器还允许改变设置来改变这个含义)

很显然,你的编译器认为 RecL 是数据量,而你认为是字节数。

修改的话,只要把 RecL = 4*4 修改为 RecL = 4 ; RecL = 2*4 修改为 RecL = 2 既可。

另外,要注意你的 dty.bin 文件。16个数据,每个4字节,应该是64字节。如果你的文件是 256字节,则说明 RecL 比预期大了四倍。

21

帖子

6

主题

0

精华

入门

F 币
83 元
贡献
50 点
 楼主| 发表于 2014-3-18 00:48:37 | 显示全部楼层
chuxf 发表于 2014-3-17 07:50
你可参考本站文章:http://www.fcode.cn/guide-4-1.html 第5个问题。

RECL 可能有两种含义,一是每个记录 ...

赞一个~谢谢啊~发现IVF默认的是数据量~~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-3-29 21:29

Powered by Tencent X3.4

© 2013-2024 Tencent

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