dBASEⅢ超宽打印制表程序设计技巧

Author: 湖北 董高显 Date: 1994-12-16

        实际情况是使用16×16点阵时,虽然字符缩小了但一行打印的字符超过256个后打印机就自动换行,而不管一行纸是否写到了最右边。
        为此将一行要打印内容的前半部分送给一个内存变量L1(第一个内存变量的总字节数不能超过256),再将同一行内容的后半部分送给另一个内存变量L2。这时用以下语句就可以在同一行打印超过256个以上的字符。
        @0,0 SAY L1
        @PROW(),PCOL()-1 SAY L2
        以下是我在2.13G环境中用C-dBASEⅢ编制的一个每行超过300个字符的制表程序(该程序在VOLTRON-286微机,AR-3240打印机上调试通过)。后附程序清单。
        说明:程序中NYYL是一内存变量文件,它里面存的是以L开头的变量,在ZK0.PRG程序运行前,它们都已被赋值。且NYYL也已建好。使用内存变量编制程序显得简洁,特别是当重复使用某一个固定的内容时,就应把它赋给变量。编程序时遇到使用该内容的地方写上该变量即可。
        clear
        set talk off
        restore from nyyl additive
        pf=15
        @ 1,20 say "打印时的行距?"get pr pict "99"
        read
        set device to print
        eject
        set print on
        @ 0,0 say chr (96)+chr(38)+str(pr,2)+chr(96)
        ?chr(27)+"ID"
        @ 1,35 say "物探处固定资产明细帐"
        @ 2,32 say "-------------"
        ?chr(27)+"Ib"
        yy=substr(dtoc(date()),7,2)
        mm=substr(dtoc(date()),1,2)
        dd=substr(dtoc(date()),4,2)
        store yy+"年"+mm+"月"+dd+"日"to qq
        @ 3,3 say "第  页"
        @ 3,60 say "打印本表日期:"
        @ prow(),pcol()+1 say qq
        ? chr(27)+"Im"
        @ 4,0 say L11
        @ prow(),pco1()-1 SAY L12
        @ prow(),0 say L13
        @ prow(),pco1()-1 say L14
        @ prow(),0 say L15
        @ prow(),pco1()-1 say L16
        @ prow(),0 say L17
        @ prow(),pco1()-1 say L18
        @ prow(),0 say L19
        @ prow(),pco1()-1 say L20
        bb=0
        do while bb<2
        bb=bb+1
        @ prow(),0 say  L21
        @ prow(),pco1()-1 say L22
        @ prow(),0 say L23
        @ prow(),pco1()-1 say L24
        enddo
        @ prow(),0 say L25
        @ prow(),pco1()-1 say L26
        ?chr(27)+"Ib"
        @ prow(),3 say "主管领导:"
        @ prow(),65 say "制表人:"
        @ 1320\pr-75,0 say ""
        eject
        @ 0,0 say chr(96)+chr(38)+"20"+chr(96)
        set print off
        clear
        set device to screen
        return
        (湖北 董高显)