FOXPRO的一种容错技术

Author: 应森林 Date: 1997-01-01

  常有一类错误,例如要访问的文件不存在或文件错误,外部设备未准备好,外存空间不够,数据溢出等,往往不会被FOXPRO系统所发现。对这类的错误较常用的容错技术是测试法。所谓测试法是指用FOXPRO的测试函数为程序中所要进行的操作,检测其必需满足的前提条件,若不满足,该操作进行进将发生错误。它是一种预测,预心程序运行错误的有效方法。
  常用几种测试函数容错实例
  1.FILE()检测文件是否存在,以防打开文件时出现“文件不存在”的错误
  IF FILE(“ABC.DBF”) 
     USE ABC.DBF
  ELSE
    ?“ABC.DBF文件不存在”
  ENDIF
  2.EOF()检测记录是否已到库文件尾,以防指针定位库文件尾后,操作出错。
  GO TOP
  DO WHILE .T.
    .
    .
    SKIP 
    IF EOF()
    EXIT 
    ENDI
  ENDDO
  3.YTPE()检测变量的类型,以防对不迪型变量的误操作
  USE ABC.DBF 
  IF TYPE(“基本工资”)=“N”
  REPLACE ALL 基本工资 WITH 基本工资+基本工资*0.1 
  ENDIF
  4.DISKSPACE()检测磁盘空间的字节数,以房文件操作时“外存空间不够”。
  USE ABC.DBF 
  SIZE=33+32*FCOUNT()+RECOUNT()*RECSIZE() 
  IF DISKSPACE()<SIZE 
  ? “磁盘空间不够”
  RERU
  ENDIF 
  COPY TO A:CCC.DBF
  .
  .
  其中FCOUNT()求字段数,RECOUNT()求记录个数,RECSIZE()求记录长度。
  5.USED()测试数据库文件是否正在使用,若对非当前库操作则会出错。
  NA=“ABC.DBF” 
  IF .NOT.USED()
  ? NA+“非当前数据库”
  USE &NA
  ENDIF
  6.SYS(13)(或PRINTSTATUS)检测打印机状态是否准备好,若未准好提醒用户纠正。
  DO WHILE SYS(13)=“OFFLINE”
  WAIT “请把打印机准备好,按任一健”
  ENDDO
  SET PRINT ON