Compucolor.org – Virtual Media

Listing of file='CHECKB.BAS;01' on disk='vmedia/ncc_17-sector.ccvf'

1 REM MODIFIED BY JIM HELMS & FRED PEZOK ON  OCT 8 79 


100 CLEAR 1024:PLOT 6,6,15,12,10,10
120 DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
140 PRINT "CHECKBOOK   V10.79":PRINT
160 DEF FN A(Y)= INT (Y* 10000+ M* 100+ D)
180 DEF FN B(DT)= INT (DT/ 10000)
200 DEF FN C(DT)= INT ((DT- 10000* Y)/ 100)
220 DEF FN D(DT)= INT ((DT- 10000* Y)- 100* M)
240 DEF FN E(NC)= 4* INT (ABS (NC/ 4+ .8))
260 DEF FN F(AM)= INT (100* AM+ .5)
280 PRINT "MOUNT DATA DISK (IF DESIRED)":PRINT
300 INPUT "HIT 'RETURN' WHEN READY  ";A$
320 PLOT 12,10,10
340 PRINT "CAUTION: CREATE DATA FILES IN CHRONOLOGICAL ORDER"
360 PRINT :PRINT "WHEN ASKED TO INPUT THE NUMBER OF ANTICIPATED CHECKS,"
380 PRINT :PRINT "ENTER A NUMBER GREATER THAN ANTICIPATED."
400 PRINT :PRINT "THIS NUMBER SHOULD INCLUDE BOTH CHECKS & DEPOSITS."
420 PRINT :PRINT "DO NOT JUMP BACK AND FORTH BETWEEN YEARS"
440 PRINT :PRINT "WHEN ENTERING CHECKS OR DEPOSITS.  YOU MAY MOVE FORWARD,"
460 PRINT :PRINT "EXAMPLE: JAN -> FEB -> MAR OF THE SAME YEAR, OR 77 -> 78 -> 79."
480 PRINT :PRINT "THERE IS NO CHECK FOR DUPLICATE CHECK NUMBERS FILED"
500 PRINT :PRINT "IN DIFFERENT MONTHS."
520 PRINT :PRINT "TO INSURE MONTHLY BALANCES ARE UPDATED, YOU SHOULD"
540 PRINT :PRINT "EXECUTE A COMMAND 6 - THIS WILL THEN UPDATE ALL"
560 PRINT :PRINT "BALANCES FOR CHECKS AND DEPOSITS FOR THAT YEAR."
580 PLOT 3,0,30:INPUT "HIT 'RETURN' TO CONTINUE  ";A$
600 GOSUB 10000:REM  DRIVE SELECT
620 INPUT "ENTER DATE OF FIRST NEW ENTRY (Y,M,D) ";CY,CM,CD
640 IF CM< > INT (CM)OR CM< 1OR CM> 12THEN 620
660 IF CD< > INT (CD)OR CD< 1OR CD> 31THEN 620
680 IF CY< > INT (CY)OR CY< 0OR CY> 99THEN 620
700 FM= CM
720 REM  OPEN YEARLY DATA FILE


740 FILE "T",820:B1= CY:GOSUB 9360
760 FILE "R",13,F1$,1
780 GOTO 1300
800 REM  CREATE BALANCE FILE


820 FILE "E",FL,ER,LN
840 B1= CY:GOSUB 9360
860 IF ER< > 14THEN 11060
880 FILE "N",F1$,13,16,8
900 FILE "R",13,F1$,4
920 REM  INITIALIZE YEARLY FILE


940 FOR I= 1TO 13
960 PUT 13,I,1;0,0,0,0
980 NEXT I
1000 REM  OPEN PREVIOUS YRS FILE


1020 B1= CY- 1:GOSUB 9360
1040 FILE "T",1120
1060 FILE "R",14,F1$,1
1080 GOTO 1180
1100 REM  ENTER BALANCE BROUGHT FORWARD


1120 INPUT "BALANCE FORWARD  ";BF:BF= INT (BF* 100+ .5)
1140 GOTO 1220
1160 REM  GET PREVIOUS YRS BALANCE


