Home of the original IBM PC emulator for browsers.
[PCjs Machine "ibm5170"]
Loading /machines/pcx86/ibm/5170/cga/1024kb/rev3/machine.xml...
While very different, these programs are alike in that this general
ledger program, a check register program, and two mail list programs
here are all menu-driven and will run on a PCjr with one disk drive and
sufficient memory.
DATACOUNT is a general ledger program suitable for individuals or small
businesses. The MICRO ACCOUNTING SYSTEM is a multi-purpose check
register accounting system. This software package was written for
individuals and small businesses that can use a check register for their
accounting. The MAILISTI program lets you create a file of names and
addresses. You can add to this list, change and delete entries. It
sorts, displays, prints a hardcopy to labels or reports, and it will
automatically dial selected phone numbers with an autodial modem.
Special Requirements: Some programs require BASIC.
How to Start: Type GO to Start.
Suggested Registration: $30.00 for DATACOUNT II, $35.00 for MICRO
ACCOUNTING SYSTEM, $15.00 for MAILIST1.
File Descriptions:
------------ Datacount II
CONCOL BAS Program used by General Ledger
CONCOL EXE Subprogram.
CONF PAR Program used by General Ledger
DAT DOC ASCII text file containing documentation for DATAC.EXE.
DATAC EXE Main ledger program.
DEMO Sample data file for DATAC.EXE.
DEMOA Sample data file for DATAC.EXE.
DEMON Sample data file for DATAC.EXE.
------------ Check register
MA BAS Multi-purpose check register accounting system.
MA DOC ASCII text file containing documentation for MA.BAS.
MACOPY BAT Batch file for copying this group of files to user disk.
MADOC BAT Batch file for printing MA.DOC.
START BAT Batch file for running MA.BAS.
------------ Maillist program
DATA Sample data file for MAIL.IST.
MAIL DIR ASCII text file containing a list of this group of files.
MAIL DOC ASCII text file containing documentation for MAIL.IST.
MAIL IST Mail list maintenance program (BASIC language; treat as
.BAS file).
------------ Another maillist program
AUTODIAL BAS Autodial program chained to by MAILIST1.BAS.
MAILIST1 BAS Mail list maintenance program.
MAILIST1 DIR ASCII text file containing a list of this group of files.
MAILIST1 DOC ASCII text file containing documentation for MAILIST1.BAS.
MAILSORT BAS Sort program chained to by MAILIST1.BAS.
12000 '---------------------- AUTO PHONE DIALER -------------------------------
12010 DEFINT A-Z:ON ERROR GOTO 15000:COMMON N,RAN$,IN$,NBR$,SRT$,S,CR$,ESC$:SRT$=RAN$+".SRT":DIM I1$(1000),I1(1000)
12015 I=0:MN=8:RI=0:KEY 9,""
12017 OPEN "R",#2,RAN$,79
12020 FIELD 2, 15 AS CF$, 2 AS SF$, 5 AS ZF$, 12 AS PHF$, 20 AS STF$, 10 AS N1F$, 15 AS N2F$
12100 CLS:PRINT :PRINT
12110 LOCATE 2,5:PRINT " NAME";TAB(38)"PHONE";
12120 LOCATE 3,1:PRINT STRING$(50,223):PRINT
12125 PAGE=1
12130 IF S=1 THEN OPEN "i",1,SRT$:GOTO 12150 'S1=Sorted file presen
12140 FOR L= 1 TO N
12150 IF S=1 THEN IF EOF(1) GOTO 12270
12160 IF S=1 THEN INPUT#1,I:GOTO 12190
12170 IF S=1 THEN IF I$<>"" THEN I=VAL(RIGHT$(I$,(LEN(I$)-6))):GOTO 12190
12180 I=L
12190 GET 2,I
12200 P$=N1F$+N2F$+PHF$+STF$+CF$+SF$+" "+ZF$
12210 PRINT " ";MID$(P$,1,INSTR(P$,"\")-1);:PRINT TAB(16) MID$(P$,11,INSTR(11,P$,"\")-11) TAB(33) MID$(P$,26,12)
12250 IF S=1 THEN RI=RI+1 ELSE RI=I
12260 FOR PAGER%= 17 TO 1003 STEP 17:IF RI= PAGER% THEN GOSUB 12300
12261 NEXT PAGER%
12262 IF S=1 THEN 12150
12265 NEXT
12270 CLOSE 1
12280 GOSUB 12300:CLOSE 2:GOTO 12015
12300 DEF SEG:POKE 91,5:POKE 92,22'Stop scrolling on first 5 lines
12302 LOCATE 5,1:PRINT STRING$(1,16):LOCATE 5,46:PRINT STRING$(1,17):CP%=5 :CT%=5:IF PAGE=1 AND N>17 THEN CB%=21 ELSE CB%=(RI-(17*(PAGE-1)))+4
12305 GOSUB 13400
12310 LOCATE 23,5:PRINT "Select number you wish to dial with cursor keys.";
12320 I$=INKEY$:IF I$="" THEN 12320
12325 IF I$=CHR$(27) THEN 12327 ELSE 12330
12327 CLOSE 1,#2:DEF SEG:POKE 91,1:POKE 92,24:CLS:LOCATE 19,24:COLOR 15,0:PRINT "Loading main program..............":COLOR 7,0:CHAIN "A:MAILIST1.BAS",110
12330 IF LEN(I$) =2 THEN 12510 ELSE 12320
12500 '------------------------- CURSOR CONTROL ---------------------------
12510 IF RIGHT$(I$,1)=CHR$(80) THEN GOSUB 12610:GOTO 12320
12520 IF RIGHT$(I$,1)=CHR$(72) THEN GOSUB 12710:GOTO 12320
12530 IF RIGHT$(I$,1)=CHR$(59) THEN 12810 'next page
12540 IF RIGHT$(I$,1)=CHR$(60) THEN GOSUB 12901 'goto dial call routine
12545 IF RIGHT$(I$,1)=CHR$(61) THEN GOSUB 13110 'goto special call routine
12550 GOTO 12320
12600 '----------------------- MOVE CURSOR DOWN ---------------------------
12610 IF CP%=CB% THEN BEEP:GOTO 12630
12620 LOCATE CP%,1:PRINT STRING$(1,32):LOCATE CP%,46:PRINT STRING$(1,32):CP%=CP%+1:LOCATE CP%,1:PRINT STRING$(1,16):LOCATE CP%,46:PRINT STRING$(1,17)
12630 RETURN
12700 '------------------------ MOVE CURSOR UP ----------------------------
12710 IF CP%=CT% THEN BEEP:GOTO 12730
12720 LOCATE CP%,1:PRINT STRING$(1,32):LOCATE CP%,46:PRINT STRING$(1,32):CP%=CP%-1:LOCATE CP%,1:PRINT STRING$(1,16):LOCATE CP%,46:PRINT STRING$(1,17)
12730 RETURN
12800 '----------------SET UP FOR NEXT PAGE ------------------------------
12810 CP%=5
12820 FOR X=5 TO 22
12830 LOCATE X,1:PRINT STRING$(50,32)
12840 NEXT X
12850 LOCATE 5,1
12855 PAGE=PAGE+1
12860 RETURN
12900 '------------------AUTO DIALING ROUTINE -----------------------------
12901 PHONE$=""
12910 OPEN "COM1:300,N,8,1,CS0,DS0" AS #3
12915 LOCATE 25,55:PRINT STRING$(25,32);
12920 LOCATE 15,50:PRINT "IS THIS A LONG DISTANCE CALL? ";
12930 I$=INKEY$:IF I$="" THEN 12930
12940 IF I$="Y" OR I$="y" THEN SP%=32:GOTO 13010 ELSE SP%=36
12945 FOR LP%=1 TO 8
12950 PHONE$=PHONE$+CHR$(SCREEN(CP%,SP%+LP%))
12960 NEXT LP%
12965 LOCATE 16,50:PRINT "DIALING ";PHONE$
12970 PHONE$="AT DT"+PHONE$+";"
12980 PRINT #3,PHONE$:LOCATE 17,50:COLOR 23,0:PRINT " Press any key to hang up! ";:COLOR 7,0
12982 I$=INKEY$:IF I$="" THEN 12982
12985 PRINT #3,"AT H"
12988 FOR LIN=15 TO 17:LOCATE LIN,50:PRINT STRING$(29,32);:NEXT LIN:GOSUB 13400
12990 PRINT #3,"AT Z":CLOSE #3:RETURN
13000 '------------------- LONG DISTANCE DIALING ---------------------------
13010 FOR LP%=1 TO 12
13020 PHONE$=PHONE$+CHR$(SCREEN(CP%,SP%+LP%))
13030 NEXT LP%
13040 PHONE$="1-"+PHONE$:LOCATE CP%+1,50:PRINT "DIALING ";PHONE$
13050 PHONE$="AT DT"+PHONE$+";"
13060 PRINT #3,PHONE$:LOCATE CP%+2,50:COLOR 23,0:PRINT " Press any key to hang up! ";:COLOR 7,0
13070 I$=INKEY$:IF I$="" THEN 13070
13080 PRINT #3,"AT H"
13088 FOR L%=0 TO 3:LOCATE CP%+L%,50:PRINT STRING$(29,32);:NEXT L%:GOSUB 13400
13090 PRINT #3,"AT Z":CLOSE #3:RETURN
13100 `------------------------ SPECIAL DIALING ROUTINE -----------------------
13110 LOCATE 5,50:PRINT "SPECIAL DIALING ROUTINE";:LOCATE 7,50:PRINT "Enter the number";:LOCATE 8,50:PRINT "you wish to dial";:SPDIAL$=""
13115 LOCATE 25,1:PRINT STRING$(54,32);:LOCATE 25,59:COLOR 0,7:PRINT " Exit Special Dial ";:COLOR 7,0
13120 I$=INKEY$:IF I$="" THEN 13120
13130 IF I$=CHR$(13) THEN 13180
13140 IF I$=CHR$(27) THEN LOCATE 5,50:PRINT STRING$(29,32);:LOCATE 7,50:PRINT STRING$(29,32);:LOCATE 8,50:PRINT STRING$(29,32):LOCATE 10,50:PRINT STRING$(29,32); ELSE 13150
13145 GOSUB 13400
13146 RETURN
13150 IF I$=CHR$(8) THEN SPDIAL$=LEFT$(SPDIAL$,LEN(SPDIAL$)-1):LOCATE 10,50:PRINT STRING$(29,32);:LOCATE 10,50:PRINT SPDIAL$:GOTO 13120
13160 IF I$<CHR$(43) OR I$>CHR$(122) THEN 13120
13170 SPDIAL$=SPDIAL$+I$:LOCATE 10,50:PRINT SPDIAL$:GOTO 13120
13180 SPDIAL$="AT DT"+SPDIAL$+";"
13183 OPEN "COM1:300,N,8,1,CS0,DS0" AS #3
13185 PRINT #3,SPDIAL$:LOCATE 9,50:COLOR 23,0:PRINT " Press any key to hang up! ";:COLOR 7,0
13200 I$=INKEY$:IF I$="" THEN 13200
13210 PRINT #3,"AT H"
13220 FOR L=0 TO 5:LOCATE 5+L,50:PRINT STRING$(29,32);:NEXT L:GOSUB 13400
13230 PRINT #3,"AT Z":CLOSE #3:GOSUB 13400:RETURN
13400 LOCATE 25,1:PRINT " F1 ";:COLOR 0,7:PRINT " Next Page ";:COLOR 7,0:PRINT " F2 ";:COLOR 0,7:PRINT " Dial call ";:COLOR 7,0:PRINT " F3 ";:COLOR 0,7:PRINT " SPECIAL DIAL ";:LOCATE 25,54:COLOR 7,0:PRINT " ESC ";:COLOR 0,7:PRINT " Return to main menu ";
13405 COLOR 7,0
13410 RETURN
15000 IF ERR = 71 THEN CLS ELSE 15040
15010 LOCATE 10,20:PRINT"DISK DRIVE NOT READY. PLEASE INSERT DATA DISK"
15020 LOCATE 11,20:PRINT"OR CLOSE DRIVE DOOR. PRESS ENTER TO RESUME":BEEP
15030 I$=INKEY$:IF I$=CHR$(13) THEN RESUME ELSE 15030
15040 ON ERROR GOTO 0
10 '*****************************************************
20 ' CONCOL PROGRAM TO SET UP COLORS FOR DATACCOUNT
30 'WRITTEN MARCH 30, 1986 BY JOHN MIGLIAVACCA
40 CLS:KEY OFF
41 LOCATE 20,1
42 FOR I=1 TO 15
43 COLOR I,0,0
44 LOCATE 20,3*I:PRINT I
45 NEXT
50 T1=5
59 LOCATE 2,1
60 PRINT TAB(T1)"This program sets parameters for your monitor so that you can"
70 PRINT TAB(T1)"display in colors of your choice. Consult your Basic manual"
80 PRINT TAB(T1)"under the command COLOR for details on how these commands"
90 PRINT TAB(T1)"work. There you will find a listing of numeric codes"
100 PRINT TAB(T1)"which determine foreground, background, and border colors."
110 PRINT TAB(T1)"when requested, enter the number for the color of your "
120 PRINT TAB(T1)"choice."
130 PRINT TAB(T1)""
140 PRINT TAB(T1)""
150 PRINT :PRINT :PRINT
160 OPEN "CONF.PAR" AS 1
170 FIELD #1,4 AS A.$,4 AS B.$, 4 AS C.$
180 INPUT " CODE FOR FOREGROUND COLOR ",AA.
190 INPUT " CODE FOR BACKGROUND COLOR ",BB.
200 INPUT " CODE FOR BORDER COLOR ",CC.
220 LSET A.$=MKS$(AA.)
230 LSET B.$=MKS$(BB.)
240 LSET C.$=MKS$(CC.)
260 PUT #1,1
270 CLOSE
310 A.=CVS(A.$):B.=CVS(B.$):C.=CVS(C.$)
400 COLOR A.,B.,C.:CLS
410 CLS:LOCATE 10,1:PRINT "IS THIS SATISFACTORY (Y OR N)?"
420 A$=INKEY$:IF A$="" THEN 420
430 IF A$="N" OR A$="n" THEN CLS:GOTO 40
440 END
Disk No: 330
Program Title: Ledger and Business
PC-SIG version: 2.1
While very different, these programs are alike in that this general
ledger program, a check register program, and two mail list programs
here are all menu-driven and will run on a PCjr with one disk drive and
sufficient memory.
DATACOUNT is a general ledger program suitable for individuals or small
businesses. The MICRO ACCOUNTING SYSTEM is a multi-purpose check
register accounting system. This software package was written for
individuals and small businesses that can use a check register for their
accounting. The MAILISTI program lets you create a file of names and
addresses. You can add to this list, change and delete entries. It
sorts, displays, prints a hardcopy to labels or reports, and it will
automatically dial selected phone numbers with an autodial modem.
Usage: Business/Finance.
Special Requirements: Some programs require BASIC.
How to Start: Type GO to Start.
Suggested Registration: $30.00 for DATACOUNT II, $35.00 for MICRO
ACCOUNTING SYSTEM, $15.00 for MAILIST1.
File Descriptions:
------------ Datacount II
CONCOL BAS Program used by General Ledger
CONCOL EXE Subprogram.
CONF PAR Program used by General Ledger
DAT DOC ASCII text file containing documentation for DATAC.EXE.
DATAC EXE Main ledger program.
DEMO Sample data file for DATAC.EXE.
DEMOA Sample data file for DATAC.EXE.
DEMON Sample data file for DATAC.EXE.
------------ Check register
MA BAS Multi-purpose check register accounting system.
MA DOC ASCII text file containing documentation for MA.BAS.
MACOPY BAT Batch file for copying this group of files to user disk.
MADOC BAT Batch file for printing MA.DOC.
START BAT Batch file for running MA.BAS.
------------ Maillist program
DATA Sample data file for MAIL.IST.
MAIL DIR ASCII text file containing a list of this group of files.
MAIL DOC ASCII text file containing documentation for MAIL.IST.
MAIL IST Mail list maintenance program (BASIC language; treat as
.BAS file).
------------ Another maillist program
AUTODIAL BAS Autodial program chained to by MAILIST1.BAS.
MAILIST1 BAS Mail list maintenance program.
MAILIST1 DIR ASCII text file containing a list of this group of files.
MAILIST1 DOC ASCII text file containing documentation for MAILIST1.BAS.
MAILSORT BAS Sort program chained to by MAILIST1.BAS.
PC-SIG
1030D E Duane Avenue
Sunnyvale Ca. 94086
(408) 730-9291
(c) Copyright 1989 PC-SIG, Inc.
╔═════════════════════════════════════════════════════════════════════════╗
║ <<<< Disk No: 330 Ledger and Business >>>> ║
╠═════════════════════════════════════════════════════════════════════════╣
║ ║
║ To print the manuals on this disk, type: ║
║ ║
║ MANUAL (press enter) ║
║ ║
║ To start Datacount II, type: ║
║ ║
║ DATAC (press enter) ║
║ ║
║ ║
║ To start the other programs on this disk, please refer top their ║
║ manuals for instructions and to your BASIC language manual. ║
║ ║
╚═════════════════════════════════════════════════════════════════════════╝
1 '********************** Micro Accounting Version 1.3 : January 1985
2 KEYOFF:FORX%=1 TO10:KEYX%,"":NEXT:GOTO10
3 SAVE"MA.BAS":END
10 GOSUB50020:CLS:COLOR7,0:DEFINTA-Z:DEFSTRF
11 DIMC$,A$,A$(200),B.COD$(30),T.COD$(200),FH(50),BAL$(13),CLR$(13),TRX$(13),MO$(12),PN$(9,2),TB#(200),TOP(50),I(3),F(50),BA$(13),CL$(12),TR$(12)
15 DEFFNCN$(A$,A)=STRING$((A-LEN(A$))/2-0.5," ")+A$
16 DEFFNSS$(A$)=LEFT$(A$+" ",INSTR(A$+" "," ")-1)
17 DEFFNAB$(A$)=LEFT$(A$+" ",4)
18 DEFFND1$(A$)=LEFT$(A$,2)+"/"+MID$(A$,3,2)
19 DEFFND2$(A$)=LEFT$(A$,2)+"/"+MID$(A$,3,2)+"/"+RIGHT$(A$,2)
20 DEFFNPE$(A$,A)=A$+STRING$(A-LEN(A$),".")
40 FALSE%=0:TRUE=NOTFALSE%
44 T=29:TOP=1:BOT=21:LFT=18:RT=LFT+26:CLS:LOCATETOP+2,1:PRINT FNCN$("** M I C R O A C C O U N T I N G **",80):PRINT:PRINT:PRINT
45 PRINT FNCN$("=== User-Supported Software ===",80):PRINT:PRINT FNCN$("If you have received this program",80):PRINT FNCN$("and find it of use,",80):PRINT FNCN$("your contribution will be appreciated",80):PRINT FNCN$("( $35.00 suggested )",80):PRINT
46 PRINT FNCN$("Donald R. Ramsey",80):PRINT FNCN$("727 Bunker Hill #70",80):PRINT FNCN$("Houston, Texas 77024",80):PRINT:PRINT FNCN$("You are encouraged to",80):PRINT FNCN$("Copy and Distribute this Program.",80)
47 PRINT:X=CSRLIN:COLOR15,0:PRINT FNCN$("PRESS <ENTER>",80):COLOR7,0:GOSUB49700:GOSUB150
50 CLS:GOSUB49000
100 FL1="S":T=29:TOP=1:BOT=20:LFT=19:RT=LFT+25:CLS:LOCATETOP+2,1,0:PRINT FNCN$("** M A I N M E N U **",80):PRINT:PRINT:PRINT
101 PRINT TAB(T)"<T> Transaction Entry":PRINT
104 PRINT TAB(T)"<2> Reconcile Checkbook
105 PRINT TAB(T)"<3> Run Alternate System
106 PRINT TAB(T)"<4> Begin New Year
107 PRINT TAB(T)"<5> End Program":PRINT
108 PRINT TAB(T)"<R> Report MENU
109 PRINT TAB(T)"<F> File Maintenance MENU":PRINT
110 PRINT TAB(T)"<D> Print Program Documentation
112 PRINT:X=CSRLIN:LOCATEX,LFT+5:COLOR15,0:PRINT" PRESS THE NUMBER OF YOUR SELECTION ":COLOR7,0
115 GOSUB49700:GOSUB50040
116 IFN.BACC=0 THENLOCATE22,1:COLOR15,0:PRINT FNCN$("The System is not initialized... Use OPTION <F>, <3>, or <4> of this Menu",80)
130 GOSUB150:ONINSTR("T2345RFD",A$)GOTO1000,15000,140,25000,900,5000,20000,400:BEEP:GOTO130
140 CLS:COLOR7,0:Y$=YEAR$:GOSUB49030:CLOSE:GOTO100
150 A$=INKEY$:IFA$=""THEN150 ELSERETURN
300 INPUTA$:IFINSTR("YNyn",A$)=0 THEN300 ELSEIFA$="Y"ORA$="y"THENA$="Y" ELSEA$="N
301 RETURN
310 A1=1:GOSUB50100:IFA$=CHR$(250)THEN311 ELSEIFINSTR("ynYN",AN$)=0 THENBEEP:GOTO310
311 RETURN
400 CLS:LOCATE10,1:PRINT FNCN$("To print Program Documentation, return to DOS by the MAIN MENU End Program",80):PRINT:PRINT FNCN$("then type MADOC.BAT and press <ENTER>",80):PRINT:PRINT:PRINT:PRINT FNCN$("Press <ENTER> to continue...",80)
401 GOSUB150:GOTO100
500 GOSUB800:PRINT"Press <ENTER> to continue, <E> to exit, or":PRINT" <C> to make changes...";:GOSUB150:IFINSTR("CE"+CHR$(13),A$)=0 THEN500 ELSERETURN
800 COLOR7,0:LOCATE23,1:PRINT STRING$(60," ");:LOCATE24,1:PRINT STRING$(79," ");:LOCATE23,1:RETURN
810 LOCATE13,1:FORF%=0 TO7:PRINTC$;:NEXT:RETURN
820 LOCATE9,1:FORF%=0 TO8:PRINTC$;:NEXT:RETURN
830 LOCATE6,1:FORF%=0 TO15:PRINTC$;:NEXT:RETURN
860 LOCATE18,1:FORF%=0 TO3:PRINTC$;:NEXT:RETURN
900 CLS:LOCATE11,1:PRINT FNCN$("*** This Progam is about to END ***",80):COLOR15:PRINT:PRINT FNCN$("VERIFY O/K ( Y/N )",80);:GOSUB300:COLOR7:IFA$="N"THEN100 ELSECLS:CLOSE:SYSTEM
1000 IFN.BACC=0 ORN.TACC=0 THENCLS:LOCATE12,1:PRINT FNCN$("Either no Bank Accounts or no Budget Accounts have been assigned.",80):PRINT FNCN$("Please do this in File Maintenance",80):PRINT:BEEP:PRINT FNCN$("Press <ENTER>",80):GOSUB150:GOTO100
1010 ONERRORGOTO58000:Y$=YEAR$:RP$="":APMT$="":SW=0:XFER$="
1100 CLS:H$="TRANSACTION MENU":GOSUB40000
1110 T=25:LOCATE8,1:PRINT TAB(T)"<1> Individual Entries
1120 PRINT TAB(T)"<2> Automatic Payments":PRINT
1132 PRINT TAB(T)"<R> Report Menu
1134 PRINT TAB(T)"<F> File Maintenance Menu
1136 PRINT TAB(T)"<M> Main Menu
1140 GOSUB50040:GOSUB150:ONINSTR("12",A$)GOTO3000,2000
1200 CLOSE:ONINSTR("RFM",A$)GOTO5000,20000,100:BEEP:GOTO1140
2000 GOSUB2900:C=1:FL%=1:CK.DATE$=DAT$:GOSUB40600
2010 SW=4:RP$="":APMT$="":GOSUB40401:IFA$=CHR$(250)THEN2200
2020 PF=1:GOSUB57300:PF=2:GOSUB57000:PF=3:GOSUB57200:PF=4:GOSUB57100
2030 GOSUB2950:CO=0
2100 FORX=1 TON.APMT
2110 CO=CO+1:GET1,X:GOSUB2800
2120 IFCO=11 THENCO=0:GOSUB2300:IFA$="N"THENCLS:GOSUB2900:GOSUB2950 ELSEIFA$="E"THEN2200
2130 NEXT
2150 GOSUB2300
2200 CLOSE:GOTO1000
2300 GOSUB860:GOSUB800:PRINT"Press <P> to Pay a bill, <N> for Next page":PRINT" <E> to Exit...";:GOSUB150:GOSUB800:ONINSTR("PNE",A$)GOTO2310,2490,2490:BEEP:GOTO2300
2310 LOCATE19,1:PRINT"Pay Record #:":R=19:C=15:A1=3:GOSUB50400:RN=VAL(AN$):IFRN>N.APMTTHENBEEP:GOSUB800:PRINT"Record # too high... Press <ENTER>":GOSUB150:GOTO2310
2320 IFA$=CHR$(250)THEN2480
2330 PF=1:GOSUB57310:GET1,RN:LOCATE18,1:PRINT"Pay to: ";FH(31):PRINT"Amount: ";USINGP6$;CVD(FH(32));:PRINT TAB(25)"Pay from: "FH(30)
2340 LOCATE18,60:PRINT"1. Pay As Is";:LOCATE19,60:PRINT"2. Change Amount";:LOCATE20,60:PRINT"3. Change Bank";:LOCATE21,60:PRINT"4. Skip this Item";
2350 COLOR0,7:LOCATE18,50:PRINT" Select ":COLOR7,0:SOUND600,1.5
2360 GOSUB50040:GOSUB150:LOCATE18,50:PRINT" ":ONINSTR("1234",A$)GOTO2400,2500,2600,2300:BEEP:GOTO2350
2400 CK$=FH(30):GOSUB40100:GET4,R.NO:N.BA=R.NO
2401 LOCATE20,1:PRINT"Date : ":R=20:C=11:AF$=F2(1):GOSUB50300:IFA$=CHR$(250)THEN2330 ELSEIFDE$=CHR$(255)THENLOCATER,C:PRINTCK.DATE$; ELSECK.DATE$=FND2$(AN$):T1=VAL(LEFT$(CK.DATE$,2)):GOSUB40490:GOSUB40495:IFFE="X"THENBEEP:GOTO2400
2405 CD$=FH(30):N=2:GOSUB3760:LOCATE23,1:PRINT"Next available Check No.: ";CK.NO+1;
2410 LOCATE21,1:PRINT"Check # : ":R=21:C=11:A1=5:GOSUB50400:IFDE$=CHR$(255)THENCK.NO=CK.NO+1:LOCATER,C:PRINT USINGP3$;CK.NO ELSEIFA$=CHR$(250)THEN2400 ELSECK.NO=VAL(AN$)
2420 GOSUB800:LOCATE21,25:PRINT"Print Check (Y/N)? ";:R=21:C=45:GOSUB310:IFA$=CHR$(250)THEN2410 ELSEIFAN$="Y"THENGOSUB2700
2425 PF=2:GOSUB57010
2430 LSETFH(1)="C":LSETFH(2)=LEFT$(CK.DATE$,2)+MID$(CK.DATE$,4,2):LSETFH(3)=RIGHT$(STR$(CK.NO),5):LSETFH(4)=FH(31):LSETFH(5)=FH(32):LSETFH(6)=FH(33):LSETFH(7)="":LSETFH(8)=FH(30)
2431 LSETFAC(1)=FH(34):LSETFTX(1)=FH(35):LSETFAM(1)=FH(32):LSETFAC(2)="****
2450 GET4,N.BA:T#=CVD(FH(32)):LSETBAL$(13)=MKD$(CVD(BAL$(13))-T#):FORY=MOTO12:LSETBAL$(Y)=MKD$(CVD(BAL$(Y))-T#):NEXT:LSETCLR$(MO)="N":LSETTRX$(MO)="Y":LSETCK.N$=MKS$(CK.NO)
2460 CK$=FH(34):GOSUB40200:GET3,R.NO:LSETFH(23)=MKD$(CVD(FH(23))+T#)
2470 N.TRX=N.TRX+1:PUT2,N.TRX:PUT3,R.NO:PUT4,N.BA
2480 GOSUB860:GOTO2300
2490 RETURN
2500 R=19:C=10:A1=10:GOSUB50200:FH(32)=MKD$(VAL(AN$)):LOCATER,C:PRINT" ";USINGP6$;CVD(FH(32));:GOTO2350
2600 R=19:C=36:A1=4:GOSUB50100:CK$=AN$:GOSUB40100:IFCODE$<>"V"THENBEEP:GOTO2600 ELSEFH(30)=AN$:GOTO2350
2700 IFFL%=1 THENGOSUB800:COLOR23:PRINT"Insure ";:COLOR7:PRINT"Printer is on and":PRINT"Check forms are properly positioned then Press <ENTER>...";:GOSUB150:FL%=0:GOSUB800
2710 FH(4)=FH(31):FH(5)=FH(32):FH(6)=FH(33):XX=N.TRX:GOSUB10500:GOSUB10300:RETURN
2800 IFFH(39)<>"D"THENC=C+1:PRINT" ";USING"###";X;:PRINT TAB(12)FH(30);TAB(19)FH(31);TAB(59)FH(34);TAB(67)USINGP1$;CVD(FH(32)):RETURN ELSERETURN
2900 CLS:H$="** AUTOMATIC PAYMENTS **":GOSUB40000
2910 LOCATE3,1:PRINT" Record Pay";TAB(58)"Budget":PRINT" Number From Pay To";TAB(59)"Code";TAB(74)"Amount":PRINTSG$:RETURN
2950 LOCATE17,1:PRINTSG$:LOCATE6,1:CO=1:RETURN
3000 CLS:TOP=1:BOT=11:LFT=2:RT=77:GOSUB49700:GOSUB40600
3010 GOSUB40400:IFA$=CHR$(250)THEN3800
3040 F.PASS%=TRUE:PF=2:GOSUB57100:GET2,R.NO:GOSUB800
3045 BANK$=FH(11):A.NAME$=FH(12):T.BAL#=CVD(BAL$(13)):N.BA=R.NO
3050 PF=1:GOSUB57000:N=2:GOSUB3700
3065 PF=3:GOSUB57200
3070 LSETFH(7)=" ":LSETFH(8)=CD$
3100 GOSUB3900
3105 LOCATE16,47:COLOR23,0:PRINT"_";:COLOR7:GOSUB150:LSETFH(1)=A$:IFINSTR("CDM",A$)=0 THEN3105 ELSEIFFH(1)="M"THEN3800 ELSEGOSUB810:IFFH(1)="D"THENLOCATE7,53:PRINT"DEPOSIT
3110 FX="N00020202":GOSUB52000:IFA$=CHR$(250)THENCLS:GOTO3100
3115 FX="N00030603":IFA$=CHR$(250)THEN3110 ELSEIFFH(1)="D"THENLSETFH(3)=" DEP":FX="N00040604
3120 GOSUB52000:A.BAL#=CVD(FH(5)):IFA$=CHR$(250)THEN3115
3125 LOCATE13,1:PRINT" Budget Account Assignment:":PRINT TAB(10)"Budget Code";TAB(28)"Tax Code";TAB(47)"Amount";TAB(63)"Amount Remaining";
3130 FX="N04010901
3140 GOSUB52000:IFA$=CHR$(250)THENFX="N00020606":GOTO3120 ELSEIFFE="E"THEN3155
3150 FX="N05010901":GOSUB52000:IFA$=CHR$(250)THENFX="N04010909":GOTO3140
3155 IFFH(3)<>" DEP"THENPR.CK=(INSTR(FH(3),"P")<>0)
3160 IFPR.CKANDFH(1)<>"D"THENGOSUB800:PRINT"Press <C> for changes or <ENTER> to continue...";:GOSUB150:IFA$="C"THEN3200
3170 IFPR.CKANDFH(1)<>"D"THENGOSUB10000:IFA$=CHR$(250)THEN3160 ELSE3190
3180 GOSUB500:IFA$="E"THENGOSUB3500:GOTO3800 ELSEIFA$="C"THEN3200
3190 GOSUB3500:CLS:FL="":NF=1:GOTO3100
3200 FL="C":FORR=15 TO20:LOCATER,63:PRINT STRING$(14," ");:NEXT:FX="C00020202":GOSUB52000:IFA$=CHR$(250)ORA$="E"THEN3250
3205 FX="C00030603":IFFH(1)="D"THENFX="C00040604":IFA$=CHR$(250)THEN3200
3210 GOSUB52000:IFA$=CHR$(250)THEN3205 ELSEIFA$="E"THEN3250
3220 FX="C04010901
3230 GOSUB52000:IFA$=CHR$(250)THENFX="C00030606":GOTO3210 ELSEIFA$="E"THEN3250
3240 FX="C05010901":GOSUB52000:IFA$=CHR$(250)THENFX="C04010909":GOTO3230
3250 FL="":GOTO3155
3500 N.TRX=N.TRX+1:GOSUB40300:T.BAL#=T.BAL#+T#
3510 LSETBAL$(13)=MKD$(T.BAL#):LSETCLR$(MO)="N":LSETTRX$(MO)="Y
3520 FORY=MOTO12
3530 LSETBAL$(Y)=MKD$(CVD(BAL$(Y))+T#)
3540 NEXT:LSETCK.N$=MKS$(CK.NO)
3550 PUT1,N.TRX:PUT2,N.BA
3560 FORY=1 TO6:IFFAC(Y)="****"THEN3620
3580 CK$=FAC(Y):GOSUB40200:GET3,R.NO
3590 LSETFH(23)=MKD$(CVD(FH(23))+CVD(FAM(Y)))
3600 PUT3,R.NO
3610 NEXTY
3620 RETURN
3700 LOCATE15,1:PRINT FNCN$("Standby... Reading files",80):NF=0
3701 IFTRX$(MO)="N"THEN3765
3705 FORZ=N.TRXTO1 STEP-1
3710 GETPF,Z:IFFH(8)<>FNAB$(CD$)THEN3750
3730 LSETFH(2)=FH(2):LSETFH(5)=FH(5):Z=0:NF=1
3750 NEXTZ
3760 ONERRORGOTO3770:GETN,N.BA:CK.NO=CVS(CK.N$)
3765 RETURN
3770 ONERRORGOTO58000:RESUMENEXT
3800 CLOSE:GOTO1000
3900 GOSUB49700:GOSUB810:LOCATE2,3:COLOR15:PRINT FNCN$(FNSS$(BANK$)+": "+MO$(MO)+" 19"+RIGHT$(DAT$,2),76):COLOR7:LOCATE4,5:PRINTA.NAME$;:GOSUB3950
3905 LOCATE21,3:PRINTSG$;:LOCATE7,5:PRINT"Date :";TAB(53)"Check No.:":LOCATE9,5:PRINT"Payee/Payor:";TAB(53)"Amount :":LOCATE11,5:PRINT"Memo :
3907 T=25:LOCATE14,1:PRINT TAB(T-5)"PRESS:":PRINT TAB(T)"<C> for a Check":PRINT TAB(T)"<D> for a Deposit":PRINT TAB(T)"<M> for the MENU
3910 T.DAT$=LEFT$(DAT$,2)+MID$(DAT$,4,2):IFNF=1 THENT.DAT$=FH(2):LOCATE21,1:PRINT"Last Transaction: Date ";FND1$(FH(2));" Check No. ";:IFFH(1)="D"THENPRINT"DEPOSIT"; ELSEIFP$="P"THENPRINT"PR CK"; ELSEPRINTFH(3);
3920 IFNF=1 THENPRINT" Amount ";USINGP1$;CVD(FH(5));:RETURN ELSERETURN
3950 IFT.BAL#=<0 THENCOLOR23,0:BEEP
3960 PRINT TAB(58)USINGP6$;T.BAL#:IFT.BAL#>0 THEN3970 ELSEDELAY=2:GOSUB50800:COLOR7,0:LOCATE4,58:PRINT USINGP6$;T.BAL#;
3970 COLOR7:RETURN
5000 CLS:H$="** R E P O R T M E N U **":GOSUB40000:RP$="":MENU$="
5010 T=18:LOCATE6,1:PRINT TAB(T)"<1> List Transaction Register":PRINT TAB(T)"<2> Budget Analysis and Average Month":PRINT TAB(T)"<3> Memo Report":PRINT TAB(T)"<4> Bank Account Summary":PRINT:PRINT TAB(T)"<5> Account Distribution Report (printer only)
5011 PRINT TAB(T)"<6> Selected Account Detail (printer only)":PRINT TAB(T)"<7> Selected Tax Code Detail (printer only)":PRINT
5020 PRINT TAB(T)"<T> Transaction Entry":PRINT TAB(T)"<F> File Maintenance MENU":PRINT TAB(T)"<M> Main MENU":GOSUB50040
5030 PG=1:GOSUB150:ONINSTR("1234567",A$)GOTO5500,6000,6500,8500,7000,7500,8000
5100 CLOSE:ONINSTR("TFM",A$)GOTO1000,20000,100:BEEP:GOTO5030
5500 CLS:H$="** TRANSACTION REGISTER **":GOSUB40000
5510 SW=1:GOSUB40390:IFA$=CHR$(250)THEN5650
5520 PF=1:GOSUB57000
5525 IFN.TRX=0 THENGOSUB40500:IFSKIP$="S"THEN5650 ELSE5520
5530 PF=2:GOSUB57100
5540 IFN.TRX=0 THENGOSUB40500:GOTO5500
5560 GET2,R.NO:GOSUB41100
5570 IFMO=1 THENP.BAL#=CVD(FH(14)) ELSEP.BAL#=CVD(BAL$(MO-1))
5580 CK$=FNAB$(CD$):TB#(1)=P.BAL#
5590 IFRP$="P"THEN5700
5600 RN=1:TOP(1)=1:N.REC=N.TRX:PF=1:GOSUB45000
5605 IFA$="E"THEN5650
5610 GOSUB45900:IFA$="L"THENGOSUB9500:GOSUB45005:GOTO5605
5650 CLOSE:GOTO5000
5700 GOSUB41000
5730 PF=1:N.REC=N.TRX:GOSUB46000
5740 GOSUB5790
5750 GOTO8900
5790 LPRINTSE$;:LPRINT" T O T A L S";TAB(44)USINGP2$;T.CRED#;:LPRINTTAB(68)USINGP2$;P.BAL#:LPRINTTAB(55)USINGP2$;ABS(T.DEB#):RETURN
6000 CLS:H$="** BUDGET ANALYSIS & AVERAGE MONTH **":GOSUB40000
6010 SW=2:GOSUB40390:IFA$=CHR$(250)THEN6150
6020 PF=1:GOSUB57000
6030 PF=2:GOSUB57200
6060 GOSUB41200
6070 GOSUB6400
6080 LOCATE12,1:PRINT FNCN$("S O R T I N G",80)
6085 Y=N.TACC:FORX=1 TOY:A$(X)=T.COD$(X):NEXT:GOSUB53000:GOSUB820:LOCATE6,1
6100 C=1:CO=1:PG=1:IFRP$="P"THENGOSUB41000
6110 FORXX=1 TON.TACC
6120 CK$=A$(XX):GOSUB40200:GET2,R.NO
6125 IFFH(25)="D"ORCODE$<>"V"THEN6140
6130 IFRP$="P"THENGOSUB6200:GOTO6140
6135 GOSUB45200:IFCO>16 THENGOSUB6300:IFA$="E"THENXX=N.TACC
6140 NEXTXX:IFRP$="P"THEN8900
6145 IFA$<>"E"THENGOSUB6300
6150 CLOSE:GOTO5000
6200 GOSUB46200:IFXX=N.TACCTHENRETURN ELSEGOSUB48000:RETURN
6300 GOSUB800:PRINT"Press <ENTER> to continue":PRINT" <E> to Exit...";:GOSUB150:CO=1:IFINSTR("E"+CHR$(13),A$)=0 THENBEEP:GOTO6300 ELSEIFA$="E"ORXX>=N.TACCTHENRETURN ELSECLS:GOSUB41200:LOCATE6,1:RETURN
6400 LOCATE12,1:PRINT FNCN$("Standby... Reading Files",80)
6410 FORX=1 TON.TACC:TB#(X)=0#:NEXT
6420 FORXX=1 TON.TRX
6430 GET1,XX
6440 FORY=1 TO6:IFFAC(Y)="****"THEN6490
6460 CK$=FAC(Y):GOSUB40200
6470 TB#(R.NO)=TB#(R.NO)+CVD(FAM(Y))
6480 NEXTY
6490 NEXTXX:GOSUB820:RETURN
6500 CLS:H$="** MEMO REPORT **":GOSUB40000
6510 SW=3:GOSUB40390:IFA$=CHR$(250)THEN6650
6520 PF=1:GOSUB57000
6525 IFN.TRX=0 THENGOSUB40500:IFSKIP$="S"THEN6650 ELSE6520
6530 PF=2:GOSUB57100
6540 IFN.TRX=0 THENGOSUB40500:GOTO5500
6560 GET2,R.NO:GOSUB41300
6580 CK$=FNAB$(CD$)
6590 IFRP$="P"THEN6700
6600 RN=1:TOP(1)=1:N.REC=N.TRX:PF=1:GOSUB45000
6605 IFA$="E"THEN6650
6610 GOSUB45900:IFA$="L"THENGOSUB9500:GOSUB45005:GOTO6605
6650 CLOSE:GOTO5000
6700 GOSUB41000
6730 PF=1:N.REC=N.TRX:GOSUB46000
6750 GOTO8900
7000 H$="** ACCOUNT DISTRIBUTION REPORT **
7010 CLS:GOSUB40000:GOSUB9100:IFRP$<>"P"THEN7100
7020 SW=4:GOSUB40401:IFA$=CHR$(250)THEN7100
7030 PF=1:GOSUB57000
7040 IFN.TRX=0 THENGOSUB40500:IFSKIP$="S"THEN7100 ELSE7030
7090 GOTO7200
7100 CLOSE:GOTO5000
7200 GOSUB41000
7230 PF=1:N.REC=N.TRX:GOSUB46000
7250 GOTO8900
7500 H$="** SELECTED ACCOUNT SUMMARY **
7510 SW=5:GOTO8010
8000 SW=6:TC$="Y":CLS:H$="** SELECTED TAX CODE SUMMARY **
8010 CLS:GOSUB40000:GOSUB9100:IFRP$<>"P"THEN8100
8020 GOSUB40450:IFA$=CHR$(250)THEN8100
8030 CLS:GOSUB40000:T.AMT#=0#
8040 IFSW=5 THENPF=2:GOSUB57200:GET2,R.NO
8090 GOTO8200
8100 CLOSE:GOTO5000
8200 GOSUB41000:SW=5:CK$=LEFT$(CK$+" ",4)
8220 FORY=MO1TOMO2
8225 MO$=LEFT$(MO$(Y),3)
8230 PF=1:GOSUB57000:N.REC=N.TRX
8240 GOSUB46000
8250 NEXTY
8270 GOSUB8400
8290 TC$="":GOTO8900
8400 LPRINTSD$;:LPRINT" T O T A L";TAB(67)USINGP1$;T.AMT#:RETURN
8500 CLS:H$="** BANK ACCOUNT SUMMARY **":GOSUB40000
8510 SW=7:GOSUB40390:IFA$=CHR$(250)THEN8650
8520 CLS:GOSUB40000:PF=1:GOSUB57100:P.BAL#=0#:TB#(1)=0#:T.BAL#=0#
8590 IFRP$="P"THEN8700
8600 RN=1:TOP(1)=1:N.REC=N.BACC:GOSUB41700:GOSUB45000
8610 IFA$="E"THEN8650
8620 GOSUB8690:GOSUB45900:IFA$="L"THENGOSUB9500:GOSUB45005:GOTO8610
8650 CLOSE:GOTO5000
8690 PRINT"*** TOTAL ***";TAB(56)USINGP1$;P.BAL#:RETURN
8700 GOSUB41000:N.REC=N.BACC:PF=1:GOSUB46000:GOSUB8790:GOTO8900
8790 LPRINT"*** TOTAL ***";TAB(56)USINGP1$;T.BAL#:RETURN
8900 LPRINTSD$:LPRINTCHR$(12);:CLOSE:GOTO5000
9000 LOCATE12,1:PRINT FNCN$("Please insure Printer is on and Paper is positioned",80):PRINT:PRINT FNCN$("Press <ENTER>",80):GOSUB150:GOSUB820:RETURN
9100 LOCATE10,1:PRINT FNCN$("This Report is done ONLY on the Printer",80):PRINT:PRINT FNCN$("To Print the report, Insure the printer is ON and Press <P> or ",80):PRINT:PRINT FNCN$("Press <M> for the Menu",80)
9101 GOSUB150:IFINSTR("PM",A$)=0 THENBEEP:GOTO9100 ELSEIFA$="P"THENRP$="P":GOSUB820 ELSEMENU$="M
9110 RETURN
9500 CO=1:P.BAL#=TB#(C):RN=TOP(C):RETURN
10000 IFF.PASS%THENGOSUB10800
10010 GOSUB800:N=2:PRINT"Check # :":GOSUB3760:PRINT"Next available Check No.: ";CK.NO+1;
10020 R=23:C=15:A1=5:GOSUB50400:IFDE$=CHR$(255)THENCK.NO=CK.NO+1:LOCATER,C:PRINT USINGP3$;CK.NO ELSEIFA$=CHR$(250)THEN10190 ELSECK.NO=VAL(AN$)
10030 LSETFH(3)=RIGHT$(STR$(CK.NO),5):FH(36)="":FH(37)="":FH(38)="
10040 LOCATE24,1:PRINT"Address Check (Y/N default = 'N')";:R=24:C=36:GOSUB310:IFA$=CHR$(250)THEN10010 ELSEIFAN$="Y"THENGOSUB10200:IFA$=CHR$(250)THEN10040
10100 CLS:LOCATE11,1:PRINT FNCN$("Standby... Printing Check",80)
10110 GOSUB10500:GOSUB10300
10190 RETURN
10200 GOSUB800
10210 PRINT"Address 1 :":R=23:C=15:A1=35:GOSUB50100:IFA$=CHR$(250)THEN10290 ELSEFH(36)=AN$
10220 LOCATE24,1:PRINT"Address 2 :";:R=24:C=15:A1=35:GOSUB50100:IFA$=CHR$(250)THEN10200 ELSEFH(37)=AN$
10230 LOCATE25,1:PRINT"Address 3 :";:R=25:C=15:A1=35:GOSUB50100:IFA$=CHR$(250)THEN10220 ELSEFH(38)=AN$
10290 RETURN
10300 LPRINT"
10310 LPRINTTAB(8)"Date : ";CK.DATE$
10320 LPRINTTAB(8)"Check No: ";CK.NO
10330 LPRINTTAB(8)"Paid To : ";FH(4)
10340 LPRINTTAB(8)"Memo : ";FH(6)
10345 LPRINT"
10350 LPRINTTAB(8)"Amount : ";USINGP6$;CVD(FH(5))
10355 LPRINT"
10360 LPRINTTAB(8)"Trx. No : ";N.TRX+1
10370 FORY=1 TO14:LPRINT" ":NEXT
10380 A=(80-LEN(PL$))/2
10390 LPRINTSTRING$(A,"*")+PL$+STRING$(A-2,"*")
10395 LPRINT" ":LPRINT"
10400 LPRINTTAB(42)CK.DATE$;
10410 LPRINTTAB(65)USINGP6$;CVD(FH(5))
10420 LPRINTTAB(10)FH(4)
10430 FORY=36 TO38:LPRINTTAB(10)FH(Y):NEXT
10440 LPRINT:LPRINTTAB(5)"Memo: ";FH(6)
10450 FORY=1 TO9:LPRINT" ":NEXT
10460 RETURN
10500 A$=STR$(CVD(FH(5))):AMT$=MID$(A$,2,LEN(A$)-1):W$="":PL$="":SW=0:T$="
10510 I=INSTR(AMT$,"."):IFI=0 THENT$="NO":GOTO10530
10520 T$=MID$(AMT$,I+1)+"00":T$=LEFT$(T$,2):AMT$=LEFT$(AMT$,I-1)
10530 PL$=" AND "+T$+"/100
10540 GOSUB10600:PL$=T$+PL$
10550 IFSW=1 THEN10560 ELSEGOSUB10600:PL$=T$+" THOUSAND "+PL$
10560 RETURN
10600 WL=LEN(AMT$)-3:IFWL<1 THENWL=1:SW=1
10610 W$=RIGHT$(AMT$,3):W$=" "+W$:W$=RIGHT$(W$,3):AMT$=LEFT$(AMT$,WL)
10620 T$="":FORX=1 TO3:I(X)=VAL(MID$(W$,X,1)):NEXT
10630 IFI(1)=0 THEN10640 ELSET$=PN$(I(1),2)+" HUNDRED
10640 IFI(2)<2 THENGOSUB10700:GOTO10660 ELSET$=T$+PN$(I(2),1):IFI(3)<>0 THENT$=T$+"-
10650 T$=T$+PN$(I(3),2):IFI(1)=0 ANDI(2)=0 ANDI(3)=0 THENT$="ZERO "+T$
10660 IFSW=1 ANDI(1)=0 ANDI(2)=0 ANDI(3)=0 THENT$="ZERO "+T$
10670 RETURN
10700 IFI(2)=0 THENT$=T$+PN$(I(3),2):GOTO10720
10710 T$=T$+PN$(I(3),0)
10720 RETURN
10800 GOSUB800:COLOR23:PRINT"Insure ";:COLOR7:PRINT"Printer is on and":PRINT"Check forms are properly positioned then Press <ENTER>...";:GOSUB150:F.PASS%=FALSE%:GOSUB800:RETURN
10900 GOSUB40600
10910 LOCATE8,10:PRINT"Date on Checks";:R=8:C=55:AF$=F2(1):GOSUB50300
10911 IFA$=CHR$(250)THEN10990 ELSEIFDE$=CHR$(255)THENCK.DATE$=DAT$:LOCATER,C:PRINTCK.DATE$; ELSEFE="":F1(YY)=AN$:GOSUB55040:CK.DATE$=FND2$(F1(YY)):IFFE="X"THENBEEP:GOTO10900
10920 GOSUB800:LOCATE10,10:PRINT"Beginning Check number";:R=10:C=55:A1=5:GOSUB50400:CK.NO=VAL(AN$):IFA$=CHR$(250)THEN10900
10930 GOSUB40400:IFA$=CHR$(250)THEN10920 ELSEB.COD$=CK$:N.BA=R.NO
10990 RETURN
15000 CLS:FL="":H$="RECONCILE CHECKBOOK
15010 CLS:GOSUB40000:T=24:LOCATE8,1:PRINT TAB(T)"<1> Clear Checks":PRINT TAB(T)"<2> Un-reconcile a Check":PRINT TAB(T)"<3> Reconcile Checkbook":PRINT
15020 PRINT TAB(T)"<T> for Transaction Entry":PRINT TAB(T)"<R> Report Menu":PRINT TAB(T)"<M> Main Menu":PRINT:LOCATE20,1:PRINT FNCN$("Remember all Bank fees and Service charges ",80)
15030 GOSUB50040:GOSUB150
15040 ONINSTR("123",A$)GOTO15500,16000,16500
15050 CLOSE:ONINSTR("TRM",A$)GOTO1000,5000,100:BEEP:GOTO15040
15100 CLS:GOSUB40000:GOSUB40600:SW=10:RP$="":GOSUB40400:FL="S
15110 IFA$=CHR$(250)THENRETURN ELSEPF=1:GOSUB57000:RETURN
15500 GOSUB15100:IFA$=CHR$(250)THEN15560 ELSEGOSUB830:GOSUB18000
15510 FORY=1 TON.TRX
15520 GET1,Y:IFFH(8)<>CK$ORFH(7)="*"THEN15540
15525 GOSUB15700
15530 GOSUB15600:IFA$="C"THENLSETFH(7)="*":PUT1,Y
15535 IFA$="E"THENY=N.TRX
15540 NEXTY
15550 IFA$<>"E"THENCLS:LOCATE12,1:PRINT FNCN$("There are no more transactions to be cleraed in "+MO$(MO),80):PRINT:PRINT FNCN$("Press <ENTER>",80):GOSUB150
15560 CLOSE:GOTO15010
15600 LOCATE23,1:PRINT"Press <C> to clear check, <E> to Exit, or":PRINT" <ENTER> to continue...";:GOSUB150:IFINSTR("CE"+CHR$(13),A$)=0 THENBEEP:GOTO15600 ELSERETURN
15650 LOCATE23,1:PRINT"Press <U> to Un-reconcile check, <E> to Exit, or":PRINT" <ENTER> to continue...";:GOSUB150:IFINSTR("UE"+CHR$(13),A$)=0 THENBEEP:GOTO15650 ELSERETURN
15700 FX="R00020602":GOSUB52000:LOCATE9,65:PRINT USINGP6$;CVD(FH(5));:LOCATE7,20:PRINT FND1$(FH(2));:RETURN
16000 GOSUB15100:IFA$=CHR$(250)THEN16100
16010 CLS:GOSUB40000:LOCATE4,1:PRINT" Un-reconcile which Transaction number";:GOSUB40600:R=4:C=45:A1=3:GOSUB50400:IFA$=CHR$(250)THEN16100 ELSERN=VAL(AN$)
16020 GET1,RN:GOSUB800:GOSUB18000:GOSUB15700
16030 GOSUB15650:IFA$="U"THENLSETFH(7)="":PUT1,RN:GOTO16010
16040 IFA$="E"THEN16100
16090 GOTO16010
16100 CLOSE:GOTO15000
16500 CLS:GOSUB40000:SW=8:RP$="":GOSUB40390:IFA$=CHR$(250)THEN16900 ELSEPG=1:T.CRED#=0#:T.DEB#=0#:LOCATE10,15:PRINT"Date on Bank Statement:":PRINT:PRINT TAB(15)"Ending Balance on Bank Statement:
16510 R=10:C=50:AF$=F2(1):GOSUB50300:IFA$=CHR$(250)THEN16500 ELSES.DA$=AN$
16520 GOSUB800:R=12:A1=10:GOSUB50200:IFA$=CHR$(250)THEN16510 ELSESB#=VAL(AN$)
16530 GOSUB820:LOCATE12,1:PRINT FNCN$("Standby... Reading files",80)
16540 C=16:YE=VAL(YEAR$)-1:Y$=YEAR$
16550 PF=1:GOSUB57100:GOSUB40100:GET1,R.NO
16590 IFRP$="P"THENGOSUB41000
16600 FORY=YETOYE+1
16610 Y$=RIGHT$(STR$(Y),2):PF=1:GOSUB57100:GOSUB40100:GET1,R.NO:N.BA=R.NO
16620 FORMO=1 TO12
16630 IFCLR$(MO)<>"N"ORTRX$(MO)<>"Y"THEN16700
16640 PF=2:MO$=LEFT$(MO$(MO),3):GOSUB57000:IFN.TRX=0 THENGOSUB40500:IFSKIP$="S"THEN16700 ELSE16640
16645 LSETCLR$(MO)="Y
16650 FORZ=1 TON.TRX
16660 GET2,Z:IFFH(7)="*"ORCK$<>FH(8)THEN16690
16665 IFRP$<>"P"THENGOSUB40300 ELSEXX=Z:GOSUB46100:IFC>=55 THENC=16:PG=PG+1:GOSUB41000
16670 LSETCLR$(MO)="N":PUT1,N.BA
16690 NEXTZ
16700 NEXTMO:NEXTY
16710 IFRP$="P"THEN16800
16720 GOSUB830:LOCATE4,1:PRINT FNPE$("1. Ending Balance on Bank Statement",65);TAB(68)USINGP1$;SB#:PRINT
16730 PRINT FNPE$("2. Total Uncleared Checks",65);TAB(68)USINGP1$;ABS(T.DEB#)
16740 PRINT FNPE$("3. Total Uncleared Deposits",65);TAB(68)USINGP1$;T.CRED#:PRINT
16750 PRINT FNPE$("4. Adjusted Bank Balance",65);TAB(68)USINGP1$;SB#+T.CRED#+T.DEB#:PRINT
16760 PRINT FNPE$("5. Check Register Balance",65);TAB(68)USINGP1$;CVD(BAL$(13)):PRINT
16770 PRINT FNPE$("6. Difference ** Bank Balance & Check Register **",65);TAB(68)USINGP1$;ABS(SB#+T.DEB#+T.CRED#-CVD(BAL$(13))):PRINT
16780 PRINT FNCN$("Note that items 4 & 5 should be equal",80)
16790 LOCATE24,1:PRINT"Press <ENTER> to continue...";:GOSUB150:GOTO16900
16800 LPRINTSD$
16810 LPRINTFNPE$("2. Total Uncleared Checks",65);TAB(67)USINGP1$;ABS(T.DEB#)
16820 LPRINTFNPE$("3. Total Uncleared Deposits",65);TAB(67)USINGP1$;T.CRED#
16830 LPRINTFNPE$("4. Adjusted Bank Balance",65);TAB(67)USINGP1$;SB#+T.CRED#+T.DEB#
16840 LPRINTFNPE$("5. Check Register Balance",65);TAB(67)USINGP1$;CVD(BAL$(13)):LPRINT
16850 LPRINTFNPE$("6. Difference ** Bank Balance & Check Register **",65);TAB(67)USINGP1$;ABS(SB#+T.DEB#+T.CRED#-CVD(BAL$(13)))
16860 LPRINTFNCN$("Note that items 4 & 5 should be equal",80):LPRINTCHR$(12)
16900 Y$=YEAR$:CLOSE:GOTO15000
18000 LOCATE21,3:PRINTSG$;:LOCATE7,5:PRINT"Date :";TAB(53)"Check No.:":LOCATE9,5:PRINT"Payee/Payor:";TAB(53)"Amount :":LOCATE11,5:PRINT"Memo :
18100 RETURN
20000 CLS:H$="** FILE MAINTENANCE MENU **":GOSUB40000
20010 T=20:LOCATE7,1:PRINT TAB(T)"<1> Bank Account Information":PRINT TAB(T)"<2> Budget Information":PRINT TAB(T)"<3> Automatic Payment Accounts":PRINT:PRINT TAB(T)"<4> Rebuild Account Balances":PRINT TAB(T)"<5> Change Password or Data Disk":PRINT
20011 PRINT TAB(T)"<T> Transaction Entry":PRINT TAB(T)"<R> Report MENU":PRINT TAB(T)"<M> Main MENU":GOSUB50040
20020 APMT$="":RP$="":Y$=YEAR$:IFN.BACC=0 ORN.TACC=0 THENLOCATE20,1:COLOR15,0:PRINT FNCN$("The System is not initialized... Please complete OPTIONS 1 & 2 of this Menu",80)
20030 GOSUB50040:GOSUB150:ONINSTR("12345",A$)GOTO20500,21000,21500,22000,22500
20100 CLOSE:ONINSTR("TRM",A$)GOTO1000,5000,100:BEEP:GOTO20030
20500 H$="BANK ACCOUNT DATA":PF=1:GOSUB57100:SW=1
20510 CLS:GOSUB23000:ONINSTR("LMD",A$)GOTO20800,20900,20700
20515 IFN.BACC=30 THENGOSUB21450:GOTO20900
20520 A$="":FX="N01010501":GOSUB52000:IFA$=CHR$(250)THEN20900
20530 N.BACC=N.BACC+1:B.COD$(N.BACC)=FH(10)
20540 LSETBAL$(13)=FH(14):FORX=1 TO12:LSETBAL$(X)=FH(14):LSETCLR$(X)="Y":LSETTRX$(X)="N":NEXT:PUT1,N.BACC
20550 GOSUB500:IFA$="E"THEN20900 ELSEIFA$=CHR$(13)THEN20510
20600 FX="C01010501":GOSUB52000:GOTO20540
20700 GOSUB23000:GOSUB800:GOSUB54030:GOSUB24100:IFA$=CHR$(250)THEN20900
20710 GOSUB24500:IFA$="D"THENLSETFH(15)="D":PUT1,R.NO:B.COD$(R.NO)="
20720 IFA$="E"THEN20900 ELSE20700
20800 GOSUB23000:FL="L":GOSUB800:GOSUB54030
20810 GOSUB24100:IFA$=CHR$(250)THEN20900
20830 GOSUB500:IFA$=CHR$(250)ORA$="E"THEN20900 ELSEIFA$=CHR$(13)THEN20800
20840 FL="":FX="C01020402":GOSUB52000
20850 PUT1,R.NO:GOTO20830
20880 CLOSE2:GOTO20800
20900 FL="":CLOSE:GOTO20000
21000 H$="BUDGET ACCOUNTS DATA":PF=1:GOSUB57200:SW=1
21010 CLS:GOSUB23100:ONINSTR("LMD",A$)GOTO21300,21400,21200
21015 IFN.TACC=200 THENGOSUB21450:GOTO21400
21020 FX="N02010401":GOSUB52000:IFA$=CHR$(250)THEN21400
21030 N.TACC=N.TACC+1:T.COD$(N.TACC)=FH(20)
21040 LSETFH(24)=FH(23):PUT1,N.TACC
21050 GOSUB500:IFA$="E"THEN21400 ELSEIFA$=CHR$(13)THEN21010
21100 FX="C02010401":GOSUB52000:GOTO21040
21200 GOSUB23100:GOSUB800:GOSUB54030
21210 GOSUB24200:IFA$=CHR$(250)THEN21400
21220 GOSUB24500:IFA$="D"THENLSETFH(25)="D":PUT1,R.NO:T.COD$(R.NO)="
21230 IFA$="E"THEN21400 ELSE21200
21300 GOSUB23100:FL="L":GOSUB800:GOSUB54030
21310 GOSUB24200:IFA$=CHR$(250)THEN21400
21330 GOSUB500:IFA$=CHR$(250)ORA$="E"THEN21400 ELSEIFA$=CHR$(13)THEN21300
21340 FL="":FX="C02010401":GOSUB52000:T.COD$(R.NO)=FH(20)
21350 PUT1,R.NO:GOTO21330
21400 FL="":CLOSE:GOTO20000
21450 GOSUB820:LOCATE12,1:PRINT FNCN$("You have reached the Maximum Number of Accounts",80):PRINT FNCN$("Press <ENTER>",80):BEEP:GOSUB150:RETURN
21500 H$="AUTOMATIC PAYMENT INFORMATION":PF=1:GOSUB57300:SW=1
21510 CLS:GOSUB23200:ONINSTR("MD",A$)GOTO21900,21700
21511 IFAPMT$="L"THEN21800
21520 FX="N03010901":GOSUB52000:IFA$=CHR$(250)THEN21900
21530 N.APMT=N.APMT+1
21540 PUT1,N.APMT
21550 GOSUB500:IFA$="E"THEN21900 ELSEIFA$=CHR$(13)THEN21510
21600 FX="C03010901":GOSUB52000:GOTO21540
21700 GOSUB23200:GOSUB24300:IFA$=CHR$(250)THEN21900
21710 GOSUB24500:IFA$="D"THENLSETFH(39)="D":PUT1,R.NO
21720 IFA$="E"THEN21900 ELSE21700
21800 IFRP$="P"THEN21950 ELSEGOSUB23200
21810 GOSUB24300:QQ=R.NO:IFA$=CHR$(250)THEN21900
21830 GOSUB500:IFA$="E"THEN21900 ELSEIFA$=CHR$(13)THEN21800
21840 FX="C03010901":GOSUB52000:PUT1,QQ:GOTO21830
21900 FL="":CLOSE:GOTO20000
21950 PF=1:GOSUB57300
21960 SW=9:PG=1:N.REC=N.APMT:GOSUB41000:GOSUB46000:LPRINTCHR$(12)
21970 CLOSE:GOTO20000
22000 CLS:H$="RE-BUILD ACCOUNT BALANCES":GOSUB40000
22010 T=25:LOCATE10,20:PRINT"PRESS:":PRINT TAB(T)"<R> to Re-build Account Balances":PRINT TAB(T)"<M> for the File Maintenance Menu
22020 LOCATE7,1:COLOR15:PRINT FNCN$("It is advisable to use a backup copy of your Data Disk for this procedure!",80):COLOR7
22030 GOSUB150:ONINSTR("RM",A$)GOTO22040,22400:GOTO22020
22040 GOSUB820:LOCATE12,1:PRINT FNCN$("Standby... Re-building Balances",80)
22050 PF=1:GOSUB57100:PF=2:GOSUB57200
22060 FORX=1 TON.TACC:GET2,X:TB#(X)=CVD(FH(24)):NEXT
22100 FORJ=1 TON.BACC
22110 GOSUB22450
22120 IFFH(15)="D"THEN22290
22150 FORMO=1 TO12:IFTRX$(MO)="N"THEN22260
22170 PF=3:MO$=LEFT$(MO$(MO),3):GOSUB57000
22180 FORZ=1 TON.TRX:GET3,Z
22230 IFFH(8)<>FH(10)THEN22250
22240 GOSUB40300:C.BAL#=C.BAL#+T#
22250 NEXTZ
22260 LSETBAL$(MO)=MKD$(C.BAL#)
22270 NEXTMO
22280 LSETBAL$(13)=MKD$(C.BAL#):PUT1,J
22290 NEXTJ:CLOSE1
22300 FORJ=1 TO12:PF=1:MO$=LEFT$(MO$(J),3):GOSUB57000
22305 IFN.TRX=0 THEN22360
22310 FORX=1 TON.TRX:GET1,X
22320 FORY=1 TO6:IFFAC(Y)="****"THEN22350
22330 CK$=FAC(Y):GOSUB40200:TB#(R.NO)=TB#(R.NO)+CVD(FAM(Y))
22340 NEXTY
22350 NEXTX
22360 NEXTJ
22370 PF=1:GOSUB57200
22380 FORX=1 TON.TACC:GET1,X:LSETFH(23)=MKD$(TB#(X)):PUT1,X:NEXT
22400 CLOSE:GOTO20000
22450 GET1,J:IFFH(15)="D"THEN22490
22460 TY$=Y$:YE=VAL(Y$)-1:Y$=RIGHT$(STR$(YE),2):PF=4:GOSUB57500:FORXP=1 TO30:GET4,XP:IFF(10)=FH(10)THENXP=30
22461 NEXT
22465 CLOSE4:YE=YE+1:Y$=TY$
22470 IFF(10)=FH(10)ANDF(15)<>"D"THENLSETFH(14)=BA$(13)
22480 C.BAL#=CVD(FH(14))
22490 RETURN
22500 CLS:H$="CHANGE PASSWORD OR DATA DISK":GOSUB40000
22510 IFPWFLG$="Y"THENLOCATE10,20:PRINT"Enter your OLD Password";:LOCATE10,45:COLOR0,0:INPUTAN$:COLOR7,0:IFAN$<>PW$THENLOCATE20,1:PRINT FNCN$("Invalid Password, try again",80):GOTO22510
22520 FL="S":GOSUB49205:FL="
22530 GOTO20000
23000 GOSUB40000:IFSW=1 THENGOSUB23500:SW=0:IFA$="M"THEN23040
23010 T=10:LOCATE7,1:PRINT TAB(T)"Bank Code:":PRINT:PRINT TAB(T)"Bank Name:":PRINT TAB(T)"Account Name:":PRINT TAB(T)"Account No.:":PRINT:PRINT TAB(T)"Current Balance:
23020 LOCATE15,1:PRINT"Account codes currently in use:":IFN.BACC<>0 THENFORX=1 TON.BACC:PRINTB.COD$(X),:NEXT
23040 RETURN
23100 GOSUB40000:IFSW=1 THENGOSUB23500:SW=0:IFA$="M"THEN23120
23110 T=10:LOCATE7,1:PRINT TAB(T)"Budget Code:":PRINT:PRINT TAB(T)"Account Description:":PRINT TAB(T)"Budgeted Amount:":PRINT:PRINT TAB(T)"Year-to-date Amount:
23120 RETURN
23200 GOSUB40000:IFSW=1 THENGOSUB23500:SW=0:IFA$="M"THEN23220 ELSEIFA$="D"THEN23210 ELSEIFA$="L"THENAPMT$="L":GOSUB40390:IFRP$="P"THEN23220
23210 T=10:LOCATE5,1:PRINT TAB(T)"Pay from Bank Account:":PRINT:PRINT TAB(T)"Make Payment to:":PRINT TAB(T)" Address:":PRINT TAB(T)" Address:":PRINT TAB(T)" Address:":PRINT:PRINT TAB(T)"Amount to be Paid:":PRINT:PRINT TAB(T)"Memo:":PRINT
23215 PRINT TAB(T-5)"Budget Account Assignment:":PRINT:PRINT TAB(T)"Budget Code:":PRINT TAB(T)"Tax Code:
23220 RETURN
23500 T=25:LOCATE9,1
23501 PRINT TAB(T-5)"Press:":PRINT:PRINT TAB(T)"<A> to ADD accounts, ":PRINT TAB(T)"<L> to LIST / CHANGE accounts":PRINT:PRINT TAB(T)"<D> to Delete an account, or":PRINT TAB(T)"<M> for the MENU":GOSUB150:IFINSTR("ALDM",A$)=0 THEN23500
23510 IFA$="L"THENH$="LIST: "+H$ ELSEIFA$="A"THENH$="ADD: "+H$ ELSEIFA$="D"THENH$="DELETE: "+H$
23520 IFA$="M"THENRETURN ELSECLS:GOSUB40000:RETURN
24000 GOSUB820:PF=1:GOSUB57300:LOCATE12,1:PRINT FNCN$("Standby... Printing",80)
24010 SW=9:N.REC=N.APMT:GOSUB41000:GOSUB46000
24100 R=7:C=35:A1=4:GOSUB50100:CK$=AN$:IFA$=CHR$(250)THENRETURN ELSEGOSUB40100:IFCODE$<>"V"THENF1(YY)=CK$:GOSUB55200:GOTO24100
24110 GET1,R.NO:FX="R01010401":GOSUB52000:LOCATE13,35:PRINT USINGP1$;CVD(BAL$(13));:RETURN
24200 R=7:C=35:A1=4:GOSUB50100:CK$=AN$:IFA$=CHR$(250)THENRETURN ELSEGOSUB40200:IFCODE$<>"V"THENF1(YY)=CK$:GOSUB55200:GOTO24200
24210 GET1,R.NO:FX="R02010201":GOSUB52000:LOCATE10,36:PRINT USINGP6$;CVD(FH(22));:LOCATE12,36:PRINT USINGP6$;CVD(FH(23));:RETURN
24300 LOCATE4,2:PRINT"List which Record No.";:GOSUB800:GOSUB54090:R=4:C=26:A1=3:GOSUB50400:IFA$=CHR$(250)THENRETURN ELSER.NO=VAL(AN$):IFR.NO>N.APMTTHENGOSUB800:BEEP:PRINT" Record No. too high... Press <ENTER>";:GOSUB150:GOSUB800:GOTO24300
24310 IFR.NO<1 THENBEEP:GOTO24300
24320 GET1,R.NO:FX="R03010901":GOSUB52000:LOCATE12,35:PRINT USINGP6$;CVD(FH(32));:RETURN
24500 GOSUB800:PRINT"Press <ENTER> to continue, <E> to Exit or,":PRINT" <D> to DELETE this record...";:GOSUB150:IFINSTR("DE"+CHR$(13),A$)=0 THENBEEP:GOTO24500 ELSERETURN
25000 CLS:H$="BEGIN NEW YEAR":GOSUB40000
25010 LOCATE6,10:PRINT"Are you using a Hard Disk System ";:GOSUB300:LOCATE6,1:PRINTC$;:IFA$="Y"THENHD$="Y":GOTO25110
25020 PRINT" If you are using a single or dual disk drive system then:":PRINT
25030 PRINT" <1> Make a COPY of your Current Data Disk and label
25040 PRINT" as Data disk for the New Year.":PRINT
25050 PRINT" <2> Place this New Data Disk in the Drive you use for Data.":PRINT
25060 PRINT" <3> Store the Old Data Disk in a safe place.":PRINT
25070 PRINT" <4> Return to this Section and Press <ENTER>.":PRINT:PRINT
25080 COLOR15:PRINT FNCN$("Press <ENTER> to continue ... <M> for the Menu",80):COLOR7
25100 T$=Y$:GOSUB150:IFA$="M"THEN100
25110 CLS:GOSUB40000:LOCATE8,1:PRINT FNCN$("Please insure the New Data Disk for this new year is in your Data Drive",80):PRINT:PRINT FNCN$("Press <N> for New Year ... <E> to exit this section",80)
25120 GOSUB150:ONINSTR("NE",A$)GOTO25150,100:BEEP:GOTO25120
25150 LOCATE13,15:PRINT"Last year (Ex: 1983)":PRINT:PRINT TAB(15)"New year (Ex: 1984)
25160 R=13:C=40:A1=4:GOSUB50400:IFA$=CHR$(250)THEN25110 ELSEY1$=RIGHT$(AN$,2)
25170 R=15:GOSUB50400:IFA$=CHR$(250)THEN25160 ELSEY2$=RIGHT$(AN$,2)
25180 GOSUB830:LOCATE12,1:PRINT FNCN$("Standby... Building Files",80)
25190 ONERRORGOTO27000:IFHD$<>"Y"THENKILLDDSK$+"*.TRX
25200 PF=1:Y$=Y1$:GOSUB57100:C=1:PF=2:Y$=Y2$:GOSUB57500
25210 FORY=1 TON.BACC
25220 GET1,Y:IFFH(15)="D"THEN25290
25240 GOSUB26000:PUT2,C:C=C+1
25290 NEXTY
25300 CLOSE:PF=1:Y$=Y1$:GOSUB57200:PF=2:Y$=Y2$:GOSUB57600
25310 FORY=1 TON.TACC
25330 GET1,Y:GOSUB26100:PUT2,Y
25360 NEXT
25370 CLOSE:Y3$=RIGHT$(STR$(VAL(Y1$)-1),2)
25500 IFHD$<>"Y"THENKILLDDSK$+"BUDACC"+Y1$+".MAC":KILLDDSK$+"BANKAC"+Y3$+".MAC
25600 Y$=Y2$:GOSUB49940
25650 YEAR$=Y2$:ONERRORGOTO58000:CLOSE:GOTO100
26000 LSETF(10)=FH(10):LSETF(11)=FH(11):LSETF(12)=FH(12):LSETF(13)=FH(13):LSETF(14)=BAL$(13):LSETF(15)="
26010 FORZ=1 TO12
26020 LSETBA$(Z)=BAL$(13):LSETCL$(Z)="Y":LSETTR$(Z)="N
26030 NEXTZ:LSETBA$(13)=BAL$(13):LSETC.N$=CK.N$:RETURN
26100 LSETF(20)=FH(20):LSETF(21)=FH(21):LSETF(22)=FH(22):LSETF(23)=MKD$(0#):LSETF(24)=F(23):LSETF(25)="":RETURN
27000 IFERR=53 THENRESUMENEXT ELSE27500
27500 GOSUB800:PRINT"An unexpected ERROR has occured... Basic Error ";ERR;" Line ";ERL:BEEP:PRINT"Press <ENTER> to continue":GOSUB150:CLOSE:Y$=Y2$:RESUME100
40000 COLOR15,0:LOCATE1,1:PRINT FNCN$(H$,80):COLOR7:PRINTSG$;:LOCATE22,1:PRINTSG$;:RETURN
40100 CK$=FNAB$(CK$):CODE$="":IFN.BACC=0 THENRETURN
40110 FORQ=1 TON.BACC
40120 IFB.COD$(Q)=CK$THENCODE$="V":R.NO=Q:Q=N.BACC
40130 NEXT
40140 RETURN
40200 CK$=FNAB$(CK$):CODE$="":IFN.TACC=0 THENRETURN
40210 FORQ=1 TON.TACC
40220 IFT.COD$(Q)=CK$THENCODE$="V":R.NO=Q:Q=N.TACC
40230 NEXT
40240 RETURN
40300 IFFH(1)="C"THENT#=-CVD(FH(5)):T.DEB#=T.DEB#+T# ELSET#=CVD(FH(5)):T.CRED#=T.CRED#+T#
40301 RETURN
40390 GOSUB40600:LOCATE10,18:PRINT"<P> to Print Report":PRINT TAB(18)"<S> for Screen Report":R=11:C=50:A1=1:GOSUB50100:IFA$=CHR$(250)THEN40441
40395 IFINSTR("PS",AN$)=0 THENBEEP:GOTO40390 ELSEGOSUB800:RP$=AN$:IFSW=7 THEN40441 ELSEIFSW=2 THEN40401 ELSEIFAPMT$="L"THEN40440
40400 LOCATE15,18:PRINT"Bank Code for Transactions:":IFSW=8 THEN40410
40401 LOCATE17,18:PRINT TAB(18)"Month & Year of Transactions:":IFSW=2 ORSW=4 THEN40420
40410 R=15:C=48:A1=4:GOSUB50100:CD$=AN$:CK$=AN$:IFA$=CHR$(250)THEN40430 ELSEGOSUB40100:GOSUB800:IFCODE$<>"V"THENF1(YY)=CK$:GOSUB55200:GOTO40410
40411 IFSW=8 THEN40430
40420 R=17:C=48:AF$=F2(0):GOSUB50300:IFSW=4 ANDA$=CHR$(250)THEN40430 ELSEIFA$=CHR$(250)THEN40410 ELSEGOSUB40490:IFFE="X"THEN40420
40430 IFSW=4 ORSW=10 ORSW=0 ANDA$=CHR$(250)THEN40441 ELSEIFA$=CHR$(250)THEN40390
40435 IFSW=0 THENGOSUB810 ELSEGOSUB820
40440 IFRP$="P"THENGOSUB820:GOSUB9000 ELSEIFAPMT$="L"THENGOSUB820
40441 RETURN
40450 GOSUB40600:LOCATE10,18:PRINT"Budget Code to Report:":PRINT:PRINT TAB(18)"Beginning Month No. for Report:":PRINT:PRINT TAB(18)"End Month No. of Report:":PRINT:PRINT TAB(18)"Year of Report":IFSW=6 THENLOCATE10,18:PRINT"Tax ";
40460 R=10:C=55:A1=4:GOSUB50100:CD$=AN$:CK$=AN$:IFA$=CHR$(250)THEN40480 ELSEIFSW=6 THEN40470 ELSEGOSUB40200:IFCODE$<>"V"THENF1(YY)=CK$:GOSUB55200:GOSUB800:GOTO40460
40470 R=12:C=55:A1=2:GOSUB50400:IFA$=CHR$(250)THEN40460 ELSEGOSUB40496:IFFE="X"THEN40470 ELSEMO1=MO
40471 R=14:C=55:A1=2:GOSUB50400:IFA$=CHR$(250)THEN40470 ELSEGOSUB40496:IFFE="X"THEN40471 ELSEMO2=MO
40474 R=16:C=55:A1=4:GOSUB50400:IFA$=CHR$(250)THEN40471 ELSEY$=RIGHT$(AN$,2):IFVAL(Y$)<80 THEN40474
40480 RETURN
40490 FE="":MO=VAL(LEFT$(AN$,2)):Y$=RIGHT$(AN$,2):IFMO>12 ORMO<1 ORVAL(Y$)<80 THENFE="X" ELSEMO$=LEFT$(MO$(MO),3)
40491 RETURN
40495 T=VAL(MID$(AN$,3,2)):IFT<1 ORT>31 ORVAL(RIGHT$(AN$,2))<80 THENFE="X":RETURN ELSERETURN
40496 FE="":MO=VAL(AN$):IFMO<1 ORMO>12 THENFE="X":RETURN ELSERETURN
40500 SKIP$="":GOSUB820:LOCATE11,1:PRINT FNCN$("The "+MO$(MO)+" '"+Y$+" file is empty. Press <S> to Skip this Month or ",80):BEEP:PRINT:PRINT FNCN$("Insert the proper disk and Press <ENTER> to continue...",80)
40510 GOSUB150:IFA$="S"THENSKIP$="S":RETURN ELSERETURN
40600 GOSUB800:PRINT"Press <F1> for the MENU...":RETURN
41000 LPRINTDAT$;:LPRINTTAB(72)"Page ";PG
41010 ONSWGOTO41110,41210,41310,41410,41510,41610,41710,41810,41910
41100 LOCATE1,1:PRINT FNCN$("** TRANSACTION REGISTER: "+MO$(MO)+" 19"+Y$+" **",80):PRINTC$;:LOCATE2,1:PRINT FNCN$(FH(12)+STRING$(5,32)+FH(13)+STRING$(8,32)+FNSS$(FH(11)),80):PRINTSG$;
41101 PRINT" TX# Date Ck# Payee/Payor";TAB(50)"Credit";TAB(62)"Debit";TAB(73)"Balance":PRINTSD$;:GOTO41950
41110 LPRINTFNCN$("** TRANSACTION REGISTER: "+MO$(MO)+" 19"+Y$+" **",80):LPRINTFNCN$(FH(12)+STRING$(5,32)+FH(13)+STRING$(8,32)+FNSS$(FH(11)),80):LPRINTSE$;
41111 LPRINT" TX# Date Ck# Payee/Payor";TAB(50)"Credit";TAB(62)"Debit";:IFSW<>8 THENLPRINTTAB(73)"Balance
41112 LPRINTSD$;:RETURN
41200 LOCATE1,1:PRINT FNCN$("** BUDGET ANALYSIS AND AVERAGE MONTH: "+MO$(MO)+" 19"+Y$+" **",80):PRINTSG$
41201 PRINT"Code Description Budgeted Current Mo Avg Mo Y-T-D":PRINTSD$;:GOTO41950
41210 LPRINTFNCN$("** BUDGET ANALYSIS AND AVERAGE MONTH: "+MO$(MO)+" 19"+Y$+" **",80):LPRINTSE$;
41211 LPRINT"Code Description Budgeted Current Mo Avg Mo Y-T-D":LPRINTSD$;:RETURN
41300 LOCATE1,1:PRINT FNCN$("** M E M O R E P O R T : "+MO$(MO)+" 19"+Y$+" **",80):PRINTC$;:LOCATE2,1:PRINT FNCN$(FH(12)+STRING$(5,32)+FH(13)+STRING$(8,32)+FNSS$(FH(11)),80):PRINTSG$;
41301 PRINT" TX# Date Payee/Payor";TAB(42)"Memo";TAB(74)"Amount":PRINTSD$;:GOTO41950
41310 LPRINTFNCN$("** M E M O R E P O R T : "+MO$(MO)+" 19"+Y$+" **",80):LPRINTFNCN$(FH(12)+STRING$(5,32)+FH(13)+STRING$(8,32)+FNSS$(FH(11)),80):LPRINTSE$;
41311 LPRINT" TX# Date Payee/Payor";TAB(42)"Memo";TAB(74)"Amount":LPRINTSD$;:RETURN
41400 RETURN
41410 LPRINTFNCN$("** ACCOUNT DISTRIBUTION: "+MO$(MO)+" 19"+Y$+" **",80):LPRINTSE$;
41411 LPRINT" Date CK# BANK Payee/Payor";TAB(59)"Budget CD";TAB(74)"Amount":LPRINTSD$;:RETURN
41500 RETURN
41510 LPRINTFNCN$("** REPORT ON ACCOUNT "+CK$+" : "+MO$(MO1)+" TO "+MO$(MO2)+" 19"+Y$+" **",80):LPRINT" Account ";CK$;": ";FH(21):LPRINTSE$;
41511 GOTO41611
41600 RETURN
41610 LPRINTFNCN$("** REPORT ON TAX CODE "+CK$+" : "+MO$(MO1)+" TO "+MO$(MO2)+" 19"+Y$+" **",80):LPRINTSE$;
41611 LPRINT" Date CK# Bank Payee / Payor";TAB(46)"Memo";TAB(74)"Amount":LPRINTSD$;:RETURN
41700 GOSUB40000:LOCATE4,1:PRINT TAB(10)"CODE BANK NAME";TAB(62)"BALANCE":PRINTSD$;:GOTO41950
41710 LPRINTFNCN$(H$,80);:LPRINTSE$;:LPRINTTAB(10)"CODE BANK NAME";TAB(62)"BALANCE":LPRINTSD$;:RETURN
41800 RETURN
41810 H$="* RECONCILIATION STATEMENT: "+FNSS$(FH(11))+" "+FND2$(S.DA$):LPRINTFNCN$(H$,80):LPRINTSD$;
41820 LPRINTFNPE$("1. Ending Balance on Bank Statement",65);TAB(67)USINGP1$;SB#
41830 LPRINTFNCN$("Transactions which have not cleared the Bank",80):GOSUB41111:RETURN
41910 LPRINTFNCN$("LIST OF AUTOMATIC PAYMENT ACCOUNTS",80):LPRINTSE$;:RETURN
41950 LOCATE22,1:PRINTSG$;:RETURN
45000 CO=1:C=1:LOCATE6,1:T.CRED#=0#:T.DEB#=0#
45005 WHILERN<>N.REC+1
45010 GETPF,RN
45020 ONSWGOSUB45100,45200,45300
45025 IFSW=7 THENGOSUB45700
45030 GOSUB45800
45035 IFA$="E"THEN45050
45040 RN=RN+1:WEND
45050 RETURN
45100 IFCK$<>FH(8)THEN45110 ELSEPRINT USING"####";RN;:PRINT TAB(6)FND1$(FH(2));:IFFH(1)="D"THENPRINT TAB(14)"Dep"; ELSEPRINT TAB(12)USINGP3$;VAL(FH(3));
45101 IFFH(7)="*"THENPRINT TAB(17)"*";
45102 GOSUB40300:PRINT TAB(20)LEFT$(FH(4),24);:IFFH(1)="D"THENPRINT TAB(46)USINGP4$;CVD(FH(5)); ELSEPRINT TAB(57)USINGP4$;CVD(FH(5));
45103 IFSW=8 THEN45110
45104 P.BAL#=P.BAL#+T#:PRINT TAB(68)USINGP2$;P.BAL#
45105 CO=CO+1
45110 RETURN
45200 CO=CO+1:PRINT USINGP5$;FH(20);FNPE$(FNSS$(FH(21)),25);CVD(FH(22));TB#(R.NO);CVD(FH(23))/MO;CVD(FH(23)):RETURN
45300 IFCK$<>FH(8)THEN45330
45310 CO=CO+1:PRINT USING"####";RN;:PRINT TAB(6)FND1$(FH(2));TAB(12)LEFT$(FH(4),28);TAB(42)FH(6);:IFFH(1)="D"THENPRINT TAB(69)"*";
45320 PRINT TAB(70)USINGP4$;CVD(FH(5))
45330 RETURN
45700 IFFH(15)="D"THENRETURN
45710 CO=CO+1:PRINT TAB(10)FH(10);" ";FNPE$(FNSS$(FH(11)),38);TAB(56)USINGP1$;CVD(BAL$(13)):PF=1:P.BAL#=P.BAL#+CVD(BAL$(13)):RETURN
45800 IFCO>16 THENGOSUB45900:CO=1
45810 RETURN
45900 GOSUB800:PRINT"Press <ENTER> for next page, <L> for last page, or":PRINT" <E> to Exit...";:GOSUB150:IFINSTR("LE"+CHR$(13),A$)=0 THENBEEP:GOTO45900
45910 C=C+1:IFA$="L"THENC=C+(C>2)-1:P.BAL#=TB#(C):RN=TOP(C)-1:GOTO45940
45920 TOP(C)=RN+1:TB#(C)=P.BAL#
45930 IFRN>=N.RECTHENA$="E":RETURN ELSEIFA$="E"THENRETURN
45940 CLS:ONSWGOSUB41100,41200,41300,41400,41500,41600,41700,41800:LOCATE6,1:RETURN
46000 GOSUB820:LOCATE12,1:PRINT FNCN$("Standby... Working on Report",80)
46010 T.CRED#=0:T.DEB#=0:C=1:IFN.REC=0 THEN46070
46020 FORXX=1 TON.REC
46025 GETPF,XX
46030 ONSWGOSUB46100,46200,46300,46400,46500,46600,46700,46800,46900
46040 IFXX=N.RECTHEN46050 ELSEGOSUB48000
46050 NEXT
46070 RETURN
46100 IFCK$<>FH(8)THEN45110 ELSELPRINTUSING"####";XX;:LPRINTTAB(6)FND1$(FH(2));:IFFH(1)="D"THENLPRINTTAB(14)"Dep"; ELSELPRINTTAB(12)USINGP3$;VAL(FH(3));
46101 IFFH(7)="*"THENLPRINTTAB(17)"*";
46102 GOSUB40300:LPRINTTAB(20)LEFT$(FH(4),24);:IFFH(1)="D"THENLPRINTTAB(46)USINGP4$;CVD(FH(5)); ELSELPRINTTAB(57)USINGP4$;CVD(FH(5));
46103 IFSW<>8 THENP.BAL#=P.BAL#+T#:LPRINTTAB(68)USINGP2$;P.BAL# ELSELPRINT
46104 C=C+1
46110 RETURN
46200 C=C+1:LPRINTUSINGP5$;FH(20);FNPE$(FNSS$(FH(21)),25);CVD(FH(22));TB#(R.NO);CVD(FH(23))/MO;CVD(FH(23)):RETURN
46300 IFCK$<>FH(8)THEN46330
46310 C=C+1:LPRINTUSING"####";XX;:LPRINTTAB(6)FND1$(FH(2));TAB(12)LEFT$(FH(4),28);TAB(42)FH(6);:IFFH(1)="D"THENLPRINTTAB(69)"*";
46320 LPRINTTAB(70)USINGP4$;CVD(FH(5))
46330 RETURN
46400 FORY=1 TO6:IFFAC(Y)="****"THEN46490
46410 IFY<>1 THEN46470
46420 LPRINTFND1$(FH(2));
46430 IFFH(1)="D"THENLPRINTTAB(10)"Dep";:GOTO46450
46440 LPRINTTAB(8)USINGP3$;VAL(FH(3));
46450 LPRINTTAB(16)FH(8);
46460 LPRINTTAB(22)FNPE$(FNSS$(FH(4)),40);
46470 C=C+1:LPRINTTAB(64)FAC(Y);TAB(70)USINGP4$;CVD(FAM(Y))
46480 NEXTY
46490 RETURN
46500 FORZ=1 TO6:IFFAC(Z)="****"THEN46560
46510 IFTC$="Y"THENFAC(Z)=FTX(Z)
46520 IFCK$<>FAC(Z)THEN46550
46530 GOSUB46600
46540 T.AMT#=T.AMT#+CVD(FAM(Z))
46550 NEXTZ
46560 RETURN
46600 C=C+1:LPRINTFND1$(FH(2));TAB(7)USINGP3$;VAL(FH(3));:LPRINTTAB(13)FH(8);TAB(18)LEFT$(FH(4),27);TAB(46)LEFT$(FH(6),23);TAB(70)USINGP4$;CVD(FAM(Z)):RETURN
46700 IFFH(15)="D"THENRETURN
46710 LPRINTTAB(10)FH(10);" ";FNPE$(FNSS$(FH(11)),38);TAB(56)USINGP1$;CVD(BAL$(13)):PF=1:T.BAL#=T.BAL#+CVD(BAL$(13)):RETURN
46800 RETURN
46900 LPRINTUSING"####";XX;:LPRINT" Pay From: ";FH(30);:LPRINT" Amount: ";USINGP6$;CVD(FH(32));:LPRINT" Budget Code: ";FH(34);:LPRINT" Tax Code: ";FH(35):LPRINTTAB(7)"Pay To : ";FH(31)
46910 LPRINTTAB(7)"Address : ";FH(36):LPRINTTAB(7)"Address : ";FH(37):LPRINTTAB(7)"Address : ";FH(38):LPRINT:C=C+6:RETURN
48000 IFC<54 THEN48020
48010 PG=PG+1:C=1:LPRINTCHR$(12);:GOSUB41000
48020 RETURN
49000 F2(0)=STRING$(2,254)+"/"+STRING$(2,254):F2(1)=F2(0)+"/"+STRING$(2,254)
49020 SG$=STRING$(80,205):C$=STRING$(80,32):SD$=STRING$(80,"-"):SE$=STRING$(80,"=")
49025 CLOSE:ONERRORGOTO49500
49030 OPEN"PW.MAC" FOR INPUT AS #1:INPUT#1,DDSK$,PWFLG$,PW$,HDF$:IFINSTR(DDSK$,":")=0 THENDDSK$=DDSK$+":
49035 IFHDF$="Y"ORFL1="S"THENLOCATE10,1:PRINT FNCN$("Your data disk is "+DDSK$,80):PRINT:PRINT FNCN$("IS THIS CORRECT ( <ENTER> FOR YES, <N> FOR NO )?",80):GOSUB150:CLS:IFA$="N"THENFL="1":GOSUB49205:FL="":CLS
49040 IFPWFLG$="Y"THENLOCATE10,20:PRINT"Enter your Password";:LOCATE10,45:COLOR0,0:INPUTAN$:COLOR7,0:IFAN$<>PW$THENLOCATE20,1:BEEP:PRINT FNCN$("Invalid Password, try again",80):GOTO49040
49050 GOSUB49900
49100 F9(0)="1647A0010101$0203,0720F0000202 0104,0765N0050303$0112,0920A0300404$0101,0965$0100505 0102,1120A0250606$0101
49120 F9(1)="0735A0041001$0308,0935A0251102$0101,1035A0251203$0401,1135A0121304$0101,1335$0101405 0502
49121 F9(2)="0735A0042001$0309,0935A0222102$0101,1035$0102203 0102,1235$0102304 0602
49122 F9(3)="0535A0043001$0310,0735A0303102$0101,0835A0303603$0101,0935A0303704$0101,1035A0303805$0101,1235$0103203 0102,1435A0253304$0101,1835A0043405$0111,1935A0043506$0101
49123 F9(4)="1514A0040101$0705,1530A0040102$0106,1541$0100103 0107,1614A0040204$0705,1630A0040205$0106,1641$0100206 0107,1714A0040307$0705,1730A0040308$0106,1741$0100309 0107
49124 F9(5)="1814A0040401$0705,1830A0040402$0106,1841$0100403 0107,1914A0040504$0705,1930A0040505$0106,1941$0100506 0107,2014A0040607$0705,2030A0040608$0106,2041$0100609 0107
49130 P1$="$#,###,###.##":P2$="#,###,###.##":P3$="#####":P4$="###,###.##":P5$="\ \ \ \ #,###,### ###,###.## ###,###.## #,###,###.##":P6$="$$#####,.##
49150 FORX=1 TO12:READMO$(X):NEXT
49151 FORX=0 TO9:FORY=0 TO2:READPN$(X,Y):NEXT:NEXT
49190 RESTORE:CLOSE:RETURN
49200 LOCATE3,1:PRINT FNCN$("INITIALIZATION DATA",80)
49205 LOCATE10,15:PRINT"Which disk will you use for data ";:INPUTDDSK$
49206 IFLEN(DDSK$)>2 ANDRIGHT$(DDSK$,1)<>"\"THENDDSK$=DDSK$+"\
49210 IFFL="1"THEN49230 ELSELOCATE12,15:PRINT"Do you wish to use a password for this system (Y/N) ";:GOSUB300:IFA$="N"THENPWFLG$="N":GOTO49225 ELSEPWFLG$="Y
49220 LOCATE14,15:PRINT"Enter your password for this system ";:INPUTPW$
49225 LOCATE16,15:PRINT"Are you using a Hard Disk System ";:GOSUB300:IFA$="Y"THENHDF$="Y"ELSEHDF$="N
49230 CLOSE:OPEN "PW.MAC" FOR OUTPUT AS #1:WRITE#1,DDSK$,PWFLG$,PW$,HDF$
49240 IFINSTR(DDSK$,":")=0 THENDDSK$=DDSK$+":
49250 IFFL="S"ORFL="1"THENRETURN
49260 CLOSE:GOSUB820:GOTO49040
49500 IFERR=53 THENRESUME49200
49550 CLS:LOCATE12,1:PRINT FNCN$("An unexpected ERROR has occured",80):PRINT:PRINT FNCN$("Basic Error # "+STR$(ERR)+" Line # "+STR$(ERL),80):PRINT:PRINT FNCN$("Press <ENTER> to continue...",80):CLOSE:GOSUB150:RESUME100
49700 A$=STRING$(RT,205):V$=CHR$(186):LOCATETOP,LFT:PRINT CHR$(201)+A$+CHR$(187);
49701 FORX=TOP+1 TOBOT
49702 LOCATEX,LFT:IFX=TOP+4 THENPRINT CHR$(204)+A$+CHR$(185);:GOTO49704
49703 PRINTV$;:LOCATEX,LFT+RT+1:PRINTV$;
49704 NEXT:LOCATEX,LFT:PRINT CHR$(200)+A$+CHR$(188);
49705 RETURN
49900 LOCATE12,20:PRINT"Please enter the date ";:AF$=F2(1):R=12:C=45:GOSUB50300:F1(YY)=AN$:FE="":F%=1:GOSUB55040:F%=0:IFFE="X"THEN49900 ELSEIFDE$=CHR$(255)THEN49910 ELSEDAT$=FND2$(AN$):IFVAL(RIGHT$(F1(YY),2))<80 THEN49900
49910 IFDE$=CHR$(255)THENDAT$=LEFT$(DATE$,2)+"/"+MID$(DATE$,4,2)+"/"+RIGHT$(DATE$,2):LOCATER,C:PRINTDAT$
49920 Y$=RIGHT$(DAT$,2):YEAR$=Y$
49930 GOSUB800:LOCATE15,1:PRINT FNCN$("Standby... Initializing ",80)
49940 PF=1:GOSUB57100
49950 IFN.BACC=0 THEN:GOTO49970
49960 FORX=1 TON.BACC:GET1,X:IFFH(15)<>"D"THENB.COD$(X)=FH(10)
49965 NEXT
49970 PF=2:GOSUB57200
49980 IFN.TACC=0 THEN49990
49985 FORX=1 TON.TACC:GET2,X:IFFH(25)<>"D"THENT.COD$(X)=FH(20)
49986 NEXT
49990 ONERRORGOTO58000:RETURN
50010 DEFSEG=0:POKE1047,0:RETURN
50020 DEFSEG=0:POKE1047,64:LOCATE23,68:COLOR0,7:PRINT" CAPS ";:COLOR7,0:RETURN
50030 DEFSEG=0:POKE1047,32:LOCATE23,75:COLOR0,7:PRINT" NUM ":COLOR7,0:RETURN
50040 DEFSEG=0:POKE1047,96:LOCATE23,68:COLOR0,7:PRINT" CAPS NUM ";:COLOR7,0:RETURN
50070 DEFSEG=0:POKE1050,PEEK(1052):DEFSEG:RETURN
50100 GOSUB50020:DE$="":AN$="":A=0:LOCATER,C:COLOR0,7:PRINT STRING$(A1," ");:IFFLG="S"THENCOLOR7,7
50110 IFA=A1THEN50140 ELSELOCATER,C+A
50120 GOSUB50500:IFA$>=" "ANDA$<"~"THENLOCATER,C+A:COLOR7,0:PRINTA$;:A=A+1:LOCATER,C+A:COLOR0,7:AN$=AN$+A$:GOTO50110
50130 ONINSTR(CHR$(8)+CHR$(13)+CHR$(250)+CHR$(252),A$)GOTO50150,50180,50180,50180:BEEP:GOTO50110
50140 A$=INKEY$:IFA$=""THEN50140 ELSE50130
50150 IFA=0 THEN50110 ELSEIFA=<A1THENLOCATER,C+A-1:PRINT" ";
50160 AN$=LEFT$(AN$,LEN(AN$)-1):A=A-1:IFA<0 THENA=0:GOTO50110 ELSE50110
50170 A=0
50180 IFA$=CHR$(250)ORA$=CHR$(252)THENLOCATER,C:PRINT STRING$(A1," "); ELSELOCATER,C+A:PRINT STRING$(A1-A," ");:IFA$=CHR$(13)ANDAN$=""THENDE$=CHR$(255)
50190 COLOR7,0:LOCATER,C:PRINTAN$+STRING$(A1-LEN(AN$)+1," ");:RETURN
50200 GOSUB50040:S=1:AN$="":DE$="":LOCATER,C:COLOR0,7:PRINT"$";STRING$(A1,254);" ";:LOCATER,C+A1-2:PRINT".";
50210 GOSUB50500:IFINSTR("0123456789",A$)THEN50230 ELSEONINSTR("-"+"."+CHR$(8)+CHR$(13)+CHR$(250),A$)GOTO50250,50210,50200,50270,50260
50220 BEEP:GOTO50210
50230 AN$=AN$+A$:IFLEN(AN$)=1 THENAN$=CHR$(254)+AN$ ELSEIFLEN(AN$)>A1-1 THENAN$=LEFT$(AN$,A1-1) ELSEIFLEN(AN$)=3 ANDLEFT$(AN$,1)=CHR$(254)THENAN$=RIGHT$(AN$,2)
50240 LOCATER,C+A1-LEN(AN$):PRINT LEFT$(AN$,LEN(AN$)-2);".";RIGHT$(AN$,2);:GOTO50210
50250 S=-S:LOCATER,C+A1+1:PRINT"";:IFS=-1 THENPRINT"-";:GOTO50210 ELSEPRINT" ";:GOTO50210
50260 IFA$=CHR$(254)THENLOCATER,C+1:PRINT STRING$(A1,254);" ";:LOCATER,C+A1-2:PRINT".";:GOTO50290 ELSELOCATER,C:PRINT STRING$(A1+2," ");:GOTO50290
50270 IFLEN(AN$)=0 THENDE$=CHR$(255):LOCATER,C:PRINT STRING$(A1+2," ");:GOTO50290 ELSELOCATER,C+1:PRINT STRING$(A1-1-LEN(AN$)," ");:IFLEFT$(AN$,1)=CHR$(254)THENLOCATER,C+A1-1:PRINT"0";:MID$(AN$,1,1)="0
50280 AN$=MID$(AN$,1,LEN(AN$)-2)+"."+RIGHT$(AN$,2):IFS=-1 THENAN$="-"+AN$
50290 GOSUB50020:LOCATER,C:COLOR7,0:PRINT"$";STRING$(A1-LEN(AN$)+1," ")+AN$;:RETURN
50300 GOSUB50040:AN$="":DE$="":A=0:LOCATER,C:PRINTAF$;:GOSUB50350
50310 IFA>=LEN(AF$)THEN50360 ELSEA=INSTR(A+1,AF$,CHR$(254)):LOCATER,C+A-1
50320 GOSUB50500:IFINSTR("1234567890",A$)THENPRINTA$;:AN$=AN$+A$:GOTO50310
50330 ONINSTR(CHR$(8)+CHR$(13)+CHR$(250),A$)GOTO50300,50390,50380
50340 BEEP:GOTO50310
50350 LOCATER,C:COLOR23:PRINT CHR$(254):LOCATER,C:COLOR7:RETURN
50360 GOSUB50500:GOTO50330
50380 A=0:AN$="":LOCATER,C:PRINTAF$;
50390 IFAN$=""ANDA$=CHR$(13)THENDE$=CHR$(255)
50391 GOSUB50020:RETURN
50400 GOSUB50040:S=1:AN$="":DE$="":LOCATER,C-1:COLOR0,7:PRINT" ";STRING$(A1,"#");" ";
50410 GOSUB50500:IFINSTR("0123456789P",A$)<>0 THEN50420 ELSEONINSTR(CHR$(8)+"."+"-"+CHR$(13)+CHR$(250),A$)GOTO50400,50450,50430,50460,50480:BEEP:GOTO50410
50420 AN$=AN$+A$:IFLEN(AN$)>A1THENAN$=LEFT$(AN$,A1):GOTO50410 ELSELOCATER,C+A1-LEN(AN$):PRINTAN$;:GOTO50410
50430 S=-S:LOCATER,C+A1:PRINT"";:IFS=-1 THENPRINT"-"; ELSEPRINT" ";
50440 GOTO50410
50450 IFINSTR(AN$,".")=0 THEN50420 ELSE50410
50460 IFS=-1 THENAN$="-"+AN$
50470 IFAN$=""THEN50480 ELSELOCATER,C-1:COLOR7,0:PRINT" ";STRING$(A1-LEN(AN$)+1," ")+AN$;:GOTO50490
50480 COLOR7,0:IFA$=CHR$(250)THENLOCATER,C-1:PRINT" ";STRING$(A1," ");" "; ELSELOCATER,C-1:PRINT" ";STRING$(A1," ");" ";
50481 IFAN$=""ANDA$=CHR$(13)THENDE$=CHR$(255)
50490 GOSUB50020:RETURN
50500 GOSUB50070
50510 A$=INKEY$:IFA$=""THEN50510 ELSEIFLEN(A$)=2 THENFK%=ASC(RIGHT$(A$,1)):IFFK%=59 THENA$=CHR$(250):GOTO50530 ELSEIFFK%=60 THENA$=CHR$(251):GOTO50530 ELSEIFFK%=61 THENA$=CHR$(252):GOTO50530
50520 IFLEN(A$)=2 THEN50510
50530 RETURN
50800 T1=VAL(RIGHT$(TIME$,2)):T2=(T1+DELAY)MOD60
50801 WHILEABS((T1-T2))>0.01
50802 T1=VAL(RIGHT$(TIME$,2))
50803 WEND:RETURN
52000 BL$=" ":A$="":F9%=VAL(MID$(FX,2,2)):F7%=VAL(MID$(FX,4,2)):F8%=VAL(MID$(FX,6,2)):F7%=(F7%-1)*18+1:F8%=(F8%-1)*18+1:F6%=VAL(MID$(FX,8,2)):F6%=(F6%-1)*18+1
52010 ONINSTR("NCWR",LEFT$(FX,1))GOTO52030,52040,52042,52020
52020 FORF4%=F7%TOF8%STEP18:F3=MID$(F9(F9%),F4%+12,1):IFF3<>"$"THEN52029
52021 A1=VAL(MID$(F9(F9%),F4%+8,2)):R=VAL(MID$(F9(F9%),F4%,2)):C=VAL(MID$(F9(F9%),F4%+2,2))
52022 LOCATER,C:PRINTFH(A1);
52029 NEXT:RETURN
52030 IFF6%<F7%THENRETURN ELSEF9=MID$(F9(F9%),F6%,18):F3=MID$(F9,5,1):A1=VAL(MID$(F9,6,3)):R=VAL(MID$(F9,1,2)):C=VAL(MID$(F9,3,2)):IFF3="F"THENAF$=F2(A1)
52031 LOCATER,C-2:PRINTBL$;:COLOR7,0:LOCATER,C:IFLEFT$(FX,1)<>"C"THEN52034
52032 FE="":LOCATER,C-2:COLOR22:PRINTBL$;:GOSUB800:PRINT"Press <C> to change the field indicated by the ";CHR$(34);"=>";CHR$(34):PRINT"<F1> for Last field, <F2> for Next field, or <E> to End...";:GOSUB50500:COLOR7
52033 IFA$=CHR$(250)ORA$=CHR$(251)THEN52035 ELSEIFA$="E"THENLOCATER,C-2:PRINT" ";:RETURN ELSEIFA$<>"C"THEN52032
52034 GOSUB54000:ONINSTR("A$FN",F3)GOSUB50100,50200,50300,50400:IFLEFT$(FX,1)="C"ANDA$=CHR$(250)THEN52034
52035 LOCATER,C-2:PRINT" ";:IFA$=CHR$(250)THENF6%=F6%-18:GOTO52030 ELSEIFA$=CHR$(251)THEN52038
52037 F1(VAL(MID$(F9,11,2)))=AN$:GOSUB55000:IFFE="X"THENLOCATER,C-2:PRINTBL$;:GOTO52034 ELSEIFFE="E"THENRETURN
52038 F6%=F6%+18
52039 IFF6%>F8%THENA$=CHR$(255):RETURN ELSE52030
52040 FORF4%=F7%TOF8%STEP18:F1(VAL(MID$(F9(F9%),F4%+10,2)))="":NEXT
52041 BL$="=>":GOSUB52030
52042 RETURN
52060 RETURN
53000 N7=0:C7=0:M6=Y
53002 M6=INT(M6/2):IFM6=0 THEN53022
53004 K6=Y-M6:J6=1
53006 I6=J6
53008 L6=I6+M6
53010 C7=C7+1
53012 IFA$(I6)<=A$(L6)GOTO53018
53014 N7=N7+1:SWAPA$(I6),A$(L6):I6=I6-M6
53016 IFI6>=1 GOTO53008
53018 J6=J6+1:IFJ6>K6THEN53002
53020 GOTO53006
53022 RETURN
54000 GOSUB800
54001 ONVAL(MID$(F9,14,2))GOTO54010,54020,54030,54040,54050,54060,54070
54010 PRINT"Please enter the required data or,":GOTO54100
54020 PRINT"Enter a <C> to record a check, <D> for a deposit, or":PRINT" <M> to return to the Transaction Menu...";:RETURN
54030 PRINT"Enter a CODE for this Account or":GOTO54110
54040 PRINT"Enter the name 'FOR THE ACCOUNT OF:' or":GOTO54100
54050 PRINT"Enter the current balance of this account or":GOTO54100
54060 PRINT"Enter the amount spent year-to-date in this account or":GOTO54100
54070 LOCATE23,1:PRINT"Enter the Budget Code for the Account to be assigned":GOTO54120
54090 LOCATE23,1:PRINT"Enter the Record Number or":GOTO54110
54100 PRINT"Press <F1> to change last entry...";:RETURN
54110 PRINT"Press <F1> for the MENU...";:RETURN
54120 PRINT"Press <F1> to change last entry, or ";:COLOR23,0:PRINT"<F3>";:COLOR7:PRINT" to EXIT Budget Code assignment...";:RETURN
55000 FE="":XX=VAL(MID$(F9,9,2)):YY=VAL(MID$(F9,11,2))
55001 ONVAL(MID$(F9,16,2))GOTO55010,55020,55030,55040,55050,55060,55070,55080,55090,55100,55110,55120:RETURN
55010 LSETFH(XX)=F1(YY):RETURN
55020 LSETFH(XX)=MKD$(VAL(F1(YY))):LOCATER,C:PRINT" ";USINGP6$;CVD(FH(XX));:RETURN
55030 IFDE$=CHR$(255)ORINSTR("CDM",F1(YY))=0 THENFE="X":BEEP:RETURN ELSE55010
55040 IFDE$=CHR$(255)THENF1(YY)=T.DAT$:LOCATER,C:PRINT FND1$(F1(YY));:GOTO55010 ELSET1=VAL(LEFT$(F1(YY),2)):T2=VAL(MID$(F1(YY),3,2)):IFT1<1 ORT1>12 ORT2<1 ORT2>31 THENFE="X":BEEP:RETURN
55041 IFF%=1 THEN55045 ELSEIFLEFT$(MO$(T1),3)<>MO$THENGOSUB800:BEEP:PRINT"Are you sure you want to enter ";MO$(T1);" data":PRINT"in the ";MO$;" file (Y/N)?";:B1=R:B2=C:R=24:C=25:GOSUB310:R=B1:C=B2:IFAN$="N"THENFE="X":RETURN
55045 T.DAT$=F1(YY):GOTO55010
55050 IFA$=CHR$(252)THENFE="E":LSETFAC(XX)="****":RETURN ELSECK$=F1(YY):GOSUB40200:IFCODE$<>"V"THENT1=R:T2=C:GOSUB55300:RETURN
55051 LSETFAC(XX)=F1(YY):LSETFAC(XX+1)="****":RETURN
55060 LSETFTX(XX)=F1(YY):RETURN
55070 IFDE$=CHR$(255)THENLSETFAM(XX)=MKD$(A.BAL#) ELSELSETFAM(XX)=MKD$(VAL(F1(YY)))
55071 LOCATER,C:PRINT" ";USINGP6$;CVD(FAM(XX));:A.BAL#=A.BAL#-CVD(FAM(XX)):IFFL<>"C"THENLOCATER,63:PRINT" ";USINGP6$;A.BAL#;
55072 RETURN
55080 IFFL="L"THEN55100 ELSECK$=F1(YY):GOSUB40100:IFCODE$="V"THENGOSUB55210:FE="X":RETURN ELSE55010
55090 IFFL="L"THEN55110 ELSECK$=F1(YY):GOSUB40200:IFCODE$="V"THENGOSUB55210:FE="X":RETURN ELSE55010
55100 CK$=F1(YY):GOSUB40100:IFCODE$<>"V"THENGOSUB55200:FE="X":RETURN ELSE55010
55110 CK$=F1(YY):GOSUB40200:IFCODE$<>"V"THENGOSUB55200:FE="X":RETURN ELSE55010
55120 IFDE$<>CHR$(255)THEN55122
55121 IFP$="P"THENF1(YY)="P":LOCATER,C:PRINT"PR CK "; ELSECK.NO=CK.NO+1:F1(YY)=STR$(CK.NO):LOCATER,C:PRINTF1(YY);
55122 IFINSTR("P",F1(YY))<>0 THENP$="P":F1(YY)="P":LOCATER,C:PRINT"PR CK "; ELSECK.NO=VAL(F1(YY)):P$="
55125 GOTO55010
55200 GOSUB800:PRINT"Account ";F1(YY);" is not a valid account":GOSUB55250:RETURN
55210 GOSUB800:PRINT"This account CODE has already been used":GOSUB55250:RETURN
55250 BEEP:PRINT"Press ";:COLOR23:PRINT"<ENTER>";:COLOR7:PRINT" to continue...";:GOSUB150:RETURN
55300 BEEP:GOSUB800:PRINT"Account ";F1(YY);" is not a valid account":PRINT"Press <A> to assign this code or <ENTER> to re-enter the code...";:GOSUB150:ONINSTR("A"+CHR$(13),A$)GOTO55310,55390:BEEP:GOTO55300
55310 GOSUB800:PRINT"Budget Code:";:R=23:C=14:A1=4:GOSUB50100:IFA$=CHR$(250)THEN55300 ELSECK$=AN$:GOSUB40200:IFCODE$="V"THENGOSUB55210:GOTO55310 ELSELSETFH(20)=AN$
55315 LOCATE23,22:PRINT"Acc. description:";:R=23:C=40:A1=22:GOSUB50100:IFA$=CHR$(250)THEN55320 ELSELSETFH(21)=AN$
55320 LOCATE24,1:PRINT"Budgeted amount:";:R=24:C=22:A1=10:GOSUB50200:IFA$=CHR$(250)THEN55310 ELSELSETFH(22)=MKD$(VAL(AN$))
55340 LSETFH(24)=MKD$(0#):N.TACC=N.TACC+1:T.COD$(N.TACC)=FH(20):PUT3,N.TACC
55390 R=T1:C=T2:A1=4:FE="X":RETURN
57000 ACC$=MO$+Y$+".TRX
57001 CLOSEPF:OPEN"R",PF,DDSK$+ACC$,256:N.TRX=LOF(PF)/256
57010 FIELD PF,1 AS FH(1),4 AS FH(2),5 AS FH(3), 30 AS FH(4),8 AS FH(5),25 AS FH(6),1 AS FH(7),4 AS FH(8)
57020 FORX=0 TO5:FIELD PF,(78+X*16) AS D$,4 AS FAC(X+1),4 AS FTX(X+1),8 AS FAM(X+1):NEXT:RETURN
57100 CLOSEPF:OPEN"R",PF,DDSK$+"BANKAC"+Y$+".MAC",224:N.BACC=LOF(PF)/224
57110 FIELD PF,4 AS FH(10),25 AS FH(11),25 AS FH(12),12 AS FH(13),8 AS FH(14),1 AS FH(15)
57120 FORX=0 TO11:FIELD PF,(75+10*X) AS D$,8 AS BAL$(X+1),1 AS CLR$(X+1),1 AS TRX$(X+1):NEXT:FIELD PF,195 AS D$,8 AS BAL$(13),4 AS CK.N$:RETURN
57200 CLOSEPF:OPEN"R",PF,DDSK$+"BUDACC"+Y$+".MAC",64:N.TACC=LOF(PF)/64
57210 FIELD PF,4 AS FH(20),22 AS FH(21), 8 AS FH(22),8 AS FH(23),8 AS FH(24),1 AS FH(25):RETURN
57300 CLOSEPF:OPEN"R",PF,DDSK$+"AUTOPMT.MAC",192:N.APMT=LOF(PF)/192
57310 FIELD PF,4 AS FH(30),30 AS FH(31),8 AS FH(32),25 AS FH(33),4 AS FH(34),4 AS FH(35),30 AS FH(36),30 AS FH(37),30 AS FH(38),1 AS FH(39):RETURN
57500 CLOSEPF:OPEN"R",PF,DDSK$+"BANKAC"+Y$+".MAC",224
57510 FIELD PF,4 AS F(10),25 AS F(11),25 AS F(12),12 AS F(13),8 AS F(14),1 AS F(15)
57520 FORX=0 TO11:FIELD PF,(75+10*X) AS D$,8 AS BA$(X+1),1 AS CL$(X+1),1 AS TR$(X+1):NEXT:FIELD PF,195 AS D$,8 AS BA$(13),4 AS C.N$:RETURN
57600 CLOSEPF:OPEN"R",PF,DDSK$+"BUDACC"+Y$+".MAC",64
57610 FIELD PF,4 AS F(20),22 AS F(21), 8 AS F(22),8 AS F(23),8 AS F(24):RETURN
58000 IFERR=61 THENCLS:LOCATE12,1:PRINT FNCN$("Your DATA Disk is Full... Consult Your MICRO ACCOUNTING SYSTEM MANUAL.",80):PRINT:PRINT FNCN$("Press <ENTER>",80):GOSUB150:CLOSE:RESUME900
58010 GOSUB800:PRINT"An unexpected ERROR has occured... Basic Error ";ERR;" Line ";ERL:BEEP:PRINT"Press <ENTER> to continue";:GOSUB150:CLOSE:Y$=Y2$:RESUME100
60000 DATAJANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
60010 DATATEN,,,ELEVEN,,ONE,TWELVE,TWENTY,TWO,THIRTEEN,THIRTY,THREE,FOURTEEN,FORTY,FOUR,FIFTEEN,FIFTY,FIVE,SIXTEEN,SIXTY,SIX,SEVENTEEN,SEVENTY,SEVEN,EIGHTEEN,EIGHTY,EIGHT,NINETEEN,NINETY,NINE
MICRO ACCOUNTING SYSTEM
A Multi-purpose Check Register
Accounting System
Written by
Donald R. Ramsey
727 Bunker Hill #70
Houston, Texas 77024
Version 1.2
TABLE OF CONTENTS
Program Overview 1
System Requirements 2
Limitations 2
Program Standards 2
Installing System 3
Program Operation
Main Menu 4
Initializing System 5
File Maintenance 6
Transaction Entry 7
Automatic Payments 8
Individual Entries 9
Handling Cash Entries 9
Transferring Money Between
Budget Accounts 9
Print Checks 7, 9
Reports 10
Checkbook Reconciliation 11
Begin New Year 11
Entering Data in Last Year's File
After Starting a New Year 11
When a Data Disk is Full 12
The User-Supported Concept 13
Modifying the program 14
Copying Program for Other Users 15
Future Enhancements 16
Trouble Shooting 17
Appendix
Invoice
DISCLAIMER
************************************************************************
DONALD R. RAMSEY hereafter called the PROGRAMMER
------------------------------------------------------------------------
This diskette contains programs made available to PERSONS
as a service. In no event will the PROGRAMMER be liable to you
for any damages, including any lost profits, lost savings or
other incidental or consequential damages arising out of the
use of or inability to use such programs, even if the PROGRAMMER
has been advised of the possibility of such damages, or for any
claim by any other party.
************************************************************************
MICRO ACCOUNTING SYSTEM
A Multi-Purpose Check Register
Accounting System
PROGRAM OVERVIEW
If you are like most people, you have only a vague idea
as to where your money is spent each year. Of course, keeping
better records is the solution, but this is usually a big
job that never gets done. However, if only one entry was
required for each transaction and this one entry would make
available a wide variety of reports, almost everyone would take
the time. That is what this program is all about.
This software was written for the small business that can
use just a check-register for it's accounting as well as for all
individuals. Imagine sitting down to write checks and entering
the information into the computer instead of your checkbook.
That's all there is to it. The program will even print checks
that have been addressed for use with window envelopes. But,
that's only the beginning! The standard check register can be
printed with a running balance, a memo report is available, and
also an account distribution summary is yours for the asking.
Probably more significant, especially at tax time, is the
Budget Analysis and Average Month report. This report shows
how much has been expended in each budget account for the current
month and for the year. It also shows the amount that was
budgeted so you can compare it to the actual expenditure and it
computes an average monthly amount for each account.
Ever wonder how much you are spending on a particular item
or what the total cash value of all your bank accounts is?
Simply run the Selected Account Detail or the Bank Account Summary
and you will know in a minute. The Account Detail report searches
the months you specify for all transactions in any account you choose
and the Bank Account Summary lists all accounts and totals the
balances of all bank accounts.
The system is menu driven and well prompted for user ease.
All corrections are very easily accomplished and can be done
at any time (you never have to wait until all the data has been
entered to make corrections). Once you have used this program
for a while, you will wonder how you ever did without it.
Page 2
SYSTEM REQUIREMENTS:
IBM PC, IBM XT, or compatible
64K RAM
1 Disk Drive ( 2 preferred )
Printer
PC-DOS or MS-DOS with BASIC or BASICA
LIMITATIONS:
30 Bank Accounts
200 Budget Accounts
PROGRAM STANDARDS:
The software was designed to be very user friendly. It is
a single program file, so moving from section to section is very
fast since there are no modules to be chained. Data entry is fast
and there are numerous reports to make your end-of-year or tax
accounting almost painless. The software will even print checks
with addresses for use with window envelopes if you wish. And
you certainly can't beat the price.
This manual and the program uses, in it's documentation,
brackets ( < > ) to enclose any letter or KEY that should be
pressed for a given action. For instance, if the letter <P> is
to be pressed, all you need do is press P. It is not necessary
to type the brackets.
***** IMPORTANT *****
The bottom two lines of the screen are reserved for user
prompts. If you have a question as to what to do next, consult
these lines. Also, the <F1> key will usually take you back one
step so you may correct any errors that have been made. This
<F1> key is VERY IMPORTANT. Using it allows immediate correction
of all errors, so remember it!
Number locks are automatically set when needed so the number
key pad can be used for quick entry of numbers. It is not even
necessary to type the decimal point in a dollar entry. Dates are
entered by typing only the numbers, the slashes ( / ) are not
required. To correct typing errors, use the backspace key ( large
arrow by the = sign ) because the arrow keys are inoperative.
Page 3
INSTALLING SYSTEM:
Simply copy MA.BAS to your system disk (a system disk is
a disk you have formatted using the FORMAT [d:]/S command; see
DOS manual. HARD DISK USERS disregard this format procedure) that
contains either BASIC or BASICA. For example, for a 2 disk system,
put the MICRO ACCOUNTING Disk in Drive B and type COPY B:MA.BAS.
To run the program after it has been installed on your
system disk, you must enter BASIC and specify 4 files with a
buffer Size of 256, e.g.,
BASIC MA.BAS/F:4/S:256 or,
BASICA MA.BAS/F:4/S:256
This may, of course, be put in a batch file for easy starting.
This will NOT work unless BASIC or BASICA is on your disk.
To create a Batch File for starting this program do the following:
1. Start your system normally.
2. At the Dos prompt ( e.g. A> ) insert the
Micro Accounting System Disk ( the one you
made with your system and Basic on it ) in the
default drive ( the drive shown by the DOS prompt,
for example A> ) and type
COPY CON:MA.BAT (then you press enter)
BASICA MA.BAS/F:4/S:256 (press enter)
(press the F6 key and the screen will show)
^Z (press enter)
3. You may now start MICRO ACCOUNTING by typing MA at
the DOS prompt.
Page 4
PROGRAM OPERATION:
Starting the program:
With the exception of the first time the program is run,
all that is necessary to begin operation, is the date entry.
If today's date is OK just press <ENTER> and the system will
default to today's date. After a short pause this menu will
be displayed.
MAIN MENU
<T> Transaction Entry
<2> Reconcile Checkbook
<3> Run Alternate Accounts
<4> Begin New Year
<5> End Program
<R> Report Menu
<F> File Maintenance Menu
<D> Print Program Documentation
<T> Transaction Entry: all transactions, both deposits and
checks are entered in this section. Check printing is
also done here.
<2> Reconcile Checkbook: checks are cleared and bank
statement is reconciled.
<3> Run Alternate Accounts: starts the system again so that
another data disk with other bank accounts and budget
codes may be run. Hard disk users may specify a new
path for data here.
<4> Begin New Year: prepare a new data disk for the new year.
<5> End Program: exit to DOS
<R> Report Menu: go to the report section
<F> File Maintenance Menu: add, delete, and make changes to
budget, bank, and auto-payment files
<D> Print Program Documentation: instructions for printing
document.
Page 5
INITIALIZING THE SYSTEM:
Before the program can be run, your bank accounts and budget
accounts must be defined. This is done in the File Maintenance
section. Note: maximum number of characters in bank and budget codes
is 4. You should take some time to decide what budget accounts
you might need before making these entries because the budget
accounts are sorted alphabetically in the report section. As a
suggestion, group all similar codes under the same first letter,
e.g. all household accounts might go under the letter H; HMOR for
household mortgage, HUT for household utilities, etc.(see Appendix)
After the accounts have been entered, you can go to the Report
section and run the Budget Analysis to get a sorted list of the
codes just to make sure you have what you want.
If you are beginning this system after the first of the year
you may enter an amount in the year-to-date column for the amount
already expended.
After both Budget Codes and Bank Codes have been entered,
you can make entries in the Transaction section.
** Note to Hard Disk Users and anyone who will use the system with
one or more sets of alternate Bank and Budget Codes **
Hard disk users may specify a path for their data disk.
This is done at the DOS prompt with the MKDIR or MD Command
(see DOS Manual). Once the directory is created, you may
set a path to your data when specifying your data disk. This
is useful if you need to use the system for other accounts and
this alternate data needs to be on a separate disk.
Example: C:\CRPER\ for check register personal.
Hard disk users will have to answer one additional question
on start-up. Each time the program is started, the current data
disk will be displayed. If this is the data disk and the path
you need, simply press <ENTER>. This protection is added for
safety in assuring that the records you add in a session do go
in the proper files. (To by-pass this feature, modify line
49035 of the program to be a remark line. Add a ' to the
start of the line and save the modified program as MA.BAS).
Floppy disk users may also use the system for alternate
accounts by putting the different data on separate disks.
Page 6
FILE MAINTENANCE:
FILE MAINTENANCE MENU
<1> Bank Account Information
<2> Budget Information
<3> Automatic Payment Accounts
<4> Re-build Account Balances
<5> Change Password or Data Disk
<1> Bank Account Information: assign, delete, change
bank account information.
<2> Budget Information: same as bank accounts. Do not leave
more than one space between words in account description
because part of the description will not be printed
in one of the reports if an extra space is added.
<3> Automatic Payment Accounts: This file is to allow
you to make quick entry of data for any bills that
are paid on a regular basis. The amount and bank from
which the payment is made can be easily changed when
the bill is paid in the transaction section. There is
also space for addresses that may be used to address
checks for use with window envelopes.
<4> Re-build Account Balances: use this section if you
think that some of the accounts may have incorrect
balances. All balances for budget and bank accounts
are re-constructed.
<5> Change Data Disk or Password: if you use a password
it can be changed or if you initially elect not to
use this protection it can be added here.
Page 7
TRANSACTION ENTRY:
TRANSACTION MENU
<1> Individual Entries
<2> Automatic Payments
Upon entering this section you will be given an option
for entering transactions. If you have defined automatic
payment accounts in the File Maintenance section you can use
option <2> of this menu. Otherwise, only individual entries
may be made.
AUTOMATIC PAYMENTS:
This section allows quick and easy data entry for bills
that are paid on a regular basis. To make payments, enter the
month and year of transactions as requested. The records that
may be paid are then displayed. Press <P> to pay a bill, then
select the record to pay. The selection is then displayed and
you may pay it as is, change the bank or amount and then pay,
or you may skip the item entirely.
If you elect to pay this selection, you then will be asked
for the date. Pressing <ENTER> will default this to the last
date entered or the system date if no date has been used. Next
the check number will be required and again pressing <ENTER>
will default this item to the last check # + 1 or you may enter
any check number.
The last item is a request to print a check. If you do NOT
wish to print a check, press <ENTER>, otherwise, if you do wish
to have the check printed, the printer must be turned on and
the forms properly positioned. Once this last item is complete
the check will be filed on disk and all accounts up-dated.
Check forms may be obtained from:
NEBS COMPUTER FORMS
12 SOUTH STREET
TOWNSEND, MASS. 01469
1-800-325-1117
Product 9020 or 9024
Page 8
INDIVIDUAL ENTRIES:
Checks or deposits in any bank account are made in this
section. You must select a Bank code and the month and year
for transactions before entering data. Once these items are
selected they remain in effect until you return to the
Transaction Menu. *** WARNING *** Entries in this section are
NOT sorted by date. Also, if you have selected January as the
month for transactions and entered checks that are dated in
February, these February checks will be filed in the January file.
Now, either checks or deposits may be selected. The date
may be entered from the key pad or you may press <ENTER> to
default to the last date entered. Check number is then entered
or default to the last check #+1 by pressing <ENTER>.
** NOTE:
Another option for the check # is to enter the letter P. Entering
a <P> will flag this check for later printing.
Once the check portion of this entry has been made, budget
accounts are then assigned. You may assign as many as six budget
accounts or you can exit this portion of the transaction by pressing
the <F3> key when entering the Budget code. To assign a Budget code
enter any previously assigned code. If the code you chose has not
been assigned, there will be a BEEP and you will be given the
opportunity to either assign the code or change your entry.
The tax code is then requested. This may be assigned or you
can press <ENTER> for no assignment. These codes are not error
checked and you have to keep up with your assignments personally
(this is for future expansion).
To assign the amount, you have two options. You may press
<ENTER> and the entire amount of the check will be assigned to
this budget code or you may enter a portion of the check amount.
If this second option is taken, the remaining amount will be
displayed and you will be allowed to assign the remainder to
other budget codes ( max 6 ).
After all entries for this transaction are made, there
will be a last chance to make corrections ( did you remember
that corrections could be made immediately during data entry
by pressing the <F1> key ). Press <C> to make corrections and
then use the <F1> and <F2> keys, as prompted on the bottom two
lines, to scroll through the entries. To change an entry that
the => selects, press <C> then make the change. You can exit
changes at any time by pressing the <E> key.
Page 9
*** WARNING *** Once this last chance to make a change
has passed, you will no longer be able to change this
transaction. The reason for this is to give a good audit
trail. You may, however, correct the entry by making another
transaction to offset the error (Payee/Payor could be a note
to yourself stating the change).
If you specified a P for the check number, you will now print
the check. Addresses can also be added at this time.
Check forms may be obtained from:
NEBS COMPUTER FORMS, 12 SOUTH STREET, TOWNSEND, MASS. 01469
1-800-325-1117
Product 9020 or 9024
HANDLING CASH ENTRIES:
Cash entries may be handled in one of two ways. You may
assign a bank account called CASH or you may make a memo
entry in any bank account.
If you assign the bank account `CASH', deposits and
withdrawals (checks) are handled as any other bank account.
However, this bank balance will show in the Bank Account
Summary Report (see Report Section).
Maybe a better way would be to make a MEMO entry in any
bank account that is assigned. To do this, write a check as
usual but for the amount enter 0.00 or just press <ENTER>.
This 0.00 amount will not affect the bank balance and then the
entry can be assigned to any budget account as a cash paid
item.
TRANSFERRING MONEY BETWEEN BUDGET ACCOUNTS:
If you made a mistake by entering an incorrect budget
code or you want to transfer money from one budget code
to another, then follow this procedure.
1. Make an entry in the Individual Transaction Section
specifying $0.00 for the check amount. You might also
make a note in the Payee/Payor entry as to what this
transaction is accomplishing.
2. As the first budget code, you assign the code that
you want the money transferred from ( out of ). For
the amount, assign a negative of the amount that
you want transferred from the account (e.g. -154.95 ).
3. The second budget code is the code of the account you
want the money to go into. To assign the amount, you
need only press enter.
4. This amount has now been subtracted from the first
Budget code and added to the second Budget code.
Page 10
REPORTS:
REPORT MENU
<1> List Transaction Register
<2> Budget Analysis and Average Month
<3> Memo Report
<4> Bank Account Summary
<5> Account Distribution Report (printer only)
<6> Selected Account Detail (printer only)
<7> Selected Tax Code Detail (printer only)
<1> List Transaction Register: list the register of the bank
of your choice with running balances and totals of all
deposits and checks. An * by the check number
indicates that this check has cleared the Bank and
has been reconciled in your check register.
<2> Budget Analysis and Average Month: A sorted list of all
your budget accounts with a description of each, the
amount that was budgeted in this category, what was spent
in the month of the report, the average amount spent in
a month, and the year-to-date amount.
<3> Memo Report: list of memos that were made in transaction
entry. An * by the amount in this report indicates
that this transaction was a deposit.
<4> Bank Account Summary: list all bank accounts and their
current balance and give a total of all the balances.
<5> Account Distribution Report: report to show how each check
was distributed among the different budget codes.
<6> Selected Account Detail: list all entries for any budget
code you select over any period of time you choose.
<7> Selected Tax Code Detail: same as <6> except for tax codes.
Page 11
CHECKBOOK RECONCILIATION:
Checks can be reconciled by checking off items just as
you might if you were using a checkbook. Just read the last two
lines of the screen for help.
Once the checks are cleared, the checkbook may be
reconciled. The report to the screen does not give the detail
that is available in the printed report. The printout contains
a listing of all items that have not been cleared that is not
available in the screen report.
BEGIN NEW YEAR:
This procedure is used to prepare a new data disk for the
new year.
** IMPORTANT ** USE ONLY A BACKUP DATA DISK FOR THIS PROCEDURE!
Once the backup data disk has been made, put it in the
drive normally used for data and follow the screen instructions.
All transactions for last year are erased from the new
data disk, all budget code year-to-date balances are set to
zero, and all bank balances are set to last year's ending
balance.
ENTERING DATA IN LAST YEAR'S FILE
AFTER BEGINNING A NEW YEAR :
If you enter data in the previous year after using this
procedure, this year's data will not be updated properly. If
you are using a floppy disk system, you should make an entry
in the current year to bring the current balance up-to-date.
If you are using a Hard disk system, you can run the Re-Build
Account Balances of the File Maintenance Menu and the current
year's balance will be up-dated.
Page 12
WHEN A DATA DISK IS FULL:
Most people should be able to keep an entire year of data
on a single disk. However, should you run out of space, follow
these steps:
1. Return to DOS by the End Program Option.
2. Format a new data disk (see DOS manual)
3. COPY mmmyy.TRX to the new data disk.
mmm = the month in which you were entering data
when the disk became full (e.g. JAN)
yy = the year in which you are working ( e.g. 84)
4. DEL mmmyy.TRX on the FULL data disk.
5. Use the new data disk and re-run the program.
6. Re-enter the transaction on which the disk became full.
Example:
If you were entering data in November 1985 and you got a
`DISK FULL' error message, you would ( assuming a 2 drive
system ) return to DOS by the End Program option of the
Main Menu, format a new data disk, and put the new data
disk in Drive B and the full Data disk in Drive A. Then
type COPY NOV85.TRX B:. Once the copy was complete,
type DEL NOV85.TRX.
Replace the full data disk with the MICRO ACCOUNTING Program
Disk and type MA ( MA.BAT if you prefer ).
Page 13
=================== User-Supported Software ===================
If you have received this program from another
user and find it of value, your contribution
will be appreciated ( $35.00 suggested ).
______________________
Donald R. Ramsey
727 Bunker Hill #70
Houston, Texas 77024
_______________________
Regardless of whether you make a contribution, you are
encouraged to copy and distribute this program.
===============================================================
The user-supported concept:
Anyone may request a copy of a user-supported program by
sending a blank, formatted disk to the program author together
with an addressed, postage-paid return mailer. A copy of the
program, with documentation, will be sent by return mail on
user's disk.
The program carries a notice suggesting a contribution for
the software. Making a contribution is voluntary on the part of
the user.
Regardless of whether a contribution is made, the user is
is encouraged to copy the program for trial use by others
on a private, non-commercial basis. Payment for use is
discretionary on the part or each subsequent user.
Page 14
MODIFYING THE PROGRAM
I have made every effort to supply a program that is
free of bugs and will provide the user with an easy to use,
fast operating system. However, many people may feel that
this version of the program could be modified to better meet
their needs. I fully encourage you to make any modifications
that you feel necessary.
** Please do not distribute a modified program to
** other users. The reason for this is if people
** have problems with the program, they contact me.
** If the program is modified, I do not know what
** they have and may not be able to help.
If you do come up with useful modifications, please
keep them in a merge file that can be incorporated into the
system at the user's option.
I also encourage you to contact me regarding any problems,
suggestions, or modifications to the program. To facilitate
the modification process, on request, I will supply a commented
version of the program. Also included is a listing of all
major variables, file structures, and comments on the major
routines. This disk is available only to REGISTERED OWNERS and
I do request a $10.00 contribution.
As new releases of the Program become available, there
will be a file on the disk named MACHANGE.DOC that details the
changes that were made to each revision.
TO ADD A CHECK NUMBER TO THE CHECK FORM:
1. Load the program as usual.
2. Press the Ctrl & Break key together until the OK prompt
appears. This is the Basic prompt and you are now in the
Basic Editor.
3. Add line 10385 by typing
10385 LPRINT TAB(60)"Check No. ";CK.NO : LPRINT
then press <ENTER>
4. Edit line 10370 by typing
EDIT 10370. Then change the line by using the arrows and
the number keys to read:
10370 FOR Y=1 TO 12:LPRINT" ":NEXT then press <ENTER>
5. If the check number is not where you desire, adjust lines
10370 and 10385 by changing the TAB setting and number of
LPRINTs in line 10370 as desired.
6. Save the program by typing SAVE"A:MA.BAS"
and pressing <ENTER>
Page 15
COPYING THE PROGRAM FOR OTHER USERS:
The following files must be on the new user's disk:
MA.BAS
MA.DOC
MADOC.BAT
MACOPY.BAT
MACOPY.BAT is a batch file for copying the required
files to a user's disk. It assumes a 2 drive system with
Drive A as the source disk.
EXAMPLE USE OF MACOPY.BAT:
1. Put Original MICRO ACCOUNTING disk in Drive A
2. Put New user's Formatted System disk in drive B
(User's disk should contain BASIC or BASICA)
3. Type MACOPY.BAT and press <ENTER>.
4. The required files will be copied to Drive B.
Page 16
FUTURE ENHANCEMENTS AND UPDATE POLICY:
This program is distributed under the user-supported
concept and, as such, will only be improved if you, the user,
make suggestions as to improvements and enhancements that you
would like to see. LET ME HEAR FROM YOU. If you have had
problems that you feel should be added to the Trouble Shooting
Section of this Manual, then let me know. Also, I would like
to hear of any unusual uses that you may have discovered.
Provided the Users do support this program, this will apply.
Any time there are revisions or up-dates to the program
I will notify all Registered Owners. They may then obtain a
copy of the new disk for a $10.00 fee. This fee is to cover the
cost of the disk as well as mailing. If you are NOT a Registered
owner then you will have to get the update from a friend.
I might also mention that since I have spent a great
amount of time writing the program, I hope to benefit from
the contributions of the Users. If you do not contribute
to a Useful user-supported program, the supply of improving
public domain programs will start to diminish. Help make
this experiment a success and send a donation.
Page 17
TROUBLE SHOOTING
PROBLEM : While using the system there is an error in a line in the
57000s.
SOLUTION: You have probably entered BASIC incorrectly. Exit the
program by the End Program option and type the following:
BASICA MA/F:4/S:256 or
BASIC MA/F:4/S:256.
You may wish to create a Batch file to handle the above
DOS command automatically. To create a Batch file called
MA.BAT do the following:
1. At the A> prompt type
COPY CON:MA.BAT and press <ENTER>
2. type
BASICA MA/F:4/S:256 and press <ENTER>
3. Press the <F6> key and press <ENTER>
The next time you wish to run the Micro Accounting
Program all you need do at the A> prompt is to
type MA and the program will automatically load and
start to run.
PROBLEM : You have entered test data to test the system and are
now ready to set up a system for actual use. On trying
to enter new Bank or Budget codes, the system will not
allow your codes.
SOLUTION: Return to the A> prompt and type
DEL *.MAC then press <ENTER>
DEL B:*.MAC then press <ENTER>
This will delete all the old test files that you were
using when you were testing the system. You should also
put a newly formatted disk in your data drive.
PROBLEM: After entering Bank and Budget data, System continues to
display message that System has not been initialized.
SOLUTION: The program is not finding your data on the data drive.
1. Put the correct Data Disk in the data drive.
2. If Data Disk is correct then the program has lost the
Drive for the data. Go to the File Maintenance Section
and change the Data Disk. This will redefine the Drive
for the program.
APPENDIX
SAMPLE BUDGET CODE:
Code Description
==== ===========
AEX1 Auto- car 1 expense
AEX2 Auto- car 2 expense
AGAS Auto- gas
APMT Auto- payments
AZ
BCOM Business- computer
BENT Business- entertaining
BSUP Business- supplies
BTEL Business- telephone
BZ
CASH Pocket cash
CLTH Clothes
CONT Contributions
DUMP Catch all category
FUN Hobbies & entertainment
GIFT Gifts
H
HADU Home- association dues
HEL Home- electric bill
HFUR Home- furnishings
HINS Home- insurance
HMOR Home- mortgage
HTEL Home- telephone
HWAT Home- water
HZ
IHUS Income- husband
IWIF Income- wife
IDIV Income- dividends
IINT Income- interest
IMIS Income- miscellaneous
IZ
MAG Magazines
MAIL Stamps & postage
MED Medical
TAX Taxes
UNDU Union dues
XFER Transfer $ acc to acc
SAMPLE BANK CODE:
CK__ Bank checking account
CKCU Checking account credit union
S___ Saving account
INVOICE
===========
Purchased From:
Donald R. Ramsey
727 Bunker Hill #70
Houston, Texas 77024
==================================================================
Item | Description | Qty | Price ea | TOTAL
==================================================================
MICRO | Check Register Accounting | | |
ACCOUNTING | Software for the IBM PC | | $35.00 |
| | | |
| | | |
| | | |
| | | |
COPIES | Copies of above software to | | $20.00 |
| to be used at other | | |
| locations. | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
==================================================================
TOTAL DUE:
==================================================================
Retain this copy for your records.
This disk copy was originally provided by "The Public Library",
the software library of the Houston Area League of PC Users.
Programs are available from the Public Library at $2 per disk
on user-provided disks. To get a listing of the disks in the
Public Library, send a self-addressed, stamped envelope to
Nelson Ford, P.O.Box 61565, Houston, TX 77208.
MAILIST
by
Software Studios, Inc.
8516 Sugarbush Court
Annandale, Virginia 22003
(703) 978-2339
MAILIST
Index
System Overview.......................3
Quick Rules...........................4
Entering Data.........................5
Printing Labels.......................6
Printing Envelopes....................6
Printing Repetitive Stickers..........7
Displaying Records....................7
Searching For A Record................8
To Alter Or Delete A Record...........9
To Write A Letter....................10
To Print Letters.....................12
Sort/Select Records..................13
Users Log............................14
Telephone Directory..................14
Sign Off And Copy Out................15
-3-
MAILIST
System Overview
MAILIST is a mailing list maintenance program that has the
following capabilities:
1) Mail label generation
2) Repetitive letter writing
3) Envelope addressing
4) Selection on four fields
5) Sort on two fields
6) Select on expiration date
7) Print repetitive stickers
8) Print telephone directory
MAILIST is ideal for databases of 200 or fewer records. Files
are stored on disk and read into an array in RAM at system
start-up. This RAM-based array permits much faster access to
data when adding, deleting or modifying records. Upon exiting
the system, the updated file is copied to disk, thus
preserving all additions, deletions and alterations.
MAILIST is menu driven for maximum user-efficiency and
simplicity of operation. There are no codes to memorize and
operation is as easy as choosing the proper option.
For your ease in adapting the program, MAILIST source code is
provided in BASICA. For faster execution and to make room for
more records, it is recommended that the BASIC program be
compiled once adapted.
MAILIST is not copy protected, but it is copyrighted property.
Therefore, it is illegal to sell or distribute unauthorized
copies of the program.
WARNING: Built into the program are certain anti-copying
sub-programs that will cause the program to self-destruct
if any attempt is made to alter the basic system.
-4-
QUICK RULES
MAILIST is simple to operate and should be self-explanatory.
We have provided an option-by-option description below for the
use of those more methodical in their approach. In general,
here are the fast rules:
1) Always exit the program from the main menu
using the "E" option. The program does a
copy out of all changes, additions and deletions
upon exiting and only then are they permanent.
2) Use care in making modifications to the program.
Do not attempt to defeat the Copyright.
Intentional booby traps have been inserted to
prevent unauthorized use.
3) In editing mode, cursor control keys should be
regarded as disabled. Only the back-space-erase
key has any cursor control.
4) Letters and sort/selection files stored by the
system should be regarded as temporary. They are
overwritten by the next file to be stored.
5) MAILIST is a powerful, feature chocked, little
system that can significantly ease the burden
of small offices and businesses. Please enjoy!
-5-
ENTERING DATA
To enter data, option "1" on the Main Menu will display an
information template for data entry. Data is entered simply by
typing the information in the appropriate field and pressing
"Enter." To skip a data field, press "Enter."
Data can be of any length, even beyond the bounds of the
template. Mis-typed data can be corrected within a field by
using the back-space-erase key and re-entering the correct
data. If an error is detected after the field is entered, it
can be edited by: 1) responding to the prompt "Is The Above
Correct?" with an "N"--in which case, all data is erased and
the template is blank; or, 2) enter the remaining data and
call the record back from the main menu for editing using the
<A>lter option.
Record numbers are automatically assigned by the system and
cannot be changed by the user.
There are four select fields that may be used alone or in
combination to distinguish between sub-lists. "Record Type" is
the first select field. This is similar to a list code that
can be increasingly refined by other select fields. Most users
will require only the Record Type to distinguish among their
various lists. Record Type can consist of code, alpha or
numeric, of any length. It is recommended that the code be
kept short to minimize storage usage.
Other select fields are "List Category", "Selections" and
"Participation Code". Again, these may be alpha, numeric, or a
combination and may be of any length.
"Expiration Date" is also a selection field, but it is
designed to be selected by providing bracket dates between
which the expiration date must fall. Data in the Expiration
Date field must be entered as MM-DD-YY, or MM/DD/YY--numerics
only, except for the dash or slash seperating the dates.
The "Salutation" field is used to provide for the familiar
form of address in personalized letters. While a letter may be
addressed to "Mr. William Rogers, Jr." the salutation on the
letter can read "Dear Bill:" Similarly, where one wants to be
more formal, the salutation can be input as "Mr. Rogers" to
have an opening as "Dear Mr. Rogers:" An added feature of the
Salutation is that when searching for the record by
individual's name, you can search for either "William
Rogers" or "Bill Rogers." Nice!
-6-
PRINTING LABELS
To print mailing labels, use option "2" on the main menu.
You will then be prompted to choose between printing labels,
envelopes or repeating stickers (labels with the same text).
If you wish to print a sub-set of the entire mailing list, you
must first select a file by using the Select/Sort option (4)
on the main menu. You will be prompted to Print All Records or
to Print Selected Records.
TO PREPARE PRINTER FOR LABELS, insert one-up labels aligned
with the first print position, first print line, insure that
printer is turned on, and strike any key when ready. A label
print run can be aborted by turning off the printer.
PRINTING ENVELOPES
To print envelopes, choose the Print Labels option (2) at the
main menu.
You will then be prompted to choose between printing labels,
envelopes or repeating stickers (labels with the same text).
If you wish to address envelopes from a sub-set of the entire
mailing list, you must first select a file by using the
Select/Sort option (4) on the main menu. You will be prompted
if you wish to print envelopes from a pre-selected file or to
prinnt envelopes from the entire database.
TO PREPARE PRINTER FOR ENVELOPES, insert an envelope at a
position where the first line to be printed is to appear.
Printing will start at column 40.
PRINTING WILL AUTOMATICALLY HALT BETWEEN ENVELOPES to allow
for insertion of the next envelope. Strike any key when ready
to print.
-7-
PRINTING REPETITIVE STICKERS
Repetitive stickers are labels with the same text, repeated a
specified number of times. They are useful for making return
address labels, multiple copies of floppy disk labels, or
simply to make any pressure sensitive label with text.
To print repetitive stickers, choose Print Labels option (2)
from main menu. You will then be prompted to Print Labels,
Print Envelopes, or Print Repetitive Stickers.
A five-line template for up to 40 characters will be displayed
for insertion of text. Text can be any length, however, that
will fit on a label. Text may be alpha, numeric or any
combination. Errors may be corrected prior to entering the
data by using the back-space-erase key and reentering correct
text. If an error is detected after entering, simply enter
zero when prompted for number of stickers and begin again.
You will be prompted for the number of repetitive stickers you
wish. Entering zero will return to main menu.
TO PREPARE FOR PRINTING REPETITIVE STICKERS, insert one-up
labels positioned at the first print line, first print column
and insure printer is on. Strike any key when ready. To
abort a print run, turn printer off.
DISPLAYING RECORDS
A preview capability permits you to scan a label file before
printing, or to scan the entire database.
To display a file, choose the Display File (3) option on the
main menu. You will be prompted to choose between Display All
Records and Display A Sorted or Selected File.
Labels will be displayed in screens of eight records.
Contained on the screen record will be the Record Number, the
Record Type, and other Selection information. These will NOT
appear on the printed label.
Press "R" to return to the main menu.
-8-
SEARCHING FOR A RECORD
To recall a record individually, use the Search/Alter/Delete
option (4) on the main menu.
You will be prompted if you wish to access the record by
Number, Name, or Company Name.
TO SEARCH BY NUMBER, enter the Record Number at the prompt. If
no record exists by that number, the system will respond
"Number Not Found" and you may re-enter number. Enter zero to
return to main menu.
TO SEARCH BY NAME, enter the Last Name at the prompt, then the
First Name at the next prompt. Enter Name as exactly as
possible. If no name exists, the system will respond "Name Not
Found" and you may re-enter another name. Press enter to
return to main menu.
In searching by Name, the system uses the first four
characters of the First Name OR the first four characters of
the Salutation, plus the first four characters of the Last
Name. Thus, "William R. Rogers, Jr." may be accessed by "Bill
Rogers" OR "William Rogers" OR "Will Rogers" OR "William R.
Rogers, Jr."
TO SEARCH BY COMPANY NAME, the company name must be entered
exactly as entered into the system, including "Co.", "Inc."
and the punctuation must be the same. If no match is found
the system will respond "Name Not Found" and you may try
again. Press enter to return to main menu.
-9-
TO ALTER OR DELETE A RECORD
Follow the procedure under SEARCHING FOR A RECORD to display
the correct record.
TO DELETE the record, enter "D". The record will remain in
the system until the records are copied out, at which time all
records except those marked for deletion will be copied out.
Records marked for deletion will have a "D" written in the
area for Zip Code. It may be changed at any time prior to
copying out.
TO ALTER A RECORD, press "A". The cursor will be positioned
at the first field (First Name). If any changes are to be
made, type in the changes. If no changes are to be made, press
enter to access the next field. If a record is changed, only
that text appearing on the left side of the cursor will be
entered. Altered text will appear in highlight. If an error
is detected prior to pressing enter, use the back-space-erase
key to delete the error and re-enter the information. If an
error is detected after enter has been pressed, re-cycle
through the Alter procedure.
-10-
TO WRITE A LETTER
From the main menu, select the Write A Letter option (5).
Write-A-Letter is a convenient way to address the same
correspondence to everyone in your database or to a selected
group drawn from the total list.
TO SELECT A SUBSET OF THE TOTAL DATABASE, see section on
SELECTING AND SORTING.
TO WRITE THE BODY OF THE LETTER, select the Write The Form
Letter option (2) from the Write A Letter menu. You will be
prompted, line by line, for up to 45 lines of text. Each line
can contain up to 78 characters, alpha or numeric. Typing
errors may be corrected by using the back-space-erase key and
re-entering the correct text. Errors detected after enter has
been pressed can only be corrected by restarting the letter
writing procedure.
All numerals and characters are valid EXCEPT DOUBLE QUOTATION
MARKS ("). A double quotation mark delimits the print and
results will be garbled.
Format the text, line for line, as you would have it appear in
the body of the letter. The Date, Name, Address, City, State,
Zip Code, AND SALUTATION will be added automatically by the
label program when it merges with the letter. Thus, "Dear Mr.
Smith:" will draw "Mr. Smith" from the Salutation Field from
the database. If no information has been added to the
Salutation Field, "Dear Sirs:" will appear.
To end the body of the text, enter !! on the next blank line.
This will not appear in the text of the letter.
-11-
Once completed, the text of the letter is written to disk
under a temporary file "LTR." This file is temporary in the
respect that it is overwritten when the next form letter is
filed. If you wish to preserve a letter, copy it to another
disk after exiting the system and copy it back to the program
disk when you wish to again use it.
TO RESET FORMAT OF THE LETTER, that is, to alter the Date,
Name, Address, City, State, Zip Code and Salutation, select
the Set Format option (3) from the Write A Letter menu. This
option will exit into the appropriate place within the
program. Some programming knowledge of BASICA is required to
make modifications. For those brave enough to tackle this job,
the following are the parameters of the variable information
you will require:
S=Record Number
A$=Title
B$=First Name and Initial
C$=Last Name
D$=Company Name
F$=Street Address
H$=City, State
J=Zip Code
K$=Record Type
DATE$=Date
P$=Salutation
L$=List Category
M$=Selection
N$=Expiration Date
O$=Participation Code
-12-
TO PRINT LETTERS
To print letters, select the Print Letters option (5) on the
Write A Letter menu.
You will be prompted to choose between single sheets and
continuous forms. Specifying single sheets will make the
printer stop between letters until additional letterhead
is loaded and you strike any key.
You will be prompted for the number of columns to leave blank
as the left-hand margin. A letter with print beginning in
column 10 is recommended.
The system merges two temporary disk files, "PAD" containing a
subset of names and addresses, and "LTR" containing the text
of the letter. THE SYSTEM ASSUMES THAT A SUBSET OF THE
DATABASE IS BEING USED. To send a letter to the entire
database, select all records using the procedures in the
SORT/SELECT section.
TO SET UP PRINTER FOR LETTERS, position the letterhead at the
first line on which the date is to appear. Spacing is as
follows:
DATE
ONE SPACE
NAME, TITLE
COMPANY
ADDRESS
CITY, STATE, ZIP
ONE SPACE
SALUTATION
ONE SPACE
TEXT OF LETTER
(Up to 45 Lines)
-13-
SORT/SELECT RECORDS
To Sort or Select Records use the Select/Sort option (6) from
the main menu.
From the Select Records/Sort Records memu, you may sort on Zip
Code (in ascending order). You may also sort on Record Number
(also in ascending order). Sorting and storage of the sorted
file are automatic and require no response. The system will
keep you informed of what actions are taking place and also
advise you of the approximate time involved. After sorting,
you may want to display the sorted file to insure it is what
you want before printing.
SELECTING RECORDS, using the Select Records option (1) from
the Select/Sort menu, displays a selection template. This is
best explained by saying to oneself "I want only
______and_____and_____and ______; with characteristics of
____and _____and_____ and ______. A selection can be made for
each selection field and only those records meeting those
requirements will be selected. [In the first field, Record
Type, an "X" should be entered in blank fields, otherwise you
will receive any records with a blank Record Type.] Care
should be used not to prohibitively restrict the selection to
the point of no records that can meet the description.
Expiration dates should be expressed as MM-DD-YY, or
MM/DD/YY, with two figures separated by a dash or a slash.
Thus, January 1, 1984 would be 01-01-84.
Expiration dates should be bracketed. That is, if one wants
all expirations for the first week in December, ask for
expirations between 12-01-85 and 12-07-85 (Expirations that
occur on the First and Seventh will be included.) Also
remember, your database knows nothing about weekends, so be
sure to include these dates in your brackets to insure all
expirations are covered.
-14-
Any selection field not to be used may be skipped over by
pressing enter.
If an error is detected, you may begin again once the
selection template has been indexed through. You will be
prompted "Is The Above What You Want?" By responding "N", the
template will be reset. By responding "Y" the selection
process will begin.
Selected records are automatically copied to a temporary file
on disk called "PAD". This file will reside on disk until
another selection is made, overwriting the file. No further
response is required to select records. You will automatically
be returned to the main menu.
USERS LOG
A disk file of system usage is kept on disk listing the User's
Logon, Date and Time. This information may be useful for
tracking usage or data utilization.
TO PRINT THE USERS LOG, choose the Select/Sort option (6) from
the main menu and the Print Users Log option (3) from the
ensuing menu.
This file, "USER.LOG", should be deleted periodically from DOS
level if disk storage space becomes a factor.
TELEPHONE DIRECTORY
A convenient Telephone Directory can be generated from the
database by choosing the Print Labels option (2) on the main
menu.
An alphabetical listing of Last Name, First Name, Telephone
Number will be generated from data available in the database
and automatically printed on the printer.
-15-
SIGN OFF AND COPY OUT
IT IS IMPORTANT TO REMEMBER TO EXIT THE PROGRAM BY PRESSING
"E" FROM THE MAIN MENU. No data is permanently stored in the
system until it is copied to disk at sign off. To simply turn
off the computer or to interrupt the program with
Control-Break will cause the loss of any additions, changes or
deletions. A fail-safe subprogram has been installed to alert
you should an error crash the program and your changes and
additions are lost. In such a case, only the data input since
Logon has been lost (your original files are intact) and to
recover you would re-start the system and re-input additions,
changes and deletions.
Of course, this can also be used constructively, where the
additions, changes and deletions were to be used only
temporarily and one wants to restore to the original files.
Then, one may simply switch the computer off or use the
Control-Break interrupt.
Neither the author of this program nor Software Studios, Inc.
warrant this program to be free from defect, error or
omission. No damages or liability, derived or consequential,
from the use of or reliance on this program or the data
generated therefrom is assumed and is expressly disclaimed.
Software Studio's sole liability consists of the replacement
of defective programs, excepting those programs that it deems
to have been modified or that are lost due to mishandeling or
attempts to defeat the copyright protection.
(c) 1984, Wade B. Dowdle, Software Studios, Inc.
This program is the property of Software Studios, Inc.,
Annandale, Virginia 22003. It is illegal to copy for
distribution, loan or temporary usage, this program, its
format, instructions, calculations or instructional materials.
This disk copy was originally provided by "The Public Library",
the software library of the Houston Area League of PC Users.
Programs are available from the Public Library at $2 per disk
on user-provided disks. To get a listing of the disks in the
Public Library, send a self-addressed, stamped envelope to
Nelson Ford, P.O.Box 61565, Houston, TX 77208.
10 '(C) Copyright M. Berry and W. Dwinell 1982, 1983
99 '------------------------------INITILIZE------------------------------------
100 'KEY OFF:FOR L=1 TO 10:KEY L,"":NEXT L
101 LOCATE ,,0:KEY OFF:GOSUB 20000:CR$=CHR$(13):ESC$=CHR$(27)
102 CLS:ON ERROR GOTO 10000
103 OF=1:IPC=8:PT=1:LOCATE 5,15:PRINT"Enter the File Name you wish to use:":LOCATE 5,52:GOSUB 15150:SWAP RAN$,IP$:IF RAN$=ESC$ THEN RAN$=""
104 IF LEN(RAN$)<>0 THEN GOTO 108 ELSE LOCATE 23,1:BEEP:PRINT"You did not enter a file name. Do you wish to exit program (Y/N)?":LOCATE 23,67:IPC=1:GOSUB 15150:IF IP$="y" THEN IP$="Y"
105 IF IP$="Y" THEN 7020 ELSE LOCATE 23,1:PRINT STRING$(68," "):GOTO 103
106 '
108 RAN$="B:"+RAN$
110 FOR L=1 TO 10:KEY L,"":NEXT
120 WIDTH 80
125 C$=SPACE$(15):S$=SPACE$(2):Z$=SPACE$(5):PH$=SPACE$(12):ST$=SPACE$(20):N1$=SPACE$(10):N2$=SPACE$(15)
127 COMMON N,RAN$,IN$,NBR$,S,CR$,ESC$
140 N=0:DIM I$(1000):DIM I1$(1000):DEFINT A-Z' MAXIUM NBR OF RECORDS
160 ON ERROR GOTO 10000
280 IN$=RAN$+".IDX"
285 NBR$=RAN$+".CTR"
300 OPEN "i",#3,NBR$
360 INPUT #3,N
365 CLOSE 3
410 OPEN "R",#2,RAN$,79
420 FIELD 2, 15 AS CF$, 2 AS SF$, 5 AS ZF$, 12 AS PHF$, 20 AS STF$, 10 AS N1F$, 15 AS N2F$
500 ' ------------------------ MAIN MENU ROUTINE ------------------------------
520 CLS:I=0:MN=0:KEY 9,")":GOSUB 11300
540 LOCATE 5,22:COLOR 15,0:PRINT"THE FOLLOWING OPTIONS ARE AVAILABLE":COLOR 7,0
560 LOCATE 8,32:PRINT"1. Add to file"
580 LOCATE 9,32:PRINT"2. Sort file"
600 LOCATE 10,32:PRINT"3. Display file"
620 LOCATE 11,32:PRINT"4. Correct file"
640 LOCATE 12,32:PRINT"5. Print file"
660 LOCATE 13,32:PRINT"6. Delete record"
665 LOCATE 14,32:PRINT"7. Display last record number"
670 LOCATE 15,32:PRINT"8. Automatic phone dialer"
672 LOCATE 25,1:COLOR 15,0:PRINT"F9 ";:COLOR 0,7:PRINT" TO END PROGRAM ";:LOCATE 25,50:COLOR 15,0:PRINT"Esc ";:COLOR 0,7:PRINT" RETURN TO FILE SELECTION ";:COLOR 7,0
682 LOCATE ,,0:LOCATE 19,22:PRINT"Type the number of your choice:";:IPC=1:PT=0:OF=1:GOSUB 15150:SWAP IP$,I$:IF I$="" THEN 682 ELSE IF I$=")" THEN 7020 ELSE IF I$=ESC$ THEN CLOSE 2:ERASE I$:ERASE I1$:GOTO 102
683 IF VAL(I$)=0 THEN GOTO 700
684 I=VAL(I$)
685 IF I=7 THEN LOCATE 23,22:PRINT"THERE ARE";:COLOR 15,0:PRINT N;:COLOR 7,0:PRINT"RECORDS IN THIS FILE ";:I=0:GOTO 682
700 IF I<1 OR I>8 THEN LOCATE 23,22:BEEP:COLOR 15,0:PRINT"PLEASE TYPE A NUMBER BETWEEN 1 AND 8":COLOR 7,0:GOTO 682
720 ON I GOTO 1010,2010,3020,4020,5020,6020,0,12010
1000 ' --------------------------ADD TO FILE ROUTINE --------------------------
1010 CLS:LOCATE 1,30:PRINT"RECORD NUMBER ";:GOSUB 11010
1020 F=0:IF N=0 THEN N=1 ELSE N=N+1
1040 LOCATE 1,43:PRINT N:GOSUB 11200
1060 MID$(N1$,1)=SPACE$(10)' first name
1080 GOSUB 11400:GOTO 1840
1282 IF F=1 THEN 1840:' CHECK FOR ERROR CORR
1840 LOCATE 25,1:PRINT STRING$(26,32);:GOSUB 8020:IF C2=1 THEN C2=0:GOTO 520 ELSE LOCATE 23,1:PRINT STRING$(75,32);:LOCATE 23,1:PRINT"Is the information displayed correct? ";:IPC=1:PT=0:OF=1:GOSUB 15150:SWAP IP$,I$
1860 IF I$="Y" OR I$="y" THEN 1987
1880 IF I$="N" OR I$="n" THEN LOCATE 23,1:PRINT STRING$(40,32):GOSUB 11400:GOTO 1840
1900 BEEP:LOCATE 23,1:PRINT STRING$(70,32);:LOCATE 23,1:PRINT"You must answer yes or no. Please reenter";:FOR T = 1 TO 2000:NEXT T:GOTO 1840
1987 IF LEN(N2$)<15 THEN N2$=N2$+" ":GOTO 1987
1989 IF F1=2 GOTO 4242 ELSE IF F1=3 GOTO 4425 ELSE I$=Z$+N2$+STR$(N):GOSUB 10200
1990 OPEN IN$ FOR APPEND AS 1:PRINT#1,I$:CLOSE 1:OPEN "O",3,NBR$:PRINT#3,N:CLOSE 3
1991 LOCATE 23,1:PRINT"Record has been written to file. Do you want to input another ";:IPC=1:PT=0:OF=1:GOSUB 15150:SWAP IP$,I$:IF I$="Y" OR I$="y" THEN LOCATE 23,1:PRINT STRING$(70,32);:GOTO 1020
1993 IF I$="N" OR I$="n" THEN GOTO 520
1994 BEEP:LOCATE 23,1:PRINT STRING$(70,32);:LOCATE 23,1:PRINT"You must answer yes or no. Please reenter";:GOTO 1991
2000 ' ----------------------- SORT ROUTINE ---------------------------------
2010 CLOSE 2:COLOR 15,0:LOCATE 19,22:PRINT"Loading Sort program.............":CHAIN "MAILSORT.BAS"
3000 ' --------------------- DISPLAY FILE -------------------------
3020 MN=3:KEY 9,"":KEY 10,")":C1=0:I=0:CLS:GOSUB 11300:LOCATE 5,29:COLOR 15,0:PRINT"DO YOU WANT TO DISPLAY":COLOR 7,0
3040 LOCATE 8,32:PRINT"1. By record number"
3060 LOCATE 9,32:PRINT"2. By name"
3080 LOCATE 10,32:PRINT"3. All"
3100 GOSUB 11150:LOCATE 19,24:PRINT"Type the number of your choice ";:LOCATE 19,POS(0)-1:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 520 ELSE IF VAL(IP$)=0 THEN 3120 ELSE I=VAL(IP$)
3120 IF I<1 OR I>3 THEN LOCATE 23,24:BEEP:COLOR 15,0:PRINT"PLEASE TYPE A NUMBER FROM 1 TO 4":COLOR 7,0:GOTO 3100
3140 ON I GOTO 3420,3160,3600,520
3160 CLS:GOSUB 11150:LOCATE 7,15:PRINT"Enter name you would like to display:";:LOCATE CSRLIN,POS(0)+1:IPC=15:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 3020 ELSE SWAP I$,IP$
3170 IF LEN(I$)<>0 THEN 3180 ELSE IF I$="" THEN LOCATE 23,1:BEEP:PRINT"You did not enter a name. Do you wish to return to menu (Y/N)";:LOCATE CSRLIN,POS(0)+1:IPC=1:GOSUB 15150
3172 IF IP$="Y" OR IP$="y" THEN 3020 ELSE IF IP$=ESC$ THEN 3020 ELSE LOCATE 23,1:PRINT STRING$(68," "):GOTO 3160
3180 F$=I$
3200 OPEN "I",#1,IN$
3204 IF EOF(1) THEN 3380
3205 INPUT #1,I$
3220 I=LEN(I$):I=I-20:IF MID$(I$,6,LEN(F$))<>F$ THEN 3204 ELSE I = VAL(RIGHT$(I$,I))
3240 C1=1:GET 2,I
3260 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
3280 GOSUB 11010:GOSUB 10500:GOSUB 10600
3320 LOCATE 23,1:PRINT"Type S to return to menu or any other key to continue search";
3340 I$=INKEY$:IF I$="" THEN 3340
3360 LOCATE 23,1:PRINT STRING$(75,32);:IF LEFT$(I$,1)="S" OR LEFT$(I$,1)="s" THEN 3380
3370 GOTO 3204
3380 CLOSE 1
3381 IF C1=1 THEN 3400
3382 LOCATE 23,10:BEEP:PRINT"There is no record for ";:COLOR 0,7:PRINT" "F$" ";:COLOR 7,0:PRINT" press any key to continue";
3384 I$=INKEY$:IF I$="" THEN 3384
3400 GOTO 3020
3420 CLS:GOSUB 11150
3421 LOCATE 7,15:PRINT"Enter record number you would like to display: ";:LOCATE 7,POS(0)-4:IPC=4:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 3020
3422 IF VAL(IP$)=0 THEN LOCATE 23,1:PRINT SPACE$(77);:LOCATE 23,22:BEEP:PRINT"Record number must be numeric":GOTO 3421:ELSE I=VAL(IP$)
3423 IF I>N THEN LOCATE 23,1:BEEP: PRINT"There are only"N;"records in the file. Please choose a number no larger than"N;:GOTO 3421
3424 IF I=0 THEN 3020
3426 'IF N=0 THEN BEEP:LOCATE 23,1:PRINT"There are no records in this file. Press enter to continue";:IPC=1:PT=0:OF=0:GOSUB 15150:GOTO 520
3440 GET 2,I
3460 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
3480 GOSUB 11010:GOSUB 10500:GOSUB 10600
3500 LOCATE 23,1:PRINT"Press any key to continue"
3520 I$=INKEY$:IF I$="" THEN 3520 ELSE LOCATE 23,1:PRINT STRING$(75,32);
3540 GOTO 3020
3600 CLS:LOCATE 1,30:PRINT "RECORD NUMBER ";:GOSUB 11010:IF S=1 THEN OPEN "I",#1,SRT$:GOTO 3606
3605 FOR L=1 TO N
3606 IF S=1 THEN IF EOF(1) GOTO 3840
3607 IF S=1 THEN INPUT #1,I:GOTO 3640
3620 I=L
3640 GET 2,I
3660 LOCATE 1,44:PRINT USING "####";I
3680 GOSUB 10500:GOSUB 10600
3700 FOR T=1 TO 15
3720 GOSUB 11150:LOCATE 25,59:COLOR 15,0:PRINT"F10 ";:COLOR O,7:PRINT" TO HOLD DISPLAY ";:COLOR 7,0
3740 I$=INKEY$:IF I$<>"" THEN IF I$=")" THEN LOCATE 25,63:COLOR 0,7:PRINT" TO CONTINUE ";:COLOR 7,0:PRINT" ";:IPC=1:OF=0:GOSUB 15150
3745 IF I$=ESC$ THEN IF S=1 GOTO 3860 ELSE T=15:L=N
3780 NEXT T
3785 IF S=1 THEN 3606
3800 NEXT L
3820 IF I$=ESC$ THEN 3860
3840 LOCATE 23,20:BEEP:PRINT"End of file. Type any key to return";:IPC=1:PT=O:OF=0:GOSUB 15150
3860 CLOSE 1:I1$="":GOTO 3020
4000 ' --------------------------- CORRECTION ROUTINE -------------------------
4020 I=0:MN=4:F1=2:C1=0:X=0
4040 CLS:GOSUB 11300:COLOR 15,0:LOCATE 5,29:PRINT"DO YOU WANT TO CORRECT":COLOR 7,0:LOCATE 8,30:PRINT"1. By record number"
4060 LOCATE 9,30:PRINT"2. By name"
4080 GOSUB 11150:LOCATE 19,25:PRINT"Type the number of your choice ";:LOCATE 19,POS(0)-1:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 4560 ELSE IF VAL(IP$)=0 THEN 4100 ELSE I=VAL(IP$)
4085 'IF I$=ESC$ THEN GOTO 4560
4100 IF I<1 OR I>2 THEN LOCATE 23,27:BEEP:COLOR 15,0:PRINT"PLEASE TYPE NUMBER 1 OR 2":COLOR 7,0:GOTO 4080
4120 IF I = 2 GOTO 4280
4140 CLS:GOSUB 11150
4160 LOCATE 7,15:PRINT"Enter the number of record you want to correct: ";:LOCATE 7,POS(0)-4:IPC=4:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 4020
4162 IF VAL(IP$)=0 THEN LOCATE 23,1:PRINT SPACE$(77);:LOCATE 23,22:BEEP:PRINT"Record number must be numeric":GOTO 4160:ELSE I1=VAL(IP$)
4180 IF I1>N THEN LOCATE 23,1:BEEP:PRINT"No record found for that number. Do you want to try another ";:LOCATE 23,POS(0)-1:IPC=1:PT=O:OF=0:GOSUB 15150:IF LEFT$(IP$,1)="Y" OR LEFT$(IP$,1)="y" THEN 4140 ELSE GOTO 4560
4200 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I1
4220 GET 2,I1
4240 GOSUB 11010:GOSUB 10500:GOSUB 10600:GOTO 1080
4242 OPEN "I",1,IN$
4245 FOR L=1 TO N
4247 INPUT #1,I1$
4249 I2=LEN(I1$):I2=I2-20:IF VAL(RIGHT$(I1$,I2))=I1 THEN I$(L)=Z$+N2$+STR$(I1) ELSE I$(L)=I1$
4251 NEXT L
4253 CLOSE 1
4255 GOSUB 10400:GOSUB 10200
4260 GOTO 4040
4280 CLS:F1=3:GOSUB 11150
4300 LOCATE 5,15:PRINT"Enter last name of record you want to correct:";:LOCATE 5,POS(0)+1:IPC=15:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 4020 ELSE SWAP IP$,I$:IF I$="" THEN 4020
4320 F$=I$
4340 OPEN "i",1,IN$:OPEN "B:TEMP" FOR APPEND AS 3
4342 FOR L2= 1 TO N
4344 INPUT#1,I$:Q=Q+1
4360 I1=LEN(I$):I1=I1-20:IF MID$(I$,6,LEN(F$))<>F$ THEN I$(Q)=I$:GOTO 4427
4365 I1=VAL(RIGHT$(I$,I1))
4380 C1=1:GET 2,I1
4400 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I1
4420 GOSUB 11010:GOSUB 10500:GOSUB 10600:GOTO 1080
4425 I$(Q)=Z$+N2$+STR$(I1):GOSUB 10200
4427 IF Q=100 THEN GOSUB 4600
4440 NEXT L2
4445 CLOSE 1
4447 GOSUB 4600:CLOSE 3
4460 IF C1=1 THEN 4500
4480 LOCATE 23,1:BEEP:PRINT"There is no record for ";:COLOR 0,7:PRINT" "F$" ";:COLOR 7,0:PRINT". Type any key to continue";:KILL "B:TEMP":GOTO 4520
4500 LOCATE 23,1:BEEP:PRINT"End of records for ";:COLOR 0,7:PRINT" "F$" ";:COLOR 7,0:PRINT". Type any key to continue";
4520 I$=INKEY$:IF I$="" THEN 4520 ELSE IF C1=0 THEN 4040
4540 KILL IN$:GOSUB 4700:GOTO 4040
4560 F1=0:GOTO 520
4600 FOR L1=1 TO Q
4620 PRINT#3,I$(L1)
4640 NEXT L1
4660 Q=0:RETURN
4700 Q=0:OPEN "I",3,"TEMP"
4720 OPEN IN$ FOR APPEND AS 1
4740 FOR L=1 TO N
4760 Q=Q+1
4780 INPUT#3,I1$(Q)
4800 IF Q=100 THEN GOSUB 4900
4820 NEXT L
4840 GOSUB 4900:CLOSE 1,3:KILL "TEMP":RETURN
4900 FOR L1=1 TO Q
4920 PRINT#1,I1$(L1)
4940 NEXT L1
4960 Q=0:RETURN
5000 '---------------------PRINTER ROUTINE --------------------------------
5020 KEY 10,")":I=0:MN=5:FOR L=1 TO 3:P$(L)=SPACE$(80):NEXT L:P$=SPACE$(80):A$=SPACE$(15):A1$=SPACE$(15):C1=0:CLS:GOSUB 11300:COLOR 15,0:LOCATE 5,29:PRINT"DO YOU WANT TO PRINT":COLOR 7,0
5025 LOCATE 8,31:PRINT"1 By record number"
5030 LOCATE 9,31:PRINT"2 By name"
5035 LOCATE 10,31:PRINT"3 All"
5050 GOSUB 11150:LOCATE 19,23:PRINT"Type the number of your choice: ";:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 520 ELSE IF VAL(IP$)=0 THEN 5055 ELSE I=VAL(IP$)
5055 IF I<1 OR I>3 THEN LOCATE 23,23:BEEP:COLOR 15,0:PRINT"PLEASE TYPE A NUMBER FROM 1 TO 3":COLOR 7,0:GOTO 5050
5060 ON I GOTO 5065,5140,5520
5065 CLS:GOSUB 11150:LOCATE 7,15:PRINT"Enter name you would like to print ";:IPC=15:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 5020 ELSE SWAP IP$,I$
5067 IF I$="" THEN 5020
5070 F$=I$
5073 OPEN "I",#1,IN$
5075 IF EOF(1) THEN 5115
5077 INPUT#1,I$
5080 I=LEN(I$):I=I-20:IF MID$(I$,6,LEN(F$))<>F$ THEN 5075 ELSE I = VAL(RIGHT$(I$,I))
5085 C1=1:GET 2,I
5090 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
5095 GOSUB 5495
5100 LOCATE 23,1:PRINT"Type S to return to menu or any other key to continue search";
5105 I$=INKEY$:IF I$="" THEN 5105
5110 LOCATE 23,1:PRINT STRING$(75,32);:IF LEFT$(I$,1)="S" OR LEFT$(I$,1)="s" THEN CLOSE 1:GOTO 5020
5113 GOTO 5075
5115 CLOSE 1
5120 IF C1=1 THEN 5135
5125 LOCATE 23,1:BEEP:PRINT"There is no record for ";:COLOR 0,7:PRINT" "F$" ";:COLOR 7,0:PRINT" press any key to continue";
5130 I$=INKEY$:IF I$="" THEN 5130
5135 GOTO 5020
5140 CLS:GOSUB 11150
5141 LOCATE 7,15:PRINT"Enter record number you would like to print ";:IPC=4:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 5020 ELSE I=VAL(IP$)
5142 IF I=0 THEN 5020
5145 IF I>N THEN LOCATE 23,1:BEEP:PRINT"There are only"N"records in the file. Please choose a number no larger than"N:GOTO 5141
5150 'IF N=0 THEN BEEP:LOCATE 22,1:INPUT"THERE ARE NO RECORDS IN THIS FILE. PRESS ENTER TO CONTINUE",I$:GOTO 520
5155 GET 2,I
5160 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
5165 GOSUB 5495:GOSUB 10500
5170 LOCATE 23,1:PRINT"Type any key to continue";
5175 I$=INKEY$:IF I$="" THEN 5175 ELSE LOCATE 23,1:PRINT STRING$(75,32);
5180 GOTO 5020
5280 '----------------------- PRINT 3-WIDE LABELS------------------------------
5285 GOSUB 5910:GOSUB 5950:P=0:KEY 10,")":CLS:LOCATE 10,35:PRINT"PRINTING":IF S=1 THEN OPEN "I",1,SRT$ ELSE OPEN "I",1,IN$
5287 IF S=1 THEN INPUT#1,I ELSE INPUT#1,I$
5290 P = P+1
5295 IF S<>1 THEN I=LEN(I$):I=I-20:I=VAL(RIGHT$(I$,I))
5300 GET 2,I
5305 MID$(P$(P),1)=N1F$+N2F$+PHF$+STF$+CF$+SF$+" "+ZF$
5310 IF EOF(1) THEN IF P <2 THEN P$(2)="":P$(3)="":GOTO 5325
5315 IF EOF(1) THEN IF P <3 THEN P$(3)="":GOTO 5325
5320 IF P <> 3 GOTO 5465 'MUST GET 3 RECORDS BEFORE PRINTING
5325 FOR L1=1 TO 3
5330 MID$(A$,1)=MID$(P$(L1),11,15) 'DUMMY FOR LAST NAMES IF NOT THREE
5335 IF P$(L1)="" THEN 5355
5340 LPRINT MID$(P$(L1),1,INSTR(P$(L1),"\")-1);" ";MID$(A$,1,INSTR(A$,"\")-1); 'FIRST AND LAST NAMES --PHONE NOT USED
5345 IF L1 = 1 THEN LPRINT TAB(TAB1);
5350 IF L1 = 2 THEN LPRINT TAB(TAB2);
5355 NEXT L1
5360 LPRINT
5365 FOR L1=1 TO 3
5370 IF P$(L1)="" THEN 5390
5375 LPRINT MID$(P$(L1),38,20); 'STREET ADDRESS
5380 IF L1 = 1 THEN LPRINT TAB(TAB1);
5385 IF L1 = 2 THEN LPRINT TAB(TAB2);
5390 NEXT L1
5395 LPRINT
5400 FOR L1 = 1 TO 3
5405 IF P$(L1)="" THEN 5430
5410 MID$(A1$,1)=MID$(P$(L1),58,15)
5415 LPRINT MID$(A1$,1,INSTR(A1$,"\")-1);", ";RIGHT$(P$(L1),8); 'CITY,STATE,ZIP
5420 IF L1 = 1 THEN LPRINT TAB(TAB1);
5425 IF L1 = 2 THEN LPRINT TAB(TAB2);
5430 NEXT L1
5435 FOR BLINES=0 TO SPACES:IF SPACES =0 THEN 5437 ELSE LPRINT
5437 NEXT
5440 GOSUB 11150:LOCATE 25,59:COLOR 15,0:PRINT"10 ";:COLOR 0,7:PRINT" TO HOLD PRINTING ";:COLOR 7,0
5445 I1$=INKEY$:IF I1$<>"" THEN IF I1$=")" THEN LOCATE 25,63:COLOR 0,7:PRINT"TO CONTINUE ";:COLOR 7,0:PRINT" ";:IPC=1:OF=0:GOSUB 15150
5450 IF I1$ = ESC$ THEN GOSUB 5960:GOTO 5470
5460 P=0:I1$=""
5465 IF EOF(1)=0 THEN 5287
5470 GOSUB 5960:CLOSE 1:CLS:GOTO 5520
5490 GET 2,I
5495 LPRINT MID$(N1F$,1,INSTR(N1F$,"\")-1);" ";MID$(N2F$,1,INSTR(N2F$,"\")-1)
5500 LPRINT STF$
5505 LPRINT MID$(CF$,1,INSTR(CF$,"\")-1);", ";SF$;" ";ZF$
5507 IF SPACES=<0 THEN 5515
5510 FOR BLINES=1 TO SPACES:LPRINT
5512 NEXT
5515 RETURN
5520 I=0:MN=7:CLS:GOSUB 11300:COLOR 15,0:LOCATE 5,23:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE":COLOR 7,0
5525 LOCATE 8,31:PRINT "1 Listing"
5530 LOCATE 9,31:PRINT "2 Labels - 1 Wide"
5535 LOCATE 10,31:PRINT "3 Labels - 2 Wide"
5540 LOCATE 11,31:PRINT "4 Labels - 3 Wide"
5550 LOCATE 19,23:PRINT"Type the number of your choice:":GOSUB 11100
5552 IF I$=ESC$ THEN 5020
5555 IF I<1 OR I>4 THEN LOCATE 23,23:BEEP:COLOR 15,0:PRINT"PLEASE TYPE A NUMBER FROM 1 TO 4":COLOR 7,0:GOTO 5550
5560 ON I GOTO 5562,5655,5680,5285
5561 '---------------------- LISTING - SUBROUTINE -----------------------------
5562 CLS:GOSUB 11150:LOCATE 7,15:PRINT"Enter title for listing: ";:IPC=40:PT=1:OF=1:GOSUB 15150:IF I$=ESC$ THEN 5520 ELSE IF LEN(IP$)=0 THEN 5520 ELSE SWAP TITLE$,IP$
5563 LPRINT :LPRINT CHR$(14);TITLE$;:LPRINT CHR$(20);'TAB(50)DATE$
5565 CLS:LOCATE 10,35:PRINT"PRINTING"
5570 LPRINT CHR$(15):WIDTH "LPT1:",132:LPRINT CHR$(27);"0"
5575 LPRINT TAB(100) DATE$ :LPRINT :LPRINT
5580 LPRINT " NAME";TAB(38)"PHONE";TAB(59)"STREET";TAB(80);"CITY";TAB(95) "ST ZIP"
5585 LPRINT STRING$(103,208):LPRINT
5587 IF S=1 THEN OPEN "i",1,SRT$:GOTO 5592
5590 FOR L= 1 TO N
5592 IF S=1 THEN IF EOF(1) GOTO 5645
5595 IF S=1 THEN INPUT#1,I:GOTO 5610
5605 I=L
5610 GET 2,I
5615 MID$(P$,1)=N1F$+N2F$+PHF$+STF$+CF$+SF$+" "+ZF$
5620 LPRINT MID$(P$,1,INSTR(P$,"\")-1);:LPRINT TAB(16) MID$(P$,11,INSTR(11,P$,"\")-11) TAB(33) MID$(P$,26,12);:LPRINT TAB(56) MID$(P$,38,20);:LPRINT TAB(78) MID$(P$,58,INSTR(58,P$,"\")-58);:LPRINT TAB(95) MID$(P$,73,2);" ";RIGHT$(P$,5)
5625 GOSUB 11150:LOCATE 25,59:COLOR 15,0:PRINT"10 ";:COLOR 0,7:PRINT" to hold printing ";:COLOR 7,0
5630 I$=INKEY$:IF I$<>"" THEN IF I$=")" THEN LOCATE 25,63:COLOR 0,7:PRINT"to continue ";:COLOR 7,0:PRINT" ";:IPC=1:OF=0:PT=0:GOSUB 15150
5635 IF I$=ESC$ THEN IF S=1 GOTO 5645 ELSE L=N
5637 IF S=1 THEN 5592
5640 NEXT:LPRINT :LPRINT
5645 LPRINT CHR$(146):WIDTH "LPT1:",80:LPRINT CHR$(27);"2"
5650 CLOSE 1:GOTO 5520
5655 GOSUB 5905:CLS:LOCATE 10,35:PRINT"PRINTING":IF S=1 THEN OPEN "I",1,SRT$
5656 IF S=1 THEN IF EOF(1) GOTO 5670 ELSE INPUT#1,I:GOTO 5660
5657 FOR L=1 TO N
5659 I=L
5660 GOSUB 5490
5662 GOSUB 11150:LOCATE 25,59:COLOR 15,0:PRINT"10 ";:COLOR 0,7:PRINT" TO HOLD PRINTING ";:COLOR 7,0
5663 I$=INKEY$:IF I$<>"" THEN IF I$=")" THEN LOCATE 25,63:COLOR 0,7:PRINT"TO CONTINUE ";:COLOR 7,0:PRINT" ";:IPC=1:OF=0:PT=0:GOSUB 15150
5664 IF I$=ESC$ THEN IF S=1 GOTO 5670 ELSE L=N
5665 IF S=1 GOTO 5656
5667 NEXT
5670 CLS:CLOSE 1:GOTO 5520
5675 '--------------------- 2-WIDE LABELS -------------------------------
5680 GOSUB 5900
5681 CLS:P=0:LOCATE 10,35:PRINT"PRINTING":IF S=1 THEN OPEN "I",1,SRT$ ELSE OPEN "I",1,IN$
5682 IF S=1 THEN INPUT#1,I ELSE INPUT#1,I$
5685 P = P+1
5690 IF S<>1 THEN I=LEN(I$):I=I-20:I=VAL(RIGHT$(I$,I))
5695 GET 2,I
5700 MID$(P$(P),1)=N1F$+N2F$+PHF$+STF$+CF$+SF$+" "+ZF$
5705 IF EOF(1) THEN IF P <2 THEN P$(2)="":GOTO 5715
5710 IF P <> 2 GOTO 5855 'MUST GET 2 RECORDS BEFORE PRINTING
5715 FOR L1=1 TO 2
5720 MID$(A$,1)=MID$(P$(L1),11,15) 'DUMMY FOR LAST NAMES IF NOT THREE
5725 IF P$(L1)="" THEN 5745
5730 LPRINT MID$(P$(L1),1,INSTR(P$(L1),"\")-1);" ";MID$(A$,1,INSTR(A$,"\")-1); 'FIRST AND LAST NAMES --PHONE NOT USED
5735 IF L1 = 1 THEN LPRINT TAB(TAB1);
5740 IF L1 = 2 THEN LPRINT TAB(TAB2);
5745 NEXT L1
5750 'LPRINT
5755 FOR L1=1 TO 2
5760 IF P$(L1)="" THEN 5780
5765 LPRINT MID$(P$(L1),38,20); 'STREET ADDRESS
5770 IF L1 = 1 THEN LPRINT TAB(TAB1);
5775 IF L1 = 2 THEN LPRINT TAB(TAB2);
5780 NEXT L1
5785 'LPRINT
5790 FOR L1 = 1 TO 2
5795 IF P$(L1)="" THEN 5820
5800 MID$(A1$,1)=MID$(P$(L1),58,15)
5805 LPRINT MID$(A1$,1,INSTR(A1$,"\")-1);", ";RIGHT$(P$(L1),8); 'CITY,STATE,ZIP
5810 IF L1 = 1 THEN LPRINT TAB(TAB1);
5815 IF L1 = 2 THEN LPRINT TAB(TAB2);
5820 NEXT L1
5825 FOR BLINES=1 TO SPACES:IF SPACES =0 THEN 5827 ELSE LPRINT
5827 NEXT
5830 GOSUB 11150:LOCATE 25,59:COLOR 15,0:PRINT"10 ";:COLOR 0,7:PRINT" TO HOLD PRINTING ";:COLOR 7,0
5835 I1$=INKEY$:IF I1$<>"" THEN IF I1$=")" THEN LOCATE 25,63:COLOR 0,7:PRINT"TO CONTINUE ";:COLOR 7,0:PRINT" ";:IPC=1:OF=0:GOSUB 15150
5840 IF I1$ = ESC$ THEN GOSUB 5960 :GOTO 5470
5850 P=0:I1$=""
5855 IF EOF(1) = 0 THEN 5682
5860 CLOSE 1:CLS:GOTO 5520
5899 '-----------------------SET TABS SUBROUTINE -----------------------------
5900 CLS:GOSUB 11150:LOCATE 1,1:PRINT"Enter the FIRST print position for the second label: ";:LOCATE 1,POS(0)-1:IPC=3:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 5520 ELSE TAB1=VAL(IP$)
5905 CLS:GOSUB 11150:LOCATE 1,1:PRINT"Enter the number of spaces you desire between labels: ";:LOCATE 1,POS(0)-1:IPC=3:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 5520 ELSE SPACES=VAL(IP$):RETURN
5910 CLS:GOSUB 11150:LOCATE 1,1:PRINT"Enter the FIRST print position for the second label: ";:LOCATE 1,POS(0)-1:IPC=3:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 5520 ELSE TAB1=VAL(IP$)
5920 LOCATE 3,1:PRINT"Enter the FIRST print position for the third label: ";:LOCATE 3,POS(0)-1:IPC=3:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 5520 ELSE TAB2=VAL(IP$)
5930 GOSUB 11150:LOCATE 5,1:PRINT"Enter the number of spaces you desire between labels: ";:LOCATE 5,POS(0)-1:IPC=3:PT=1:GOSUB 15150:IF IP$=ESC$ THEN 5520 ELSE SPACES=VAL(IP$):RETURN
5950 LPRINT CHR$(15);:WIDTH "LPT1:",132:RETURN
5960 LPRINT CHR$(146):WIDTH "LPT1:",80:RETURN
6000 ' ---------------------- DELETE ROUTINE ---------------------------------
6020 I=0:MN=6:KEY 9,"":KEY 10,"":CLS:GOSUB 11300
6040 LOCATE 5,30:COLOR 15,0:PRINT"DO YOU WANT TO DELETE":COLOR 7,0
6060 LOCATE 8,32:PRINT"1 By record number"
6080 LOCATE 9,32:PRINT"2 By last name"
6100 GOSUB 11150:LOCATE 19,25:PRINT"Type the number of your choice: ";:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 6145 ELSE IF VAL(IP$)=0 THEN 6120 ELSE I=VAL(IP$)
6120 IF I<1 OR I>2 THEN LOCATE 23,26:BEEP:COLOR 15,0:PRINT"PLEASE TYPE NUMBER 1 OR 2":COLOR 7,0:GOTO 6100
6140 IF I=1 THEN 6155 ELSE IF I=2 THEN 6440
6145 OPEN "O",3,NBR$:PRINT#3,N:CLOSE 3:IF S=1 THEN S=0:KILL SRT$ ELSE GOTO 520
6155 CLS:GOSUB 11150
6160 LOCATE 7,15:PRINT"Enter record number you want to delete ";:LOCATE 7,POS(0)-4:IPC=4:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 6020 ELSE IF IP$="" THEN BEEP:GOTO 6160 ELSE I=VAL(IP$)
6180 IF N=0 THEN BEEP:LOCATE 23,1:PRINT"There are no records in this file. Press enter to continue ";:IPC=1:PT=0:OF=0:GOTO 520
6185 IF I>N THEN LOCATE 23,1:BEEP:PRINT"There are only"N"records in the file. Please enter a number no larger than"N:GOTO 6160
6190 IF I=0 THEN GOTO 6020
6200 GET 2,I
6300 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
6320 GOSUB 11010:GOSUB 10500:GOSUB 10600
6325 GOSUB 11150
6340 LOCATE 22,1:BEEP:PRINT"Is this the correct record to delete ";:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 6020 ELSE SWAP IP$,I$
6360 IF I$="N" OR I$="n" THEN 6020 ELSE IF I$="Y" OR I$="y" THEN 6420
6400 LOCATE 23,1:BEEP:PRINT"You must enter yes or no. Please reenter":GOTO 6340
6420 GOSUB 6760:N=N-1:GOTO 6020
6440 CLS:C1=0:GOSUB 11150
6460 LOCATE 5,15:PRINT"Enter last name of record you want to delete ";:IPC=15:PT=1:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 6020 ELSE IF IP$="" THEN BEEP:GOTO 6460 ELSE SWAP IP$,I$
6480 F$=I$
6485 OPEN "I",1,IN$
6505 IF EOF(1) THEN GOTO 6682 ELSE INPUT#1,IP$
6520 I=LEN(IP$):I=I-20:IF MID$(IP$,6,LEN(F$))<>F$ THEN 6680 ELSE I=VAL(RIGHT$(IP$,I))
6540 GET 2,I
6560 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
6580 GOSUB 11010:GOSUB 10500:GOSUB 10600
6600 I1$=" ":GOSUB 11150:LOCATE 22,1:BEEP:PRINT"Is This the correct record to delete ";:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 6020 ELSE SWAP IP$,I1$
6640 IF I1$="Y" OR I1$="y" THEN 6700 ELSE IF I1$="N" OR I1$="n" THEN 6680
6660 LOCATE 23,1:BEEP:PRINT"You must enter yes or no. Please reenter":GOTO 6600
6680 GOTO 6505
6682 CLOSE 1:GOTO 6020
6700 CLOSE 1:GOSUB 6760:N=N-1:GOTO 6020
6750 ' -------------- ACTUAL DELETE ROUTINE ------------
6760 OPEN "i",1,IN$
6800 FOR L1=1 TO N
6820 INPUT#1,I1$
6840 IF L1<I GOTO 6920
6860 GET 2,L1+1
6880 PUT 2,L1
6900 IF L1=I GOTO 6940
6905 I2$=LEFT$(I1$,20)
6910 I1$=I2$+STR$(L1-1)
6920 IF L1<I THEN I$(L1)=I1$ ELSE IF L1>I THEN I$(L1-1)=I1$
6940 NEXT L1
6960 CLOSE 1
6968 OPEN "O",1,IN$
6972 FOR L1=1 TO N-1
6980 PRINT#1,I$(L1)
6984 NEXT L1
6988 CLOSE 1,3
6992 RETURN
7020 CLS:CLOSE:IF S=1 THEN KILL SRT$
7021 SYSTEM
8000 ' -------------------------DUP ROUTINE ----------------------------------
8020 IF F1=2 OR F1 = 3 THEN RETURN ELSE N11$=N1$:N21$=N2$:P1H$=PH$:S1T$=ST$:C1$=C$:S1$=S$:Z1$=Z$' SAVE NAMES
8022 IF N=1 THEN RETURN
8024 C3=0:C2=0
8030 OPEN "i",#1,IN$
8034 IF EOF(1) THEN CLOSE 1:GOTO 8262
8036 INPUT#1,I$
8040 IF N21$<>MID$(I$,6,15) THEN 8034
8060 I=VAL(RIGHT$(I$,LEN(I$)-20))
8080 GET 2,I
8100 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "I
8120 GOSUB 11010:GOSUB 10500:GOSUB 10600
8140 LOCATE 20,1:PRINT"This is a possible duplicate of ";:PRINT MID$(N11$,1,INSTR(N11$,"\")-1)" ";:PRINT MID$(N21$,1,INSTR(N21$,"\")-1)
8160 BEEP:LOCATE 22,1:PRINT"Is this a duplicate entry? ";:IPC=1:PT=0:OF=1:GOSUB 15150:IF IP$=ESC$ THEN 520 ELSE SWAP I$,IP$
8180 IF I$="Y" OR I$="y" THEN C2=1:GOTO 8262
8200 IF I$="N" OR I$="n" THEN C3=1:GOTO 8240
8220 LOCATE 23,1:BEEP:PRINT"YOU MUST ANSWER YES OR NO. PLEASE REENTER":FOR T=1 TO 1000:NEXT T:GOTO 8160
8240 LOCATE 20,1:PRINT STRING$(50,32):LOCATE 22,1:PRINT STRING$(50,32):LOCATE 23,1:PRINT STRING$(50,32)
8260 GOTO 8034
8262 IF C2=1 THEN N=N-1:GOTO 8280
8263 IF C3=0 THEN RETURN
8265 IF C2=0 THEN N1$=N11$:N2$=N21$:PH$=P1H$:ST$=S1T$:C$=C1$:S$=S1$:Z$=Z1$
8266 IF F=1 THEN GOTO 8280
8267 CLS:LOCATE 1,30:PRINT"RECORD NUMBER "N
8269 GOSUB 11010:GOSUB 10600
8280 CLOSE 1:RETURN
9999 '-----------------------ERROR TRAPS AND SUBROUTINES----------------------
10000 IF ERR = 53 THEN GOTO 10150 ELSE IF ERR = 67 GOTO 10181
10002 IF ERR=25 THEN CLS:LOCATE 12,10:PRINT "MAKE PRINTER READY THEN HIT ANY KEY TO RESUME":GOTO 10004
10003 GOTO 10006
10004 EE$=INKEY$:IF EE$="" THEN 10004 ELSE CLS:LOCATE 10,35:PRINT"PRINTING":RESUME
10006 IF ERR=27 THEN CLS:LOCATE 12,10:PRINT "REPLACE PAPER IN PRINTER THEN HIT ANY KEY TO RESUME":GOTO 10008
10007 GOTO 10010
10008 EE$=INKEY$:IF EE$="" THEN 10008 ELSE RESUME
10010 IF ERR=61 THEN CLS ELSE GOTO 10020
10012 LOCATE 11,30:PRINT"DATA DISK IS FULL."
10014 LOCATE 12,30:PRINT"LAST ENTRY MAY NOT"
10016 LOCATE 13,30:PRINT"HAVE BEEN ADDED."
10017 LOCATE 14,30:INPUT"PRESS ENTER TO RESUME.",I$:RESUME 520
10020 IF ERR = 71 THEN CLS ELSE GOTO 10120
10025 ER=1:LOCATE 10,30:PRINT"DISK DRIVE NOT READY"
10040 LOCATE 11,30:PRINT"PLEASE INSERT DATA DISK"
10060 LOCATE 12,30:PRINT"OR CLOSE DRIVE DOOR":BEEP
10080 LOCATE 13,30:INPUT"PRESS ENTER TO RESUME",I$:IF MN=3 THEN CLS:LOCATE 1,30:PRINT"RECORD NUMBER":GOSUB 11010
10100 RESUME
10120 ON ERROR GOTO 0
10150 CLS:LOCATE 12,15:PRINT"File not found. Do you wish to create a new file? ";:IPC=1:PT=0:OF=1:GOSUB 15150
10160 IF I$="Y" OR I$="y" THEN RESUME 410
10170 LOCATE 15,20:COLOR 0,7:PRINT "THE CURRENT FILES ON DISK B ARE:":LOCATE 17,1:COLOR 7,0:FILES "B:*.*"
10172 LOCATE 25,20:COLOR 0,7:PRINT "** PRESS ANY KEY TO CONTINUE **";:COLOR 7,0
10175 A$=INKEY$:IF A$="" THEN 10175
10180 CLOSE:ERASE I$:ERASE I1$:RESUME 103
10181 CLS:BEEP:LOCATE 20,20:PRINT"File name entered:";:COLOR 15,0:LOCATE 20,POS(0)+1:PRINT RIGHT$(RAN$,LEN(RAN$)-2):COLOR 7,0:LOCATE 22,10:PRINT"You have entered an invalid character in the file name."
10182 LOCATE 23,10:PRINT"Please press any key to return to file selection."
10183 I$=INKEY$:IF I$="" THEN 10183 ELSE CLS:RESUME 103
10199 ' ---------------------- WRITE R-A FILE TO DISK -----------------
10200 LSET CF$=C$
10220 LSET SF$=S$
10240 LSET ZF$=Z$
10260 LSET PHF$=PH$
10280 LSET STF$=ST$
10300 LSET N1F$=N1$
10320 LSET N2F$=N2$
10340 IF F1 = 2 OR F1=3 THEN PUT 2,I1 ELSE PUT #2,N
10360 RETURN
10399 ' --------------------------WRITE INDEX FILE TO DISK --------------------
10400 OPEN "O",#1,IN$
10420 FOR L=1 TO N:PRINT#1,I$(L):NEXT L
10440 CLOSE #1:RETURN
10500 MID$(C$,1)=CF$:MID$(S$,1)=SF$:MID$(Z$,1)=ZF$:MID$(PH$,1)=PHF$:MID$(ST$,1)=STF$:MID$(N1$,1)=N1F$:MID$(N2$,1)=N2F$:' CONVERT RA FILES TO REGULAR VARIABLES
10520 RETURN
10599 ' ------------------------ PRINT FIELD VALUES -------------------------
10600 COLOR 0,7:LOCATE 3,12:PRINT" ";:PRINT MID$(N1$,1,INSTR(N1$,"\")-1);:PRINT" ";:COLOR 7,0:PRINT STRING$(12-INSTR(N1$,"\"),32):COLOR 0,7:
10602 LOCATE 3,40:PRINT" ";:PRINT MID$(N2$,1,INSTR(N2$,"\")-1);:PRINT" ";:COLOR 7,0:PRINT STRING$(16-INSTR(N2$,"\"),32):COLOR 0,7:LOCATE 9,7:PRINT PH$:LOCATE 5,16:PRINT" ";:PRINT ST$
10605 LOCATE 7,6:PRINT" ";:PRINT MID$(C$,1,INSTR(C$,"\")-1);:PRINT" ";:COLOR 7,0:PRINT STRING$(16-INSTR(C$,"\"),32):COLOR 0,7:LOCATE 7,36:PRINT" ";:PRINT S$;:PRINT" ";:LOCATE 7,54:PRINT" ";:PRINT Z$;:PRINT" "
10620 COLOR 7,0:RETURN
11000 ' ----------------------- MAIN DISPLAY ROUTINE --------------------------
11010 LOCATE ,,0:LOCATE 3,1:PRINT"FIRST NAME:";:LOCATE 3,30:PRINT"LAST NAME:";:LOCATE 9,1:PRINT"PHONE:";:LOCATE 5,1:PRINT"STREET ADDRESS:";:LOCATE 7,1:PRINT"CITY:";:LOCATE 7,30:PRINT"STATE:";:LOCATE 7,45:PRINT"ZIP CODE:";:RETURN
11100 LOCATE 25,1:COLOR 15,0:PRINT"Esc ";:COLOR 0,7:PRINT" RETURN TO PRIOR MENU ";:COLOR 7,0
11120 I$=INKEY$:IF I$="" THEN 11120
11140 IF VAL(I$)=0 THEN RETURN ELSE I=VAL(I$):RETURN
11150 LOCATE 25,1:COLOR 15,0:PRINT"Esc ";:COLOR 0,7:PRINT" RETURN TO PRIOR MENU ";:COLOR 7,0:RETURN
11200 LOCATE 3,13:PRINT "--------- ":LOCATE 3,41:PRINT "-------------- ":LOCATE 9,7:PRINT "------------ ":LOCATE 5,17:PRINT "------------------- ":LOCATE 7,7:PRINT "-------------- ":LOCATE 7,37:PRINT "-- ":LOCATE 7,55:PRINT "----- ":RETURN
11300 LOCATE 1,34:COLOR 0,7:PRINT" MAILIST1 ":COLOR 7,0:RETURN
11400 GOSUB 11150:COUNT=0:LOCATE 3,13,1
11405 I$=INKEY$:IF I$="" THEN 11405
11410 IF I$=CHR$(9) THEN GOSUB 11510:GOTO 11405 'tab key
11415 IF LEN(I$)= 2 AND RIGHT$(I$,1)=CHR$(15) THEN GOSUB 11700:GOTO 11405 'back
11417 IF LEN(I$)=2 AND RIGHT$(I$,1)=>CHR$(16) THEN 11405
11420 IF I$=CHR$(27) THEN IF MN=4 THEN 4020 ELSE N=N-1:GOTO 520 'Escape to menu
11430 IF I$=CHR$(13) THEN 13010 'Go check input?
11435 X=CSRLIN:Y=POS(0):Y=Y-1
11440 IF I$=CHR$(8) THEN GOSUB 11810:GOTO 11405 'backspace key
11450 COUNT=COUNT+1:PRINT I$;:GOSUB 13500':PRINT I$;
11460 GOTO 11405
11500 '------------------DETERMINE FIELD AND TAB-------------------------
11510 IF CSRLIN = 3 THEN 11570
11520 IF CSRLIN = 5 THEN LOCATE 7,7:COUNT=43:RETURN
11530 IF CSRLIN = 7 THEN 11590
11540 IF CSRLIN = 9 THEN 11550
11550 IF POS(0)=>7 AND POS(0)<19 THEN LOCATE 3,13:COUNT=0:RETURN
11560 LOCATE 3,13:RETURN
11570 IF POS(0)=>13 AND POS(0) <23 THEN LOCATE 3,41:COUNT=9:RETURN
11572 IF POS(0)=>41 AND POS(0)<56 THEN LOCATE 5,17:COUNT=23:RETURN
11580 LOCATE 3,13:COUNT=0:RETURN
11590 IF POS(0)=>7 AND POS(0) <22 THEN LOCATE 7,37:COUNT=57:RETURN
11592 IF POS(0)=>37 AND POS(0)<40 THEN LOCATE 7,55:COUNT=59:RETURN
11594 IF POS(0)=>55 AND POS(0) <60 THEN LOCATE 9,7:COUNT=64:RETURN
11600 LOCATE 3,13:COUNT=0:RETURN
11700 '----------------BACK TAB ROUTINE -------------------------------------
11710 IF CSRLIN = 3 THEN 11770
11720 IF CSRLIN = 5 THEN LOCATE 3,41:COUNT=9:RETURN
11730 IF CSRLIN = 7 THEN 11790
11740 IF CSRLIN = 9 THEN LOCATE 7,55:COUNT=59:RETURN
11770 IF POS(0)=>13 AND POS(0) <23 THEN BEEP:LOCATE 3,13:COUNT=0:RETURN
11772 IF POS(0)=>41 AND POS(0)<56 THEN LOCATE 3,13:COUNT=0:RETURN
11780 LOCATE 3,67:COUNT=36:RETURN
11790 IF POS(0)=>7 AND POS(0) <22 THEN LOCATE 5,17:COUNT=23:RETURN
11792 IF POS(0)=>37 AND POS(0)<40 THEN LOCATE 7,7:COUNT=43:RETURN
11794 IF POS(0)=>55 AND POS(0) <60 THEN LOCATE 7,37:COUNT=57:RETURN
11799 LOCATE 3,13:COUNT=0:RETURN
11800 '------------------BACKSPACE -----------------------------------------
11810 IF X = 3 THEN 11870
11820 IF X = 5 THEN 11822 ELSE 11830
11822 IF POS(0)=17 THEN X=3:Y=54:GOSUB 11910:RETURN
11825 GOSUB 11920:RETURN
11830 IF X = 7 THEN 11890
11840 IF X = 9 THEN 11842
11842 IF POS(0)=7 THEN X=7:Y=59:GOSUB 11910:RETURN
11845 GOSUB 11920:RETURN
11870 IF POS(0)=13 THEN BEEP:LOCATE 3,13:COUNT=0:RETURN
11872 IF POS(0)=41 THEN Y=21:GOSUB 11910:RETURN
11880 GOSUB 11920:RETURN
11890 IF POS(0)=7 THEN X=5:Y=36:GOSUB 11910:RETURN
11892 IF POS(0)=37 THEN Y=20:GOSUB 11910:RETURN
11894 IF POS(0)=55 THEN Y=38:GOSUB 11910:RETURN
11899 GOSUB 11920:RETURN
11900 '-------------------PRINT '-' FOR BACKSPACE --------------------------
11910 LOCATE X,Y:PRINT STRING$(1,45):LOCATE X,Y:COUNT=COUNT-1:RETURN
11920 LOCATE X,Y:PRINT STRING$(1,45):LOCATE X,Y:COUNT=COUNT-1:RETURN
12010 CLOSE 2:COLOR 15,0:LOCATE 19,22:PRINT"Loading AutoDialer ..............":COLOR 7,0:CHAIN "A:AUTODIAL.BAS"
13000 '------------------READ SCREEN FOR INPUT ----------------------------
13010 CR=3:CC=13:LOCATE ,,0:I$="":TEST=0:ERRORN=0
13015 FOR L=0 TO 8
13020 IF L=0 THEN 13030 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(45) THEN L=10:GOTO 13038
13030 I$=I$+CHR$(SCREEN(CR,CC+L))
13034 IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=0 THEN TEST=TEST+1 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=1 THEN I$=LEFT$(I$,LEN(I$)-2):L=10:GOTO 13038
13036 IF TEST=1 AND CHR$(SCREEN(CR,CC+L))<>CHR$(32) THEN TEST=0:I1$=RIGHT$(I$,1):I$=LEFT$(I$,LEN(I$)-1)+I1$
13038 GOSUB 13684
13040 NEXT L:IF ERRORN=1 THEN GOSUB 13700:GOTO 11405
13050 N1$=STRING$(10," "):I$=I$+"\":MID$(N1$,1)=I$
13060 CC=41:I$="":TEST=0:ERRORN=0
13070 FOR L=0 TO 13
13080 IF L=0 THEN 13090 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(45) THEN L=13:GOTO 13098
13090 I$=I$+CHR$(SCREEN(CR,CC+L))
13094 IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=0 THEN TEST=TEST+1 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=1 THEN I$=LEFT$(I$,LEN(I$)-2):L=13:GOTO 13098
13096 IF TEST=1 AND CHR$(SCREEN(CR,CC+L))<>CHR$(32) THEN TEST=0:I1$=RIGHT$(I$,1):I$=LEFT$(I$,LEN(I$)-1)+I1$
13098 GOSUB 13684
13100 NEXT L:IF ERRORN=1 THEN GOSUB 13740:GOTO 11405
13110 MID$(N2$,1)=STRING$(15," "):I$=I$+"\":MID$(N2$,1)=I$
13120 CR=9:CC=7:I$="":ERRORN=0
13130 FOR L=0 TO 11
13140 I$=I$+CHR$(SCREEN(CR,CC+L))
13145 GOSUB 13650
13150 NEXT L:IF ERRORN=1 THEN GOSUB 13670:GOTO 11405
13155 MID$(PH$,1)=I$
13160 CR=5:CC=17:I$="":TEST=0
13170 FOR L=0 TO 19
13180 IF CHR$(SCREEN(CR,CC+L))=CHR$(45) THEN L=19:GOTO 13200
13190 I$=I$+CHR$(SCREEN(CR,CC+L))
13194 IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=0 THEN TEST=TEST+1 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=1 THEN I$=LEFT$(I$,LEN(I$)-2):L=19:GOTO 13200
13196 IF TEST=1 AND CHR$(SCREEN(CR,CC+L))<>CHR$(32) THEN TEST=0:I1$=RIGHT$(I$,1):I$=LEFT$(I$,LEN(I$)-1)+I1$
13200 NEXT L
13210 MID$(ST$,1)=STRING$(20," "):MID$(ST$,1)=I$
13220 CR=7:CC=7:I$="":TEST=0
13230 FOR L=0 TO 13
13240 IF CHR$(SCREEN(CR,CC+L))=CHR$(45) THEN L=13:GOTO 13260
13250 I$=I$+CHR$(SCREEN(CR,CC+L))
13254 IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=0 THEN TEST=TEST+1 ELSE IF CHR$(SCREEN(CR,CC+L))=CHR$(32) AND TEST=1 THEN I$=LEFT$(I$,LEN(I$)-2):L=13:GOTO 13260
13256 IF TEST=1 AND CHR$(SCREEN(CR,CC+L))<>CHR$(32) THEN TEST=0:I1$=RIGHT$(I$,1):I$=LEFT$(I$,LEN(I$)-1)+I1$
13260 NEXT L
13270 I$=I$+"\":MID$(C$,1)=STRING$(15," "):MID$(C$,1)=I$
13280 CC=37:I$=""
13290 FOR L=0 TO 1
13300 I$=I$+CHR$(SCREEN(CR,CC+L))
13310 NEXT L
13315 MID$(S$,1)=I$
13320 CC=55:I$="":ERRORN=0
13330 FOR L=0 TO 4
13340 I$=I$+CHR$(SCREEN(CR,CC+L))
13345 GOSUB 13610
13350 NEXT L:IF ERRORN=1 THEN GOSUB 13630:GOTO 11405
13355 MID$(Z$,1)=I$
13360 RETURN
13500 '------------------CHECK COUNT FOR NEXT FIELD ----------------------
13510 IF COUNT=9 THEN BEEP:LOCATE 3,41:RETURN
13520 IF COUNT=23 THEN BEEP:LOCATE 5,17:RETURN
13530 IF COUNT=43 THEN BEEP:LOCATE 7,7:RETURN
13550 IF COUNT=57 THEN BEEP:LOCATE 7,37:RETURN
13560 IF COUNT=59 THEN BEEP:LOCATE 7,55:RETURN
13565 IF COUNT=76 THEN BEEP:LOCATE 3,13:COUNT=0:RETURN
13568 IF COUNT=64 THEN BEEP:LOCATE 9,7:RETURN
13570 IF COUNT>78 THEN BEEP:BEEP:GOTO 11400
13580 RETURN
13600 '------------------------ TEST FOR NUMERIC ZIP -------------------------
13610 I3$=CHR$(SCREEN(CR,CC+L)):IF I3$<CHR$(48) OR I3$>CHR$(57) THEN 13620 ELSE RETURN
13620 ERRORN=1:LOCATE CR,CC+L:COLOR 15,0:PRINT I3$:COLOR 7,0:RETURN
13630 LOCATE 23,1:PRINT STRING$(75,32);:LOCATE 23,25:PRINT " Zip code must be NUMERIC. ";:LOCATE 7,55,1:COUNT=59:RETURN
13640 '----------------------- TEST PHONE NUMBER -----------------------------
13650 I3$=CHR$(SCREEN(CR,CC+L)):IF I3$<CHR$(48) OR I3$>CHR$(57) THEN 13655 ELSE RETURN
13655 IF I3$=CHR$(45) THEN RETURN
13660 ERRORN=1:LOCATE CR,CC+L:COLOR 15,0:PRINT I3$:COLOR 7,0:RETURN
13670 LOCATE 23,1:PRINT STRING$(75,32);:LOCATE 23,20:PRINT " Phone number must be NUMERIC. ";:LOCATE 9,7,1:COUNT=64:RETURN
13680 '----------------------- TEST NAME FIELDS ------------------------------
13684 I3$=CHR$(SCREEN(CR,CC+L))
13690 IF L<>0 THEN RETURN ELSE IF I3$=CHR$(45) OR I3$=CHR$(32) THEN GOTO 13695 ELSE RETURN
13695 ERRORN=1:LOCATE CR,CC+L:COLOR 15,0:PRINT I3$:COLOR 7,0:RETURN
13700 LOCATE 23,1:PRINT STRING$(75,32):LOCATE 23,20:PRINT " Name fields are required.";:LOCATE 3,13,1:COUNT=0:RETURN
13740 LOCATE 23,1:PRINT STRING$(75,32):LOCATE 23,20:PRINT " Name fields are required.";:LOCATE 3,41,1:COUNT=9:RETURN
15000 '-------------------------INKEY ROUTINE -------------------------------
15150 IP$=STRING$(IPC," "):CT=0:P1=0:PS=POS(0)
15155 IF OF=1 THEN LOCATE ,,1 ELSE LOCATE ,,0
15157 I$=INKEY$:IF I$="" THEN 15157 ELSE LOCATE ,,0
15161 IF I$=CR$ THEN 15200
15162 IF I$=CHR$(8) THEN LOCATE CSRLIN,POS(0)-1:PRINT" ";:LOCATE CSRLIN,POS(0)-1:CT=CT-1:IF CT<=0 THEN MID$(IP$,1)=SPACE$(IPC):BEEP:LOCATE CSRLIN,PS:CT=0:GOTO 15155:ELSE MID$(IP$,1)=LEFT$(IP$,CT)+" ":GOTO 15155
15164 IF LEN(I$)=2 THEN IF RIGHT$(I$,1)=CHR$(75) THEN LOCATE CSRLIN,POS(0)-1:PRINT" ";:LOCATE CSRLIN,POS(0)-1:CT=CT-1:IF CT<=0 THEN MID$(IP$,1)=SPACE$(IPC):BEEP:LOCATE CSRLIN,PS:CT=0:GOTO 15155:ELSE MID$(IP$,1)=LEFT$(IP$,CT)+" ":GOTO 15155
15165 IF LEN(I$)= 2 THEN 15155 ELSE IF I$=CHR$(46) THEN GOTO 15155 ELSE IF I$=CHR$(63) THEN 15155 ELSE IF ASC(I$) < 47 AND ASC(I$) > 122 THEN 15155
15166 IF I$=ESC$ THEN IP$=I$:RETURN
15170 IF PT=1 THEN PRINT I$;
15180 CT=CT+1:MID$(IP$,CT,1)=I$
15190 IF CT=IPC THEN RETURN ELSE GOTO 15155
15200 FOR L=IPC TO 1 STEP -1
15210 IF MID$(IP$,L,1)<>" " THEN P1=L:L=1
15220 NEXT L
15230 IP$=LEFT$(IP$,P1):RETURN
19999 '--------------------------OPENING LOGO ---------------------------------
20000 DIM C$(10,7)
20010 CLS
20020 M$(1,1)="█████ █████"
20030 M$(1,2)=" ████ ████ "
20040 M$(1,3)=" ██ ███ ██ "
20050 M$(1,4)=" ██ █ ██ "
20060 M$(1,5)=" ██ ██ "
20070 M$(1,6)="███ ███ "
20080 M$(1,7)="███ ███ "
20090 C$(1,1)=" ███ "
20100 C$(1,2)=" █████"
20110 C$(1,3)=" ███████"
20120 C$(1,4)="████ ████"
20130 C$(1,5)="███ ███"
20140 C$(1,6)="█████████"
20150 C$(1,7)="███ ███"
20160 C$(2,1)="███████"
20170 C$(2,2)=" ███"
20180 C$(2,3)=" ███"
20190 C$(2,4)=" ███"
20200 C$(2,5)=" ███"
20210 C$(2,6)=" ███"
20220 C$(2,7)="███████"
20230 C$(3,1)="████"
20240 C$(3,2)=" ███"
20250 C$(3,3)=" ███"
20260 C$(3,4)=" ███"
20270 C$(3,5)=" ███"
20280 C$(3,6)=" ███ █"
20290 C$(3,7)="██████████"
20300 C$(5,1)="██████████"
20310 C$(5,2)="███ ███"
20320 C$(5,3)="███"
20330 C$(5,4)="██████████"
20340 C$(5,5)=" ████"
20350 C$(5,6)="███ ████"
20360 C$(5,7)="██████████"
20370 C$(6,1)="██████████"
20380 C$(6,2)="██████████"
20390 C$(6,3)=" ████"
20400 C$(6,4)=" ████"
20410 C$(6,5)=" ████"
20420 C$(6,6)=" ████"
20430 C$(6,7)=" ████"
20440 C$(7,1)="████"
20450 C$(7,2)=" ███"
20460 C$(7,3)=" ███"
20470 C$(7,4)=" ███"
20480 C$(7,5)=" ███"
20490 C$(7,6)=" ███"
20500 C$(7,7)="█████"
20510 FOR Y= 1 TO 7
20520 LOCATE Y,12:PRINT M$(1,Y) TAB(25) C$(1,Y) TAB(36) C$(2,Y) TAB(45) C$(3,Y)
20530 LOCATE Y+8,22:PRINT C$(3,Y) TAB(34) C$(2,Y) TAB(44) C$(5,Y) TAB(56) C$(6,Y)
20540 NEXT Y
20550 COLOR 23,0
20560 FOR X= 17 TO 23
20570 LOCATE X,50:PRINT C$(7,X-16);
20580 NEXT
20590 COLOR 7,0
20600 LOCATE 24,1:PRINT "(C) COPYRIGHT William Dwinell and Mike Berry 1983";
20610 FOR WAITING=1 TO 3000:NEXT
20620 CLS
21140 FLEN=60:DPH=16:WDH=80:BDR=1
21160 Y=((WDH-FLEN)/2)-1:LOCATE BDR,Y:COLOR 15,0:PRINT CHR$(201);STRING$(FLEN+4,205);CHR$(187)
21180 FOR I=1 TO DPH:LOCATE I+BDR,Y:PRINT CHR$(186);:LOCATE I+BDR,(FLEN+5+Y):PRINT CHR$(186):NEXT
21200 LOCATE I+BDR,Y:PRINT CHR$(200);STRING$(FLEN+4,205);CHR$(188):COLOR 7,0
21220 LOCATE 3,37:COLOR 0,7:PRINT" MAILIST1 ";:COLOR 7,0
21240 LOCATE 20,18:PRINT"(C) Copyright William Dwinell and Mike Berry 1983";
21242 LOCATE 4,36:PRINT" RELEASE 4.0 "
21244 LOCATE 6,12:PRINT "This program is released to PUBLIC DOMAIN with the provisions ";
21245 LOCATE 7,12:PRINT "that lines 20000 through 25000 of program remain unmodified.";
21246 LOCATE 11,12:PRINT "The authors would appreciate knowing of any problems or";
21247 LOCATE 12,12:PRINT "suggestions for improvements. Please notify by mail or";
21248 LOCATE 13,12:PRINT "a message on CompuServe, see next frame."
21249 LOCATE 9,12:PRINT "No portion of this program is to be sold."
21260 LOCATE 23,30:COLOR 16,7:PRINT" Press any key to continue ";:COLOR 7,0
21280 I$=INKEY$:IF I$="" GOTO 21280
21290 FOR NEWSCREEN = 6 TO 15:LOCATE NEWSCREEN,12:PRINT STRING$(61,32):NEXT
21300 LOCATE 6,12:PRINT "If you find this program is useful to you a contribution";
21310 LOCATE 7,12:PRINT "in the amount of $15 is suggested."
21320 LOCATE 9,12:PRINT "All contributers will be notified of enhancements or future";
21330 LOCATE 10,12:PRINT "releases of MAILIST1. Send contributions to:"
21340 LOCATE 12,20:PRINT "Mike Berry Bill Dwinell"
21350 LOCATE 13,20:PRINT "PO Box 18708 1144 Hallmark Drive"
21360 LOCATE 14,20:PRINT "Shreveport, La or Shreveport, La."
21370 LOCATE 15,20:PRINT "71138 71118"
21380 LOCATE 16,20:PRINT "CIS 70235,1300 CIS 70055,1145"
24980 LOCATE 23,30:PRINT STRING$(45,32)
24990 LOCATE 23,30:COLOR 16,7:PRINT" Press any key to begin ";:COLOR 7,0
24999 I$=INKEY$:IF I$="" GOTO 24999 ELSE RETURN
25000 '(C) Copyright William Dwinell and Mike Berry 1983
2000 ' ----------------------- SORT ROUTINE ---------------------------------
2010 DEFINT A-Z:COMMON N,RAN$,IN$,NBR$,SRT$,S,CR$,ESC$:SRT$=RAN$+".SRT":DIM I1$(1000):DIM I1(1000):ON ERROR GOTO 10000
2020 I=0:MN=2:KEY 9,"":CLS:LOCATE 1,34:COLOR 0,7:PRINT" MAILIST1 ":COLOR 7,0:LOCATE 5,29:COLOR 15,0:PRINT"DO YOU WANT TO SORT BY":COLOR 7,0
2060 LOCATE 8,33:PRINT"1 Last name"
2080 LOCATE 9,33:PRINT"2 Zipcode"
2100 LOCATE 19,24:PRINT"Type the number of your choice:":GOSUB 11100
2105 IF I$=CHR$(27) THEN LOCATE 19,24:COLOR 15,0:PRINT"Loading main program.............":COLOR 7,0:CHAIN "MAILIST1.BAS",110
2120 IF I<1 OR I>2 THEN LOCATE 23,27:BEEP:COLOR 15,0:PRINT"PLEASE TYPE NUMBER 1 OR 2":COLOR 7,0:GOTO 2100
2130 IF I = 2 GOTO 2460
2135 LOCATE 25,1:PRINT SPACE$(30);:LOCATE 19,24:COLOR 15,0:PRINT"Sorting........Please wait......":COLOR 7,0:L=1:OPEN "I",1,IN$
2140 IF EOF(1) THEN CLOSE 1:GOTO 2280
2145 INPUT#1,I1$(L)
2160 I=LEN(I1$(L)):I=I-5
2180 I1$(L)=MID$(I1$(L),6,INSTR(I1$(L),"\")-5):I=I-15:I1$(L)=I1$(L)+STR$(L)
2200 L=L+1:GOTO 2140
2280 M=N
2300 M=INT(M/2):IF M=0 THEN GOTO 2700
2320 K=N-M:FOR L=1 TO K
2340 I=L
2360 J=I+M
2380 IF I1$(I)<I1$(J) THEN 2420
2400 SWAP SV$,I1$(I):SWAP I1$(I),I1$(J):SWAP I1$(J),SV$:I=I-M:IF I-1>=0 THEN 2360
2420 NEXT L:GOTO 2300
2440 ' ----------------------ZIPCODE SORT -------------------------
2460 LOCATE 25,1:PRINT SPACE$(30);:LOCATE 19,24:COLOR 15,0:PRINT"Sorting.......Please wait.......":COLOR 7,0:L=1:OPEN "I",1,IN$
2465 IF EOF(1) THEN CLOSE 1:GOTO 2540
2470 INPUT#1,I$
2480 I=LEN(I$):I=I-20
2485 I1$(L)=" "
2500 MID$(I1$(L),1,5)=I$:I1$(L)=I1$(L)+RIGHT$(I$,I)
2520 L=L+1:GOTO 2465
2540 M=N
2560 M=INT(M/2):IF M=0 THEN GOTO 2700
2580 K=N-M:FOR L=1 TO K
2600 I=L
2620 J=I+M
2640 IF I1$(I)<I1$(J) THEN 2680
2660 SWAP SV$,I1$(I):SWAP I1$(I),I1$(J):SWAP I1$(J),SV$:I=I-M:IF I-1>=0 THEN 2620
2680 NEXT L:GOTO 2560
2700 FOR L=1 TO N:I$=RIGHT$(I1$(L),5)
2702 I=INSTR(I$," "):IF I=1 THEN I=INSTR(2,I$," ")
2704 I1(L)=VAL(RIGHT$(I$,LEN(I$)-I))
2706 NEXT L
2719 S=1:OPEN "o",1,SRT$
2720 FOR L=1 TO N:PRINT#1,I1(L):NEXT L
2740 CLOSE 1:BEEP:LOCATE 19,24:COLOR 15,0:PRINT"Loading main program.............":COLOR 7,0:CHAIN "MAILIST1.BAS",110
10000 IF ERR = 71 THEN CLS ELSE GOTO 10080
10020 LOCATE 10,20:PRINT"DISK DRIVE NOT READY. PLEASE INSERT DATA DISK"
10040 LOCATE 11,20:PRINT"OR CLOSE DRIVE DOOR. PRESS ENTER TO RESUME":BEEP
10060 I$=INKEY$:IF I$=CHR$(13) THEN RESUME ELSE 10060
10080 ON ERROR GOTO 0
11100 LOCATE 25,1:COLOR 15,0:PRINT"Esc ";:COLOR 0,7:PRINT" RETURN TO PRIOR MENU ";:COLOR 7,0
11120 I$=INKEY$:IF I$="" THEN 11120
11140 IF VAL(I$)=0 THEN RETURN ELSE I=VAL(I$):RETURN
Press <ENTER>
Volume in drive A has no label
Directory of A:\
AUTODIAL BAS 6016 9-13-83 12:38p
CONCOL BAS 1209 1-04-01 1:14a
CONCOL EXE 20352 5-12-88 5:32p
CONF PAR 128 5-09-87 2:04p
DAT DOC 14544 5-10-87 2:03p
DATA 256 5-05-84 6:52a
DATAC EXE 52608 11-22-88 8:07a
DEMO 1536 2-13-85 12:12p
DEMOA 1408 1-13-85 4:53p
DEMON 128 1-13-85 5:07p
FILES330 TXT 2618 4-19-89 12:06p
GO BAT 38 10-19-87 3:56p
GO TXT 1310 4-05-89 1:04p
MA BAS 42884 1-24-85 5:48p
MA DOC 35222 1-31-85 10:54p
MACOPY BAT 370 3-04-84 12:30a
MADOC BAT 667 2-16-84 1:20p
MAIL DIR 68 7-15-84 7:12p
MAIL DOC 26068 1-01-80 11:09p
MAIL IST 19584 5-05-84 6:55a
MAILIST1 BAS 40832 9-12-83 1:01p
MAILIST1 DIR 99 7-15-84 7:13p
MAILIST1 DOC 15020 9-12-84 11:09p
MAILSORT BAS 2816 9-12-83 1:02p
MANUAL BAT 147 3-02-89 10:00a
START BAT 22 2-25-85 5:44p
26 file(s) 285950 bytes
20480 bytes free