PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #330)

[PCjs Machine "ibm5170"]

Waiting for machine "ibm5170" to load....

Information about “DATACOUNT ACCOUNTING”

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.

AUTODIAL.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

CONCOL.BAS

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

FILES330.TXT

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.


GO.TXT

╔═════════════════════════════════════════════════════════════════════════╗
║            <<<<  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.           ║
║                                                                         ║
╚═════════════════════════════════════════════════════════════════════════╝

MA.BAS

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

MA.DOC





















                           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.


MAIL.DOC



















                                     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.


MAILIST1.BAS



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


MAILSORT.BAS



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> 

Directory of PC-SIG Library Disk #0330

 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