用FoxPro转换网上文本格式

   随着Internet的迅速发展,在网络上查询信息越来越为广大用户所接受。但是,从网上截取下来的资料虽然可以满足用户的需求,但是它们的文本格式却并不一定能适合用户的需要。例如,本人通过Internet从某图书馆下载的数据为纯文本,其排列格式如下(dattxt):
  企业编号:00001
  企业名称:上海化工
  员工人数:5000
  主营产品:化工产品
  ……
  这种数据存储方式在网上较为常见。我现用FoxPro 25b for Windows编写了一段程序,将上述的竖排式文本格式转换成FoxPro数据库的二维表形式,以方便操作管理,即转换成如下表格式(datdbf):
  也就是将dattxt中的信息转换到datdbf数据库中去。当然,下载的数据必须是规范化的,如左边的类别名称必须是统一的,如果有不同之处,需事先将它调整好,且类别名称与右边的具体资料之间是用冒号分隔开的,每个企业的第一条信息都应是该企业的编号。
  转换程序执行的过程中,首先将文本信息收入一临时数据库文件(lsdbf)中,然后,对该数据库中每条信息进行判断,将冒号左边的查询名称,在字段名称表数据库(zdmcbdbf)中对应找到datdbf中的字段名,将冒号右边的内容作为要存储的信息保存到数据库datdbf相应的字段中去,而对于没有冒号的信息均作为该企业的备注信息加以保存。
  字段名称表数据库zdmcbdbf的内容如下表,其中查询名称为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   (浙江 苏 云)