mod()函数在FoxPro编程中的应用
例如:有一物资数据库(文件名:WZK),要求月底盘存只打印物资名称(WZMC)和结存量(JCL)两个字段。初学者可能编写程序是:
USE C:\WZK
LIST ALL FIELDS WZWC, JCL TO PRINT
可是打印出的清单只用了打印纸左边一小部份。若根据纸的宽度,字体大小每行打印六条记录正好。上面程序就无能为力。用格式输出命令@<坐标> Say <字段表>只能展开同一条记录的不同字段,不能将同一字段不同记录横向展开。若用函数mod()和数组结合,则可实现将同一字段不同记录在同行横向展开,程序核心部分如下:
USE C:\WZK
STOR RECCOUNT() TO JLZS
STOR INT(JLZS/6) TO YS
DQJL=0
HS=1
SET DEVICE TO PRINT
SET PRINT ON
@ HS+3, 20 SAY ”重庆天龙公司物资清单”
@ HS+3, 66 SAY DATE()
@ HS+6, 0 SAY”物资名称、结存量……物资名称、结存量”
DECL WZ(6), KC(6)
DO WHILE .T.
IF JLZS-DQJL>0
DQJL=DQJL+1
GO DQJL
ELSE
EXIT
ENDIF
STOR MOD(DQJL,6) TO J
STOR WZMC TO WE(J)
STOR JCL TO KC(J)
IF MOD(DQJL,6)<>0
LOOP
ELSE
IF MOD(HS,6)=0
HS=HS+1
ENDIF
@ HS+7, 0 SAY WZ(1) KC(1)
……WZ(0) KC(0)
HS=HS+1
YS=YS-1
LOOP
ENDIF
ENDDO
以上程序用循环语句、数组和MOD()函数实现同一行打印6条记录(每条两个字段),且打满5行自动留一空格再接着打下去。以上程序解决了余数为0时的打印情况。