home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / steel14.zip / SCAN.BAS < prev    next >
BASIC Source File  |  1983-03-10  |  31KB  |  1,023 lines

  1. 3 DEFDBL X         
  2. 4 DEFINT A-W,Y-Z
  3. 5 DIM F$(15),FLDN$(15,30),FTY(15,30),FL(15,30)
  4. 10 DIM X$(30),Y$(30)
  5. 13 DIM L(15),NREC(15),Z$(30),EGL(30),KT(30),I#(30,10),I$(30,10),ORN(30)
  6. 14 DIM X(30),CK$(30),SN$(30),SFN(30)
  7. 16 DIM KY(15,30),KEYLIST(15,30),L$(10,100),LEND(30),CL(30)
  8. 17 DIM ORNFLG(30),FTA(30),ATF(30),BTF(30),IMAX(30)
  9. 18 DIM SU%(40),S!(30),SUM#(40)
  10. 20 DIM XL(40)
  11. 22 DIM ORFLG(30),D(30),TFN(30),KTSUM(30),SUMFN(30)
  12. 25 DIM S#(30)
  13. 26 DIM MAX(10),Z%(30),SU#(30),D#(30),EFN(10,30)
  14. 35 DIM K$(80)
  15. 42 DIM MAXK(30),SUMRN(5,5),SUMFLDN(10,5),MAXSAF(9)
  16. 60 DIM SAF#(3,200)
  17. 61 CH = 29: PRINT FRE(0)      
  18. 70 NE = 0
  19. 75 GOSUB 50000
  20. 80 GOSUB 10000
  21. 90 GOSUB 11000
  22. 400 GOSUB 13000
  23. 402 IF KD < 5 THEN GOSUB 11000
  24. 404 GOSUB 13000
  25. 410 PRINT "******  SELECTIVE SCAN PROGRAM   --  WHAT FILE DO YOU WANT:  *****"
  26. 420 PRINT ""
  27. 425 PRINT " 0  - *** EXIT PROGRAM ***"
  28. 430 FOR I = 1 TO MAXF
  29. 440 PRINT I;" - ";F$(I)
  30. 450 NEXT I
  31. 460 PRINT ""
  32. 470 PRINT "***** ENTER THE NUMBER OF THE FILE YOU WANT THEN PRESS RETURN *****"
  33. 475 GOSUB 14000
  34. 477 IF DT# < 0 OR DT#>MAXF  GOTO 475
  35. 480 A = DT#
  36. 482 IF A = 0 GOTO 51000
  37. 483 GOSUB 13000
  38. 484 PRINT "FILE : "; F$(A)
  39. 485 GOSUB 2300
  40. 490 GOSUB 2500
  41. 500 GOTO 6000
  42. 2300 REM **************  DISK  SELECTION  ***************
  43. 2302 IF HDISK = 2 THEN GOSUB 13000
  44. 2303 IF HDISK = 2 THEN GOTO 2360
  45. 2304 PRINT ""
  46. 2305 PRINT "************  WHICH DISK DRIVE IS THE FILE ON  **************"
  47. 2310 PRINT ""
  48. 2315 PRINT "                 1 - DISK DRIVE A"
  49. 2320 PRINT "                 2 - DISK DRIVE B"
  50. 2325 PRINT "                 3 - DISK DRIVE C"
  51. 2330 PRINT "                 4 - DISK DRIVE D"
  52. 2335 PRINT ""
  53. 2340 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ************"
  54. 2345 GOSUB 14000
  55. 2347 IF DT# < 0 OR DT#>4 GOTO 2345
  56. 2350 T = DT#
  57. 2355 ON T GOTO 2360,2370,2380,2390
  58. 2360 T$ = F$(A)
  59. 2365 GOTO 2490
  60. 2370 T$ = "B:"+F$(A)
  61. 2375 GOTO 2490
  62. 2380 T$ = "C:"+F$(A)
  63. 2385 GOTO 2490
  64. 2390 T$ = "D:"+F$(A)
  65. 2490 RETURN
  66. 2500 REM *******  OPEN FILE SUBROUTINE  *******
  67. 2503 CLOSE #1
  68. 2505 OPEN "R",#1,T$,L(A)
  69. 2507 D = 0
  70. 2510 FOR T = 1 TO NREC(A)
  71. 2520 FIELD #1,D AS DY$,FL(A,T) AS X$(T)
  72. 2530 D = D + FL(A,T)
  73. 2540 NEXT T
  74. 2543 GOSUB 7800
  75. 2545 RETURN
  76. 2550 REM *******   OPEN SECOND FILE  *******
  77. 2553 CLOSE #2
  78. 2555 OPEN "R",#2,T$,L(B)
  79. 2557 D = 0
  80. 2560 FOR T = 1 TO NREC(B)
  81. 2565 FIELD #2,D AS DY$,FL(B,T) AS Y$(T)
  82. 2570 D = D + FL(B,T)
  83. 2575 NEXT T
  84. 2578 RETURN
  85. 2580 REM *******   OPEN THIRD FILE  *******
  86. 2582 PRINT C,F$(C),L(C)
  87. 2584 OPEN "R",#2,F$(C),L(C)
  88. 2586 D = 0
  89. 2588 FOR T = 1 TO NREC(C)
  90. 2590 FIELD #2,D AS DY$,FL(C,T) AS Z$(T)
  91. 2592 D = D + FL(C,T)
  92. 2594 NEXT T
  93. 2596 RETURN
  94. 3010 GOTO 400
  95. 6000  REM  **********  LOOP THROUGH FIELDS  ************
  96. 6001 EFLG = 0:GOSUB 10700
  97. 6002 GOSUB 10200
  98. 6003 FOR Q = 1 TO NREC(A)
  99. 6006 GOSUB 6045
  100. 6009 NEXT Q
  101. 6010 REM *********  ADD OPTIONS  *******
  102. 6011 GOSUB 6603
  103. 6012 REM  **********  GET STARTING RECORD  **********
  104. 6015 GOSUB 6375
  105. 6018 REM  **********  GET RECORDS  ***********
  106. 6021 RN = RN - 1
  107. 6024 RN = RN + 1
  108. 6027 GOSUB 6090
  109. 6029 IF MATCH = 0 THEN PRINT "RECORD NUMBER ";RN ;" CONDITIONS NOT MET"
  110. 6030 IF MATCH = 0 GOTO 6024
  111. 6033 IF ADOPT > 1 THEN GOSUB 6759
  112. 6036 REM ********  PRINT ON PAPER  ********
  113. 6039 IF PRTOPT <> 1 THEN GOSUB 12000
  114. 6040 IF PRTOPT = 1 THEN GOSUB 12200
  115. 6042 GOTO 6024
  116. 6045 REM  ***********  LOOP THROUGH FIELDS  ************
  117. 6048 GOSUB 6129
  118. 6050 IF EGL(Q) = 1 THEN RETURN
  119. 6051 IF FTY(A,Q) = 1 THEN GOTO 6069
  120. 6057 REM ******  NUMBERS  ********
  121. 6060 ON EGL(Q) GOSUB 6045,6201,6234,6234,6201
  122. 6063 GOTO 6075
  123. 6066 REM ******  STRINGS  *******
  124. 6069 ON EGL(Q) GOSUB 6366,6246,6279,6279,6246
  125. 6072 REM **********  OR ROUTINE  ******
  126. 6075 GOSUB 6288
  127. 6078 IF DT# = 2 THEN GOSUB 6324
  128. 6087 RETURN
  129. 6090  REM  **************  GET RECORDS  *****************
  130. 6093  GOSUB 6396
  131. 6096 FOR Q = 1 TO NREC(A)
  132. 6099 REM ***********  CONVERT STRINGS TO DECIMALS  *********
  133. 6102 GOSUB 6435
  134. 6105 IF TEST = 1 THEN GOTO 6123
  135. 6108 IF TEST = 0 THEN GOSUB 6561
  136. 6111 REM *******  OR CHECK RESULTS  *********
  137. 6114 IF TEST = 1 THEN GOTO 6123
  138. 6117 MATCH = 0
  139. 6120 RETURN
  140. 6123 NEXT Q
  141. 6124 MATCH = 1
  142. 6126 RETURN 
  143. 6129 GOSUB 13000
  144. 6138 PRINT "FIELD NUMBER: ";Q;"FIELD NAME: ";FLDN$(A,Q)
  145. 6141 K = 0
  146. 6147 PRINT "******************  CHOSE A RELATIONSHIP  *******************"
  147. 6153 PRINT " 0 - RETURN TO FILE OPTIONS  "
  148. 6156 PRINT " 1 - ANY VALUE IS ACCEPTABLE"
  149. 6159 PRINT " 2 - ";FLDN$(A,Q);" EQUAL TO  X"
  150. 6162 PRINT " 3 - ";FLDN$(A,Q);" GREATER THEN  X"
  151. 6165 PRINT " 4 - ";FLDN$(A,Q);" LESS THEN  X"
  152. 6166 PRINT " 5 - ";FLDN$(A,Q);" BETWEEN X AND Y"
  153. 6171 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN   ***********"
  154. 6177 REM ******* EGL MEANS EQUAL GREATER OR LESS THEN *****
  155. 6180 GOSUB 14000
  156. 6181 IF DT# < 0 OR DT#>5 GOTO 6180
  157. 6183 EGL(Q) = DT#
  158. 6189 IF EGL(Q) = 0 GOTO 3010
  159. 6192 RETURN
  160. 6195 IF FTY(A,Q)=1 THEN GOTO 6243
  161. 6198 ON EGL(Q) GOTO 6366,6201,6234,6234,6201
  162. 6201 PRINT "**********  ENTER THE VALUE OF X THEN PRESS RETURN  **********"
  163. 6204 K = K + 1 
  164. 6207 KT(Q)=K
  165. 6209 GOSUB 14300
  166. 6210 I#(Q,K) = DT#
  167. 6211 IF EGL(Q) = 5 AND K = 2 THEN RETURN
  168. 6212 IF EGL(Q) = 5 THEN PRINT "**********  ENTER THE VALUE OF Y THEN PRESS RETURN  **********"
  169. 6213 IF EGL(Q) = 5 GOTO 6204
  170. 6215 PRINT "***************  MUTIPLE VALUES OF X ?  *****************"
  171. 6216 PRINT " 1 - MORE VALUES OF X "        
  172. 6219 PRINT " 2 - NO MORE VALUES OF X "      
  173. 6222 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  **********"     
  174. 6225 GOSUB 14000
  175. 6226 IF DT# <1 OR DT# > 2  GOTO 6225
  176. 6228 IF DT# = 1 GOTO 6201
  177. 6231 RETURN
  178. 6234 PRINT "*******  ENTER THE VALUE OF X THEN PRESS RETURN  ********"     
  179. 6235 GOSUB 14300
  180. 6237 I#(Q,1) = DT#
  181. 6240 RETURN
  182. 6243 ON EGL(Q) GOTO 6366,6246,6279,6279
  183. 6246 PRINT "*******  ENTER THE VALUE OF X THEN PRESS RETURN  *******"
  184. 6249 K = K + 1 
  185. 6252 KT(Q)=K
  186. 6253 MAX = 30
  187. 6254 GOSUB 15030
  188. 6255 I$(Q,K) = A$
  189. 6256 IF EGL(Q) = 5 AND K = 2 THEN RETURN
  190. 6257 IF EGL(Q) = 5 THEN PRINT "*******  ENTER THE VALUE OF Y THEN PRESS RETURN  *******"
  191. 6258 IF EGL(Q) = 5 THEN GOTO 6249
  192. 6260 PRINT "***************  MUTIPLE VALUES OF X ?  *****************"
  193. 6261 PRINT " 1 - MORE VALUES OF X "        
  194. 6264 PRINT " 2 - NO MORE VALUES OF X "      
  195. 6267 PRINT "*********  ENTER THE NUMBER THEN PRESS RETURN  **********"     
  196. 6270 GOSUB 14000
  197. 6271 IF DT# <1 OR DT# >2  GOTO 6270
  198. 6273 IF DT# = 1  GOTO 6246
  199. 6276 RETURN
  200. 6279 PRINT "*******  ENTER THE VALUE OF X THEN PRESS RETURN  *******"
  201. 6280 MAX = 30
  202. 6281 GOSUB 15030
  203. 6282 I$(Q,1) = A$
  204. 6285 RETURN
  205. 6288 REM ************** OR / AND ROUTINE **************
  206. 6290 IF Q = NREC(A) THEN RETURN
  207. 6291 PRINT ""
  208. 6294 PRINT "*****  DO YOU WANT THIS CONDITON ORed WITH ANOTHER CONDITION  ****"
  209. 6297 PRINT "  1 -  NO, THIS CONDITION MUST BE MEET   "
  210. 6300 PRINT "  2 -  YES, CHECK ANOTHER FIELD TO SEE IF IT MEETS IT'S CONDITION"
  211. 6303 PRINT "     - Use only on the lower number field of the 2 you want to or"
  212. 6306 PRINT "*************  ENTER THE NUMBER THEN PRESS RETURN  ***************"
  213. 6309 GOSUB 14000
  214. 6310 IF DT# <1 OR DT# >2  GOTO 6309
  215. 6315 ORN(Q) = 0
  216. 6318 RETURN
  217. 6321 IF A$ ="1" GOTO 6366
  218. 6324 GOSUB 13000
  219. 6327 PRINT "--------------------  OR OPTION  --------------------------"
  220. 6333 PRINT "**************  WHAT FIELD DO YOU WANT ?  ******************"
  221. 6336 PRINT "FIELD NUMBER: ";Q;"FIELD NAME: ";FLDN$(A,Q)
  222. 6339 PRINT "********************  ORed WITH  ***************************"
  223. 6345 FOR N = (Q+1) TO NREC(A)
  224. 6348 PRINT "FIELD NUMBER: ";N;"FIELD NAME: ";FLDN$(A,N)
  225. 6351 NEXT N
  226. 6357 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ***********"
  227. 6360 GOSUB 14000
  228. 6361 IF DT# <(Q+1) OR DT# > NREC(A) GOTO 6360
  229. 6363 ORN(Q) = DT#
  230. 6366 RETURN
  231. 6369 GOSUB 6603
  232. 6372 F4 = 23
  233. 6375 GOSUB 13000
  234. 6378 PRINT "********  WHAT RECORD DO YOU WANT TO START AT  *********"
  235. 6381 PRINT ""
  236. 6384 PRINT "********  ENTER THE NUMBER THEN PRESS RETURN  *********"
  237. 6387 GOSUB 14100
  238. 6388 IF DT# <1 OR DT# > 10000  GOTO 6387
  239. 6390 RN = DT#
  240. 6393 RETURN
  241. 6396 REM GET RECORD
  242. 6399 IF INKEY$ <> "" THEN GOSUB 6576
  243. 6402 IF RN > MRN THEN GOSUB 26500
  244. 6403 IF EFLG = 1 GOTO 6810
  245. 6405 GET #1,RN
  246. 6417 FOR J = 1 TO NREC(A)
  247. 6420 ORFLG(J) = 0
  248. 6423 NEXT J
  249. 6426 RETURN
  250. 6429 Q = Q + 1
  251. 6432 REM
  252. 6435 ON FTY(A,Q) GOTO 6507,6441,6453,6465,6465
  253. 6438 REM ************** CONVERT STRINGS TO DECIMALS ****************
  254. 6441 I%=CVI(X$(Q))
  255. 6444 I# = I%
  256. 6447 S#(Q) = I#
  257. 6450 GOTO 6471
  258. 6453 I!=CVS(X$(Q))
  259. 6456 I# = I!
  260. 6459 S#(Q) = I#
  261. 6462 GOTO 6471
  262. 6465 I#=CVD(X$(Q))
  263. 6468 S#(Q) = I#
  264. 6471 IF ORFLG(Q) = 1 GOTO 6546
  265. 6474 REM ************** CHECK NUMBERS FOR RELATIONS ***************
  266. 6477 ON EGL(Q) GOTO 6546,6480,6492,6498,6502
  267. 6480 FOR K = 1 TO KT(Q)
  268. 6483 IF I#=I#(Q,K) GOTO 6546
  269. 6486 NEXT K 
  270. 6489 GOTO 6561
  271. 6492 IF I#>I#(Q,1) GOTO 6546
  272. 6495 GOTO 6561 
  273. 6498 IF I# < I#(Q,1) GOTO 6546
  274. 6501 GOTO 6561
  275. 6502 IF I# > I#(Q,1) AND I# < I#(Q,2) GOTO 6546
  276. 6503 GOTO 6561
  277. 6504 REM **************CHECK STRINGS FOR RELATIONS **************
  278. 6507 ON EGL(Q) GOTO 6546,6510,6534,6540,6544
  279. 6510 FOR K = 1 TO KT(Q)
  280. 6513 Y$ = I$(Q,K)
  281. 6516 Y = LEN(Y$)
  282. 6519 X$ = X$(Q)
  283. 6522 X$ = LEFT$(X$,Y)
  284. 6525 IF X$=I$(Q,K) GOTO 6546
  285. 6528 NEXT K 
  286. 6531 GOTO 6561
  287. 6534 IF X$(Q) > I$(Q,1) GOTO 6546
  288. 6537 GOTO 6561
  289. 6540 IF X$(Q) < I$(Q,1) GOTO 6546
  290. 6543 GOTO 6561
  291. 6544 IF X$(Q) > I$(Q,1) AND X$(Q) < I$(Q,2) GOTO 6546
  292. 6545 GOTO 6561
  293. 6546 P = ORN(Q)
  294. 6549 IF P = 0 GOTO 6555
  295. 6552 ORFLG(P) = 1
  296. 6555 TEST = 1
  297. 6558 RETURN
  298. 6561 TEST = 0
  299. 6567 IF ORN(Q) <> O THEN TEST = 1 ELSE TEST = 2
  300. 6573 RETURN
  301. 6576 REM ******** PAUSE SUBROUTINE ********
  302. 6579 PRINT "******************  PAUSE SUBROUTINE  **********************"
  303. 6582 PRINT " 1 - CONTINUE SCANNING"
  304. 6585 PRINT " 0 - STOP SCANNING "
  305. 6588 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ***********"    
  306. 6591 GOSUB 14000
  307. 6593 IF DT# <0 OR DT# >1  GOTO 6588
  308. 6597 IF DT# = 0 THEN GOTO 6810
  309. 6600 RETURN
  310. 6603 REM *******  ADD OPTIONS FOR THE SELECTIVE SCAN ROUTINE  *******
  311. 6606 GOSUB 13000
  312. 6609 PRINT "********************  ADD OPTIONS  ***********************"
  313. 6612 PRINT ""
  314. 6615 PRINT "   1 - DO NOT ADD"
  315. 6618 PRINT "   2 - ADD FIELDS"
  316. 6621 PRINT "   3 - ADD FIELDS WITH SUBTOTALS BY ANOTHER FIELD "
  317. 6624 PRINT "   4 - BOTH 2 & 3"
  318. 6627 PRINT ""
  319. 6630 PRINT "**********  ENTER THE NUMBER THEN PRESS RETURN  ***********"
  320. 6633 GOSUB 14000
  321. 6634 IF DT# <1 OR DT# >4  GOTO 6633
  322. 6636 ADOPT = DT#
  323. 6637 IF ADOPT > 1 THEN GOSUB 10600
  324. 6639 ON ADOPT GOTO 6756,6642,6696,6642
  325. 6642 GOSUB 13000
  326. 6645 PRINT "**********  HOW MANY FIELDS DO YOU WANT TO ADD  **********"
  327. 6648 PRINT ""
  328. 6651 FOR T = 1 TO NREC(A)
  329. 6654 PRINT T;" - ";FLDN$(A,T)
  330. 6657 NEXT T
  331. 6660 PRINT "**********  HOW MANY FIELDS DO YOU WANT TO ADD  **********"
  332. 6663 GOSUB 14000
  333. 6664 IF DT# <1 OR DT#> NREC(A) GOTO 6663
  334. 6666 KTSUM = DT#
  335. 6669 FOR T = 1 TO KTSUM
  336. 6672 PRINT "*****  WHICH FIELD IS THE ";T;"th YOU WAMT TO ADD  *****"
  337. 6675 GOSUB 14000
  338. 6676 IF DT# <1 OR DT#> NREC(A) GOTO 6675
  339. 6677 IF FTY(A,DT#) = 1 GOTO 6675
  340. 6678 FTA(T) = DT#
  341. 6681 NEXT T
  342. 6684 FOR T = 1 TO KTSUM
  343. 6687 SUM#(T) = 0
  344. 6690 NEXT T
  345. 6693 IF ADOPT = 2 GOTO 6756
  346. 6696 GOSUB 13000
  347. 6699 PRINT "***  HOW MANY FIELDS DO YOU WANT TO SUBTOTAL BY ANOTHER FIELD  ***"
  348. 6702 PRINT ""
  349. 6705 FOR T = 1 TO NREC(A)
  350. 6708 PRINT T;" - ";FLDN$(A,T)
  351. 6711 NEXT T
  352. 6714 PRINT ""
  353. 6717 PRINT "*************  ENTER THE NUMBER THEN PRESS RETURN  ***************"
  354. 6720 GOSUB 14000
  355. 6721 IF DT#<1 OR DT#>NREC(A) GOTO 6720
  356. 6723 KTSAF = DT#
  357. 6724 FOR T = 1 TO KTSAF
  358. 6725 PRINT "****  WHICH FIELD IS THE ";T;" th FIELD YOU WANT TO SUBTOTAL  ****"
  359. 6726 GOSUB 14000
  360. 6727 IF DT#<1 OR DT#>NREC(A) GOTO 6726
  361. 6728 IF FTY(A,DT#) = 1 GOTO 6726
  362. 6731 ATF(T) = DT#
  363. 6732 PRINT "*********  WHICH FIELD DO YOU WANT SUBTOTALS GROUPED BY  *********"
  364. 6733 PRINT "                  Must be an interger field  "
  365. 6734 GOSUB 14000
  366. 6735 IF DT#<1 OR DT#>NREC(A) GOTO 6734
  367. 6736 IF FTY(A,DT#) <> 2 GOTO 6734
  368. 6737 BTF(T) = DT#
  369. 6738 IMAX(T) = 0
  370. 6739 NEXT T
  371. 6741 FOR T = 1 TO KTSAF
  372. 6744 FOR I = 1 TO 99  
  373. 6747 SAF#(T,I) = 0
  374. 6750 NEXT I
  375. 6753 NEXT T
  376. 6756 RETURN
  377. 6759 REM ***** ADD SUBROUTINE *******
  378. 6765 IF ADOPT = 3 GOTO 6783
  379. 6768 FOR T = 1 TO KTSUM
  380. 6771 F = FTA(T)
  381. 6774 SUM#(T) = SUM#(T) + S#(F)
  382. 6777 NEXT T
  383. 6780 IF ADOPT = 2 THEN RETURN
  384. 6783 REM ******  ADD ACCORDING TO ANOTHER FIELD  *******
  385. 6786 FOR T = 1 TO KTSAF
  386. 6789 T1 = ATF(T)
  387. 6792 T2 = BTF(T)
  388. 6793 IF T2 <= 0 THEN T2 = 99
  389. 6794 IF T2 >100 THEN T2 = 99
  390. 6795 T3 = S#(T2)
  391. 6797 IF T3 > IMAX(T) THEN IMAX(T) = T3
  392. 6798 SAF#(T,T3) = SAF#(T,T3) + S#(T1)
  393. 6804 NEXT T
  394. 6807 RETURN
  395. 6810 REM *******  PRINT SUMS ***********
  396. 6813 EFLG = 0
  397. 6819 IF ADOPT = 1 GOTO 3010
  398. 6825 PRINT "***********  PRINT SUMS ***********"
  399. 6828 IF ADOPT = 3 GOTO 6858
  400. 6831 PRINT "********* FIELD SUMS ***********"
  401. 6834 FOR T = 1 TO KTSUM   
  402. 6837 T2 = FTA(T)
  403. 6840 PRINT FLDN$(A,T2),SUM#(T)
  404. 6841 IF SPRT = 2 THEN LPRINT FLDN$(A,T2),SUM#(T)
  405. 6843 NEXT T
  406. 6846 PRINT ""
  407. 6849 PRINT "PRESS ANY KEY TO CONTINUE " 
  408. 6852 IF INKEY$ = "" GOTO 6852
  409. 6855 IF ADOPT = 2 GOTO 3010
  410. 6858 PRINT "******  SUM ACCORDING TO ANOTHER FIELD ********"
  411. 6861 FOR T = 1 TO KTSAF
  412. 6864 T2 = ATF(T)
  413. 6867 T3 = BTF(T)
  414. 6870 PRINT "SUM OF THIS FIELD :";FLDN$(A,T2)
  415. 6871 IF SPRT = 2 THEN LPRINT "SUM OF THIS FIELD :";FLDN$(A,T2)
  416. 6873 PRINT "SUBTOTALS BY FIELD :";FLDN$(A,T3)
  417. 6874 IF SPRT = 2 THEN LPRINT "SUBTOTALS BY FIELD :";FLDN$(A,T3)
  418. 6876 FOR I = 1 TO IMAX(T)
  419. 6879 PRINT I;"-";SAF#(T,I)
  420. 6880 IF SPRT = 2 THEN LPRINT I;"-";SAF#(T,I)
  421. 6882 NEXT I
  422. 6885 PRINT "PRESS ANY KEY TO CONTINUE "  
  423. 6888 IF INKEY$ = "" GOTO 6888
  424. 6891 NEXT T
  425. 6894 GOTO 3010
  426. 7800 MRN = LOF(1)/ L(A)
  427. 7805 REM MRN = INT(MRN)
  428. 7810 RETURN
  429. 7900 REM ***** LOF
  430. 7910 MRN2 = LOF(3)/82
  431. 7920 RETURN
  432. 7950 REM ******* LOF
  433. 7960 MRNS = LOF(B)/L(B)
  434. 7970 RETURN
  435. 10000 REM *************  READ SUBROUTINE  *************
  436. 10004 GOSUB 10900
  437. 10010 OPEN "I",#1,"FFILE"
  438. 10020 INPUT #1,MAXF
  439. 10030 FOR A = 1 TO MAXF
  440. 10040 INPUT #1,A,F$(A),NREC(A),L(A)
  441. 10050 FOR N = 1 TO NREC(A)
  442. 10060 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  443. 10070 IF FTY(A,N) = 2 THEN INPUT #1,KY(A,N),KEYLIST(A,N)
  444. 10080 NEXT N
  445. 10090 NEXT A
  446. 10100 CLOSE #1
  447. 10110 RETURN
  448. 10200 REM  *******  SELECTIVE SCAN CONTINUED  ********
  449. 10210 GOSUB 13000
  450. 10220 PRINT "****************  SELECTIVE SCAN PROGRAM  *****************"
  451. 10230 PRINT ""
  452. 10240 PRINT "********  WHAT DO YOU WANT DONE WITH THE RESULTS  *********"
  453. 10250 PRINT ""
  454. 10260 PRINT "           1 - SHOWN ON THE MONITOR (TV) ONLY "
  455. 10370 PRINT "           2 - PRINT ON PAPER AND SHOWN ON THE MONITOR "
  456. 10400 PRINT ""
  457. 10500 PRINT "***********  ENTER THE NUMBER THEN PRESS RETURN  ***********"
  458. 10510 GOSUB 14000
  459. 10512 IF DT# <1 OR DT# >2 GOTO 10510
  460. 10520 IF DT# = 2 THEN PRTOPT = 1 ELSE PRTOPT = 0
  461. 10530 RETURN
  462. 10600  REM  ********  SELECTIVE SCAN CONTINUED  *********
  463. 10610 GOSUB 13000
  464. 10620 PRINT "**************  DO YOU WANT THE SUMS  **************"
  465. 10630 PRINT ""
  466. 10640 PRINT "         1 - SHOWN ON THE MONITOR (TV) ONLY "
  467. 10650 PRINT "         2 - PRINT ON PAPER AND SHOW ON THE MONITOR "
  468. 10660 PRINT ""
  469. 10670 PRINT "*******  ENTER THE NUMBER THEN PRESS RETURN  ********"
  470. 10680 GOSUB 14000
  471. 10682 IF DT# <1 OR DT# >2  GOTO 10680
  472. 10690 SPRT = DT#
  473. 10695 RETURN
  474. 10700 REM ******  SELECTIVE SCAN INTRO 
  475. 10705 GOSUB 13000
  476. 10710 PRINT "*************************   SELECTIVE SCAN ROUTINE   ************************"
  477. 10720 PRINT ""
  478. 10730 PRINT "   The selective scan routine will display each field in the file then ask"
  479. 10740 PRINT "you what conditons if any you want to place on the field.  You may place  "
  480. 10750 PRINT "a conditon on every field if you wish to do so.  "
  481. 10755 PRINT ""
  482. 10760 PRINT "   The computer will then display only the records that meet the conditions"
  483. 10770 PRINT "that you specified.  The computer will give you the option to add the records"
  484. 10780 PRINT "Only the records that meet the conditons you specified will be added."
  485. 10790 PRINT "If you want to add all the records do not put any condition on any of the "
  486. 10800 PRINT "fields.
  487. 10805 PRINT ""
  488. 10810 PRINT "  If you do specify a condition for a field the computer will ask you if you "
  489. 10815 PRINT "want to OR the conditon with a condition of another field.  If you chose the"
  490. 10820 PRINT "OR option only one of the conditions will need to be meet for the record to "
  491. 10825 PRINT "be acceptable.  You may OR two or more conditions together."
  492. 10830 PRINT "   If you use the OR option. Specify the or condition only once on the lowest"
  493. 10840 PRINT "number field that you are ORING together.  For example if you wantto OR the "
  494. 10850 PRINT "second and fourth field specify the OR conditions on the second field not"
  495. 10855 PRINT "on the fourth field.  See the manual for more information."
  496. 10865 PRINT ""
  497. 10870 PRINT "***********************  PRESS ANY KEY TO CONTINUE  ************************"
  498. 10880 IF INKEY$ = "" GOTO 10880
  499. 10890 RETURN
  500. 10900 REM  *************  PUT DISK IN DRIVE SUB
  501. 10905 IF HDISK = 2 THEN RETURN
  502. 10910 GOSUB 13000
  503. 10920 PRINT "    ********  PUT PROGRAM DATA DISK IN THE DEFAULT DISK DRIVE  *********"
  504. 10930 PRINT ""
  505. 10940 PRINT "                     THEN PRESS ANY KEY TO CONTINUE "
  506. 10950 PRINT ""
  507. 10960 PRINT "    If the program data disk is already in the default disk drive then"
  508. 10965 PRINT "                   just press any key to continue."
  509. 10970 PRINT ""
  510. 10990 IF INKEY$ = "" GOTO 10990
  511. 10995 RETURN
  512. 11000 REM  ********  LOAD KEYLIST  *********
  513. 11010 GOSUB 13000
  514. 11100 A = 10
  515. 11105 PRINT "FILE : KEYLIST "
  516. 11110 GOSUB 2300
  517. 11120 GOSUB 2500
  518. 11130 FOR T = 1 TO 10000
  519. 11140 IF T > MRN GOTO 11900
  520. 11150 GET #1,T
  521. 11160 T1 = CVI(X$(1))
  522. 11170 T2 = CVI(X$(2))
  523. 11180 L$(T1,T2) = X$(3)
  524. 11185 IF T2 > MAXK(T1) THEN MAXK(T1) = T2
  525. 11190 NEXT T
  526. 11900 KD = 5
  527. 11935 CLOSE #1
  528. 11940 RETURN
  529. 12000 REM ******  PRINT SUBROUTINE  *****
  530. 12010 PRINT "*************  FILE : ";F$(A);"- ";"RECORD NUMBER: ";RN;" *************"
  531. 12020 FOR Q = 1 TO NREC(A)
  532. 12025 IF Q MOD 20 = 0 THEN GOSUB 12170
  533. 12030 PRINT Q; TAB(5) FLDN$(A,Q);     
  534. 12040 ON FTY(A,Q) GOTO 12050,12070,12100,12130,12142
  535. 12050 PRINT TAB(26) X$(Q)
  536. 12060 GOTO 12150
  537. 12070 I%=CVI(X$(Q))
  538. 12075 PRINT TAB(25) I%;
  539. 12080 IF KY(A,Q) <> 2 THEN PRINT ""
  540. 12082 IF KY(A,Q) <> 2 THEN GOTO 12150
  541. 12084 T1 = KEYLIST(A,Q)
  542. 12085 IF I% < 0 THEN I% = 0
  543. 12086 W$ = L$(T1,I%)
  544. 12090 PRINT TAB(30) "key: ";W$
  545. 12095 GOTO 12150
  546. 12100 I!=CVS(X$(Q))
  547. 12110 PRINT TAB(25) I!
  548. 12120 GOTO 12150
  549. 12130 I#=CVD(X$(Q))
  550. 12140 PRINT TAB(25)  I#
  551. 12141 GOTO 12150
  552. 12142 I#=CVD(X$(Q))
  553. 12144 PRINT TAB(26);
  554. 12146 PRINT USING "**$########.##";I#
  555. 12150 NEXT Q
  556. 12152 IF Q < 20 THEN RETURN
  557. 12153 PRINT""
  558. 12154 PRINT ""
  559. 12155 PRINT ""
  560. 12156 PRINT ""
  561. 12157 PRINT ""
  562. 12160 RETURN
  563. 12170 RETURN
  564. 12180 IF INKEY$ = "" GOTO 12180
  565. 12190 RETURN
  566. 12200 PRINT ""
  567. 12210 LPRINT ""
  568. 12220 PRINT "RECORD NUMBER: ";RN
  569. 12230 LPRINT "RECORD NUMBER: ";RN
  570. 12240 FOR Q = 1 TO NREC(A)
  571. 12250 PRINT  Q;TAB(5) FLDN$(A,Q);     
  572. 12260 LPRINT Q;TAB(5) FLDN$(A,Q);     
  573. 12270 ON FTY(A,Q) GOTO 12280,12310,12350,12390,12425
  574. 12280 PRINT TAB(26) X$(Q)
  575. 12290 LPRINT TAB(26) X$(Q)
  576. 12300 GOTO 12480
  577. 12310 I%=CVI(X$(Q))
  578. 12312 PRINT TAB(25) I%;
  579. 12314 LPRINT TAB(25) I%;
  580. 12316 IF KY(A,Q) <> 2 THEN PRINT ""
  581. 12318 IF KY(A,Q) <> 2 THEN LPRINT ""
  582. 12320 IF KY(A,Q) <> 2 THEN GOTO 12480
  583. 12322 T1 = KEYLIST(A,Q)
  584. 12324 W$ = L$(T1,I%)
  585. 12326 PRINT TAB(30) "key: ";W$
  586. 12328 LPRINT TAB(30) "key: ";W$
  587. 12330 GOTO 12480
  588. 12340 GOTO 12480
  589. 12350 I!=CVS(X$(Q))
  590. 12360 PRINT TAB(25) I!
  591. 12370 LPRINT TAB(25) I!
  592. 12380 GOTO 12480
  593. 12390 I#=CVD(X$(Q))
  594. 12400 PRINT TAB(25)  I#
  595. 12410 LPRINT TAB(25)  I#
  596. 12420 GOTO 12480
  597. 12425 I#=CVD(X$(Q))
  598. 12430 PRINT TAB(26);
  599. 12440 PRINT USING "**$########.##";I#
  600. 12450 LPRINT TAB(26);
  601. 12460 LPRINT USING "**$########.##";I#
  602. 12480 NEXT Q
  603. 12490 RETURN
  604. 12500 PRINT ""
  605. 12510 LPRINT ""
  606. 12520 PRINT "RECORD # ";RN;" "; 
  607. 12530 LPRINT "RECORD # ";RN;" ";
  608. 12540 FOR Q = 1 TO NREC(A)
  609. 12545 IF LEND(Q)= 5 THEN PRINT ""
  610. 12547 IF LEND(Q)= 5 THEN LPRINT ""
  611. 12548 T2 = CL(Q) + 6
  612. 12550 PRINT TAB(CL(Q))"<";Q;">";
  613. 12560 LPRINT TAB(CL(Q))"<";Q;">";
  614. 12570 ON FTY(A,Q) GOTO 12580,12610,12730,12770,12810
  615. 12580 PRINT TAB(T2) X$(Q);
  616. 12590 LPRINT TAB(T2) X$(Q);
  617. 12600 GOTO 12860
  618. 12610 I%=CVI(X$(Q))
  619. 12620 PRINT TAB(T2)I%;
  620. 12630 LPRINT TAB(T2)I%;
  621. 12660 IF KY(A,Q) <> 2 THEN GOTO 12860
  622. 12670 T1 = KEYLIST(A,Q)
  623. 12680 W$ = L$(T1,I%)
  624. 12685 T1 = CL(Q) + 11
  625. 12690 PRINT TAB(T1)"key: ";W$;
  626. 12700 LPRINT TAB(T1)"key: ";W$;
  627. 12720 GOTO 12860
  628. 12730 I!=CVS(X$(Q))
  629. 12740 PRINT TAB(T2)I!;
  630. 12750 LPRINT TAB(T2)I!;
  631. 12760 GOTO 12860
  632. 12770 I#=CVD(X$(Q))
  633. 12780 PRINT TAB(T2)I#;
  634. 12790 LPRINT TAB(T2)I#;
  635. 12800 GOTO 12860
  636. 12810 I#=CVD(X$(Q))
  637. 12820 PRINT TAB(T2) "";
  638. 12830 PRINT USING "**$########,.##";I#;
  639. 12840 LPRINT TAB(T2) "";
  640. 12850 LPRINT USING "**$########,.##";I#;
  641. 12860 NEXT Q
  642. 12870 RETURN
  643. 12880 PRINT " HOW MANY COLUMNS ARE THERE ON YOUR PRINTER "
  644. 12890 GOSUB 14100
  645. 12892 COLM = DT#
  646. 12895 RETURN
  647. 12900 REM ******* TAB CONTROL *******
  648. 12901 C = 15
  649. 12902 FOR T = 1 TO NREC(A)
  650. 12903 LEND(T) = 0
  651. 12905 CL(T)= C 
  652. 12906 GOSUB 12910:PRINT T;CL(T); " RETURNED FROM 12910 "
  653. 12907 IF C > COLM THEN GOSUB 12970
  654. 12908 PRINT T;CL(T): NEXT T
  655. 12909 RETURN
  656. 12910 ON FTY(A,T) GOTO 12920,12930,12940,12950,12950
  657. 12920 C = C + FL(A,T) + 5
  658. 12925 RETURN     
  659. 12930 C = C + 11
  660. 12933 IF KY(A,T) = 2 THEN C = C + 30
  661. 12935 RETURN
  662. 12940 C = C + 13
  663. 12945 RETURN    
  664. 12950 C = C + 18
  665. 12952 RETURN
  666. 12970 CL(T)= 1
  667. 12972 C =1
  668. 12974 LEND(T) = 5
  669. 12975 GOSUB 12910
  670. 12980 RETURN
  671. 13000 REM *********  CLEAR SCREEN
  672. 13010 CLS
  673. 13020 RETURN
  674. 13100 REM *********  LOCATE  
  675. 13110 LOCATE LI,1
  676. 13120 RETURN
  677. 13200 FOR T% = 1 TO 80
  678. 13210 PRINT CHR$(8);
  679. 13220 NEXT T%
  680. 13222 FOR T% = 1 TO 24
  681. 13223 PRINT CHR$(11);
  682. 13224 NEXT T%
  683. 13225 LI = LI - 1
  684. 13230 FOR T% = 1 TO LI
  685. 13240 PRINT CHR$(0)
  686. 13250 NEXT T%
  687. 13590 RETURN
  688. 13600 REM ****** CHECK FOR ASC0
  689. 13610 S4$ = INKEY$
  690. 13620 C2 =  ASC(S4$)
  691. 13630 IF C2 = 83 THEN C = 1
  692. 13640 IF C2 = 82 THEN C = 6
  693. 13650 IF C2 = 75 THEN C = 19
  694. 13660 IF C2 = 77 THEN C = 4 
  695. 13670 RETURN
  696. 14000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  697. 14010 MAX = 2
  698. 14020 ACT$ = "1234567890=<>^"
  699. 14023 IF NE = 0 THEN ACT$ = "1234567890"
  700. 14025 PRINT ">__<";
  701. 14030 GOTO 14500
  702. 14100 REM *******  INTEGER *******                        
  703. 14110 MAX = 8
  704. 14120 ACT$ = "1234567890-+,=<>^"
  705. 14123 IF NE = 0 THEN ACT$ = "1234567890-+,"
  706. 14125 PRINT ">________<";
  707. 14130 GOTO 14500
  708. 14200 REM *******  SINGLE PRECISION  *******                        
  709. 14210 MAX = 10
  710. 14220 ACT$ = "1234567890-+,.%$=<>^"
  711. 14223 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  712. 14225 PRINT ">__________<";
  713. 14230 GOTO 14500
  714. 14300 REM *******  DOUBLE PRECISION  *******                        
  715. 14310 MAX = 20
  716. 14320 ACT$ = "1234567890-+,.%$=<>^"
  717. 14323 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  718. 14325 PRINT ">____________________<";
  719. 14330 GOTO 14500
  720. 14500 REM ********** NUMBER CHECK **********
  721. 14505 A$ = ""
  722. 14510 K$(20) = " "
  723. 14515 KTMAX = 0
  724. 14520 FOR T9 = 1 TO MAX
  725. 14525 K$(T9) = " "
  726. 14530 NEXT T9
  727. 14535 DIG$ = "1234567890."
  728. 14540 DOTFLG = 0
  729. 14541 T2 = MAX + 1
  730. 14542 FOR T6 = 1 TO T2
  731. 14544 PRINT CHR$(CH);
  732. 14546 NEXT T6
  733. 14550 IF INKEY$ = "" GOTO 14560 ELSE GOTO 14550
  734. 14560 KT = 0
  735. 14565 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  736. 14570 KT = KT + 1
  737. 14575 REM     
  738. 14580 W$ = INKEY$
  739. 14585 IF W$ = "" GOTO 14580
  740. 14590 C = ASC(W$)
  741. 14593 IF C = 0 THEN GOSUB 13600
  742. 14595 IF C = 13 GOTO 14660
  743. 14600 IF C = 17 OR C = 8 GOTO 14860
  744. 14605 IF C = 19 GOTO 14690
  745. 14610 IF C = 4 GOTO 14710
  746. 14615 IF C = 6 GOTO 14730
  747. 14620 IF C = 1 GOTO 14790
  748. 14625 IF KT > MAX GOTO 14575
  749. 14630 IF INSTR(ACT$,W$) = 0 GOTO 14890
  750. 14635 K$(KT) = W$
  751. 14645 PRINT K$(KT);
  752. 14650 IF KT > KTMAX THEN KTMAX = KT
  753. 14655 GOTO 14570
  754. 14660 REM **********  RETURN  **********
  755. 14670 FOR T9 = 1 TO KTMAX
  756. 14675 A$ = A$ + K$(T9)
  757. 14676 IF K$(T9) = "^" GOTO 15830
  758. 14677 IF K$(T9) = ">" GOTO 15950
  759. 14678 IF K$(T9) = "=" GOTO 15800
  760. 14679 IF K$(T9) = "<" GOTO 15900
  761. 14680 NEXT T9
  762. 14681 IF KTMAX = 0 THEN PRINT "1"
  763. 14682 IF KTMAX = 0 THEN DT# = 1
  764. 14683 IF KTMAX = 0 THEN RETURN
  765. 14684 PRINT ""
  766. 14685 GOTO 14905
  767. 14690 REM ********* MOVE CURSE BACK ********
  768. 14695 IF KT = 1 GOTO 14575
  769. 14700 KT = KT - 1
  770. 14703 PRINT CHR$(CH);
  771. 14705 GOTO 14575
  772. 14710 REM ********* MOVE CURSER FORWARD *********
  773. 14715 IF KT >= MAX GOTO 14575
  774. 14716 IF KT > (KTMAX + 1) GOTO 14575
  775. 14718 PRINT K$(KT);
  776. 14720 KT = KT + 1
  777. 14725 GOTO 14575
  778. 14730 REM ********** INSERT ***********
  779. 14733 IF KT > KTMAX GOTO 14575
  780. 14735 X9 = MAX
  781. 14740 WHILE X9 > KT
  782. 14745 X9 = X9 - 1
  783. 14750 K$(X9 + 1) = K$(X9)
  784. 14755 WEND 
  785. 14760 K$(KT) = " "
  786. 14767 KTMAX = KTMAX + 1
  787. 14769 IF KTMAX > MAX THEN KTMAX = MAX
  788. 14770 FOR T9 = KT TO KTMAX
  789. 14775 PRINT K$(T9);
  790. 14780 NEXT T9
  791. 14781 T6 = (KTMAX - KT) + 1
  792. 14782 FOR T7 = 1 TO T6
  793. 14783 PRINT CHR$(CH);
  794. 14784 NEXT T7
  795. 14785 GOTO 14575
  796. 14790 REM ********** DELETE ***********
  797. 14793 IF KT > KTMAX GOTO 14575
  798. 14794 IF KTMAX = 1 GOTO 14575
  799. 14795 K$(MAX + 1) = ""
  800. 14800 X9 = KT 
  801. 14805 WHILE X9 <= MAX
  802. 14810 K$(X9) = K$(X9 + 1)
  803. 14815 X9 = X9 + 1
  804. 14820 WEND 
  805. 14830 KTMAX = KTMAX - 1
  806. 14835 FOR T9 = KT TO KTMAX
  807. 14840 PRINT K$(T9);
  808. 14845 NEXT T9
  809. 14850 PRINT "_";
  810. 14851 T7 = (KTMAX - KT) + 2
  811. 14852 FOR T8 = 1 TO T7
  812. 14853 PRINT CHR$(CH);
  813. 14854 NEXT T8
  814. 14855 GOTO 14575
  815. 14860 REM ********* BACKSPACE ********
  816. 14865 IF KT = 1 GOTO 14575
  817. 14870 KT = KT - 1
  818. 14875 PRINT CHR$(CH);
  819. 14877 K$(KT) = " " 
  820. 14880 PRINT "_";
  821. 14883 PRINT CHR$(CH);
  822. 14885 GOTO 14575
  823. 14890 REM *******  INPUT NOT ACCEPTABLE  ********
  824. 14895 PRINT CHR$(7);
  825. 14900 GOTO 14580
  826. 14905 REM ********* CLEAR STRINGS ********
  827. 14910 MAX = LEN(A$)
  828. 14915 D2$ = ""
  829. 14920 D1$ = ""
  830. 14925 DFLG = 0
  831. 14930 FOR Q93 = 1 TO MAX
  832. 14935 R$ = MID$(A$,Q93,1)
  833. 14940 IF INSTR(DIG$,R$) = 0 GOTO 14975
  834. 14945 IF R$ = "." OR DFLG = 1 GOTO 14965
  835. 14950 IF DFLG = 1 GOTO 14965
  836. 14955 D2$ = D2$ + R$
  837. 14960 GOTO 14975
  838. 14965 D1$ = D1$ + R$
  839. 14970 DFLG = 1
  840. 14975 NEXT Q93
  841. 14980 DA# = VAL(D2$)
  842. 14985 D1# = VAL(D1$)
  843. 14990 DT# = DA# + D1#
  844. 14995 IF K$(1) = "-" THEN DT# =  -DT#   
  845. 14997 RETURN
  846. 15000 REM **********  ALPHANUMERIC CHECK  **************
  847. 15010 MAX = FL(A,Q)
  848. 15020 GOTO 15040
  849. 15030 REM ********  MAX SET IN PROGRAM  ********
  850. 15040 A$ = ""
  851. 15050 PRINT ">"; 
  852. 15060 FOR N9 = 1 TO MAX
  853. 15065 K$(N9) = ""
  854. 15070 PRINT "_";
  855. 15080 NEXT N9
  856. 15090 PRINT "<";
  857. 15100 T2 = MAX + 1
  858. 15110 FOR T4 = 1 TO T2
  859. 15120 PRINT CHR$(CH);
  860. 15125 NEXT T4
  861. 15130 KT = 0
  862. 15135 KTMAX = 1
  863. 15140 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  864. 15150 KT = KT + 1
  865. 15160 PRINT TAB(KT+1)"";
  866. 15170 K$ = INKEY$
  867. 15180 IF K$ = "" GOTO 15170
  868. 15190 C = ASC(K$)
  869. 15195 IF C = 0 THEN GOSUB 13600
  870. 15200 IF C = 13 GOTO 15310
  871. 15210 IF C = 17 OR C = 8 GOTO 15710
  872. 15220 IF C = 19 GOTO 15370
  873. 15230 IF C = 4  GOTO 15410
  874. 15240 IF C = 6 GOTO 15450
  875. 15250 IF C = 1 GOTO 15570
  876. 15260 IF KT > MAX GOTO 15160
  877. 15270 K$(KT) = K$
  878. 15290 PRINT K$(KT);
  879. 15295 IF KT > KTMAX THEN KTMAX = KT
  880. 15300 GOTO 15150
  881. 15310 REM **********  RETURN  **********
  882. 15320 FOR T9 = 1 TO MAX
  883. 15330 A$ = A$ + K$(T9)
  884. 15332 IF K$(T9) = "^" GOTO 15830
  885. 15333 IF K$(T9) = ">" GOTO 15950
  886. 15335 IF K$(T9) = "=" GOTO 15850
  887. 15338 IF K$(T9) = "<" GOTO 15900
  888. 15340 NEXT T9
  889. 15350 PRINT "" 
  890. 15360 RETURN  
  891. 15370 REM ********* MOVE CURSE BACK ********
  892. 15380 IF KT = 1 GOTO 15160
  893. 15385 KT = KT - 1
  894. 15390 PRINT CHR$(CH);
  895. 15400 GOTO 15160
  896. 15410 REM ********* MOVE CURSER FORWARD *********
  897. 15420 IF KT >= MAX GOTO 15160
  898. 15425 IF KT >  KTMAX  GOTO 15160
  899. 15427 PRINT K$(KT);
  900. 15430 KT = KT + 1
  901. 15440 GOTO 15160
  902. 15450 REM ********** INSERT ***********
  903. 15460 X9 = MAX
  904. 15470 WHILE X9 > KT
  905. 15480 X9 = X9 - 1
  906. 15490 K$(X9 + 1) = K$(X9)
  907. 15500 WEND 
  908. 15510 K$(KT) = " "
  909. 15520 KTMAX = KTMAX + 1
  910. 15525 IF KTMAX > MAX THEN KTMAX = MAX
  911. 15530 FOR T9 = KT TO KTMAX
  912. 15540 PRINT K$(T9);
  913. 15550 NEXT T9
  914. 15552 T6 = (KTMAX - KT) +1
  915. 15554 FOR T7 = 1 TO T6
  916. 15556 PRINT CHR$(CH);
  917. 15558 NEXT T7
  918. 15560 GOTO 15160
  919. 15570 REM ********** DELETE ***********
  920. 15575 IF KT > KTMAX GOTO 15170
  921. 15578 IF KTMAX = 1 GOTO 15160
  922. 15580 K$(MAX + 1) = ""
  923. 15590 X9 = KT 
  924. 15600 WHILE X9 <= KTMAX
  925. 15610 K$(X9) = K$(X9 + 1)
  926. 15620 X9 = X9 + 1
  927. 15630 WEND 
  928. 15650 KTMAX = KTMAX - 1
  929. 15660 FOR T9 = KT TO KTMAX
  930. 15670 PRINT K$(T9);
  931. 15680 NEXT T9
  932. 15690 PRINT "_";
  933. 15692 T7 = (KTMAX - KT) + 2
  934. 15694 FOR T6 = 1 TO T7
  935. 15696 PRINT CHR$(CH);
  936. 15698 NEXT T6
  937. 15700 GOTO 15160
  938. 15710 REM ********* BACKSPACE ********
  939. 15720 IF KT = 1 GOTO 15160
  940. 15725 K$(KT) = " "
  941. 15730 KT = KT - 1
  942. 15735 K$(KT) = " "
  943. 15740 PRINT CHR$(CH);
  944. 15750 PRINT "_";
  945. 15755 PRINT CHR$(CH);
  946. 15760 GOTO 15160
  947. 15800 REM "*********  SAME ENTRY AS LAST RECORD  ************"
  948. 15810 DT# = X(N)
  949. 15820 RETURN
  950. 15830 REM ********  SAME ENTRY AS LAST RECORD   OVER ONE COLUMN  *****
  951. 15835 DT# = X(N + 1)
  952. 15840 RETURN
  953. 15850 REM "*********  SAME ENTRY AS LAST RECORD ALFANUMERIC  **********"
  954. 15860 A$ = CK$(N)
  955. 15870 RETURN
  956. 15900 REM  ******  RESTART DATA ENTRY  **********
  957. 15910 REFLG = 1
  958. 15915 IF NE = 0 GOTO 15340
  959. 15920 RETURN
  960. 15950 REM  *********  ABORT NEW DATA ENTRY  **********
  961. 15960 IF NE = 0 GOTO 15340
  962. 15970 ABORTFLG = 1
  963. 15980 RETURN
  964. 16000 GOSUB 13000
  965. 16010 PRINT "***********  MAKE SURE YOUR PRINTER IS ON  **************"
  966. 16020 PRINT ""
  967. 16030 PRINT "********************  WITH PAPER  ***********************"
  968. 16040 PRINT ""
  969. 16050 PRINT "**********  PRESS ANY KEY TO START PRINTING  ************"
  970. 16055 PRINT ""
  971. 16057 PRINT "     *******  PRESS THE LETTER A TO ABORT  *******"
  972. 16070 T$ = INKEY$
  973. 16073 IF T$ = "" GOTO 16070
  974. 16075 PRINT T$
  975. 16085 IF T$ = "A" THEN GOTO 3010
  976. 16090 RETURN
  977. 16200 REM *********  PRINT OUT FIELDS
  978. 16205 T2 = 1
  979. 16210 FOR T = 1 TO NREC(A)
  980. 16220 PRINT TAB(T2) T;"-";FLDN$(A,T);
  981. 16230 IF T MOD 3 = 0 THEN PRINT ""
  982. 16235 IF T MOD 3 = 0 THEN T2 = -25
  983. 16237 T2 = T2 + 26
  984. 16340 NEXT T
  985. 16350 RETURN
  986. 26000 REM ******* ON ERROR ROUTINE ************
  987. 26100 EFLG = 1
  988. 26200 PRINT "**********  END OF FILE  ***********"
  989. 26202 PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  990. 26204 IF INKEY$ = "" GOTO 26204
  991. 26210 GOTO  3010
  992. 26500 REM *********  ON ERROR SUBROUTINE ***********
  993. 26600 PRINT "**********  END OF FILE  ***********"
  994. 26610 PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  995. 26620 IF INKEY$ = "" GOTO 26620
  996. 26635 EFLG = 1
  997. 26640 RETURN        
  998. 26800 REM **********  ON ERROR GOTO  **************
  999. 26900 PRINT "************  RECORD NOT FOUND  *************"
  1000. 50000 REM **********  INTRO
  1001. 50010 GOSUB 13000
  1002. 50100 PRINT "                S C A N    P R O G R A M    3.0   "
  1003. 50105 PRINT ""
  1004. 50110 PRINT "      Copyright 1984 by Potomac Pacific Engineering Inc."
  1005. 50120 PRINT ""
  1006. 50130 PRINT "This program is licensed FREE to all users with some restrictions"
  1007. 50165 PRINT "        See the manual for more information on the license."
  1008. 50167 PRINT ""
  1009. 50950 PRINT "*****************  PRESS ANY KEY TO CONTINUE  *******************";
  1010. 50960 IF INKEY$ = "" GOTO 50960
  1011. 50970 RETURN
  1012. 51000 REM *******  DONE
  1013. 51100 CLOSE
  1014. 51105 GOSUB 13000
  1015. 51110 PRINT " -BYE, Have a nice day
  1016. 51120 END
  1017.  50960
  1018. 50970 RETURN
  1019. 51000 REM *******  DONE
  1020. 51100 CLOSE
  1021. 51105 GOSUB 13000
  1022. 51110 PRINT " -BYE, Have a nice day
  1023.