dBASEⅢ中宏代换的应用

Author: 吴为 Date: 1994-05-27

        1.用&函数实现数组
        在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后面只能跟文件名字符串,不能用字符型变量,因此只能使用宏代换实现。