1180 GET 14,13,5;BF
1200 FILE "C",14
1220 PUT 13,13;BF,BF
1240 PUT 13,CM;BF,BF
1260 IF CM< > 1THEN PUT 13,CM;0
1280 FILE "D",13
1300 REM  OPEN MONTHLY DATA FILE


1320 FILE "T",1420
1340 RESTORE :FOR I= 1TO CM:READ M$:NEXT I
1360 B2= CY:GOSUB 9400:FILE "R",FM,F$,6
1380 GOTO 1780
1400 REM  ENTER NUMBER CHECKS ANTICIPATED NEW FILE


1420 FILE "E",FL,ER,LN
1440 IF ER< > 14THEN 11060
1460 INPUT "NUMBER OF CHECKS ANTICIPATED ";NC
1480 NR= FN E(NC):IF NR< 8THEN NR= 8
1500 B2= CY:GOSUB 9400
1520 FILE "N",F$,NR,32,4
1540 FILE "R",CM,F$,4
1560 REM  INITIALIZE MONTHLY FILE


1580 FOR I= 1TO NR
1600 PUT CM,I,1;0,0,0,0," "[16]
1620 NEXT I
1640 PUT 13,CM,13;NR
1660 FM= CM:IF CM> 1THEN 1780
1680 PUT FM,1;(CY- 1)* 10000+ 1231,0,BF,20,"BAL FROM LST YR "[16]
1700 LR= 1:PUT 13,CM,9;LR
1720 FILE "T",1780
1740 FILE "D",13,FM
1760 REM  CHECKBOOK MENU


1780 PLOT 27,24,12
1800 PRINT "+-SELECTION        ENTER C IF VALID OR I IF INVALID------------+"
1820 PLOT 28
1840 PRINT "n         CHECK                                CATE            n"
1860 PLOT 28
1880 PRINT "n  DATE   NUMBER   PAYEE/PAYER-----    AMOUNT  GORY   BALANCE  n"
1900 PLOT 3,0,17
1920 PRINT "SELECTIONS:                     4) UPDATE DEPOSIT"
1940 PRINT " 1) ENTER CHECK                 5) MONTHLY SUMMARY"
1960 PRINT " 2) UPDATE CHECK                6) DISPLAY YEAR BY CATEGORY"
1980 PRINT " 3) ENTER DEPOSIT               7) END PROGRAM"
2000 PRINT "EXPENSE CATEGORIES"
2020 PRINT " 1) AUTO EXPENSES              11) CASH"
2040 PRINT " 2) BANK CHARGES               12) TRAVEL - BUSINESS"
2060 PRINT " 3) CHARITIES                  13) VACATION"
2080 PRINT " 4) ALL MEDICAL EXPENSES       14) UTILITIES"
2100 PRINT " 5) ENTERTAINMENT              DEPOSIT CATEGORIES"
2120 PRINT " 6) FOOD                       15) WAGES, SALARIES, TIPS"
2140 PRINT " 7) HOUSING (RENT & MORTGAGE)  16) DIVIDEND INCOME (STOCKS)"
2160 PRINT " 8) CLOTHING                   17) CAPITAL GAINS"
2180 PRINT " 9) HOME IMPROVEMENT           18) INTEREST INCOME"
2200 PRINT "10) OTHER LOAN PAYMENTS        19) OTHER TAXABLE INCOME"
2220 Y1= 3
2240 PLOT 3,0,16,11
2260 PRINT "ENTER ALL DATES AS A CONTINUOUS 6 DIGIT NUMBER (790101)"
2280 Y1= Y1+ 1:IF Y1> 15THEN Y1= 4
2300 IF Y1< 15THEN PLOT 3,0,Y1+ 1,11
2320 PLOT 3,0,Y1,11
2340 POKE 33278,0
2360 SB= PEEK (33278):IF SB= 0THEN 2360
2380 SB= SB- 48:IF SB< 1OR SB> 7THEN 2340
2400 PRINT :ON SBGOTO 2500,5300,3800,6240,7280,7740,2420
2420 REM END & LOAD MENU


