DIY people database.
Content
Source Code
1 LOAD "findv"CODE 54000,600: LOAD "create"CODE 54850,1175: REM "datab" © by Ben H. Jackson, 6/28/85; ALL RIGHRS RESERVED: REM Type GOTO 2 for re-start instead of RUN
2 LET ERROR=0: GO TO 10
3 REM --ERROR CODES 1--VAR NOT IN REM STMT findv 2--UNDEF VAR IN REM STMT findv 3--ARRAY NOT IN VLT findv 4--DATA STMT NOT FOUND finds 5--EXCEEDED MAX SETS(20) creat 6--NAME FILE TOO LONG creat 7--ILLEG CHAR IN I/P squish
4 REM 8--OUT OF MEMORY creat 9--MAX FILE CNT [250] creat
5 PRINT "ERROR=";ERROR: STOP
6 REM --MEMORY ALLOCATION "findv"--54000 TO 54599 "esc" --54532 TO 54562 "bubl" --54600 TO 54840 "create"-54850 TO 56021 "PR CODE"64246 TO 64939
7 REM --variables N$----Name register K$----dummy variable FCNT--File Count=no. files FNO---File No.=file of int MODE--flg 0=cre 1=del P$ ---squished N$ file
10 DIM X(10)
15 GO TO 1000
20 REM "STRING FILTER" ROUTINE S$=squished name string R$=input string M=Length of input string L=Length of S$
21 LET M=LEN R$: LET L=M: LET S$=B$(1 TO M)
22 LET V=USR 54000: REM R$,S$,M,L
23 RANDOMIZE USR 55700
24 LET L=PEEK 54900
25 LET S$=S$(1 TO L)
26 RETURN
900 REM --add data rtn--
901 IF nr=1 THEN PRINT "OLD ";A$;"= EMPTY": GO TO 903
902 RESTORE (BASE+FNO): READ F$: PRINT "OLD ";A$;"=";F$
903 PRINT A$;';" ['ENT'if no chg]=": INPUT N$: IF N$="" THEN RETURN
904 LET STMT=BASE: GO SUB 985
905 LET BEGONE=BASE+FNO
906 PRINT "NEW";A$;"=";N$;';" [0 TO fix]": INPUT z$
907 IF z$="0" THEN GO TO 902
909 DELETE BEGONE,BEGONE
910 LET V=USR 54000: REM Fcnt,N$,Fno,Mode
911 RANDOMIZE USR 54948
912 IF old=1 THEN LET nr=1
913 RETURN
949 REM --DATA SET START STNOS
950 DATA 8000: REM "NAMES"
951 DATA 8250: REM "STREET"
952 DATA 8500: REM "CITY"
953 DATA 8750: REM "TELE"
954 DATA 9000: REM "CHILDREN"
955 DATA 9250: REM "BIRTHDAYS"
956 DATA 9500: REM "ACTIVITIES"
971 DATA 0000: REM "EOF"
975 REM --BOOK FILL ROUTINE--
976 RESTORE 950
977 FOR I=0 TO 20
978 READ BOOK: IF BOOK=0 THEN GO TO 983
979 LET BOOKM=INT (BOOK/256): LET BOOKL=256*(BOOK/256-BOOKM)
980 POKE (54850+2*I),BOOKL
981 POKE (54851+2*I),BOOKM
982 NEXT I
983 RETURN
985 REM --STMT FILL--
986 LET BOOKM=INT (STMT/256): LET BOOKL=256*(STMT/256-BOOKM)
987 POKE 54894,BOOKL: POKE 54895,BOOKM
988 RETURN
1000 LET FCNT=002: LET FNO=FCNT: LET old=0: LET MODE=1000
1001 GO SUB 975: REM "LD Books"
1002 LET B$=" "
1005 REM --MENU--
1006 CLS : PRINT AT 1,13;"MENU",,,
1010 PRINT "1. ADD FILE",,"2. DELETE FILE",,"3. MODIFY FILE",,"4. SEARCH",,"5. PRINTOUT (set-up for OLIVETTI INK JET printer. LIST 4000 and change for your printer) ","6. SAVE",,"7. EXIT"
1015 INPUT "SELECTION=";K$
1021 IF K$="1" THEN GO TO 1050
1022 IF K$="2" THEN GO TO 1100
1023 IF K$="3" THEN GO TO 3000
1024 IF K$="4" THEN GO TO 2000
1025 IF K$="5" THEN GO TO 4000
1026 IF K$="6" THEN GO TO 2100
1027 IF K$="7" THEN GO TO 9999
1028 GO TO 1000
1050 REM --ADD FILES ENTRY PT--
1055 CLS : PRINT AT 1,5;"ADDING FILE"
1056 INPUT "NEW NAME [0 to esc]=";N$: IF N$="0" THEN GO TO 1000
1057 LET R$=N$: GO SUB 21: LET P$=S$: LET L=LEN S$
1061 LET I=1
1062 READ R$: GO SUB 21: LET R$=S$: IF LEN S$>L THEN LET R$=S$(1 TO L)
1063 IF P$<=R$ THEN LET FNO=I: PRINT "fno=";fno: GO TO 1065
1064 LET I=I+1: IF I<=FCNT THEN GO TO 1062
1065 LET FNO=i: LET MODE=0: REM "CREATE"
1066 RESTORE 950: READ STMT: GO SUB 985
1070 LET v=USR 54000: REM Fcnt,N$,Fno,Mode
1080 RANDOMIZE USR 54948
1090 LET MODE=8: GO TO 3000
1100 REM --DELETE FILE ENTRY PT-
1105 CLS : PRINT AT 1,5;"DELETING FILE"
1110 INPUT "NAME TO BE DELETED[0 TO esc]=";N$: IF N$="0" THEN GO TO 1000
1111 LET R$=N$: GO SUB 21: LET P$=S$: LET L=LEN S$
1115 RESTORE 950: READ STMT: GO SUB 985: RESTORE STMT
1120 FOR I=1 TO FCNT
1130 READ R$: GO SUB 21: LET R$=S$: IF LEN S$>L THEN LET R$=S$(1 TO L)
1140 IF P$<=S$ THEN LET FNO=I: GO TO 1155
1150 NEXT I
1155 LET BK0=PEEK 54850+256*PEEK 54851
1160 RESTORE BK0+FNO: READ F$: PRINT FNO;" ";F$
1200 INPUT "FILE NO TO BE DELETED=[0 TO esc]";K$: IF K$="" THEN LET FNO=FNO+1: GO TO 1160
1201 IF K$="0" THEN GO TO 1000
1202 LET FNO=VAL K$
1210 RESTORE BK0+FNO: READ F$
1220 PRINT "DELETE ";F$;" ? [0 TO esc ]"
1230 INPUT K$
1240 IF K$="0" THEN GO TO 1000
1250 LET MODE=1
1260 RESTORE 950
1261 FOR I=0 TO 20
1262 READ BOOK: IF BOOK = 0 THEN GO TO 1280
1263 LET BEGONE=BOOK+FNO
1264 DELETE BEGONE,BEGONE
1265 NEXT I
1280 LET V=USR 54000: REM Fcnt,N$,Fno,Mode
1290 RANDOMIZE USR 54948
1295 GO TO 1000
2000 REM "SEARCH"
2005 CLS : PRINT AT 1,5;"SEARCH"
2010 INPUT "NAME TO BE FOUND[0 TO esc]=";N$: IF N$="0" THEN GO TO 1000
2011 LET R$=N$: GO SUB 21: LET P$=S$: LET L=LEN S$
2015 RESTORE 950: READ STMT: GO SUB 985: RESTORE STMT
2020 FOR I=1 TO FCNT
2030 READ R$: GO SUB 21: LET R$=S$: IF LEN S$>L THEN LET R$=S$(1 TO L)
2040 IF P$<=S$ THEN LET FNO=I: GO TO 2055
2050 NEXT I
2055 LET BK0=PEEK 54850+256*PEEK 54851
2060 RESTORE BK0+FNO: READ F$: PRINT FNO;" ";F$
2070 INPUT "FILE NO TO BE DISPLAYED=[0 TO esc]";K$: IF K$="" THEN LET FNO=FNO+1: GO TO 2060
2071 IF K$="0" THEN GO TO 1000
2072 LET FNO=VAL K$
2075 CLS
2080 FOR I=0 TO 6:
2081 RESTORE (8000+I*250+FNO)
2082 READ F$: PRINT F$
2083 NEXT I
2090 INPUT "0=MENU 1=PRINT 2=SEARCH";';"'SELECTION'=";Z$
2091 IF Z$="0" THEN GO TO 1000
2092 IF Z$="2" THEN GO TO 2000
2093 IF Z$="1" THEN LPRINT
2094 FOR I=0 TO 6
2095 RESTORE (8000+I*250+FNO)
2096 READ F$: LPRINT F$
2097 NEXT I
2099 GO TO 2090
2100 REM "SAVE"
2110 CLS : PRINT AT 1,10 ;"SAVING"
2120 INPUT "start the tape to SAVE program.";z$
2130 SAVE "TELE"
2140 PRINT "PROGRAM SAVED": PAUSE 10
2145 CLS
2150 GO TO 1000
3000 REM --MODIFY DATA--
3001 IF MODE=8 THEN LET MODE=2: LET z$="": GO TO 3012
3005 LET MODE=2
3010 INPUT "ENTER FILE NO[same='ENT',esc=0]=";z$
3011 IF Z$="0" THEN GO TO 1000
3012 IF Z$="" THEN LET old=1: GO TO 3015
3013 IF CODE (Z$)>47 AND CODE (Z$)<58 THEN LET FNO=VAL (Z$): GO TO 3015
3014 PRINT "ILLEGAL ENTRY,TRY AGAIN": GO TO 3010
3015 LET BK0=PEEK 54850+256*PEEK 54851
3016 RESTORE BK0+FNO: READ N$
3019 PRINT BK0+FNO;" ";N$
3020 LET A$="Name": LET BASE=8000: LET nr=0: GO SUB 900
3021 LET A$="Street": LET BASE=8250: GO SUB 900
3022 LET A$="City": LET BASE=8500: GO SUB 900
3023 LET A$="Tele": LET BASE=8750: GO SUB 900
3024 LET A$="Children": LET BASE=9000: GO SUB 900
3025 LET A$="Birthdays": LET BASE=9250: GO SUB 900
3026 LET A$="Activ": LET BASE=9500: GO SUB 900
3029 CLS : PRINT "FILE # ";FNO;''
3030 FOR I=0 TO 6:
3031 RESTORE (8000+I*250+FNO)
3032 READ F$: PRINT F$
3033 NEXT I
3034 INPUT "DEPRESS 'ENT' TO CONTIN";Z$
3035 GO TO 1000
4000 REM --PRINTOUT--
4001 CLS : PRINT AT 1,5;"PRINTOUT": CAT "PRCODE.BIN",
4002 POKE 26703,5: POKE 26704,251: POKE 64259,79: POKE 64256,0: LPRINT CHR$ 27;CHR$ 0;CHR$ 127: POKE 64256,1
4003 LPRINT TAB 35;"GAMBRELL SS DEPT BOYS";'''
4010 PRINT "1. ALPHABETICAL";';"2. CLASS"
4011 INPUT "ENTER SELECTION=";Z$
4015 IF Z$="1" THEN GO TO 4100
4016 IF Z$="2" THEN GO TO 4200
4017 GO TO 4011
4100 FOR I=1 TO FCNT
4101 RESTORE 8000+I: READ N$
4102 RESTORE 8250+I: READ S$
4103 RESTORE 8750+I: READ T$
4104 RESTORE 9250+I: READ B$
4105 RESTORE 9500+I: READ A$: LET A$=A$(1 TO 2)
4110 LPRINT N$;TAB 22;S$;TAB 45;T$;TAB 65;B$;TAB 77;A$
4115 IF INKEY$="0" THEN STOP
4116 IF I=60 THEN STOP
4120 NEXT I
4200 INPUT "CLASS [1 TO 12]=";C
4201 LPRINT "GRADE ";C
4202 FOR I=1 TO FCNT
4203 RESTORE 9500+I: READ A$: LET A$=A$(1 TO 2): LET AC=VAL A$
4204 IF AC<>C THEN GO TO 4220
4205 RESTORE 8000+I: READ N$
4206 RESTORE 8250+I: READ S$
4207 RESTORE 8750+I: READ T$
4208 RESTORE 9250+I: READ B$
4210 LPRINT N$;TAB 22;S$;TAB 45;T$;TAB 65;B$;TAB 77;A$
4215 IF INKEY$="0" THEN STOP
4220 NEXT I
8000 REM --NAMES--
8001 DATA "John & Jane Doe"
8002 DATA "ZZZZZZZZZZZZZZZZZZZZ"
8250 REM --STREET--
8251 DATA "2101 Run Down St."
8252 DATA "XXXX SSSSSSSSSSSSSSS"
8500 REM "CITY"
8501 DATA "Shanty Town, NY. 11111"
8502 DATA "CITY,ST. ZIP"
8750 REM "TELE"
8751 DATA "(000) 555-4444 Bus.(111) 555-2222"
8752 DATA "(AC.)XXX-XXXX"
9000 REM --PARENTS OF:--
9001 DATA "Brat"
9002 DATA "XXXX & YYYYY ZZZZZZ"
9250 REM --BIRTHDAY--
9251 DATA "926.49 530.56 531.82"
9252 DATA "MMDD.YYYY"
9500 REM --ACTIVITIES--
9501 DATA "Anniv 621.80"
9502 DATA "WHATEVER"
9999 STOP