Explore the CATS membership database, as of late 1987.
Content
Source Code
0 LET D$(J,D)="5": PRINT AT L,D-L;D$(J,D): LET D$(J, TO 5)=I$: PRINT AT L,16;D$(J, TO 5): RETURN
1 INPUT "PAYMENT STATUS ";D$(J,D): PRINT AT L,D-L;D$(J,D): RETURN
2 RETURN
3 INPUT "NAME ";N$(J): PRINT AT 3,D;N$(J): RETURN
4 INPUT "STREET ";R$(J): PRINT AT 4,D;R$(J): RETURN
5 INPUT "CITY ";C$(J): PRINT AT 5,D;C$(J): RETURN
6 INPUT "STATE ";S$(J): PRINT AT 6,D;S$(J): RETURN
7 INPUT "ZIP CODE ";Z$(J): PRINT AT 7,D;Z$(J): RETURN
8 RETURN
9 INPUT "HOME PHONE ";H$(J): PRINT AT D-L,D;H$(J): RETURN
10 INPUT "OFFICE PHONE ";P$(J): PRINT AT D,D;P$(J): RETURN
11 RETURN
12 INPUT "JOB ";O$(J): PRINT AT 12,D;O$(J): RETURN
13 GO SUB 50: INPUT "EQUIPMENT";E$(J): PRINT AT 13,D;E$(J)
14 RETURN
50 PRINT AT 17,O;"A.TS1000 F.E-PROM K.FLOPPY "
52 PRINT "B.TS1500 G.16KRAM L.STRNGY "
54 PRINT "C.TS2068 H.32KRAM M. "
56 PRINT "D.PRINTER I.64KRAM N. "
58 PRINT "E.MODEM J.DISK O. "
62 RETURN
90 REM FOR I=16 TO D+D+L
92 REM PRINT AT I,O;" "
94 REM NEXT I
96 RETURN
100 PRINT "NAME :"';"STREET :"';"CITY :"';"STATE :"';"ZIP CODE :"
120 PRINT W$
130 PRINT "H-PHONE :"'"O-PHONE :"'"FAMILY :"'"JOB :"'"EQUIP. :"
140 PRINT W$
150 RETURN
999 STOP
1000 LET Q=VAL I$( TO L+L)+12*VAL I$(4 TO 5)-12
1006 POKE 64256,L: POKE 64260,O
1010 CLS
1020 PRINT ''"******* MEMBERSHIP FILES ******* by Ned Beeler 1983 revised by M. Fisher '85 "
1025 PRINT " TODAY'S DATE """;I$;""""
1030 PRINT '"1. ADD NEW NAME"''"2. OR """"; UPDATE/DELETE RECORD"''"3. LIST RECORDS"''
1050 PRINT "4. LPRINT LABELS"''"5. LPRINT ROSTER"''"6. LPRINT ZIP LIST "''
1075 PRINT "7. SORT: curr. by ";X$''"8. SAVE program"
1090 INPUT "SELECT YOUR CHOICE";J$
1095 CLS
1151 IF LEN J$<L THEN LET J$="2"
1160 IF CODE J$<49 OR CODE J$>58 THEN GO TO G
1200 GO SUB VAL J$*500+G
1499 GO TO G
1500 IF N>=214 THEN PRINT "FILE FULL": PAUSE D*D: RETURN
1505 LET N=N+L: LET K=K+L: LET J=N
1510 CLS
1520 PRINT "FILE NO. ";N,"MEMBSHP NO. ";K
1525 PRINT "----PAID ------------DATE -----"
1530 PRINT W$
1535 GO SUB D*D
1546 LET D$(N,6 TO D-L)=STR$ K: PRINT AT M,28;D$(N,6 TO D-L)
1550 FOR I=O TO 13: GO SUB I: NEXT I
1655 GO SUB D*D-D
1680 INPUT "IS ALL CORRECT (Y/N) ";J$
1700 IF J$="N" THEN GO SUB 2100
1720 CLS
1730 INPUT "ANY MORE NAMES? (Y/N) ";J$
1750 IF J$="Y" THEN GO TO 1500
1999 RETURN
2010 CLS
2020 INPUT "SEARCH NAME ? ";J$
2030 FOR J=L TO N
2040 IF J$=N$(J, TO LEN J$) THEN GO TO 2100
2050 NEXT J
2055 CLS
2060 INPUT " NO NAME-PRESS ENTER TO RETURN ";J$
2070 RETURN
2100 LET Q=15
2105 CLS
2110 PRINT "FILE NO. ";J;" MEMBERSHIP NO. ";D$(J,6 TO D-L)
2120 PRINT "PAID---- ";D$(J,D);" DATE ";D$(J, TO 5)
2125 PRINT W$
2130 GO SUB D*D
2150 PRINT AT 3,D;N$(J);AT 4,D;R$(J);AT 5,D;C$(J)
2160 PRINT AT 6,D;S$(J);AT 7,D;Z$(J)
2170 PRINT AT D-L,D;H$(J);AT D,D;P$(J)
2180 PRINT AT 12,D;O$(J);AT 13,D;E$(J)
2195 PRINT W$
2200 PRINT "UPDATE"'"FOREWARD"'"BACK"'" "'" DELETE "'" "'">--- RETURN TO MENU ---> OR (M)";
2210 PRINT #1;AT 0,0;"PUT CURSOR ON LINE TO BE CHANGEDPRESS <ENTER> WHEN READY"
2215 PRINT OVER L; FLASH L;AT Q,O;W$;
2216 PAUSE O
2217 PRINT OVER L; FLASH O;AT Q,O;W$
2220 LET Q=Q+(INKEY$="6")-(INKEY$="7")
2230 LET Q=Q+(Q<0)-(Q>20)
2240 IF INKEY$=CHR$ 13 THEN GO TO 2270
2245 IF INKEY$="M" THEN RETURN
2250 GO TO 2215
2275 IF Q=15 THEN GO SUB O
2280 IF Q=16 OR Q=17 THEN LET J=J+(Q=16 AND J<215)-(Q=17 AND J>1): GO TO 2105
2310 IF Q>19 THEN RETURN
2320 IF Q<14 THEN GO SUB Q
2380 IF Q=19 THEN INPUT "DELETE: ARE YOU SURE? (Y/N) ";J$: IF J$="Y" THEN GO TO 2400
2398 GO TO 2210
2400 FOR Z=J TO N
2402 LET N$(Z)=N$(Z+L)
2404 LET R$(Z)=R$(Z+L)
2406 LET C$(Z)=C$(Z+L)
2408 LET S$(Z)=S$(Z+L)
2410 LET H$(Z)=H$(Z+L)
2412 LET P$(Z)=P$(Z+L)
2414 LET Z$(Z)=Z$(Z+L)
2416 LET O$(Z)=O$(Z+L)
2420 LET E$(Z)=E$(Z+L)
2422 LET D$(Z)=D$(Z+L)
2430 NEXT Z
2440 LET N=N-L
2499 RETURN
2504 LET Z=0
2505 FOR J=L TO N
2510 PRINT J;" ";N$(J, TO 18);D$(J): LET Z=Z+1
2550 NEXT J
2555 PRINT Z
2560 PAUSE 0
2990 RETURN
3000 CLS
3010 LET Q=VAL I$( TO 2)+12*VAL I$(4 TO 5)-12
3100 POKE 64256,O: POKE 64260,D
3200 LPRINT CHR$ 27+"N TEST XXXXX"''''''
3205 PAUSE 0
3210 FOR J=L TO N
3220 IF D$(J,D)>"4" THEN LPRINT : GO TO 3230: REM current year's member
3221 IF D$(J,D)="0" THEN GO TO 3330: REM previously crossed off list
3222 IF VAL D$(J, TO L+L)+12*VAL D$(J,4 TO 5)>Q THEN LPRINT : GO TO 3230: REM less than 12 months since paid - still current
3225 LPRINT CHR$ 27+"XLAST ISSUE"+CHR$ 27+"Y-"+CHR$ 27+"Q$18.00; we need your support."+CHR$ 27+"N": LET D$(J,D)="0"
3230 LPRINT N$(J);" pd ";D$(J, TO 5);" ";D$(J,D)
3250 LPRINT R$(J)
3270 LPRINT C$(J);" ";
3280 LPRINT S$(J);" ";Z$(J)
3310 LPRINT ''
3330 NEXT J
3340 RETURN
3500 REM LPRINT "..."
3506 POKE 64256,O: POKE 64260,D
3507 LPRINT CHR$ 27+"N"+CHR$ 27+"!"
3510 LPRINT "CATS MEMBERSHIP, ";I$
3515 LPRINT "Name # Address H# O#"'
3520 LET LINE=3
3560 FOR J=L TO N
3566 IF LINE=57 THEN LET LINE=2: PAUSE 0: LPRINT CHR$ 27+"NName # Address H# O#"'
3569 IF N$(J,1)<>N$(J-1,1) THEN LET LINE=LINE+1: LPRINT
3570 IF D$(J,D)<"4" THEN NEXT J
3575 LET LINE=LINE+1
3580 LPRINT CHR$ 27;"N";
3590 LPRINT N$(J);CHR$ 27;"Q ";D$(J,6 TO );" ";
3600 LPRINT R$(J);" ";
3610 LPRINT C$(J);" ";
3620 LPRINT S$(J);" ";Z$(J);" ";H$(J);" ";P$(J)
3630 NEXT J
3640 RETURN
4000 LPRINT CHR$ 27+"N"
4002 POKE 64256,O: POKE 64260,D
4003 LPRINT CHR$ 27+"N"+CHR$ 27+"!"
4004 LET J$=Z$(L)
4010 LPRINT "CATS members, sorted by ZIP, ";I$
4020 FOR J=L TO N
4025 IF D$(J,10)<"3" THEN GO TO 4050
4028 IF J$( TO 3)<>Z$(J, TO 3) THEN LPRINT : LET LINE=LINE+1
4030 LPRINT N$(J);CHR$ 27+"Q"+C$(J)+CHR$ 27+"N"+S$(J);" ";Z$(J)
4040 LET J$=Z$(J)
4050 NEXT J
4100 RETURN
4500 CLS : PRINT "SORT BY:","(1) N$(J) NAME"'',"(2) Z$(J) ZIP"
4510 INPUT "SELECT SORT,OR ANY VAR";J$: PRINT ''"SORTED BY: ";J$
4512 IF J$="1" THEN LET J$="N$(J)"
4513 IF J$="2" THEN LET J$="Z$(J)"
4515 LET T=N
4520 LET Q=T
4525 LET Q=INT (Q/2): IF Q<L THEN LET X$=J$: RETURN
4530 IF Q/2=INT (Q/2) THEN LET Q=Q+1
4532 PRINT Q;" ";
4535 FOR I=L TO T-Q
4540 LET J=I
4545 IF VAL$ J$<=VAL$ (J$( TO 4)+"+Q"+J$(5 TO )) THEN GO TO 4750
4546 BEEP .02,50-Q
4550 LET A$=N$(J)
4552 LET B$=R$(J)
4554 LET G$=C$(J)
4556 LET X$=S$(J)
4558 LET K$=H$(J)
4560 LET L$=P$(J)
4562 LET M$=D$(J)
4564 LET Q$=O$(J)
4566 LET T$=E$(J)
4570 LET Y$=Z$(J)
4600 LET N$(J)=N$(J+Q)
4602 LET R$(J)=R$(J+Q)
4604 LET C$(J)=C$(J+Q)
4606 LET S$(J)=S$(J+Q)
4610 LET H$(J)=H$(J+Q)
4612 LET P$(J)=P$(J+Q)
4614 LET D$(J)=D$(J+Q)
4620 LET O$(J)=O$(J+Q)
4622 LET E$(J)=E$(J+Q)
4626 LET Z$(J)=Z$(J+Q)
4700 LET N$(J+Q)=A$
4702 LET R$(J+Q)=B$
4704 LET C$(J+Q)=G$
4706 LET S$(J+Q)=X$
4708 LET H$(J+Q)=K$
4710 LET P$(J+Q)=L$
4712 LET D$(J+Q)=M$
4714 LET O$(J+Q)=Q$
4716 LET E$(J+Q)=T$
4720 LET Z$(J+Q)=Y$
4730 LET J=J-Q
4740 IF J>0 THEN GO TO 4544
4750 NEXT I
4999 GO TO 4525
5000 CLS : PRINT "WILL BE SAVED AS; """;I$;""""
5010 SAVE I$ LINE 5060: PRINT ''"Rewind tape and VERIFY"
5020 VERIFY I$
5030 RETURN
5060 POKE 23561,30: POKE 23562,2: POKE 23658,8: POKE 23609,3: BORDER 0: PAPER 0: INK 7
5065 POKE 64260,0: FOR J=64263 TO 64265: POKE J,0: NEXT J
5070 INPUT "TODAY'S DATE? (MO-YR) ";I$
5080 FOR I=L TO 5: IF I$(I)<"0" THEN GO TO 5100
5090 NEXT I
5100 LET I$( TO L+L)=I$( TO I-L): LET I$(3 TO )="-"+I$(I+L TO )
5110 GO TO G
8996 STOP
9000 FOR J=N TO 196 STEP -1
9010 REM IF D$(J,10)<"3" THEN PRINT "OUT NO.";J,N$(J): GO SUB 2400
9020 GO SUB 2400
9050 NEXT J: STOP
9500 FOR J=L TO N: IF D$(J,10)="Q" THEN LET D$(J,10)="4":
9510 NEXT J