微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题SET EXACT命令的使用
栏目软件操作与技巧
作者谢康
发布1993-01-08
  这个最简单的菜单有两个选择项“1.**”和“11.***”。完成这个菜单功能的最简单的程序为:
  set talk off
  clear
  do while .t.
  text
  1.**
  11.***
  endtext
  acce'请输入选择编号……'toa
  do case
  case a='1'
  do 完成选择项**的子程序
  wait
  case a='11'
  do 完成选择项***的子程序
  wait
  endcase
  enddo
  当运行这个菜单程序时,若想执行选择项***的功能,当屏幕上出现“请输入选择编号……”时,从键盘键入“11”,程序执行的是选择项**的功能,而不是选择项***的功能。仔细检查程序似乎没有问题,为什么键入“11”后却执行“1”编号对应的选择项**的功能呢?原来问题出在set exact命令上。
  set exact命令是与字符串比较运算有关的。它的格式是:set exact on/off。
  系统初始引导后处于“off”状态。在使用了命令“set exact on”后,字符串的比较就是严格的了,等号左端的字符串必须和右端的字符串对应字符完全相同,这两个字符串才被认为是相等的。如:
  . ? ' A B C D E F
  ' = ' A B C '
  . T .
  . ? ' 1 1
  ' = ' 1 '
  . T .
  . set exact on
  . ? ' A B C E E F ' ='ABC'
  . F .
  . ? ' 1 1 ' = ' 1 '
  . F .
  了解了set exact命令的作用后,不难解决文章开头出现的问题。系统初始引导后处于“off”状态,若想执行选择项***的功能,当你从键盘键入“11”后,程序执行中先将你键入的“11”与“1”比较,“11”相当于等号左端的字符串,“1”相当于等号右端的字符串。
  当然,若菜单中的选择项数目少于10时,选用编号0、1、2、……或9,就不会出现这个问题;若选择数目多于10时,若用编号11、12、……等,则会出现这类问题。有些同志在出现这类问题后,检查程序,又觉得没问题,在没办法情况下,选用编号0、1、……9、A、B、C、……Z来作为选择编号。但若选择项再多,必须出现11、12,……19及21、22、……29、……时,这个问题就无法避免,必须在程序中加入,set exaet on命令来解决这个问题。