2440 FILE "C",13,CM:PLOT 6,6,12,10,10,27,11
2460 INPUT "MOUNT PROGRAM DISK - HIT  'RETURN'   ";A$
2470 GOTO 11080
2480 REM PAY THE CHECK & FILE IT


2500 FILE "T",3120
2520 GET 13,13,5;CB
2540 GET 13,CM,5;MB,LR,NR
2560 PLOT 3,1,Y1:INPUT DT:PLOT 3,1,Y1,32:GOSUB 9440
2580 ON VGOTO 2620,2600
2600 PLOT 3,1,Y1:PRINT SPC( 7)"":GOTO 2560
2620 IF M< > CMTHEN 3120
2640 IF LR= NRTHEN GOSUB 9260:GOTO 2240
2660 PLOT 3,9,Y1:INPUT CN:PLOT 3,9,Y1,32
2680 FOR NC= 1TO LR
2700 GET CM,NC,5;CK
2720 IF CK= CNTHEN PLOT 3,19,Y1:PRINT "ALREADY ON FILE":GOTO 2240
2740 NEXT NC
2760 PLOT 3,18,Y1:INPUT P$:PLOT 3,18,Y1,32
2780 PLOT 3,37,Y1:INPUT AM:AM= FN F(AM):GOSUB 8880:PLOT 3,37,Y1
2800 PRINT SPC( 9)"":PLOT 3,45- LEN (AM$),Y1:PRINT AM$
2820 PLOT 3,47,Y1:INPUT CT:PLOT 3,47,Y1,32
2840 IF CT< > INT (CT)OR CT< 1OR CT> 14THEN PLOT 3,47,Y1,32,32,32:GOTO 2820
2860 PLOT 3,63,Y1:POKE 33278,0
2880 KB= PEEK (33278):IF KB= 0THEN 2880
2900 IF KB= 73THEN Y1= Y1- 1:GOTO 2240
2920 IF KB< > 67THEN PLOT 3,63,Y1,32:GOTO 2860
2940 LR= LR+ 1:DT= FN A(Y)
2960 PUT CM,LR,1;DT,CN,- AM,CT,P$[16]
2980 MB= MB- AM:PUT 13,CM,5;MB,LR
3000 CB= CB- AM:PUT 13,13,5;CB
3020 GOSUB 8980
3040 AM= CB:GOSUB 8880
3060 PLOT 3,61- LEN (AM$),Y1:PRINT AM$
3080 GOTO 2240
3100 REM OPEN MONTHLY FILE


3120 GOSUB 8980
3140 IF Y< > CYTHEN 3500
3160 FILE "C",CM:FILE "T",3320
3180 RESTORE
3200 FOR I= 1TO M:READ M$:NEXT I
3220 B2= Y:GOSUB 9400:FILE "R",M,F$,6
3240 CM= M:GET 13,CM,5;MB,LR,NR
3260 FILE "T",3120
3280 GOTO 2640
3300 REM CREATE A NEW MONTHLY FILE


3320 PLOT 3,0,16,11:INPUT "NUMBER OF ANTICIPATED ITEMS  ";NC
3340 NR= FN E(NC):IF NR< 8THEN NR= 8
3360 FILE "E",FL,ER,LN
3380 B2= Y:GOSUB 9400
3400 FILE "N",F$,NR,32,4:GOSUB 5160
3420 PUT 13,M;0,CB,0,NR
3440 IF M> 1THEN GET 13,M- 1,5;TB:PUT 13,M;TB
3460 GOTO 3180
3480 REM RECORD NOT ON FILE


