用FoxPro转换网上文本格式

Author: 苏云 Date: 1998年 第19期 13版

  随着Internet的迅速发展,在网络上查询信息越来越为广大用户所接受。但是,从网上截取下来的资料虽然可以满足用户的需求,但是它们的文本格式却并不一定能适合用户的需要。例如,本人通过Internet从某图书馆下载的数据为纯文本,其排列格式如下(dat.txt):
  企业编号:00001
  企业名称:上海化工
  员工人数:5000
  主营产品:化工产品
  ……
  这种数据存储方式在网上较为常见。我现用FoxPro 2.5b for Windows编写了一段程序,将上述的竖排式文本格式转换成FoxPro数据库的二维表形式,以方便操作管理,即转换成如^191301a^格式(dat.dbf)。
  也就是将dat.txt中的信息转换到dat.dbf数据库中去。当然,下载的数据必须是规范化的,如左边的类别名称必须是统一的,如果有不同之处,需事先将它调整好,且类别名称与右边的具体资料之间是用冒号分隔开的,每个企业的第一条信息都应是该企业的编号。
  转换程序执行的过程中,首先将文本信息收入一临时数据库文件(ls.dbf)中,然后,对该数据库中每条信息进行判断,将冒号左边的查询名称,在字段名称表数据库(zdmcb.dbf)中对应找到dat.dbf中的字段名,将冒号右边的内容作为要存储的信息保存到数据库dat.dbf相应的字段中去,而对于没有冒号的信息均作为该企业的备注信息加以保存。
  字段名称表数据库zdmcb.dbf的内容如^191301b^,其中查询名称为dat.txt中左边栏的类别名称,字段名为dat.dbf中的字段名。
  临时数据库ls.dbf只有一个字符型字段Line,其长度为200,以保证能放下较长的信息。本程序是在Windows 95中用FoxPro编写并运行通过的。
  程序如下:
  SET TALK OFF
  SET SAFE OFF
  CLEAR ALL
  CLEAR
  SELE 1
  USE DAT
  SELE 2
  USE ZDMCB
  SELE 3
  USE LS
  ZAP
  APPE FROM DAT.TXT SDF
  SCAN FOR ′编号′|SLINE
  X=AT(′:′,LINE)
  BH=ALLTRIM(SUBS(LINE,X+1))
  SELE 1
  APPE BLAN
  REPL 编号 WITH BH
  SELE 3
  SKIP
  DO WHILE !′编号′|SLINE.AND.!EOF()
  X=AT(′:′,LINE)
  IF X>0
  Y1=ALLTRIM(SUBS(LINE,1,X-1))
  Y2=ALLTRIM(SUBS(LINE,X+1))
  SELE 2
  LOCA FOR 查询名称=Y1
  IF FOUND()
  XXX=ALLTRIM(字段名)
  SELE 1
  REPL (XXX) WITH Y2
  ENDIF
  ELSE
  Y2=ALLTRIM(LINE)
  SELE 1
  REPL 备注 WITH ALLTRIM(备注)+Y2
  ENDIF
  SELE 3
  SKIP
  ENDDO
  SKIP -1
  ENDSCAN
  CLEAR ALL