- 积分
 - 1727
 
	- 贡献
 -  
 
	- 精华
 
	- 在线时间
 -  小时
 
	- 注册时间
 - 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 
…… 
…… 
 
 
 |   
 
 
 
 |