3500 FILE "T",3600
3520 FILE "C",13,CM
3540 B1= Y:GOSUB 9360:FILE "R",13,F1$,1
3560 CM= M:CD= D:CY= Y
3580 GOTO 2240
3600 PLOT 3,19,Y1:PRINT "YEAR DESIRED IS NOT ON DISK"
3620 AM= CB:GOSUB 8880:FOR Y1= 16TO 31:PLOT 3,0,Y1,11:NEXT Y1:PLOT 3,0,17
3640 PRINT " CURRENT BALANCE IS          ";AM$
3660 PRINT :PRINT "DO YOU WISH TO CONTINUE?"
3680 INPUT " (YOU MAY WANT TO INSERT ANOTHER DISK)   ";A$
3700 IF ASC (A$)= 78THEN 11080
3720 CM= M:CD= D:CY= Y:FM= M
3740 PLOT 6,7
3760 GOTO 740
3780 REM INPUT DEPOSITS & FILE 


3800 PLOT 3,1,Y1:INPUT DT:PLOT 3,1,Y1,32:GOSUB 9440
3820 ON VGOTO 3860,3840
3840 PLOT 3,1,Y1:PRINT SPC( 7)"":GOTO 3800
3860 FILE "T",4320
3880 GET 13,13,5;CB
3900 GET 13,CM,5;MB,LR,NR
3920 IF M< > CMTHEN 4340
3940 IF LR= NRTHEN GOSUB 9260:GOTO 2240
3960 PLOT 3,9,Y1:PRINT "DEPOSIT"
3980 PLOT 3,18,Y1:INPUT P$:PLOT 3,18,Y1,32
4000 PLOT 3,37,Y1:INPUT AM:AM= FN F(AM):PLOT 3,37,Y1:PRINT SPC( 9)""
4020 GOSUB 8880:PLOT 3,45- LEN (AM$),Y1:PRINT AM$
4040 PLOT 3,47,Y1:INPUT CT:PLOT 3,47,Y1,32
4060 IF CT< > INT (CT)OR CT< 15OR CT> 19THEN PLOT 3,48,Y1,32,32:GOTO 4040
4080 PLOT 3,63,Y1:POKE 33278,0
4100 KB= PEEK (33278):IF KB= 0THEN 4100
4120 IF KB= 73THEN Y1= Y1- 1:GOTO 2240
4140 IF KB< > 67THEN PLOT 3,63,Y1,32:GOTO 4080
4160 LR= LR+ 1:DT= FN A(Y)
4180 PUT CM,LR;DT,0,AM,CT,P$[16]
4200 MB= MB+ AM:PUT 13,CM,5;MB,LR
4220 CB= CB+ AM:PUT 13,13,5;CB
4240 GOSUB 8980
4260 AM= CB:GOSUB 8880
4280 PLOT 3,61- LEN (AM$),Y1:PRINT AM$
4300 GOTO 2240
4320 REM OPEN MONTHLY FILE


4340 GOSUB 8980
4360 IF Y< > CYTHEN 4720
4380 FILE "C",CM:FILE "T",4540
4400 RESTORE
4420 FOR I= 1TO M:READ M$:NEXT I
4440 B2= Y:GOSUB 9400:FILE "R",M,F$,6
4460 CM= M:GET 13,CM,5;MB,LR,NR
4480 FILE "T",4340
4500 GOTO 3940
4520 REM CREATE A NEW MONTHLY FILE


4540 PLOT 3,0,16,11:INPUT "NUMBER OF ANTICIPATED ITEMS  ";NC
4560 NR= FN E(NC):IF NR< 8THEN NR= 8
4580 FILE "E",FL,ER,LN
4600 B2= Y:GOSUB 9400
4620 FILE "N",F$,NR,32,4:GOSUB 5160
4640 PUT 13,M;0,CB,0,NR
4660 IF M> 1THEN GET 13,M- 1,5;TB:PUT 13,M;TB
4680 GOTO 4400
4700 REM RECORD NOT ON FILE


4720 FILE "T",4820
4740 FILE "C",13,CM
4760 B1= Y:GOSUB 9360:FILE "R",13,F1$,1
4780 CM= M:CD= D:CY= Y
4800 GOTO 2240
4820 PLOT 3,19,Y1:PRINT "YEAR DESIRED IS NOT ON DISK"
4840 AM= CB:GOSUB 8880:FOR Y1= 16TO 31:PLOT 3,0,Y1,11:NEXT Y1:PLOT 3,0,17
4860 PRINT " CURRENT BALANCE IS          ";AM$
4880 PRINT :PRINT "DO YOU WISH TO CONTINUE?"
4900 INPUT " (YOU MAY WANT TO INSERT ANOTHER DISK)   ";A$
4920 IF ASC (A$)= 78THEN 11080
4940 FM= M:CM= M:CD= D:CY= Y
4960 PLOT 6,7
4980 GOTO 740
5000 REM  INITIALIZE YEARLY BALANCE


