home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / fos.arc / FOS2.BAS (.txt) < prev   
Encoding:
GW-BASIC  |  1984-12-27  |  17.4 KB  |  480 lines

  1. 10  ' FOS Program Section 2
  2. 15  '
  3. 20  CLEAR:DIM Z#(36):ON ERROR GOTO 4710
  4. 22  '
  5. 23  ' Drive designation in Line 25 must equal designation in Line 65 of FOS Pgm.
  6. 24  '
  7. 25  DRIVE$="A"
  8. 26  '
  9. 30  KEY OFF:COLOR 7,0:K1%=0:GOSUB 4520
  10. 40  ON KEY(1) GOSUB 920:KEY(1) ON:ON KEY(2) GOSUB 940:KEY(2) ON
  11. 50  ON KEY(9) GOSUB 4640:ON KEY(10) GOSUB 4650
  12. 60  PRINT TAB(24)"FILE MAINTENANCE AND DATA ANALYSIS.
  13. 70  PRINT STRING$(80,196):LOCATE 5,1
  14. 80  PRINT" 1 - INITIALIZE a given FOS file.  This is to be used the FIRST time
  15. 90  PRINT"     you intend to use a file.  For example, to start up your first
  16. 100  PRINT"     checking account (Checking Account #1) you would run this option
  17. 110  PRINT"     to initialize two files... Checking Account #1  Outstanding cks.
  18. 120  PRINT"     and Checking Account #1  Canceled Cks.
  19. 130  PRINT
  20. 140  PRINT" 2 - ENLARGE a file already being used.  For example, assume you are
  21. 150  PRINT"     are using Checking Account #2 and in the process of entering
  22. 160  PRINT"     data relative to a check you wrote, you receive the message:
  23. 170  PRINT"     CHECKING ACCOUNT #2  OUTSTANDING CHECKS FILE FULL, you would use
  24. 180  PRINT"     this option to add more space to that already existing file.
  25. 190  PRINT:PRINT" 3 - PLOT monthly expenses, by category, for any year, list
  26. 200  PRINT"     expense totals, by category, during any period of time, or list
  27. 210  PRINT"     tax related items over any period of time.":PRINT
  28. 220  PRINT" 9 - RETURN to main FOS menu.
  29. 230  PRINT:GOSUB 930
  30. 240  KB$=INKEY$:IF KB$="" THEN 240
  31. 250  IF K1%=1 THEN 310
  32. 260  IF KB$="1" THEN 1100
  33. 270  IF KB$="2" THEN 320
  34. 280  IF KB$="3" THEN 1590
  35. 290  IF KB$="9" THEN 310
  36. 300  BEEP:GOTO 240
  37. 310  CLS:LOCATE 10,25:PRINT"Loading FOS Program section 1...":CHAIN DRIVE$+":FOS"
  38. 320  CLOSE:K1%=0:CLS:PRINT TAB(30);:COLOR 31
  39. 330  PRINT "F I L E    E N L A R G E R":COLOR 7:PRINT
  40. 340  PRINT"  0 - Checking account #1 (Outstanding checks)
  41. 350  PRINT"  1 - Checking account #1 (Canceled checks)
  42. 360  PRINT:PRINT"  2 - Checking account #2 (Outstanding checks)
  43. 370  PRINT"  3 - Checking account #2 (Canceled checks)
  44. 380  PRINT:PRINT"  4 - Checking account #3 (Outstanding checks)
  45. 390  PRINT"  5 - Checking account #3 (Canceled checks)
  46. 400  PRINT:PRINT"  8 - Special accounts
  47. 410  PRINT"  9 - Cash Expenditures":PRINT
  48. 420  PRINT"  Enter file to be ENLARGED: ";
  49. 430  SOUND 1200,0.5:INPUT"",KB$:IF K1%=1 THEN 20
  50. 440  IF LEN(KB$)<>1 THEN BEEP:GOTO 420
  51. 450  IF KB$="8" THEN GOSUB 1080:GOTO 550
  52. 460  IF KB$="9" THEN GOSUB 1000:GOTO 680
  53. 470  IF KB$="0" THEN GOSUB 1010:GOTO 680
  54. 480  IF KB$="2" THEN GOSUB 1020:GOTO 680
  55. 490  IF KB$="4" THEN GOSUB 1030:GOTO 680
  56. 500  IF KB$="1" THEN GOSUB 1050:GOTO 800
  57. 510  IF KB$="3" THEN GOSUB 1060:GOTO 800
  58. 520  IF KB$="5" THEN GOSUB 1070:GOTO 800
  59. 530  BEEP:PRINT:PRINT"  Invalid file selected...":PRINT:GOSUB 950:GOTO 380
  60. 540  '     SPECIAL ACCOUNTS
  61. 550  PRINT:R%=1:GET#1,R%:IF A$="A" OR A$="B" THEN 570
  62. 560  IF A$="E" THEN 580 ELSE 640
  63. 570  R%=R%+1:GET#1,R%:IF A$="E" THEN 580 ELSE 570
  64. 580  PRINT"  File presently has room for a total of" R%-1 " records.":PRINT
  65. 590  INPUT"  How many ADDITIONAL records do you want space reserved for? ",KB%
  66. 600  IF K1%=1 THEN 320 ELSE KB%=KB%+R%:LSET A$="A"
  67. 610  FOR I=R% TO KB%:PUT#1,I:NEXT:LSET A$="E":PUT#1,KB%
  68. 620  PRINT:PRINT"  File has now been enlarged per your request."
  69. 630  GOSUB 950:CLS:CLOSE:GOTO 320
  70. 640  PRINT:PRINT"You cannot ENLARGE this file because you have not INITIALIZED
  71. 650  PRINT"it yet.  Please perform the INITIALIZE function.
  72. 660  CLOSE:GOSUB 950:GOTO 20
  73. 670  '     CASH EXPENDITURES  AND  CURRENT CHECKS
  74. 680  PRINT:R%=1:GET#1,R%:IF A$="A" OR A$="B" THEN 700
  75. 690  IF A$="E" THEN 710 ELSE 770
  76. 700  R%=R%+1:GET#1,R%:IF A$="E" THEN 710 ELSE 700
  77. 710  PRINT"  File presently has room for a total of" R%-1 " records.":PRINT
  78. 720  INPUT"  How many ADDITIONAL records do you want space reserved for? ",KB%
  79. 730  IF K1%=1 THEN 320 ELSE KB%=KB%+R%:LSET A$="A"
  80. 740  FOR I=R% TO KB%:PUT#1,I:NEXT:LSET A$="E":PUT#1,KB%
  81. 750  PRINT:PRINT"  File has now been enlarged as requested."
  82. 760  GOSUB 950:CLS:CLOSE:GOTO 320
  83. 770  PRINT:PRINT"You cannot ENLARGE this file because you have not INITIALIZED
  84. 780  PRINT"it yet.  Please perform the INITIALIZE function.
  85. 790  CLOSE:GOSUB 950:GOTO 20
  86. 800  PRINT:R%=1:GET#1,R%:IF A$="A" OR A$="B" THEN 820
  87. 810  IF A$="E" THEN 830 ELSE 890
  88. 820  R%=R%+1:GET#1,R%:IF A$="E" THEN 830 ELSE 820
  89. 830  PRINT"  File presently has space for a total of" R%-1 " records.":PRINT
  90. 840  INPUT"  How many ADDITIONAL records do you want space reserved for? ",KB%
  91. 850  IF K1%=1 THEN 320 ELSE KB%=KB%+R%:LSET A$="A"
  92. 860  FOR I=R% TO KB%:PUT#1,I:NEXT:LSET A$="E":PUT#1,KB%
  93. 870  PRINT:PRINT"  File has now been enlarged as requested."
  94. 880  GOSUB 950:CLS:CLOSE:GOTO 320
  95. 890  PRINT:PRINT"You cannot ENLARGE this file because you have not INITIALIZED
  96. 900  PRINT"it yet.  Please perform the INITIALIZE function.
  97. 910  CLOSE:GOSUB 950:GOTO 20
  98. 920  K1%=1:RETURN
  99. 930  LOCATE 23,30:COLOR 18:PRINT"Enter function desired:  ";:COLOR 7:SOUND 800,0.5:RETURN
  100. 940  COLOR 7,0:CLOSE:CLS:PRINT"Welcome to BASIC...":PRINT:END
  101. 950  COLOR 18:PRINT TAB(55)"Hit any key to continue..";:COLOR 7
  102. 960  KB$=INKEY$:IF KB$="" THEN 960 ELSE RETURN
  103. 970  OPEN DRIVE$+":SAVINGS1.FOS" AS 1 LEN=62:GOTO 990
  104. 980  OPEN DRIVE$+":SAVINGS2.FOS" AS 1 LEN=62
  105. 990  FIELD#1,1 AS A$,8 AS B$,8 AS C$,1 AS D$,8 AS E$,36 AS G$:RETURN
  106. 1000  OPEN DRIVE$+":CASHEXP.FOS" AS 1 LEN=59:GOTO 1040
  107. 1010  OPEN DRIVE$+":CHKCUR1.FOS" AS 1 LEN=59:GOTO 1040
  108. 1020  OPEN DRIVE$+":CHKCUR2.FOS" AS 1 LEN=59:GOTO 1040
  109. 1030  OPEN DRIVE$+":CHKCUR3.FOS" AS 1 LEN=59
  110. 1040  FIELD#1,1 AS A$,8 AS B$,8 AS C$,2 AS D$,2 AS E$,1 AS F$,37 AS G$:RETURN
  111. 1050  OPEN DRIVE$+":CHKCAN1.FOS" AS 1 LEN=59:GOTO 1040
  112. 1060  OPEN DRIVE$+":CHKCAN2.FOS" AS 1 LEN=59:GOTO 1040
  113. 1070  OPEN DRIVE$+":CHKCAN3.FOS" AS 1 LEN=59:GOTO 1040
  114. 1080  OPEN DRIVE$+":SPECIAL.FOS" AS 1 LEN=62
  115. 1090  FIELD#1,1 AS A$,8 AS B$,8 AS C$,1 AS D$,4 AS E$,40 AS G$:RETURN
  116. 1100  CLS:PRINT TAB(20);:COLOR 31:K1%=0
  117. 1110  PRINT "F I L E    I N I T I A L I Z A T I O N":COLOR 7:PRINT
  118. 1120  PRINT"  0 - Checking account  # 1  (Outstanding checks)
  119. 1130  PRINT"  1 - Checking account  # 1  (Canceled checks)
  120. 1140  PRINT:PRINT"  2 - Checking account  # 2  (Outstanding checks)
  121. 1150  PRINT"  3 - Checking account  # 2  (Canceled checks)
  122. 1160  PRINT:PRINT"  4 - Checking account  # 3  (Outstanding checks)
  123. 1170  PRINT"  5 - Checking account  # 3  (Canceled checks)
  124. 1180  PRINT:PRINT"  6 - Savings account   # 1
  125. 1190  PRINT"  7 - Savings account   # 2
  126. 1200  PRINT:PRINT"  8 - Special accounts
  127. 1210  PRINT"  9 - Cash Expenditures":PRINT
  128. 1220  PRINT"  Enter file to be INITIALIZED: ";
  129. 1230  SOUND 1300,0.5:INPUT"",KB$:IF K1%=1 THEN 20
  130. 1240  IF LEN(KB$)<>1 THEN BEEP:GOTO 1220
  131. 1250  IF KB$="6" OR KB$="7" THEN 1300 ELSE PRINT
  132. 1260  PRINT "  Enter the maximum number of records you will have in this file"
  133. 1270  PRINT "    at any one time:  ";
  134. 1280  INPUT"",KB%:IF K1%=1 THEN 1100
  135. 1290  IF KB%<2 THEN BEEP:GOTO 1260
  136. 1300  PRINT:COLOR 30:PRINT"CAUTION... This function will destroy any data ";
  137. 1310  PRINT"already in this file."
  138. 1320  COLOR 7,0:PRINT:SOUND 1600,2
  139. 1330  PRINT"  If you are sure you want to continue... enter the word";
  140. 1340  PRINT" PROCEED:  ";:INPUT"",KB1$
  141. 1350  IF K1%=1 THEN 1100
  142. 1360  IF KB1$="proceed" OR KB1$="PROCEED" THEN 1370 ELSE BEEP:GOTO 1330
  143. 1370  FILE%=VAL(KB$)
  144. 1380  IF KB$="8" THEN GOSUB 1080:GOTO 1490
  145. 1390  IF KB$="6" THEN GOSUB 970:GOTO 1510
  146. 1400  IF KB$="9" THEN GOSUB 1000:GOTO 1490
  147. 1410  IF KB$="7" THEN GOSUB 980:GOTO 1510
  148. 1420  IF KB$="0" THEN GOSUB 1010:GOTO 1530
  149. 1430  IF KB$="2" THEN GOSUB 1020:GOTO 1530
  150. 1440  IF KB$="4" THEN GOSUB 1030:GOTO 1530
  151. 1450  IF KB$="1" THEN GOSUB 1050:GOTO 1490
  152. 1460  IF KB$="3" THEN GOSUB 1060:GOTO 1490
  153. 1470  IF KB$="5" THEN GOSUB 1070:GOTO 1490
  154. 1480  BEEP:PRINT:PRINT"  Invalid file selected...":PRINT:GOSUB 950:GOTO 1100
  155. 1490  LSET A$="A"
  156. 1500  FOR R%=1 TO KB%:PUT#1,R%:NEXT:LSET A$="E":PUT#1,R%:CLOSE:GOTO 1100
  157. 1510  LSET A$="A":LSET E$=MKD$(0):FOR R%=1 TO 21:PUT#1,R%:NEXT
  158. 1520  LSET A$="E":PUT#1,R%:CLOSE:GOTO 1100
  159. 1530  LSET A$="B":GOSUB 1580:LSET B$=FDATE$:LSET C$=MKD$(0):LSET D$=MKI$(1)
  160. 1540  LSET E$=MKI$(1):LSET F$="N":LSET G$="Previous balance.":PUT#1,1
  161. 1550  LSET A$="A":FOR R%=2 TO KB%:PUT#1,R%:NEXT:LSET A$="E"
  162. 1560  PUT#1,R%:CLOSE:GOTO 1100
  163. 1570  LSET H$="A"
  164. 1580  FDATE$=LEFT$(DATE$,2)+"-"+MID$(DATE$,4,2)+"-"+RIGHT$(DATE$,2):RETURN
  165. 1590  CLOSE:K1%=0:CLS:PRINT TAB(30)"D A T A    A N A L Y S I S
  166. 1600  PRINT:PRINT:PRINT
  167. 1610  PRINT"  1 - Display monthly expenses for one category for an entire year.
  168. 1620  PRINT
  169. 1630  PRINT"  2 - Print monthly expenses for one category for an entire year.
  170. 1640  PRINT:PRINT:PRINT"  3 - Display tax deductable items.
  171. 1650  PRINT:PRINT"  4 - Print tax deductable items on printer.
  172. 1660  PRINT:PRINT:PRINT"  5 - Display total expenses by category.
  173. 1670  PRINT:PRINT"  6 - Print total expenses by category.
  174. 1680  GOSUB 930
  175. 1690  KB$=INKEY$:IF KB$="" THEN 1690
  176. 1700  IF K1%=1 THEN 20
  177. 1710  IF KB$="1" THEN B%=0:GOTO 1780
  178. 1720  IF KB$="2" THEN B%=1:GOTO 1780
  179. 1730  IF KB$="3" THEN A%=0:GOTO 3130
  180. 1740  IF KB$="4" THEN A%=1:GOTO 3310
  181. 1750  IF KB$="5" THEN B%=0:GOTO 3670
  182. 1760  IF KB$="6" THEN B%=1:GOTO 3670
  183. 1770  BEEP:GOTO 1690
  184. 1780  GOSUB 4520:PRINT"  Enter two digits for the YEAR you want analyzed or just
  185. 1790  PRINT:PRINT"  press ENTER to use the current year... ";
  186. 1800  INPUT KB2$:IF K1%=1 THEN 1590
  187. 1810  IF KB2$="" THEN KB2$=RIGHT$(DATE$,2):GOTO 1840
  188. 1820  IF LEN(KB2$)=2 THEN 1840
  189. 1830  BEEP:GOTO 1800
  190. 1840  CLS:GOSUB 4660:PRINT
  191. 1850  PRINT:PRINT"From the list above, select a category you would like plotted: ";
  192. 1860  INPUT KB%:IF K1%=1 THEN 1590
  193. 1870  IF KB%>9 AND KB%<46 THEN 1890
  194. 1880  BEEP:GOTO 1850
  195. 1890  M1#=0:M2#=0:M3#=0:M4#=0:M5#=0:M6#=0:M7#=0:M8#=0:M9#=0:M10#=0:M11#=0:M12#=0
  196. 1900  GOSUB 1010:GOSUB 2600:CLOSE:GOSUB 1020:GOSUB 2600:CLOSE:GOSUB 1030:GOSUB 2600
  197. 1910  CLOSE:GOSUB 1050:GOSUB 2600:CLOSE:GOSUB 1060:GOSUB 2600:CLOSE
  198. 1920  GOSUB 1070:GOSUB 2600:CLOSE:GOSUB 1000:GOSUB 2600:CLOSE
  199. 1930  RESTORE
  200. 1940  READ A%,KB1$:IF A%<>KB% THEN 1940
  201. 1950  GOSUB 2810:IF M13=0 THEN 2300 ELSE M15=M13/60
  202. 1960  GOSUB 1580
  203. 1970  IF B%=0 THEN 2020
  204. 1980  PRINT:BEEP:PRINT"  Insure that the printer is ready...":GOSUB 4540
  205. 1990  IF K1%=1 THEN 1590 ELSE GOSUB 4520
  206. 2000  PRINT"  Now printing requested data...
  207. 2010  LPRINT:LPRINT KB1$ "     19" KB2$ TAB(70) FDATE$:KB$=CHR$(163):GOTO 2320
  208. 2020  GOSUB 1580:CLS:PRINT KB1$"     19" KB2$ TAB(70) FDATE$:KB$=CHR$(205)
  209. 2030  PRINT:PRINT
  210. 2040  PRINT"Jan  ";:PRINT USING"$$######,.##";M1#;
  211. 2050  PRINT TAB(20);STRING$((M1#/M15),KB$)
  212. 2060  PRINT"Feb  ";:PRINT USING"$$######,.##";M2#;
  213. 2070  PRINT TAB(20);STRING$((M2#/M15),KB$)
  214. 2080  PRINT"Mar  ";:PRINT USING"$$######,.##";M3#;
  215. 2090  PRINT TAB(20);STRING$((M3#/M15),KB$):PRINT
  216. 2100  PRINT"Apr  ";:PRINT USING"$$######,.##";M4#;
  217. 2110  PRINT TAB(20);STRING$((M4#/M15),KB$)
  218. 2120  PRINT"May  ";:PRINT USING"$$######,.##";M5#;
  219. 2130  PRINT TAB(20);STRING$((M5#/M15),KB$)
  220. 2140  PRINT"Jun  ";:PRINT USING"$$######,.##";M6#;
  221. 2150  PRINT TAB(20);STRING$((M6#/M15),KB$):PRINT
  222. 2160  PRINT"Jul  ";:PRINT USING"$$######,.##";M7#;
  223. 2170  PRINT TAB(20);STRING$((M7#/M15),KB$)
  224. 2180  PRINT"Aug  ";:PRINT USING"$$######,.##";M8#;
  225. 2190  PRINT TAB(20);STRING$((M8#/M15),KB$)
  226. 2200  PRINT"Sep  ";:PRINT USING"$$######,.##";M9#;
  227. 2210  PRINT TAB(20);STRING$((M9#/M15),KB$):PRINT
  228. 2220  PRINT"Oct  ";:PRINT USING"$$######,.##";M10#;
  229. 2230  PRINT TAB(20);STRING$((M10#/M15),KB$)
  230. 2240  PRINT"Nov  ";:PRINT USING"$$######,.##";M11#;
  231. 2250  PRINT TAB(20);STRING$((M11#/M15),KB$)
  232. 2260  PRINT"Dec  ";:PRINT USING"$$######,.##";M12#;
  233. 2270  PRINT TAB(20);STRING$((M12#/M15),KB$)
  234. 2280  PRINT:PRINT:PRINT"  T O T A L   ";USING"$$#######,.##";M14#
  235. 2290  PRINT:PRINT:CLOSE:GOSUB 4540:GOTO 1840
  236. 2300  PRINT:PRINT"  There were no expenses for the selected category..."
  237. 2310  GOTO 2290
  238. 2320  LPRINT:LPRINT"Jan  ";:LPRINT USING"$$######,.##";M1#;
  239. 2330  LPRINT TAB(20);STRING$((M1#/M15),KB$)
  240. 2340  LPRINT"Feb  ";:LPRINT USING"$$######,.##";M2#;
  241. 2350  LPRINT TAB(20);STRING$((M2#/M15),KB$)
  242. 2360  LPRINT"Mar  ";:LPRINT USING"$$######,.##";M3#;
  243. 2370  LPRINT TAB(20);STRING$((M3#/M15),KB$):LPRINT
  244. 2380  LPRINT"Apr  ";:LPRINT USING"$$######,.##";M4#;
  245. 2390  LPRINT TAB(20);STRING$((M4#/M15),KB$)
  246. 2400  LPRINT"May  ";:LPRINT USING"$$######,.##";M5#;
  247. 2410  LPRINT TAB(20);STRING$((M5#/M15),KB$)
  248. 2420  LPRINT"Jun  ";:LPRINT USING"$$######,.##";M6#;
  249. 2430  LPRINT TAB(20);STRING$((M6#/M15),KB$):LPRINT
  250. 2440  LPRINT"Jul  ";:LPRINT USING"$$######,.##";M7#;
  251. 2450  LPRINT TAB(20);STRING$((M7#/M15),KB$)
  252. 2460  LPRINT"Aug  ";:LPRINT USING"$$######,.##";M8#;
  253. 2470  LPRINT TAB(20);STRING$((M8#/M15),KB$)
  254. 2480  LPRINT"Sep  ";:LPRINT USING"$$######,.##";M9#;
  255. 2490  LPRINT TAB(20);STRING$((M9#/M15),KB$):LPRINT
  256. 2500  LPRINT"Oct  ";:LPRINT USING"$$######,.##";M10#;
  257. 2510  LPRINT TAB(20);STRING$((M10#/M15),KB$)
  258. 2520  LPRINT"Nov  ";:LPRINT USING"$$######,.##";M11#;
  259. 2530  LPRINT TAB(20);STRING$((M11#/M15),KB$)
  260. 2540  LPRINT"Dec  ";:LPRINT USING"$$######,.##";M12#;
  261. 2550  LPRINT TAB(20);STRING$((M12#/M15),KB$)
  262. 2560  LPRINT:LPRINT"  T O T A L   ";USING"$$#######,.##";M14#
  263. 2570  LPRINT:LPRINT:CLOSE:GOTO 1840
  264. 2580  END
  265. 2590  '    READ A FILE AND ACCUMULATE TOTALS BY MONTH
  266. 2600  GET#1:IF A$="E" THEN RETURN
  267. 2610  IF A$="B" OR A$="M" THEN 2650
  268. 2620  IF A$="A" THEN 2630 ELSE RETURN
  269. 2630  GET#1:IF A$="E" THEN RETURN
  270. 2640  IF A$<>"B" AND A$<>"M" THEN 2630
  271. 2650  IF CVI(E$)<>KB% THEN 2630
  272. 2660  IF RIGHT$(B$,2)<>KB2$ THEN 2630
  273. 2670  A1$=LEFT$(B$,2)
  274. 2680  IF A1$="01" THEN M1#=M1#+CVD(C$):GOTO 2630
  275. 2690  IF A1$="02" THEN M2#=M2#+CVD(C$):GOTO 2630
  276. 2700  IF A1$="03" THEN M3#=M3#+CVD(C$):GOTO 2630
  277. 2710  IF A1$="04" THEN M4#=M4#+CVD(C$):GOTO 2630
  278. 2720  IF A1$="05" THEN M5#=M5#+CVD(C$):GOTO 2630
  279. 2730  IF A1$="06" THEN M6#=M6#+CVD(C$):GOTO 2630
  280. 2740  IF A1$="07" THEN M7#=M7#+CVD(C$):GOTO 2630
  281. 2750  IF A1$="08" THEN M8#=M8#+CVD(C$):GOTO 2630
  282. 2760  IF A1$="09" THEN M9#=M9#+CVD(C$):GOTO 2630
  283. 2770  IF A1$="10" THEN M10#=M10#+CVD(C$):GOTO 2630
  284. 2780  IF A1$="11" THEN M11#=M11#+CVD(C$):GOTO 2630
  285. 2790  M12#=M12#+CVD(C$):GOTO 2630
  286. 2800  '    DETERMINE WHICH NOMTH HAS HIGHEST COST
  287. 2810  M13=0:IF M1#>M13 THEN M13=M1#
  288. 2820  IF M2#>M13 THEN M13=M2#
  289. 2830  IF M3#>M13 THEN M13=M3#
  290. 2840  IF M4#>M13 THEN M13=M4#
  291. 2850  IF M5#>M13 THEN M13=M5#
  292. 2860  IF M6#>M13 THEN M13=M6#
  293. 2870  IF M7#>M13 THEN M13=M7#
  294. 2880  IF M8#>M13 THEN M13=M8#
  295. 2890  IF M9#>M13 THEN M13=M9#
  296. 2900  IF M10#>M13 THEN M13=M10#
  297. 2910  IF M11#>M13 THEN M13=M11#
  298. 2920  IF M12#>M13 THEN M13=M12#
  299. 2930  M14#=M1#+M2#+M3#+M4#+M5#+M6#+M7#+M8#+M9#+M10#+M11#+M12#:RETURN
  300. 2940  DATA 10,"Appliances.",22,"Entertainment."
  301. 2950  DATA 34,"Miscellaneous.",11,"Automobile Exp."
  302. 2960  DATA 23,"Food.",35,"Mortgage."
  303. 2970  DATA 12,"Capital Inv. (Auto)",24,"Furniture."
  304. 2980  DATA 36,"Paper/Magazines",13,"Capital Inv. (Bldgs)"
  305. 2990  DATA 25,"Gasoline/Oil (Auto).",37,"Supplies"
  306. 3000  DATA 14,"Capital Inv. (Other)",26,"Gas/Oil (Heating)."
  307. 3010  DATA 38,"Taxes.",15,"Cash Withdrawal."
  308. 3020  DATA 27,"Hobbies",39,"Telephone."
  309. 3030  DATA 16,"Clothing.",28,"Insurance."
  310. 3040  DATA 40,"Tools.",17,"Dental."
  311. 3050  DATA 29,"Interest.",41,"Tractor/Mower."
  312. 3060  DATA 18,"Donations (Church)",30,"Lawn/Garden."
  313. 3070  DATA 42,"Transfer to Invest.",19,"Donations (Other)."
  314. 3080  DATA 31,"Maint. (Bldgs).",43,"Transfer to Savings"
  315. 3090  DATA 20,"Education Exp.",32,"Maint. (Other)."
  316. 3100  DATA 44,"Vacation.",21,"Electricity."
  317. 3110  DATA 33,"Medical.",45,"Water / Sewer cost."
  318. 3120  DATA 0,"END"
  319. 3130  GOSUB 4520:GOSUB 4200:IF K1%=1 THEN 1590
  320. 3140  GOSUB 4310:IF K1%=1 THEN 1590
  321. 3150  GOSUB 4520:B%=2:PRINT"Reading Checking Account #1 files...":GOSUB 4560
  322. 3160  GOSUB 1050:GOSUB 3480:CLOSE:GOSUB 1010:GOSUB 3480:CLOSE
  323. 3170  PRINT"End of Checking Account #1 data.
  324. 3180  GOSUB 4540:IF K1%=1 THEN 1590
  325. 3190  GOSUB 4520:B%=2:PRINT"Reading Checking Account #2 files...":GOSUB 4560
  326. 3200  GOSUB 1060:GOSUB 3480:CLOSE:GOSUB 1020:GOSUB 3480:CLOSE
  327. 3210  PRINT"End of Checking Account #2 data.
  328. 3220  GOSUB 4540:IF K1%=1 THEN 1590
  329. 3230  GOSUB 4520:B%=2:PRINT"Reading Checking Account #3 files...":GOSUB 4560
  330. 3240  GOSUB 1070:GOSUB 3480:CLOSE:GOSUB 1030:GOSUB 3480:CLOSE
  331. 3250  PRINT"End of Checking Account #3 data.
  332. 3260  GOSUB 4540:IF K1%=1 THEN 1590
  333. 3270  GOSUB 4520:B%=2:PRINT"Reading Cash Expenditures file...":GOSUB 4560
  334. 3280  GOSUB 1000:GOSUB 3480:CLOSE
  335. 3290  PRINT"End of Cash Expenditures data.
  336. 3300  GOSUB 4540:GOTO 1590
  337. 3310  B%=6:P%=1:K9%=0:GOSUB 4520:GOSUB 4200:IF K1%=1 THEN 1590
  338. 3320  GOSUB 4310:IF K1%=1 THEN 1590
  339. 3330  KEY(9) ON:KEY(10) ON:SOUND 1200,0.5
  340. 3340  PRINT:PRINT"  Insure that the printer is ready.":GOSUB 4540
  341. 3350  IF K1%=1 THEN 1590 ELSE GOSUB 4520
  342. 3360  PRINT:PRINT"  To temporarily stop the printer, press the F9 key.
  343. 3370  PRINT:PRINT"  To STOP the printer and return to MENU, press the F1 key.
  344. 3380  LPRINT"TAX RELATED EXPENDITURES...     From: " FD1$ "    To: " FD2$;
  345. 3390  LPRINT TAB(70)"PAGE: " P%:LPRINT
  346. 3400  GOSUB 4600:LPRINT:LPRINT"CHECKING ACCOUNT #1."
  347. 3410  GOSUB 1050:GOSUB 3480:CLOSE:GOSUB 1010:GOSUB 3480:CLOSE
  348. 3420  B%=B%+2:LPRINT:LPRINT"CHECKING ACCOUNT #2."
  349. 3430  GOSUB 1060:GOSUB 3480:CLOSE:GOSUB 1020:GOSUB 3480:CLOSE
  350. 3440  B%=B%+2:LPRINT:LPRINT"CHECKING ACCOUNT #3."
  351. 3450  GOSUB 1070:GOSUB 3480:CLOSE:GOSUB 1030:GOSUB 3480:CLOSE
  352. 3460  B%=B%+2:LPRINT:LPRINT"CASH EXPENDITURES FILE."
  353. 3470  GOSUB 1000:GOSUB 3480:CLOSE:LPRINT CHR$(140):GOTO 1590
  354. 3480  GET#1:IF A$="B" THEN 3520 ELSE RETURN
  355. 3490  GET#1:IF A$="E" THEN RETURN
  356. 3500  IF K1%=1 THEN 1590
  357. 3510  IF A$="A" THEN 3490
  358. 3520  IF F$="N" OR F$="n" THEN 3490
  359. 3530  Y3$=RIGHT$(B$,2):D3$=LEFT$(B$,2)+MID$(B$,4,2)
  360. 3540  IF Y1$=Y2$ THEN 3580
  361. 3550  IF Y3$=Y1$ THEN 3630
  362. 3560  IF Y3$=Y2$ THEN 3640
  363. 3570  IF Y3$>Y1$ AND Y3$<Y2$ THEN 3600 ELSE 3490
  364. 3580  IF Y3$<>Y2$ THEN 3490
  365. 3590  IF D3$<D1$ OR D3$>D2$ THEN 3490
  366. 3600  IF A%=0 THEN GOSUB 4420:GOTO 3490
  367. 3610  IF K9%=1 THEN 3650
  368. 3620  GOSUB 4460:GOTO 3490
  369. 3630  IF D3$=>D1$ THEN 3600 ELSE 3490
  370. 3640  IF D3$>D2$ THEN 3490 ELSE 3600
  371. 3650  LOCATE 24,5:PRINT"Printer stopped by F9 key.  To continue, press F10 key.";
  372. 3660  GOTO 3610
  373. 3670  FOR C%=1 TO 36:Z#(C%)=0:NEXT
  374. 3680  CLOSE:GOSUB 4520:GOSUB 4200:IF K1%=1 THEN 1590
  375. 3690  GOSUB 4310:IF K1%=1 THEN 1590
  376. 3700  GOSUB 4520:PRINT"  Reading Checking Account #1 files...
  377. 3710  GOSUB 1010:GOSUB 3840:CLOSE:GOSUB 1050:GOSUB 3840:CLOSE
  378. 3720  PRINT"  Reading Checking Account #2 files...
  379. 3730  GOSUB 1020:GOSUB 3840:CLOSE:GOSUB 1060:GOSUB 3840:CLOSE
  380. 3740  PRINT"  Reading Checking Account #3 files...
  381. 3750  GOSUB 1030:GOSUB 3840:CLOSE:GOSUB 1070:GOSUB 3840:CLOSE
  382. 3760  PRINT"  Reading Cash Expenditures file...
  383. 3770  GOSUB 1000:GOSUB 3840:CLOSE:IF B%=1 THEN 3790
  384. 3780  GOSUB 3990:GOSUB 4540:GOTO 1590
  385. 3790  PRINT:BEEP:PRINT"  Insure that the printer is ready...":GOSUB 4540
  386. 3800  IF K1%=1 THEN 1590 ELSE GOSUB 4520
  387. 3810  PRINT"  Now printing requested data..."
  388. 3820  GOSUB 4110:GOTO 1590
  389. 3830  '     GET A RECORD and ADD AMOUNT TO ARRAY.
  390. 3840  GET#1:IF A$="B" OR A$="M" THEN 3880 ELSE RETURN
  391. 3850  GET#1:IF A$="E" THEN RETURN
  392. 3860  IF K1%=1 THEN 1590
  393. 3870  IF A$="A" THEN 3850
  394. 3880  Y3$=RIGHT$(B$,2):D3$=LEFT$(B$,2)+MID$(B$,4,2)
  395. 3890  IF Y1$=Y2$ THEN 3930
  396. 3900  IF Y3$=Y1$ THEN 3970
  397. 3910  IF Y3$=Y2$ THEN 3980
  398. 3920  IF Y3$>Y1$ AND Y3$<Y2$ THEN 3950 ELSE 3850
  399. 3930  IF Y3$<>Y2$ THEN 3850
  400. 3940  IF D3$<D1$ OR D3$>D2$ THEN 3850
  401. 3950  C%=(CVI(E$)-9):IF C%<1 OR C%>36 THEN 3850
  402. 3960  Z#(C%)=Z#(C%)+CVD(C$):GOTO 3850
  403. 3970  IF D3$=>D1$ THEN 3950 ELSE 3850
  404. 3980  IF D3$>D2$ THEN 3850 ELSE 3950
  405. 3990  GOSUB 4100:RESTORE:FOR C%=10 TO 30
  406. 4000  READ A%,KB$:IF A%=0 THEN RESTORE
  407. 4010  IF A%<>C% THEN 4000
  408. 4020  PRINT TAB(5) A% " -  " KB$ TAB(36) USING"$$######,.##";Z#(C%-9):NEXT
  409. 4030  GOSUB 4540:RESTORE:GOSUB 4100:FOR C%=31 TO 45
  410. 4040  READ A%,KB$:IF A%=0 THEN RESTORE
  411. 4050  IF A%<>C% THEN 4040
  412. 4060  PRINT TAB(5) A% " -  " KB$ TAB(36) USING"$$######,.##";Z#(C%-9):NEXT
  413. 4070  A#=0:FOR C%=1 TO 36:A#=A#+Z#(C%):NEXT
  414. 4080  A#=A#-Z#(6)
  415. 4090  PRINT:PRINT TAB(13) "GRAND TOTAL:" TAB(35) USING"$$#######,.##";A#:RETURN
  416. 4100  GOSUB 4520:PRINT"E X P E N S E   T O T A L S        FROM: " FD1$ "     TO: " FD2$:PRINT:RETURN
  417. 4110  GOSUB 4190:RESTORE:FOR C%=10 TO 45
  418. 4120  READ A%,KB$:IF A%=0 THEN RESTORE
  419. 4130  IF A%<>C% THEN 4120
  420. 4140  LPRINT TAB(5) A% " -  " KB$ TAB(36) USING"$$######,.##";Z#(C%-9):NEXT
  421. 4150  A#=0:FOR C%=1 TO 36:A#=A#+Z#(C%):NEXT
  422. 4160  A#=A#-Z#(6)
  423. 4170  LPRINT:LPRINT TAB(13) "GRAND TOTAL:" TAB(35) USING"$$#######,.##";A#
  424. 4180  LPRINT CHR$(140):RETURN
  425. 4190  LPRINT:LPRINT"E X P E N S E   T O T A L S        FROM: " FD1$ "     TO: " FD2$:LPRINT STRING$(80,163):LPRINT:RETURN
  426. 4200  PRINT
  427. 4210  PRINT"  Enter starting date (0,4, or 6 digits in MMDDYY format):  ";
  428. 4220  X%=POS(0):Y%=CSRLIN:INPUT"",KB$
  429. 4230  IF LEN(KB$)=6 THEN 4290
  430. 4240  IF LEN(KB$)=4 THEN 4280
  431. 4250  IF LEN(KB$)=0 THEN 4270
  432. 4260  BEEP:GOTO 4210
  433. 4270  FD1$=LEFT$(DATE$,2)+"-"+MID$(DATE$,4,2)+"-"+RIGHT$(DATE$,2):Y1$=RIGHT$(FD1$,2):D1$=LEFT$(FD1$,2)+MID$(FD1$,4,2):GOTO 4300
  434. 4280  FD1$=LEFT$(KB$,2)+"-"+MID$(KB$,3,2)+"-"+RIGHT$(DATE$,2):Y1$=RIGHT$(FD1$,2):D1$=KB$:GOTO 4300
  435. 4290  FD1$=LEFT$(KB$,2)+"-"+MID$(KB$,3,2)+"-"+RIGHT$(KB$,2):Y1$=RIGHT$(KB$,2):D1$=LEFT$(KB$,4)
  436. 4300  LOCATE Y%,X%:PRINT FD1$:RETURN
  437. 4310  PRINT
  438. 4320  PRINT"  Enter ending date (0,4, or 6 digits in MMDDYY format):  ";
  439. 4330  X%=POS(0):Y%=CSRLIN:INPUT"",KB$
  440. 4340  IF LEN(KB$)=6 THEN 4400
  441. 4350  IF LEN(KB$)=4 THEN 4390
  442. 4360  IF LEN(KB$)=0 THEN 4380
  443. 4370  BEEP:GOTO 4320
  444. 4380  FD2$=LEFT$(DATE$,2)+"-"+MID$(DATE$,4,2)+"-"+RIGHT$(DATE$,2):Y2$=RIGHT$(FD2$,2):D2$=LEFT$(FD2$,2)+MID$(FD2$,4,2):GOTO 4410
  445. 4390  FD2$=LEFT$(KB$,2)+"-"+MID$(KB$,3,2)+"-"+RIGHT$(DATE$,2):Y2$=RIGHT$(FD2$,2):D2$=KB$:GOTO 4410
  446. 4400  FD2$=LEFT$(KB$,2)+"-"+MID$(KB$,3,2)+"-"+RIGHT$(KB$,2):Y2$=RIGHT$(KB$,2):D2$=LEFT$(KB$,4)
  447. 4410  LOCATE Y%,X%:PRINT FD2$:RETURN
  448. 4420  PRINT CVI(D$) TAB(10) B$ TAB(20) USING"$$######,.##";CVD(C$);
  449. 4430  PRINT TAB(34) CVI(E$) TAB(40) F$ TAB(44) G$;:B%=B%+1
  450. 4440  IF B%<21 THEN RETURN
  451. 4450  B%=0:GOSUB 4540:GOSUB 4520:GOSUB 4560:RETURN
  452. 4460  LPRINT CVI(D$) TAB(10) B$ TAB(20) USING"$$######,.##";CVD(C$);
  453. 4470  LPRINT TAB(34) CVI(E$) TAB(40) F$ TAB(44) LEFT$(G$,36):B%=B%+1
  454. 4480  IF B%<62 THEN RETURN
  455. 4490  P%=P%+1:LPRINT CHR$(140):LPRINT"TAX RELATED EXPENDITURES...     From: ";
  456. 4500  LPRINT FD1$ "    To: " FD2$ TAB(70)"Page: " P%:LPRINT:B%=4
  457. 4510  GOSUB 4600:RETURN
  458. 4520  CLS:FDATE$=LEFT$(DATE$,2)+"-"+MID$(DATE$,4,2)+"-"+RIGHT$(DATE$,2)
  459. 4530  LOCATE 25,72:PRINT FDATE$;:LOCATE 1,1:RETURN
  460. 4540  LOCATE 25,25:COLOR 18:PRINT"Press any key to continue...";:COLOR 7
  461. 4550  KB$=INKEY$:IF KB$="" THEN 4550 ELSE RETURN
  462. 4560  PRINT" ITEM#     DATE       AMOUNT     CODE TAX";
  463. 4570  PRINT"         D E S C R I P T I O N"
  464. 4580  PRINT" "+STRING$(5,45)+"   "+STRING$(8,45)+"   "+STRING$(11,45);
  465. 4590  PRINT"   "+STRING$(2,45)+"   "+CHR$(45)+"   "+STRING$(37,45);:RETURN
  466. 4600  LPRINT" ITEM#     DATE       AMOUNT     CODE TAX";
  467. 4610  LPRINT"         D E S C R I P T I O N"
  468. 4620  LPRINT" "+STRING$(5,45)+"   "+STRING$(8,45)+"   "+STRING$(11,45);
  469. 4630  LPRINT"   "+STRING$(2,45)+"   "+CHR$(45)+"   "+STRING$(37,45);:RETURN
  470. 4640  K9%=1:RETURN
  471. 4650  K9%=0:LOCATE 24,1:PRINT TAB(70);:RETURN
  472. 4660  LOCATE 1,1:RESTORE
  473. 4670  READ A%,KB$:IF A%=0 THEN RETURN
  474. 4680  PRINT A% "- " KB$;:READ A%,KB$:IF A%=0 THEN RETURN
  475. 4690  PRINT TAB(28) A% "- " KB$;:READ A%,KB$:IF A%=0 THEN RETURN
  476. 4700  PRINT TAB(54) A% "- " KB$:GOTO 4670
  477. 4710  IF ERR=24 THEN RESUME
  478. 4720  IF ERR=6 THEN PRINT"Number too large... re-enter: ":RESUME
  479. 4730  ON ERROR GOTO 0:RESUME
  480.