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.
 
 
 
 
 
 

224 lines
8.2 KiB

  1. 1 CLS:PRINT TAB(10);"INSURANCE POLICY FILE":PRINT
  2. 2 PRINT"THIS SIMPLE PROGRAM WILL PERMIT THE INDIVIDUAL OR SMALL
  3. 3 PRINT"BUSINESS TO STORE DATA ABOUT THE PORTFOLIO OF ALL INSURANCE
  4. 4 PRINT"POLICIES HELD. FOR EACH POLICY THE FOLLOWING DATA MAY BE
  5. 5 PRINT"STORED: TYPE INSURANCE,DESCRIPTION,DATE EXPIRES,INSURANCE
  6. 6 PRINT"COMPANY,UNDERWRITER, POLICY NUMBER, FACE AMOUNT, AND ANNUAL
  7. 7 PRINT"PREMIUM. THE FILE MAY BE STORED ON CASSETTE OR DISKETTE AND
  8. 8 PRINT"RECALLED. THE POLICIES MAY BE LISTED EITHER IN FULL OR BY TYPE
  9. 9 PRINT"WITH SUMMARIES OF TOTAL POLICY FACE VALUES AND PREMIUMS.
  10. 10 PRINT"A PROVISION FOR A MAXIMUM OF 70 POLICIES IS MADE."
  11. 15 PRINT:INPUT"PRESS ENTER TO BEGIN";Z9$
  12. 50 CLEAR 1000
  13. 55 DEFDBL B,V
  14. 60 DIM A$(70,6),B(70,3)
  15. 65 DIM AT$(70,6),BT(70,3)
  16. 70 GOSUB 9000
  17. 100 CLS:INPUT"ARE DISK DRIVES ATTACHED(Y/N)";ZD$
  18. 110 IF ZD$<>"Y" AND ZD$<>"N" THEN GOSUB 10000:GOTO 100
  19. 500 CLS:PRINT" MAIN MENU":PRINT
  20. 505 PRINT" 0.QUIT
  21. 510 PRINT" 1.ADD TO FILE OR BEGIN NEW FILE
  22. 520 PRINT" 2.READ FILE IN FROM TAPE
  23. 530 PRINT" 3.WRITE FILE OUT ONTO TAPE
  24. 540 PRINT" 4.READ FILE IN FROM DISK
  25. 550 PRINT" 5.WRITE FILE OUT ONTO DISK
  26. 560 PRINT" 6.EDIT FILE
  27. 570 PRINT" 7.LIST CONTENTS, COMPLETE OR BY TYPE
  28. 580 PRINT" 8.ROUTINE ACTUALLY DELETING RECORD FROM FILE
  29. 590 Z9=0
  30. 600 INPUT"ENTER YOUR CHOICE";Z9
  31. 605 IF Z9 = 0 THEN END
  32. 610 ON Z9 GOSUB 1000,2000,2100,2200,2300,3000,5000,7000
  33. 620 GOTO 500
  34. 1000 REM ADD TO OR START FILE ALREADY IN MEMORY
  35. 1010 CLS: IF NI=0 THEN PRINT "NEW FILE":GOSUB 10100
  36. 1015 J=NI+1
  37. 1020 GOSUB 6000:REM INPUT 1 RECORD
  38. 1030 CLS:PRINT F$(2):GOSUB 6100:REM PRINT OUT 1 RECORD
  39. 1040 GOSUB 10200:IF Z9$="N" GOTO 1020
  40. 1050 IF Z9$="A" THEN RETURN
  41. 1060 NI=NI+1:REM NEW RECORD ON FILE
  42. 1070 GOSUB 10400:REM MORE?
  43. 1080 IF Z9$="Y" THEN GOTO 1000 ELSE RETURN
  44. 2000 REM READ IN FILE FROM TAPE
  45. 2010 CLS:PRINT"PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100
  46. 2015 ' IF ZD$="Y" THEN CMD"T"
  47. 2020 INPUT #-1,NI
  48. 2030 FOR J=1 TO NI:INPUT #-1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):NEXT
  49. 2040 RETURN
  50. 2100 REM WRITE OUT FILE ONTO TAPE
  51. 2105 CLS
  52. 2110 PRINT"PUT DATA TAPE IN TAPE DRIVE":GOSUB 10100
  53. 2115 ' IF ZD$="Y" THEN CMD"T"
  54. 2130 WRITE #-1,NI
  55. 2140 FOR J=1 TO NI:WRITE #-1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):NEXT
  56. 2150 RETURN
  57. 2200 REM READ IN FILE FROM DISK
  58. 2210 CLS:PRINT"PUT DATA DISK IN DISK DRIVE":GOSUB 10100
  59. 2220 ON ERROR GOTO 2290
  60. 2225 PRINT:INPUT"ENTER NAME OF FILE TO READ IN";FI$
  61. 2230 OPEN"I",1,FI$
  62. 2240 INPUT #1,NI
  63. 2250 FOR J=1 TO NI:INPUT #1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3):FOR JJ=1 TO 6:Z8$=A$(J,JJ):GOSUB 11000:A$(J,JJ)=Z8$:NEXT JJ:NEXT
  64. 2260 CLOSE #1
  65. 2270 RETURN
  66. 2290 PRINT "FILE DOES NOT EXIST":GOSUB 10100:RETURN
  67. 2300 REM WRITE FILE OUT TO DISK
  68. 2305 CLS
  69. 2310 PRINT:PRINT"PUT DATA DISK IN DISK DRIVE":GOSUB 10100
  70. 2315 PRINT:PRINT"PRESENT DISK FILE IS ";FI$;" ";:INPUT"NEW FILE ";FI$
  71. 2320 OPEN"O",1,FI$
  72. 2330 WRITE # 1,NI
  73. 2340 FOR J=1 TO NI
  74. 2350 WRITE # 1,A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2),B(J,3)
  75. 2360 NEXT J
  76. 2370 CLOSE #1
  77. 2380 RETURN
  78. 3000 REM EDIT FILE
  79. 3010 CLS:PRINT" ";F$(2)
  80. 3020 FOR J=1 TO NI
  81. 3030 PRINT USING"## ";J;
  82. 3040 GOSUB 6100
  83. 3050 IF J/12=INT(J/12) THEN GOSUB 4000
  84. 3060 NEXT J
  85. 3062 J=J-1
  86. 3065 IF J/12=INT(J/12) GOTO 3080
  87. 3070 GOSUB 4000
  88. 3080 RETURN
  89. 4000 REM EDIT SUBROUTINE
  90. 4010 K=J
  91. 4020 PRINT
  92. 4025 J=0
  93. 4028 PRINT"CHANGE TYPE CODE TO ZZZZ FOR DELETING"
  94. 4030 INPUT"ENTER # OF ITEM YOU WISH TO EDIT,0 IF NONE";J
  95. 4035 IF J=0 THEN J=K:RETURN
  96. 4040 CLS:PRINT" ";F$(2):PRINT
  97. 4050 PRINT" ";:GOSUB 6100
  98. 4060 PRINT:GOSUB 6000
  99. 4070 CLS:PRINT" ";F$(2)
  100. 4080 FOR J=INT(K/12)*12+1 TO K:PRINT USING"## ";J;:GOSUB 6100:NEXT
  101. 4090 GOTO 4020
  102. 5000 REM LIST FILE WITH ANALYSIS
  103. 5005 INPUT"IS A LINE PRINTER TO BE USED(Y/N)";Z2$:IF Z2$<>"Y" AND Z2$<>"N" THEN GOSUB 10000:GOTO 5005
  104. 5010 CLS:PRINT" LIST MENU":PRINT
  105. 5020 PRINT"1. COMPLETE LIST AS ON FILE
  106. 5030 PRINT"2. LIST BY TYPE
  107. 5050 PRINT"3. END LIST PROGRAM
  108. 5060 PRINT:INPUT"ENTER APPROPRIATE CHOICE";Z9
  109. 5065 IF Z9=3 THEN RETURN
  110. 5070 ON Z9 GOSUB 5200,5300
  111. 5080 GOTO 5010
  112. 5100 RETURN
  113. 5200 REM COMPLETE LIST
  114. 5205 CLS:IF Z2$="Y" THEN PRINT"PUT PAPER INTO PRINTER":GOSUB 10100
  115. 5210 PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20);"COMPLETE LIST":LPRINT F$(5)
  116. 5215 V(1)=0:V(2)=0:V(3)=0:V(4)=0
  117. 5220 FOR J = 1 TO NI
  118. 5230 GOSUB 6100:GOSUB 6300:REM 1 RECORD PRINTED
  119. 5233 V(1)=V(1)+B(J,1):REM TOTAL FACE AMOUNT
  120. 5236 V(2)=V(2)+B(J,2):REM TOTAL PREMIUM AMOUNT
  121. 5240 IF J/12 = INT(J/12) THEN PRINT:GOSUB 10100:CLS:PRINT F$(2)
  122. 5250 NEXT J
  123. 5260 PRINT:GOSUB 10100
  124. 5265 PRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1)
  125. 5266 PRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2)
  126. 5268 IF Z2$<>"Y" THEN GOTO 5280
  127. 5271 LPRINT " ":LPRINT " "
  128. 5273 LPRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1)
  129. 5276 LPRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2)
  130. 5280 PRINT:GOSUB 10100:RETURN
  131. 5300 REM LIST TYPE
  132. 5305 CLS:INPUT"ENTER TYPE DESIRED";RM$
  133. 5310 V(1)=0:V(2)=0:V(3)=0:V(4)=0
  134. 5315 CLS:PRINT @ 398,"******* COMPUTING *******"
  135. 5320 FOR J=1 TO NI
  136. 5325 IF RM$<>A$(J,1) THEN GOTO 5390
  137. 5330 V(1)=V(1)+B(J,1):REM TOTAL FACE AMOUNT
  138. 5340 V(2)=V(2)+B(J,2):REM TOTAL PREMIUM AMOUNT
  139. 5390 NEXT J
  140. 5400 CLS:PRINT F$(2):IF Z2$="Y" THEN LPRINT TAB(20); "LIST OF TYPE ";RM$:LPRINT F$(5)
  141. 5405 JJ=0
  142. 5410 FOR J=1 TO NI
  143. 5415 IF RM$<>A$(J,1) THEN GOTO 5450
  144. 5417 JJ=JJ+1
  145. 5420 GOSUB 6100
  146. 5430 GOSUB 6300
  147. 5440 IF JJ/12=INT(JJ/12) THEN GOSUB 10100:CLS:PRINT F$(2):PRINT F$(6)
  148. 5450 NEXT J
  149. 5460 PRINT:GOSUB 10100
  150. 5470 PRINT
  151. 5480 PRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1)
  152. 5485 PRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2)
  153. 5500 IF Z2$<>"Y" THEN GOTO 5550
  154. 5505 LPRINT " ":LPRINT " "
  155. 5510 LPRINT USING "TOTAL FACE VALUE AMOUNT : $$#####.##";V(1)
  156. 5515 LPRINT USING "TOTAL PREMUIUM AMOUNT : $$#####.##";V(2)
  157. 5530 LPRINT:LPRINT
  158. 5550 PRINT:GOSUB 10100:RETURN
  159. 6000 REM SBR FOR INPUTTING DATA ON 1 PURCHASE
  160. 6005 F$(1)="% %"
  161. 6010 PRINT USINGF$(1);A$(J,1),:INPUT"TYPE INSUR. ";A$(J,1)
  162. 6015 PRINT USINGF$(1);A$(J,2),:INPUT"POL. DESCRIPTION ";A$(J,2)
  163. 6020 PRINT USINGF$(1);A$(J,3),:INPUT"DATE EXPIRES ";A$(J,3)
  164. 6023 PRINT USINGF$(1);A$(J,4),:INPUT"COMPANY WRITING ";A$(J,4)
  165. 6025 PRINT USINGF$(1);A$(J,5),:INPUT"UNDERWRITER ";A$(J,5)
  166. 6030 PRINT USINGF$(1);A$(J,6),:INPUT"POLICY NUMBER ";A$(J,6)
  167. 6035 F$(1)=" #########.## "
  168. 6040 PRINT USINGF$(1);B(J,1),:INPUT"FACE AMOUNT ";B(J,1)
  169. 6050 PRINT USINGF$(1);B(J,2),:INPUT"ANNUAL PREMIUM ";B(J,2)
  170. 6099 RETURN
  171. 6100 REM PRINT 1 LINE OF PORTFOLIO
  172. 6110 PRINT USING F$(4);A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2)
  173. 6120 RETURN
  174. 6300 REM PRINT 1 LINE OF PORTFOLIO ON PRINTER
  175. 6310 IF Z2$<>"Y" THEN RETURN
  176. 6320 LPRINT USING F$(7);A$(J,1),A$(J,2),A$(J,3),A$(J,4),A$(J,5),A$(J,6),B(J,1),B(J,2)
  177. 6330 RETURN
  178. 7000 REM DELETE SBR COMPUTATION
  179. 7005 K=1:REM K=NO. OF RECORDS NOT DELETED
  180. 7010 FOR J=1 TO NI
  181. 7020 IF A$(J,1)="ZZZZ" GOTO 7090
  182. 7030 REM DO NOT DELETE RECORD
  183. 7040 FOR J6=1 TO 6:AT$(K,J6)=A$(J,J6):NEXT
  184. 7050 FOR J6=1 TO 3:BT(K,J6)=B(J,J6):NEXT
  185. 7060 K=K+1:GOTO 7090
  186. 7090 NEXT J
  187. 7100 K=K-1:NI=K
  188. 7110 FOR J=1 TO NI
  189. 7120 FOR J6=1 TO 6:A$(J,J6)=AT$(J,J6):NEXT
  190. 7130 FOR J6=1 TO 3:B(J,J6)=BT(J,J6):NEXT
  191. 7140 NEXT J
  192. 7150 RETURN
  193. 9000 REM FORMATTING VARIABLES
  194. 9020 F$(2)="TYPE DESCRIPT EXPIRES CO. UNDWRT POL # AMT. PREM"
  195. 9030 F$(4)="% % % % % % % % % % % % ####### #####"
  196. 9040 F$(5)="TYPE DESCRIPTION EXPIRES COMP. UNDWRT POLICY # FACE AMT. PREMIUM"
  197. 9060 F$(7)="% % % % % % % % % % % % ####### ########"
  198. 9099 RETURN
  199. 10000 REM INPUT ERROR SBR
  200. 10010 PRINT"INPUT ERROR! TRY AGAIN!":FOR Z9=1 TO 300:NEXT Z9
  201. 10020 RETURN
  202. 10100 INPUT"PRESS ENTER TO CONTINUE";Z9:RETURN
  203. 10200 REM Y,N,A SBR
  204. 10205 Z9$=" "
  205. 10210 INPUT"ENTER Y IF OK,N IF ERROR,A TO ABORT";Z9$
  206. 10220 IF Z9$<>"Y" AND Z9$<>"N" AND Z9$<>"A" THEN GOSUB 10000:GOTO 10205
  207. 10230 RETURN
  208. 10300 REM Y,N SBR
  209. 10305 Z9$=" "
  210. 10310 INPUT"ENTER Y IF OK, N IF ERROR";Z9$
  211. 10320 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10305
  212. 10330 RETURN
  213. 10400 REM MORE ENTRY? SBR
  214. 10405 Z9$=" "
  215. 10410 INPUT"DO YOU DESIRE MORE ENTRIES(Y/N)";Z9$
  216. 10420 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000:GOTO 10405
  217. 10430 RETURN
  218. 10500 REM ONLY Y/N SBR
  219. 10510 IF Z9$<>"Y" AND Z9$<>"N" THEN GOSUB 10000
  220. 10520 RETURN
  221. 11000 REM ELIMINATES TRAILING BLANKS OF VARIABLE Z8$
  222. 11010 IF RIGHT$(Z8$,1)=" " THEN Z8$=LEFT$(Z8$,LEN(Z8$)-1):GOTO 11010
  223. 11020 RETURN