10 'addltr 6-28-85 15 'init 20 CLEAR1000:CLS:PRINT@45,"ADDRESS LETTER PRINT":PRINT@80,"USES DBNEW ADDRESS FILE & LETTER FILE":PRINT@125,"BY MARTIN HUYETT" 25 FORA=0TO800:NEXTA:CLS:MAXFILES=3:DIMAD$(9):ONERRORGOTO445 30 CR$=CHR$(13):SP$=" ":ON INSTR(1," 010203040506070809101112",LEFT$(DATE$,2))/2GOSUB 385 ,390,395,400,405,410,415,420,425,430,435,440 35 'sel file 40 CLS:FILES:INPUT"Type 'ADDRESS LIST' filename:";ZF$:INPUT"Type 'LETTER' Filename:";F$ 41 INPUT"Left Margin :";LM:INPUT"Right Margin :";RM 42 CLS:INPUT"Type Heading: ";HD$:INPUT"Heading Tab Position: ";HT:INPUT"Top Margin: ";TM:INPUT"Blank lines after heading: ";AH:INPUT"Blank lines after date: ";AD 45 INPUT"Type Address Selection String: ";AS$:CLS 50 IFMID$(ZF$,4,1)=":"THENGOTO 55 ELSEGOTO 60 55 CLS:PRINT@45,"Prepare '";ZF$;"' to be read":PRINT@85,"Any key when ready":Z9$=INPUT$(1):PRINT@125,"Finding '";ZF$;"'..." 60 OPENZF$FORINPUTAS1:OPEN"LPT:"FOROUTPUTAS2 65 'sel addr 70 IF OF$<>""THENGOTO 85 75 IFAS$="code"ORAS$="CODE"THENGOTO 180 ELSELINEINPUT#1,IN$:IFINSTR(1,IN$,AS$)>0THENGOSUB 90 80 IF EOF(1)THENCLOSE:MAXFILES=1:MENUELSEGOTO 75 85 LINEINPUT#1,IN$:GOSUB 90 :IFEOF(1)THENCLOSE:MENUELSE 85 90 'load fields 95 FORB=1TO7:GOSUB 175 :AD$(B)=LEFT$(IN$,A-1):IN$=RIGHT$(IN$,LEN(IN$)-A):NEXTB:AD$(B)=IN$ 100 CLS:PRINT@45,"Processing...";AD$(2):GOSUB 110 105 RETURN 110 'print salutation 115 YY=TM:GOSUB500:PRINT#2,TAB(HT);HD$:YY=AH:GOSUB500:PRINT#2,SPACE$(LM);MO$;" "; 117 IFMID$(DATE$,4,1)="0"THENPRINT#2,MID$(DATE$,5,1);", ";ELSEPRINT#2,MID$(DATE$,4,2);", "; 120 PRINT#2,"1985":YY=AD:GOSUB500 125 PRINT#2,SPACE$(LM);"Dear ";AD$(7);",":PRINT#2,SP$;CR$ 130 LC=4+TM+AH+AD:GOSUB 250 135 RETURN 140 GOSUB 175 :IFA>0THENGOSUB 155 :GOTO 140 145 IFLEN(IN$)>0THENGOSUB 160 :GOTO 140 150 RETURN 155 PR$=PR$+AD$(VAL(LEFT$(IN$,A-1))):IN$=RIGHT$(IN$,LEN(IN$)-A):PR$=PR$+" ":RETURN 160 PR$=PR$+AD$(VAL(IN$)):IN$="":RETURN 175 A=INSTR(1,IN$,","):RETURN 180 'code sel 185 W=0:X=0:Y=0:Z=0:M=8 190 CLS:PRINT@45,"ENTER SELECTION CODE":PRINT@85,"TYPE x FOR DON'T CARE" 195 PRINT@125,"TYPE 4 DIGITS: ";:INPUTC$:CLS:PRINT@45,"SELECTION CODE IS: ";C$ 200 PRINT@125,"CORRECT (y/n)? ";:A$=INPUT$(1):IFA$="n"ORA$="N"THENGOTO 190 205 IF EOF(1)THENCLOSE:MENUELSELINEINPUT#1,IN$:Y$=RIGHT$(IN$,4):X=0:W=0:Y=0:Z=0 210 IFLEFT$(C$,1)="x"ORLEFT$(C$,1)=LEFT$(Y$,1)THENW=1 215 IFMID$(C$,2,1)="x"ORMID$(C$,2,1)=MID$(Y$,2,1)THENX=1 220 IFMID$(C$,3,1)="x"ORMID$(C$,3,1)=MID$(Y$,3,1)THENY=1 225 IFRIGHT$(C$,1)="x"ORRIGHT$(C$,1)=RIGHT$(Y$,1)THENZ=1 230 IF W=1ANDX=1ANDY=1ANDZ=1THENGOTO 240 235 IFOF$<>""ANDEOF(1)THENAS$="":RETURNELSEGOTO 205 240 IFOF$<>""THENPRINT#2,IN$:IFEOF(1)THENAS$="":RETURNELSEGOTO 205 245 GOSUB 90 :GOTO 205 250 ' Letter Print 255 OPENF$FORINPUTAS3 260 PRINT#2,SPACE$(LM); 265 IFEOF(3)THEN 375 270 A$=INPUT$(1,3) 275 IFLPOS(0)=LMANDA$=SP$THEN 270 280 IFLPOS(0)SP$THENGOTO 310 290 PRINT#2,A$ 295 LC=LC+1 300 PRINT#2,SPACE$(LM); 305 IFLC<57THEN 265 ELSEGOTO 345 310 PRINT#2,A$; 315 IF A$<>CR$THEN 340 320 LC=LC+1 325 A$=INPUT$(1,3) 330 IFA$=SP$THEN 325 335 PRINT#2,SPACE$(LM); 340 IFLC<57THENGOTO 265 345 LC=1 350 FORI=1TO10 355 PRINT#2,CHR$(10) 360 NEXTI 365 PRINT#2,SPACE$(LM); 370 GOTO 265 375 IFLC<57THENI=LC:FORLC=ITO65:PRINT#2,CHR$(10):NEXTLC 380 PRINT#2,CHR$(13):CLOSE3:RETURN 385 MO$="January":RETURN 390 MO$="February":RETURN 395 MO$="March":RETURN 400 MO$="April":RETURN 405 MO$="May":RETURN 410 MO$="June":RETURN 415 MO$="July":RETURN 420 MO$="August":RETURN 425 MO$="September":RETURN 430 MO$="October":RETURN 435 MO$="November":RETURN 440 MO$="December":RETURN 445 CLS:PRINT"ERROR. HIT ANY KEY TO CONTINUE":CC$=INPUT$(1):RESUME 500 FORZZ=1TOYY:PRINT#2,CHR$(10);CR$:NEXTZZ:RETURN