home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib03.dsk / C.H.A.M.P..bas < prev    next >
BASIC Source File  |  2023-02-26  |  14KB  |  369 lines

  1. 1  REM  ***************************
  2. 2  REM  *      CH.A.M.P.          *
  3. 3  REM  * CHECKBOOK ADV MGMT PROG *
  4. 4  REM  * BY JOHN T. YANTIS AND   *
  5. 5  REM  *    STEVE ALEX           *
  6. 6  REM  * COPYRIGHT (C) 1980 BY   *
  7. 7  REM  *   MICRO-SPARC, INC.     *
  8. 8  REM  *   LINCOLN, MA 01773     *
  9. 9  REM  ***************************
  10. 10 D$ =  CHR$(4):F$ = "CHECK"
  11. 20  GOTO 8000
  12. 100  REM  ** PRINT FIELD **
  13. 110  HTAB T%(I,0): VTAB T%(I,1)
  14. 120  PRINT O$(I,S);:V =  PEEK(37) +1
  15. 130  IF  LEN(O$(I,S)) = T%(I,2)  THEN 190
  16. 140  IF EDIT = 21  THEN 170
  17. 150  IF  LEN(O$(I,S)) = 0  THEN  HTAB T%(I,0): VTAB T%(I,1): GOTO 180
  18. 160  PRINT  LEFT$(B$,(T%(I,2) - LEN(O$(I,S))))
  19. 170  HTAB T%(I,0) + LEN(O$(I,S)): VTAB V
  20. 180  RETURN 
  21. 190  POP : GOTO 540: REM 
  22. 200  REM  ** ADD **
  23. 210  GOSUB 6000
  24. 215 Z1 = 0: REM  WE CAN BUMP SVC CHG OR DEP #
  25. 220  IF Z = 1  THEN  VTAB 23: HTAB 1: PRINT "CTRL Q TO QUIT  "
  26. 225  FOR I = 1 TO N
  27. 230 B$ = P$
  28. 240  GOSUB 5000: REM  USER CONTROL
  29. 250  GOSUB 100
  30. 260  GET A$:EDIT =  ASC(A$)
  31. 270  IF EDIT = 2  THEN 200
  32. 280  IF EDIT = 8  THEN 380
  33. 290  IF EDIT = 13  THEN 540
  34. 295  IF EDIT = 17  AND Z = 1  THEN 999
  35. 300  IF EDIT = 21  THEN 420
  36. 310  IF EDIT = 27  THEN 480
  37. 320  IF EDIT = 34  THEN A$ = "'"
  38. 330  IF EDIT = 44  THEN A$ = ";"
  39. 340  IF EDIT = 58  THEN A$ = ";"
  40. 350  IF EDIT = 62  THEN 450
  41. 360 O$(I,S) = O$(I,S) +A$
  42. 370  GOTO 250
  43. 380  REM  ** BS (EDIT=8)**
  44. 390  IF  LEN(O$(I,S)) <2  THEN O$(I,S) = "": GOTO 250
  45. 400 O$(I,S) =  LEFT$(O$(I,S), LEN(O$(I,S)) -1)
  46. 410  GOTO 250
  47. 420  REM  ** FS (EDIT=21)**
  48. 430 O$(I,S) = O$(I,S) + MID$ (O$(I,  NOT S), LEN(O$(I,S)) +1,1)
  49. 440  GOTO 250
  50. 450  REM  ** > (COPY EDIT=62)**
  51. 460 O$(I,S) = O$(I,S) + MID$ (O$(I,  NOT S),1 + LEN(O$(I,S)), LEN(O$(I,  NOT S)))
  52. 470  GOSUB 100: GOTO 540
  53. 480  REM  ** ESC (EDIT=27)*
  54. 490 I = I -1: IF I = 0  THEN I = 1
  55. 500  IF  LEN(O$(I,S)) <T%(I,2)  THEN 250
  56. 510  HTAB T%(I,0): VTAB T%(I,1): PRINT O$(I,S);
  57. 515  IF  LEN(O$(I,S)) = 1  THEN O$(I,S) = "": GOTO 530
  58. 520 O$(I,S) =  LEFT$(O$(I,S), LEN(O$(I,S)) -1)
  59. 530  HTAB  PEEK(36): GOTO 260
  60. 540  REM  ** CR (EDIT=13)**
  61. 550  IF  LEN(O$(I,S)) = 0  THEN  HTAB T%(I,0): VTAB T%(I,1): PRINT  LEFT$(P$,T%(I,2))
  62. 560  IF  LEN(O$(I,S)) <T%(I,2)  THEN B$ = Z$: GOSUB 100:B$ = P$
  63. 570  IF I = N  THEN  GOSUB 700
  64. 580  NEXT 
  65. 590  REM  * EVALUATE*
  66. 600  HTAB 1: VTAB 22: CALL  -958: IF SW  THEN  PRINT " MAKE CORRECTIONS ": GOTO 650
  67. 610  GOSUB 7000:Z1 = 0: REM  OVE  COUNTER LOCK
  68. 620  IF Z = 2  THEN  GOSUB 7300: GOTO 640
  69. 630  GOSUB 7100: GOSUB 7300:CHG = 1: GOSUB 7400:PNT = PNT -1
  70. 640  GOSUB 7500:CHG = 0:SW = 0: GOSUB 900
  71. 645 T1 = 0: IF AC  AND  VAL(O$(1,S)) >0  THEN AC =  VAL(O$(1,S)) +1
  72. 650 S =   NOT S
  73. 660  FOR I = 1 TO N:O$(I,S) = "": NEXT 
  74. 670  IF SW  THEN SW = 0: GOTO 220
  75. 680  ON Z GOTO 220,1000,1000
  76. 700  REM  **VERIFY**
  77. 710  FOR Q = 1 TO N
  78. 720  IF T$(Q) = "$"  OR T$(Q) = "N"  THEN  GOSUB 780
  79. 730  NEXT 
  80. 735  GOSUB 5500: REM  CHECK
  81. 740  VTAB 22: HTAB 1: CALL  -958: PRINT "PRESS SPACE BAR TO STORE RECORD.": PRINT "ANY OTHER KEY TO MAKE CORRECTIONS. ";
  82. 750  GET A$
  83. 760  IF A$ < >" "  THEN SW = 1
  84. 765  IF SW  THEN AMT = ( VAL(O$(5,S))) * -1: GOSUB 5520
  85. 770 A$ = "": VTAB 22: PRINT A$: RETURN 
  86. 780  REM  ** NUMERIC CHECKS**
  87. 790  IF  VAL(O$(Q,S)) < >0  OR O$(Q,S) = ""  OR O$(Q,S) = " "  OR  LEFT$(O$(Q,S),1) = "0"  THEN 830
  88. 800  VTAB 22: HTAB 1: CALL  -958: PRINT N$(Q)" MUST BE NUMERIC, REENTER."
  89. 810 O$(Q,S) = "":I = Q -1
  90. 820  POP : RETURN 
  91. 830 A$ = O$(Q,S):O$(Q,S) =  STR$( VAL(O$(Q,S)))
  92. 840  IF T$(Q) < >"$"  THEN 880
  93. 850  FOR J = 1 TO  LEN(O$(Q,S)): IF  MID$ (O$(Q,S),J,1) = "."  THEN 870
  94. 860  NEXT :O$(Q,S) = O$(Q,S) +".00": GOTO 880
  95. 870 O$(Q,S) = O$(Q,S) +"00":O$(Q,S) =  LEFT$(O$(Q,S),J +2)
  96. 880  IF  LEN(O$(Q,S)) >T%(Q,2)  THEN O$(Q,S) = A$
  97. 885  HTAB T%(Q,0): VTAB T%(Q,1): PRINT  LEFT$(Z$,T%(Q,2));: HTAB T%(Q,0): VTAB T%(Q,1): PRINT O$(Q,S);
  98. 890  RETURN 
  99. 900  REM  *UPDATE INDEXES*
  100. 910 B% = (PNT -1)/239:C = PNT -B% *239
  101. 920  FOR K = 1 TO N
  102. 930 J = T%(K,3): IF J = 0  THEN 970
  103. 940  IF C >1  THEN Z1$ =  LEFT$(I$(J,B%),C -1)
  104. 950  IF C <239  THEN Z2$ =  MID$ (I$(J,B%),C +1)
  105. 960 I$(J,B%) = Z1$ + LEFT$(O$(K,S),1) +Z2$
  106. 970 Z1$ = "":Z2$ = "": NEXT 
  107. 980  RETURN 
  108. 999 A$ = "": PRINT A$: GOSUB 7500: GOSUB 7700: GOSUB 7900: GOTO 9000
  109. 1000  REM  * CHANGE *
  110. 1010  GOSUB 7000: GOSUB 7100:X = PNT
  111. 1015  IF X = 1  THEN 9000
  112. 1020  HOME : HTAB 17: PRINT M$
  113. 1030  PRINT : PRINT "WHAT TYPE OF SEARCH?": PRINT "R(ECORD NUMBER, M(ATCH ,Q(UIT ";: GET A$: PRINT A$
  114. 1040 SQ = 0
  115. 1050  IF A$ = "R"  THEN 1300
  116. 1060  IF A$ = "Q"  AND Z = 3  THEN 9000
  117. 1070  IF A$ = "Q"  THEN 999
  118. 1080  IF A$ < >"M"  THEN 1020
  119. 1090  VTAB 3: CALL  -958
  120. 1100  FOR I = 1 TO N: PRINT I"  ";: IF T%(I,3) >0  THEN  INVERSE 
  121. 1110  PRINT N$(I): NORMAL : NEXT 
  122. 1120  PRINT : INPUT "ENTER NUMBER OF SEARCH FIELD ";A
  123. 1130  IF A <1  OR A >N  THEN 1090
  124. 1140  PRINT : PRINT "SEARCH FOR "N$(A);: INPUT " = ";A$
  125. 1150  IF  LEN(A$) = 0  THEN A$ =  LEFT$(Z$,T%(A,2))
  126. 1160  IF  LEN(A$) >T%(A,2)  THEN A$ =  LEFT$(A$,T%(A,2))
  127. 1170  IF  ASC(A$) = 1  THEN A$ =  RIGHT$(A$, LEN(A$) -1)
  128. 1180 I = 1: GOSUB 6000
  129. 1190  IF I = X  THEN 1500
  130. 1200  IF T%(A,3) = 0  THEN 1230
  131. 1210 B% = (I -1)/239:C = I -B% *239
  132. 1220  IF  MID$ (I$(T%(A,3),B%),C,1) < > LEFT$(A$,1)  THEN 1260
  133. 1230 PNT = I: GOSUB 7200: HTAB 10: VTAB 1: PRINT "RECORD NUMBER ";I
  134. 1240 O$(A,  NOT S) =  LEFT$(O$(A,S), LEN(A$))
  135. 1250  IF O$(A,  NOT S) = A$  THEN 2000
  136. 1260 I = I +1: GOTO 1190
  137. 1300  VTAB 3: CALL  -958
  138. 1310  VTAB 2: PRINT : CALL  -868: INPUT "ENTER RECORD NUMBER ";A
  139. 1320  IF A <1  OR A >X -1  THEN  PRINT : PRINT "ONLY "X -1" RECORDS IN FILE, REENTER": GOTO 1310
  140. 1330 SQ = 1:PNT = A: GOSUB 7200
  141. 1340  GOSUB 6000: GOTO 2000
  142. 1500  HOME : VTAB 3: IF PST  THEN  PRINT "POSTING COMPLETE ": PRINT "PRESS ANY KEY FOR MENU ";: GET A$: PRINT A$: GOTO 999
  143. 1510  VTAB 3: PRINT "END OF FILE REACHED  ": GOTO 1030
  144. 2000  REM  *FOUND*
  145. 2010  ON Z GOTO 2100,2200,2300
  146. 2100  PRINT  CHR$(7)"ERR": END 
  147. 2200  GOSUB 6300
  148. 2210  VTAB 1: HTAB 10: PRINT "RECORD NUMBER "PNT
  149. 2220  IF PST  THEN 6500
  150. 2230  HTAB 1: VTAB 22: CALL  -958: PRINT "IS THIS THE RECORD YOU WISH TO CHANGE   Y(ES, NO ";: GET Q$
  151. 2240  IF Q$ = "Y"  THEN SW = 1:Q$ = "": PRINT Q$: GOTO 2500
  152. 2245 Q$ = "": PRINT Q$
  153. 2250  IF SQ  THEN 1500
  154. 2260  GOTO 1260
  155. 2300  GOSUB 6300
  156. 2310  VTAB 1: HTAB 10: PRINT "RECORD NUMBER "PNT
  157. 2315  HTAB 1: VTAB 22
  158. 2320  IF SQ  THEN  PRINT "PRESS ANY KEY TO CONTINUE ";: GET Q$: PRINT Q$: GOTO 1020
  159. 2330  HTAB 1: VTAB 22: CALL  -958: PRINT "CONTINUE SEARCH  Y(ES, N(O ";: GET Q$: PRINT Q$
  160. 2340  IF Q$ = "N"  THEN 1020
  161. 2350  GOTO 1260
  162. 2500  REM  JOIN ADD
  163. 2510  IF O$(6,S) = "O"  THEN 2540
  164. 2520  IF  LEFT$(O$(1,S),1) = "D"  THEN T1 = 3: GOTO 2560
  165. 2530 T1 = 2: GOTO 2560
  166. 2540  IF  LEFT$(O$(1,S),1) = "D"  THEN T1 = 1: GOTO 2560
  167. 2550 T1 = 0
  168. 2560 AMT =  VAL(O$(5,S)) * -1: GOSUB 5520:T1 = 0: IF PST  THEN  RETURN 
  169. 2570  GOTO 590
  170. 4000  GOSUB 7000: GOSUB 7100
  171. 4010 PST = 1
  172. 4020 OC = 0:PC = 0:OD = 0:PD = 0:BB = 0:CB = 0:DN = 0:CN = 0
  173. 4030 X = PNT: FOR I = 1 TO X -1
  174. 4040 PNT = I: GOSUB 7200: GOSUB 2500
  175. 4050  IF  LEFT$(O$(1,S),1) = "D"  THEN DN = DN +1
  176. 4060  IF  LEFT$(O$(1,S),1) = "S"  THEN CN = CN +1
  177. 4070  NEXT :PST = 0
  178. 4080 OC = OC * -1:OD = OD * -1:PD = PD * -1:PC = PC * -1:BB = BB * -1:CB = CB * -1
  179. 4090  GOTO 999
  180. 5000  REM  *USER CONTROL START*
  181. 5010  IF I = 1  AND AC  THEN O$(1,  NOT S) =  STR$(AC): HTAB T%(1,0): VTAB T%(1,1): PRINT AC: RETURN 
  182. 5020  IF I = 2  AND  VAL(O$(1,S)) = 0  THEN  GOSUB 5050: RETURN 
  183. 5030  IF I = 7  THEN  GOSUB 5170
  184. 5040  RETURN 
  185. 5050  IF  LEFT$(O$(1,S),1) = "D"  THEN 5080
  186. 5060  IF  LEFT$(O$(1,S),1) = "S"  THEN 5110
  187. 5070 I = 1:O$(I,S) = "": RETURN : REM  NOT #,S OR D
  188. 5080 T1 = 1: IF Z = 2  THEN  RETURN 
  189. 5090  IF   NOT Z1  THEN DN = DN +1
  190. 5100 O$(1,S) = "D" + STR$(DN):O$(2,S) = "DEPOSIT  ": GOTO 5130
  191. 5110 T1 = 2: IF Z = 2  THEN  RETURN 
  192. 5120  IF   NOT Z1  THEN CN = CN +1
  193. 5125 O$(1,S) = "S" + STR$(CN):O$(2,S) = "SERVICE CHARGE "
  194. 5130  FOR I = 1 TO 2: HTAB T%(I,0): VTAB T%(I,1): PRINT O$(I,S);
  195. 5135 Z1 = 1: REM  NO MORE INC'S
  196. 5140  IF  LEN(O$(I,S)) <T%(I,2)  THEN  PRINT  LEFT$(Z$,T%(I,2) - LEN(O$(I,S)))
  197. 5150  NEXT 
  198. 5160 I = 3: RETURN 
  199. 5170  IF O$(6,S) = "O"  THEN 5200
  200. 5180  IF O$(6,S) = "P"  THEN 5220
  201. 5190 I = 6:O$(6,S) = "": REM  NOT O OR P
  202. 5200  IF T1 = 2  THEN T1 = 0
  203. 5210  RETURN 
  204. 5220  IF T1 = 1  THEN T1 = 3
  205. 5230  IF   NOT T1  THEN T1 = 2
  206. 5240  RETURN 
  207. 5500  REM  *USER CONTROL END*
  208. 5510 AMT =  VAL(O$(5,S))
  209. 5520  IF T1 = 0  THEN OC = OC +AMT:OC =  FN R(OC)
  210. 5530  IF T1 = 1  THEN OD = OD +AMT:OD =  FN R(OD)
  211. 5540  IF T1 = 2  THEN PC = PC +AMT:PC =  FN R(PC)
  212. 5550  IF T1 = 3  THEN PD = PD +AMT:PD =  FN R(PD)
  213. 5560 BB = PD -PC:BB =  FN R(BB)
  214. 5570 CB = BB +OD -OC:CB =  FN R(CB)
  215. 5580  VTAB 15: CALL  -958: PRINT : PRINT "BANK BALANCE = ";BB
  216. 5590  PRINT "CHECKBOOK BALANCE = ";CB: RETURN 
  217. 5620  PRINT : PRINT "ENTER STARTING CHECK NUMBER IF AUTO     NUMBERING DESIRED: (RETURN IF NOT)"
  218. 5630  PRINT : INPUT "CHECK NUMBER: ";A$: IF  VAL(A$) >0  THEN AC =  VAL(A$)
  219. 5640  RETURN 
  220. 5700  REM  *BALANCE*
  221. 5710  HOME : VTAB 5:H = 32
  222. 5720  PRINT "POSTED DEPOSITS";:PP = PD: GOSUB 5800
  223. 5730  PRINT "POSTED CHECKS";:PP = PC: GOSUB 5800
  224. 5740  PRINT "BANK BALANCE   ";:PP = BB: GOSUB 5800: PRINT 
  225. 5750  PRINT "OUTSTANDING DEPOSITS";:PP = OD: GOSUB 5800
  226. 5760  PRINT "OUTSTANDING CHECKS";:PP = OC: GOSUB 5800
  227. 5770  PRINT "CHECKBOOK BALANCE";:PP = CB: GOSUB 5800
  228. 5780  PRINT : PRINT "PRESS ANY KEY FOR MENU  ";: GET AN$: PRINT AN$
  229. 5790  GOTO 9000
  230. 5800  REM  *PRINT COLUMNS*
  231. 5810  REM  ENTER WITH H(HTAB) AN PP(WHAT YOU WANT PRINTED IN COLUMN)
  232. 5820  HTAB H: PRINT ".00";
  233. 5830 P1 =  ABS(PP):P2 =  INT(PP)
  234. 5840 P3 =  INT((PP -P2 +.005) *100)/100:PP = P2 +P3
  235. 5850 Z1 = P1 > = 1:Z2 = P1 > = 10:Z3 = P1 > = 100:Z4 = P1 > = 1000:Z5 = P1 > = 10000:Z6 = PP < = 0
  236. 5860 Z = Z1 +Z2 +Z3 +Z4 +Z5 +Z6: HTAB H -Z: PRINT PP
  237. 5870  RETURN 
  238. 6000  REM  **PRINT FRAME**
  239. 6010  HOME : PRINT L$M$R$
  240. 6020  FOR K = 1 TO N
  241. 6030  VTAB T%(K,1): HTAB T%(K,0) - LEN(N$(K)) -3: PRINT N$(K)" - ";
  242. 6040  VTAB T%(K,1): HTAB T%(K,0): PRINT  LEFT$(P$,T%(K,2))
  243. 6050  IF Z >1  THEN 6070
  244. 6060 O$(K,S) = ""
  245. 6070  NEXT : RETURN 
  246. 6100  REM  *ONERR*
  247. 6105  IF  PEEK(222) < >6  THEN  INVERSE : PRINT "ERROR #" PEEK(222)" IN LINE " PEEK(218) + PEEK(219) *256: NORMAL : END 
  248. 6110  GOSUB 7000:PNT = 1:CHG = 0: GOSUB 7400: GOSUB 7500
  249. 6120  GOTO 8125: REM  RESUME
  250. 6130  IF  ASC(A$) = 0  THEN A$ = "  ": RESUME 
  251. 6135  GOTO 6105
  252. 6300  REM  * PRINT DATA*
  253. 6310  FOR K = 1 TO N
  254. 6320  HTAB T%(K,0): VTAB T%(K,1): PRINT  LEFT$(Z$,T%(K,2))
  255. 6330  HTAB T%(K,0): VTAB T%(K,1): PRINT O$(K,S)
  256. 6340  NEXT : RETURN 
  257. 6500  REM  * POST *
  258. 6510  VTAB 22: HTAB 1: CALL  -958
  259. 6520  PRINT " P(OST, O(MIT, Q(UIT ";: GET AN$: PRINT AN$
  260. 6530  IF AN$ = "Q"  THEN 999
  261. 6540  IF AN$ = "O"  THEN 1260
  262. 6550  IF AN$ < >"P"  THEN 6500
  263. 6560  GOSUB 2500:O$(6,S) = "P"
  264. 6570  GOSUB 7300: GOSUB 900
  265. 6580 I = 2: GOSUB 5000: GOSUB 5170: GOSUB 5510
  266. 6590 I = PNT +1: GOTO 1190
  267. 7000  REM  **OPEN DATA FILE**
  268. 7010  PRINT D$"OPEN"F$"-DATA,L"LGH +N
  269. 7020  RETURN 
  270. 7100  REM  **READ POINTER**
  271. 7110  PRINT D$"READ"F$"-DATA,R0"
  272. 7120  INPUT PNT
  273. 7130  PRINT D$: RETURN 
  274. 7200  REM  **READ DATA**
  275. 7210  PRINT D$"READ"F$"-DATA,R"PNT
  276. 7220  FOR R = 1 TO N
  277. 7230  INPUT O$(R,S)
  278. 7240  NEXT 
  279. 7250  PRINT D$: RETURN 
  280. 7300  REM  **WRITE DATA**
  281. 7310  PRINT D$"WRITE"F$"-DATA,R"PNT
  282. 7320  FOR R = 1 TO N
  283. 7330  PRINT O$(R,S)
  284. 7340  NEXT 
  285. 7350  PRINT D$: RETURN 
  286. 7400  REM  **WRITE POINTER**
  287. 7410  PRINT D$"WRITE"F$"-DATA,R0"
  288. 7420 PNT = PNT +CHG
  289. 7430  PRINT PNT
  290. 7440  PRINT D$: RETURN 
  291. 7500  REM  **CLOSE FILES**
  292. 7510  PRINT D$"CLOSE"
  293. 7520  RETURN 
  294. 7600  REM  **READ BALANCE**
  295. 7610  PRINT D$"OPEN"F$"-BAL"
  296. 7620  PRINT D$"READ"F$"-BAL"
  297. 7630  INPUT OC: INPUT OD: INPUT PC: INPUT PD
  298. 7640  INPUT BB: INPUT CB: INPUT DN: INPUT CN
  299. 7650  GOSUB 7500
  300. 7660  RETURN 
  301. 7700  REM  **WRITE BALANCE**
  302. 7710  PRINT D$"OPEN"F$"-BAL"
  303. 7720  PRINT D$"WRITE"F$"-BAL"
  304. 7730  PRINT OC: PRINT OD: PRINT PC: PRINT PD
  305. 7740  PRINT BB: PRINT CB: PRINT DN: PRINT CN
  306. 7750  GOSUB 7500
  307. 7760  RETURN 
  308. 7800  REM  **READ INDEX**
  309. 7810 B% = PNT/239
  310. 7820  DIM I$(T%(0,0),B% +2): IF PNT <2  THEN  RETURN 
  311. 7825  PRINT D$"OPEN"F$"-IDX"
  312. 7830  PRINT D$"READ"F$"-IDX"
  313. 7840  FOR I = 1 TO T%(0,0): FOR J = 0 TO B%
  314. 7850  INPUT I$(I,J):A$ = I$(I,J)
  315. 7860  IF  ASC(A$) = 1  AND  LEN(A$) = 1  THEN I$(I,J) = " ": GOTO 7880
  316. 7870  IF  ASC(A$) = 1  THEN I$(I,J) = " " + RIGHT$(A$, LEN(A$) -1)
  317. 7880  NEXT : NEXT 
  318. 7890  GOSUB 7500: RETURN 
  319. 7900  REM  **WRITE INDEX**
  320. 7910  GOSUB 7000: GOSUB 7100:B% = PNT/239
  321. 7920  IF PNT <2  THEN 7990
  322. 7925  PRINT D$"OPEN"F$"-IDX"
  323. 7930  PRINT D$"WRITE"F$"-IDX"
  324. 7940  FOR I = 1 TO T%(0,0): FOR J = 0 TO B%
  325. 7950  IF  LEN(I$(I,J)) = 1  AND  ASC(I$(I,J)) = 32  THEN I$(I,J) =  CHR$(1): GOTO 7970
  326. 7960  IF  ASC(I$(I,J)) = 32  THEN I$(I,J) =  CHR$(1) + RIGHT$(I$(I,J), LEN(I$(I,J)) -1)
  327. 7970  PRINT I$(I,J)
  328. 7980  NEXT : NEXT 
  329. 7990  GOSUB 7500: RETURN 
  330. 8000  REM  **INITIALIZE**
  331. 8010  DATA 8,CHECK-NUM,X,13,4,4,1,0,0,PAY-TO,X,10,6,30,2,0,0,MO,N,6,8,2,0,0,0,DAY,N,17,8,2,0,0,0,AMOUNT,$,10,10,8,0,0,0,POSTED,X,30,10,1,3,0,0,MAJ-CD,X,10,12,1,0,0,0,MIN-CD,X,23,12,1,0,0,0,49,3
  332. 8020  READ N
  333. 8030  DIM N$(N),T$(N),T%(N,5),O$(N,1),S$(N)
  334. 8040  FOR I = 1 TO N
  335. 8050  READ N$(I): READ T$(I)
  336. 8060  FOR J = 0 TO 5
  337. 8070  READ T%(I,J)
  338. 8080  IF A <T%(I,2)  THEN A = T%(I,2)
  339. 8090  NEXT : NEXT 
  340. 8100  READ LGH: READ T%(0,0)
  341. 8110  ONERR  GOTO 6100
  342. 8120  PRINT D$"RENAME"F$"-DATA,"F$"-DATA"
  343. 8125  POKE 216,0
  344. 8130  GOSUB 7000: GOSUB 7100
  345. 8150  IF T%(0,0) = 0  THEN 8170
  346. 8155  ONERR  GOTO 6130
  347. 8160  GOSUB 7800
  348. 8170  FOR I = 1 TO A
  349. 8180 Z$ = Z$ +" ":P$ = P$ +"."
  350. 8190  NEXT 
  351. 8200 L$ =  CHR$(91):R$ =  CHR$(93)
  352. 8210  REM  *CHECK ADDITIONS*
  353. 8220  IF PNT >1  THEN  GOSUB 7600
  354. 8230  DEF  FN R(R) =  INT((R +.005) *100)/100
  355. 9000  REM  *CHECKBOOK MENU*
  356. 9010  PRINT D$"CLOSE"
  357. 9020 PST = 0:T1 = 0:AC = 0
  358. 9030  HOME : HTAB 10: INVERSE : PRINT " CH.A.M.P ": NORMAL : PRINT "  CHECKBOOK ADV. MANAGEMENT PROGRAM": PRINT "      (INFORMER CHECK MODULE)": PRINT : PRINT : PRINT : PRINT "COPYRIGHT (C) 1980 BY MICRO-SPARC INC."
  359. 9035  PRINT : PRINT : INVERSE : PRINT "A(DD, C(HG, B(AL, P(OST, V(IEW, Q(UIT ";: GET AN$
  360. 9040 : PRINT AN$: PRINT 
  361. 9050  IF AN$ = "A"  THEN Z = 1: GOSUB 5620:M$ = "ADD": GOTO 200
  362. 9060  IF AN$ = "B"  THEN  GOTO 5700
  363. 9070  IF AN$ = "C"  THEN Z = 2:M$ = "CHANGE": GOTO 1000
  364. 9080  IF AN$ = "R"  THEN 4000
  365. 9090  IF AN$ = "P"  THEN Z = 2:PST = 1:A$ = "O":A = 6: GOSUB 7000: GOSUB 7100:X = PNT:M$ = "POST": GOTO 1180
  366. 9100  IF AN$ = "V"  THEN Z = 3:M$ = "VIEW": GOTO 1000
  367. 9110  IF AN$ = "Q"  THEN 9900
  368. 9120  GOTO 9030
  369. 9900  END