0 'DBNEW.BA Bob Ripley, 8140 Ammonette Drive, Richmond Va. 23235 1 '804-272-1560 For personal use only. Commercial rights may be purchased 2 'by sending $10 to the above address for each machine on which this 3 'program is used. 4 'CLUB 100 Library - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE 5 SCREEN,0:CLS:PRINT"DBNEW":GOTO9010 11 IFCQ=0THENCO=1:QQ(II)=1:LN(II)=LEN(A(Q(I),II)) 12 IFQQ(II)>LN(II)ORQQ(II)=0THEN A(C,II)="":GOTO40 15 IFLEFT$(A(Q(I),II),1)=" "THENLN(II)=LN(II)-1:A(Q(I),II)=RIGHT$(A(Q(I),II),LN(II)) 20 QW=JJ(II)+QQ(II) 23 FORJH=QWTOQQ(II)STEP-1 24 A1$=MID$(A(Q(I),II),JH,1):IFA1$=""ORA1$=" "GOTO32 30 NEXT:PZ=QW-1:PX=QW:GOTO33 32 PZ=JH-1:PX=JH+1:JH=QQ(II):NEXT 33 A(C,II)=MID$(A(Q(I),II),QQ(II),PZ-QQ(II)+1):QQ(II)=PX:IFLN(II)>PZTHENCO=1 40 PRINT#1,USINGG$(II)+DH$;A(C,II);SPACE$(DH);:RETURN 100 A2="":CD=1:S=2:L!=VARPTR(A2):POKEL!,205:POKEL!+CD,189:POKEL!+S,249 500 FG$=FS$+STRING$(6-LEN(FS$),32)+"DO 600 LL=INSTR(1,A2,FG$)-1606:FG$="":A2=" 710 PRINT@40,"GET RCDS"; 720 ML=PEEK(LL):MH=PEEK(LL+1):Q=256:Q1=255:P=1:ST=0 740 FORI=STTOI4:PRINT@60,I+1;:GOSUB750:ML=ML+1:IFML>Q1THENMH=MH+1:ML=ML-Q 745 NEXT:S=I4:RETURN 750 FORII=0TOCC:J=VARPTR(A(I,II)):POKEJ,Q1:POKEJ+1,ML:POKEJ+2,MH 770 IFIIQ1THENMH=MH+1:ML=ML-Q 785 IFINSTR(1,A(I,II),",")>0THEN11000 790 NEXT:RETURN 810 PRINT"SORTING":M=S-3:Q2=Q:Q=Q1 820 M=M/2:PRINTM:IFM=0THENQ=Q2:RETURN 840 K=S-M:J=4 850 I=J 860 L=I+M 865 IF(N1$=NANDA(Q(I),Q)>A(Q(L),Q))ORN1$=YANDVAL(A(Q(I),Q))>VAL(A(Q(L),Q))THEN910 880 J=J+1:IFJ>KTHEN820 900 GOTO850 910 JJ=Q(I):Q(I)=Q(L):Q(L)=JJ 920 I=I-M:IFI<4THEN880 930 GOTO860 950 IT=I:IFUR$=YTHENI=C+1ELSEI=C-1 955 IFT$=YTHENNC$=N 957 FORU=1TOSS:PC=PC+1:GOSUB4020:NEXTU:I=IT:IFNC$=NTHENPRINT #1,STRING$(CT-1,"-");SPACE$(DH):NC$=Y:RETURNELSENC$=Y:RETURN 1000 ML=0:CLOSE:IF(W=2ORW=3ORW=9)AND(P$=BB(0)ORP$=BB(3))THENGOSUB8200 1002 GOSUB9300 1003 GOSUB1005:GOTO1190 1005 CLS:PRINTTAB(11)"PRINT MENU" 1100 PRINTS+1" RECS :"CC+1" FLDS :"C-5" MAXRECS 1110 PRINT"1) SORT 2) SEARCH 3) FORMAT PRINT 1120 PRINT"4) OPTION 5) 100 MENU 6) PRT SETUPS 1140 PRINT"7) MATH ENABLED? '";T$;"' 8) ENTER DATA 1150 PRINT"9) UNFORMATTED PRINT";:RETURN 1190 GOSUB1250 1210 UL$="9":LL$="1":BEEP:GOSUB6210:CLS:CLOSE 1215 Q3=W:IFW=4ORW=6ORW=8THENPRINT CHR$(27);"U":CLS:KEY OFF 1220 ONWGOSUB2010,3610,3610,5930,1400,6010,1310,8010,4510:GOTO1000 1250 DV$=N 1253 PRINT CHR$(27)"U"CHR$(27)"K"; 1255 PRINTCHR$(27);"Y) ";:FORI8=0TO5:PRINTBB(I8)SPACE$(1);:NEXT:PRINTCHR$(27);"Y)";CHR$(32+I9*5);NO$BB(I9)OF$;:IFI9=2ORI9=4THENDV$=YELSEP$=BB(I9) 1285 PRINTCHR$(27)"T";:CLOSE:IFDV$=NTHENGOSUB5990 1287 KEYON:ONKEYGOSUB1350,1355,1360,1380,1395,1397:RETURN 1310 IFT$=YTHENT$=N:CT=0:RETURNELSET$=Y:CT=7+DH:RETURN 1350 I9=0:GOTO1250 1355 I9=1:GOTO1250 1360 CLS:IFCC>=PPTHENBEEP:PRINT"WARNING - NOT ALL COLUMNS PRINTED":BEEP 1370 I9=2:INPUT"CAS: FILENAME";FD$:P$=BB(2)+FD$:GOSUB1005:GOTO1250 1380 I9=3:GOTO1250 1395 CLS 1396 I9=4:INPUT"DISC FILENAME(EX 0:TEST)";P$:IF MID$(P$,2,1)<>":"THENGOSUB13000:GOTO1396ELSEGOSUB1005:GOTO1250 1397 I9=5:GOTO1250 1400 MENU 1700 PRINT"HOLD 'E' TO END LISTING":RETURN 1800 CLS:Q=2:PRINT"ERROR CODE "ERR" IN LINE "ERL: 1803 IFERR=7THENPRINT"OUT OF MEMORY" 1804 GOSUB1810:RESUME1000 1810 FORI6=1TO10:BEEP:NEXT:INPUTE$:RETURN 2010 PRINT"1) SORT":PRINT"2) SORT & PRINT":H3$="SORTED BY " 2020 LL$="1":UL$="2":GOSUB6210:ONWGOTO2025,2500 2025 GOSUB2030:GOSUB2031:GOSUB2040:GOSUB2050:GOTO2100 2030 PRINT:PRINT"COL #"TAB(10)"TITLE":RETURN 2031 FORII=0TOCC:GOSUB2033:PRINT:FORIL=1TOII*10:NEXT:NEXT:RETURN 2033 PRINTIITAB(6)A(0,II);:RETURN 2040 INPUT"COL.#";Q1 2042 IFQ1>CCORQ1<0THENGOSUB13000:GOTO2040 2045 RETURN 2050 PRINT"NUMERICAL COL.";:GOSUB13100:N1$=E$:RETURN 2100 H$=H3$+A(0,Q1):GOTO 810 2500 PRINT"ENTER COL.#"; 2550 GOSUB 2030:FOR II=0TOCC:GOSUB2033 2580 GOSUB13100:BC(II)=E$ 2590 IF BC(II)=YTHENPRINT" NUMERICAL COL.";:GOSUB13100:BD(II)=E$ 2600 PRINT:NEXT 2700 FOR JI=0TOCC 2710 IF BC(JI)=NTHEN2900 2720 Q1=JI:N1$=BD(JI):GOSUB 810 2740 Q=3:H$=H3$+A(0,JI):GOSUB 3610:CLOSE 2900 NEXT:RETURN 3610 IFQ3<>2THENMT=0:GOTO3672 3612 INPUT"OPERATOR(AND/OR/NOT/<>)";E$:GOSUB5920:OP$=E$:IFINSTR(1,"<>ORANDNOT",OP$)=0ORLEN(OP$)=1THENGOSUB13000:GOTO3612ELSEGOSUB2030:GOSUB2031 3613 IFINSTR(1,"<>",OP$)=0THEN3620 3615 INPUT"COL. #, COMMA, & SMALLEST STRING TO BE FOUND";CL(0),B(0):IFCL(0)>CCTHENGOSUB13000:GOTO3615 3616 INPUT"LARGEST STRING";B(1):MT=0:M9=0:GOSUB2050:GOTO3672 3620 PRINT"INPUT COL. #, COMMA & SEARCH STRING. ENTER '0,END' TO END. 3630 FORMM=0TO9 3635 INPUTCL(MM),B(MM) 3637 IFCL(MM)>CCTHENGOSUB13000:GOTO3635 3640 IFB(MM)="END"THENMT=MM-1:M9=MT:GOTO3672 3650 NEXT 3660 MT=MM-1:M9=MM 3672 GOSUB5990 3675 FORJT=1TOWW:IF LB$=NTHENGOSUB3800 3680 IFOP$="AND"OROP$="NOT"THENMT=0 3700 FORML=0TOMT 3710 IF LB$=NTHENGOSUB4013ELSECLOSE:GOSUB4510 3715 IFDV$=YTHENST=4:HS$=Y 3720 NEXTML 3725 IFP$=BB(1)ANDFF$=YTHENPRINT#1,CHR$(12); 3727 NEXTJT:OP$="":RETURN 3800 GOSUB1700:PG=0:GT=0:FORI=0TOCC:T(I)=0:NEXT:I=0 3805 IFDV$=YTHENHS$=N:ST=0ELSEST=4 3810 PC=7:IFHS$=NTHENRETURNELSEIT=I:I=0:PG=PG+1:PRINT#1,:PRINT#1,"FILE '"FS$"' "H$SPACE$(2)DATE$SPACE$(2)TIME$" PAGE #"PG:PRINT#1,A(2,0):ELSEGOSUB4520:GOTO3840 3820 GOSUB3900:GOSUB4020:GOSUB3900 3840 I=IT:RETURN 3900 YY="=":GOTO3910 3905 YY="-":IFUR$=YORDV$=YORHL$<>"|"THENRETURN 3910 PRINT#1,STRING$(TC+CT,YY):RETURN 4013 FORI=STTOS 4014 IFI<4OROP$=""THEN4019ELSEIF(OP$="OR"ANDINSTR(1,A(Q(I),CL(ML)),B(ML))=0)THEN4260 4015 IFOP$="NOT"THENGOSUB4820:IFWA=0THEN4260 4016 IFOP$="AND"THENGOSUB4800:IFWA=0THEN4260 4017 IFOP$="<>"ANDN1$=NAND(B(0)>A(Q(I),CL(0))ORB(1)VAL(A(Q(I),CL(0)))ORVAL(B(1))0ANDCQ=0THENGOSUB4410 4050 IFPP$(II)=NTHEN4100 4065 IFLEN(A(Q(I),II))>JJ(II)ORCQ=1THENGOSUB11ELSEPRINT#1,USINGG$(II)+DH$;A(Q(I),II);DS$; 4080 IFCO=1ANDLEFT$(A(C,II),1)=" "THENA(C,II)=RIGHT$(A(C,II),LEN(A(C,II))-1) 4090 IFSV$=YANDII1ANDI<=STHENPRINT#1,USING"\ \";STR$(T);DS$; 4113 IFI=0THENPRINT#1,"RESULTS"; 4115 IFI>3ANDHU%=0ANDI0ANDHS$=YORSS>0ANDI>1)ANDDV$=NTHENGOSUB950 4240 IFINKEY$="E"ORINKEY$="e"THENI=S:ML=MT 4245 IFDV$=YORI=STHEN4260 4250 IFPC=>PD-7THENGOSUB3905:PC=PC+1:FORPE=PCTOPD+1:PRINT#1,:NEXT:GOSUB3810 4260 NEXTI 4262 IFML=MTTHENGOSUB3905 4265 IFT$=NOR(W=2ANDML<>MT)THENRETURN 4270 FORII=0TOCC 4277 A(C-1,II)=STR$(T(II)) 4280 NEXT:I=C-1:PRINT#1,STRING$((TC+CT+1)/2-4,61)"TOTALS"STRING$((TC+CT)/2-3,61)DL$ 4285 HU%=1:GOSUB4020:HU%=0 4286 PRINT#1,STRING$((TC+CT+1)/2-5,61)"OPERATORS"STRING$((TC+CT)/2-5,61)DL$ 4287 GT=0:PRINT#1,TX; 4290 FORII=0TOCC:A(C-1,II)="":NEXT:I=1:GOSUB4020 4295 RETURN 4410 TQ=VAL(A(Q(I),II)):TQ$=(LEFT$(A(1,II),1)):IFTQ$<>""THENBS%=ASC(TQ$):IFBS%<48ANDBS%>41ANDBS%<>44ANDBS%<>46THENONBS%-41GOSUB4470,4480,4480,4485,4485,4492 4420 T(II)=T(II)+TQ 4430 RETURN 4470 T=T*TQ:RETURN 4480 T=T+TQ:RETURN 4485 T=T-TQ:RETURN 4492 IFTQ=0THENRETURNELSET=T/TQ:RETURN 4510 GOSUB5990:IFLB$=NTHENST=0ELSEST=4 4513 GOSUB1700:FORI=STTOS 4514 IF(OP$="OR"ANDINSTR(1,A(Q(I),CL(ML)),B(ML))=0)OR(OP$="NOT"ANDINSTR(1,A(Q(I),CL(ML)),B(ML))>0)THEN4703 4515 IFOP$="AND"THENGOSUB4800:IFWA=0THEN4703 4518 IFPU$=YTHENGOSUB4720 4519 GOSUB4520:GOTO4700 4520 FORII=0TOCC:IFPP$(II)=NTHEN4600 4560 PRINT#1,SPACE$(TB);A(Q(I),II);:IFLB$=NANDII0THENFORU=1TOSS:PRINT#1,:NEXT 4703 NEXT:IFLEFT$(P$,4)="COM:"THENPRINT#1,CHR$(26); 4710 RETURN 4720 IT=I:I=1:TB=0:GOSUB4520:TB=TG:I=IT:FORI0=1TO7:PRINT#1,:NEXT:RETURN 4800 FORI1=0TOM9:IFINSTR(1,A(Q(I),CL(I1)),B(I1))<>0THENWA=1:NEXT:RETURNELSEWA=0:I1=M9:NEXT:RETURN 4820 FORI1=0TOM9:IFINSTR(1,A(Q(I),CL(I1)),B(I1))>0THENWA=0:I1=M9:NEXT:RETURNELSEWA=1:NEXT:RETURN 5020 FORII=0TOCC:PRINT#1,A(Q(I),II);:IFII96ANDASC(TW$)<123THENMID$(E$,IX)=CHR$(ASC(TW$)-32) 5925 NEXT:RETURN 5930 CLS:PRINT"1) TITLE PRINTED "HS$ 5933 PRINT"2) LINES SKIPPED "SS" UNDERLINE "UR$ 5934 PRINT"3) FORM FEED "FF$" 4) 1 FLD/LINE "SV$ 5936 PRINT"5) LINES/PAGE ="PD" 6) # OF COPIES"WW 5938 PRINT"7) FRE MEM & FLD SIZE 8) POSTCARD "PU$ 5939 PRINT"9) ADRS. LABELS "LB$" 0) PRINT MENU "; 5942 LL$="0":UL$="9":GOSUB6210:CLS:IFW=0THENRETURN 5943 ONWGOSUB7000,7010,5950,5992,7020,5995,5944,6830,6820:GOTO5930 5944 GOSUB5845:PRINT 5945 PRINT"FRE(0)="FRE(0)" FRE STRG"FRE("");:GOTO8200 5950 IFFF$=YTHENFF$=N:RETURN:ELSEFF$=Y:RETURN 5960 OPENFS$FORINPUTAS1:RETURN 5970 OPENFS$FORAPPENDAS1:RETURN 5990 CLOSE:OPENP$FOROUTPUTAS1:RETURN 5992 IFSV$=NTHENSV$=Y:RETURNELSESV$=N:RETURN 5995 INPUT"# OF COPIES";WW:RETURN 6010 PRINT"0)PRINT MENU":PRINT"1)SPACES BETWEEN FIELDS ="LEN(DH$):PRINT"2)PRINTER SETUP 6040 PRINT"3)FIELDS PRINTED>"; 6050 FORI=0TOCC:IFPP$(I)<>"N"THENPRINTI; 6060 NEXT:PRINT:PRINT"4)CRT" 6100 LL$="0":UL$="4":GOSUB6210:IFW=0THENRETURN 6110 ONWGOSUB6300,8500,6930,6250 6200 CLS:GOTO6010 6210 Q$=INKEY$:IFQ$=""THEN6210 6220 W=VAL(Q$):IFQ$UL$THEN6210ELSERETURN 6250 INPUT"SCREEN(0/1)";SZ% 6260 INPUT"WIDTH(40/80)";WD%:IF WD%<>40ANDWD%<>80THENPRINT"40 OR 80 ONLY":GOTO6260ELSE SCREENSZ%:WIDTH WD%:RETURN 6300 CLS:INPUT"ENTER NUMBER OF SPACES SEPARATING EACH FIELD";DH:DS$=SPACE$(DH):GOSUB6960:IFDH>1THENDH$="\"+SPACE$(DH-2)+"\":DL$=" ":RETURNELSEDH$="! 6310 LINEINPUT"FIELD SEPARATOR";DL$:RETURN 6820 GOSUB6930:IFLB$=NTHENLB$=Y:FF$=N:SS=6-PP:PD=10000:RETURNELSELB$=N:SS=0:FF$=Y:PD=66:RETURN 6825 RETURN 6830 IFPU$=NTHENPU$=Y:INPUT"LINES/PG (24/66)";PZ:PZ=PZ-14:TB=22:LB$=N:GOSUB6820:RETURNELSELB$=Y:GOSUB6820:TB=0:PU$=N:RETURN 6900 P$=CM$:RETURN 6930 PRINT"FIELDS PRINTED SELECTION":GOSUB2030 6940 PP=0:FORII=0TOCC:GOSUB2033:PRINT" PRINTED"; 6942 GOSUB13100:PP$(II)=E$ 6947 IFPP$(II)=YTHENPP=PP+1 6950 NEXT:GOSUB6960:RETURN 6960 TC=0:FORII=0TOCC:IFPP$(II)=YTHENTC=TC+JJ(II):IFII>0THENTC=TC+DH 6965 NEXT:IFT$="Y"THENCT=7+DH:RETURNELSECT=0:RETURN 7000 IFHS$=YTHENHS$=N:RETURNELSEHS$=Y:RETURN 7010 INPUT"# SKIPPED";SS:CLS:PRINT"UNDERLINE";:GOSUB13100:UR$=E$:IFUR$=YANDSS=0THENSS=1 7017 RETURN 7020 INPUT"LINES/PAGE(EX 66,87)";PD:RETURN 8010 ST=S+1:Q=256:Q1=255 8050 CLS:FORI=S+1TOC-2 8052 FORII=0TOCC:A(I,II)=A(I-1,II):NEXT:CLS:GOSUB12100 8055 PRINT:PRINT"ENTER 'END' TO EXIT 8057 PRINT"RECORD # "I:TZ=CC 8060 FORII=0TOCC 8070 PRINTUSING"\\"+G$(II)+"!";" ";A(0,II);CHR$(239) 8080 TR=CSRLIN:PRINT" "A(I,II):PRINTCHR$(27);"Y";CHR$(TR+32);" "; 8090 INPUTA(I,II):IFA(I,II)="END"ORA(I,II)="end"THENS=I-1:I=C-2:II=CC:NEXT:NEXT:RETURN 8100 TZ=TZ+LEN(A(I,II))+1:CLS:NEXT:GOSUB12100 8110 IFTZ>255THENCLS:PRINT"RECORD IS "TZ-255" CHAR. TOO LONG -REENTER":BEEP:GOTO8057 8115 OPENFS$FORAPPENDAS1:PRINT:PRINT"IS THIS OK";:GOSUB13100:CLS:IFE$=NTHENCLOSE:PRINT"'END' TO DELETE":PRINT"EDITING ";:GOTO8057 8122 PRINT"WAIT":GOSUB5020:CLOSE 8160 LL=VARPTR(A(I-1,CC)):P=1:MH=PEEK(LL+2):ML=PEEK(LL+1):ML=ML+LEN(A(I-1,CC))+2:IF ML>Q1THENMH=MH+1:ML=ML-Q 8190 GOSUB750:NEXT:S=I:PRINT"ARRAY FULL.":GOTO8200 8200 INPUT"PRESS ENTER";E$:RETURN 8500 K$="":PRINT"ENTER PRINTER CODES & ENTER AFTER EACH. ENTER '0' TO END 8520 INPUTK1:IF K1=0THENLPRINTK$:RETURNELSEK$=K$+CHR$(K1):GOTO8520 9010 CLEAR 100:YR$="86":PRINT"YEAR IS "YR$ 9014 D$=DATE$:MID$(D$,7)=YR$:DATE$=D$ 9015 REM COPYRIGHTED JAN. 1984 ROBERT L. RIPLEY 9019 CLEAR900:MAXFILES=1 9021 DEFINTC,I,J,K,L,M,Q,S:DEFSTRA,B,Y,N 9022 DIMJJ(15),BB(5),PP$(15) 9024 SS=0:PD=66:DH=1:DH$="!":DS$=SPACE$(DH):TG=20 9025 DATA LCD,LPT,CAS,CRT,DSK,"COM:88N1E 9030 FORI=0TO5:READBB(I):IFI<5THENBB(I)=BB(I)+": 9040 NEXT:P$=BB(0) 9050 WW=1:ONERRORGOTO1800 9060 T$=N:GOSUB5910:GOSUB5810:PRINT:INPUT"ENTER MAX. # OF RECORDS TO BE ADDED";I3 9065 CLS:PRINT"CNT RCDS" 9070 FORI=0TO5000:PRINT@20,I;:IFEOF(1)GOTO9092 9080 LINEINPUT#1,A:I9=LEN(A):IFI9>254ORI9=0THEN14000 9085 NEXT:STOP 9092 PRINT@20,I+1:I9=0:S=I:I4=I:C=I3+I+10:I=5000:NEXT 9093 DIMQ(C+1):FORI=0TOC+1:Q(I)=I:NEXT 9100 DIMA(C+1,CC),G$(CC),T(CC),BC(CC),BD(CC),QQ(CC),LN(CC) 9105 Y="Y":N="N":T$=N:SV$=N:HS$=Y:LB$=N:FF$=Y:PU$=N:PP=CC+1:UL$=N:DV$=N:NC$=Y:UR$=N 9115 GOSUB100:TX=VAL(A(3,0)) 9120 FORI=0TOCC:PP$(I)=Y 9125 IFLEN(A(0,I))<2THENG$(I)="\\"ELSEG$(I)="\"+STRING$(LEN(A(0,I))-2,32)+"\" 9130 A(C+1,I)=STRING$(JJ(I),"-"):NEXT 9150 IFRIGHT$(A,LEN(A(S,CC)))<>A(S,CC)THENGOTO11000 9155 NO$=CHR$(27)+"p":OF$=CHR$(27)+"q 9160 A2="":A="":Q=5:GOTO1000 9300 IFFRE(0)<800ORFRE("")<255THENCLS:PRINT"LOW MEMORY":GOTO1810ELSERETURN 10000 E$=INKEY$ 10010 GOTO10000 11000 CLS:PRINT"WAIT":BEEP:CLOSE:GOSUB5960:FORI=0TOI4:FORII=0TOCC 11010 INPUT#1,A:IFA<>A(I,II)THENGOSUB12000 11020 NEXT:NEXT:RETURN 12000 BEEP:CLS::PRINT"INCORRECT # OF COMMAS OR '' IN RECORD #"I+1:BEEP:GOSUB8200:GOSUB12100:END 12100 FORII=0TOCC:PRINTA(I,II);:IFII