   10 ON ERROR PROCeror
   20 :
   30 PROCset_variables
   35 date$=LEFT$(TIME$,15):month$=MID$(TIME$,8,3)
   40 REM X=OPENIN"Date$.Dat":INPUT# X,date$,month$:CLOSE# X
   50 PROCload_data
   60 REM IF statement$(0)<>MID$(TIME$,8,3) paid(0)=5
   65 PROCcheck_orders
   70 PROCauto_pay_orders
   80 :
   90 REPEAT
  100   pause%=0
  110   PROCdisplay_menu
  120   PROCselect
  130 UNTIL A%=81
  140 CHAIN"Auto"
  150 :
  160 DEFPROCset_variables
  170 cash=0
  180 B%=0
  190 dayt$=LEFT$(TIME$,3)+","+MID$(TIME$,5,2)+CHR$250+MID$(TIME$,8,3)+MID$(TIME$,14,2)
  200 count=0
  210 DIMstatement$(21)
  220 DIMdate$(21)
  230 DIMaccount(21)
  240 DIMbalance(21)
  250 DIMsts$(21)
  260 line$=CHR$250
  270 DIMamount(21)
  280 DIMccard$(21)
  290 DIMcredit(21)
  300 DIMfound(20)
  310 DIMcounter(2)
  320 DIM paid(21)
  330 balance$="Balance =  "
  340 spool%=0
  350 lenn%=46
  360 dis%=0
  370 flag1=1:flag2=0
  380 sure=0
  390 archived%=0
  400 DIMamount2(21)
  410 DIMsts2$(21)
  420 DIMpaid2(21)
  440 tick%=251
  450 pause%=0
  460 ENDPROC
  470 :
  480 DEFPROCos
  490 CLS
  500 INPUT"*"OS$
  510 REPEAT
  520   OSCLI(OS$)
  530   PRINT
  540   INPUT"*"OS$
  550 UNTIL OS$=""
  560 ENDPROC
  570 :
  580 DEFPROCsave_file
  590 PROCsure
  600 IF sure=0 ENDPROC
  610 PROCborder
  620 PRINTTAB(31,7)CHR$14;" Saving Money.Dat ";CHR$15
  630 ccard$(0)=TIME$
  640 X=OPENOUT"Money.Dat":PROCsave_data:CLOSE# X
  650 flag1=0:flag2=0
  660 ENDPROC
  670 :
  680 DEFPROCsave_data
  690 statement$(0)=MID$(TIME$,8,3)
  700 FORI%=0TO21
  710 PRINT#X,statement$(I%),date$(I%),account(I%),balance(I%),sts$(I%),amount(I%),ccard$(I%),credit(I%),paid(I%)
  720 NEXT
  730 PRINT#X,cash,diff$,diff,tsb
  740 FORI%=0TO2
  750   PRINT#X,counter(I%)
  760 NEXT
  770 PRINT#X,eom
  780 ENDPROC
  790 :
  800 DEFPROCload_data
  810 PROCborder
  820 PRINTTAB(30,7)CHR$14;" Loading Money.Dat ";CHR$15
  830 X=OPENIN"Money.Dat"
  840 FORI%=0TO21
  850 INPUT#X,statement$(I%),date$(I%),account(I%),balance(I%),sts$(I%),amount(I%),ccard$(I%),credit(I%),paid(I%)
  860 NEXT
  870 INPUT#X,cash,diff$,diff,tsb
  880 FORI%=0TO2
  890   INPUT#X,counter(I%)
  900 NEXT
  910 INPUT#X,eom
  920 CLOSE# X
  930 max_order=amount(0)
  940 flag1=0:flag2=0
  950 REM PROCfilter
  960 ENDPROC
  970 :
  980 DEFPROCdisplay_menu
  990 IF flag2=1 PROCeom_calc
 1000 RESTORE1230
 1010 CLS:A%=1:PROCborder2
 1020 REM PROCprintdate
 1025 PRINTTAB(54,0);date$
 1030 PRINTTAB(0,0)CHR$14;" ";balance$;balance(21);" ";CHR$15;SPC(2);CHR$14;" EOM =  ";:IF 0>diff PRINT SPC(0);eom+diff;" ";CHR$15 ELSE PRINT SPC(0);eom;" ";CHR$15
 1040 PRINTTAB(0,1)
 1050 FORI%=1TO10
 1060   A%=A%+1
 1070   IF I%=3 OR I%=6 OR I%=8  A%=A%+1
 1080   READ INFO$
 1090   PRINTTAB(1,A%);"(";~(I%-1);") ";INFO$
 1100 NEXT
 1110 :
 1120 RESTORE1270
 1130 A%=0
 1140 FOR I%=1TO6
 1150   A%=A%+1
 1160   READ INFO$
 1170   PRINTTAB(43,A%+1);"(";~(I%+9);") ";INFO$
 1180   IF A%=2 OR A%=6 A%=A%+1
 1190 NEXT
 1200 PRINTTAB(43,10);"(G) Projected Data For End Of Month"
 1210 PRINTTAB(43,14);"(J) Spool All Variables"
 1220 IF flag1=1 PRINTTAB(4,3);CHR$14;" Save Data-file ";CHR$15
 1230 DATAReload Money.Dat,Save Money.Dat,View/Alter Current Account
 1240 DATAFind Item In The Current Account,Graph Of Current Account
 1250 DATAView/Alter Credit Card,Pay Credit Card
 1260 DATAView Direct Debits,Alter Direct Debits,Pay Direct Debits
 1270 DATASet/Reset Direct Debits,Re-sort Direct Debits,Cash For End Of The Month
 1280 DATABank Difference,Create Text File Of All Data
 1290 DATAResort Credit Card,Projected Data For End Of Month
 1300 ENDPROC
 1310 :
 1320 DEFPROCselect
 1330 REPEAT
 1340   PRINTTAB(71,0)RIGHT$(TIME$,8)
 1350   IF RIGHT$(TIME$,8)="00:00:00"PROCend_prog
 1360   A%=INKEY(1)
 1370 UNTIL A%>47 AND A%<58 OR A%=42 OR A%=81 OR A%=113 OR A%=172 OR A%>64 AND A%<70 OR A%>95 AND A%<102 OR A%=74 OR A%=106 OR A%=70 OR A%=102 OR A%=103 OR A%=71 OR A%=72 OR A%=104
 1380 IF A%=42 PROCos
 1390 IF A%=48 PROCload_data
 1400 IF A%=49 PROCsave_file
 1410 IF A%=50 PROCwork_account
 1420 IF A%=51 PROCfind
 1430 IF A%=52 PROCgraph
 1440 IF A%=53 PROCwork_credit
 1450 IF A%=54 PROCpay_credit
 1460 IF A%=55 PROCdisplay_orders
 1470 IF A%=56 PROCwork_orders
 1480 IF A%=57 PROCpay_orders
 1490 IF A%=71 OR A%=103 PROCview_info
 1500 IF A%=65 OR A%=97 PROCsure_reset_paid
 1510 IF A%=66 OR A%=98 PROCsortsts$:CLS:PROCdisplay_orders
 1520 IF A%=67 OR A%=99 PROCunpaid_cash
 1530 IF A%=68 OR A%=100 PROCdifference
 1540 IF A%=69 OR A%=101 PROCspool_all
 1550 IF A%=70 OR A%=102 PROCtidy_credit
 1560 IF A%=72 OR A%=104 PROCfilter
 1570 IF A%=74 OR A%=106 PROCspool_vars
 1580 IF A%=81 OR A%=113 PROCend_prog
 1590 IF A%=172 CLS:END
 1600 ENDPROC
 1610 :
 1620 DEFPROCsure
 1630 PROCborder
 1640 VDU7
 1650 PRINTTAB(32,5)"Saving Data-file"
 1660 PRINTTAB(18,7)"This Action Will Overwrite The Existing Data"
 1670 PRINTTAB(31,9)"Enter ";CHR$34;"Y";CHR$34;" To Execute"
 1680 PRINTTAB(24,11)"Any Other Key Aborts This Action"
 1690 INPUTTAB(57,11)ans$
 1700 IF ans$="Y" OR ans$="y" sure=1 ELSE sure=0
 1710 ENDPROC
 1720 :
 1730 DEFPROCdisplay_account
 1740 PROCaccount_titles
 1750 FORI%=1TO10
 1760   PROCdisplay_account_data
 1770 NEXT
 1780 PROCpause
 1790 CLS
 1800 PROCaccount_titles
 1810 FOR I%=11TO20
 1820   PROCdisplay_account_data
 1830 NEXT
 1840 ENDPROC
 1850 :
 1860 DEFPROCaccount_titles
 1870 IF pause%=1 ENDPROC
 1880 lenn%=46
 1890 PRINTSPC(6)CHR$19;"Date";CHR$20;
 1900 PRINT SPC(13);
 1910 PRINTCHR$19;"Transaction";CHR$20;" ";CHR$19;"Type";CHR$20;
 1920 PRINTSPC(24);
 1930 PRINTCHR$19;"Entry";CHR$20;
 1940 PRINT SPC(4);
 1950 PRINTCHR$19;"Balance"CHR$20
 1960 PRINT
 1970 ENDPROC
 1980 :
 1990 DEFPROCdisplay_account_data
 2000 IFaccount(I%)<0 sign_justify=0 ELSE sign_justify=1
 2010 PRINTdate$(I%);line$;
 2020 IF LEN(statement$(I%))>lenn% PRINTLEFT$(statement$(I%),lenn%); ELSE PRINTstatement$(I%);STRING$((lenn%-LEN(statement$(I%))),line$);
 2030 PRINT"  ";SPC(sign_justify);
 2040 acc_length$=STR$(account(I%))
 2050 dec_pnt=INSTR(acc_length$,".")
 2060 IF dec_pnt=0 tlength$=acc_length$+".00" ELSE tlength$=LEFT$(acc_length$,dec_pnt+2)
 2070 IF INSTR(acc_length$,".")=-1 tlength$=tlength$+".00"
 2080 IF LEN(tlength$)-dec_pnt=1 tlength$=tlength$+"0"
 2090 spaces=9-LEN(tlength$)-sign_justify
 2100 PRINTtlength$;STRING$(spaces,line$);" ";balance(I%)
 2110 ENDPROC
 2120 :
 2130 DEFPROCpause
 2140 IF pause%=1 ENDPROC
 2150 REM PRINTTAB(26,14)CHR$14;" Press Any Key To Continue ";CHR$15
 2160 REPEAT
 2170   A%=GET
 2180 UNTIL A%>0
 2190 ENDPROC
 2200 :
 2210 DEFPROCspaces
 2220 PRINTSTRING$(79," ")
 2230 ENDPROC
 2240 :
 2250 DEFPROCwork_account
 2260 REPEAT
 2270   CLS
 2280   PROCdisplay_account
 2290   PRINTTAB(0,13)CHR$17;"Your Current Balance Is > ";SPC(45);" ";balance(20);CHR$18
 2300   PRINTTAB(0,14);:INPUTLINE"Transaction Name : "statement$(21)
 2310   IFstatement$(21)<>"" PROCinput_account
 2320 UNTILstatement$(21)=""
 2330 ENDPROC
 2340 :
 2350 DEFPROCinput_account
 2360 INPUT"Enter Value Of Transaction   "account(21)
 2370 IF account(21)=0 statement$(21)="":ENDPROC
 2380 IF LEN(statement$(21))>92 statement$(21)=LEFT$(statement$(21),92)
 2390 PROCwork_account2
 2400 ENDPROC
 2410 :
 2420 DEFPROCwork_account2
 2430 cash=cash+account(21)
 2440 value=cash:cash=FNfix2
 2450 cash$=STR$(cash)
 2460 dec%=INSTR(cash$,".")
 2470 cash1%=LEN(STR$(INTcash))
 2480 dec%=INSTR(cash$,".")
 2490 cash2%=LENcash$-cash1%-1
 2500 IFcash2%>2 cash$=STR$(INTcash)+"."+MID$(cash$,(dec%+1),2)
 2510 fix2=0:cash$=cash$ ELSE cash$=LEFT$(cash$,fix2+2)
 2520 cash=VAL(cash$)
 2530 balance(21)=cash
 2540 date$(21)=dayt$
 2550 balance(0)=balance(0)+account(21)
 2560 flag1=1:flag2=1
 2570 FOR I%=2TO21
 2580   date$(I%-1)=date$(I%)
 2590   statement$(I%-1)=statement$(I%)
 2600   account(I%-1)=account(I%)
 2610   balance(I%-1)=balance(I%)
 2620 NEXT
 2630 counter(1)=counter(1)+1
 2640 IF counter(1)>19 PROCsave_archive
 2650 ENDPROC
 2660 :
 2670 DEFPROCwork_credit
 2680 REPEAT
 2690   CLS
 2700   PROCdisplay_credit
 2710   INPUTTAB(0,14)"Select Credit Card Track Number 1<>21 : "track
 2720   IF track>21 track=0
 2730   IF track<>0 PROCinput_credit
 2740 UNTIL track=0
 2750 ENDPROC
 2760 :
 2770 DEFPROCinput_credit
 2780 PRINTTAB(0,14);:PROCspaces
 2790 PRINTTAB(0,14);:INPUTLINE"Enter Name For Credit : "in$
 2800 IF LEN(in$)>74 in$=LEFT$(in$,74)
 2810 INPUT"Enter Value   "credit(track)
 2820 credit(track)=ABS(credit(track))
 2830 IF credit(track)=0 ccard$(track)="":track=0:in$=""
 2840 IF in$<>"" flag1=1:flag2=1
 2850 ccard$(track)=dayt$+line$+in$
 2860 IF in$="" flag1=1:flag2=1:ccard$(track)="" ELSE ccard$(track)=dayt$+line$+in$
 2870 ENDPROC
 2880 :
 2890 DEFPROCdisplay_credit
 2900 credit_tot=0
 2910 count1%=0
 2920 FORI%=1TO21
 2930   IF credit(I%)<>0 count1%=count1%+1
 2940   PROCshowcreditvalues
 2950   IF count1%>10 count1%=0:PROCpause:CLS
 2960 NEXT
 2970 value=credit_tot:credit_tot=FNfix2
 2980 PRINTSPC(4);STRING$(76,"-")
 2990 PRINTSPC(4)"Total";SPC(61);"  ";credit_tot
 3000 PRINTSPC(4);STRING$(76,"-")
 3010 ENDPROC
 3020 :
 3030 DEFPROCshowcreditvalues
 3040 IF credit(I%)=0 ccard$(I%)=""
 3050 IF ccard$(I%)="" OR credit(I%)=0 ENDPROC
 3060 credit_tot=credit_tot+credit(I%)
 3070 IF I%<10PRINTSPC(0);" ";I%;")";line$; ELSE PRINTSPC(0);I%;")";line$;
 3080 IF LEN(ccard$(I%))>66 PRINTLEFT$(ccard$(I%),66);"  ";credit(I%) ELSE PRINTccard$(I%);STRING$((66-(LEN(ccard$(I%)))),line$);SPC(1);" ";credit(I%)
 3090 ENDPROC
 3100 :
 3110 DEFPROCpay_credit
 3120 CLS
 3130 PROCdisplay_credit
 3140 IF credit_tot=0 ENDPROC
 3150 PRINTTAB(0,12);
 3160 REM PRINTSPC(1);"Make Cheque Payable To ";CHR$17;CHR$34;date$(0);CHR$34;CHR$18
 3165 PRINTSPC(1);"Make Cheque Payable"
 3180 PRINT" Dated ";CHR$17;CHR$34;date$;CHR$34;CHR$18;SPC(1);"For ";CHR$17;" ";credit_tot;CHR$18
 3190 INPUT" Enter Cheque Number "CHECK$
 3200 IF CHECK$="" ENDPROC
 3210 statement$(21)="Credit Card : Cheque Number "+CHECK$
 3220 value=0-credit_tot:account(21)=FNfix2
 3230 CLS
 3240 PROCwork_account2
 3250 PROCreset_credit
 3260 ENDPROC
 3270 :
 3280 DEFPROCreset_credit
 3290 FOR I%=1TO21
 3300   ccard$(I%)=""
 3310   credit(I%)=0
 3320 NEXT
 3330 credit_tot=0
 3340 ENDPROC
 3350 :
 3360 DEFPROCdisplay_orders
 3370 CLS
 3380 count%=0
 3390 orders_tot=0
 3400 FOR I%=1TO21
 3410   PROCshowordersvalue
 3420 NEXT
 3430 value=orders_tot:orders_tot=FNfix2
 3440 PROCpause
 3450 ENDPROC
 3460 :
 3470 DEFPROCshowordersvalue
 3480 IF sts$(I%)="" OR amount(I%)=0 sts$(I%)="":amount(I%)=0:ENDPROC
 3490 orders_tot=orders_tot+amount(I%)
 3500 IF paid(I%)=1 orders_tot=orders_tot-amount(I%)
 3510 IF amount(I%)<10 JUSTIFY=1 ELSE JUSTIFY=0
 3520 IF I%<10 PRINTSPC(0);" ";I%;")"; ELSE PRINTSPC(0);"";I%;")";
 3530 IF paid(I%)=1 PRINTCHR$tick%; ELSE PRINTline$;
 3540 IF LEN(sts$(I%))> 67 PRINTLEFT$(sts$(I%),67); ELSE PRINTsts$(I%);STRING$((67-LEN(sts$(I%))),line$);
 3550 PRINTSPC(1)" ";SPC(JUSTIFY);amount(I%)
 3560 ENDPROC
 3570 :
 3580 DEFPROCwork_orders
 3590 REM REPEAT
 3600 PROCborder
 3610 INPUTTAB(5,4)"Select Order No 1<>21 : "track
 3620 IF track>21 track=0
 3630 IF track=0 GOTO 3790
 3640 IF sts$(track)<>"" PRINTTAB(1,1);track;") ";CHR$17;sts$(track);SPC(2);" ";amount(track);CHR$18
 3650 PRINTTAB(5,6);:INPUTLINE"Enter Name Of Direct Debit : "sts$(0)
 3660 IF sts$(0)="" AND LENsts$(track)>0 PROCclear_track:GOTO3790
 3670 IF sts$(0)="" GOTO3790
 3680 INPUTTAB(5,8)"Enter Value  "amount(track)
 3690 amount(track)=ABS(amount(track))
 3700 INPUTTAB(5,10)"Enter The Day Payable "ans$
 3710 IF LEN(ans$)=1 ans$="0"+ans$
 3720 IF ans$="" ans$=MID$(TIME$,5,3)
 3730 IF LEN(ans$)>2 ans$=LEFT$(ans$,2)
 3740 ans$="("+ans$+")"+line$
 3750 sts$(track)=ans$+sts$(0):flag1=1:flag2=1
 3760 INPUTTAB(5,12)"Enter Y To Be Paid  : "ans$
 3770 IF ans$="Y" OR ans$="y" paid(track)=1
 3780 IF ans$<>"Y" AND ans$<>"y" paid(track)=0
 3790 REM UNTIL track=0
 3800 ENDPROC
 3810 :
 3820 DEFPROCpay_orders
 3830 PROCborder
 3840 FOR J%=1TO21
 3850   IF archived%=1 PROCborder:archived%=0
 3860   IF sts$(J%)="" OR amount(J%)=0 sts$(J%)="":amount(J%)=0:GOTO4050
 3870   IF paid(J%)=1 GOTO4050
 3880   PRINTTAB(1,5);
 3890   IF amount(J%)<10 JUSTIFY=1 ELSE JUSTIFY=0
 3900   PRINTCHR$17;
 3910   IF J%<10 PRINTSPC(0);" ";J%;") "; ELSE PRINTSPC(0);"";J%;") ";
 3920   REM PRINTsts$(J%);SPC(67-LEN(sts$(J%)));" ";amount(J%);STRING$(0," ")
 3930   PRINTsts$(J%);SPC(64-LEN(sts$(J%)));" ";amount(J%);STRING$(3," ")
 3940   PRINTCHR$18
 3950   IF VAL(MID$(sts$(J%),2,2))=VAL(MID$(TIME$,5,2)) VDU7
 3960   PRINTTAB(33,1)CHR$17;balance$;balance(20);CHR$18
 3970   PRINTTAB(10,7)"Do You Wish To Pay This Item Y/N :"
 3980   INPUTTAB(45,7)ans$
 3990   IF ans$="n" OR ans$="N" OR ans$="" GOTO4050
 4000   len%=(LEN(sts$(J%)))-5
 4010   statement$(21)=RIGHT$(sts$(J%),len%)
 4020   account(21)=(0-amount(J%))
 4030   paid(J%)=1
 4040   PROCwork_account2
 4050 NEXT
 4060 ENDPROC
 4070 :
 4080 DEFPROCclear_track
 4090 VDU7
 4100 INPUTTAB(5,2)"Are You Sure You Want To Delete This Direct Debit Y/N : "ans$
 4110 IF ans$="Y" OR ans$="y" sts$(track)="":amount(track)=0:flag1=1:flag2=1
 4120 ENDPROC
 4130 :
 4140 DEFPROCcheck_orders
 4150 IF statement$(0)<>MID$(TIME$,8,3) FOR I%=1TO21:paid(I%)=0:NEXT
 4160 FOR P%=1TO21
 4170   IF VAL(MID$(TIME$,5,2))=VAL(MID$(sts$(P%),2,2)) AND paid(P%)=0 J%=1
 4180 NEXT
 4190 IF J%=1 PROCauto_pay_orders
 4200 ENDPROC
 4210 :
 4220 DEFPROCfind
 4230 PROCborder
 4240 PRINTTAB(10,2)"Enter The Item You Wish To Search For In The Current Account"
 4250 PRINTTAB(38,4);:INPUTLINE"? "SEARCH$
 4260 SEARCH=VAL(SEARCH$)
 4270 IF SEARCH$="" ENDPROC
 4280 CLS
 4290 PRINTTAB(1,1)"Seaching For "CHR$34;SEARCH$;CHR$34
 4300 PRINT
 4310 FOR I%=1TO20
 4320   found(I%)=INSTR(statement$(I%),SEARCH$) OR INSTR(date$(I%),SEARCH$)
 4330   IF account(I%)=SEARCH found(I%)=1
 4340   IF balance(I%)=SEARCH found(I%)=1
 4350 NEXT
 4360 count%=-1
 4370 loop%=0
 4380 FOR I%=1TO20
 4390   IF found(I%)>0 count%=count%+1:PROCprint_line
 4400   IF loop%>9 loop%=0:PROCpause:CLS:PRINTTAB(0,3);
 4410 NEXT
 4420 IF count%=-1 CLS:PRINTTAB(33,3)"No Match Found":PRINTTAB(25,7)"All Requests Are Case Sensitive"
 4430 PROCpause
 4440 ENDPROC
 4450 :
 4460 DEFPROCprint_line
 4470 PRINTdate$(I%)line$;
 4480 IF LEN(statement$(I%))>54 PRINT LEFT$(statement$(I%),56);:ELSE PRINT statement$(I%);
 4490 IF LEN(statement$(I%))>55 PRINTSPC(1);" ";account(I%) ELSE PRINTSTRING$((56-(LEN(statement$(I%)))),line$);"  ";account(I%)
 4500 loop%=loop%+1
 4510 ENDPROC
 4520 :
 4530 DEFPROCgraph_scale
 4540 max=0:min=5000
 4550 FOR I%= 1TO20
 4560   IF balance(I%)> max THEN max=balance(I%)
 4570   IF balance(I%)<min THEN min=balance(I%)
 4580 NEXT
 4585 IF max=0 AND min=0 max=2:min=1
 4590 RATIO=107/(max-min)
 4600 ENDPROC
 4610 :
 4620 DEFPROCgraph
 4630 PROCgraph_scale
 4640 CLS
 4650 REM axis
 4660 MOVE 55,20:DRAW 55,126:MOVE 55,20:DRAW 456,20
 4670 REM fix start point of graph
 4680 MOVE 55,20+((balance(1)-min)*RATIO)
 4690 REM draw graph
 4700 FOR I%=1TO20
 4710   DRAW 35+(I%*21),20+((balance(I%)-min)*RATIO)
 4720 NEXT
 4730 REM small 20 lines off bottom axix
 4740 FOR I%=1TO20
 4750   MOVE 35+(I%*21),20:DRAW 35+(I%*21),17
 4760 NEXT
 4770 FOR I%=5TO20 STEP 5
 4780   MOVE36+(I%*21),20:DRAW 36+(I%*21),17
 4790   MOVE55,20:DRAW55,17
 4800 NEXT
 4810 FOR I%=2TO20
 4820   MOVE 35+(I%*21),20
 4830   PLOT 22,35+(I%*21),20+((balance(I%)-min)*RATIO)
 4840 NEXT
 4850 PRINTTAB(0,0)"  ";max
 4860 PRINTTAB(0,12)"  ";min
 4870 value=((max-min)/2)+min:midvalue=FNfix2
 4880 PRINTTAB(0,6)"  ";midvalue
 4890 PRINTTAB(4,14)LEFT$(date$(1),10)
 4900 PRINTTAB(18,14)LEFT$(date$(5),10)
 4910 PRINTTAB(36,14)LEFT$(date$(10),10)
 4920 PRINTTAB(53,14)LEFT$(date$(15),10)
 4930 PRINTTAB(70,14)LEFT$(date$(20),10)
 4940 PRINTTAB(0,21)
 4950 REPEAT:A%=GET:UNTIL A%=13 OR A%=32
 4960 ENDPROC
 4970 :
 4980 DEFPROCview_info
 4990 uon=19:uoff=20
 5000 bon=14:boff=15
 5010 IF pause%=1 bon=0:boff=0:uon=0:uoff=0
 5020 PROCborder
 5030 PRINTTAB(23,1);CHR$(uon);"Projected";CHR$(uoff);" ";CHR$(uon);"Money";CHR$(uoff);" ";CHR$(uon);"For";CHR$(uoff);" ";CHR$(uon);"End";CHR$(uoff);" ";CHR$(uon);"Of";CHR$(uoff);" ";CHR$(uon);month$;CHR$(uoff)
 5040 PROCcalc_credit
 5050 PROCcalc_orders
 5060 PROCtotal_orders
 5070 PRINTTAB(1,3)"Current Balance ";SPC(19);CHR$(bon);"  ";balance(21);" ";CHR$(boff);SPC(2);"+ Difference = ";CHR$(bon);"  ";balance(21)+diff;" ";CHR$(boff)
 5080 PRINTTAB(1,5)"Credit Card";SPC(25);" ";credit_tot;SPC(4)
 5090 PRINTTAB(1,6)"Unpaid Orders";SPC(23);" ";orders_tot;"  = ";CHR$(bon)"  ";credit_tot+orders_tot;" ";CHR$(boff)
 5100 value=balance(21)-credit_tot-orders_tot
 5110 PRINTTAB(1,8)"Current Balance - Current Deficits";SPC(1);CHR$(bon);"  ";FNfix2;" ";CHR$(boff);SPC(2);"+ Difference = ";CHR$(bon);"  ";FNfix2+diff;CHR$32;CHR$(boff)
 5120 found(0)=FNfix2
 5130 PRINTTAB(1,12)"Total Standing Orders";SPC(15);" ";total_ord
 5140 PRINTTAB(1,10)"Bank Difference Of ";SPC(16);" ";diff;" On ";CHR$34;diff$;CHR$34
 5150 PRINTTAB(75,1)"(";(20-counter(1));")"
 5160 PROCpause
 5170 ENDPROC
 5180 :
 5190 DEFPROCsave_archive
 5200 counter(1)=1
 5210 counter(0)=counter(0)+1
 5220 IF counter(0)>14 counter(0)=0
 5230 IF counter(0)<10 archive$="Mon_0"+STR$(counter(0))
 5240 IF counter(0)>9 archive$="Mon_"+STR$(counter(0))
 5250 archive$=archive$+".Dat"
 5260 statement$(0)=archive$:ccard$(0)=archive$
 5270 REM date$(0)=archive$
 5280 PROCborder
 5290 PRINTTAB(25,5)"An Archive File Is Being Saved"
 5300 PRINTTAB(30,7)"With The Filename Of"
 5310 PRINTTAB(35,9);CHR$17;archive$;CHR$18
 5320 SOUND1,0,750,1
 5330 X=OPENOUT archive$:PROCsave_data:CLOSE# X
 5340 ccard$(0)=""
 5350 SOUND1,0,750,1
 5360 archived%=1
 5370 ENDPROC
 5380 :
 5390 DEFPROCprintdate
 5400 PRINTTAB(70-(LEN(date$)),0)date$;" "
 5410 ENDPROC
 5420 :
 5430 DEFPROCsure_reset_paid
 5440 PROCborder
 5450 PRINTTAB(21,6)"(1) To Set All Direct Debits As Paid"
 5460 PRINTTAB(21,8)"(2) To Set All Direct Debits As Un-Paid"
 5470 INPUTTAB(40,10)ans$
 5480 IF ans$<>"1" AND ans$ <>"2" ENDPROC
 5490 IF ans$="1" FOR I%=1TO20:paid(I%)=1:NEXT
 5500 IF ans$="2" FOR I%=1TO20:paid(I%)=0:NEXT
 5510 flag1=1:flag2=1
 5520 PROCdisplay_orders
 5530 ENDPROC
 5540 :
 5550 :
 5560 DEFPROCcalc_credit
 5570 credit_tot=0
 5580 FOR I%=1TO21
 5590   IF ccard$(I%)="" OR credit(I%)=0 GOTO5610
 5600   credit_tot=credit_tot+credit(I%)
 5610 NEXT
 5620 ENDPROC
 5630 :
 5640 DEFPROCcalc_orders
 5650 orders_tot=0
 5660 FOR I%=1TO21
 5670   IF sts$(I%)="" OR amount(I%)=0 OR paid(I%)=1 GOTO5690
 5680   orders_tot=orders_tot+amount(I%)
 5690 NEXT
 5700 ENDPROC
 5710 :
 5720 DEFFNfix2
 5730 value$=STR$(value)
 5740 len%=LENvalue$
 5750 dec%=INSTR(value$,".")
 5760 intg$=LEFT$(value$,dec%-1)
 5770 frac$=RIGHT$(value$,(len%-dec%))
 5780 frac1$=LEFT$(frac$,2)
 5790 IFdec%=0 frac1$="00"
 5800 comb$=intg$+"."+frac1$
 5810 =VAL(comb$)
 5820 ENDPROC
 5830 :
 5840 DEFPROCborder
 5850 CLS
 5860 MOVE0,0:DRAW 0,127:DRAW 479,127:DRAW 479,0:DRAW 0,0
 5870 MOVE 2,2:DRAW 2,125:DRAW 477,125:DRAW 477,2:DRAW 2,2
 5880 ENDPROC
 5890 :
 5900 DEFPROCborder2
 5910 MOVE237,127:DRAW237,118:DRAW0,118:DRAW0,0:DRAW479,0:DRAW479,118:DRAW239,118:DRAW239,127
 5920 MOVE2,93:DRAW477,93:DRAW477,116:DRAW2,116:DRAW2,93
 5930 MOVE2,91:DRAW477,91:DRAW477,61:DRAW2,61:DRAW2,91
 5940 MOVE2,59:DRAW477,59:DRAW477,37:DRAW2,37:DRAW2,59
 5950 MOVE2,35:DRAW477,35:DRAW477,2:DRAW2,2:DRAW2,35
 5960 ENDPROC
 5970 :
 5980 DEFPROCtotal_orders
 5990 total_ord=0
 6000 FOR I%=1TO21
 6010   IF amount(I%)<>0 AND sts$(I%)<>"" total_ord=total_ord+amount(I%)
 6020 NEXT
 6030 ENDPROC
 6040 :
 6050 DEFPROCdifference
 6060 PROCborder
 6070 PRINTTAB(1,1)"Checked With The Bank On ";CHR$34;diff$;CHR$34" And Their Value Set At  ";tsb
 6080 PRINTTAB(1,3)"Current Difference Between Bank And This Program's Value Is   ";diff
 6090 INPUTTAB(1,5)"Enter New Bank Value  "diff1
 6100 IF diff1=0 ENDPROC
 6110 tsb=diff1
 6120 value=diff1-balance(21)
 6130 diff=FNfix2
 6140 diff$=LEFT$(TIME$,15)
 6150 flag1=1:flag2=1
 6160 ENDPROC
 6170 :
 6180 DEFPROCspool_all
 6190 PROCborder
 6200 PRINTTAB(10,7)"Enter Name For File : "
 6210 INPUTTAB(32,7)txt$
 6220 IF LEFT$(txt$,1)="M" OR LEFT$(txt$,1)="m" txt$=""
 6230 IF txt$="" txt$="Acc"+RIGHT$(TIME$,5)+".Txt"
 6240 txt$="SPOOL "+CHR$34+txt$+CHR$34
 6250 gen$=MID$(txt$,7,20)+" Generated On "+date$+" At "+MID$(TIME$,17,5)
 6260 pause%=1
 6270 CLS
 6280 OSCLI(txt$)
 6290 PRINT">";STRING$(6,"-");"!";STRING$(5,"-");"!";STRING$(46,"-");"!";STRING$(10,"-");"!";STRING$(7,"-");"R"
 6300 PRINT SPC(40-(LENgen$/2));gen$
 6310 PRINT
 6320 PROCdisplay_account
 6330 PRINT
 6340 PROCdisplay_credit
 6350 PRINT
 6360 PROCdisplay_orders
 6370 PRINT
 6380 PROCview_info
 6390 PRINT:PRINT:CLS
 6400 PRINT"These added again":PRINT
 6410 FOR I%=1TO21:PRINT statement$(I%):NEXT
 6420 PRINT
 6430 FOR I%=1TO21:IF LEN ccard$(I%)>0 PRINT ccard$(I%)
 6440 NEXT
 6450 *SPOOL
 6460 line$=CHR$(250)
 6470 CLS
 6480 pause%=0
 6490 ENDPROC
 6500 :
 6510 DEFPROCend_prog
 6520 IF flag1=1 PROCsave_file
 6530 CHAIN"Auto"
 6540 :
 6550 DEFPROCeror
 6560 PROCborder
 6570 CLOSE# 0
 6580 IF ERR=17 GOTO 90
 6590 PRINT:PRINT
 6600 PRINTTAB(3,7);"On Line ";CHR$17;ERL;CHR$18;" The Error Code Was ";CHR$17;"(";ERR;")";CHR$18;" Which Is ";CHR$17;:REPORT
 6610 PRINTCHR$18
 6620 END
 6630 :
 6640 DEFPROCsortsts$
 6650 count=0
 6660 PROCborder
 6670 PRINTTAB(24,7)"Now Re-Sorting The Direct Debits"
 6680 PROCsort1
 6690 PROCrestore
 6700 ENDPROC
 6710 :
 6720 :
 6730 DEFPROCsort1
 6740 FOR I%=1TO21:sts2$(I%)="":amount2(I%)=0:paid2(I%)=0:NEXT
 6750 FOR I%=0TO31
 6760   FOR J%=1TO21
 6770     IF VAL(MID$(sts$(J%),2,2))=I% AND amount(J%)>0 PROCstore2
 6780   NEXT
 6790 NEXT
 6800 ENDPROC
 6810 :
 6820 DEFPROCstore2
 6830 count=count+1
 6840 sts2$(count)=sts$(J%)
 6850 amount2(count)=amount(J%)
 6860 paid2(count)=paid(J%)
 6870 ENDPROC
 6880 :
 6890 DEFPROCrestore
 6900 FOR I%=1TO21
 6910   sts$(I%)=sts2$(I%)
 6920   amount(I%)=amount2(I%)
 6930   paid(I%)=paid2(I%)
 6940 NEXT
 6950 ENDPROC
 6960 :
 6970 DEFPROCbold:PRINTCHR$(5);CHR$(226):ENDPROC
 6980 :
 6990 DEFPROCunn:PRINTCHR$(5);CHR$(245):ENDPROC
 7000 :
 7010 DEFPROCunpaid_cash
 7020 PROCborder
 7030 PRINTTAB(18,4)"Last value was ";paid(0);" weeks at ";credit(0);" per week = ";credit(0)*paid(0)
 7040 PRINTTAB(20,1);"Projected Cash Withdrawls To End Of ";MID$(TIME$,8,3)
 7050 INPUTTAB(5,7);"How Many Weeks : "ans1
 7060 IF ans1=-1 ans1=0:ans2=0:credit(21)=0:credit(0)=0:ccard$(21)="":paid(0)=0:flag1=1:flag2=1:ENDPROC
 7070 IF ans1=0 ENDPROC
 7080 REM IF ans1>5 ans1=0:ans2=0:GOTO7130
 7090 INPUTTAB(5,9);"Cash Per Week :  "ans2
 7100 IF ans2=0 ans2=credit(0)
 7110 credit(21)=ans1*ans2
 7120 PROCwork_unpaid_cash
 7130 ENDPROC
 7140 :
 7150 DEFPROCwork_unpaid_cash
 7160 paid(0)=ans1:credit(0)=ans2
 7170 ccard$(21)="* "+STR$(ans1)+" Weeks Cash At  "+STR$(ans2)+" / Week (Projection For End Of "+MID$(TIME$,8,3)+" *)"
 7180 flag1=1:flag2=1
 7190 PROCwork_credit
 7200 ENDPROC
 7210 DEFPROCset_all:FOR I%=1TO21:paid(I%)=1:NEXT:flag1=1:flag2=1:PROCsave_file:ENDPROC
 7220 :
 7230 DEFPROCeom_calc
 7240 PROCcalc_credit:PROCcalc_orders
 7250 value=balance(21)-(orders_tot+credit_tot)
 7260 eom=FNfix2
 7270 flag2=0
 7280 ENDPROC
 7290 :
 7300 DEFPROCpeter
 7310 FOR I%=1TO10
 7320 sts$(0)=LEFT$(ccard$(I%),12)+line$+RIGHT$(ccard$(I%),LENccard$(I%)-13)
 7330   PRINTsts$(0)
 7340   ccard$(I%)=sts$(0)
 7350 NEXT
 7360 :
 7370 DEFPROCspool_vars
 7380 CLS
 7390 *SPOOL AccVars.Txt
 7400 PRINT">";STRING$(6,"-");"!";STRING$(5,"-");"!";STRING$(46,"-");"!";STRING$(10,"-");"!";STRING$(7,"-");"R"
 7410 FOR F%=0TO21:PRINT "statement$(";F%;") = ";CHR$34;statement$(F%);CHR$34:NEXT:PRINT
 7420 FOR F%=0TO21:PRINT "date$(";F%;") = ";CHR$34;date$(F%);CHR$34:NEXT:PRINT
 7430 FOR F%=0TO21:PRINT "account(";F%;") = ";account(F%):NEXT:PRINT
 7440 FOR F%=0TO21:PRINT "balance(";F%;") = ";balance(F%):NEXT:PRINT
 7450 FOR F%=0TO21:PRINT "sts$(";F%;") = "CHR$34;;sts$(F%);CHR$34:NEXT:PRINT
 7460 FOR F%=0TO21:PRINT "amount(";F%;") = ";amount(F%):NEXT:PRINT
 7470 FOR F%=0TO21:PRINT "ccard$(";F%;") = ";CHR$34;ccard$(F%);CHR$34:NEXT:PRINT
 7480 FOR F%=0TO21:PRINT "credit(";F%;") = ";credit(F%):NEXT:PRINT
 7490 FOR F%=0TO21:PRINT "paid(";F%;") = ";paid(F%):NEXT:PRINT
 7500 FOR F%=0TO2:PRINT "counter(";F%;") = ";counter(F%):NEXT:PRINT
 7510 PRINT"cash = ";cash:PRINT:
 7520 PRINT"diff$ = ";CHR$34;diff$;CHR$34
 7530 PRINT"diff = ";diff:PRINT
 7540 PRINT"tsb = ";tsb:PRINT
 7550 PRINT"eom = ";eom:PRINT
 7560 *SPOOL
 7570 ENDPROC
 7580 :
 7590 DEFPROCtidy_credit
 7600 PROCborder
 7610 PRINTTAB(30,7)"Resorting Credit Card"
 7620 FOR I%=1TO20:sts2$(I%)="":amount2(I%)=0:NEXT
 7630 Z%=0
 7640 FOR I%=1TO20
 7650   IF LEN(ccard$(I%))>0 AND credit(I%)>0 Z%=Z%+1:sts2$(Z%)=ccard$(I%):amount2(Z%)=credit(I%):flag1=1
 7660 NEXT
 7670 FOR I%=1TO20:ccard$(I%)="":credit(I%)=0:NEXT
 7680 FOR I%=1TO20:ccard$(I%)=sts2$(I%):credit(I%)=amount2(I%):NEXT
 7690 FOR I%=1TO20:sts2$(I%)="":amount2(I%)=0:NEXT
 7700 CLS:PROCwork_credit
 7710 ENDPROC
 7720 :
 7730 DEFPROCfilter
 7740 FOR a=1TO20:date$(a)=LEFT$(date$(a),6)+" "+MID$(date$(a),8,5):NEXT
 7750 FOR a=1TO20:ccard$(a)=LEFT$(ccard$(a),6)+" "+MID$(ccard$(a),8,5)+" "+ RIGHT$(ccard$(a),LENccard$(a)-13):NEXT
 7760 FOR a=1TO21:sts$(a)=LEFT$(sts$(a),4)+" "+RIGHT$(sts$(a),LENsts$(a)-5):NEXT
 7770 ENDPROC
 7780 :
 7790 DEFPROCauto_pay_orders
 7800 FOR J%=1TO21
 7810   IF MID$(TIME$,5,2)=MID$(sts$(J%),2,2) AND paid(J%)=0 PROCpay_it
 7820 NEXT
 7830 ENDPROC
 7840 :
 7850 DEFPROCpay_it
 7860 len%=LEN(sts$(J%))-5
 7870 statement$(21)=RIGHT$(sts$(J%),len%)
 7880 account(21)=(0-amount(J%))
 7890 paid(J%)=1
 7900 PROCwork_account2
 7910 ENDPROC
