dBASEⅢ中宏代换的应用
在dBASEⅢ中没有定义数组这样一种数据类型,但是利用循环语句和宏代换可以实现数组这种数据类型。例如,建立一个二维数组A。其数组元素为:
A11,A12,……A15
A21,A22,……A25
A51,152,……A55
并把元素的初值全部置为0。其程序如下:
STOR 1 TO J,K
DO WHILE J<=5
P=STR(J,1)
K=1
DO WHILE K<=5
H=STR(K,1)
A&P&H=0
K=K+1
ENDDO
J=J+1
ENDDO
LIST MEMO
程序中第3行和第6行是把数字型换成字符型,因为&函数要求字符型内存变量。最后一行用于列出建立的数组中的各元素。
2.用&函数实现文件名的随机输入
当数据库文件很多时,不可能在菜单中一一列出,这时可用&函数实现文件名的随机输入,以便可以打开用户指定的任意数据库或执行任意指定的模块。
下面程序可用于打开随机输入文件名的库文件,当输入的文件有错时程序提供了保护,直到重新输入正确为止。
DO WHILE .T.
ACCEPT '请输入库文件名:'TO NAME
IF .NOT. FILE('&NAME DBF)
CLEAR
@ROW()+1,5 SAY NAME+;
'数据库没找到,请重新输入'
ELSE
EXIT
ENDIF
ENDDO
USE & NAME
3.用&函数简化主控菜单程序
组织菜单程序中的分支选择可以使用DO CASE语句,但菜单选项很多时,将会使CASE语句行大量增加,使程序繁锁。用&函数即可使之简化。
SET TALK OFF
CLEAR
TEXT
0 - 退出系统 SR - 输入
SC - 输出 TJ - 统计
ENDTEXT
DO WHILE .T.
H=" "
@10,22 SAY'请按要求输入模块名:'
GET H
READ
IF H='0'
EXIT
ENDIF
DO &H
ENDDO
由于在DO后面只能跟文件名字符串,不能用字符型变量,因此只能使用宏代换实现。