5020 FILE "R",101,F1$,4
5040 FOR I1= 1TO 13
5060 PUT 101,I1,1;0,0,0,0
5080 NEXI1
5100 FILE "C",101
5120 RETURN
5140 REM  INITIALIZE MONTHLY


5160 FILE "R",101,F$,4
5180 FOR I1= 1TO NR
5200 PUT 101,I1,1;0,0,0,0," "[16]
5220 NEXT I1
5240 FILE "C",101
5260 RETURN
5280 REM UPDATE/CORRECT CHECK DATA


5300 PLOT 3,1,Y1:INPUT DT:PLOT 3,1,Y1,32:GOSUB 9440
5320 ON VGOTO 5360,5340
5340 PLOT 3,1,Y1:PRINT SPC( 7)"":GOTO 5300
5360 IF CM< > MTHEN 5560
5380 GET 13,13,5;CB
5400 GET 13,CM,5;MB,LR,NR
5420 PLOT 3,9,Y1:INPUT CN:PLOT 3,9,Y1,32,8
5440 FOR NC= 1TO LR
5460 GET CM,NC,5;CK,A1,C2,P2$[16]
5480 IF CK= CNTHEN 5740
5500 NEXT NC
5520 PLOT 3,19,Y1:PRINT "NOT FOUND "
5540 GOTO 2240
5560 FILE "C",CM:RESTORE :FILE "T",7100
5580 FOR I= 1TO M:READ M$:NEXT I
5600 B2= Y:GOSUB 9400:FILE "R",M,F$,6
5620 CM= M
5640 IF CY= YTHEN 5400
5660 FILE "T",4820
5680 B1= Y:GOSUB 9360:FILE "C",13:FILE "R",13,F1$,1
5700 GET 13,13,5;CB
5720 CY= Y:GOTO 5400
5740 PLOT 3,19,Y1:PRINT P2$:AM= ABS (A1):GOSUB 8880:PLOT 3,45- LEN (AM$),Y1
5760 PRINT AM$:PLOT 3,48,Y1:PRINT C2
5780 PLOT 3,63,Y1:POKE 33278,0
5800 KB= PEEK (33278):IF KB= 0THEN 5800
5820 PRINT :IF KB= 67THEN 2240
5840 IF KB< > 73THEN PLOT 3,63,Y1,32:GOTO 5780
5860 Y1= Y1+ 1:IF Y1> 15THEN Y1= 4
5880 PLOT 3,0,Y1,11:PRINT "CHANGE:"
5900 PLOT 3,18,Y1:INPUT P$:PLOT 3,18,Y1,32
5920 PLOT 3,37,Y1:INPUT AM:PLOT 3,37,Y1:PRINT SPC( 9)"":AM= FN F(AM)
5940 GOSUB 8880:PLOT 3,45- LEN (AM$),Y1:PRINT AM$
5960 PLOT 3,47,Y1:INPUT CT:PLOT 3,47,Y1,32
5980 IF CT< > INT (CT)OR CT< 1OR CT> 14THEN PLOT 3,48,Y1,32,32:GOTO 5960
6000 PLOT 3,63,Y1:POKE 33278,0
6020 KB= PEEK (33278):IF KB= 0THEN 6020
6040 PRINT :IF KB= 73THEN Y1= Y1- 1:GOTO 2240
6060 IF KB< > 67THEN 6000
6080 DT= FN A(Y)
6100 PUT CM,NC,1;DT,CN,- AM,CT,P$[16]
6120 MB= MB+ A1- AM:PUT 13,CM,5;MB
6140 CB= CB+ A1- AM:PUT 13,13,5;CB
6160 AM= CB:GOSUB 8880
6180 PLOT 3,61- LEN (AM$),Y1:PRINT AM$
6200 GOTO 2240
6220 REM UPDATE/CORRECT DEPOSITS


