home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib22a.dsk
/
NOVEMBER.1984
/
COUPMAN.bas
< prev
Wrap
BASIC Source File
|
2023-02-26
|
20KB
|
485 lines
10 REM *******12.26.84*********
20 REM * COUPMAN *
30 REM * BY GLENN TEMAN *
40 REM * COPYRIGHT (C) 1984 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA. 01742 *
70 REM ************************
80 REM -- INITIALIZE --
90 TEXT
100 HOME : PRINT TAB( 17);"COUPMAN"
110 FOR I = 1 TO 8: PRINT "-----";: NEXT I
120 REM SET DOWN TOP OF TEXT WINDOW
130 POKE 34,2: VTAB 11: HTAB 20: PRINT "BY"
140 HTAB 24: PRINT "GLENN TEMAN": VTAB 16: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **"
150 D$ = CHR$(4):G$ = CHR$(7):SL = 1
160 DIM R%(7),S%(100)
170 ONERR GOTO 270
180 PRINT D$;"OPEN COUPON.FILE,L64"
190 PRINT D$;"READ COUPON.FILE,R0"
200 INPUT LN,LR,NC
210 PRINT D$;"CLOSE COUPON.FILE"
220 VTAB 20: PRINT NC;" COUPONS ON FILE ..."
230 PRINT : PRINT "<RETURN> TO CONTINUE ";
240 GET A$
250 GOTO 350
260 REM -- ONERR RTN --
270 I = PEEK(222): PRINT : PRINT D$;"PR#0": PRINT D$;"CLOSE"
280 IF I < >5 THEN PRINT : PRINT G$;"<ERROR # ";I;">": GET K$: PRINT : GOTO 350
290 REM HANDLE OUT OF DATA ERROR
300 PRINT D$;"OPEN COUPON.FILE,L64": PRINT D$;"WRITE COUPON.FILE,R0"
310 PRINT 0: PRINT 0: PRINT 0
320 LN = 0:LR = 0:NC = 0
330 GOTO 210
340 REM -- MENU --
350 HOME : VTAB 4
360 PRINT "1. ENTER COUPONS": PRINT "2. EDIT COUPONS"
370 PRINT "3. DELETE COUPONS": PRINT "4. LIST/DELETE EXPIRED COUPONS"
380 PRINT "5. LIST BY PRODUCT": PRINT "6. LIST ALL COUPONS"
390 PRINT "7. LIST BY CATEGORY": PRINT "8. SEARCH & PRINT COUPONS"
400 PRINT "9. QUIT"
410 VTAB 18: PRINT "OPTION?"
420 VTAB 18: HTAB 9: CALL -868:M = 1: GOSUB 1930
430 I = VAL(I$): IF I <1 OR I >9 THEN PRINT G$: GOTO 420
440 IF I = 9 THEN 480: REM QUIT
450 ON I GOSUB 870,1480,2090,2430,2920,3340,3920,4340
460 GOTO 350
470 REM -- QUIT --
480 VTAB 20: PRINT : PRINT "GOODBYE!"
490 POKE 34,0: REM RESET TEXT WINDOW
500 END
510 REM -- TITLES --
520 VTAB 3: HTAB 1: CALL -958
530 INVERSE : PRINT A$: NORMAL
540 RETURN
550 REM -- CK CATEGORY --
560 ER = 0: IF CA$ < >"?" THEN 750
570 VTAB 18: HTAB 1: CALL -958
580 PRINT " BE - BEVERAGES": PRINT " CA - CANNED GOODS"
590 PRINT " DE - DESSERTS": PRINT " ME - MEAT, CHICKEN, FISH"
600 PRINT " FR - FROZEN FOODS"
610 GOSUB 820
620 PRINT " WR - WRAPS, FOILS, BAGS"
630 PRINT " PA - PAPER TOWELS, TISSUES"
640 PRINT " NO - NOODLES, RICE, PASTA"
650 PRINT " DA - DAIRY (MILK, CHEESE, ETC)"
660 PRINT " SO - SOAPS, DETERGENTS, ETC"
670 GOSUB 820
680 PRINT " MF - MISCELLANEOUS FOODS"
690 PRINT " MN - MISCELLANEOUS NON-FOODS"
700 PRINT " SP - SPICES, KETCHUP, MUSTARD"
710 PRINT " TO - TOILETRIES (SHAVING, ETC)"
720 PRINT " CE - CEREAL, BREAD"
730 GOSUB 820
740 ER = 1: RETURN
750 IF LEN(CA$) < >2 THEN PRINT G$:ER = 1: RETURN
760 FOR I = 1 TO 29 STEP 2
770 IF CA$ = MID$ ("BEDEFRCAMEWRPANODASOMFMNSPTOCE",I,2) THEN 800
780 NEXT I
790 ER = 1: PRINT G$
800 RETURN
810 REM -- RETURN TO CONTINUE --
820 VTAB 23: HTAB 1: PRINT "<RETURN> TO CONTINUE ";
830 M = 0: GOSUB 1930
840 VTAB 18: HTAB 1: CALL -958
850 RETURN
860 REM -- ENTER --
870 A$ = "ENTER COUPONS": GOSUB 520
880 VTAB 5: HTAB 1: PRINT "COUPON #:"
890 PRINT : PRINT "PRODUCT:": PRINT "BRAND:": PRINT "CATEGORY('?' FOR HELP):"
900 PRINT "EXPIRATION DATE (MM/DD/YY):": PRINT "AMOUNT:"
910 NU = LN +1: VTAB 5: HTAB 11: CALL -868: PRINT NU
920 VTAB 7: HTAB 10: CALL -868:M = 25: GOSUB 1930:PR$ = I$
930 IF PR$ = "" THEN RETURN
940 B$ = LEFT$(PR$,1): IF B$ <"A" OR B$ >"Z" THEN PRINT G$: GOTO 920
950 VTAB 8: HTAB 8: CALL -868:M = 15: GOSUB 1930:BR$ = I$
960 VTAB 9: HTAB 24: CALL -868:M = 2: GOSUB 1930:CA$ = I$
970 GOSUB 560: IF ER THEN 960
980 VTAB 10: HTAB 28: CALL -868:M = 8: GOSUB 1930:ED$ = I$
990 IF ED$ = "" THEN ED$ = "999999": GOTO 1010
1000 GOSUB 1090: IF ER THEN 980
1010 VTAB 11: HTAB 9: CALL -868:M = 6: GOSUB 1930:AM$ = I$
1020 IF LEFT$(AM$,1) = "-" THEN PRINT G$: GOTO 1010
1030 VTAB 23: PRINT "FILE? (Y) ";:M = 1: GOSUB 1930
1040 IF I$ = "" OR I$ = "Y" THEN GOSUB 1190: VTAB 23: HTAB 18: PRINT "<COUPON ";NU;" FILED>"
1050 VTAB 11: HTAB 9: CALL -868: VTAB 10: HTAB 28: CALL -868
1060 VTAB 9: HTAB 24: CALL -868: VTAB 8: HTAB 8: CALL -868
1070 GOTO 910
1080 REM -- CK DATE --
1090 ER = 0: IF LEN(ED$) < >8 THEN 1170
1100 A$ = LEFT$(ED$,2)
1110 IF A$ <"01" OR A$ >"12" THEN 1170
1120 B$ = MID$ (ED$,4,2)
1130 IF B$ <"01" OR B$ >"31" THEN 1170
1140 C$ = RIGHT$(ED$,2)
1150 IF C$ <"83" OR C$ >"99" THEN 1170
1160 ED$ = C$ +A$ +B$: RETURN
1170 ER = 1: PRINT G$: RETURN
1180 REM -- FILE --
1190 NC = NC +1:LN = NU:LR = LR +1:R = LR
1200 PRINT D$;"OPEN COUPON.FILE,L64"
1210 PRINT D$;"WRITE COUPON.FILE,R0"
1220 PRINT LN: PRINT LR: PRINT NC
1230 PRINT D$;"CLOSE COUPON.FILE"
1240 IF NOT R THEN RETURN
1250 PRINT D$;"OPEN COUPON.FILE,L64"
1260 PRINT D$;"WRITE COUPON.FILE,R";R
1270 PRINT NU: PRINT PR$: PRINT ED$
1280 PRINT CA$: PRINT BR$: PRINT AM$
1290 PRINT D$;"CLOSE COUPON.FILE"
1300 RETURN
1310 REM -- LOOKUP BY # --
1320 R = 0: IF NU <1 OR NU >LN THEN PRINT G$: RETURN
1330 PRINT D$;"OPEN COUPON.FILE,L64"
1340 FOR I = 1 TO LR
1350 PRINT D$;"READ COUPON.FILE,R";I
1360 INPUT J
1370 IF J = NU THEN R = I: GOTO 1400
1380 NEXT I
1390 PRINT G$
1400 PRINT D$;"CLOSE COUPON.FILE"
1410 RETURN
1420 REM -- REPORT HDR --
1430 PRINT : IF L < >99 THEN PRINT CHR$(12)
1440 L = 3
1450 PRINT SPC( (78 - LEN(T$))/2);T$: PRINT
1460 RETURN
1470 REM -- EDIT --
1480 A$ = "EDIT COUPONS": GOSUB 520
1490 VTAB 5: HTAB 1: PRINT "COUPON #:"
1500 PRINT : PRINT "PRODUCT:": PRINT : PRINT "BRAND:"
1510 PRINT : PRINT "CATEGORY:": PRINT : PRINT "EXPIRATION DATE:": PRINT : PRINT "AMOUNT:"
1520 VTAB 5: HTAB 11: CALL -868:M = 6: GOSUB 1930:A$ = I$
1530 IF A$ = "" THEN RETURN
1540 NU = VAL(A$): GOSUB 1320
1550 IF NOT R THEN 1520
1560 PRINT D$;"OPEN COUPON.FILE,L64"
1570 PRINT D$;"READ COUPON.FILE,R";R
1580 INPUT NU,OP$,OE$,OC$,OB$,OA$
1590 PRINT D$;"CLOSE COUPON.FILE"
1600 VTAB 8: HTAB 10: PRINT "(";OP$;")"
1610 PRINT : HTAB 8: PRINT "(";OB$;")"
1620 PRINT : HTAB 11: PRINT "(";OC$;")"
1630 PRINT : HTAB 18: IF OE$ = "999999" THEN PRINT "(NONE)"
1640 IF OE$ < >"999999" THEN PRINT "("; MID$ (OE$,3,2);"/"; RIGHT$(OE$,2);"/"; LEFT$(OE$,2);")"
1650 PRINT : HTAB 9: PRINT "(";OA$;")"
1660 VTAB 7: HTAB 10: CALL -868:M = 25: GOSUB 1930:PR$ = I$
1670 IF PR$ = "/" THEN PRINT G$: GOTO 1660
1680 IF PR$ = "" THEN PR$ = OP$
1690 B$ = LEFT$(PR$,1): IF B$ <"A" OR B$ >"Z" THEN PRINT G$: GOTO 1660
1700 VTAB 9: HTAB 8: CALL -868:M = 15: GOSUB 1930:BR$ = I$
1710 IF BR$ = "" THEN BR$ = OB$
1720 IF BR$ = "/" THEN BR$ = ""
1730 VTAB 11: HTAB 11: CALL -868:M = 2: GOSUB 1930:CA$ = I$
1740 IF CA$ = "" THEN CA$ = OC$
1750 GOSUB 560: IF ER THEN 1730
1760 VTAB 13: HTAB 18: CALL -868:M = 8: GOSUB 1930:ED$ = I$
1770 IF ED$ = "" THEN ED$ = OE$: GOTO 1800
1780 IF ED$ = "/" THEN ED$ = "999999": GOTO 1800
1790 GOSUB 1090: IF ER THEN 1760
1800 VTAB 15: HTAB 9: CALL -868:M = 6: GOSUB 1930:AM$ = I$
1810 IF AM$ = "" THEN AM$ = OA$
1820 IF AM$ = "/" THEN AM$ = ""
1830 IF LEFT$(AM$,1) = "-" THEN PRINT G$: GOTO 1800
1840 VTAB 23: PRINT "FILE? (Y) ";:M = 1: GOSUB 1930
1850 IF I$ = "" OR I$ = "Y" THEN GOSUB 1250: VTAB 23: HTAB 18: PRINT "<COUPON ";NU;" FILED>"
1860 VTAB 16: HTAB 1: CALL -868: VTAB 15: HTAB 9: CALL -868
1870 VTAB 14: HTAB 1: CALL -868: VTAB 13: HTAB 18: CALL -868
1880 VTAB 12: HTAB 1: CALL -868: VTAB 11: HTAB 11: CALL -868
1890 VTAB 10: HTAB 1: CALL -868: VTAB 9: HTAB 8: CALL -868
1900 VTAB 8: HTAB 1: CALL -868: VTAB 7: HTAB 10: CALL -868
1910 GOTO 1520
1920 REM -- GET RTN --
1930 I$ = "":F = 0
1940 FOR G = 1 TO 2 STEP 0
1950 REM GET CHAR & CK FOR RETURN (13)
1960 GET K$:K = ASC(K$): IF K = 13 THEN PRINT : RETURN
1970 REM CK FOR MAX LENGTH
1980 IF F = M AND K >31 THEN PRINT G$;: GOTO 2070
1990 REM CK FOR " , :
2000 IF K = 34 OR K = 44 OR K = 58 THEN PRINT G$;: GOTO 2070
2010 REM SAVE CHAR IF NOT CTRL CHAR
2020 IF K >31 THEN PRINT K$;:I$ = I$ +K$:F = F +1: GOTO 2070
2030 REM ALLOW ERASE
2040 IF K = 8 AND F >1 THEN I$ = LEFT$(I$,F -1):F = F -1: PRINT K$;" ";K$;: GOTO 2070
2050 IF K = 8 AND F THEN I$ = "":F = 0: PRINT K$;" ";K$;: GOTO 2070
2060 PRINT G$;
2070 NEXT G
2080 REM -- DELETE --
2090 A$ = "DELETE COUPONS": GOSUB 520
2100 VTAB 5: HTAB 1: PRINT "COUPON #:"
2110 PRINT : PRINT "PRODUCT:": PRINT "BRAND:"
2120 PRINT "CATEGORY:": PRINT "EXPIRATION DATE:": PRINT "AMOUNT:"
2130 VTAB 5: HTAB 11: CALL -868:M = 6: GOSUB 1930:A$ = I$
2140 IF A$ = "" THEN RETURN
2150 NU = VAL(A$): GOSUB 1320
2160 IF NOT R THEN 2130
2170 PRINT D$;"OPEN COUPON.FILE,L64"
2180 PRINT D$;"READ COUPON.FILE,R";R
2190 INPUT J,OP$,OE$,OC$,OB$,OA$
2200 PRINT D$;"CLOSE COUPON.FILE"
2210 VTAB 7: HTAB 10: PRINT OP$: HTAB 8: PRINT OB$
2220 HTAB 11: PRINT OC$: HTAB 18: IF OE$ = "999999" THEN PRINT "(NONE)"
2230 IF OE$ < >"999999" THEN PRINT MID$ (OE$,3,2);"/"; RIGHT$(OE$,2);"/"; LEFT$(OE$,2)
2240 HTAB 9: PRINT OA$
2250 VTAB 23: PRINT "DELETE? (N) ";:M = 1: GOSUB 1930
2260 IF I$ < >"Y" THEN 2380
2270 REM PREPARE TO FILE LAST REC OVER DELETED REC
2280 IF R = LR THEN R = 0: GOTO 2350
2290 REM GET LAST REC DATA
2300 PRINT D$;"OPEN COUPON.FILE,L64"
2310 PRINT D$;"READ COUPON.FILE,R";LR
2320 INPUT NU,PR$,ED$,CA$,BR$,AM$
2330 PRINT D$;"CLOSE COUPON.FILE"
2340 REM PREP TO REFILE 1ST REC
2350 NC = NC -1:LR = LR -1
2360 GOSUB 1200
2370 VTAB 23: HTAB 15: CALL -868: PRINT "<COUPON ";J;" DELETED>"
2380 VTAB 11: HTAB 9: CALL -868: VTAB 10: HTAB 18: CALL -868
2390 VTAB 9: HTAB 11: CALL -868: VTAB 8: HTAB 8: CALL -868
2400 VTAB 7: HTAB 10: CALL -868
2410 GOTO 2130
2420 REM -- LIST/DELETE EXPIRED COUPONS --
2430 A$ = "LIST/DELETE EXPIRED COUPONS": GOSUB 520
2440 VTAB 7: HTAB 1: PRINT "DELETE EXPIRED COUPONS?"
2450 VTAB 6: HTAB 1: PRINT "LIST ON PRINTER? (Y)"
2460 VTAB 5: HTAB 1: PRINT "EXPIRATION DATE: ";
2470 GOSUB 4820: IF TE$ = "" THEN RETURN
2480 S = 0: VTAB 6: HTAB 22: CALL -868
2490 M = 1: GOSUB 1930
2500 IF I$ = "Y" OR I$ = "" THEN S = 56:L = 99:T$ = "EXPIRED COUPONS " +TE$
2510 VTAB 7: HTAB 25: CALL -868:M = 1: GOSUB 1930:A$ = I$
2520 B = 0: IF A$ = "Y" THEN B = 1: GOTO 2540
2530 IF A$ < >"N" THEN PRINT G$: GOTO 2510
2540 VTAB 9: HTAB 1: PRINT "ARE YOU SURE? (Y) ";:M = 1: GOSUB 1930
2550 IF I$ < >"Y" AND I$ < >"" THEN PRINT G$: GOTO 2430
2560 IF NOT S THEN VTAB 6: HTAB 1: CALL -958
2570 IF S THEN PRINT D$;"PR#";SL
2580 I = 0: PRINT D$;"OPEN COUPON.FILE,L64"
2590 I = I +1: IF I >LR THEN 2870
2600 PRINT D$;"READ COUPON.FILE,R";I
2610 INPUT NU,PR$,ED$
2620 IF ED$ >TD$ THEN 2590
2630 INPUT CA$,BR$,AM$
2640 IF S THEN 2700
2650 PRINT NU; TAB( 7);PR$;
2660 PRINT TAB( 34);AM$: PRINT SPC( 6);BR$; TAB( 23);
2670 PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
2680 PRINT " ";CA$
2690 GOTO 2750
2700 IF L >S THEN GOSUB 1430
2710 PRINT NU; TAB( 7);PR$; SPC( 27 - LEN(PR$));BR$; SPC( 17 - LEN(BR$));
2720 PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
2730 PRINT " ";AM$; SPC( 8 - LEN(AM$));CA$
2740 L = L +1
2750 IF NOT B THEN 2590
2760 REM PREP TO FILE LAST REC OVER DELETED REC
2770 R = I: IF I = LR THEN R = 0: GOTO 2820
2780 REM GET LAST RECORD
2790 PRINT D$;"READ COUPON.FILE,R";LR
2800 INPUT NU,PR$,ED$,CA$,BR$,AM$
2810 REM PREP TO REFILE 1ST REC
2820 NC = NC -1:LR = LR -1
2830 PRINT D$;"CLOSE COUPON.FILE"
2840 GOSUB 1200: IF R THEN I = I -1
2850 PRINT D$;"OPEN COUPON.FILE,L64"
2860 GOTO 2590
2870 PRINT D$;"CLOSE COUPON.FILE"
2880 IF S THEN PRINT CHR$(12): PRINT D$;"PR#0"
2890 IF NOT S THEN PRINT : PRINT "<RETURN> TO CONTINUE ";:M = 0: GOSUB 1930
2900 RETURN
2910 REM -- LIST BY PRODUCT --
2920 A$ = "LIST COUPONS BY PRODUCT": GOSUB 520
2930 VTAB 6: HTAB 1: PRINT "LIST ON PRINTER? (Y)"
2940 VTAB 5: HTAB 1: CALL -868: PRINT "PRODUCT? (ALL) ";
2950 M = 25: GOSUB 1930:A$ = I$
2960 IF A$ = "" OR A$ = "ALL" THEN B = 0: GOTO 2990
2970 B = 1:OP$ = A$:A$ = LEFT$(A$,1)
2980 IF A$ <"A" OR A$ >"Z" THEN PRINT G$: GOTO 2940
2990 S = 0: VTAB 6: HTAB 22: CALL -868
3000 M = 1: GOSUB 1930: PRINT :A = 0
3010 IF I$ = "Y" OR I$ = "" THEN S = 56:L = 99:T$ = "LIST COUPONS BY PRODUCT"
3020 IF S THEN PRINT D$;"PR#";SL
3030 PRINT D$;"OPEN COUPON.FILE,L64"
3040 FOR I = 65 TO 90
3050 B$ = CHR$(I):J = 1: IF B THEN B$ = OP$:J = LEN(B$)
3060 FOR R = 1 TO LR
3070 PRINT D$;"READ COUPON.FILE,R";R
3080 INPUT NU,PR$
3090 IF LEFT$(PR$,J) < >B$ THEN 3250
3100 INPUT ED$,CA$,BR$,AM$
3110 IF S THEN 3180
3120 PRINT NU; TAB( 7);PR$;
3130 PRINT TAB( 34);AM$: PRINT SPC( 6);BR$; TAB( 23);
3140 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
3150 IF ED$ = "999999" THEN PRINT "(NONE) ";
3160 PRINT " ";CA$
3170 GOTO 3240
3180 IF L >S THEN GOSUB 1430
3190 PRINT NU; TAB( 7);PR$; SPC( 27 - LEN(PR$));BR$; SPC( 17 - LEN(BR$));
3200 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
3210 IF ED$ = "999999" THEN PRINT "(NONE) ";
3220 PRINT " ";AM$; SPC( 8 - LEN(AM$));CA$
3230 L = L +1
3240 A = 1
3250 NEXT R
3260 IF B THEN 3290
3270 IF (A) THEN PRINT :L = L +1:A = 0
3280 NEXT I
3290 PRINT D$;"CLOSE COUPON.FILE"
3300 IF S THEN PRINT CHR$(12): PRINT D$;"PR#0"
3310 IF NOT S THEN PRINT : PRINT "<RETURN> TO CONTINUE ";:M = 0: GOSUB 1930
3320 RETURN
3330 REM -- LIST ALL --
3340 A$ = "LIST ALL COUPONS": GOSUB 520
3350 L = 99:T$ = "LIST ALL COUPONS":S = 9999
3360 VTAB 5: HTAB 1: PRINT "LIST ON PRINTER? (Y) ";:M = 1: GOSUB 1930: PRINT
3370 IF I$ = "Y" OR I$ = "" THEN S = 56: PRINT D$;"PR#";SL
3380 PRINT D$;"OPEN COUPON.FILE,L64"
3390 FOR R = 1 TO LR
3400 PRINT D$;"READ COUPON.FILE,R";R
3410 INPUT NU,PR$,ED$,CA$,BR$,AM$
3420 IF L >S THEN GOSUB 1430
3430 PRINT NU; TAB( 7);PR$;: IF S = 9999 THEN 3490
3440 PRINT SPC( 27 - LEN(PR$));BR$; SPC( 17 - LEN(BR$));
3450 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
3460 IF ED$ = "999999" THEN PRINT "(NONE) ";
3470 PRINT " ";AM$; SPC( 8 - LEN(AM$));CA$
3480 GOTO 3530
3490 PRINT TAB( 34);AM$: PRINT SPC( 6);BR$; TAB( 23);
3500 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
3510 IF ED$ = "999999" THEN PRINT "(NONE) ";
3520 PRINT " ";CA$
3530 L = L +1: NEXT R
3540 IF S = 56 THEN PRINT CHR$(12): PRINT D$;"PR#0"
3550 PRINT D$;"CLOSE COUPON.FILE"
3560 IF S = 9999 THEN PRINT : PRINT "<RETURN> TO CONTINUE ";:M = 0: GOSUB 1930
3570 RETURN
3580 REM -- ASK SELECT PRODUCT --
3590 VTAB 24: PRINT "<RETURN> FOR MORE";: GOTO 3610
3600 VTAB 24: PRINT "<RETURN> TO CONTINUE";
3610 VTAB 23: PRINT
3620 PRINT D$;"CLOSE COUPON.FILE"
3630 IF NOT S OR NOT J THEN HTAB 23: GET B$: GOTO 3720
3640 VTAB 23: HTAB 1: CALL -868: PRINT "SELECT 1-";J;" OR S)TOP? ";
3650 M = 2: GOSUB 1930:B$ = I$: IF B$ = "" THEN 3720
3660 IF LEFT$(B$,1) = "S" THEN J = 99: GOTO 3730
3670 B = VAL(B$): IF B <1 OR B >J THEN PRINT G$;: GOTO 3640
3680 IF NOT R%(B) THEN PRINT G$;: GOTO 3640
3690 S%(0) = S%(0) +1:S%(S%(0)) = R%(B)
3700 VTAB 6 +B *2: HTAB 1: PRINT "*":R%(B) = 0
3710 GOTO 3640
3720 J = 0
3730 VTAB 7: HTAB 1: CALL -958: PRINT
3750 RETURN
3760 REM -- SEARCH & PRINT BY # --
3770 NU = VAL(A$): GOSUB 1320:S%(0) = 0
3780 IF NOT R THEN J = 0: GOTO 3880
3790 PRINT D$;"OPEN COUPON.FILE,L64"
3800 PRINT D$;"READ COUPON.FILE,R";R
3810 INPUT NU,PR$,ED$,CA$,BR$,AM$
3820 VTAB 8: HTAB 1: PRINT "1) ";
3830 PRINT NU; TAB( 10);PR$; TAB( 37);CA$
3840 PRINT " ";BR$; TAB( 21);AM$; TAB( 29);
3850 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2)
3860 IF ED$ = "999999" THEN PRINT "(NONE)"
3870 J = 1:R%(J) = R
3880 GOSUB 3600
3890 PRINT D$;"CLOSE COUPON.FILE"
3900 RETURN
3910 REM -- LIST BY CATEGORY --
3920 A$ = "LIST COUPONS BY CATEGORY": GOSUB 520
3930 VTAB 6: HTAB 1: PRINT "LIST ON PRINTER? (Y)"
3940 VTAB 5: HTAB 1: CALL -868: PRINT "CATEGORY: (ALL) ";
3950 M = 3: GOSUB 1930:CA$ = I$
3960 IF CA$ = "" OR CA$ = "ALL" THEN B = 0: GOTO 3990
3970 GOSUB 560: IF ER THEN VTAB 5: HTAB 17: CALL -868: GOTO 3950
3980 B = 1:OC$ = CA$
3990 S = 0: VTAB 6: HTAB 22: CALL -868
4000 M = 1: GOSUB 1930: PRINT :A = 0
4010 IF I$ = "Y" OR I$ = "" THEN S = 56:L = 99:T$ = "LIST COUPONS BY CATEGORY"
4020 IF S THEN PRINT D$;"PR#";SL
4030 PRINT D$;"OPEN COUPON.FILE,L64"
4040 FOR I = 1 TO 29 STEP 2
4050 IF NOT B THEN OC$ = MID$ ("BEDEFRCAMEWRPANODASOMFMNSPTOCE",I,2)
4060 FOR R = 1 TO LR
4070 PRINT D$;"READ COUPON.FILE,R";R
4080 INPUT NU,PR$,ED$,CA$
4090 IF CA$ < >OC$ THEN 4250
4100 INPUT BR$,AM$
4110 IF S THEN 4180
4120 PRINT NU; TAB( 7);PR$;
4130 PRINT TAB( 34);AM$: PRINT SPC( 6);BR$; TAB( 23);
4140 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
4150 IF ED$ = "999999" THEN PRINT "(NONE) ";
4160 PRINT " ";CA$
4170 GOTO 4240
4180 IF L >S THEN GOSUB 1430
4190 PRINT NU; TAB( 7);PR$; SPC( 27 - LEN(PR$));BR$; SPC( 17 - LEN(BR$));
4200 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
4210 IF ED$ = "999999" THEN PRINT "(NONE) ";
4220 PRINT " ";AM$; SPC( 8 - LEN(AM$));CA$
4230 L = L +1
4240 A = 1
4250 NEXT R
4260 IF B THEN 4290
4270 IF (A) THEN PRINT :L = L +1:A = 0
4280 NEXT I
4290 PRINT D$;"CLOSE COUPON.FILE"
4300 IF S THEN PRINT CHR$(12): PRINT D$;"PR#0"
4310 IF NOT S THEN PRINT : PRINT "<RETURN> TO CONTINUE ";:M = 0: GOSUB 1930
4320 RETURN
4330 REM -- SEARCH & PRINT --
4340 A$ = "SEARCH & PRINT COUPONS": GOSUB 520
4350 VTAB 6: HTAB 1: PRINT "PRODUCT/COUPON #:"
4360 VTAB 5: HTAB 1: PRINT "LIST ON PRINTER? (Y) ";
4370 S = 0:W = 0:M = 1: GOSUB 1930
4380 IF I$ = "Y" OR I$ = "" THEN S = 56:L = 99:T$ = "SEARCH & PRINT COUPONS"
4390 VTAB 6: HTAB 19: CALL -958:M = 25: GOSUB 1930:A$ = I$
4400 IF A$ = "" AND NOT S THEN RETURN
4410 IF A$ = "" AND W THEN PRINT D$;"PR#";SL: PRINT CHR$(12): PRINT D$;"PR#0"
4420 IF A$ = "" THEN RETURN
4430 B$ = LEFT$(A$,1): IF B$ <"0" OR B$ >"9" THEN GOSUB 4630: GOTO 4450
4440 GOSUB 3770
4450 IF NOT S%(0) THEN 4390
4460 POKE 34,8: PRINT D$;"PR#";SL
4470 W = 1
4480 FOR I = 1 TO S%(0)
4490 PRINT D$;"OPEN COUPON.FILE,L64"
4500 PRINT D$;"READ COUPON.FILE,R";S%(I)
4510 INPUT NU,PR$,ED$,CA$,BR$,AM$
4520 PRINT D$;"CLOSE COUPON.FILE"
4530 IF L >S THEN GOSUB 1430
4540 PRINT NU; TAB( 7);PR$; SPC( 27 - LEN(PR$));BR$; SPC( 17 - LEN(BR$));
4550 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2);
4560 IF ED$ = "999999" THEN PRINT "(NONE) ";
4570 PRINT " ";AM$; SPC( 8 - LEN(AM$));CA$
4580 L = L +1
4590 NEXT I
4600 PRINT D$;"PR#0": POKE 34,2
4610 GOTO 4390
4620 REM -- LOOKUP PRODUCT --
4630 J = 0:A = LEN(A$):S%(0) = 0
4640 PRINT D$;"OPEN COUPON.FILE,L64"
4650 FOR I = 1 TO LR
4660 PRINT D$;"READ COUPON.FILE,R";I
4670 INPUT NU,PR$
4680 IF LEFT$(PR$,A) < >A$ THEN 4770
4690 INPUT ED$,CA$,BR$,AM$
4700 IF J = 7 THEN GOSUB 3590: IF J = 99 THEN 4780
4710 J = J +1:R%(J) = I
4720 VTAB 6 +J *2: HTAB 1: PRINT J;") ";
4730 PRINT NU; TAB( 10);PR$; TAB( 37);CA$
4740 PRINT " ";BR$; TAB( 21);AM$; TAB( 29);
4750 IF ED$ < >"999999" THEN PRINT MID$ (ED$,3,2);"/"; RIGHT$(ED$,2);"/"; LEFT$(ED$,2)
4760 IF ED$ = "999999" THEN PRINT "(NONE)"
4770 NEXT I
4780 PRINT D$;"CLOSE COUPON.FILE"
4790 IF J <99 THEN GOSUB 3600
4800 RETURN
4810 REM -- ASK FOR DATE --
4820 M = 8: GOSUB 1930:ED$ = I$
4830 TE$ = ED$: IF TE$ = "" THEN RETURN
4840 GOSUB 1090
4850 IF ER THEN VTAB 5: HTAB 18: CALL -868: GOTO 4820
4860 TD$ = ED$: RETURN