用FoxPro实现英语单词排序

Author: 刘冬生 Date: 1998年 第18期 13版

  最近有些拥有计算机的人在用诸如译林、UCDICT等翻译软件学习英语时,要将查询的历史记录按顺序打印出来,以便记忆。其格式如下:
  famous
  adj.著名的;极好的
  essential
  n.要素;本质;要点;精髓
  adj.本质的;实质的;根本上的;必要的
  communicator
  n.传达者;发报机
  ……
  上述格式的特点是每个英语单词之间有一空行,每个单词的解释有若干行,我们只要将第一行的单词存入一字符型的字段中,将其若干行解释内容存入一备注型字段中,对字符型字段进行排序之后,即可输出排好序的内容,而格式完全不变,源程序如下:
  ***程序名:ec.prg
  ***排序之前的文件名:ec.log,排序之后的文件名:ec.txt
  set talk off
  crea table ec (aa c(60)) &&创建一个数据库,用来存放排序之前的单词
  appe from ec.log sdf
  sele 2
  crea table tmp (aa c(40),bb m(10)) &&创建临时数据库
  sele 1
  go top
  do while .not.eof()
  if !empty(aa)
  sele 2
  appe blan
  repl aa with trim(a.aa)
  sele 1
  do while !empty(aa)
  skip
  sele 2
  repl bb with bb+trim(a.aa)+chr(13) &&加回车换行符,以保持原有格式
  sele 1
  enddo
  else
  sele 1
  skip
  endif
  enddo
  sele 2
  set uniq on &&打开唯一性开关,避免出现重复的单词
  inde on lower(aa) to tmp &&以小写为准进行排序
  set prin to ec.txt
  set devi to prin
  do while .not. eof()
  @prow(),0 say trim(aa)
  @prow()+1,0 say trim(bb)
  skip
  enddo
  set devi to scre
  set prin to
  close data
  !del ec.dbf
  !del tmp.*
  retu
  以上程序在FOXPRO 2.5、386~586机上运行通过。