ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

325 lines
13 KiB

  1. 1 REM ACCTPAY
  2. 10 CLS:PRINT TAB(10);"ACCOUNTS PAYABLE PROGRAM":PRINT
  3. 20 PRINT "THIS PROGRAM IS A BALANCE FORWARD ACCOUNTS PAYABLE
  4. 25 PRINT "SYSTEM. WHAT THIS MEANS IS THAT PAYMENTS DO NOT ACCRUE
  5. 30 PRINT "TOWARDS ANY INDIVIDUAL INVOICE BUT TOWARDS LUMP SUM
  6. 35 PRINT "BALANCES PAYABLE. THIS TYPE OF A/P SYSTEM IS TYPICALLY
  7. 40 PRINT "USED WHEN TOTAL OWED RATHER THAN INDIVIDUAL INVOICES ARE
  8. 42 PRINT "IMPORTANT. FOR EXAMPLE, MONEY OWED ON CHARGE CARDS IS OF THIS
  9. 43 PRINT "TYPE. INVOICES ARE KEPT ON FILE UNTIL THE
  10. 45 PRINT "MONTH'S END. LINE PRINTER OUTPUT IS SUPPORTED. DATA FILES
  11. 50 PRINT "MAY BE STORED ON EITHER CASSETTE OR DISKETTE. SEE THE
  12. 55 PRINT "ACCOMPANYING DOCUMENTATION FOR INSTRUCTIONS.
  13. 56 PRINT :INPUT "PRESS ENTER TO BEGIN";Z9$
  14. 58 CLEAR 2000
  15. 59 NC=25:DIM A(NC+1,7),A$(NC+1,1):REM MAX VENDORS IN SYSTEM
  16. 60 MI=200:DIM B(MI,1),B$(MI,1):REM MAX INVOICES IN SYSTEM
  17. 65 DIM F$(20):REM FORMATTING
  18. 70 GOSUB 9000
  19. 80 FOR I=1 TO NC:A$(I,1)="9999":NEXT
  20. 100 CLS:INPUT "ARE DISK DRIVES ATTACHED(Y/N)";ZD$
  21. 110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100
  22. 500 CLS:PRINT " MAIN MENU":PRINT
  23. 505 PRINT " 0.QUIT"
  24. 510 PRINT " 1.ADD TO OR BEGIN INVOICE/PAYMENT FILE"
  25. 520 PRINT " 2.READ FILE IN FROM TAPE
  26. 530 PRINT " 3.WRITE FILE OUT ONTO TAPE
  27. 540 PRINT " 4.READ FILE IN FROM DISK
  28. 550 PRINT " 5.WRITE FILE OUT ONTO DISK
  29. 560 PRINT " 6.EDIT FILE
  30. 570 PRINT " 7.REPORT GENERATOR
  31. 580 PRINT " 8.POST & ELIMINATE INVOICES-UPDATE FILES
  32. 600 INPUT "ENTER YOUR CHOICE";Z9
  33. 605 IF Z9 = 0 THEN END
  34. 610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000
  35. 620 GOTO 500
  36. 1000 REM ADD TO OR START FILE ALREADY IN MEMORY
  37. 1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100
  38. 1015 I=NI+1
  39. 1016 J=I
  40. 1020 GOSUB 6050:REM INPUT 1 RECORD
  41. 1030 CLS:PRINT F$(1):GOSUB 6300:REM PRINT OUT 1 RECORD
  42. 1040 GOSUB 10200:IF Z9$="N" THEN GOTO 1020
  43. 1050 IF Z9$="A" THEN RETURN
  44. 1060 NI=NI+1:REM NEW RECORD ON FILE
  45. 1070 GOSUB 10400:REM MORE?
  46. 1080 IF Z9$="Y" THEN GOTO 1010 : ELSE RETURN
  47. 2000 REM READ IN FILE FROM TAPE
  48. 2010 CLS:PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100
  49. 2015 ' IF ZD$="Y" THEN CMD"T"
  50. 2020 INPUT #-1,NI
  51. 2030 FOR I=1 TO NI:GOSUB 2700:NEXT I
  52. 2035 FOR I=1 TO NC:GOSUB 2500:NEXT I
  53. 2040 RETURN
  54. 2100 REM WRITE OUT FILE ONTO TAPE
  55. 2105 CLS
  56. 2110 PRINT "PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100
  57. 2115 ' IF ZD$="Y" THEN CMD"T"
  58. 2130 WRITE #-1,NI
  59. 2140 FOR I=1 TO NI:GOSUB 2800:NEXT I
  60. 2145 FOR I=1 TO NC:GOSUB 2600:NEXT I
  61. 2150 RETURN
  62. 2200 REM READ IN FILE FROM DISK
  63. 2210 CLS:PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100
  64. 2220 ON ERROR GOTO 2290
  65. 2225 INPUT "ENTER NAME OF DATA FILE TO BE READ ";ZN$
  66. 2230 OPEN "I",1,ZN$
  67. 2240 INPUT # 1,NI
  68. 2250 FOR I=1 TO NI:GOSUB 2750:NEXT I
  69. 2255 FOR I=1 TO NC:GOSUB 2550:NEXT I
  70. 2260 CLOSE # 1
  71. 2270 RETURN
  72. 2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN
  73. 2300 REM WRITE FILE OUT TO DISK
  74. 2305 CLS
  75. 2310 PRINT :PRINT "PUT DATA DISK IN DISK DRIVE":GOSUB 10100
  76. 2315 PRINT "PRESENT FILE NAME IS ";ZN$;:INPUT " NEW NAME";ZN$
  77. 2320 OPEN "O",1,ZN$
  78. 2330 WRITE # 1,NI
  79. 2340 FOR I=1 TO NI:GOSUB 2850:NEXT I
  80. 2345 FOR I=1 TO NC:GOSUB 2650:NEXT I
  81. 2370 CLOSE # 1
  82. 2380 RETURN
  83. 2500 REM INPUT 1 VENDOR FROM TAPE
  84. 2510 INPUT #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$
  85. 2520 RETURN
  86. 2550 REM INPUT 1 VENDOR FROM DISKETTE
  87. 2560 INPUT # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7): Z8$=A$(I,1):GOSUB 11000:A$(I,1)=Z8$
  88. 2570 RETURN
  89. 2600 REM OUTPUT 1 VENDOR TO TAPE
  90. 2610 WRITE #-1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7)
  91. 2620 RETURN
  92. 2650 REM OUTPUT 1 VENDOR TO DISKETTE
  93. 2660 WRITE # 1,A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4),A(I,5),A(I,6),A(I,7)
  94. 2670 RETURN
  95. 2700 REM INPUT 1 INVOICE FROM CASSETTE
  96. 2710 INPUT #-1,B$(I,0),B(I,0),B(I,1),B$(I,1)
  97. 2720 RETURN
  98. 2750 REM INPUT 1 INVOICE FROM DISKETTE
  99. 2760 INPUT # 1,B$(I,0),B(I,0),B(I,1),B$(I,1)
  100. 2770 RETURN
  101. 2800 REM OUTPUT 1 INVOICE TO CASSETTE
  102. 2810 WRITE #-1,B$(I,0),B(I,0),B(I,1),B$(I,1)
  103. 2820 RETURN
  104. 2850 REM OUTPUT 1 INVOICE TO DISKETTE
  105. 2860 WRITE # 1,B$(I,0),B(I,0),B(I,1),B$(I,1)
  106. 2870 RETURN
  107. 3000 REM EDIT FILE
  108. 3002 CLS:INPUT "EDITING INVOICE FILE(I) OR VENDOR FILE(V)";Z9$
  109. 3004 IF Z9$<>"I" AND Z9$<>"V" THEN GOSUB 10000:GOTO 3002
  110. 3006 IF Z9$="V" THEN GOTO 3100
  111. 3010 CLS:PRINT F$(1)
  112. 3020 FOR J=1 TO NI
  113. 3030 GOSUB 6300
  114. 3050 IF J/12=INT(J/12) THEN GOSUB 4000:PRINT F$(1)
  115. 3060 NEXT J
  116. 3062 J=J-1
  117. 3065 IF J/12=INT(J/12) THEN GOTO 3080
  118. 3070 GOSUB 4000
  119. 3080 RETURN
  120. 3100 REM EDIT VENDOR
  121. 3110 CLS
  122. 3120 PRINT "VENDOR NUMBER TO EDIT MUST BE LESS THAN";NC+1
  123. 3130 PRINT :INPUT "CUSTOMER NUMBER TO EDIT(0 TO END)";I
  124. 3135 IF I=0 THEN RETURN
  125. 3140 A(I,0)=I:PRINT F$(4):GOSUB 6100:PRINT :PRINT F$(7):GOSUB 6150:PRINT
  126. 3150 GOSUB 6000
  127. 3160 PRINT :GOSUB 10100:GOTO 3110
  128. 4000 REM EDIT SUBROUTINE
  129. 4020 PRINT
  130. 4025 I=0
  131. 4030 INPUT "ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";I
  132. 4035 IF I=0 THEN RETURN
  133. 4040 K=J:J=I:CLS:PRINT F$(1):GOSUB 6300:PRINT :GOSUB 6050
  134. 4050 CLS:J=K:GOTO 4025
  135. 4060 PRINT :GOSUB 6000
  136. 4070 CLS:PRINT " ";F$(2):PRINT " ";F$(3)
  137. 4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING "## ";J;:GOSUB 6100:NEXT
  138. 4090 GOTO 4020
  139. 5000 REM REPORT GENERATOR
  140. 5005 CLS:INPUT "IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005
  141. 5007 CLS:PRINT TAB(10);"REPORT MENU":PRINT
  142. 5010 PRINT "1. AGED PAYABLES REPORT
  143. 5020 PRINT "2. COMPLETE VENDOR LIST
  144. 5030 PRINT "3. COMPLETE VENDOR LIST WITH INVOICES ATTACHED
  145. 5040 PRINT "4. LIST OF ALL INVOICES
  146. 5050 PRINT "5. END LIST PROGRAM
  147. 5060 PRINT :INPUT "ENTER APPROPRIATE CHOICE";Z9
  148. 5065 IF Z9=5 THEN RETURN
  149. 5070 ON Z9 GOSUB 5100,5200,5300,5400
  150. 5080 GOTO 5007
  151. 5100 REM AGED PAYABLES REPORT
  152. 5105 FOR I=0 TO 7:V(I)=0:NEXT
  153. 5106 CLS
  154. 5107 F$="AGED PAYABLES REPORT":PRINT TAB(15); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " "
  155. 5110 PRINT F$(4):IF Z2$="Y" THEN LPRINT F$(4):LPRINT " "
  156. 5115 FOR I=1 TO NC
  157. 5117 IF A$(I,1)="9999" THEN GOTO 5133
  158. 5120 GOSUB 6100:IF Z2$="Y" THEN GOSUB 6200
  159. 5125 FOR J=1 TO 4:V(J)=V(J)+A(I,J):NEXT
  160. 5130 IF I/12=INT(I/12) AND Z2$="N" THEN PRINT :GOSUB 10100
  161. 5133 NEXT I
  162. 5135 PRINT :IF Z2$="Y" THEN LPRINT " "
  163. 5140 PRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4)
  164. 5150 IF Z2$="Y" THEN LPRINT USING F$(6);"TOTALS",V(1),V(2),V(3),V(4)
  165. 5190 PRINT :GOSUB 10100
  166. 5195 RETURN
  167. 5200 REM COMPLETE VENDOR LIST
  168. 5205 F$="VENDOR LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " "
  169. 5210 CLS
  170. 5215 FOR I=1 TO NC
  171. 5220 IF A$(I,1)="9999" THEN GOTO 5260
  172. 5230 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150
  173. 5240 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " ":LPRINT " "
  174. 5250 IF Z2$<>"Y" THEN PRINT :GOSUB 10100:PRINT
  175. 5260 NEXT I
  176. 5290 RETURN
  177. 5300 REM COMPLETE CUSTOMER LIST PLUS INVOICES
  178. 5310 CLS
  179. 5312 F$="VENDOR LIST":PRINT TAB(20); F$:IF Z2$="Y" THEN LPRINT TAB(20); F$:LPRINT " "
  180. 5315 FOR I=1 TO NC
  181. 5320 IF A$(I,1)="9999" THEN GOTO 5360
  182. 5325 FOR J=1 TO 7:V(J)=0:NEXT
  183. 5330 PRINT F$(4):GOSUB 6100:PRINT F$(7):GOSUB 6150
  184. 5332 PRINT F$(1)
  185. 5334 FOR J=1 TO NI
  186. 5335 IF B(J,0)=I THEN GOSUB 6300:V(1)=V(1)+B(J,1)
  187. 5336 NEXT J
  188. 5337 PRINT
  189. 5340 IF Z2$="Y" THEN LPRINT F$(4):GOSUB 6200:LPRINT " ":LPRINT F$(7):GOSUB 6250:LPRINT " "
  190. 5345 IF Z2$<>"Y" THEN GOTO 5355
  191. 5347 LPRINT F$(1)
  192. 5348 FOR J=1 TO NI
  193. 5349 IF B(J,0)=I THEN GOSUB 6350
  194. 5350 NEXT J
  195. 5351 IF Z2$="Y" THEN LPRINT "CHANGE IN OWED THIS MONTH = ";V(1)
  196. 5352 IF Z2$="Y" THEN LPRINT " ":LPRINT " "
  197. 5355 IF Z2$<>"Y" THEN PRINT :GOSUB 10100
  198. 5360 NEXT I
  199. 5370 RETURN
  200. 5400 REM COMPLETE INVOICE LIST
  201. 5410 CLS
  202. 5415 F$="INVOICE LIST":PRINT TAB(25); F$:PRINT :IF Z2$="Y" THEN LPRINT TAB(25); F$:LPRINT " "
  203. 5420 V(0)=0:V(1)=0:V(2)=0
  204. 5430 PRINT F$(1):IF Z2$="Y" THEN LPRINT F$(1):LPRINT " "
  205. 5440 FOR J= 1 TO NI
  206. 5450 GOSUB 6300:IF Z2$="Y" THEN GOSUB 6350
  207. 5455 V(0)=V(0)+B(J,1)
  208. 5460 IF B(J,1)>0 THEN V(1)=V(1)+B(J,1) : ELSE V(2)=V(2)+B(J,1)
  209. 5470 IF Z2$<>"Y" AND J/12=INT(J/12) THEN PRINT :GOSUB 10100:CLS:PRINT F$(1)
  210. 5475 NEXT J
  211. 5480 PRINT USING F$(3);"TOTAL CHARGES",V(1)
  212. 5482 PRINT USING F$(3);"TOTAL PAYMENTS",V(2)
  213. 5484 PRINT USING F$(3);"CHG-PAYMENTS ",V(0)
  214. 5486 IF Z2$<>"Y" THEN GOTO 5495
  215. 5488 LPRINT USING F$(3);"TOTAL CHARGES",V(1)
  216. 5489 LPRINT USING F$(3);"TOTAL PAYMENTS",V(2)
  217. 5490 LPRINT USING F$(3);"CHG-PAYMENTS ",V(0)
  218. 5495 PRINT :GOSUB 10100
  219. 5499 RETURN
  220. 6000 REM SBR FOR INPUTTING DATA ON 1 VENDOR
  221. 6005 F$(9)="% % "
  222. 6006 F$(10)=" #####.## "
  223. 6010 A(I,0)=I
  224. 6015 PRINT USING F$(9);A$(I,1),:INPUT "VEND. NAME ";A$(I,1)
  225. 6018 PRINT USING F$(10);A(I,1),:INPUT "CURRENT OWED ";A(I,1)
  226. 6020 PRINT USING F$(10);A(I,2),:INPUT "30-60 OWED ";A(I,2)
  227. 6022 PRINT USING F$(10);A(I,3),:INPUT "60-90 OWED ";A(I,3)
  228. 6024 PRINT USING F$(10);A(I,4),:INPUT "90+ OWED ";A(I,4)
  229. 6026 PRINT USING F$(10);A(I,5),:INPUT "PAY LAST MTH ";A(I,5)
  230. 6028 PRINT USING F$(10);A(I,6),:INPUT "CHG LAST MTH ";A(I,6)
  231. 6030 PRINT USING F$(10);A(I,7),:INPUT "CUMUL. CHGES ";A(I,7)
  232. 6040 RETURN
  233. 6050 REM SBR FOR INPUTTING DATA FOR 1 INVOICE
  234. 6055 F$(9)=" % %":F$(10)=" ######.## ": F$(11)=" ### "
  235. 6057 PRINT :PRINT "ENTER NEGATIVE ITEM AMOUNT FOR PAYMENT":PRINT
  236. 6060 PRINT USING F$(9);B$(I,0),:INPUT "ITEM NUMBER ";B$(I,0)
  237. 6065 PRINT USING F$(11);B(I,0),:INPUT "VEND. NUMBER";B(I,0)
  238. 6067 IF B(I,0)>NC THEN PRINT "ILLEGAL VENDOR NUMBER":GOTO 6065
  239. 6068 IF A$(B(I,0),1)="9999" THEN PRINT "ILLEGAL VENDOR NUMBER":GOTO 6065
  240. 6070 PRINT USING F$(10);B(I,1),:INPUT "ITEM AMOUNT ";B(I,1)
  241. 6075 PRINT USING F$(9);B$(I,1),:INPUT "COMMENT ";B$(I,1)
  242. 6099 RETURN
  243. 6100 REM PRINT VENDOR 1ST LINE ON CRT
  244. 6110 PRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4)
  245. 6120 RETURN
  246. 6150 REM PRINT VENDOR 2ND LINE ON CRT
  247. 6160 PRINT USING F$(8);A(I,5),A(I,6),A(I,7)
  248. 6170 RETURN
  249. 6200 REM PRINT VENDOR 1ST LINE ON PRINTER
  250. 6210 LPRINT USING F$(5);A(I,0),A$(I,1),A(I,1),A(I,2),A(I,3),A(I,4)
  251. 6220 RETURN
  252. 6250 REM PRINT VENDOR 2ND LINE ON PRINTER
  253. 6260 LPRINT USING F$(8);A(I,5),A(I,6),A(I,7)
  254. 6270 RETURN
  255. 6300 REM PRINT 1 INVOICE LINE ON CRT
  256. 6310 PRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1)
  257. 6320 RETURN
  258. 6350 REM PRINT 1 INVOICE LINE ON PRINTER
  259. 6360 IF Z2$="Y" THEN LPRINT USING F$(2);J,B$(J,0),B(J,0),B(J,1),B$(J,1)
  260. 6370 RETURN
  261. 7000 REM POST TO ACCTS.
  262. 7010 CLS
  263. 7020 INPUT "POSTING ACCTS-PRESS Y TO PROCEED,N TO RETURN";Z9$
  264. 7030 IF Z9$="N" THEN RETURN
  265. 7040 IF Z9$<>"Y" THEN GOSUB 10000:PRINT :GOTO 7020
  266. 7050 FOR I=1 TO NC:A(I,5)=0:A(I,6)=0:NEXT I
  267. 7060 FOR I=1 TO NI
  268. 7070 IF B(I,1)>0 THEN A(B(I,0),6)=A(B(I,0),6)+B(I,1) : ELSE A(B(I,0),5)=A(B(I,0),5)+B(I,1)
  269. 7080 NEXT I
  270. 7100 PRINT :INPUT "ARE OWED BY DATE AND CUMULATIVE BILL TO BE UPDATED(Y/N)";Z3$
  271. 7110 IF Z3$<>"Y" AND Z3$<>"N" THEN GOSUB 10000:GOTO 7100
  272. 7120 IF Z3$="N" THEN RETURN
  273. 7150 REM UPDATE FILES
  274. 7155 NI=0:B$(1,0)="":B(1,0)=0:B(1,1)=0:B$(1,1)=""
  275. 7160 FOR I = 1 TO NC
  276. 7165 A(I,7)=A(I,7)+A(I,6)
  277. 7170 A(I,4)=A(I,4)+A(I,3):A(I,3)=A(I,2):A(I,2)=A(I,1):A(I,1)=A(I,6)
  278. 7180 REM NOW APPLY PAYMENTS
  279. 7185 AA=A(I,5)
  280. 7190 FOR J=4 TO 1 STEP -1
  281. 7195 IF AA=0 THEN GOTO 7290
  282. 7200 IF A(I,J)=0 THEN GOTO 7290
  283. 7210 A(I,J)=A(I,J)+AA:IF A(I,J)>=0 THEN AA=0:GOTO 7290
  284. 7220 AA=A(I,J):A(I,J)=0
  285. 7290 NEXT J
  286. 7300 A(I,1)=AA+A(I,1)
  287. 7310 NEXT I
  288. 7320 RETURN
  289. 9000 REM FORMATTING VARIABLES
  290. 9010 F$(1)=" NO. ITEM # VENDOR # ITEM AMOUNT COMMENT"
  291. 9020 F$(2)="### % % ### #####.## % %"
  292. 9030 F$(3)=" % % $$######.##"
  293. 9040 F$(4)="VEND.NO. VEND.NAME CURRENT 30-60 60-90 90+"
  294. 9050 F$(5)=" ### % % #####.## #####.## #####.## #####.##"
  295. 9060 F$(6)=" % % ######.## ######.## ######.## ######.##"
  296. 9070 F$(7)=" PMTS. LAST MONTH CHGES LAST MONTH CUMULATIVE CHGES"
  297. 9080 F$(8)=" $$#####.## $$#####.## $$######.##"
  298. 9099 RETURN
  299. 10000 REM INPUT ERROR SBR
  300. 10010 PRINT "INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9
  301. 10020 RETURN
  302. 10100 INPUT "PRESS ENTER TO CONTINUE";Z9:RETURN
  303. 10200 REM Y,N,A SBR
  304. 10205 Z9$=" "
  305. 10210 INPUT "ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$
  306. 10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205
  307. 10230 RETURN
  308. 10300 REM Y,N SBR
  309. 10305 Z9$=" "
  310. 10310 INPUT "ENTER Y IF OK, N IF ERROR";Z9$
  311. 10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305
  312. 10330 RETURN
  313. 10400 REM MORE ENTRY? SBR
  314. 10405 Z9$=" "
  315. 10410 INPUT "DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$
  316. 10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405
  317. 10430 RETURN
  318. 10500 REM ONLY Y/N SBR
  319. 10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000
  320. 10520 RETURN
  321. 11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$
  322. 11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010
  323. 11020 RETURN