6240 PLOT 3,1,Y1:INPUT DT:PLOT 3,1,Y1,32:GOSUB 9440
6260 ON VGOTO 6300,6280
6280 PLOT 3,1,Y1:PRINT SPC( 7)"":GOTO 6240
6300 IF M< > CMTHEN 6460
6320 GET 13,13,5;CB
6340 GET 13,CM,5;MB,LR,NR
6360 FOR NC= 1TO LR
6380 GET CM,NC;D1,C1,A1,C2,P2$[16]
6400 IF DT= D1AND C1= 0THEN 6640
6420 NEXT NC
6440 PLOT 3,19,Y1:PRINT "NOT FOUND":GOTO 2240
6460 RESTORE
6480 FOR I= 1TO M:READ M$:NEXT I
6500 FILE "C",CM:FILE "T",7100
6520 B2= Y:GOSUB 9400:FILE "R",M,F$,6
6540 CM= M:IF Y= CYTHEN 6300
6560 FILE "C",13:FILE "T",4820
6580 B1= Y:GOSUB 9360:FILE "R",13,F1$,1
6600 GET 13,13,5;CB
6620 CY= Y:GOTO 6300
6640 PLOT 3,9,Y1:PRINT "DEPOSIT":PLOT 3,19,Y1:PRINT P2$:AM= A1
6660 GOSUB 8880:PLOT 3,45- LEN (AM$),Y1:PRINT AM$:PLOT 3,48,Y1:PRINT C2
6680 PLOT 3,63,Y1:POKE 33278,0
6700 KB= PEEK (33278):IF KB= 0THEN 6700
6720 IF KB= 67THEN 2240
6740 IF KB< > 73THEN PLOT 3,63,Y1,32:GOTO 6680
6760 Y1= Y1+ 1:IF Y1> 15THEN Y1= 4
6780 PLOT 3,0,Y1,11:PRINT "CHANGE:"
6800 PLOT 3,18,Y1:INPUT P$:PLOT 3,18,Y1,32
6820 PLOT 3,37,Y1:INPUT AM:PLOT 3,37,Y1:PRINT SPC( 9)"":AM= FN F(AM)
6840 GOSUB 8880:PLOT 3,45- LEN (AM$),Y1:PRINT AM$
6860 PLOT 3,47,Y1:INPUT CT:PLOT 3,47,Y1,32
6880 IF CT< > INT (CT)OR CT< 15OR CT> 19THEN PLOT 3,48,Y1,32,32:GOTO 6860
6900 PLOT 3,63,Y1:POKE 33278,0
6920 KB= PEEK (33278):IF KB= 0THEN 6920
6940 PRINT :IF KB= 73THEN Y1= Y1- 1:GOTO 2240
6960 IF KB< > 67THEN PLOT 3,63,Y1,32:GOTO 6900
6980 DT= FN A(Y)
7000 PUT CM,NC;DT,0,AM,CT,P$[16]
7020 MB= MB- A1+ AM:PUT 13,CM,5;MB
7040 CB= CB- A1+ AM:PUT 13,13,5;CB
7060 AM= CB:GOSUB 8880:PLOT 3,61- LEN (AM$),Y1:PRINT AM$
7080 GOTO 2240
7100 REM  NO MONTH FILE TRAP


7120 FILE "E",FL,ER,LN
7140 IF ER= 14THEN 7220
7160 PLOT 3,19,Y1:PRINT "DISK ERROR"
7180 FILE "C",13
7200 GOTO 11080
7220 PLOT 3,19,Y1:PRINT "MONTH IS NOT ON FILE"
7240 GOTO 2240
7260 REM DISPLAY MONTHLY TRANSACTIONS


