IBM Personalized Form Letters
Donald B. Trivette
If you've ever needed to mail copies of the same letter to a number of people—for holiday greetings, notices of club meetings, or whatever—you'll appreciate this labor-saving program. It automatically retrieves addresses and salutations from disk and prints them atop your form letter. The program requires an IBM PC or PCjr with BASICA or Cartridge BASIC, a disk drive, and a printer. A word processor that saves standard ASCII files is recommended.
'Tis the season to be jolly. 'Tis also the season to send out holiday cards and letters. You remember Christmas letters, those mimeographed missives that let your archfriends know how well you're doing—or how well you want them to think you're doing. Perhaps you've not participated in this holiday ritual because it's just too much trouble to duplicate and address 50 letters—and besides, mimeographed letters are so impersonal.
Now, with the assistance of your IBM PC or PCjr, you too can practice creative writing. The BASIC program following this article automatically merges an address list with a letter to produce a personalized form letter. It's guaranteed to speed up your holiday correspondence and leave your recipients wondering whether they were form-lettered or not.
Of course, "IBM Personalized Form Letters" isn't limited to holiday greetings. You might use this program to contact everyone in the neighborhood about the proposed zoning change to put a nuclear waste dump adjacent to the playground, or to keep the members of the garden club or user group informed about the next meeting. If you occasionally need to send the same letter to many people, and don't want to invest in a commercial form-letter program, then read on.
Standard ASCII Files
IBM Personalized Form Letters is only 76 lines long (53 if you leave out the comments at the beginning). It uses the input from two files, files that you must create using a word processor, a text editor, or the DOS utility program EDLIN. However the files are created, they must be standard ASCII text. (Sorry, WordStar fans.)
One file contains an exact image of the letter. This means that if you're using a word processor to create the letter, you must not count on it to format the lines, insert spaces, and adjust the right margin. Instead, you must decide how many characters to put on each line of the letter; you must format it manually. If your word processor automatically wraps words from one line to another, as most do, you'll need to defeat that feature. For example, text with 50 characters on a line is about right for standard margins, so when a line of text reaches column 50, press the Enter key and start the next line. In other words, type the letter just as you would on an old-fashioned typewriter.
Personalized Form Letters is a dumb program. It won't understand the special codes that switch on boldface printing, underlining, centering, or any of the fancy things your word processor can do. It just reads a line from a file and prints it.
But it's not completely stupid, either. It does know enough to print one letter for each address in the address file. How do you signal the computer where to put the address? Insert <<>> at the proper location in the letter and the program will replace it with a four-line address, a blank line, the salutation, and another blank line. For example:
700 Maple Avenue
Anywhere, NC 27900
December 10, 1984
Hi. We've had a wonderful year …. Made so much money
that we don't know how we'll ever spend it…
By inserting a few blank lines ahead of your own address, you can position the letter so the recipient's address appears through a window envelope when the paper is folded. The program automatically reprints the first letter until you get it properly aligned. (Maybe you can find red window envelopes for the holidays.)
The Address List
The second ASCII file required by the program contains the address list. Again, you may use a word processor to build and maintain the file. Remember to press the Enter key after each line in the address. Personalized Form Letters is designed to use a four-line address and a one-line salutation. The salutation—Dear Bob & Ann,—adds a personal touch. Insert a blank line between each address/salutation group. That's to make it easier for you to separate one address from another when editing the address file. Here's an example of how two addresses would look:
Mr. and Mrs. Bob Adams
123 Main Street
Westover, NH 93939
Dear Bob and Ann,
Dr. and Mrs. Robert Brown
7000 Southfork Avenue
Snake Bluff, CO 94959
Dear Bob & Carol & Ted & Alice,
Notice that the Adams' address is only three lines long, so a blank line is entered as the fourth line of their address.
Personalized Form Letters is designed to print on continuous-forms paper. Who wants to feed in 50 sheets one at a time? You do? Then insert two lines in the program:
374 PRINT "Insert paper and press any key." 375 B$ = INKEY$:IF B$ = "" THEN 375
and it will pause after printing each letter.
Type the BASIC program exactly as it's shown (we recommend using the "IBM Automatic Proofreader" to avoid typos). Save it. Then create your letter and address files as described above. Next, return to BASIC and run the program with those files as input. One important point: You must use Advanced BASIC (BASICA) or PCjr Cartridge BASIC when running this program (ordinary BASIC will result in a syntax error in line 560).
IBM Personalized Form Letters
Refer to "COMPUTE!'s Guide To Typing In Programs" before entering this listing.
IL 10 REM IBM Personalized Form Letters GB 20 REM DI 30 REM A program to print form letters using QL 40 REM addresses from an address file with BE 50 REM the following format: NF 60 REM Address line 1 PL 70 REM Address line 2 AB 80 REM Address line 3 BH 90 REM Address line 4 HC 100 REM Salutation FG 110 REM (blank line to separate one JI 120 REM address from another) OK 130 REM L0 140 REM The letter file is an ASCII file MD 150 REM containing the form letter AA 160 REM IN 170 REM Use <<>> to indicate where the HI 180 REM address/salutation is to appear in the FC 190 REM letter. The program automatically GM 200 REM inserts a blank line before and after MC 210 REM the salutation. OJ 220 REM CA 230 REM ------------- NH 240 KEY OFF:CLS FJ 250 ON ERROR GOTO 730 JN 260 PRINT FL 270 PRINT "IBM Personalized Form Letters" JB 280 PRINT MD 290 LINE INPUT "Enter address filename: " ;ADD$ IN 300 LINE INPUT "Enter letter filename : " ;LETR$ DL 310 LINE INPUT "Enter left margin value: " ;N$ GI 320 N = VAL(N$) NE 330 I = 0 II 340 CLOSE #2:OPEN ADD$ FOR INPUT AS #2 JM 350 CLOSE #1:OPEN LETR$ FOR INPUT A S #1 DH 360 IF I<2 THEN GOSUB 580 PF 370 LPRINT CHR$(12) 'skip to top of page NK 380 IF EOF(1) THEN GOTO 350 OP 390 LINE INPUT #1, A$ CN 400 IF A$ = "<<>>" THEN GOSUB 440 'print address ML 410 LPRINT SPC(N)A$ HP 420 GOTO 380 FB 430 REM ---GOSUB to print address--- BL 440 I = 1 + 1 'count of letters OE 450 FOR J = 1 TO 4 '4-line address HG 460 IF EOF(2) THEN PRINT:PRINT I-1; "Letters printed.":END FI 470 LINE INPUT #2, A$ AG 480 LPRINT SPC(N)A$ 'print on printer EK 490 PRINT A$ 'print on screen NF 500 NEXT J MH 510 LPRINT :PRINT MK 520 LINE INPUT #2, A$ 'salutation MA 530 LPRINT SPC(N)A$ NN 540 LPRINT :PRINT
KI 550 LINE INPUT #2, A$ 'throw away blank line AH 560 RETURN 380 KO 570 REM ---GOSUB to line up letter--- EN 580 IF I <> 0 THEN GOTO 630 MN 590 PRINT "Switch on printer and press any key to continue." IF 600 PRINT MJ 610 B$ = INKEY$:IF B$ = "" THEN GOTO 610 NE 620 RETURN LI 630 LPRINT CHR$(12) GH 640 PRINT STRING$(48, "*") PC 650 PRINT "* Is the letter properly alingned (Y/N/Esc) ? *" GI 660 PRINT STRING$(48, "*"):PRINT:PRINT:LOCATE , , 0 BN 670 B $ = INKEY$:IF B$ = "" THEN 670 GO 680 IF B$ = CHR$(27) THEN END KL 690 IF B$ = "Y" OR B$ = "y" THEN RETURN OF 700 IF B$ = "N" OR B$ = "n" THEN PRINT "Make adjustments…": RETURN 310 KG 710 BEEP :GOTO 670 HP 720 REM ---ERRORS--- FP 730 IF ERR = 53 AND ERL = 340 THEN PRINT "Address file not found.":END PB 740 IF ERR = 53 AND ERL = 350 THEN PRINT "Letter file not found.":END ON 750 ON ERROR GOTO 0 MM 760 END