回 帖 发 新 帖 刷新版面

主题:关于forr1:severe (66)

今天运行程序,出现forr1:severe (66):output statement overflows record的错误,查看之前的帖子说是rec
的值太小,将其改大点,可是自己的的数据确实只有这么多记录,该怎么解决?
请高手解答

回复列表 (共4个回复)

沙发

recl是单个记录所占的字节数,而不是记录数,也不是单个记录的数据个数:)这回明白了么?

板凳


我的程序代码如下
open(10,file=‘’,form='unformatted',access='direct',recl=144*37)
irec=0
do j=1,92
irec=irec+1
write(10,rec=irec)((ss(i,k,j),i=1,144*37),k=1,8) 
enddo
这样的就会出现错误,而将其改为
irec=0
do j=1,92
do k=1,8
irec=irec+1
write(10,rec=irec)(ss(i,k,j),i=1,144*37)
enddo
enddo
就对了...
第一次的代码rec为92,第二次应该是92*8吧...
看了之前的帖子说是rec的值太小造成的...
我现在想的是,不改程序行么?是不是rec有个下限值

3 楼

第一种写法单个记录的大小为 144*37*8

第二种写法单个记录的大小为144*37

而你定义的单个记录大小为144*37。如果想按照第一种写法的话,应该改成:
open(10,file=‘’,form='unformatted',access='direct',recl=144*37*8)

4 楼

知道错在哪里了,低级错误呀

我来回复

您尚未登录,请登录后再回复。点此登录或注册