爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2133|回复: 0

[求助] 求问,fortran提取未知数据量的其中一部分数据出错了

[复制链接]

新浪微博达人勋

发表于 2015-9-16 10:51:24 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 咕噜 于 2015-9-16 10:52 编辑

问题描述:
1,有400多个txt文件,一个文件是全球地面交换站每天4个时刻,所有台站所有观测量的一个月资料,从1980年到2014年,第一个文件有120M,最新的月份是900多M,就是很大很大,一共127G。我想取出自己选的几十个台站的风速,风向,气温几个要素
2,文件描述这样写的,缺测值一律用 空格 表示

序号
中文名
数据类型
位数
1.   
区站号
Char(5)
1-5
2.   
Number(5)
6-10
3.   
Number(3)
11-13
4.   
Number(3)
14-16
5.   
Number(3)
17-19
6.   
纬 度
Number(6)
20-25
7.   
经 度
Number(7)
26-32

     ………略
16.   
风 向
Number(4)
72-75
17.   
风 速
Number(4)
76-79
18.   
气 温
Number(5)
80-84

     ………略
119.   
特殊天气现象4质量控制码
Number(2)
385-386
120.   
特殊天气现象5质量控制码
Number(2)
387-388
121.   
特殊天气现象6质量控制码
Number(2)
389-390


3,截取一部分数据如下,01001是台站号,到一串8为止,包括所有空格有390个字符(我数过了),紧接着又是01001:
(这里开始)01001 1980 01 01 00  7093   -867    90                     10166  -07 7 040   2 -090 -150     70000  02     2  90  9   450 38                                                                   00                                                                                     8 8 8 0 0 0 0 0 0 1 8 0 0 8 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 801001 1980 01 01 06  7093   -867    90                     10157  -06 8 360   1 -090 -150     70000  02     8  90  9   450 38                                                                   -1                                                                                     8 8 8 0 0 0 0 0 0 1 8 0 0 8 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 801001 1980 01 01 12  7093   -867    90                     10159   00 4 300   1 -110 -160     70000  03     1  75  5   450 38 24 10                                                                                                                                                    8 8 8 0 0 0 0 0 0 1 8 0 0 8 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8(这里结尾)

    每个空格都算一个字符,缺测值用空格表示,从一个时刻到下一时刻刚好390个字符,两个时刻之间没有间隔

4,已经尝试的方法:把数据当字符读,求出过一个文件的字符数,程序如下,算出来,1980年1月的字符数是132524730
  iCount=0
  open(3,file='J:\data\surf_wea_glb\SURF_WEA_GLB_MUL_FTM_QC-198001.txt')
    do
     read(3,'(a390)',ioStat=iErr)cStr
     if(iErr/=0)Exit
     icount=icount+Len_Trim(cStr)
    enddo
  close(3)
  write(*,*) '共包含',iCount,'个字符'

由求得的字符数,尝试重新读出第一个字符,输入较小的数比如390可以读出字符来,但是输入132524730的时候就出错了,错误提示forrt:severe<24>:end-of-file during read, unit 3,file J:\data\surf_wea_glb……
我的程序是:
character*1,allocatable:: var(:)
open(3,file='J:\data\surf_wea_glb\SURF_WEA_GLB_MUL_FTM_QC-198001.txt')
read*,n
      allocate(var(n))
          read(3,*) (var(i),i=1,n)
    print*, var(1)
close(3)
deallocate(var)
end

提出问题:
1,fortran对数据读取的数量有上限吗?390可以,132524730(亿位)就出错了——>或者是我求字符数的程序没写对,或者这个想法不现实?
2,如果能顺利读入写入数据,就可以用if语句判断前5个字符是否等于如54511(北京),然后把它后面的几十个字符取出来,间隔390循环,这个想法可行吗?麻烦大大们帮忙看看,非常感谢您!




密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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