mod()函数在FoxPro编程中的应用 韦金 1997-01-01   初学FoxPro时,会觉得mod()求余函数好像用途不大,其实在编程中大有用处。   例如:有一物资数据库(文件名: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时的打印情况。