7280 PLOT 12,27,11,10
7300 GET 13,CM;PB,CB,LR
7320 RESTORE :FOR I= 1TO CM:READ M$:NEXT I
7340 PRINT "MONTH",M$,1900+ CY;""
7360 PRINT "DATE      NUMBER   PAYEE/PAYER     CAT      AMOUNT     BALANCE"
7380 PLOT 10,10:MT= PB
7400 AM= PB:GOSUB 8880
7420 PRINT "BALANCE FROM PREVIOUS MONTH			  "AM$:PRINT
7440 IF LR= 0THEN 7680
7460 FOR I= 1TO LR
7480 GET CM,I;DT,CN,AM,CT,P$[16]
7500 IF CT< > 20THEN MT= MT+ AM
7520 AM= ABS (AM)
7540 GOSUB 8880
7560 DT$= STR$ (DT)+ "  "
7580 IF CN> 0THEN CN$= RIGHT$ ("     "+ STR$ (CN),8)+ "   "
7600 IF CN< 1THEN CN$= "DEPOSIT   "
7620 PRINT DT$;CN$;P$;RIGHT$ ("   "+ STR$ (CT),3);AM$;
7640 AM= MT:GOSUB 8880:PRINT AM$
7660 NEXT I
7680 PRINT :INPUT "HIT 'RETURN' TO CONTINUE   ";A$
7700 GOTO 1780
7720 REM  DISPLAY CHECKS & DEPOSITS


7740 PLOT 12,27,11
7760 PRINT "CHECKS:   CATEGORIES  1 - 14"
7780 PRINT "DEPOSITS: CATEGORIES 15 - 19"
7800 PRINT "TO LIST ALL:            A"
7820 FILE "T",7980:FILE "C",CM
7840 PRINT :T= 0
7860 INPUT "CATEGORY NUMBER         ";SK$
7880 CC= 1:IF SK$= "A"THEN CC= 2:GOTO 7960
7900 SK= VAL (SK$):IF SK< 1OR SK> 20THEN PLOT 28,11:GOTO 7860
7920 IF SK> 0AND SK< 15THEN T= - 1
7940 IF SK> 14AND SK< 20THEN T= 1
7960 YT= 0:RESTORE :I= 0
7980 I= I+ 1
8000 GET 13,I;PB,CB,LR
8020 IF I> 12THEN 8720
8040 READ M$
8060 IF LR< 1THEN 7980
8080 MT= 0
8100 B2= CY:GOSUB 9400:FILE "R",CM,F$,6
8120 PLOT 10
8140 PRINT "MONTH",M$,1900+ CY;""
8160 PRINT "DATE      NUMBER   PAYEE/PAYER     CAT      AMOUNT       TOTAL"
8180 PLOT 10,10
8200 FOR J= 1TO LR
8220 GET CM,J;DT,CN,AM,CT,P$[16]
8240 IF CT< > 20THEN PB= PB+ AM
8260 IF T= 1THEN CN= 0
8280 IF CC= 2THEN 8380
8300 IF SGN (AM)< > SGN (T)THEN 8560
8320 IF CT= 20THEN 8380
8340 IF CT< > SKTHEN 8560
8360 GOTO 8400
8380 IF CT< > 20THEN MT= MT+ AM:YT= YT+ AM:GOTO 8420
8400 AM= ABS (AM):MT= MT+ AM:YT= YT+ AM
8420 GOSUB 8880
8440 DT$= STR$ (DT)+ "  "
8460 IF CN> 0THEN CN$= RIGHT$ ("     "+ STR$ (CN),8)+ "   "
8480 IF CN< 1THEN CN$= "DEPOSIT   "
8500 PRINT DT$;CN$;P$;RIGHT$ ("   "+ STR$ (CT),3);AM$;
8520 AM= MT:GOSUB 8880
8540 PRINT AM$
8560 NEXT J
8580 PLOT 10,10:AM= PB:GOSUB 8880
8600 PRINT "MONTHLY BALANCE:                "AM$""
8620 PUT 13,I,5;PB:PUT 13,13,5;PB
8640 IF I< 12THEN PUT 13,I+ 1;PB,PB
8660 FILE "C",CM
8680 PLOT 6,5:FOR K= 0TO 31:PRINT "= ";:NEXT K:PRINT
8700 GOTO 7980
8720 AM= CB:GOSUB 8880
8740 PRINT "CLOSING BALANCE                 "AM$""
8760 FILE "T",1780
8780 RESTORE :FOR I= 1TO CM:READ M$:NEXT I
8800 B2= CY:GOSUB 9400:FILE "R",CM,F$,6
8820 PRINT :INPUT "HIT 'RETURN' TO CONTINUE   ";A$
8840 GOTO 1780
8860 REM  DOLLAR & CENT ROUTINE


