PSET in dBASE (PC Magazine Vol 5 No 16 Sept 30, 1986 Power User) PSET.COM (PC Magazine Vol 5 No 8 April 29, 1986 Power User) is translated into dBASE. PSET.PRG can be called from the dot prompt or directly from a program, and the syntax is the same as for PSET.COM, with one exception: in dBASE, the control codes are passed as a parameter, so they must be enclosed in quotes. For example, the sequence ESC E ESC G sets an Epson to print double-strike/emphasized. To send this command in dBASE, you use: . do pset with "27 69 27 71" The control codes are accepted by the printer without moving the printhead, so you can change type sizes or enhancements on the same print line -- up to dBASE's built-in limitation of 264 characters per command line. The CONSOLE is SET OFF so the proceedings don't muddle up your screen with that screwball crew of characters under CHR(32)! Editor's Note: It's handier to call PSET.PRG than to RUN PSET.COM even if you have the memory available. It's faster, too. The line "pset=incoming" was added, so the incoming parameter doesn't get eaten in the DO WHILE loop. So, for example, you could: . STOR "27 69 27 71" to dublbold . DO PSET WITH dublbold Notice that if you're passing a memory variable as the parameter, don't enclose it in quotes. If you do, PSET will dutifully shout CHR(dublbold) at your printer and -- worse -- your printer will hear! There's a lot you can build onto PSET if you want to. You could STORE complete sets of parameters at the beginning of a program or in a procedure file. Or you could save them in a .MEM file, RESTORing them as needed. This is useful if you often switch between printers. *** PSET.PRG - Sends control codes to a printer PRIV incoming,pset,loc,seg PARA incoming SET CONS OFF pset=incoming DO WHIL " "$pset loc=AT(" ",pset) seg="CHR("+SUBS(pset,1,loc-1)+")" SET PRIN ON ?? &seg SET PRIN OFF pset=SUBS(pset,loc+1) ENDDO seg="CHR("+pset+")" SET PRIN ON ?? &seg SET PRIN OFF SET CONS ON RETU * Incoming parameter uses the space as delimiter * Printer must be online