- 积分
- 1969
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-11-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 shirly 于 2013-10-21 19:58 编辑
读取A文件,提取其中的某一部分,编译没错,但是运行总是有错,在此将我的程序和错误贴出,希望可以得到前辈的指点~
program Pro_dat
implicit none
integer,parameter:: h=12!读取KB时要将l改成3,因为深层地温有三层
integer ih,id,il,in,d,j,n,it,day(12),e,z,status,lin(12) !!!!! lin(i)代表第i个月的天数
character(len=80)::filename,filename1
character month(12)*1
character(len=3)::start
data month/'J','F','M','A','Y','U','L','G','S','O','N','D'/
Character, allocatable,dimension(:,:):: fx*4
do e=54,99 !1954到1999年的数据
do z=1,12
!!!打开文件
write(filename,'("E:\dat\A\-2004\","A052681.'//month(z)//'",i2.2)') e !!!打开文件
write(filename1,'("E:\dat\A\wuwei\T\","A52681-19",i2.2,i2.2,".txt")')e,z
open(1,file=trim(filename),form='formatted',status='old')
open(2,file=trim(filename1),form='formatted',status='unknown')
!!!打开的txt文件有多少行
do while(.true.)
read(1,"(a3)", iostat = status,end=10) start
if(status<0)exit
n=n+1
end do
10 print*, n,status
stop
!!!开始读文件,判断到T0时读取数据,T0结束停止读取
start='000'
do j=1,n
if(start.ne.'T')then
read(1,'(a3)') start
elseif(start.eq.'T')then
in=0
do while(.true.)
in=in+1
read(1,'(6(a4,1x))',err=20) fx(1:(h/2),in)
end do
lin(z)=in
endif
enddo
20 print*, 'I0'
deallocate(fx)
end do
end do
end
stop之前运行不出错
之后就出错,出错信息如图::
出错信息
另外我上传了一个A文件样本,发现下载此数据需要金钱,所以先贴一部分数据格式~
写得比较长,但是主要问题就是截取A052679.J54中的T0数据,并知道T0数据的行数
52679 380510255 15250 15250 1954 01
P=
T0
-125 -150 -044 -090 -011 -156
-068 -076 -020 -066 -015 -130
-104 -127 0075 -013 0085 -141
-074 -102 -014 -043 -002 -106
-100 -097 0118 -038 0147 -115
-083 -104 -028 -041 0006 -112
-088 -112 -018 -050 -008 -123
-084 -092 -002 -041 0022 -116
-088 -125 -026 -054 -018 -130
-102 -115 -066 -069 -042 -120
-110 -125 -044 -060 -035 -127
-072 -115 -028 -066 -023 -118
-114 -141 -007 -064 0004 -143
-126 -116 -037 -050 -020 -137
-080 -109 0028 -056 0042 -124
-104 -130 0054 -050 0068 -140
-112 -118 -015 -062 -013 -133
-116 -146 0010 -068 0018 -156
-080 -090 -046 -098 -040 -098
-100 -137 -065 -094 -057 -148
-120 -111 -077 -092 -060 -134
-116 -140 -115 -119 -087 -142
-126 -224 -146 -146 -112 -228
-183 -231 -140 -192 -126 -240
-222 -240 -124 -166 -108 -245
-172 -196 -084 -113 -076 -221
-158 -184 -053 -090 -042 -195
-162 -168 0004 -096 0022 -191
-162 -136 -001 -082 0021 -178
-104 -156 0000 -071 0032 -160
-127 -131 0034 -045 0050 -145=
I=
E=
U2
87 87 60 77
……
……
|
|