8880 SG$= "":IF AM< 0THEN SG$= "-":AM= ABS (AM)
8900 A1$= STR$ (INT (AM/ 100))
8920 A2$= "."+ RIGHT$ (STR$ (AM+ 100- INT (AM/ 100)* 100),2)
8940 AM$= RIGHT$ ("          "+ SG$+ A1$+ A2$,12)
8960 RETURN
8980 REM  SORT CHECKS AND DEPOSITS


9000 GET 13,CM,9;LR,NR
9020 F= 0
9040 FOR I= 1TO LR
9060 GET CM,I;DT,CN,AM,CT,P$[16]
9080 GET CM,LR;D1,C1,A1,C2,P2$[16]
9100 IF D1> DTTHEN 9200
9120 IF C1= > CNAND D1= DTTHEN 9200
9140 PUT CM,I;D1,C1,A1,C2,P2$[16]
9160 PUT CM,LR;DT,CN,AM,CT,P$[16]
9180 IF I< LRTHEN F= 1
9200 NEXT I
9220 IF F= 1THEN 9020
9240 RETURN
9260 REM  FILE FULL WARNING


9280 PLOT 3,19,Y1
9300 PRINT "RECORD OVERFLOW - FILE IS FULL"
9320 RETURN
9340 REM  GENERATE YEARLY FILE NAMES


9360 F1$= "BAL"+ RIGHT$ (STR$ (B1+ 100),2):RETURN
9380 REM  GENERATE MONTHLY FILE NAME


9400 F$= M$+ RIGHT$ (STR$ (B2+ 100),2):RETURN
9420 REM  CHECK THE DATE


9440 V= 1
9460 Y= FN B(DT):M= FN C(DT):D= FN D(DT)
9480 IF Y< 0OR Y> 99THEN V= 2:RETURN
9500 IF M< 1OR M> 12THEN V= 2:RETURN
9520 IF D< 1OR D> 31THEN V= 2:RETURN
9540 LY= 0:IF Y/ 4= INT (Y/ 4)THEN LY= 1
9560 ON MGOTO 9620,9580,9620,9600,9620,9600,9620,9620,9600,9620,9600,9620
9580 IF D> LY+ 28THEN V= 2
9600 IF D> 30THEN V= 2
9620 RETURN
10000 REM 
10020 REM  DISK DRIVE SELECT
10040 REM
10060 PLOT 27,24,12,10,10
10080 PRINT "YOU HAVE THE CHOICE OF SELECTING EITHER DRIVE 0"
10100 PRINT "OR DRIVE 1 FOR THE DATA FILE DISK TO RESIDE IN."
10120 PRINT
10140 PRINT "PLEASE MAKE YOUR SELECTION    ";
10160 POKE 33278,0
10180 DD= PEEK (33278):IF DD= 0THEN 10180
10200 PRINT
10220 DD= DD- 48:IF DD= 0OR DD= 1THEN 10260
10240 PLOT 3,30,5,32,26:GOTO 10160
10260 IF DD= 0THEN 10340
10280 PLOT 27,4
10300 PRINT "DEV1:"
10320 PLOT 27,11
10340 PLOT 10,10
10360 RETURN
11000 REM 
11020 REM  END PROGRAM
11040 REM
11060 PRINT "++  DISK ERROR  ++"
11080 IF DD= 1THEN PLOT 27,4:PRINT "DEV0:"
11100 PLOT 27,11,10
11120 PLOT 1
11140 END