>L.
   10 :
   20 REM ON ERROR PROCeror
   30 :
   40 PROCset_variables
   50 PROCload_data
   60 :
   70 REPEAT
   80   pause%=0
   90   PROCdisplay_menu
  100   PROCselect
  110 UNTIL A%=81
  120 CHAIN"Auto"
  130 :
  140 DEFPROCset_variables
  150 cash=0
  160 B%=0
  170 dayt$=LEFT$(TIME$,3)+","+MID$(TIME$,5,6)+MID$(TIME$,14,2)
  180 DIMstatement$(21)
  190 DIMdate$(21)
  200 DIMaccount(21)
  210 DIMbalance(21)
  220 DIMsts$(21)
  230 line$=CHR$250
  240 DIMamount(21)
  250 DIMccard$(21)
  260 DIMcredit(21)
  270 DIMfound(20)
  280 DIMcounter(2)
  290 DIM paid(21)
  300 balance$="Current Balance =  "
  310 spool%=0
  320 lenn%=46
  330 dis%=0
  340 ENDPROC
  350 :
  360 DEFPROCos
  370 CLS
  380 INPUT"*"OS$
  390 REPEAT
  400   OSCLI(OS$)
  410   PRINT
  420   INPUT"*"OS$
  430 UNTIL OS$=""
  440 ENDPROC
  450 :
  460 :
  470 DEFPROCload_data
  480 REPEAT
  490   PROCborder
  500   PRINTTAB(30,1)"Money Archive Viewer"
  510   PRINTTAB(1,7)"Enter Archive File Number - MON:"
  520   INPUTTAB(33,7)ans$
  530 UNTIL ans$<>"" AND VAL(ans$)<14 OR ans$="99"
  540 IF LEN(ans$)=1 ans$="0"+ans$
  550 IF ans$="99" ans$="Money.Dat":GOTO570
  560 ans$="MON_"+ans$+".Dat"
  570 PRINTTAB(32,14);"Loading ";ans$
  580 X=OPENIN ans$
  590 FORI%=0TO21
  600   INPUT#X,statement$(I%),date$(I%),account(I%),balance(I%),sts$(I%),amount(I%),ccard$(I%),credit(I%),paid(I%)
  610 NEXT
  620 INPUT#X,cash,diff$,diff,tsb
  630 FORI%=0TO2
  640   INPUT#X,counter(I%)
  650 NEXT
  660 CLOSE# X
  670 max_order=amount(0)
  680 ENDPROC
  690 :
  700 DEFPROCdisplay_menu
  710 CLS:PROCborder
  720 PRINTTAB(1,1);"Current Archive File Is ";CHR$17;ans$;CHR$18
  730 PRINTTAB(45,1);" From ";CHR$17;date$(1);CHR$18;" To ";CHR$17;date$(20);CHR$18
  740 PRINTTAB(23,3)"(0) Reload Data File"
  750 PRINTTAB(23,5)"(2) View Account"
  760 PRINTTAB(23,7)"(3) Find An Item"
  770 PRINTTAB(23,9)"(4) Graph Of Account"
  780 PRINTTAB(23,11)"(5) View Credit Card"
  790 PRINTTAB(23,13)"(P) Text Record"
  800 ENDPROC
  810 :
  820 DEFPROCselect
  830 REPEAT
  840   A%=INKEY(1)
  850 UNTIL A%>47 AND A%<58 OR A%=42 OR A%=81 OR A%=65 OR A%=134 OR A%=172 OR A%=68 OR A%=80
  860 IF A%=42 PROCos
  870 IF A%=48 PROCload_data
  880 IF A%=50 PROCdisplay_account
  890 IF A%=51 PROCfind
  900 IF A%=52 PROCgraph
  910 IF A%=53 PROCdisplay_credit
  920 IF A%=55 PROCdisplay_orders
  930 IF A%=80 PROCspool_all
  940 IF A%=172 END
  950 ENDPROC
  960 :
  970 DEFPROCdisplay_account
  980 CLS
  990 PROCaccount_titles
 1000 FORI%=1TO10
 1010   PROCdisplay_account_data
 1020 NEXT
 1030 PROCpause
 1040 CLS
 1050 PROCaccount_titles
 1060 FOR I%=11TO20
 1070   PROCdisplay_account_data
 1080 NEXT
 1090 PROCpause
 1100 ENDPROC
 1110 :
 1120 DEFPROCaccount_titles
 1130 IF pause%=1 ENDPROC
 1140 lenn%=46
 1150 PRINTSPC(6)CHR$19;"Date";CHR$20;
 1160 PRINT SPC(13);
 1170 PRINTCHR$19;"Transaction";CHR$20;" ";CHR$19;"Type";CHR$20;
 1180 PRINTSPC(24);
 1190 PRINTCHR$19;"Entry";CHR$20;
 1200 PRINT SPC(4);
 1210 PRINTCHR$19;"Balance"CHR$20
 1220 PRINT
 1230 ENDPROC
 1240 :
 1250 DEFPROCdisplay_account_data
 1260 IFaccount(I%)<0 sign_justify=0 ELSE sign_justify=1
 1270 PRINTdate$(I%);SPC1;
 1280 IF LEN(statement$(I%))>lenn% PRINTLEFT$(statement$(I%),lenn%); ELSE PRINTstatement$(I%);STRING$((lenn%-LEN(statement$(I%))),line$);
 1290 PRINT"  ";SPC(sign_justify);
 1300 acc_length$=STR$(account(I%))
 1310 dec_pnt=INSTR(acc_length$,".")
 1320 IF dec_pnt=0 tlength$=acc_length$+".00" ELSE tlength$=LEFT$(acc_length$,dec_pnt+2)
 1330 IF INSTR(acc_length$,".")=-1 tlength$=tlength$+".00"
 1340 IF LEN(tlength$)-dec_pnt=1 tlength$=tlength$+"0"
 1350 spaces=9-LEN(tlength$)-sign_justify
 1360 PRINTtlength$;SPC(spaces);" ";balance(I%)
 1370 ENDPROC
 1380 :
 1390 DEFPROCpause
 1400 IF pause%=1 ENDPROC
 1410 PRINTTAB(26,14)CHR$14;" Press SPACE-BAR To Continue ";CHR$15
 1420 REPEAT
 1430   A%=GET
 1440 UNTIL A%=32 OR A%=13
 1450 ENDPROC
 1460 :
 1470 DEFPROCspaces
 1480 PRINTSTRING$(79," ")
 1490 ENDPROC
 1500 :
 1510 :
 1520 DEFPROCdisplay_credit
 1530 CLS
 1540 credit_tot=0
 1550 count1%=0
 1560 FORI%=1TO21
 1570   IF credit(I%)<>0 count1%=count1%+1
 1580   PROCshowcreditvalues
 1590   IF count1%>10 count1%=0:PROCpause:CLS
 1600 NEXT
 1610 value=credit_tot:credit_tot=FNfix2
 1620 PRINTSPC(4);STRING$(76,"-")
 1630 PRINTSPC(4)"Total";SPC(61);"  ";credit_tot
 1640 PRINTSPC(4);STRING$(76,"-")
 1650 PROCpause
 1660 ENDPROC
 1670 :
 1680 DEFPROCshowcreditvalues
 1690 IF credit(I%)=0 ccard$(I%)=""
 1700 IF ccard$(I%)="" OR credit(I%)=0 ENDPROC
 1710 credit_tot=credit_tot+credit(I%)
 1720 IF I%<10PRINTSPC(0);" ";I%;") "; ELSE PRINTSPC(0);I%;") ";
 1730 IF LEN(ccard$(I%))>65 PRINTLEFT$(ccard$(I%),64);SPC(2);"  ";credit(I%) ELSE PRINTccard$(I%);STRING$((66-(LEN(ccard$(I%)))),line$);SPC(1);" ";credit(I%)
 1740 ENDPROC
 1750 :
 1760 :
 1770 DEFPROCdisplay_orders
 1780 CLS
 1790 count%=0
 1800 orders_tot=0
 1810 FOR I%=1TO21
 1820   PROCshowordersvalue
 1830 NEXT
 1840 value=orders_tot:orders_tot=FNfix2
 1850 PROCpause
 1860 ENDPROC
 1870 :
 1880 DEFPROCshowordersvalue
 1890 IF sts$(I%)="" OR amount(I%)=0 sts$(I%)="":amount(I%)=0:ENDPROC
 1900 orders_tot=orders_tot+amount(I%)
 1910 IF paid(I%)=1 orders_tot=orders_tot-amount(I%)
 1920 IF amount(I%)<10 JUSTIFY=1 ELSE JUSTIFY=0
 1930 IF I%<10 PRINTSPC(0);" ";I%;")"; ELSE PRINTSPC(0);"";I%;")";
 1940 IF paid(I%)=1 PRINTCHR$251; ELSE PRINT" ";
 1950 PRINTsts$(I%);STRING$((67-LEN(sts$(I%))),line$);
 1960 PRINTSPC(1)" ";SPC(JUSTIFY);amount(I%)
 1970 ENDPROC
 1980 :
 1990 DEFPROCorders_mes1
 2000 CLS
 2010 PRINTTAB(((80-LENdate$)/2),0);date$
 2020 ENDPROC
 2030 :
 2040 :
 2050 DEFPROCeror
 2060 CLOSE# 0
 2070 IF ERR=17 GOTO70
 2080 CLS
 2090 PRINTTAB(0,3)"At Line ";ERL;" The Error Was ";:REPORT
 2100 PRINT
 2110 END
 2120 :
 2130 :
 2140 DEFPROCfind
 2150 PROCborder
 2160 PRINTTAB(10,2)"Enter The Item You Wish To Search For In The Current Account"
 2170 PRINTTAB(38,4);:INPUTLINE"? "SEARCH$
 2180 SEARCH=VAL(SEARCH$)
 2190 IF SEARCH$="" ENDPROC
 2200 CLS
 2210 PRINTTAB(1,1)"Seaching For "CHR$34;SEARCH$;CHR$34
 2220 PRINT
 2230 FOR I%=1TO20
 2240   found(I%)=INSTR(statement$(I%),SEARCH$) OR INSTR(date$(I%),SEARCH$)
 2250   IF account(I%)=SEARCH found(I%)=1
 2260   IF balance(I%)=SEARCH found(I%)=1
 2270 NEXT
 2280 loop%=0
 2290 count%=-1
 2300 FOR I%=1TO20
 2310   IF found(I%)>0 count%=count%+1:PROCprint_line
 2320   IF loop%>9 loop%=0:PROCpause:CLS:PRINTTAB(0,3);
 2330 NEXT
 2340 IF count%=-1 CLS:PRINTTAB(33,3)"No Match Found":PRINTTAB(25,7)"All Requests Are Case Sensitive"
 2350 PROCpause
 2360 ENDPROC
 2370 :
 2380 DEFPROCprint_line
 2390 PRINTdate$(I%);SPC(2);
 2400 IF LEN(statement$(I%))>54 PRINT LEFT$(statement$(I%),56);:ELSE PRINT statement$(I%);
 2410 IF LEN(statement$(I%))>54 PRINTSPC(1);" ";account(I%) ELSE PRINTSTRING$((56-(LEN(statement$(I%)))),line$);"  ";account(I%)
 2420 loop%=loop%+1
 2430 ENDPROC
 2440 :
 2450 DEFPROCgraph_scale
 2460 max=0:min=5000
 2470 FOR I%= 1TO20
 2480   IF balance(I%)> max THEN max=balance(I%)
 2490   IF balance(I%)<min THEN min=balance(I%)
 2500 NEXT
 2510 RATIO=107/(max-min)
 2520 ENDPROC
 2530 :
 2540 DEFPROCgraph
 2550 PROCgraph_scale
 2560 CLS
 2570 REM axis
 2580 MOVE 55,20:DRAW 55,126:MOVE 55,20:DRAW 456,20
 2590 REM fix start point of graph
 2600 MOVE 55,20+((balance(1)-min)*RATIO)
 2610 REM draw graph
 2620 FOR I%=1TO20
 2630   DRAW 35+(I%*21),20+((balance(I%)-min)*RATIO)
 2640 NEXT
 2650 REM small 20 lines off bottom axix
 2660 FOR I%=1TO20
 2670   MOVE 35+(I%*21),20:DRAW 35+(I%*21),17
 2680 NEXT
 2690 FOR I%=5TO20 STEP 5
 2700   MOVE36+(I%*21),20:DRAW 36+(I%*21),17
 2710   MOVE55,20:DRAW55,17
 2720 NEXT
 2730 FOR I%=2TO20
 2740   MOVE 35+(I%*21),20
 2750   PLOT 22,35+(I%*21),20+((balance(I%)-min)*RATIO)
 2760 NEXT
 2770 PRINTTAB(0,0)"  ";max
 2780 PRINTTAB(0,12)"  ";min
 2790 value=((max-min)/2)+min:midvalue=FNfix2
 2800 PRINTTAB(0,6)"  ";midvalue
 2810 PRINTTAB(4,14)LEFT$(date$(1),10)
 2820 PRINTTAB(18,14)LEFT$(date$(5),10)
 2830 PRINTTAB(36,14)LEFT$(date$(10),10)
 2840 PRINTTAB(53,14)LEFT$(date$(15),10)
 2850 PRINTTAB(70,14)LEFT$(date$(20),10)
 2860 PRINTTAB(0,21)
 2870 REPEAT:A%=GET:UNTIL A%=13 OR A%=32
 2880 ENDPROC
 2890 :
 2900 DEFPROCprintdate
 2910 PRINTTAB(70-(LEN(date$)),0)date$;" "
 2920 ENDPROC
 2930 :
 2940 :
 2950 DEFPROCcalc_credit
 2960 credit_tot=0
 2970 FOR I%=1TO21
 2980   IF ccard$(I%)="" OR credit(I%)=0 GOTO3000
 2990   credit_tot=credit_tot+credit(I%)
 3000 NEXT
 3010 ENDPROC
 3020 :
 3030 DEFPROCcalc_orders
 3040 orders_tot=0
 3050 FOR I%=1TO21
 3060   IF sts$(I%)="" OR amount(I%)=0 OR paid(I%)=1 GOTO3080
 3070   orders_tot=orders_tot+amount(I%)
 3080 NEXT
 3090 ENDPROC
 3100 :
 3110 DEFFNfix2
 3120 value$=STR$(value)
 3130 len%=LENvalue$
 3140 dec%=INSTR(value$,".")
 3150 intg$=LEFT$(value$,dec%-1)
 3160 frac$=RIGHT$(value$,(len%-dec%))
 3170 frac1$=LEFT$(frac$,2)
 3180 IFdec%=0 frac1$="00"
 3190 comb$=intg$+"."+frac1$
 3200 =VAL(comb$)
 3210 ENDPROC
 3220 :
 3230 DEFPROCborder
 3240 CLS
 3250 MOVE0,0:DRAW 0,127:DRAW 479,127:DRAW 479,0:DRAW 0,0
 3260 MOVE 2,2:DRAW 2,125:DRAW 477,125:DRAW 477,2:DRAW 2,2
 3270 ENDPROC
 3280 :
 3290 DEFPROCborder2
 3300 MOVE237,127:DRAW 237,118:DRAW0,118:DRAW0,0:DRAW479,0:DRAW479,118:DRAW239,118:DRAW239,127
 3310 MOVE2,93:DRAW477,93:DRAW477,116:DRAW2,116:DRAW2,93
 3320 MOVE2,91:DRAW477,91:DRAW477,61:DRAW2,61:DRAW2,91
 3330 MOVE2,59:DRAW477,59:DRAW477,37:DRAW2,37:DRAW2,59
 3340 MOVE2,35:DRAW477,35:DRAW477,2:DRAW2,2:DRAW2,35
 3350 ENDPROC
 3360 :
 3370 :
 3380 DEFPROCtotal_orders
 3390 total_ord=0
 3400 FOR I%=1TO21
 3410   IF amount(I%)<>0 AND sts$(I%)<>"" total_ord=total_ord+amount(I%)
 3420 NEXT
 3430 ENDPROC
 3440 :
 3450 :
 3460 DEFPROCspool_all
 3470 pause%=1:line$=CHR$(126)
 3480 CLS
 3490 name$=LEFT$(ans$,7)+"Txt"
 3500 out$="SPOOL "+CHR$34+name$+CHR$34
 3510 OSCLI(out$)
 3520 PRINT">";STRING$(6,"-");"!";STRING$(5,"-");"!";STRING$(46,"-");"!";STRING$(10,"-");"!";STRING$(7,"-");"R"
 3530 PRINTans$
 3540 PRINT
 3550 PROCdisplay_account
 3560 PRINT
 3570 PROCdisplay_credit
 3580 PRINT
 3590 PROCdisplay_orders
 3600 PROCalso
 3610 *SPOOL
 3620 CLS
 3630 line$=CHR$(250)
 3640 pause%=0
 3650 ENDPROC
 3660 :
 3670 DEFPROCreverse
 3680 PRINTCHR$0;text1$
 3690 ENDPROC
 3700 :
 3710 DEFPROCalso
 3720 PRINT:PRINT:PRINT
 3730 PRINT"These added incase the previous text length was trunkated to 80chrs"
 3740 :
 3750 FOR loop2%=0TO21
 3760   text1$=statement$(loop2%)
 3770   PROCreverse
 3780 NEXT
 3790 PRINT:PRINT
 3800 FOR loop2%=0TO21
 3810   text1$=ccard$(loop2%)
 3820   PROCreverse
 3830 NEXT
 3840 ENDPROC
>*SPOOL
